実施の形態では、動画像の符号化に関し、特にピクチャを矩形ブロックに分割し、ピクチャ間でブロック単位に動き補償を行う動画像符号化における符号化効率を向上させる為に、符号化済みの周囲のブロックの動きベクトルから複数の予測動きベクトルを算出し、符号化対象のブロックの動きベクトルと選択された予測動きベクトルとの差分ベクトルを算出して符号化することによって符号量を削減する。あるいは、符号化済みの周囲のブロックの符号化情報を利用することにより、符号化対象ブロックの符号化情報を推定することによって符号量を削減する。また、動画像の復号の場合は、復号済みの周囲のブロックの動きベクトルから複数の予測動きベクトルを算出し、符号化ストリームから復号された差分ベクトルと選択された予測動きベクトルとから復号対象のブロックの動きベクトルを算出して復号する。あるいは、復号済みの周囲のブロックの符号化情報を利用することにより、復号対象ブロックの符号化情報を推定する。
図1は実施の形態に係る動画像符号化装置の構成を示すブロック図である。実施の形態の動画像符号化装置は、画像メモリ101、動きベクトル検出部102、差分動きベクトル算出部103、インター予測情報推定部104、動き補償予測部105、予測方法決定部106、残差信号生成部107、直交変換・量子化部108、第1の符号化ビット列生成部109、第2の符号化ビット列生成部110、多重化部111、逆量子化・逆直交変換部112、復号画像信号重畳部113、符号化情報格納メモリ114、および復号画像メモリ115を備える。
画像メモリ101は、撮影/表示時間順に供給された符号化対象の画像信号を一時格納する。画像メモリ101は、格納された符号化対象の画像信号を、所定の画素ブロック単位で、動きベクトル検出部102、予測方法決定部106、および残差信号生成部107に供給する。その際、撮影/表示時間順に格納された画像は、符号化順序に並べ替えられて、画素ブロック単位で、画像メモリ101から出力される。
動きベクトル検出部102は、画像メモリ101から供給される画像信号と復号画像メモリ115から供給される復号画像(参照ピクチャ)間でブロックマッチング等により各予測ブロックサイズ、各予測モードごとの動きベクトルを各予測ブロック単位で検出し、検出された動きベクトルを動き補償予測部105、差分動きベクトル算出部103、および予測方法決定部106に供給する。ここで、予測ブロックは動き補償を行う単位であり、詳細については後述する。
差分動きベクトル算出部103は、符号化情報格納メモリ114に記憶されている既に符号化された画像信号の符号化情報を用いて、複数の予測動きベクトルの候補を算出して後述するMVPリストに登録し、MVPリストに登録された複数の予測動きベクトルの候補の中から最適な予測動きベクトルを選択し、動きベクトル検出部102が検出した動きベクトルと予測動きベクトルから差分動きベクトルを算出し、算出された差分動きベクトルを予測方法決定部106に供給する。
これらの符号化情報に加えて、後述するように予測ブロックごとに重みづけ予測に用いる重み付けパラメータを切り替える場合は、選択された予測ブロックの重み付け予測の重み付けパラメータ(動き補償画像信号に乗算する重みづけ係数値及び加算する重み付けオフセット値)も予測方法決定部106に供給する。
さらに、MVPリストに登録された予測動きベクトルの候補から選択された予測動きベクトルを特定するMVPインデックスを予測方法決定部106に供給する。差分動きベクトル算出部103の詳細な構成と動作は後述する。
インター予測情報推定部104は、マージモードのインター予測情報を推定する。マージモードとは、当該予測ブロックの予測モード、参照インデックス(参照リストに登録されている複数の参照画像から動き補償予測に利用する参照画像を特定するための情報)、動きベクトル等のインター予測情報を符号化するのではなく、符号化済みの隣接するインター予測された予測ブロック、あるいは異なる画像のインター予測された予測ブロックのインター予測情報を利用するモードである。符号化情報格納メモリ114に記憶されている既に符号化された予測ブロックの符号化情報を用いて、複数のマージの候補(インター予測情報の候補)を算出て後述するマージ候補リストに登録し、マージ候補リストに登録された複数のマージ候補の中から最適なマージ候補を選択し、選択されたマージ候補の予測モード、参照インデックス、動きベクトル等のインター予測情報を動き補償予測部105に供給するとともに、選択されたマージ候補を特定するマージインデックスを予測方法決定部106に供給する。これらの符号化情報に加えて、後述するように予測ブロックごとに重み付けパラメータを切り替える場合は、選択されたマージ候補の重み付け予測の重み付けパラメータも動き補償予測部105に供給する。さらに、選択されたマージ候補を特定するマージインデックスを予測方法決定部106に供給する。なお、これらの符号化情報に加えて、選択された符号化済みの予測ブロックの量子化の量子化パラメータ等の符号化情報も予測値として利用することができ、予測する場合は予測する符号化情報を予測方法決定部106に供給する。インター予測情報推定部104の詳細な構成と動作は後述する。
動き補償予測部105は、動きベクトル検出部102およびインター予測情報推定部104により検出された動きベクトルを用いて参照ピクチャから動き補償予測により予測画像信号を生成し、予測画像信号を予測方法決定部106に供給する。なお、主に前方向の予測として使われるL0予測、及び主に後方向の予測として使われるL1予測では、片方向の予測を行う。双予測の場合は、双方向の予測を行い、主に前方向の予測として使われるL0予測、主に後方向の予測として使われるL1予測のそれぞれのインター予測された信号に適応的に重み係数を掛け算し、オフセット値を加算て重畳し、最終的な予測画像信号を生成する。なお、重み付け予測に用いる重み付け係数、オフセット値から成る重み付けパラメータはピクチャ単位で切り替えてもよいし、スライス単位で切り替えてもよいし、予測ブロック単位で切り替えてもよい。この重み付けパラメータは、ピクチャ単位またはスライス単位で切り替える場合、ピクチャ単位またはスライス単位で各リストの参照ピクチャ毎に代表的な値が設定されて符号化される。予測ブロック単位で切り替える場合、予測ブロック単位に重み付けパラメータが設定されて符号化される。
予測方法決定部106は差分動きベクトルの符号量、動き補償予測信号と画像信号との間の歪量等を評価することにより、複数の予測方法の中から、最適な予測ブロックサイズ(予測ブロックサイズについては図4を参照して後述する)、予測モード、マージモードか否か等の予測方法を決定し、決定された予測方法を示す情報、及び決定された予測方法に応じた差分動きベクトル等を含む符号化情報を第1の符号化ビット列生成部109に供給する。なお、必要に応じて重み付け予測を行う際に用いる重み付けパラメータ、量子化/逆量子化を行う際に用いる量子化パラメータの符号化情報の予測値も第1の符号化ビット列生成部109に供給する。
さらに、予測方法決定部106は、決定された予測方法を示す情報、及び決定された予測方法に応じた動きベクトル等を含む符号化情報を符号化情報格納メモリ114に格納する。なお、必要に応じて予測方法決定部106から供給される重み付け予測の重み付けパラメータを符号化情報格納メモリ114に格納する。予測方法決定部106は、決定された予測モードに応じた動き補償予測画像信号を残差信号生成部107と復号画像信号重畳部113に与える。
残差信号生成部107は、符号化する画像信号と予測信号との引き算を行い残差信号を生成し、直交変換・量子化部108に与える。
直交変換・量子化部108は、残差信号に対して量子化パラメータに応じて直交変換及び量子化を行い直交変換・量子化された残差信号を生成し、第2の符号化ビット列生成部110と逆量子化・逆直交変換部112に供給する。さらに、直交変換・量子化部108は、量子化パラメータを符号化情報格納メモリ114に格納する。
第1の符号化ビット列生成部109は、シーケンス、ピクチャ、スライス、符号化ブロック単位の情報に加えて、予測ブロック毎に予測方法決定部106によって決定された予測方法に応じた符号化情報を符号化する。具体的には、インター予測かどうかを判別するパラメータ、インター予測の場合、マージモードかどうかを判別するパラメータ、マージモードの場合はマージ・インデックス、マージモードでない場合は予測モード、MVPインデックス、差分動きベクトルに関する情報等の符号化情報を後述する規定のシンタックス規則に従って符号化して第1の符号化ビット列を生成し、多重化部111に供給する。なお、マージモードの場合、後述するマージ候補リストに登録されるマージ候補が1つの場合、マージ・インデックスmergeIdxは0と特定できるので、符号化しない。同様に、マージモードでない場合、後述するMVPリストに登録される予測動きベクトルの候補が1つの場合、MVPインデックスmergeIdxは0と特定できるので、符号化しない。
ここで、MVPインデックスを符号化する際、MVPリストにおいて優先順位が高い(すなわちインデックス番号が小さい)MVPインデックスほど符号長が短い符号を割り当てて可変長符号化する。同様に、マージ・インデックスを符号化する際、マージリストにおいて優先順位が高い(すなわちインデックス番号が小さい)マージ・インデックスほど符号長が短い符号を割り当てて可変長符号化する。
なお、重み付け予測を予測ブロック単位で適応的に切り替える場合は、マージモードでない場合に予測方法決定部106から供給される重み付け予測の重み付けパラメータも符号化する。量子化の量子化パラメータ符号化情報の予測値と実際に用いる値との差分を符号化する。
第2の符号化ビット列生成部110は、直交変換及び量子化された残差信号を規定のシンタックス規則に従ってエントロピー符号化して第2の符号化ビット列を生成し、多重化部111に供給する。多重化部111で、第1の符号化ビット列と第2の符号化ビット列を規定のシンタックス規則に従って多重化し、ビットストリームを出力する。
逆量子化・逆直交変換部112は、直交変換・量子化部108から供給された直交変換・量子化された残差信号を逆量子化及び逆直交変換して残差信号を算出し、復号画像信号重畳部113に供給する。復号画像信号重畳部113は、予測方法決定部106による決定に応じた予測信号と逆量子化・逆直交変換部112で逆量子化及び逆直交変換された残差信号を重畳して復号画像を生成し、復号画像メモリ115に格納する。なお、復号画像に対して符号化によるブロック歪等の歪を減少させるフィルタリング処理を施して、復号画像メモリ115に格納されることもある。その場合、必要に応じてALFやデブロッキングフィルタ等のポストフィルタの情報を識別するフラグ等の予測された符号化情報を符号化情報格納メモリ114に格納する。
図2は図1の動画像符号化装置に対応した実施の形態に係る動画像復号装置の構成を示すブロックである。実施の形態の動画像復号装置は、分離部201、第1符号化ビット列復号部202、第2符号化ビット列復号部203、動きベクトル算出部204、インター予測情報推定部205、動き補償予測部206、逆量子化・逆直交変換部207、復号画像信号重畳部208、符号化情報格納メモリ209、および復号画像メモリ210を備える。
図2の動画像復号装置の復号処理は、図1の動画像符号化装置の内部に設けられている復号処理に対応するものであるから、図2の動き補償予測部206、逆量子化・逆直交変換部207、復号画像信号重畳部208、符号化情報格納メモリ209、および復号画像メモリ210の各構成は、図1の動画像符号化装置の動き補償予測部105、逆量子化・逆直交変換部112、復号画像信号重畳部113、符号化情報格納メモリ114、および復号画像メモリ115の各構成とそれぞれ対応する機能を有する。
分離部201に供給されるビットストリームは規定のシンタックスの規則に従って分離し、分離された符号化ビット列が第1符号化ビット列復号部202、第2符号化ビット列復号部203に供給される。
第1符号化ビット列復号部202は、供給された符号化ビット列を復号して、シーケンス、ピクチャ、スライス、符号化ブロック単位の情報、及び、予測ブロック単位の符号化情報を得る。具体的には、インター予測かどうかを判別するパラメータ、インター予測かどうかを判別するパラメータ、マージモードの場合はマージ・インデックス、マージモードでない場合は予測モード、MVPインデックス、差分動きベクトル等に関する符号化情報を後述する規定のシンタックス規則に従って復号し、符号化情報を動きベクトル算出部204またはインター予測情報推定部205と動き補償予測部206に与えるとともに符号化情報格納メモリ209に格納する。なお、マージモードの場合、後述するマージ候補リストに登録されるマージ候補が1つの場合、マージ・インデックスmergeIdxは0と特定できるので、符号化ビット列には符号化されておらず、mergeIdxを0とする。したがって、マージモードの場合、第1符号化ビット列復号部202では、インター予測情報推定部205で算出されたマージ候補リストに登録されるマージ候補の数が供給される。同様に、マージモードでない場合、後述するMVPリストに登録される予測動きベクトルの候補が1つの場合、MVPインデックスmvpIdxは0と特定できるので、符号化されておらず、mvpIdxを0とする。したがって、マージモードでない場合、第1符号化ビット列復号部202では、動きベクトル算出部204で算出されたMVPリストに登録される予測動きベクトル候補の数が供給される。
第2符号化ビット列復号部203は、供給された符号化ビット列を復号して直交変換・量子化された残差信号を算出し、直交変換・量子化された残差信号を逆量子化・逆直交変換部207に与える。
動きベクトル算出部204は、復号対象の予測ブロックがマージモードでない時に、符号化情報格納メモリ209に記憶されている既に復号された画像信号の符号化情報を用いて、複数の予測動きベクトルの候補を算出して後述するMVPリストに登録し、MVPリストに登録された複数の予測動きベクトルの候補の中から、第1符号化ビット列復号部202で復号され供給される符号化情報に応じた予測動きベクトルを選択し、第1符号化ビット列復号部202で復号された差分ベクトルと選択された予測動きベクトルから動きベクトルを算出し、動き補償予測部206に供給するとともに、符号化情報格納メモリ209に供給する。さらに、動きベクトル算出部204で算出されたMVPリストに登録される予測動きベクトル候補の数を第1符号化ビット列復号部202に供給する。動きベクトル算出部204の詳細な構成と動作は後述する。
インター予測情報推定部205は、復号対象の予測ブロックがマージモードの時に、マージモードのインター予測情報を推定する。符号化情報格納メモリ114に記憶されている既に復号された予測ブロックの符号化情報を用いて、複数のマージの候補を算出して後述するマージ候補リストに登録し、マージ候補リストに登録された複数のマージ候補の中から第1符号化ビット列復号部202で復号され供給されるマージインデックスに対応したマージ候補を選択し、選択されたマージ候補の予測モード、参照インデックス、予測動きベクトル等のインター予測情報を動き補償予測部206に供給するとともに、符号化情報格納メモリ209に格納する。さらに、インター予測情報推定部205で算出されたマージ候補リストに登録されるマージ候補の数を第1符号化ビット列復号部202に供給する。これらの符号化情報に加えて、後述するように予測ブロックごとに重み付けパラメータを切り替える場合は、選択されたマージ候補の重み付け予測の重み付けパラメータも動き補償予測部206に供給する。なお、選択された符号化済みの予測ブロックのこれらの符号化情報に加えて、量子化の量子化パラメータのインター予測情報以外の符号化情報も予測値として利用することができ、予測する場合は予測する符号化情報を予測方法決定部106に供給することもできる。インター予測情報推定部205の詳細な構成と動作は後述する。
動き補償予測部206は、動きベクトル算出部204で算出された動きベクトルを用いて参照ピクチャから動き補償予測により予測画像信号を生成し、予測画像信号を復号画像信号重畳部208に供給する。なお、両予測の場合は、L0予測、L1予測の2つの動き補償予測画像信号に適応的に重み係数を掛け算して重畳し、最終的な予測画像信号を生成する。
逆量子化・逆直交変換部207は、第1符号化ビット列復号部202で復号された直交変換・量子化された残差信号に対して逆直交変換及び逆量子化を行い、逆直交変換・逆量子化された残差信号を得る。
復号画像信号重畳部208は、動き補償予測部206で動き補償予測された予測画像信号と、逆量子化・逆直交変換部207により逆直交変換・逆量子化された残差信号とを重畳することにより、復号画像信号を復号し、復号画像メモリ210に格納する。復号画像メモリ210に格納する際には、復号画像に対して符号化によるブロック歪等を減少させるフィルタリング処理を施して、復号画像メモリ210に格納されることもある。
実施の形態に係る動きベクトルの予測方法は、図1の動画像符号化装置の差分動きベクトル算出部103及び図2の動画像復号装置の動きベクトル算出部204において実施される。
動きベクトルの予測方法の実施例を説明する前に、本実施例において使用する用語を定義する。
(符号化ブロックについて)
実施の形態では、図3に示されるように、画面内を任意の同一サイズの正方の矩形の単位にて均等分割する。この単位をツリーブロックと定義し、画像内での符号化/復号対象ブロック(符号化においては符号化対象ブロック、復号においては復号対象ブロック)を特定するためのアドレス管理の基本単位とする。ツリーブロックは画面内のテクスチャに応じて、符号化処理を最適にすべく、必要に応じてツリーブロック内を階層的に4分割して、ブロックサイズの小さいブロックにすることが出来る。このブロックを符号化ブロックと定義し、符号化及び復号を行う際の処理の基本単位とする。ツリーブロックは最大サイズの符号化ブロックでもある。符号化ブロックをこれ以上4分割出来ない最小のサイズとなる符号化ブロックを最小符号化ブロックと呼ぶこととする。
(予測ブロックについて)
画面内をブロックに分割して動き補償を行う場合、動き補償のブロックサイズをより小さくした方が、よりきめ細かい予測を行うことが出来ることから、いくつかのブロック形状、およびサイズの中から最適なものを選択して、符号化ブロック内部を分割して動き補償を行う仕組みを取り入れている。この動き補償を行う単位を予測ブロックと呼ぶ。図4に示すように、符号化ブロック内部を分割せず1つの予測ブロックとみなしたもの(図4(a))を2Nx2N分割、水平方向に2分割し、2つの予測ブロックとしたもの(図4(b))を2NxN分割、垂直方向に分割し、2つの予測ブロックとしたもの(図4(c)をNx2N分割、水平と垂直の均等分割により2つの予測ブロックとしたもの(図4(d)をNxN分割とそれぞれ定義する。
符号化ブロック内部において、各予測ブロックを特定する為に、0から開始する番号を、符号化ブロック内部に存在する予測ブロックに対して割り当てる。この番号を予測ブロックインデックスpuPartIdxと定義する。図4の符号化ブロックの各予測ブロックの中に記述された数字は、その予測ブロックの予測ブロックインデックスpuPartIdxを表す。
(予測ブロックグループについて)
複数の予測ブロックで構成されるグループを予測ブロックグループと定義する。図5は符号化/復号対象の予測ブロックと同一ピクチャ内でその符号化/復号対象の予測ブロックに隣接する予測ブロックグループを説明する図である。図9は符号化/復号対象の予測ブロックと時間的に異なるピクチャにおいて、符号化/復号対象の予測ブロックと同一位置あるいはその近傍の位置に存在する既に符号化/復号済みの予測ブロックグループを説明する図である。図5、図6、図7、図8、図9を用いて本発明の予測ブロックグループについて説明する。
符号化/復号対象の予測ブロックと同一ピクチャ内でその符号化/復号対象の予測ブロックの左側に隣接する予測ブロックA1、符号化/復号対象の予測ブロックの左下に隣接する予測ブロックA0、および符号化/復号対象の予測ブロックの左上に隣接する予測ブロックA2(後述の予測ブロックB2と同じ)で構成される第1の予測ブロックグループを左側に隣接する予測ブロックグループと定義する。
なお、図6に示すように、符号化/復号対象の予測ブロックの左側に隣接する予測ブロックのサイズが符号化/復号対象の予測ブロックより大きい場合にも、前記条件に従い、左側に隣接する予測ブロックAがその符号化/復号対象の予測ブロックの左側に隣接していれば予測ブロックA1とし、符号化/復号対象の予測ブロックの左下に隣接していれば予測ブロックA0とし、符号化/復号対象の予測ブロックの左上に隣接していれば予測ブロックA2とする。
なお、図7に示すように、符号化/復号対象の予測ブロックの左側に隣接する予測ブロックのサイズが符号化/復号対象の予測ブロックより小さく、複数存在する場合には、その中で最も下の予測ブロックA10だけを左側に隣接する予測ブロックA1として左側に隣接する予測ブロックグループに含ませる。ただし、その中で最も上の予測ブロックA12だけを左側に隣接する予測ブロックA1として左側に隣接する予測ブロックグループに含ませることもできるし、最も下の予測ブロックA10と最も上の予測ブロックA12を共に左側に隣接する予測ブロックグループに含ませてもよいし、左側に隣接するすべての予測ブロックA10、A11、A12を左側に隣接する予測ブロックグループに含ませてもよい。符号化/復号対象の予測ブロックと同一ピクチャ内でその符号化/復号対象の予測ブロックの上側に隣接する予測ブロックB1、符号化/復号対象の予測ブロックの右上に隣接する予測ブロックB0、および符号化/復号対象の予測ブロックの左上に隣接する予測ブロックB2(予測ブロックA2と同じ)で構成される第2の予測ブロックグループを上側に隣接する予測ブロックグループと定義する。
なお、図8に示すように、符号化/復号対象の予測ブロックの上側に隣接する予測ブロックのサイズが符号化/復号対象の予測ブロックより大きい場合にも、前記条件に従い、上側に隣接する予測ブロックBがその符号化/復号対象の予測ブロックの上側に隣接していれば予測ブロックB1とし、符号化/復号対象の予測ブロックの右上に隣接していれば予測ブロックB0とし、符号化/復号対象の予測ブロックの左上に隣接していれば予測ブロックB2とする。
なお、図7に示すように、符号化/復号対象の予測ブロックの上側に隣接する予測ブロックのサイズが小さく、複数存在する場合には、その中で最も右の予測ブロックB10だけを上側に隣接する予測ブロックB1として上側に隣接する予測ブロックグループに含ませる。ただし、その中で最も左の予測ブロックB12だけを上側に隣接する予測ブロックB1として上側に隣接する予測ブロックグループに含ませることもできるし、最も右の予測ブロックB10と最も左の予測ブロックB12を共に左側に隣接する予測ブロックグループに含ませてもよいし、上側に隣接する予測ブロックをすべて上側に隣接する予測ブロックグループに含ませてもよい。
なお、右上に隣接する予測ブロックA2/B2に関しては、左側に隣接する予測ブロックグループにも左側に隣接する予測ブロックグループにも含まれ、左側に隣接する予測ブロックグループについて説明する場合は、予測ブロックA2、上側に隣接する予測ブロックグループについて説明する場合は、予測ブロックB2とする。
本方式においては、左上に隣接する予測ブロックを左側に隣接する予測ブロックグループと上側に隣接する予測ブロックグループの双方に所属させることで、予測動きベクトルの候補を探す機会を増やしている。並列処理を行う場合は、最大処理量は増加しないが、直列処理での処理量の削減を重視する場合には、左上に隣接する予測ブロックはどちらか一方のグループにだけに所属させてもよい。
図9に示すように、符号化/復号対象の予測ブロックと時間的に異なるピクチャにおいて、符号化/復号対象の予測ブロックと同一位置あるいはその近傍の位置に存在する既に符号化/復号済みの予測ブロックグループT0,T1,T2,T3,およびT4で構成される第3の予測ブロックグループを異なる時間の予測ブロックグループと定義する。
(参照リストについて)
符号化及び復号の際には参照リストLX毎の参照インデックスから参照ピクチャを指定して参照する。L0とL1の2つ用意されていて、Xには0或いは1が入る。参照リストL0に登録されている参照ピクチャを参照するインター予測をL0予測(Pred_L0)と呼び、参照リストL1に登録されている参照ピクチャを参照する動き補償予測をL1予測(Pred_L1)と呼ぶ。主としてL0予測は前方向予測に、L1予測は後方向予測として使用され、PスライスではL0予測のみ、BスライスではL0予測、L1予測、L0予測とL1予測を平均または重み付け加算する両予測(Pred_BI)が使用出来る。以降の処理において出力に添え字LXが付いている値に対しては、L0予測、L1予測ごとに処理を行うことを前提とする。
(POCについて)
POCは符号化される画像に関連付けられる変数とし、出力順序で1ずつ増加する値が設定されるものとする。POCの値によって、同じ画像であるかを判別したり、出力順序での前後関係を判別したり、画像間の距離を判別したりすることができる。例えば、2つの画像のPOCが同じ値を持つ場合、同一の画像であると判断できる。2つの画像のPOCが違う値を持つ場合、POCの値が小さい画像のほうが、先に出力される画像であると判断でき、2つの画像のPOCの差がフレーム間距離を示す。
実施の形態による動きベクトルの予測方法を図面を用いて説明する。動きベクトルの予測方法は、符号化ブロックを構成する予測ブロック単位に、符号化及び復号の処理の何れでも実施される。動き補償による画像間符号化(インター予測)が選択された場合に、符号化の場合、符号化対象の動きベクトルから符号化する差分動きベクトルを算出する時に用いる符号化済みの動きベクトルを利用して予測動きベクトルを算出する際、復号の場合、復号対象の動きベクトルを算出する時に用いる復号済みの動きベクトルを利用して予測動きベクトルを算出する際に実施される。
(シンタックスについて)
まず、本実施例に係る動きベクトルの予測方法を備える動画像符号化装置により符号化される動画像のビットストリームの符号化および復号の共通規則であるシンタックスについて説明する。
図10は本発明により生成されるビットストリームのスライス単位でスライスヘッダーに記述される第1のシンタックスパターンを示す。スライス単位で動き補償による画像間予測(インター予測)を行う場合、即ちスライスタイプがP(片方向予測)或いはB(両方向予測)の場合に、インター予測のマージモードでない予測ブロックにおいて、同一ピクチャ内で隣接する周囲の予測ブロックの動きベクトルだけでなく、時間方向で異なるピクチャの中の処理対象の予測ブロックと同一位置あるいは近傍の予測ブロックの動きベクトルを利用して動きベクトルの予測を行うかどうかを示し、インター予測のマージモードの予測ブロックにおいて、同一ピクチャ内で隣接する周囲の予測ブロックの符号化情報だけでなく、時間方向で異なるピクチャの中の処理対象の予測ブロックと同一位置あるいは近傍の予測ブロックの符号化情報も利用してインター予測を行うかどうかを示す第1のフラグmv_competition_temporal_flagが設置される。
更に、mv_competition_temporal_flagが真(1)の場合は、インター予測のマージモードでない予測ブロックにおいて、時間方向で異なるピクチャの中の処理対象の予測ブロックと同一位置または近傍の予測ブロックの動きベクトルの候補が優先順位を上げて後述するMVPリストに登録されるかどうかを示し、インター予測のマージモードの予測ブロックにおいて、時間方向で異なるピクチャの中の処理対象の予測ブロックと同一位置あるいは近傍のマージ候補が優先順位を上げて後述するマージ候補リストに登録されるかどうかを示す第2のフラグmv_temporal_high_priority_flagが設置される。この値は後述の判定処理を簡略化にするために真(1)または偽(0)に固定してもよいが、符号化効率を向上させるためフレーム毎に適応的に変更することでより符号量を削減する。
符号化/復号対象ピクチャと最も近い参照ピクチャとの間の距離が近い場合は、mv_temporal_high_priority_flagを真(1)とし、符号化/復号対象画像と参照ピクチャとの間の距離が遠い場合は、偽(0)と設定することで、後述するMVPインデックス、またはマージ・インデックスの符号量を削減することができる。この距離が比較的小さい場合は異なる時間からのMVPの候補またはマージの候補が候補として比較的相応しいと判断できるからである。例えば、フレームレートが30Hzの場合、符号化/復号対象ピクチャと最も近い参照ピクチャとの間の距離がXフレーム以内(X=1〜3程度)の場合、mv_temporal_high_priority_flagを真(1)とし、符号化/復号対象画像と参照ピクチャとの間の距離がXフレームより大きい場合は、偽(0)と設定することで、後述するMVPインデックス、またはマージ・インデックスの符号量を削減することができる。この距離が小さい場合は距離が大きい場合よりもインター予測の信頼性が高く、候補として相応しいと判断する。この閾値Xはシーケンスの内容に応じて変更することで、より符号量を削減することができる。動きが大きく複雑なシーケンスの場合、閾値Xを小さくすることで、時間方向のMVP候補やマージ候補の優先順位を下げることにより、符号化効率を向上することができる。または、符号化処理過程での統計量を基に優先順位を制御することもできる。符号処理時に符号化済みの選択数をそれぞれカウントし、時間方向で異なるピクチャの中の処理対象の予測ブロックと同一位置の予測ブロックの動きベクトルの候補またはマージ候補が同一ピクチャ内で左または上に隣接する周囲の予測ブロックの動きベクトルよりも多い場合、後に続く符号化対象画像のmv_temporal_high_priority_flagを真(1)とし、少ない場合、符号化/復号対象画像と参照ピクチャとの間の距離が遠い場合は、偽(0)と設定することで、後述するMVPインデックス、またはマージ・インデックスの符号量を削減することができる。
さらに、スライスタイプがBの場合は、時間方向の予測動きベクトルの候補、またはマージ候補を算出する際に用いる時間方向で異なるピクチャcolPicが処理対象の予測ブロックが含まれるピクチャのL0の参照リスト或いはL1の参照リストのどちらに登録されている参照画像を使用するかを示す第3フラグcollocated_from_l0_flagが設置される。
さらに、スライスタイプがP(片方向予測)或いはB(両方向予測)の場合は、後述するMVPリスト、またはマージ候補リスト内の登録順序を予測ブロックごとに適応的に変更するか否かを示す第4フラグmv_list_adaptive_idx_flagが設置される。
なお、以上のシンタックス要素はピクチャー単位で設定されるシンタックス要素を記述するピクチャー・パラメータ・セットに設置してもよい。
また、第1のフラグmv_competition_temporal_flag、第2のフラグmv_temporal_high_priority_flag、第3フラグcollocated_from_l0_flag、第4フラグmv_list_adaptive_idx_flagは、それぞれマージモードでない動きベクトル予測用と、マージモード用で独立した別個のフラグを用意して、それぞれ独立で制御することもできる。
図11は予測ブロック単位に記述されるシンタックスパターンを示す。予測ブロックの予測モードPredModeの値が画像間予測(インター予測)を示すMODE_INTERの場合、マージ・モードかどうかを示すmerge_flag[x0][y0]が設置される。ここで、x0、y0は輝度信号の画面内での予測ブロックの左上の画素の位置を示すインデックスであり、merge_flag[x0][y0]は画面内の(x0,y0)に位置する予測ブロックのマージ・モードかどうかを示すフラグである。
次に、merge_flag[x0][y0]が1の場合、マージモードであることを示し、NumMergeCandが1つを超える場合に、参照する予測動きベクトルの候補のリストであるマージリストのインデックスのシンタックス要素merge_idx[x0][y0]が設置される。ここで、x0、y0は画面内での予測ブロックの左上の画素の位置を示すインデックスであり、merge_idx[x0][y0]は画面内の(x0,y0)に位置する予測ブロックのマージ・インデックスである。関数NumMergeCandはマージ候補の数を表し、後述にて説明される。このマージリストのインデックスのシンタックス要素merge_idx[x0][y0]がマージ候補の数NumMergeCandが1より大きい場合にだけ符号化されるのは、予測動きベクトルの候補の総数が1つであれば、その1つがマージ候補となるので、merge_idx[x0][y0]を伝送せずとも参照するマージ候補が確定する為である。
一方、merge_flag[x0][y0]が0の場合、マージモードでないことを示し、スライスタイプがBの場合、インター予測モードを識別するシンタックス要素inter_pred_flag[x0][y0]が設置される。参照リストLX(X=0または1)ごとに、参照ピクチャを特定するための参照ピクチャインデックスのシンタックス要素ref_idx_lX[x0][y0]、動きベクトル検出にて求められた予測ブロックの動きベクトルと予測動きベクトルとの差分動きベクトルのシンタックス要素mvd_lX[x0][y0][j]が設置される。ここで、Xは0或いは1で予測方向を示し、配列のインデックスx0は予測ブロックのx座標、y0は予測ブロックのy座標、jは差分動きベクトルの成分を表し、j=0はx成分を、j=1はy成分を表す。次に、予測動きベクトルの候補の総数が1つを超える場合に、参照する予測動きベクトルの候補のリストであるMVPリストのインデックスのシンタックス要素mvp_idx_lX[x0][y0]が設置される。ここで、x0、y0は画面内での予測ブロックの左上の画素の位置を示すインデックスであり、mvp_idx_lX[x0][y0]は画面内の(x0,y0)に位置する予測ブロックのリストLXのMVPインデックスである。添え字LXは参照リストを表し、L0とL1の2つ用意されていて、Xには0或いは1が入る。関数NumMVPCand(LX)は、予測方向LX(Xは0或いは1)で予測ブロックの予測動きベクトルの候補の総数を算出する関数を表し、後述にて説明される。このMVPリストのインデックスmvp_idx_lX[x0][y0]は動きベクトルの予測方法により予測動きベクトルの候補の総数NumMVPCand(LX)が1より大きい場合に符号化される。予測動きベクトルの候補の総数が1つであれば、その1つが予測動きベクトルとなるので、mvp_idx_lX[x0][y0]を伝送せずとも参照する予測動きベクトルの候補が確定する為である。
(符号化における動きベクトルの予測)
上述のシンタックスに基づき、動画像のビットストリームを符号化する動画像符号化装置において、実施の形態に係る動きベクトルの予測方法の動作を説明する。動きベクトルの予測方法は、スライス単位で動き補償による画像間予測を行う場合、即ちスライスタイプがPスライス(片方向予測スライス)或いはBスライス(両方向予測スライス)の場合で、更に、スライスの中の予測ブロックの予測モードが画像間予測(MODE_INTER)の予測ブロックに適用される。
図12は、図1の動画像符号化装置の差分動きベクトル算出部103の詳細な構成を示す図である。図12の太枠線で囲まれる部分は差分動きベクトル算出部103を示している。
更に、その内部の太点線で囲まれる部分は後述する動きベクトルの予測方法の動作部を示しており、実施の形態の動画像符号化装置と対応する動画像復号装置にも同様に設置され、符号化と復号で矛盾しない同一の判定結果を得られるようにしている。以下、この図を用いて、符号化における動きベクトルの予測方法を説明する。
差分動きベクトル算出部103は、予測動きベクトル候補生成部120、予測動きベクトル登録部121、予測動きベクトル候補同一判定部122、予測動きベクトル候補符号量算出部123、予測動きベクトル選択部124、および動きベクトル減算部125を含む。
この差分動きベクトル算出部103での差分動きベクトル算出処理は、符号化対象ブロックで選択されたインター予測方法で用いる動きベクトルの差分動きベクトルをそれぞれ算出する。具体的には符号化対象ブロックがL0予測の場合、L0の動きベクトルの差分動きベクトルを算出し、符号化対象ブロックがL1予測の場合、L1の動きベクトルの差分動きベクトルを算出する。符号化対象ブロックが双予測の場合、L0予測とL1予測が共に行われ、L0の動きベクトルの差分動きベクトル、およびL1の動きベクトルの差分動きベクトルをそれぞれ算出する。
予測動きベクトル候補生成部120は、参照リスト(L0、L1)毎に、上側に隣接する予測ブロックグループ(符号化対象の予測ブロックと同一ピクチャ内でその予測ブロックの左側に隣接する予測ブロックグループ:図5のA0,A1,A2)、左側に隣接する予測ブロックグループ(符号化対象の予測ブロックと同一ピクチャ内でその予測ブロックの上側に隣接する予測ブロックグループ:図5のB0,B1,B2)、異なる時間の予測ブロックグループ(符号化対象の予測ブロックと時間的に異なるピクチャ内でその予測ブロックと同一位置あるいはその近傍の位置に存在する既に符号化済みの予測ブロックグループ:図9のT0,T1,T2,T3)の3つの予測ブロックグループから、各予測ブロックグループごとに1つの動きベクトルmvLXA、mvLXB、mvLXColをそれぞれ算出し、予測動きベクトル候補とし、予測動きベクトル登録部121に供給する。以下、mvLXA及びmvLXBを空間的な動きベクトル、mvLXColを時間的な動きベクトルと呼ぶ。この予測動きベクトル候補の算出に際しては、符号化情報格納メモリ114に格納されている符号化済みの予測ブロックの予測モード、参照リスト毎の参照インデックス、参照ピクチャのPOC、動きベクトル等の符号化情報を用いる。
これらの予測動きベクトルの候補mvLXA、mvLXB、mvLXColは符号化対象画像のPOCと参照ピクチャのPOCとの関係に応じてスケーリングすることにより算出されることもある。
予測動きベクトル候補生成部120は、各予測ブロックグループ毎に、所定の順序で、それぞれの予測ブロックグループ内の予測ブロックに対して、後述の条件判定を行い、最初に条件に合致した予測ブロックの動きベクトルを選択し、予測動きベクトルの候補mvLXA、mvLXB、mvLXColとする。
左側に隣接する予測ブロックグループから予測動きベクトルを算出する際には、左側に隣接する予測ブロックグループの下から上の順序(図5のA0からA0,A1,A2の順序)で、上側に隣接する予測ブロックグループから予測動きベクトルを算出する際には、上側に隣接する予測ブロックグループの右から左の順序(図5のB0からB0,B1,B2の順序)で、異なる時間の予測ブロックグループから予測動きベクトルを算出する際には、図9のT0からT0,T1,T2,T3の順序で、各予測ブロックに対して、後述の条件判定を行い、最初に条件に合致した予測ブロックの動きベクトルを選択し、予測動きベクトルの候補をそれぞれmvLXA、mvLXB、mvLXColとする。
即ち、左側の隣接予測ブロックグループでは、一番下の予測ブロックが最も優先順位が高く、下から上に向かって優先順位が付けられており、上側の隣接予測ブロックグループでは、一番右の予測ブロックが最も優先順位が高く、右から左に向かって優先順位が付けられている。異なる時間の予測ブロックグループでは、T0の予測ブロックが最も優先順位が高く、T0,T1,T2,T3の順に優先順位が付けられている。この予測ブロックの位置による優先順位を優先順位Aとする。
(空間予測ブロックの条件判定のループの説明)
左側の隣接予測ブロックグループ、及び上側の隣接予測ブロックグループの各隣接予測ブロックに対しては下記の条件判定1、2、3、4の優先順序でそれぞれの条件判定が適用される。ただし、後述する方法5のみ例外として、条件判定1、3、2、4の優先順序でそれぞれの条件判定が適用される。
条件判定1:符号化/復号対象の予測ブロックの差分動きベクトル算出対象の動きベクトルと同じ参照リストで、同じ参照インデックス、すなわち参照フレームを用いた予測が隣接予測ブロックでも行われている。
条件判定2:符号化/復号対象の予測ブロックの差分動きベクトル算出対象の動きベクトルとは異なる参照リストであるが、同じ参照フレームを用いた予測が隣接予測ブロックで行われている。
条件判定3:符号化/復号対象の予測ブロックの差分動きベクトル算出対象の動きベクトルと同じ参照リストで、異なる参照フレームを用いた予測が隣接予測ブロックで行われている。
条件判定4:符号化/復号対象の予測ブロックの差分動きベクトル算出対象の動きベクトルとは異なる参照リストで、異なる参照フレームを用いた予測が隣接予測ブロックで行われている。
この優先順位を優先順位Bとする。これらの条件のいずれかに一致した場合、当該予測ブロックには条件に合致する動きベクトルは存在すると判断し、後に続く条件判定は行わない。なお、条件判定1または条件判定2の条件に合致した場合、該当する隣接予測ブロックの動きベクトルは同じ参照フレームに対応するものであるので、そのまま予測動きベクトルの候補とするが、条件判定3または条件判定4の条件に合致した場合、該当する隣接予測ブロックの動きベクトルは異なる参照フレームに対応するものであるので、その動きベクトルを基にスケーリングにより算出して予測動きベクトルの候補とする。なお、各隣接予測ブロックの条件判定を並列ではなく、直列に処理する場合、2番目に行う予測ブロックグループの条件判定においては(左側の隣接予測ブロックグループの条件判定が先の場合、上側の隣接予測ブロックグループの条件判定では)、当該予測ブロックグループの予測動きベクトルの候補が前の予測ブロックグループで決定した予測動きベクトルの候補と同じ値になる場合、その予測動きベクトルの候補を採用せず、次の条件判定に移ってもよい。このように次の条件判定を行うことで、予測動きベクトルの候補の減少を防ぐことが出来る。
空間予測ブロックのスキャンのループの仕方として、上記の4つの条件判定の進め方によって、下記の4通りの方法を設定することができる。それぞれの方法によって予測ベクトルの相応しさと最大処理量が異なり、それらを考慮してこれらの方法から選択し設定する。方法1についてのみ、図17〜21のフローチャートを用いて詳しく後述するが、他の方法2〜4についても、当業者であれば方法2〜4を実施する手順については方法1を実施する手順に準じて適宜設計できる事項であるから、詳しい説明を省略する。なお、ここでは動画像符号化装置における空間予測ブロックのスキャンのループ処理を説明するが、同様の処理は動画像復号装置においても可能であることはいうまでもない。
方法1:
4つの条件判定のうち予測ブロック毎に1つの条件判定を行い、条件を満たさなければ、隣の予測ブロックの条件判定に移る。予測ブロック毎に条件判定を4周したら終了。
具体的には以下の優先順序で条件判定を行う。(ただし、NはAまたはB)
1.予測ブロックN0の条件判定1(同じ参照リスト、同じ参照フレーム)
2.予測ブロックN1の条件判定1(同じ参照リスト、同じ参照フレーム)
3.予測ブロックN2の条件判定1(同じ参照リスト、同じ参照フレーム)
4.予測ブロックN0の条件判定2(異なる参照リスト、同じ参照フレーム)
5.予測ブロックN1の条件判定2(異なる参照リスト、同じ参照フレーム)
6.予測ブロックN2の条件判定2(異なる参照リスト、同じ参照フレーム)
7.予測ブロックN0の条件判定3(同じ参照リスト、異なる参照フレーム)
8.予測ブロックN1の条件判定3(同じ参照リスト、異なる参照フレーム)
9.予測ブロックN2の条件判定3(同じ参照リスト、異なる参照フレーム)
10.予測ブロックN0の条件判定4(異なる参照リスト、異なる参照フレーム)
11.予測ブロックN1の条件判定4(異なる参照リスト、異なる参照フレーム)
12.予測ブロックN2の条件判定4(異なる参照リスト、異なる参照フレーム)
方法1によれば、同じ参照フレームを用いたスケーリングされない予測動きベクトルが選ばれやすいので、差分動きベクトルの符号量が小さくなる可能性が高くなるという効果がある。
方法2:
同じ予測フレームを用いたスケーリングされない予測動きベクトルの判定を優先し、4つの条件判定のうち予測ブロック毎に2つの条件判定を行い、条件を満たさなければ、隣の予測ブロックの条件判定に移る。最初の周回では条件判定1と条件判定2の条件判定を行い、次の予測ブロックの周回では条件判定3と条件判定4の条件判定を行う。
具体的には以下の優先順序で条件判定を行う。(ただし、NはAまたはB)
1.予測ブロックN0の条件判定1(同じ参照リスト、同じ参照フレーム)
2.予測ブロックN0の条件判定2(異なる参照リスト、同じ参照フレーム)
3.予測ブロックN1の条件判定1(同じ参照リスト、同じ参照フレーム)
4.予測ブロックN1の条件判定2(異なる参照リスト、同じ参照フレーム)
5.予測ブロックN2の条件判定1(同じ参照リスト、同じ参照フレーム)
6.予測ブロックN2の条件判定2(異なる参照リスト、同じ参照フレーム)
7.予測ブロックN0の条件判定3(同じ参照リスト、異なる参照フレーム)
8.予測ブロックN0の条件判定4(異なる参照リスト、異なる参照フレーム)
9.予測ブロックN1の条件判定3(同じ参照リスト、異なる参照フレーム)
10.予測ブロックN1の条件判定4(異なる参照リスト、異なる参照フレーム)
11.予測ブロックN2の条件判定3(同じ参照リスト、異なる参照フレーム)
12.予測ブロックN2の条件判定4(異なる参照リスト、異なる参照フレーム)
方法2によれば、方法1と同様に、同じ参照フレームを用いたスケーリングされない予測動きベクトルが選ばれやすいので、差分動きベクトルの符号量が小さくなる可能性が高くなるという効果がある。また、条件判定の周回数が最大2回となるので、ハードウェアへの実装を考慮した際に予測ブロックの符号化情報へのメモリアクセス回数が方法1に比べて少なくなり、複雑性が低減される。
方法3:
最初の周回では予測ブロック毎に条件判定1の条件判定を行い条件を満たさなければ、隣の予測ブロックの条件判定に移る。次の周回では予測ブロック毎に条件判定2、条件判定3条件判定4順序で条件判定を行ってから隣に移る。
具体的には以下の優先順序で条件判定を行う。(ただし、NはAまたはB)
1.予測ブロックN0の条件判定1(同じ参照リスト、同じ参照フレーム)
2.予測ブロックN1の条件判定1(同じ参照リスト、同じ参照フレーム)
3.予測ブロックN2の条件判定1(同じ参照リスト、同じ参照フレーム)
4.予測ブロックN0の条件判定2(異なる参照リスト、同じ参照フレーム)
5.予測ブロックN0の条件判定3(同じ参照リスト、異なる参照フレーム)
6.予測ブロックN0の条件判定4(異なる参照リスト、異なる参照フレーム)
7.予測ブロックN1の条件判定2(異なる参照リスト、同じ参照フレーム)
8.予測ブロックN1の条件判定3(同じ参照リスト、異なる参照フレーム)
9.予測ブロックN1の条件判定4(異なる参照リスト、異なる参照フレーム)
10.予測ブロックN2の条件判定2(異なる参照リスト、同じ参照フレーム)
11.予測ブロックN2の条件判定3(同じ参照リスト、異なる参照フレーム)
12.予測ブロックN2の条件判定4(異なる参照リスト、異なる参照フレーム)
方法3によれば、同じ参照リストで同じ参照フレームを用いたスケーリングされない予測動きベクトルが選ばれやすいので、差分動きベクトルの符号量が小さくなる可能性が高くなるという効果がある。また、条件判定の周回数が最大2回となるので、ハードウェアへの実装を考慮した際に予測ブロックの符号化情報へのメモリアクセス回数が方法1に比べて少なくなり、複雑性が低減される。
方法4:
同じ予測ブロックの条件判定を優先し、1つの予測ブロック内で4つの条件判定を行い、すべての条件に合致しない場合、当該予測ブロックには条件に合致する動きベクトルは存在しないものと判断し、次の予測ブロックの条件判定を行う。
具体的には以下の優先順序で条件判定を行う。(ただし、NはAまたはB)
1.予測ブロックN0の条件判定1(同じ参照リスト、同じ参照フレーム)
2.予測ブロックN0の条件判定2(異なる参照リスト、同じ参照フレーム)
3.予測ブロックN0の条件判定3(同じ参照リスト、異なる参照フレーム)
4.予測ブロックN0の条件判定4(異なる参照リスト、異なる参照フレーム)
5.予測ブロックN1の条件判定1(同じ参照リスト、同じ参照フレーム)
6.予測ブロックN1の条件判定2(異なる参照リスト、同じ参照フレーム)
7.予測ブロックN1の条件判定3(同じ参照リスト、異なる参照フレーム)
8.予測ブロックN1の条件判定4(異なる参照リスト、異なる参照フレーム)
9.予測ブロックN2の条件判定1(同じ参照リスト、同じ参照フレーム)
10.予測ブロックN2の条件判定2(異なる参照リスト、同じ参照フレーム)
11.予測ブロックN2の条件判定3(同じ参照リスト、異なる参照フレーム)
12.予測ブロックN2の条件判定4(異なる参照リスト、異なる参照フレーム)
方法4によれば、条件判定の周回数が最大でも1回となるので、ハードウェアへの実装を考慮した際に予測ブロックの符号化情報へのメモリアクセス回数が方法1、方法2、方法3に比べて少なくなり、複雑性が低減される。
方法5:
方法4と同様に、同じ予測ブロックの条件判定を優先し、1つの予測ブロック内で4つの条件判定を行い、すべての条件に合致しない場合、当該予測ブロックには条件に合致する動きベクトルは存在しないものと判断し、次の予測ブロックの条件判定を行う。ただし、予測ブロック内の条件判定においては、方法4は同じ参照フレームであることをより優先しているが、方法5は同じ参照リストであることを優先する。
具体的には以下の優先順序で条件判定を行う。(ただし、NはAまたはB)
1.予測ブロックN0の条件判定1(同じ参照リスト、同じ参照フレーム)
2.予測ブロックN0の条件判定3(同じ参照リスト、異なる参照フレーム)
3.予測ブロックN0の条件判定2(異なる参照リスト、同じ参照フレーム)
4.予測ブロックN0の条件判定4(異なる参照リスト、異なる参照フレーム)
5.予測ブロックN1の条件判定1(同じ参照リスト、同じ参照フレーム)
6.予測ブロックN1の条件判定3(同じ参照リスト、異なる参照フレーム)
7.予測ブロックN1の条件判定2(異なる参照リスト、同じ参照フレーム)
8.予測ブロックN1の条件判定4(異なる参照リスト、異なる参照フレーム)
9.予測ブロックN2の条件判定1(同じ参照リスト、同じ参照フレーム)
10.予測ブロックN2の条件判定3(同じ参照リスト、異なる参照フレーム)
11.予測ブロックN2の条件判定2(異なる参照リスト、同じ参照フレーム)
12.予測ブロックN2の条件判定4(異なる参照リスト、異なる参照フレーム)
方法5によれば、さらに、方法4に比べて予測ブロックの参照リストの参照回数を減らすことができ、メモリへのアクセス回数、条件判定等の処理量を削減することにより複雑性を低減することができる。また、方法4と同様に、条件判定の周回数が最大でも1回となるので、ハードウェアへの実装を考慮した際に予測ブロックの符号化情報へのメモリアクセス回数が方法1、方法2、方法3に比べて少なくなり、複雑性が低減される。
次に、予測動きベクトル登録部121は予測動きベクトルの候補mvLXA、mvLXB、mvLXColの優先順位を評価し、優先順位に応じた順番でMVPリストmvpListLXに格納する。このMVPリストmvpListLXに格納する手順については後ほど詳細に説明する。
次に、予測動きベクトル候補同一判定部122は、MVPリストmvpListLXに格納された予測動きベクトルの候補の中から同一の動きベクトルの値をもつものを判定し、同一の動きベクトル値をもつと判定された予測動きベクトルの候補について一つを残してそれ以外をMVPリストmvpListLXから削除して、予測動きベクトルの候補が重複しないようにし、MVPリストmvpListLXを更新する。予測動きベクトル候補同一判定部122は、更新されたMVPリストmvpListLXを予測動きベクトル候補符号量算出部123と予測動きベクトル選択部124に与える。
一方、図1の動きベクトル検出部102にて予測ブロック毎に動きベクトルmvが検出される。その動きベクトルmvは更新されたMVPリストmvpListLXの予測動きベクトルの候補とともに予測動きベクトル候補符号量算出部123に入力される。
予測動きベクトル候補符号量算出部123は、動きベクトルmvとMVPリストmvpListLXの中に格納された各予測動きベクトルの候補mvpListLX[i]との差分であるそれぞれの差分動きベクトルを算出し、それら差分動きベクトルを符号化したときの符号量をMVPリストmvpListLXの要素ごとに算出し、予測動きベクトル選択部124に供給する。
予測動きベクトル選択部124は、MVPリストmvpListLXに登録された各要素の中で、予測動きベクトルの候補毎の符号量が最小となる予測動きベクトルの候補mvpListLX[i]を予測動きベクトルmvpとして選択し、MVPリストmvpListLXの中で最小の発生符号量となる予測動きベクトルの候補が複数存在する場合には、MVPリストmvpListLXの中のインデックスiが小さい番号で表される予測動きベクトルの候補mvpListLX[i]を最適予測動きベクトルmvpとして選択する。選択された予測動きベクトルmvpを動きベクトル減算部125に供給する。さらに、その選択された予測動きベクトルmvpに対応するMVPリスト中のインデックスiをLX(X=0または1)のMVPインデックスmvp_idxとして出力する。
なお、予測動きベクトル選択部124は必要に応じてmvp_idxが指し示すMVPリスト中の予測ブロックで用いられた符号化情報も図1の予測方法決定部106に出力する。ここで出力する符号化情報は、重み付け予測の重み付けパラメータ、量子化の量子化パラメータ等が含まれる。
最後に動きベクトル減算部125は、動きベクトルmvから選択された予測動きベクトルmvpを減産することにより差分動きベクトルmvdを算出し、差分動きベクトルmvdを出力する。
mvd=mv−mvp
図1に戻り、動き補償予測部105は、復号画像メモリ115に格納されている復号画像を参照して動きベクトル検出部102から供給される動きベクトルmvに応じて動き補償を行い、動き補償予測信号を得て、予測方法決定部106に供給する。
予測方法決定部106は、予測方法を決定する。それぞれの予測モードごとに符号量と符号化歪を算出し、最も少ない発生符号量と符号化歪となる予測ブロックサイズと予測モードが決定される。差分動きベクトル算出部103の動きベクトル減算部125から供給された差分動きベクトルmvdと予測動きベクトル選択部124から供給された予測動きベクトルを表すインデックスmvp_idxの符号化が行われ、動き情報の符号量を算出する。さらに、動き補償予測部105から供給される動き補償予測信号と、画像メモリ101から供給される符号化対象の画像信号との予測残差信号を符号化した予測残差信号の符号量を算出する。動き情報の符号量と予測残差信号の符号量とが加算された総発生符号量を算出し、第1の評価値とする。
また、こうした差分画像を符号化後に、歪量評価の為に復号し、符号化により生じる元画像との誤差を表す比率として符号化歪が算出される。これら総発生符号量と符号化歪とを動き補償毎に比較することで、最も少ない発生符号量と符号化歪となる予測ブロックサイズと予測モードが決定される。決定された予測ブロックサイズの予測モードに応じた動きベクトルmvに対して、上述した動きベクトルの予測方法が行われ、予測動きベクトルを表すインデックスが、予測ブロック単位の第2のシンタックスパターンで表されるフラグmvp_idx_lX[i]として符号化される。尚、ここで算出される発生符号量は、符号化過程をシミュレートしたものであることが望ましいが、簡便に近似したり、概算することも可能である。
(復号における動きベクトルの予測)
上述のシンタックスに基づき、符号化された動画像のビットストリームを復号する動画像復号装置において、本発明に係る動きベクトルの予測方法の動作を説明する。
最初に、第1符号化ビット列復号部202にて復号されるビットストリームの各フラグについて説明する。図10は本発明の動画像符号化装置により生成され、第1符号化ビット列復号部202により復号されるビットストリームのスライス単位でスライスヘッダーに記述される第1のシンタックスパターンである。ビットストリームのスライスヘッダーの中に記述されているフラグから、スライスタイプがP或いはBの場合、インター予測のマージモードでない予測ブロックにおいて、同一ピクチャ内で隣接する周囲の予測ブロックの動きベクトルだけでなく、時間方向で異なるピクチャの中の処理対象の予測ブロックと同一位置あるいは近傍の予測ブロックの動きベクトルを利用して動きベクトルの予測を行うかどうかを示し、インター予測のマージモードの予測ブロックにおいて、同一ピクチャ内で隣接する周囲の予測ブロックの符号化情報だけでなく、時間方向で異なるピクチャの中の処理対象の予測ブロックと同一位置あるいは近傍の予測ブロックの符号化情報も利用してインター予測を行うかどうかを示す第1のフラグmv_competition_temporal_flagを復号し、mv_competition_temporal_flagが真(1)の場合は、インター予測のマージモードでない予測ブロックにおいて、同一ピクチャ内で隣接する周囲の予測ブロックの動きベクトルだけでなく、時間方向に異なるピクチャで処理対象の予測ブロックと同一位置または近傍の予測ブロックを利用して動きベクトルの予測が行われ、インター予測のマージモードの予測ブロックにおいて、同一ピクチャ内で隣接する周囲の予測ブロックの符号化情報だけでなく、時間方向に異なるピクチャで処理対象の予測ブロックと同一位置または近傍の予測ブロックの符号化情報も利用してインター予測が行われる。更に、mv_competition_temporal_flagが真(1)の場合は、インター予測のマージモードでない予測ブロックにおいて、時間方向で異なるピクチャの中の処理対象の予測ブロックと同一位置の予測ブロックの動きベクトルの候補が優先順位を上げて後述するマージ候補リストに登録されるかどうかを示す第2のフラグmv_temporal_high_priority_flagを復号して判定し、真(1)の場合は、時間方向に異なるピクチャで処理対象の予測ブロックと同一位置の予測ブロックの動きベクトルやマージ候補が優先順位を上げて、MVPリストやマージ候補リストにそれぞれ登録される。
さらに、スライスタイプがBの場合は、時間方向の予測動きベクトルの候補、またはマージ候補を算出する際に用いる時間方向で異なるピクチャcolPicが処理対象の予測ブロックが含まれるピクチャのL0の参照リスト或いはL1の参照リストのどちらに登録されている参照画像を使用するかを示す第3フラグcollocated_from_l0_flagを復号し、処理対象の予測ブロックが含まれるピクチャの参照ピクチャのリストのうちL0或いはL1のどちらを使用するか判別する。
さらに、スライスタイプがP或いはBの場合は、後述するMVPリスト、またはマージ候補リスト内の登録順序を予測ブロックごとに適応的に変更するか否かを示す第4フラグmv_list_adaptive_idx_flagを復号し、MVPリスト、またはマージ候補リスト内の登録順序を予測ブロックごとに適応的に変更するか判別する。
なお、以上のシンタックス要素はピクチャー単位で設定されるシンタックス要素を記述するピクチャー・パラメータ・セットに設置してもよい。
また、第1のフラグmv_competition_temporal_flag、第2のフラグmv_temporal_high_priority_flag、第3フラグcollocated_from_l0_flag、第4フラグmv_list_adaptive_idx_flagは、それぞれマージモードでない動きベクトル予測用と、マージモード用で独立した別個のフラグを用意して、それぞれ独立で制御することもできる。
図11は本発明の動画像符号化装置により生成され、第1符号化ビット列復号部202により復号されるビットストリームの予測ブロック単位で記述される第2のシンタックスパターンである。予測ブロック単位に記述されるシンタックスパターンを示す。インター予測の場合(予測ブロックがインター予測かどうかを示す予測モードPredModeがインター予測を示すMODE_INTERの場合)、マージモードかどうかを示すmerge_flag[x0][y0]が復号される。ここで、x0、y0は画面内での予測ブロックの左上の画素の位置を示すインデックスであり、merge_flag[x0][y0]は画面内の(x0,y0)に位置する予測ブロックのマージ・モードかどうかを示すフラグである。
次に、merge_flag[x0][y0]が1の場合、マージモードの候補の総数NumMergeCandが1つを超える場合に、参照する予測動きベクトルの候補のリストであるマージリストのインデックスのシンタックス要素merge_idx[x0][y0]が復号される。ここで、x0、y0は画面内での予測ブロックの左上の画素の位置を示すインデックスであり、merge_idx[x0][y0]は画面内の(x0,y0)に位置する予測ブロックのマージ・インデックスである。
一方、merge_flag[x0][y0]が0の場合、参照リストLX(X=0または1)ごとに、動きベクトル検出にて求められた予測ブロックの動きベクトルと予測動きベクトルとの差分動きベクトルのシンタックス要素mvd_lX[x0][y0][j]が復号される。ここで、Xは0或いは1で予測方向を示し、配列のインデックスx0は予測ブロックのx座標、y0は予測ブロックのy座標、jは差分動きベクトルの成分を表し、j=0はx成分を、j=1はy成分を表す。次に、予測動きベクトルの候補の総数が1つを超える場合に、参照する予測動きベクトルの候補のリストであるMVPリストのインデックスのシンタックス要素mvp_idx_lX[x0][y0]が復号される。ここで、x0、y0は画面内での予測ブロックの左上の画素の位置を示すインデックスであり、mvp_idx_lX[x0][y0]は画面内の(x0,y0)に位置する予測ブロックのリストLXのMVPインデックスである。添え字LXは参照リストを表し、L0とL1の2つ用意されていて、Xには0或いは1が入る。関数NumMVPCand(LX)は、予測方向LX(Xは0或いは1)で予測ブロックの予測動きベクトルの候補の総数を算出する関数を表し、後述にて説明される。このMVPリストのインデックスmvp_idx_lX[x0][y0]は動きベクトルの予測方法により予測動きベクトルの候補の総数NumMVPCand(LX)が1より大きい場合に復号される。予測動きベクトルの候補の総数が1つであれば、その1つが予測動きベクトルとなるので、mvp_idx_lX[x0][y0]を伝送せずとも参照する予測動きベクトルの候補が確定する
為である。
実施の形態に係る動きベクトルの予測方法が実施される場合、図2の動画像復号装置の動きベクトル算出部204にて処理が行われる。図13は、実施の形態の動画像符号化装置に対応する図2の動画像復号装置の動きベクトル算出部204の詳細な構成を示す図である。図13の太枠線で囲まれる部分は動きベクトル算出部204を示している。更に、その内部の太点線で囲まれる部分は後述する動きベクトルの予測方法の動作部を示しており、対応する動画像符号化装置にも同様に設置され、符号化と復号で矛盾しない同一の判定結果を得られるようにしている。以下、この図を用いて、復号における動きベクトルの予測方法を説明する。
動きベクトル算出部204は、予測動きベクトル候補生成部220、予測動きベクトル登録部221、予測動きベクトル候補同一判定部222、予測動きベクトル選択部223及び動きベクトル加算部224を含む。
動きベクトル算出部204の中の予測動きベクトル候補生成部220、予測動きベクトル登録部221及び予測動きベクトル候補同一判定部222は、符号化側の差分動きベクトル算出部103の中の予測動きベクトル候補生成部120、予測動きベクトル登録部121及び予測動きベクトル候補同一判定部122とそれぞれ同じ動作をするように規定することにより、符号化と復号で矛盾しない同一の予測動きベクトルの候補を符号化側及び復号側で得ることができる。
予測動きベクトル候補生成部220は、図12の符号化側の予測動きベクトル候補生成部120と同一の処理を行う。予測動きベクトル候補生成部220は、復号して符号化情報格納メモリ209に記録されていた、復号対象ブロックと同一ピクチャ内の復号対象ブロックと隣接する復号済みの予測ブロック及び異なるピクチャ内の復号対象ブロックと同一位置あるいはその近傍の位置に存在する復号済みの予測ブロック等の動きベクトルを符号化情報格納メモリ209から読み出す。符号化情報格納メモリ209から読み出された復号済みの他のブロックの動きベクトルから少なくとも1つ以上の予測動きベクトルの候補mvLXA、mvLXB、mvLXColを生成し、予測動きベクトル登録部221に供給する。これらの予測動きベクトルの候補mvLXA、mvLXB、mvLXColは参照インデックスに応じてスケーリングすることにより算出されることもある。なお、予測動きベクトル候補生成部220は、図12の符号化側の予測動きベクトル候補生成部120と同一の処理を行うので、図12の符号化側の予測動きベクトル候補生成部120で説明した予測動きベクトルを算出するための方法1、2、3、4、5の条件判定は予測動きベクトル候補生成部220でも適用できるものとし、ここでは詳細な説明は省略する。
次に、予測動きベクトル登録部221は図12の符号化側の予測動きベクトル登録部121と同一の処理を行う。予測動きベクトル登録部221は、予測動きベクトルの候補mvLXA、mvLXB、mvLXColの優先順位を評価し、優先順位に応じた順番でMVPリストmvpListLXに格納する。このMVPリストmvpListLXに格納する手順については後ほど詳細に説明する。
次に、予測動きベクトル候補同一判定部222は、図12の符号化側の予測動きベクトル候補同一判定部122と同一の処理を行う。予測動きベクトル候補同一判定部222は、MVPリストmvpListLXに格納された予測動きベクトルの候補の中から同一の動きベクトルの値をもつものを判定し、同一の動きベクトル値をもつと判定された予測動きベクトルの候補について一つを残してそれ以外をMVPリストmvpListLXから削除して、予測動きベクトルの候補が重複しないようにし、MVPリストmvpListLXを更新する。更新されたMVPリストmvpListLXは予測動きベクトル選択部223に与えられる。
一方、第1符号化ビット列復号部202にて復号された差分動きベクトルmvdが動きベクトル加算部224に入力される。予測動きベクトルのインデックスを示すmvp_idxが符号化されている場合は、第1符号化ビット列復号部202にて復号された予測動きベクトルのインデックスmvp_idxが予測動きベクトル選択部223に入力される。
このようにして予測動きベクトル選択部223には、MVPリストmvpListLXの中に残った予測動きベクトルの候補と、予測動きベクトルのインデックスを示すmvp_idxが符号化されていた場合は、復号された予測動きベクトルのインデックスmvp_idxも入力される。
予測動きベクトル選択部223は、最初にMVPリストmvpListLXに残った予測動きベクトルの候補が1つであるかどうかを判定し、1つの場合、MVPリストmvpListLXに残った予測動きベクトルの候補を予測動きベクトルmvpとして取り出す。MVPリストmvpListLXの中に予測動きベクトルの候補が1つより多く残った場合、第1符号化ビット列復号部202にて復号された予測動きベクトルのインデックスmvp_idxが読み込まれ、読み込まれたインデックスmvp_idxに対応する予測動きベクトルの候補をMVPリストmvpListLXから取り出す。取り出された予測動きベクトルの候補を予測動きベクトルmvpとして動きベクトル加算部224に供給する。
最後に動きベクトル加算部224は、第1符号化ビット列復号部202にて復号されて供給される差分動きベクトルmvdと予測動きベクトルmvpを加算することにより動きベクトルmvを算出し、動きベクトルmvを出力する。
mv=mvp+mvd
以上のようにして、予測ブロック毎に動きベクトルが算出される。この動きベクトルを使用して動き補償により予測画像が生成され、ビットストリームから復号された残差信号と加算されることで復号画像が生成される。
動画像符号化装置の差分動きベクトル算出部103、動画像復号装置の動きベクトル算出部204の処理手順について、それぞれ図14、図15のフローチャートを用いて説明する。図14は動画像符号化装置による差分動きベクトル算出処理手順を示すフローチャートであり、図15は動画像復号装置による動きベクトル算出処理手順を示すフローチャートである。
まず、図14を参照して符号化側の処理手順を説明する。符号化側では、差分動きベクトル算出部103の中の予測動きベクトル候補生成部120、予測動きベクトル登録部121、及び予測動きベクトル候補同一判定部122により、予測動きベクトルの候補を算出し、MVPリストに算出した予測動きベクトルの候補を追加し、不要な予測動きベクトルの候補を削除することにより、MVPリストを構築する(S101)。
続いて、予測動きベクトル候補符号量算出部123により、動きベクトルmvとMVPリストmvpListLXの中に格納された各予測動きベクトルの候補mvpListLX[i]との差分であるそれぞれの差分動きベクトルを算出し、それら差分動きベクトルを符号化したときの符号量をMVPリストmvpListLXの要素ごとに算出し、予測動きベクトル選択部124により、MVPリストmvpListLXに登録された各要素の中で、予測動きベクトルの候補毎の符号量が最小となる予測動きベクトルの候補mvpListLX[i]を予測動きベクトルmvpとして選択し、MVPリストmvpListLXの中で最小の発生符号量となる予測動きベクトルの候補が複数存在する場合には、MVPリストmvpListLXの中のインデックスiが小さい番号で表される予測動きベクトルの候補mvpListLX[i]を最適予測動きベクトルmvpとして選択する。選択された予測動きベクトルmvpを動きベクトル減算部125に供給する。さらに、その選択された予測動きベクトルmvpに対応するMVPリスト中のインデックスiをLX(X=0または1)のMVPインデックスmvp_idxとして出力する(S102)
。
続いて、動きベクトル減算部125は、動きベクトルmvとから選択された予測動きベクトルmvpとの差分を計算することにより差分動きベクトルmvdを算出し、差分動きベクトルmvdを出力する(S103)。
mvd=mv−mvp
次に、図15を参照して復号側の処理手順を説明する。復号側でも前述したように符号化側と同様に、動きベクトル算出部204の中の予測動きベクトル候補生成部220、予測動きベクトル登録部221、及び予測動きベクトル候補同一判定部222により、予測動きベクトルの候補を算出し、MVPリストに算出した予測動きベクトルの候補を追加し、不要な予測動きベクトルの候補を削除することにより、MVPリストを構築する(S201)。
続いて、予測動きベクトル選択部223により、最初にMVPリストmvpListLXに残った予測動きベクトルの候補が1つであるかどうかを判定し、1つの場合、MVPリストmvpListLXに残った予測動きベクトルの候補を予測動きベクトルmvpとして取り出す。MVPリストmvpListLXの中に予測動きベクトルの候補が1つより多く残った場合、第1符号化ビット列復号部202にて復号された予測動きベクトルのインデックスmvp_idxが読み込まれ、読み込まれたインデックスmvp_idxに対応する予測動きベクトルの候補をMVPリストmvpListLXから取り出す。(S202)。
続いて、動きベクトル加算部224により、第1符号化ビット列復号部202にて復号されて供給される差分動きベクトルmvdと予測動きベクトルmvpを加算することにより動きベクトルmvを算出し、動きベクトルmvを出力する。(図15のS203)。
mv=mvp+mvd
図14のS101、及び図15のS201で共通の予測動きベクトルの算出及びMVPリスト構築方法の処理手順を図16のフローチャートを用いて詳細に説明する。
まず、動画像符号化装置及び動画像復号装置で共通する動きベクトルの予測方法について説明する。
(動きベクトルの予測方法)
実施の形態に係る予測動きベクトルの算出及びMVPリスト構築方法は予測ブロック単位に図16に示される諸過程で参照リストLX(Xは0または1)毎に実施される。予測モードPredModeがMODE_INTER(インター予測)で、インター予測方法を示すフラグinter_pred_flag[x0][y0]が、Pred_L0(L0予測)またはPred_BI(両予測)の時には、参照リストL0用の予測動きベクトルの候補を算出し、MVPリストを構築する。ここで、x0、y0は画面内での予測ブロックの左上の画素の位置を示すインデックスであり、inter_pred_flag[x0][y0]は画面内の(x0,y0)に位置する予測ブロックのインター予測方法を示すフラグである。inter_pred_flag[x0][y0]が、Pred_L1(L1予測)またはPred_BI(両予測)の時には、参照リストL1用の予測動きベクトルの候補を算出し、MVPリストを構築する。つまり、inter_pred_flag[x0][y0]が、Pred_BI(両予測)の時には、参照リストL0用と参照リストL1用のそれぞれの予測動きベクトルの候補を算出してMVPリストを構築する。図16は動画像符号化装置の差分動きベクトル算出部103及び動画像復号装置の動きベクトル算出部204とで共通する機能を有する予測動きベクトル候補生成部120及び220、予測動きベクトル登録部121及び221、ならびに予測動きベクトル候補同一判定部122及び222の処理の流れを表すフローチャートである。以下、諸過程を順を追って説明する。
左側に隣接する予測ブロックからの予測動きベクトルの候補を算出し、利用できるかどうかを示すフラグavailableFlagLXA、及び動きベクトルmvLXA、参照ピクチャのPOCpocLXAを出力する(図16のS301)。なお、L0のときXは0、L1のときXは1とする(以下同様)。続いて、上側に隣接する予測ブロックからの予測動きベクトルの候補を算出し、利用できるかどうかを示すフラグavailableFlagLXB、及び動きベクトルmvLXB、参照ピクチャのPOCpocLXBを算出する(図16のS302)。図16のS301とS302の処理は共通であり、利用できるかどうかを示すフラグavailableFlagLXN、及び動きベクトルmvLXN、参照ピクチャのPOCpocLXN(NはAまたはB、以下同様)を算出する共通の算出処理手順を図17〜22のフローチャートを用いて後ほど詳細に説明する。
続いて、時間の予測動きベクトルの候補を算出し、利用できるかどうかを示すフラグavailableFlagLXCol、及び動きベクトルmvLXCol、クロスしているかどうかを示すフラグmvXCrossFlagを出力する(図16のS303)。これらの算出処理手順を図24〜29と図22のフローチャートを用いて後ほど詳細に説明する。
続いて、MVPリストmvpListLXを作成し、予測ベクトルの候補mvLXN(NはA、BまたはCol、以下同様)を追加する(図16のS304)。これらの算出処理手順を図30〜36のフローチャートを用いて後ほど詳細に説明する。
続いて、MVPリストmvpListLX内で、複数の動きベクトルが同じ値を持っている場合に、最も小さい順番の動きベクトルを除いてその動きベクトルを取り除く(図16のS305)。
続いて、図15に戻り、MVPリストmvpListLX内の要素の数NumMVPCand(LX)が1の場合、最終的なMVPインデックスmvpIdxを0とし、そうでない場合には、mvpIdxをmvp_idx_LX[xP,yP]とする(図15のS202)ここで、xP、yPは画面内での予測ブロックの左上の画素の位置を示すインデックスであり、mvp_idx_lX[xP][yP]は画面内の(xP,yP)に位置する予測ブロックのリストLX(L0またはL1)のMVPインデックスである。添え字LXは参照リストを表し、L0とL1の2つ用意されていて、Xには0或いは1が入る。
続いて、LXのMVPリスト内のmvpIdx番目に登録されている動きベクトルmvpListLX[mvpIdx]が最終的なリストLXの予測動きベクトルmvpLXに割り当てられる(図15のS203)。
[左側または上側に隣接する1つ以上の予測ブロックから予測動きベクトルの候補をそれぞれ導出(図16のS301、S302)]
この処理における入力は、符号化/復号対象の予測ブロックの先頭である左上の画素の符号化/復号対象画像内での座標(xP,yP)、および符号化/復号対象の予測ブロックの幅nPSWと高さnPSH、予測ブロックの参照リスト毎の参照インデックスrefIdxLX(Xは0或いは1)である。添え字LXは参照リストを表し、L0とL1の2つ用意されていて、Xには0或いは1が入る。参照リストL0、L1は複数の参照ピクチャの候補からブロック単位に任意のピクチャを参照して動き補償を行うために、複数の参照ピクチャを管理するためのリストであり、参照インデックスrefIdxLXは参照ピクチャを指定するために参照リスト毎に各参照ピクチャに割り当てたインデックスである。
この処理における出力は左側または上側に隣接する予測ブロックの動きベクトルmvLXN、および予測ブロックグループNの参照リストLXの符号化情報が有効か否かを示すフラグavailableFlagLXNであり、添え字Xには参照リストを表す0若しくは1、Nには隣接する予測ブロックグループの領域を表すA(左側)またはB(上側)が入る。
図5、図6、図7、図8に示されるように、同一ピクチャ内の符号化ブロック内部を動き補償する為に定義される予測ブロックの予測ブロック(図12中の処理対象の予測ブロック)に隣接する周囲の予測ブロックから予測動きベクトルの候補を導出する。
図5は、処理対象の予測ブロックとそれに隣接する予測ブロックを示す。予測動きベクトルの候補は、処理対象の予測ブロックの左側に隣接する予測ブロックAk(k=0,1,2)から構成される予測ブロックグループA、上に隣接する予測ブロックBk(k=0,1,2)から構成される予測ブロックグループBからそれぞれ予測動きベクトルの候補を選出する。
図17のフローチャートを用いて、図16のS301およびS302の処理手順である左側および上側に隣接する予測ブロックグループNからの予測動きベクトルの候補mvLXNの算出方法について説明する。添え字Xには参照リストを表す0若しくは1、Nには隣接する予測ブロックグループの領域を表すA(左側)またはB(上側)が入る。
図17で、変数N=Aとして符号化/復号対象の予測ブロックの左側に隣接する1つ以上の予測ブロックから予測動きベクトルの候補を、変数N=Bとして上側に隣接する1つ以上の予測ブロックから予測動きベクトルの候補を、それぞれ以下の手順で算出する。
まず、符号化/復号対象の予測ブロックに隣接する予測ブロックを特定し、それぞれの予測ブロックNk(k=0,1,2)が利用できる場合は符号化情報を取得する(S1101、S1102、S1103)。符号化/復号対象の予測ブロックの左側に隣接する予測ブロックグループ(N=A)の場合、左下に隣接する予測ブロックA0、左に隣接する予測ブロックA1、左上に隣接する予測ブロックA2を特定して符号化情報を取得し、符号化/復号対象の予測ブロックの上側に隣接する予測ブロックグループ(N=B)の場合、右上に隣接する予測ブロックB0、上に隣接する予測ブロックB1、左上に隣接する予測ブロックB2を特定して符号化情報を取得する(S1101、S1102、S1103)。なお、隣接する予測ブロックNkが符号化/復号対象予測ブロックを含むスライスの内側に位置する場合は利用でき、外側に位置する場合は利用できない。
次に、予測ブロックグループNから予測動きベクトルが選出されるか否かを示すフラグavailableFlagLXNを0、予測ブロックグループNを代表する動きベクトルmvLXNを(0,0)、予測ブロックグループNを代表する動きベクトルがスケーリングされていないことを示すフラグMvXNNonScaleを0に設定する(S1104、S1105、S1106)。
続いて、図18に示すフローチャートの処理を行う(S1107)。予測ブロックグループNの隣接予測ブロックN0、N1、N2の中で、符号化/復号対象予測ブロックで現在対象としている参照リストLXと同じ参照リストLXで同じ参照インデックスの動きベクトルを持つ予測ブロックを探す。
図18は図17のステップS1107の処理手順を示すフローチャートである。隣接する予測ブロックNk(k=0,1,2)に対して、kが0,1,2の順番にそれぞれ以下の処理を行う(S1201〜S1210)。NがAの場合下から上、NがBの場合、右から左に順番にそれぞれ以下の処理を行う。
隣接する予測ブロックNkが利用でき(S1202のYES)、予測ブロックNkの符号化モードPredModeがイントラ(MODE_INTRA)でなく(S1203のYES)、隣接する予測ブロックNkのpredFlagLX(LX予測であるかどうかを示すフラグ)が1である場合(S1204のYES)、隣接する予測ブロックNkの参照インデックスrefIdxLX[xNk][yNk]と処理対象の予測ブロックのインデックスrefIdxLXを比較する(S1205)。両者の参照インデックスが同じ場合(S1205のYES)、フラグavailableFlagLXNは1と設定し(S1206)、mvLXNはmvLXN[xNk][yNk]と同じ値に設定し(S1207)、refIdxNはrefIdxLX[xNk][yNk]と同じ値に設定し(S1208)、ListNはLXと設定し(S1209)、スケーリングされていないことを示すフラグMvXNNonScaleは1と設定する(S1210)。
本実施の形態においては、スケーリングされていないことを示すフラグMvXNNonScaleが1、即ちスケーリングされずに算出された動きベクトルmvLXNは、符号化/復号対象の予測ブロックの動きベクトルと同じ参照ピクチャを参照している予測ブロックの動きベクトルから予測された動きベクトルであり、符号化/復号対象の予測ブロックの予測動きベクトルの候補として比較的相応しいと判断する。一方、フラグMvXCrossが0、即ちスケーリングすることによりに算出された動きベクトルmvLXNは、符号化/復号対象の予測ブロックの動きベクトルとは異なる参照ピクチャを参照している予測ブロックの動きベクトルから予測した動きベクトルであり、符号化/復号対象の予測ブロックの予測動きベクトルの候補として比較的相応しくないと判断する。即ち、スケーリングされていないことを示すフラグMvXNNonScaleを予測動きベクトルの候補として相応しいかどうかの判断の指針のひとつとして用いる。
一方、これらの条件に合致しない場合(S1202のNO,S1203のNO,S1204のNO,またはS1205のNOの場合)、kを1増加し、次の隣接予測ブロックの処理(S1202〜S1209)を行い、availableFlagLXNが1になるか、N2の処理が終わるまで繰り返す。
続いて、図17のフローチャートに戻り、availableFlagLXNが0のとき(S1108のYES)、図19に示すフローチャートの処理を行う(S1109)。予測ブロックグループNの隣接予測ブロックN0、N1、N2の中で、符号化/復号対象予測ブロックで現在対象としている参照リストLXと反対の参照リストLY(Y=!X:現在対象としている参照リストがL0のとき、反対の参照リストはL1、現在対象としている参照リストがL1のとき、反対の参照リストはL0)で同じ参照POCの動きベクトルを持つ予測ブロックを探す。
図19は図17のステップS1109の処理手順を示すフローチャートである。隣接する予測ブロックNk(k=0,1,2)に対して、kが0,1,2の順番にそれぞれ以下の処理を行う(S1301〜S1310)。NがAの場合下から上、NがBの場合、右から左に順番にそれぞれ以下の処理を行う。
隣接する予測ブロックNkが利用でき(S1302のYES)、予測ブロックNkの符号化モードPredModeがイントラ(MODE_INTRA)でなく(S1303のYES)、隣接する予測ブロックNkのpredFlagLY(LY予測であるかどうかを示すフラグ)が1である場合(S1304のYES)、隣接する予測ブロックNkの現在対象としている参照リストLXと反対の参照リストLYの参照ピクチャRefPicListY[refIdxLY[xNk][yNk]]のPOCRefPicOrderCnt(currPic,refIdxLY[xNk][yNk],LY)と処理対象の予測ブロックのLXの参照ピクチャRefPicListX[refIdxLX]のPOCRefPicOrderCnt(currPic,refIdxLX,LX)を比較する(S1305)。両者の参照ピクチャのPOCが同じ場合(S1305のYES)、フラグavailableFlagLXNは1と設定し(S1306)、mvLXNはmvLXN[xNk][yNk]と同じ値に設定し(S1307)、refIdxNはrefIdxLY[xNk][yNk]と同じ値に設定し(S1308)、ListNはLYと設定し(S1309)、スケーリングされていないことを示すフラグMvXNNonScaleは1と設定する(S1310)。
一方、これらの条件に合致しない場合(S1302のNO,S1303のNO,S1304のNO,またはS1305のNOの場合)、kを1増加し、次の隣接予測ブロックの処理(S1302〜S1309)を行い、availableFlagLXNが1になるか、N2の処理が終わるまで繰り返す。
続いて、図17のフローチャートに戻り、availableFlagLXNが0のとき(S1110のYES)、図20に示すフローチャートの処理を行う(S1111)。予測ブロックグループNの隣接予測ブロックN0、N1、N2の中で、符号化/復号対象予測ブロックで現在対象としている参照リストLXと同じ参照リストLXで異なる参照POCの動きベクトルを持つ予測ブロックを探す。
図20は図17のステップS1111の処理手順を示すフローチャートである。隣接する予測ブロックNk(k=0,1,2)に対して、kが0,1,2の順番にそれぞれ以下の処理を行う(S1401〜S1409)。NがAの場合下から上、NがBの場合、右から左に順番にそれぞれ以下の処理を行う。
隣接する予測ブロックNkが利用でき(S1402のYES)、予測ブロックNkの符号化モードPredModeがイントラ(MODE_INTRA)でなく(S1403のYES)、隣接する予測ブロックNkのpredFlagLX(LX予測であるかどうかを示すフラグ)が1である場合(S1404のYES)、フラグavailableFlagLXNは1と設定し(S1405)、mvLXNはmvLXN[xNk][yNk]と同じ値に設定し(S1406)、refIdxNはrefIdxLX[xNk][yNk]と同じ値に設定し(S1407)、ListNはLXと設定する(S1408)。
一方、これらの条件に合致しない場合(S1402のNO,S1403のNO,またはS1404のNOの場合)、kを1増加し、次の隣接予測ブロックの処理(S1402〜S1408)を行い、availableFlagLXNが1になるか、N2の処理が終わるまで繰り返す。
続いて、図17のフローチャートに戻り、availableFlagLXNが0のとき(S1112のYES)、図21に示すフローチャートの処理を行う(S1113)。(予測ブロックグループNの隣接予測ブロックN0、N1、N2の中で、符号化/復号対象予測ブロックで現在対象としている参照リストLXと反対の参照リストLY(Y=!X:現在対象としている参照リストがL0のとき、反対の参照リストはL1、現在対象としている参照リストがL1のとき、反対の参照リストはL0)で異なる参照POCの動きベクトルを持つ予測ブロックを探す)
図21は図17のステップS1113の処理手順を示すフローチャートである。隣接する予測ブロックNk(k=0,1,2)に対して、kが0,1,2の順番にそれぞれ以下の処理を行う(S1501〜S1509)。NがAの場合下から上、NがBの場合、右から左に順番にそれぞれ以下の処理を行う。
隣接する予測ブロックNkが利用でき(S1502のYES)、予測ブロックNkの符号化モードPredModeがイントラ(MODE_INTRA)でなく(S1503のYES)、隣接する予測ブロックNkのpredFlagLY(LY予測であるかどうかを示すフラグ)が1である場合(S1504のYES)、フラグavailableFlagLXNは1と設定し(S1505)、mvLXNはmvLXN[xNk][yNk]と同じ値に設定し(S1506)、refIdxNはrefIdxLY[xNk][yNk]と同じ値に設定し(S1507)、ListNはLYと設定する(S1508)。
一方、これらの条件に合致しない場合(S1502のNO,S1503のNO,またはS1504のNOの場合)、kを1増加し、次の隣接予測ブロックの処理(S1502〜S1508)を行い、availableFlagLXNが1になるか、N2の処理が終わるまで繰り返す。
続いて、図17のフローチャートに戻り、availableFlagLXNが1のとき(S1114のYES)、図22に示すmvLXNのスケーリング処理を行う(S1115)。
図22は図17のステップS1115の動きベクトルのスケーリング処理手順を示すフローチャートである。図23は、動きベクトルの時間方向のスケーリングを具体例で説明する図である。もし、参照する予測ブロックの参照リストListNの参照ピクチャRefPicListN[refIdxLN]のPOC RefPicOrderCnt(currPic,refIdxN,ListN)がLXの参照ピクチャRefPicListX[refIdxLX]のPOC RefPicOrderCnt(currPic,refIdxLX,LX)と等しい場合(S1601のYES)、mvLXNをそのままの値とし(S1602)、そうでない場合(S1601のNO)、次式によりスケーリング処理を行う。
mvLXN=tb/td*mvLXN
ただし、tdは現在の符号化/復号対象画像のPOC PicOrderCnt(currPic)と、隣接予測ブロックの参照リストListNが参照する参照ピクチャRefPicListN[refIdxN]のPOC RefPicOrderCnt(currPic,refIdxN,ListN)の差である。
td=PicOrderCnt(currPic)−RefPicOrderCnt(currPic,refIdxN,ListN)
tbは現在の符号化/復号対象画像のPOC PicOrderCnt(currPic)と、現在の符号化/復号対象画像の参照リストLXが参照する参照ピクチャのPOCとの差である。
tb=PicOrderCnt(currPic)−RefPicOrderCnt(currPic,refIdxLX,LX)
[時間方向の予測動きベクトルの候補を導出(図16のS303)]
この処理における入力は、符号化/復号対象の予測ブロックの先頭である左上の画素の符号化/復号対象画像内での座標(xP,yP)、および符号化/復号対象の予測ブロックの幅nPSWと高さnPSH、予測ブロックの参照リスト毎の参照インデックスrefIdxLX(Xは0或いは1)である。添え字LXは参照リストを表し、L0とL1の2つ用意されていて、Xには0或いは1が入る。参照リストL0、L1は複数の参照ピクチャの候補からブロック単位に任意のピクチャを参照して動き補償を行うために、複数の参照ピクチャを管理するためのリストであり、参照インデックスrefIdxLXは参照ピクチャを指定するために参照リスト毎に各参照ピクチャに割り当てたインデックスである。
この処理における出力は予測ブロックの予測ブロックと同位置の他ピクチャの予測ブロックの動きベクトルmvLXCol、および予測ブロックグループColの参照リストLXの符号化情報が有効か否かを示すフラグavailableFlagLXColであり、添え字Xには参照リストを表す0若しくは1が入る。
図24は図16のステップS303の処理手順を説明するフローチャートである。
まず、slice_typeとcollocated_from_l0_flagにより、基準となるピクチャcolPicを算出する(図24のS2101)。
図25は図24のステップS2101の基準ピクチャcolPicの算出処理手順を説明するフローチャートである。slice_typeがBで、図10の第3フラグcollocated_form_l0_flagが0の場合(図25のS2201のYES、S2202のYES)、RefPicList1[0]、すなわち参照ピクチャリスト1の参照インデックスが0のピクチャがcolPicとなる(図25のS2203)。そうでない場合(図25のS2201のNO、S2202のNO、S2204のNO)、RefPicList0[0]、すなわち参照ピクチャリスト0の参照インデックスが0のピクチャがcolPicとなる(図25のS2205)。
次に、図24のフローチャートに戻り、予測ブロックcolPuを算出し、符号化情報を取得する(図24のS2102)。
図26は図24のステップS2102の予測ブロックcolPuの算出処理手順を説明するフローチャートである。
まず、colPic内で処理対象の予測ブロックと同一位置の右下(外側)に位置する予測ブロックをcolPuに設定する(図26のS2301)。この予測ブロックは図9の予測ブロックT0に相当する。
次に、予測ブロックcolPuの符号化情報を取得する。予測ブロックcolPuのPredModeがMODE_INTRAか、利用できない場合(図26のS2303、S2304)、colPic内で処理対象の予測ブロックと同一位置の左上(内側)に位置する予測ブロックをcolPuに設定する(図26のS2305)。この予測ブロックは図9の予測ブロックT1に相当する。なお、図示していないが、予測ブロックcolPuのPredModeがMODE_INTRAか、利用できない場合、図9の予測ブロックT2、T3の順番に利用できるPredModeがMODE_INTRAでない予測ブロックを探す。
次に、図24のフローチャートに戻り、mvLXColとavailableFlagLXColを算出する(図24のS2103)。
図27は図24のステップS2103のインター予測情報の算出処理を説明するフローチャートである。
予測ブロックcolPuのPredModeがMODE_INTRAか、利用できない場合(図27のS2401のNO、S2402のNO)、availableFlagLXColを0、mvLXColを(0,0)とし(図27のS2403、S2404)、処理を終了する。
予測ブロックcolPuが利用できてPredModeがMODE_INTRAでない場合(図27のS2401のYES、S2402のYES)、以下の手順でmvColとrefIdxColを算出する。
予測ブロックcolPuのL0予測フラグPredFlagL0[xPCol][yPCol]が0の場合(図27のS2405のYES)、予測ブロックcolPuの予測モードはPred_L1であるので、動きベクトルmvColと参照インデックスrefIdxColは良予測ブロックcolPuのL1の動きベクトルであるMvL1[xPCol][yPCol]とL1の参照インデックスRefIdxL1[xPCol][yPCol]にそれぞれ設定する(図27のS2406、S2407)。
さらに、設定された動きベクトルmvColが符号化/復号対象の予測ブロックを含むピクチャを横切っているかどうかを確認し、Mv1Crossを設定する(図27のS2408)。
次に図29を参照して動きベクトルMVのクロス判定を説明する。
図29はcolPuの動きベクトルmvColが符号化/復号対象の予測ブロックを含むピクチャを横切って参照画像を指し示しているかどうかの確認処理を説明するフローチャートである。基準ピクチャcolPicのPOC PicOrderCnt(colPic)が符号化/復号対象ピクチャのPOC PicOrderCnt(currPic)よりも小さく、mvColが指し示す参照ピクチャのPOC RefPicOrderCnt(colPic,RefIdxColLX,LX)が符号化/復号対象ピクチャのPOC PicOrderCnt(currPic)よりも大きい場合(図27のS2601のYES)、符号化/復号対象ピクチャを挟んで基準ピクチャcolPicが過去、参照ピクチャが未来に位置するので、動きベクトルmvColが符号化/復号対象の予測ブロックを含むピクチャを横切って参照画像を指し示していると判断し、MvXCrossを1とする(図27のS2602)。そうではなく(図27のS2601のNO)、基準ピクチャcolPicのPOC PicOrderCnt(colPic)が符号化/復号対象ピクチャのPOC PicOrderCnt(currPic)よりも大きく、mvColが指し示す参照ピクチャのPOC RefPicOrderCnt(colPic,RefIdxColLX,LX)が符号化/復号対象ピクチャのPOC PicOrderCnt(currPic)よりも小さい場合(図27のS2603のYES)、符号化/復号対象ピクチャを挟んで基準ピクチャcolPicが未来、参照ピクチャが過去に位置するので、動きベクトルmvColが符号化/復号対象の予測ブロックを含むピクチャを横切って参照画像を指し示していると判断し、MvXCrossを1とする(図27のS2602)。以上の条件に合致しない場合(図27のS2601のNO、S2603のNO)、動きベクトルmvColが符号化/復号対象の予測ブロックを含むピクチャを横切って参照画像を指し示していないと判断し、MvXCrossを0とする(図27のS2604)。
再び図27に戻り、MvCrossをMv1Crossの値に設定する(図27のS2409)。
本実施の形態においては、フラグMvXCrossが1、即ち基準ピクチャcolPicのcolPuの動きベクトルmvColが符号化/復号対象の予測ブロックを含むピクチャを横切って参照画像を指し示している場合、その動きベクトルmvColは、符号化/復号対象の予測ブロックの予測動きベクトルの候補として比較的相応しいと判断する。一方、フラグMvXCrossが0、即ち基準ピクチャcolPicのcolPuの動きベクトルmvColが符号化/復号対象の予測ブロックを含むピクチャを横切って参照画像を指し示していない場合、その動きベクトルmvColは、符号化/復号対象の予測ブロックの予測動きベクトルの候補として比較的相応しくないと判断する。即ち、フラグMvXCrossを予測動きベクトルの候補として相応しいかどうかの判断の指針のひとつとして用いる。予測ブロックcolPuのL1予測フラグPredFlagL1[xPCol][yPCol]が0でない場合(図27のS2410のYES)、予測ブロックcolPuの予測モードはPred_BIであるので、2つの動きベクトルから、一方を選択する(図27のS2415)。
図28は予測ブロックcolPuの予測モードがPred_BIのときの予測ブロックのインター予測情報の取得処理方法を説明するフローチャートである。
動きベクトルmvColと参照インデックスrefIdxColは予測ブロックcolPuのL0の動きベクトルであるMvL0[xPCol][yPCol]とL0の参照インデックスRefIdxL0[xPCol][yPCol]にそれぞれ設定する(図27のS2411、S2412)。
まず、RefIdxColLXにL0の参照インデックスRefIdxL0[xPCol][yPCol]を設定し(図28のS2502)、L0の動きベクトルが符号化/復号対象の予測ブロックを含むピクチャを横切るかどうかを確認してMv0Crossを設定する(図28のS2503)。さらに、RefIdxColLXにL1の参照インデックスRefIdxL1[xPCol][yPCol]を設定し(図28のS2502)、L1の動きベクトルが符号化/復号対象の予測ブロックを含むピクチャを横切るかどうかを確認してMv1Crossを設定する(図28のS2503)。
Mv0Crossが0でかつMv1Crossが1の場合(図28のS2505のYES)、または、Mv0CrossがMv1Crossと等しく、参照インデックスリストがL1の場合(図28のS2506のYES)、L1の方のインター予測情報を選択し、動きベクトルmvCol、参照インデックスrefIdxCol、リストListCol、MvCrossは、MvL1[xPCol][yPCol]、RefIdxColL1及びL1、Mv0Crossにそれぞれ設定される。
そうでない場合(図28のS2505のNO、S2506のNO)、L0の方のインター予測情報を選択し、動きベクトルmvCol、参照インデックスrefIdxCol、リストListCol、MvCrossは、MvL0[xPCol][yPCol]、RefIdxColL0及びL0、Mv0Crossにそれぞれ設定される。
図27に戻り、インター予測情報が取得できたらavailableFlagLXColを1とする(図27のS2416)。
次に、図24のフローチャートに戻り、availableFlagLXColが1の場合(図24のS2104のYES)、必要に応じてmvLXColをスケーリングする。このmvLXColのスケーリングには図22で説明した方法と同様の方法を用いる(図24のS2105)。
[予測動きベクトルの候補をMVPリストに追加(図16のS304)]
図16のS301、S302、及びS303にて算出された予測動きベクトルの候補mvLXN(N=A,B,Col)をMVPリストmvpListLXに追加するS304)。図30はMVPリストへの予測動きベクトルの候補の追加処理手順を示すフローチャートである。本方式では、優先順位をつけて、優先順位の高いものからMVPリストmvpListLXに予測動きベクトルの候補を登録することで、MVPインデックスmvp_idx_lX[x0][y0]の符号量を削減する。優先順位の高い要素をMVPリストの前方に配置することで、符号量を削減する。例えば、MVPリストmvpListLXの要素が3個の場合、MVPリストのインデックス0を「0」、インデックス1を「10」、インデックス2を「11」とすることで、インデックス0を表す符号量が1ビットとなり、インデックス0に発生頻度が高いと考えられる要素を登録することで、符号量を削減する。
MVPリストmvpListLXはリスト構造を成し、MVPリスト内部の所在を示すインデックスと、インデックスに対応する予測動きベクトルの候補を要素として格納する記憶領域が設けられている。インデックスの数字は0から開始され、MVPリストmvpListLXの記憶領域に、予測動きベクトルの候補が格納される。以降の処理では、MVPリストmvpListLXに登録されたインデックスiの予測動きベクトルの候補は、mvpListLX[i]で表すこととし、MVPリストmvpListLXとは配列表記をすることで区別することとする。
スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが1で、mv_list_adaptive_idx_flagが0の場合(S3101のYES、S3102のNO)、左または上に隣接する予測ブロックからの予測動きベクトルの候補mvLXA,mvLXBよりも異なる時間のピクチャの同一位置あるいはその近傍の予測ブロックからの予測動きベクトルの候補mvLXColが優先され、図31で示すフローチャートの処理手順で、予測動きベクトルの候補がMVPリストに登録される(S3104)。
また、mv_temporal_high_priority_flagが0で、mv_list_adaptive_idx_flagが0の場合(S3101のNO、S3103のNO)、異なる時間のピクチャの同一位置あるいはその近傍の予測ブロックからの予測動きベクトルの候補mvLXColよりも左または上に隣接する予測ブロックからの予測動きベクトルの候補mvLXA,mvLXBが優先され、図32で示すフローチャートの処理手順で、予測動きベクトルの候補がMVPリストに登録される(S3105)。
また、mv_temporal_high_priority_flagが1で、mv_list_adaptive_idx_flagが1の場合(S3101のYES、S3102のYES)、信頼性が高いと判断される予測動きベクトルの候補が優先されるとともに、左または上に隣接する予測ブロックからの予測動きベクトルの候補mvLXA,mvLXBよりも異なる時間のピクチャの同一位置あるいはその近傍の予測ブロックからの予測動きベクトルの候補mvLXColが優先され、図33で示すフローチャートの処理手順で、予測動きベクトルの候補がMVPリストに登録される(S3106)。
また、mv_temporal_high_priority_flagが0で、mv_list_adaptive_idx_flagが1の場合(S3101のNO、S3103のYES)、信頼性が高いと判断される予測動きベクトルの候補が優先されるとともに、異なる時間のピクチャの同一位置あるいはその近傍の予測ブロックからの予測動きベクトルの候補mvLXColよりも左または上に隣接する予測ブロックからの予測動きベクトルの候補mvLXA,mvLXBが優先され、図34で示すフローチャートの処理手順で、予測動きベクトルの候補がMVPリストに登録される(S3107)。
前述のように、第2のフラグmv_temporal_high_priority_flagの値は符号化効率を向上させるためフレームまたはスライス毎に適応的に変更して符号化される。符号化/復号対象ピクチャと最も近い参照ピクチャとの間の距離が近い場合は、mv_temporal_high_priority_flagを真(1)とし、符号化/復号対象画像と参照ピクチャとの間の距離が遠い場合は、偽(0)と設定することで、MVPインデックスの符号量を削減することができる。この距離が比較的小さい場合は異なる時間からのMVPの候補が候補として比較的相応しいと判断する。例えば、フレームレートが30Hzの場合、符号化/復号対象ピクチャと最も近い参照ピクチャとの間の距離がXフレーム以内(X=1〜3程度)の場合、mv_temporal_high_priority_flagを真(1)とし、符号化/復号対象画像と参照ピクチャとの間の距離がXフレームより大きい場合は、偽(0)と設定することで、MVPインデックスの符号量を削減する。この閾値Xはシーケンスの内容に応じて設定することで、より符号量を削減することができる。動きが大きく複雑なシーケンスの場合、閾値を小さくすることで、時間方向のMVP候補の優先順位を下げることにより、符号化効率を向上することができる。
図31は、スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが1で、mv_list_adaptive_idx_flagが0の場合(S3101のYES、S3102のNO)のMVPリストmvpListLXへの予測動きベクトルの候補登録処理手順を示すフローチャートである。
まず、availableFlagLXColが1の場合(S3201のYES)、MVPリストmvpListLXの先頭にmvLXColを登録する(S3202)。
続いて、availableFlagLXAが1の場合(S3203のYES)、MVPリストmvpListLXの最後にmvLXAを登録する(S3204)。
続いて、availableFlagLXBが1の場合(S3205のYES)、MVPリストmvpListLXの最後にmvLXBを登録する(S3206)。
図32は、スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが1で、mv_list_adaptive_idx_flagが0の場合(S3101のNO、S3103のNO)のMVPリストmvpListLXへの予測動きベクトルの候補登録処理手順を示すフローチャートである。
まず、availableFlagLXAが1の場合(S3301のYES)、MVPリストmvpListLXの先頭にmvLXAを登録する(S3302)。
続いて、availableFlagLXBが1の場合(S3303のYES)、MVPリストmvpListLXの最後にmvLXBを登録する(S3304)。
続いて、availableFlagLXColが1の場合(S3305のYES)、MVPリストmvpListLXの最後にmvLXColを登録する(S3306)。
図33は、スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが1で、mv_list_adaptive_idx_flagが1の場合(S3101のYES、S3102のYES)のMVPリストmvpListLXへの予測動きベクトルの候補登録処理手順を示すフローチャートである。
まず、availableFlagLXColが1でかつMvCrossが1の場合(S3401のYES、S3402のYES)、MVPリストmvpListLXの先頭にmvLXColを登録する(S3403)。
続いて、availableFlagLXAが1でかつMvXANonScaleが1の場合(S3404のYES、S3405のYES)、MVPリストmvpListLXの最後にmvLXAを登録する(S3406)。
続いて、availableFlagLXBが1でかつMvXBNonScaleが1の場合(S3407のYES、S3408のYES)、MVPリストmvpListLXの最後にmvLXBを登録する(S3409)。
続いて、availableFlagLXColが1でかつMvCrossが0の場合(S3410のYES、S3411のYES)、MVPリストmvpListLXの最後にmvLXColを登録する(S3412)。
続いて、availableFlagLXAが1でかつMvXANonScaleが0の場合(S3413のYES、S3414のYES)、MVPリストmvpListLXの最後にmvLXAを登録する(S3415)。
続いて、availableFlagLXBが1でかつMvXBNonScaleが0の場合(S3417のYES、S3416のYES)、MVPリストmvpListLXの最後にmvLXBを登録する(S3418)。
図34は、スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが0で、mv_list_adaptive_idx_flagが1の場合(S3101のNO、S3103のYES)のMVPリストmvpListLXへの予測動きベクトルの候補登録処理手順を示すフローチャートである。
まず、availableFlagLXAが1でかつMvXANonScaleが1の場合(S3501のYES、S3502のYES)、MVPリストmvpListLXの先頭にmvLXAを登録する(S3503)。
続いて、availableFlagLXBが1でかつMvXBNonScaleが1の場合(S3504のYES、S3505のYES)、MVPリストmvpListLXの最後にmvLXBを登録する(S3506)。
続いて、availableFlagLXColが1でかつMvCrossが1の場合(S3507のYES、S3508のYES)、MVPリストmvpListLXの最後にmvLXColを登録する(S3509)。
続いて、availableFlagLXAが1でかつMvXANonScaleが0の場合(S3510のYES、S3511のYES)、MVPリストmvpListLXの最後にmvLXAを登録する(S3512)。
続いて、availableFlagLXBが1でかつMvXBNonScaleが0の場合(S3513のYES、S3514のYES)、MVPリストmvpListLXの最後にmvLXBを登録する(S3515)。
続いて、availableFlagLXColが1でかつMvCrossが0の場合(S3516のYES、S3517のYES)、MVPリストmvpListLXの最後にmvLXColを登録する(S3518)。
図30のMVPリストmvpListLXへの予測動きベクトルの候補登録処理手順においては、mv_temporal_high_priority_flagが1のとき、時間的な動きベクトルmvLXColを優先的にMVPリストの前方に登録し、mv_temporal_high_priority_flagが0のとき、空間的な動きベクトルmvLXA、mvLXBが優先的にMVPリストの前方に登録することで、符号量を削減する。
図33、及び図34のMVPリストmvpListLXへの予測動きベクトルの候補登録処理手順においては、フラグMvCrossが1、即ち符号化/復号対象の予測ブロックを含むピクチャを横切って参照画像を指し示しているcolPuの動きベクトルmvColから算出された予測動きベクトルの候補が、フラグMvCrossが0、即ち符号化/復号対象の予測ブロックを含むピクチャを横切らずに参照画像を指し示しているcolPuの動きベクトルmvColから算出された予測動きベクトルの候補よりも符号化/復号対象の動きベクトルと近い値を持つことが多く、差分動きベクトルの値が小さくなることが多いと判断し、予測ブロックColの予測動きベクトルを優先順位を上げてMVPリストの前方に登録することで、符号量を削減する。即ち異なる時間の画像の予測ブロックColの符号化情報の値に応じて優先順位を変更してマージ候補リストに登録する順序を変更ことで、符号量を削減する。
また、予測ブロックN(NはAまたはB)において、MvXNNonScaleが1の動きベクトルから予測された予測動きベクトルの候補がMvXNNonScaleが0の動きベクトルから予測された予測動きベクトルの候補よりも符号化/復号対象の予測ブロックの予測動きベクトルの候補として比較的相応しく、符号化/復号対象の動きベクトルと近い値を持つことが多く、差分動きベクトルの値が小さくなることが多いと判断し、優先的にMVPリストに登録することで、符号量を削減する。
なお、図33及び図34の代わりに、図35及び図36の処理手順で予測動きベクトルの候補を登録することもできる。
図35は、スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが1で、mv_list_adaptive_idx_flagが1の場合(S3101のYES、S3102のYES)の第2のMVPリストmvpListLXへの予測動きベクトルの候補登録処理手順を示すフローチャートである。
まず、availableFlagLXColが1でかつ異なる時間の予測ブロックグループで右下の予測ブロックが選択された場合(S3601のYES、S3602のYES)、MVPリストmvpListLXの先頭にmvLXColを登録する(S3603)。
続いて、availableFlagLXAが1でかつ左に隣接する予測ブロックグループで左下または左の予測ブロックが選択された場合(S3604のYES、S3605のYES)、MVPリストmvpListLXの最後にmvLXAを登録する(S3606)。
続いて、availableFlagLXBが1でかつ上に隣接する予測ブロックグループで右上または上の予測ブロックが選択された場合(S3607のYES、S3608のYES)、MVPリストmvpListLXの最後にmvLXBを登録する(S3609)。
続いて、availableFlagLXColが1でかつ異なる時間の予測ブロックグループで中央の予測ブロックが選択された場合(S3610のYES、S3611のYES)、MVPリストmvpListLXの最後にmvLXColを登録する(S3612)。
続いて、availableFlagLXAが1でかつ左に隣接する予測ブロックグループで左上の予測ブロックが選択された場合(S3613のYES、S3614のYES)、MVPリストmvpListLXの最後にmvLXAを登録する(S3615)。
続いて、availableFlagLXBが1でかつ上に隣接する予測ブロックグループで左上の予測ブロックが選択された場合(S3617のYES、S3616のYES)、MVPリストmvpListLXの最後にmvLXBを登録する(S3618)。
図36は、スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが0で、mv_list_adaptive_idx_flagが1の場合(S3101のNO、S3103のYES)の第2のMVPリストmvpListLXへの予測動きベクトルの候補登録処理手順を示すフローチャートである。
まず、availableFlagLXAが1でかつ左に隣接する予測ブロックグループで左下または左の予測ブロックが選択された場合(S3701のYES、S3702のYES)、MVPリストmvpListLXの先頭にmvLXAを登録する(S3703)。
続いて、availableFlagLXBが1でかつ上に隣接する予測ブロックグループで右上または上の予測ブロックが選択された場合(S3704のYES、S3705のYES)、MVPリストmvpListLXの最後にmvLXBを登録する(S3706)。
続いて、availableFlagLXColが1でかつ異なる時間の予測ブロックグループで右下の予測ブロックが選択された場合(S3707のYES、S3708のYES)、MVPリストmvpListLXの最後にmvLXColを登録する(S3709)。
続いて、availableFlagLXAが1でかつ左に隣接する予測ブロックグループで左上の予測ブロックが選択された場合(S3710のYES、S3711のYES)、MVPリストmvpListLXの最後にmvLXAを登録する(S3712)。
続いて、availableFlagLXBが1でかつ上に隣接する予測ブロックグループで左上の予測ブロックが選択された場合(S3713のYES、S3714のYES)、MVPリストmvpListLXの最後にmvLXBを登録する(S3715)。
続いて、availableFlagLXColが1でかつ異なる時間の予測ブロックグループで中央の予測ブロックが選択された場合(S3716のYES、S3717のYES)、MVPリストmvpListLXの最後にmvLXColを登録する(S3718)。
図35、及び図36のMVPリストmvpListLXへの予測動きベクトルの候補登録処理手順においては、異なる時間の予測ブロックグループにおいて、右下の予測ブロックの動きベクトルから予測された予測動きベクトルの候補が異なる時間の予測ブロックグループで中央の予測ブロックの動きベクトルから予測された予測動きベクトルの候補よりも符号化対象の動きベクトルと近い値を持つことが多く、差分動きベクトルの値が小さくなることが多いと判断し、優先的にMVPリストに登録することで、符号量を削減する。左に隣接する予測ブロックグループにおいて、左下または左の予測ブロックの動きベクトルから予測された予測動きベクトルの候補が左上の予測ブロックの動きベクトルから予測された予測動きベクトルの候補よりも符号化対象の動きベクトルと近い値を持つことが多く、差分動きベクトルの値が小さくなることが多いと判断し、優先的にMVPリストに登録することで、符号量を削減する。上に隣接する予測ブロックグループにおいて、右上または上の予測ブロックの動きベクトルから予測された予測動きベクトルの候補が左上の予測ブロックの動きベクトルから予測された予測動きベクトルの候補よりも符号化対象の動きベクトルと近い値を持つことが多く、差分動きベクトルの値が小さくなることが多いと判断し、優先的にMVPリストに登録することで、符号量を削減する。
[MVPリストの中の同じの値を持つ予測動きベクトルの候補を削除(図16のS305)]
予測動きベクトルの候補のMVPリストmvpListLXの中で、同じ動きベクトルの値を持つ予測動きベクトルの候補が存在する場合、MVPリストmvpListLXの中で最も小さいインデックスを持つ予測動きベクトルの候補を除いて全て削除される。削除処理の終了後、MVPリストmvpListLXの中は、削除された予測動きベクトルの候補の格納領域が空いている為、インデックス0を基準にして、インデックスが小さい予測動きベクトルの候補の順で詰めていく。例えば、インデックス1,4の予測動きベクトルの候補が削除され、インデックス0,2及び3が残った場合、インデックス0はそのままとして、インデックス2の予測動きベクトルの候補をインデックス1の格納領域に移動し、インデックス3の予測動きベクトルの候補をインデックス2の格納領域に移動して、MVPリストmvpListLXの中を更新する。
なお、ステップS301、S302、S303に関しては、処理順序を入れ替えることもできるし、並列に処理することも可能である。
次に、マージ・モードについて説明する。
これまで、動画像符号化装置の差分動きベクトル算出部103、及び動画像復号装置の動きベクトル算出部204の予測動きベクトルの算出方法、及び予測動きベクトルリストの構築方法について述べたが、動画像符号化装置のインター予測情報推定部104、及び動画像復号装置のインター予測情報推定部205のマージ・モードでも同様の処理を行う。
前述したように、マージ・モードは当該予測ブロックの予測モード、参照リストインデックス、動きベクトル等のインター予測情報を符号化/復号するのではなく、符号化済みの隣接するインター予測された予測ブロック、あるいは異なる画像のインター予測された予測ブロックのインター予測情報を利用するモードである。
図37はマージ・モードでの隣接する予測ブロックの位置を説明する図である。マージ・モードは左に隣接する予測ブロックA、上に隣接する予測ブロックB、右上に隣接する予測ブロックC、左下に隣接する予測ブロックDに加えて、図9を用いて説明した異なる時間の同一位置あるいはその近傍の予測ブロックCol(T0〜T3のいずれか)の5つの予測ブロックを候補とする。動画像符号化装置のインター予測情報推定部104、及び動画像復号装置のインター予測情報推定部205はそれらの5つの候補を符号化側と復号側で共通の規定の順序でマージ候補リストに登録し、動画像符号化装置のインター予測情報推定部104がマージ候補リストの要素を特定するマージ・インデックスを決定して第1の符号化ビット列生成部を経由して符号化し、動画像復号装置のインター予測情報推定部205は第1符号化ビット列復号部202で復号されたマージ・インデックスが供給されて、そのマージ・インデックスに応じた予測ブロックをマージ候補リストから選択し、その選択された予測ブロックの予測モード、参照インデックス、動きベクトル等のインター予測情報を用いて、動き補償予測を行う。
図38は、図1の動画像符号化装置のインター予測情報推定部104の詳細な構成を示す図である。また、図39は、図2の動画像復号装置のインター予測情報推定部205の詳細な構成を示す図である。
図38及び図39の太枠線で囲まれる部分はそれぞれ、インター予測情報推定部104及びインター予測情報推定部205を示している。
更に、それらの内部の太点線で囲まれる部分は後述するインター予測情報推定方法の動作部を示しており、実施の形態の動画像符号化装置と対応する動画像復号装置にも同様に設置され、符号化と復号で矛盾しない同一の判定結果を得られるようにしている。
インター予測情報推定部104は、マージ候補生成部130、マージ候補登録部131、マージ候補同一判定部132、および符号化情報選択部133を含む。
インター予測情報推定部205は、マージ候補生成部230、マージ候補登録部231、マージ候補同一判定部232、および符号化情報選択部233を含む。
図40は動画像符号化装置のインター予測情報推定部104及び動画像復号装置のインター予測情報推定部205とで共通する機能を有するマージ候補の導出及びマージ候補リストの構築処理の流れを表すフローチャートである。以下、諸過程を順を追って説明する。
動画像符号化装置のインター予測情報推定部104のマージ候補生成部130及び動画像復号装置のインター予測情報推定部205のマージ候補生成部230では、周囲に隣接する予測ブロックA,B,C,Dからのマージ候補となる予測ブロックをリスト毎に算出し、利用できるかどうかを示すフラグavailableFlagN、及び動きベクトルmvLXN、参照インデックスrefIdxLXN、LN予測が行われるかどうかを示すLN予測フラグpredFlagLXNを出力する(N=A,B,C,D)(図40のS401)。なお、L0のときXは0、L1のときXは1とする(以下同様)。利用できるかどうかを示すフラグavailableFlagLXN、及び動きベクトルmvLXN、参照インデックスrefIdxLXN、LN予測フラグpredFlagLXN(NはA,B,C,D、以下同様)を算出する共通の算出処理手順を図41のフローチャートを用いて後ほど詳細に説明する。
続いて、異なる時間のマージ候補を算出する。異なる時間のマージ候補の符号化情報を用いてインター予測を行う場合は、双予測を行うために、L0とL1の2つ符号化情報を算出する。まず、動画像符号化装置のインター予測情報推定部104のマージ候補生成部130及び動画像復号装置のインター予測情報推定部205のマージ候補生成部230では、異なる時間のマージ候補の参照インデックスrefIdxLXColを決定し、出力する(図40のS402)。ここでは、L0、L1それぞれにおいて、符号化済みの周囲の予測ブロックの符号化情報を調べて中で最も多く発生している参照インデックスの値を参照インデックスrefIdxLXColの値として設定する。最も多く発生している参照インデックスが同数存在する場合は、参照インデックスの値が小さい方を参照インデックスrefIdxLXColの値として設定し、参照インデックスが存在しない場合(周囲の予測ブロックが利用できないか、イントラ予測モードの場合)、参照インデックスrefIdxLXColの値を0とする。
続いて、動画像符号化装置のインター予測情報推定部104のマージ候補生成部130及び動画像復号装置のインター予測情報推定部205のマージ候補生成部230では、異なる時間の画像からの予測動きベクトルの候補を算出し、利用できるかどうかを示すフラグavailableFlagCol、クロスしているかどうかを示すフラグmvCrossFlag、及び動きベクトルmvLXColを出力する(図40のS403)。これらの算出処理手順は図24〜29と図22のフローチャートを用いて説明したのと同様の方法である。ただし、マージモードにおける図22によるMVのスケーリングにおいては、ステップS402で算出した参照インデックスrefIdxLXColに応じて算出する。
続いて、動画像符号化装置のインター予測情報推定部104のマージ候補登録部131及び動画像復号装置のインター予測情報推定部205のマージ候補登録部231では、マージ候補リストmergeCandListを作成し、予測ベクトルの候補mvLXN(NはA、B、C、DまたはCol、以下同様)を追加する(図40のS404)。これらの登録処理手順を図42〜45のフローチャートを用いて後ほど詳細に説明する。
続いて、動画像符号化装置のインター予測情報推定部104のマージ候補同一判定部132及び動画像復号装置のインター予測情報推定部205のマージ候補同一判定部232では、マージ候補リストmergeCandList内で、マージ候補が同じ参照インデックスの動きベクトルが同じ値を持っている場合に、最も小さい順番のマージ候補を除いてその動きベクトルを取り除く(図40のS405)。
[周辺の予測ブロックからマージの候補を導出(図40のS401)]
図41のフローチャートを用いて、図40のS401の処理手順である周辺に隣接する予測ブロックグループNからの予測ブロックNの算出方法について説明する。添え字Xには参照リストを表す0若しくは1、Nには隣接する予測ブロックグループの領域を表すA(左側)、B(上側)、C(右上)またはD(左下)が入る。
図40で、変数N=Aとして符号化/復号対象の予測ブロックの左側に隣接する予測ブロックを、変数N=Bとして上側に隣接する予測ブロックを、変数N=Cとして右上側に隣接する予測ブロックを、N=Dとして左下側に隣接する予測ブロックを調べて、から予測動きベクトルの候補を、それぞれ以下の手順で算出する(S4101〜S4110)。
まず、符号化/復号対象の予測ブロックに隣接する予測ブロックを特定し、それぞれの予測ブロックNが利用できる場合は符号化情報を取得する(S4102)。
隣接する予測ブロックNが利用できないか(S4103のYES)、予測ブロックNの符号化モードPredModeがイントラ(MODE_INTRA)である場合(S4104のYES)、フラグavailableFlagNは0と設定し(S4105)、mvLXNは(0,0)に設定する(S4106)。
一方、隣接する予測ブロックNが利用でき(S4103のNO)、予測ブロックNの符号化モードPredModeがイントラ(MODE_INTRA)でない場合(S4104のNO)、フラグavailableFlagNは1と設定し(S4107)、予測ブロックNのインター予測情報を取得する。すなわち、予測ブロックNの動きベクトルmvLXN、参照インデックスrefIdxLX[xN,yN]、LXからの予測を行うかどうかを示すフラグpredFlagLX[xN,yN]がmvLXN、refIdxLXN、predFlagLXNにそれぞれ割り当てられる(S4108、S4109、S4110)。ここで、Xは0と1であり、L0とL1のインター予測情報を取得する。また、重み付け予測が行われ、予測ブロック単位で重み付け係数が設定される場合は、重み付け係数も取得する。さらに、インターレース符号化がおこなわれ、予測ブロック単位で、フレームモードとフィールドモードが切り替わる場合は、フレーム/フィールドの切り替えモードも取得する。さらに、インター予測情報以外の量子化パラメータ等を取得することもできる。
以上のステップS4102〜S4110の処理をN=A,B,C,Dについて繰り返す(S4101〜S4111)。
[予測ブロックの候補をマージ候補リストに追加(図40のS404)]
図37、図9を用いて説明したマージ候補となる予測ブロックの候補をマージ候補リストに追加する方法について説明する。図42はマージ候補リストへのマージ候補となる予測ブロックの候補の追加処理手順を示すフローチャートである。本方式では、優先順位をつけて、優先順位の高いものからマージ候補リストmergeCandListに予測動きベクトルの候補を登録することで、マージ・インデックスmerge_idx[x0][y0]の符号量を削減する。優先順位の高い要素をマージ候補リストの前方に配置することで、符号量を削減する。例えば、マージ候補リストmergeCandListの要素が5個の場合、マージ候補リストのインデックス0を「0」、インデックス1を「10」、インデックス2を「110」、インデックス3を「1110」、インデックス4を「11110」とすることで、インデックス0を表す符号量が1ビットとなり、インデックス0に発生頻度が高いと考えられる要素を登録することで、符号量を削減する。
マージ候補リストmergeCandListはリスト構造を成し、マージ候補リスト内部の所在を示すマージ・インデックスと、インデックスに対応する予測動きベクトルの候補を要素として格納する記憶領域が設けられている。マージ・インデックスの数字は0から開始され、マージ候補リストmergeCandListの記憶領域に、予測動きベクトルの候補が格納される。以降の処理では、マージ候補リストmergeCandListに登録されたマージ・インデックスiのマージ候補となる予測ブロックは、mergeCandList[i]で表すこととし、マージ候補リストmergeCandListとは配列表記をすることで区別することとする。
スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが1で、mv_list_adaptive_idx_flagが0の場合(S4201のYES、S4202のNO)、右上または左下に隣接する予測ブロックC,Dよりも異なる時間のピクチャの同一位置あるいはその近傍の予測ブロックColが優先され、図43で示すフローチャートの処理手順で、マージ候補となる予測ブロックがマージ候補リストに登録される(S4204)。
また、mv_temporal_high_priority_flagが0で、mv_list_adaptive_idx_flagが0の場合(S4201のNO、S4203のNO)、異なる時間のピクチャの同一位置あるいはその近傍の予測ブロックからのマージ候補となる予測ブロックColよりも右上または左下に隣接する予測ブロックC,Dが優先され、図44で示すフローチャートの処理手順で、マージ候補となる予測ブロックがマージ候補リストに登録される(S4205)。
また、mmv_list_adaptive_idx_flagが1の場合(S4202のYES、S4203のYES)、信頼性が高いと判断されるマージ候補となる予測ブロックが優先され、図45で示すフローチャートの処理手順で、マージ候補となる予測ブロックがマージ候補リストに登録される(S4206)。
前述のように、第2のフラグmv_temporal_high_priority_flagの値は符号化効率を向上させるためフレームまたはスライス毎に適応的に変更して符号化される。符号化/復号対象ピクチャと最も近い参照ピクチャとの間の距離が近い場合は、mv_temporal_high_priority_flagを真(1)とし、符号化/復号対象画像と参照ピクチャとの間の距離が遠い場合は、偽(0)と設定することで、マージ・インデックスの符号量を削減することができる。この距離が比較的小さい場合は異なる時間からのマージ候補が候補として比較的相応しいと判断する。例えば、フレームレートが30Hzの場合、符号化/復号対象ピクチャと最も近い参照ピクチャとの間の距離がXフレーム以内(X=1〜3程度)の場合、mv_temporal_high_priority_flagを真(1)とし、符号化/復号対象画像と参照ピクチャとの間の距離がXフレームより大きいの場合は、偽(0)と設定することで、マージ・インデックスの符号量を削減する。この閾値Xはシーケンスの内容に応じて設定することで、より符号量を削減することができる。動きが大きく複雑なシーケンスの場合、閾値を小さくすることで、時間方向のマージ候補の優先順位を下げることにより、符号化効率を向上することができる。
図43は、スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが1で、mv_list_adaptive_idx_flagが0の場合(S4201のYES、S4202のNO)のマージ候補リストmergeCandListへのマージ候補となる予測ブロックの登録処理手順を示すフローチャートである。
まず、availableFlagAが1の場合(S4301のYES)、マージ候補リストmergeCandListの先頭に予測ブロックAをマージ候補として登録する(S4302)。
続いて、availableFlagBが1の場合(S4303のYES)、マージ候補リストmergeCandListの最後に予測ブロックBをマージ候補として登録する(S4304)。
続いて、availableFlagColが1の場合(S4305のYES)、マージ候補リストmergeCandListの最後に予測ブロックColをマージ候補として登録する(S4306)。
続いて、availableFlagCが1の場合(S4307のYES)、マージ候補リストmergeCandListの最後に予測ブロックCをマージ候補として登録する(S4308)。
続いて、availableFlagDが1の場合(S4309のYES)、マージ候補リストmergeCandListの最後に予測ブロックDをマージ候補として登録する(S4310)。
図44は、スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが1で、mv_list_adaptive_idx_flagが0の場合(S4201のNO、S4203のNO)のマージ候補リストmergeCandListへのマージ候補となる予測ブロックの登録処理手順を示すフローチャートである。
まず、availableFlagAが1の場合(S4401のYES)、マージ候補リストmergeCandListの先頭に予測ブロックAをマージ候補として登録する(S4402)。
続いて、availableFlagBが1の場合(S4403のYES)、マージ候補リストmergeCandListの最後に予測ブロックBをマージ候補として登録する(S4404)。
続いて、availableFlagCが1の場合(S4405のYES)、マージ候補リストmergeCandListの最後に予測ブロックCをマージ候補として登録する(S4406)。
続いて、availableFlagDが1の場合(S4407のYES)、マージ候補リストmergeCandListの最後に予測ブロックDをマージ候補として登録する(S4408)。
続いて、availableFlagColが1の場合(S4409のYES)、マージ候補リストmergeCandListの最後に予測ブロックColをマージ候補として登録する(S4410)。
図45は、スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが0または1で、mv_list_adaptive_idx_flagが1の場合(S4201のYES、S4202のYES)のマージ候補リストmergeCandListへのマージ候補となる予測ブロックの登録処理手順を示すフローチャートである。
まず、availableFlagAが1の場合(S4501のYES)、マージ候補リストmergeCandListの先頭に予測ブロックAをマージ候補として登録する(S4502)。
続いて、availableFlagBが1の場合(S4503のYES)、マージ候補リストmergeCandListの最後に予測ブロックBをマージ候補として登録する(S4504)。
続いて、availableFlagColが1でかつMvXCrossが1の場合(S4505のYES、S4506のYES)、マージ候補リストmergeCandListの最後に予測ブロックColをマージ候補として登録する(S4507)。
続いて、availableFlagCが1の場合(S4508のYES)、マージ候補リストmergeCandListの最後に予測ブロックCをマージ候補として登録する(S4509)。
続いて、availableFlagDが1の場合(S4510のYES)、マージ候補リストmergeCandListの最後に予測ブロックDをマージ候補として登録する(S4511)。
続いて、availableFlagColが1でかつMvXCrossが0の場合(S4511のYES、S4513のYES)、マージ候補リストmergeCandListの最後に予測ブロックColをマージ候補として登録する(S4514)。
図42のマージ候補リストmergeCandListへの予測動きベクトルの候補登録処理手順においては、mv_temporal_high_priority_flagが1のとき、右上または左下に隣接する予測ブロックC,Dよりも時間的な予測ブロックColを優先的にマージ候補リストの前方に登録し、mv_temporal_high_priority_flagが0のとき、時間的な予測ブロックColよりも右上または左下に隣接する予測ブロックC,Dが優先的にマージ候補リストの前方に登録することで、マージインデックスの符号量を削減する。
図45のマージ候補リストmergeCandListへの予測ブロックの候補登録処理手順においては、フラグMvCrossが1、即ち符号化/復号対象の予測ブロックを含むピクチャを横切って参照画像を指し示しているcolPuの動きベクトルmvColから算出された動きベクトルを用いるマージ候補が、フラグMvCrossが0、即ち符号化/復号対象の予測ブロックを含むピクチャを横切らずに参照画像を指し示しているcolPuの動きベクトルmvColから算出された動きベクトルを用いるマージ候補よりもマージ候補として相応しいと判断し、MvCrossが1のとき、時間的な予測ブロックColの優先順位を上げてマージ候補リストの前方に登録し、MvCrossが0のとき、時間的な予測ブロックColの優先順位を下げてマージ候補リストの後方に登録することで、符号量を削減する。即ち異なる時間の画像の予測ブロックColの符号化情報の値に応じて優先順位を変更してマージ候補リストに登録する順序を変更ことで、符号量を削減する。
なお、マージモードにおいて、左に隣接する予測ブロックA及び上に隣接する予測ブロックBは符号化/復号対象の予測ブロックと一体となる動きになることが多いので、インター予測情報が取得できる場合には、他の予測ブロックC,D,Colよりも優先的にマージ候補リストの前方に登録する。
なお、図45の代わりに、図46の処理手順でマージ候補を登録することもできる。
図46は、スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが0または1で、mv_list_adaptive_idx_flagが1の場合(S4202のYES、S4203のYES)のマージ候補リストmergeCandListへのマージ候補となる予測ブロックの登録処理手順を示すフローチャートである。
まず、availableFlagAが1で、predFlagL0AとpredFlagL1Aが共に1の場合、(S4601のYES、S4602のYES)、マージ候補リストmergeCandListの先頭に双予測の予測ブロックAをマージ候補として登録する(S4603)。
続いて、availableFlagBが1で、predFlagL0BとpredFlagL1Bが共に1の場合、(S4604のYES、S4605のYES)、マージ候補リストmergeCandListの最後に双予測の予測ブロックBをマージ候補として登録する(S4606)。
続いて、availableFlagAが1で、predFlagL0AとpredFlagL1Aのどちらかが0の場合、(S4607のYES、S4608のYES)、マージ候補リストmergeCandListの最後に双予測でない予測ブロックAをマージ候補として登録する(S4609)。
続いて、availableFlagBが1で、predFlagL0BとpredFlagL1Bのどちらかが0の場合、(S4610のYES、S4611のYES)、マージ候補リストmergeCandListの最後に双予測でない予測ブロックBをマージ候補として登録する(S4612)。
続いて、availableFlagCが1で、predFlagL0CとpredFlagL1Cが共に1の場合、(S4613のYES、S4614のYES)、マージ候補リストmergeCandListの最後に双予測の予測ブロックCをマージ候補として登録する(S4615)。
続いて、availableFlagDが1で、predFlagL0DとpredFlagL1Dが共に1の場合、(S4616のYES、S4617のYES)、マージ候補リストmergeCandListの最後に双予測の予測ブロックDをマージ候補として登録する(S4618)。
続いて、availableFlagColが1の場合(S4619のYES)、マージ候補リストmergeCandListの最後に予測ブロックColをマージ候補として登録する(S4620)。
続いて、availableFlagCが1で、predFlagL0CとpredFlagL1Cのどちらかが0の場合、(S4621のYES、S4622のYES)、マージ候補リストmergeCandListの最後に双予測でない予測ブロックCをマージ候補として登録する(S4623)。
続いて、availableFlagDが1で、predFlagL0DとpredFlagL1Dのどちらかが0の場合、(S4624のYES、S4625のYES)、マージ候補リストmergeCandListの最後に双予測でない予測ブロックCをマージ候補として登録する(S4626)。
図46のマージ候補リストmergeCandListへの予測ブロックの候補登録処理手順においては、周囲に隣接する予測ブロックN(NはA,B,C,D)の予測フラグpredFlagL0NとpredFlagL1Nが共に1、即ち双予測を用いて動き補償が行われているマージ候補が、周囲に隣接する予測ブロックN(NはA,B,C,D)の予測フラグpredFlagL0NとpredFlagL1Nのどちらかが0、即ち双予測でないL0予測、L1予測等の片方向予測を用いて動き補償が行われているマージ候補よりもマージ候補として相応しいと判断し、双予測が行われるマージ候補の優先順位を上げてマージ候補リストの前方に登録し、双予測が行われないマージ候補の優先順位を下げてマージ候補リストの後方に登録することで、符号量を削減する。即ち周囲に隣接する予測ブロックNの符号化情報の値に応じて優先順位を変更してマージ候補リストに登録する順序を変更ことで、符号量を削減する。
なお、図45、図46の代わりに、図47の処理手順で符号化/復号対象画像とマージ候補の参照画像との距離に応じて優先順位をつけてマージ候補を登録することもできる。
図47は、スライス、シーケンスまたはピクチャー毎に符号化されるフラグmv_temporal_high_priority_flagが0または1で、mv_list_adaptive_idx_flagが1の場合(S4202のYES、S4203のYES)のマージ候補リストmergeCandListへのマージ候補となる予測ブロックの登録処理手順を示すフローチャートである。
まず、符号化/復号対象画像のPOCと予測ブロックAのインター予測で用いられる参照ピクチャのPOCとの差分の絶対値を算出し、インター予測画像間距離distAとする(S4701)。同様に、符号化/復号対象画像のPOCと予測ブロックB、C、D、Colのインター予測で用いられる参照ピクチャのPOCとの差分の絶対値をそれぞれ算出し、インター予測画像間距離distB,distC,distD,distColとする(S4701〜S4705)。予測ブロックN(N=A,B,C,DまたはCol)が両予測の場合は、L0用のインター予測画像間距離とL1用のインター予測画像間距離を算出し、小さい方を選択して、インター予測画像間距離distN(N=A,B,C,DまたはCol)とする。予測ブロックN(N=A,B,C,DまたはCol)がL0予測、またはL1予測の場合は、用いたL0用のインター予測画像間距離またはL1用のインター予測画像間距離を算出し、小さい方を選択して、インター予測画像間距離distN(N=A,B,C,DまたはCol)とする。
なお、予測ブロックN(N=A,B,C,DまたはCol)が利用できない場合、及び、イントラ予測の場合は、インター予測画像間距離distN(N=A,B,C,DまたはCol)をdistNがとりうる最大値に設定する。
続いて、算出した予測ブロックA,B,C,D,Colのインター予測画像間距離distA,distB,distC,distD,distColの値に応じて、マージ候補リストmergeCandListにマージ候補A,B,C,D,Colを追加する(S4706〜S4720)。
まず、算出した予測ブロックA,Bのインター予測画像間距離distA,distBの値の小さな予測ブロックから順次マージ候補リストmergeCandListにマージ候補A,Bを追加する(S4706〜S4708)。
予測ブロックAのインター予測画像間距離distAの値と予測ブロックBのインター予測画像間距離distBの値を比較し(S4706)、distAがdistB以下の場合、マージ候補リストmergeCandListに予測ブロックA,Bの順序で追加する(S4707)。つまり、予測ブロックAを追加してからその後方に予測ブロックBを追加する。distBの値がdistAの値より小さい場合、マージ候補リストmergeCandListに予測ブロックB,Aの順序で追加する(S4708)。
続いて、算出した予測ブロックC,D,Colのインター予測画像間距離distC,distD,Colの値の小さな予測ブロックから順次マージ候補リストmergeCandListにマージ候補C,D,Colを追加する(S4709〜S4720)。
図47のマージ候補リストmergeCandListへの予測ブロックの候補登録処理手順においては、符号化/復号対象の予測ブロックを含むピクチャとマージ候補の参照ピクチャとの距離が小さいマージ候補が符号化/復号対象の予測ブロックを含むピクチャとマージ候補の参照ピクチャとの距離が大きいマージ候補よりもマージ候補として相応しいと判断し、距離が小さいマージ候補の優先順位を距離が大きいマージ候補の優先順位よりも上げてマージ候補リストの前方に登録することで、符号量を削減する。即ち周囲に隣接する予測ブロックNの符号化情報の値に応じて優先順位を変更してマージ候補リストに登録する順序を変更ことで、符号量を削減する。
なお、マージモードにおいて、マージ候補となる予測ブロックの符号化情報を確認し、多いものから順番に優先順位を付けることもできる。
なお、マージモードにおいて、マージ候補となる予測ブロックの大きさを確認し、大きいものから順番に優先順位を付けることもできる。
図38に戻り、動画像符号化装置のインター予測情報推定部104の符号化情報選択部133では、マージ候補リストに登録されているマージ候補の中から、最適な候補を選択し、マージ・インデックスおよびマージ・インデックスに対応する符号化情報を出力する。
最適な候補の選択においては、予測方法決定部106と同様の方法を用いることができる。それぞれのマージ候補ごとに符号量と符号化歪を算出し、最も少ない発生符号量と符号化歪となる符号化情報が決定される。それぞれのマージ候補毎にマージ・インデックスmerge_idxの符号化が行われ、符号化情報の符号量を算出する。さらに、それぞれのマージ候補毎に動き補償予測部105と同様の方法で各マージ候補の符号化情報に応じて動き補償した動き補償予測信号と、画像メモリ101から供給される符号化対象の画像信号との予測残差信号を符号化した予測残差信号の符号量を算出する。符号化情報(マージ・インデックス)の符号量と予測残差信号の符号量とが加算された総発生符号量を算出し、第1の評価値とする。
また、こうした差分画像を符号化後に、歪量評価の為に復号し、符号化により生じる元画像との誤差を表す比率として符号化歪が算出される。これら総発生符号量と符号化歪とをマージ候補毎に比較することで、最も少ない発生符号量と符号化歪となる符号化情報が決定される。決定された符号化情報に対応するマージ・インデックスが、予測ブロック単位の第2のシンタックスパターンで表されるフラグmerge_idxとして符号化される。尚、ここで算出される発生符号量は、符号化過程をシミュレートしたものであることが望ましいが、簡便に近似したり、概算することも可能である。
一方、図39において、動画像符号化装置のインター予測情報推定部205の符号化情報選択部233では、マージ候補リストに登録されているマージ候補の中から、供給されたマージインデックスに対応する符号化情報を選択し、動き補償予測部206に供給するとともに、符号化情報格納メモリ209に格納する。
以上述べたように、実施の形態の動きベクトルの予測方法によれば、ピクチャを矩形ブロックに分割し、ピクチャ間でブロック単位に動き推定、補償を行う動画像符号化における動きベクトルの符号化効率を向上させる為に、既符号化済みの予測ブロックの動きベクトルから予測を行い、処理対象のブロックの動きベクトルとその予測値との差分ベクトルを符号化することによって符号量を削減することができる。その際、得られる複数の予測動きベクトルは予測動きベクトルリストに優先順位が付けられて、登録されるが、本実施例で説明したように、優先順位に応じて、登録順序を変更してもよいし、既定の順序で登録した後、リスト内を優先順位に応じて、並び替えてもよく、本発明に含まれる。例えば、予測動きベクトルリストのインデックス0に左側に隣接する第1の予測ブロックグループAから算出した予測動きベクトル、インデックス1に上側に隣接する第2の予測ブロックグループBから算出した予測動きベクトル、インデックス2に異なる時間の第3の予測ブロックグループCから算出した予測動きベクトルを一旦登録し、その後、必要に応じて、優先順位に従って並べ替える。
さらに、実施の形態の動きベクトルの予測方法によれば、ピクチャを矩形ブロックに分割し、ピクチャ間でブロック単位に動き推定、補償を行う動画像符号化における符号化情報の符号化効率を向上させる為に、既符号化済みのブロックの符号化情報を利用することによって符号量を削減することができる。その際、得られる複数のマージ候補となる予測ブロックはマージ候補リストに優先順位が付けられて、登録されるが、本実施例で説明したように、優先順位に応じて、登録順序を変更してもよいし、既定の順序で登録した後、リスト内を優先順位に応じて、並び替えてもよく、発明に含まれる。例えば、マージ候補リストのインデックスが0の位置にマージ候補A、インデックスが1の位置にマージ候補B、インデックスが2の位置にマージ候補Col、インデックスが3の位置にマージ候補C、インデックスが4の位置にマージ候補Dを一旦登録し、その後、必要に応じて、優先順位に従って並べ替える。また、マージ候補リストに登録されるマージ候補の情報は、具体的には、当該マージ候補のすべての符号化情報自体でもよいし、マージ候補の符号化情報が参照できるメモリのポインタやアドレス情報であってもよい。
本発明の動画像符号化装置のさらに別の態様として、以下のものがある。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像を符号化する動画像符号化装置であって、
符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック、および符号化対象ブロックとは異なるピクチャ内の前記符号化対象ブロックと同一または周辺の位置にある符号化済みのブロックのいずれかから予測して、複数の予測動きベクトルの候補を生成する予測動きベクトル候補生成部を備え、
前記予測動きベクトル候補生成部は、各予測動きベクトルの候補を予測動きベクトル候補リストに登録する際に、ピクチャまたはスライス単位で、優先順位を変更して予測動きベクトル候補リストに登録することを特徴とする動画像符号化装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像を符号化する動画像符号化装置であって、
符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック、および符号化対象ブロックとは異なるピクチャ内の前記符号化対象ブロックと同一または周辺の位置にある符号化済みのブロックのいずれかから予測して、複数の予測動きベクトルの候補を生成する予測動きベクトル候補生成部を備え、
前記予測動きベクトル候補生成部は、各予測動きベクトルの候補を予測動きベクトル候補リストに登録する際に、ブロック単位で、優先順位を変更して予測動きベクトル候補リストに登録することを特徴とする動画像符号化装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像を符号化する動画像符号化装置であって、
符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック、および符号化対象ブロックとは異なるピクチャ内の前記符号化対象ブロックと同一または周辺の位置にある符号化済みのブロックのいずれかのインター予測情報を含む符号化情報から、複数のインター予測情報を含む符号化情報であるマージの候補を生成するインター予測情報生成部を備え、
前記インター予測情報生成部は、各マージの候補を予測マージ候補リストに登録する際に、ピクチャまたはスライス単位で、優先順位を変更してマージ候補リストに登録することを特徴とする動画像符号化装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像を符号化する動画像符号化装置であって、
符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック、および符号化対象ブロックとは異なるピクチャ内の前記符号化対象ブロックと同一または周辺の位置にある符号化済みのブロックのいずれかのインター予測情報を含む符号化情報から、複数のインター予測情報を含む符号化情報であるマージの候補を生成するインター予測情報生成部を備え、
前記インター予測情報生成部は、各マージの候補を予測マージ候補リストに登録する際に、ブロック単位で、優先順位を変更してマージ候補リストに登録することを特徴とする動画像符号化装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像を符号化する動画像符号化装置であって、
符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック、および符号化対象ブロックとは異なるピクチャ内の前記符号化対象ブロックと同一または周辺の位置にある符号化済みのブロックのいずれかのインター予測情報を含む符号化情報から、複数のインター予測情報を含む符号化情報であるマージの候補を生成するインター予測情報生成部を備え、
前記インター予測情報生成部は、各マージの候補をマージ候補リストに登録する際に、空間方向からのマージの候補が双予測でインター予測されている場合、前記空間方向からのマージ候補の優先順位を上げてマージ候補リストに登録することを特徴とする動画像符号化装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像を符号化する動画像符号化装置であって、
符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック、および符号化対象ブロックとは異なるピクチャ内の前記符号化対象ブロックと同一または周辺の位置にある符号化済みのブロックのいずれかのインター予測情報を含む符号化情報から、複数のインター予測情報を含む符号化情報であるマージの候補を生成するインター予測情報生成部を備え、
前記インター予測情報生成部は、各マージの候補をマージ候補リストに登録する際に、符号化対象画像と参照画像との間の距離が短いマージの候補を他のマージの候補よりも優先順位を上げてマージ候補リストに登録することを特徴とする動画像符号化装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像を符号化する動画像符号化装置であって、
符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック、および符号化対象ブロックとは異なるピクチャ内の前記符号化対象ブロックと同一または周辺の位置にある符号化済みのブロックのいずれかから予測して、複数の予測動きベクトルの候補を生成する予測動きベクトル候補生成部を備え、
前記予測動きベクトル候補生成部は、空間方向に予測ブロックをスキャンする際、左側の隣接予測ブロックグループ、及び上側の隣接予測ブロックグループの各隣接予測ブロックに対して、
1.符号化対象の予測ブロックで選択された符号化モードと同じ参照リストで、同じ参照フレームの動きベクトルが存在するか否か、
2.符号化対象の予測ブロックで選択された符号化モードとは異なる参照リストで、同じ参照フレームの動きベクトルが存在するか否か、
3.符号化対象の予測ブロックで選択された符号化モードと同じ参照リストで、異なる参照フレームの動きベクトルが存在するか否か、および
4.符号化対象の予測ブロックで選択された符号化モードとは異なる参照リストで、異なる参照フレームの動きベクトルが存在するか否か、
の優先順序で条件判定を行うことを特徴とする動画像符号化装置。
上記の空間方向の予測ブロックのスキャンにおいて、第1の条件判定が最初の予測ブロックについて終了すると隣の予測ブロックに順次進めて同じ条件判定を行い、以降、第2、第3、第4の条件判定のそれぞれについて予測ブロックを順次進めながら同じ条件判定を行うことを特徴とする動画像符号化装置。
上記の空間方向の予測ブロックのスキャンにおいて、4つの条件判定のうち、第1と第2の条件判定が最初の予測ブロックについて終了すると隣の予測ブロックに順次進めて同じ条件判定を行い、次に、第3と第4の条件判定が最初の予測ブロックについて終了すると隣の予測ブロックに順次進めて同じ条件判定を行うことを特徴とする動画像符号化装置。
上記の空間方向の予測ブロックのスキャンにおいて、4つの条件判定のうち、第1の条件判定が最初の予測ブロックについて終了すると隣の予測ブロックに順次進めて同じ条件判定を行い、次に、第2と第3と第4の条件判定が最初の予測ブロックについて終了すると隣の予測ブロックに順次進めて同じ条件判定を行うことを特徴とする動画像符号化装置。
上記の空間方向の予測ブロックのスキャンにおいて、最初の予測ブロックについて4つの条件判定のいずれにも合致しない場合、当該予測ブロックには条件に合致する動きベクトルは存在しないものと判断し、隣の予測ブロックに順次進めて4つの条件判定のいずれかに合致するかどうかの判定を行うことを特徴とする動画像符号化装置。
本発明の動画像復号装置のさらに別の態様として、以下のものがある。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像が符号化された符号化ビット列を復号する動画像復号装置であって、
復号対象ブロックと同一ピクチャ内の前記復号対象ブロックと隣接する復号済みのブロック、および復号対象ブロックとは異なるピクチャ内の前記復号対象ブロックと同一または周辺の位置にある復号済みのブロックのいずれかから予測して、複数の予測動きベクトルの候補を生成する予測動きベクトル候補生成部を備え、
前記予測動きベクトル候補生成部は、各予測動きベクトルの候補を予測動きベクトル候補リストに登録する際に、ピクチャまたはスライス単位で、優先順位を変更して予測動きベクトル候補リストに登録することを特徴とする動画像復号装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像が符号化された符号化ビット列を復号する動画像復号装置であって、
復号対象ブロックと同一ピクチャ内の前記復号対象ブロックと隣接する復号済みのブロック、および復号対象ブロックとは異なるピクチャ内の前記復号対象ブロックと同一または周辺の位置にある復号済みのブロックのいずれかから予測して、複数の予測動きベクトルの候補を生成する予測動きベクトル候補生成部を備え、
前記予測動きベクトル候補生成部は、各予測動きベクトルの候補を予測動きベクトル候補リストに登録する際に、ブロック単位で、優先順位を変更して予測動きベクトル候補リストに登録することを特徴とする動画像復号装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像が符号化された符号化ビット列を復号する動画像復号装置であって、
復号対象ブロックと同一ピクチャ内の前記復号対象ブロックと隣接する復号済みのブロック、および復号対象ブロックとは異なるピクチャ内の前記復号対象ブロックと同一または周辺の位置にある復号済みのブロックのいずれかのインター予測情報を含む符号化情報から、複数のインター予測情報を含む符号化情報であるマージの候補を生成するインター予測情報生成部を備え、
前記インター予測情報生成部は、各マージの候補を予測マージ候補リストに登録する際に、ピクチャまたはスライス単位で、優先順位を変更してマージ候補リストに登録することを特徴とする動画像復号装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像が符号化された符号化ビット列を復号する動画像復号装置であって、
復号対象ブロックと同一ピクチャ内の前記復号対象ブロックと隣接する復号済みのブロック、および復号対象ブロックとは異なるピクチャ内の前記復号対象ブロックと同一または周辺の位置にある近隣の復号済みのブロックのいずれかのインター予測情報を含む符号化情報から、複数のインター予測情報を含む符号化情報であるマージの候補を生成するインター予測情報生成部を備え、
前記インター予測情報生成部は、各マージの候補を予測マージ候補リストに登録する際に、ブロック単位で、優先順位を変更してマージ候補リストに登録することを特徴とする動画像復号装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像が符号化された符号化ビット列を復号する動画像復号装置であって、
復号対象ブロックと同一ピクチャ内の前記復号対象ブロックと隣接する復号済みのブロック、および復号対象ブロックとは異なるピクチャ内の前記復号対象ブロックと同一または周辺の位置にある復号済みのブロックのいずれかのインター予測情報を含む符号化情報から、複数のインター予測情報を含む符号化情報であるマージの候補を生成するインター予測情報生成部を備え、
前記インター予測情報生成部は、各マージの候補をマージ候補リストに登録する際に、空間方向からのマージの候補が双予測でインター予測されている場合、前記空間方向からのマージ候補の優先順位を上げてマージ候補リストに登録することを特徴とする動画像復号装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像が符号化された符号化ビット列を復号する動画像復号装置であって、
復号対象ブロックと同一ピクチャ内の前記復号対象ブロックと隣接する復号済みのブロック、および復号対象ブロックとは異なるピクチャ内の前記復号対象ブロックと同一または周辺の位置にある復号済みのブロックのいずれかのインター予測情報を含む符号化情報から、複数のインター予測情報を含む符号化情報であるマージの候補を生成するインター予測情報生成部を備え、
前記インター予測情報生成部は、各マージの候補をマージ候補リストに登録する際に、符号化対象画像と参照画像との間の距離が短いマージの候補の優先順位を上げてマージ候補リストに登録することを特徴とする動画像復号装置。
動画像の各ピクチャを分割したブロック単位で動き補償を用いて前記動画像が符号化された符号化ビット列を復号する動画像復号装置であって、
復号対象ブロックと同一ピクチャ内の前記復号対象ブロックと隣接する復号済みのブロック、および復号対象ブロックとは異なるピクチャ内の前記復号対象ブロックと同一または周辺の位置にある復号済みのブロックのいずれかから予測して、複数の予測動きベクトルの候補を生成する予測動きベクトル候補生成部を備え、
前記予測動きベクトル候補生成部は、空間方向に予測ブロックをスキャンする際、左側の隣接予測ブロックグループ、及び上側の隣接予測ブロックグループの各隣接予測ブロックに対して、
1.復号対象の予測ブロックで選択された符号化モードと同じ参照リストで、同じ参照フレームの動きベクトルが存在するか否か、
2.復号対象の予測ブロックで選択された符号化モードとは異なる参照リストで、同じ参照フレームの動きベクトルが存在するか否か、
3.復号対象の予測ブロックで選択された符号化モードと同じ参照リストで、異なる参照フレームの動きベクトルが存在するか否か、および
4.復号対象の予測ブロックで選択された符号化モードとは異なる参照リストで、異なる参照フレームの動きベクトルが存在するか否か、
の優先順序で条件判定を行うことを特徴とする動画像復号装置。
上記の空間方向の予測ブロックのスキャンにおいて、第1の条件判定が最初の予測ブロックについて終了すると隣の予測ブロックに順次進めて同じ条件判定を行い、以降、第2、第3、第4の条件判定のそれぞれについて予測ブロックを順次進めながら同じ条件判定を行うことを特徴とする動画像復号装置。
上記の空間方向の予測ブロックのスキャンにおいて、4つの条件判定のうち、第1と第2の条件判定が最初の予測ブロックについて終了すると隣の予測ブロックに順次進めて同じ条件判定を行い、次に、第3と第4の条件判定が最初の予測ブロックについて終了すると隣の予測ブロックに順次進めて同じ条件判定を行うことを特徴とする動画像復号装置。
上記の空間方向の予測ブロックのスキャンにおいて、4つの条件判定のうち、第1の条件判定が最初の予測ブロックについて終了すると隣の予測ブロックに順次進めて同じ条件判定を行い、次に、第2と第3と第4の条件判定が最初の予測ブロックについて終了すると隣の予測ブロックに順次進めて同じ条件判定を行うことを特徴とする動画像復号装置。
上記の空間方向の予測ブロックのスキャンにおいて、最初の予測ブロックについて4つの条件判定のいずれにも合致しない場合、当該予測ブロックには条件に合致する動きベクトルは存在しないものと判断し、隣の予測ブロックに順次進めて4つの条件判定のいずれかに合致するかどうかの判定を行うことを特徴とする動画像復号装置。
以上述べた実施の形態の動画像符号化装置が出力する動画像の符号化ストリームは、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有しており、動画像符号化装置に対応する動画像復号装置がこの特定のデータフォーマットの符号化ストリームを復号することができる。
動画像符号化装置と動画像復号装置の間で符号化ストリームをやりとりするために、有線または無線のネットワークが用いられる場合、符号化ストリームを通信路の伝送形態に適したデータ形式に変換して伝送してもよい。その場合、動画像符号化装置が出力する符号化ストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する動画像送信装置と、ネットワークから符号化データを受信して符号化ストリームに復元して動画像復号装置に供給する動画像受信装置とが設けられる。
動画像送信装置は、動画像符号化装置が出力する符号化ストリームをバッファするメモリと、符号化ストリームをパケット化するパケット処理部と、パケット化された符号化データをネットワークを介して送信する送信部とを含む。動画像受信装置は、パケット化された符号化データをネットワークを介して受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理して符号化ストリームを生成し、動画像復号装置に提供するパケット処理部とを含む。
以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現することができるのは勿論のこと、ROM(リード・オンリ・メモリ)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによっても実現することができる。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供することも、有線あるいは無線のネットワークを通してサーバから提供することも、地上波あるいは衛星ディジタル放送のデータ放送として提供することも可能である。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。