以下、添付図面を参照しながら、実施形態を詳細に説明する。以下の各実施形態の符号化装置及び復号装置は、LSI(Large-Scale Integration)チップ、DSP(Digital
Signal Processor)、又はFPGA(Field Programmable Gate Array)などのハードウェアにより実現できる。また、以下の各実施形態の符号化装置及び復号装置は、コンピュータにプログラムを実行させること、即ち、ソフトウェアにより実現させることもできる。なお、以降の説明において、「画像」という用語は、「映像」、「画素」、「画像信号」、「絵」、又は「画像データ」などの用語に適宜読み替えることができる。
(第1実施形態)
第1実施形態では、動画像を符号化する符号化装置について説明する。
図1は、第1実施形態の符号化装置100の構成の一例を示すブロック図である。
符号化装置100は、入力画像を構成する各フレーム又は各フィールドを複数の画素ブロックに分割し、符号化制御部111から入力される符号化パラメータを用いて、分割した画素ブロックに対して予測符号化を行い、予測画像を生成する。そして符号化装置100は、複数の画素ブロックに分割した入力画像と予測画像とを減算して予測誤差を生成し、生成した予測誤差を直交変換及び量子化し、更にエントロピー符号化を行って符号化データを生成し、出力する。
符号化装置100は、画素ブロックのブロックサイズ及び予測画像の生成方法の少なくともいずれかが異なる複数の予測モードを選択的に適用して予測符号化を行う。予測画像の生成方法は、大別すると、符号化対象フレーム内で予測を行うイントラ予測と、時間的に異なる1以上の参照フレームを用いて動き補償予測を行うインター予測との2種類である。なお、イントラ予測は、画面内予測又はフレーム内予測などとも称され、インター予測は、画面間予測、フレーム間予測、又は動き補償予測などとも称される。
図2は、第1実施形態における画素ブロックの予測符号化順序の一例を示す説明図である。図2に示す例では、符号化装置100は、画素ブロックの左上から右下に向かって予測符号化を行っており、符号化処理対象のフレームfにおいて、符号化対象画素ブロックcよりも左側及び上側に符号化済み画素ブロックpが位置している。以下では、説明の簡単化のため、符号化装置100は、図2に示す順序で予測符号化を行うものとするが、予測符号化の順序はこれに限定されるものではない。
画素ブロックは、画像を処理する単位を示し、例えば、M×Nサイズのブロック(M及びNは自然数)、コーディングツリーブロック、マクロブロック、サブブロック、又は1
画素などが該当する。以降の説明では、基本的に、画素ブロックをコーディングツリーブロックの意味で使用するが、他の意味で使用する場合もある。例えば、プレディクションユニットの説明では、画素ブロックを、プレディクションユニットの画素ブロックの意味で使用する。また、ブロックはユニットなどの名称で呼ばれることもある。例えばコーディングブロックをコーディングユニットと呼ぶ。
図3Aは、第1実施形態におけるコーディングツリーブロックのブロックサイズの一例を示す図である。コーディングツリーブロックは、典型的には、図3Aに示すような64×64の画素ブロックである。但し、これに限定されるものではなく、32×32の画素ブロック、16×16の画素ブロック、8×8の画素ブロック、又は4×4の画素ブロックなどであってもよい。また、コーディングツリーブロックは、正方形でなくてもよく、例えば、M×Nサイズ(M≠N)の画素ブロックであってもよい。
図3B〜図3Dは、第1実施形態のコーディングツリーブロックの具体例を示す図である。図3Bは、ブロックサイズが64×64(N=32)のコーディングツリーブロックを示している。Nは、基準となるコーディングツリーブロックのサイズを表しており、分割された場合のサイズがN、分割されない場合のサイズが2Nと定義されている。図3Cは、図3Bのコーディングツリーブロックを四分木分割したコーディングツリーブロックを示している。コーディングツリーブロックは、図3Cに示すように、四分木構造を持つ。コーディングツリーブロックが分割された場合、分割後の4つの画素ブロックに対して、図3Cに示すように、Zスキャン順で番号が付される。
なお、コーディングツリーブロックは、1つの四分木の番号内で更に四分木分割することができる。これにより、コーディングツリーブロックを階層的に分割することができる。この場合、分割の深さは、Depthで定義される。図3Dは、図3Bのコーディングツリーブロックを四分木分割したコーディングツリーブロックの1つを示し、ブロックサイズが32×32(N=16)となっている。図3Bに示すコーディングツリーブロックのDepthは0であり、図3Dに示すコーディングツリーブロックのDepthは、1である。なお、最もユニットが大きいコーディングツリーブロックは、ラージコーディングツリーブロックと呼ばれ、この単位で入力画像信号がラスタースキャン順に符号化される。
以降の説明では、入力画像の符号化対象ブロック又はコーディングツリーブロックを予測対象ブロック又は予測画素ブロックと称することもある。なお、符号化単位は画素ブロックに限らず、フレーム、フィールド、スライス、ライン、及び画素の少なくともいずれかを用いることもできる。
符号化装置100は、図1に示すように、減算部101と、直交変換部102と、量子化部103と、逆量子化部104と、逆直交変換部105と、加算部106と、予測画像生成部107と、インデックス設定部108と、動き評価部109と、符号化部110とを、備える。なお、図1に示す符号化制御部111は、符号化装置100を制御するものであり、例えば、CPU(Central Processing Unit)などにより実現できる。
減算部101は、画素ブロックに分割された入力画像から対応する予測画像を減算して予測誤差を得る。減算部101は、予測誤差を出力し、直交変換部102に入力する。
直交変換部102は、減算部101から入力された予測誤差に対して、例えば、離散コサイン変換(DCT)又は離散サイン変換(DST)のような直交変換を行い、変換係数を得る。直交変換部102は、変換係数を出力し、量子化部103に入力する。
量子化部103は、直交変換部102から入力された変換係数に対して量子化処理を行い、量子化変換係数を得る。具体的には、量子化部103は、符号化制御部111によって指定される量子化パラメータや量子化マトリクスなどの量子化情報に従って量子化を行う。より詳細には、量子化部103は、変換係数を量子化情報によって導出される量子化ステップサイズで除算し、量子化変換係数を得る。量子化パラメータは、量子化の細かさを示す。量子化マトリクスは、量子化の細かさを変換係数の成分毎に重み付けするために使用される。量子化部103は、量子化変換係数を出力し、逆量子化部104及び符号化部110に入力する。
逆量子化部104は、量子化部103から入力された量子化変換係数に対して逆量子化処理を行い、復元変換係数を得る。具体的には、逆量子化部104は、量子化部103において使用された量子化情報に従って逆量子化を行う。より詳細には、逆量子化部104は、量子化情報によって導出された量子化ステップサイズを量子化変換係数に乗算し、復元変換係数を得る。なお、量子化部103において使用された量子化情報は、符号化制御部111の図示せぬ内部メモリからロードされて利用される。逆量子化部104は、復元変換係数を出力し、逆直交変換部105に入力する。
逆直交変換部105は、逆量子化部104から入力された復元変換係数に対して、例えば、逆離散コサイン変換(IDCT)又は逆離散サイン変換(IDST)などのような逆直交変換を行い、復元予測誤差を得る。なお、逆直交変換部105が行う逆直交変換は、直交変換部102において行われた直交変換に対応する。逆直交変換部105は、復元予測誤差を出力し、加算部106に入力する。
加算部106は、逆直交変換部105から入力された復元予測誤差と対応する予測画像とを加算し、局所復号画像を生成する。加算部106は、局所復号画像を出力し、予測画像生成部107に入力する。
予測画像生成部107は、加算部106から入力された局所復号画像を参照画像としてメモリ(図1では図示省略)に蓄積し、メモリに蓄積した参照画像を出力し、動き評価部109に入力する。また予測画像生成部107は、動き評価部109から入力される動き情報及びWPパラメータ情報に基づいて重み付き動き補償予測を行い、予測画像を生成する。予測画像生成部107は、予測画像を出力し、減算部101及び加算部106に入力する。
図4は、第1実施形態の予測画像生成部107の構成の一例を示すブロック図である。予測画像生成部107は、図4に示すように、複数フレーム動き補償部201と、メモリ202と、単方向動き補償部203と、予測パラメータ制御部204と、参照画像セレクタ205と、フレームメモリ206と、参照画像制御部207と、を備える。
フレームメモリ206は、参照画像制御部207の制御の下、加算部106から入力された局所復号画像を参照画像として格納する。フレームメモリ206は、参照画像を一時保持するための複数のメモリセットFM1〜FMN(N≧2)を有する。
予測パラメータ制御部204は、動き評価部109から入力される動き情報に基づいて、参照画像番号と予測パラメータとの複数の組み合わせをテーブルとして用意している。ここで、動き情報とは、動き補償予測で用いられる動きのズレ量を示す動きベクトルや参照画像番号、単方向/双方向予測などの予測モードに関する情報などを指す。予測パラメータは、動きベクトル及び予測モードに関する情報を指す。そして予測パラメータ制御部204は、入力画像に基づいて、予測画像の生成に用いる参照画像番号と予測パラメータとの組み合わせを選択して出力し、参照画像番号を参照画像セレクタ205に入力し、予
測パラメータを単方向動き補償部203に入力する。
参照画像セレクタ205は、フレームメモリ206が有するフレームメモリFM1〜FMNのいずれの出力端を接続するかを、予測パラメータ制御部204から入力された参照画像番号に従って切り替えるスイッチである。参照画像セレクタ205は、例えば、参照画像番号が0であれば、FM1の出力端を参照画像セレクタ205の出力端に接続し、参照画像番号がN−1であれば、FMNの出力端を参照画像セレクタ205の出力端に接続する。参照画像セレクタ205は、フレームメモリ206が有するフレームメモリFM1〜FMNのうち、出力端が接続されているフレームメモリに格納されている参照画像を出力し、単方向動き補償部203及び動き評価部109へ入力する。
単方向予測動き補償部203は、予測パラメータ制御部204から入力された予測パラメータと参照画像セレクタ205から入力された参照画像に従って、動き補償予測処理を行い、単方向予測画像を生成する。
図5は、第1実施形態の双方向予測における動き補償予測の動きベクトルの関係の一例を示す図である。動き補償予測では、参照画像を用いて補間処理が行われ、作成された補間画像と入力画像との符号化対象位置の画素ブロックからの動きのズレ量を元に単方向予測画像が生成される。ここで、ズレ量は、動きベクトルである。図5に示すように、双方向予測スライス(B−slice)では、2種類の参照画像と動きベクトルのセットを用いて予測画像が生成される。補間処理としては、1/2画素精度の補間処理や、1/4画素精度の補間処理などが用いられ、参照画像に対してフィルタリング処理が行われることによって、補間画像の値が生成される。例えば、輝度信号に対して1/4画素精度までの補間処理な可能なH.264では、ズレ量は整数画素精度の4倍で表現される。
単方向予測動き補償部203は、単方向予測画像を出力し、メモリ202に一時的に格納する。ここで、動き情報(予測パラメータ)が双方向予測を示す場合には、複数フレーム動き補償部201が2種類の単方向予測画像を用いて重み付き予測を行うため、単方向予測動き補償部203は、1つ目に対応する単方向予測画像をメモリ202に格納し、2つ目に対応する単法予測画像を複数フレーム動き補償部201に直接出力する。ここでは、1つ目に対応する単方向予測画像を第一予測画像とし、2つ目に対応する単方向予測画像を第二予測画像とする。
なお、単方向動き補償部203を2つ用意し、それぞれが2つの単方向予測画像を生成するようにしてもよい。この場合、動き情報(予測パラメータ)が単方向予測を示すときには、単方向動き補償部203が、1つ目の単方向予測画像を第一予測画像として複数フレーム動き補償部201に直接出力すればよい。
複数フレーム動き補償部201は、メモリ202から入力される第一予測画像、単方向予測動き補償部203から入力される第二予測画像、及び動き評価部109から入力されるWPパラメータ情報を用いて、重み付き予測を行って予測画像を生成する。複数フレーム動き補償部201は、予測画像を出力し、減算部101及び加算部106に入力する。
図6は、第1実施形態の複数フレーム動き補償部201の構成の一例を示すブロック図である。複数フレーム動き補償部201は、図6に示すように、デフォルト動き補償部301と、重み付き動き補償部302と、WPパラメータ制御部303と、WPセレクタ304、305とを、備える。
WPパラメータ制御部303は、動き評価部109から入力されるWPパラメータ情報に基づいて、WP適用フラグ及び重み情報を出力し、WP適用フラグをWPセレクタ30
4、305に入力し、重み情報を重み付き動き補償部302に入力する。
ここで、WPパラメータ情報は、重み係数の固定小数点精度、第一予測画像に対応する第一WP適用フラグ,第一重み係数,及び第一オフセット、並びに第二予測画像に対応する第二WP適応フラグ,第二重み係数,及び第二オフセットの情報を含む。WP適用フラグは、該当する参照画像及び信号成分毎に設定可能なパラメータであり、重み付き動き補償予測を行うかどうかを示す。重み情報は、重み係数の固定小数点精度、第一重み係数、第一オフセット、第二重み係数、及び第二オフセットの情報を含む。
詳細には、WPパラメータ制御部303は、動き評価部109からWPパラメータ情報が入力されると、WPパラメータ情報を第一WP適用フラグ、第二WP適用フラグ、及び重み情報に分離して出力し、第一WP適用フラグをWPセレクタ304に入力し、第二WP適用フラグをWPセレクタ305に入力し、重み情報を重み付き動き補償部302に入力する。
WPセレクタ304、305は、WPパラメータ制御部303から入力されたWP適用フラグに基づいて、各々の予測画像の接続端を切り替える。WPセレクタ304、305は、各々のWP適用フラグが0の場合、各々の出力端をデフォルト動き補償部301へ接続する。そしてWPセレクタ304、305は、第一予測画像及び第二予測画像を出力し、デフォルト動き補償部301に入力する。一方、WPセレクタ304、305は、各々のWP適用フラグが1の場合、各々の出力端を重み付き動き補償部302へ接続する。そしてWPセレクタ304、305は、第一予測画像及び第二予測画像を出力し、重み付き動き補償部302に入力する。
デフォルト動き補償部301は、WPセレクタ304、305から入力された2つの単方向予測画像(第一予測画像及び第二予測画像)を元に平均値処理を行い、予測画像を生成する。具体的には、デフォルト動き補償部301は、第一WP適用フラグ及び第二WP適用フラグが0の場合、数式(1)に基づいて平均値処理を行う。
P[x,y]=Clip1((PL0[x,y]+PL1[x,y]+offset2)>>(shift2)) …(1)
ここで、P[x,y]は予測画像、PL0[x,y]は第一予測画像、PL1[x,y]は第二予測画像である。offset2及びshift2は平均値処理における丸め処理のパラメータであり、第一予測画像及び第二予測画像の内部演算精度によって定まる。予測画像のビット精度をL、第一予測画像及び第二予測画像のビット精度をM(L≦M)とすると、shift2は数式(2)で定式化され、offset2は数式(3)で定式化される。
shift2=(M−L+1) …(2)
offset2=(1<<(shift2−1) …(3)
例えば、予測画像のビット精度が8であり、第一予測画像及び第二予測画像のビット精度が14である場合、数式(2)よりshift2=7、数式(3)よりoffset2=(1<<6)となる。
なお、動き情報(予測パラメータ)で示される予測モードが単方向予測である場合、デフォルト動き補償部301は、第一予測画像のみを用いて、数式(4)に基づいて最終的な予測画像を算出する。
P[x,y]=Clip1((PLX[x,y]+offset1)>>(shift1)) …(4)
ここで、PLX[x,y]は単方向予測画像(第一予測画像)を示しており、Xは参照リストの0又は1のいずれかを示す識別子である。例えば、参照リストが0の場合はPL0[x,y]、参照リストが1の場合はPL1[x,y]となる。offset1及びshift1は丸め処理のパラメータであり、第一予測画像の内部演算精度によって定まる。予測画像のビット精度をL、第一予測画像のビット精度をMとすると、shift1は数式(5)で定式化され、offset1は数式(6)で定式化される。
shift1=(M−L) …(5)
offset1=(1<<(shift1−1) …(6)
例えば、予測画像のビット精度が8であり、第一予測画像のビット精度が14である場合、数式(5)よりshift1=6、数式(6)よりoffset1=(1<<5)となる。
重み付き動き補償部302は、WPセレクタ304、305から入力された2つの単方向予測画像(第一予測画像及び第二予測画像)とWPパラメータ制御部303から入力された重み情報とを元に重み付き動き補償を行う。具体的には、重み付き動き補償部302は、第一WP適用フラグ及び第二WP適用フラグが1の場合、数式(7)に基づいて重み付き処理を行う。
P[x,y]=Clip1(((PL0[x,y]*w0C+PL1[x,y]*w1C+(1<<logWDC))>>(logWDC+1))+((o0C+o1C+1)>>1)) …(7)
ここで、w0Cは第一予測画像に対応する重み係数、w1Cは第二予測画像に対応する重み係数、o0Cは第一予測画像に対応するオフセット、o1Cは第二予測画像に対応するオフセットを表す。以後、それぞれを第一重み係数、第二重み係数、第一オフセット、第二オフセットと呼ぶ。logWDCはそれぞれの重み係数の固定小数点精度を示すパラメータである。変数Cは、信号成分を意味する。例えば、YUV空間信号の場合、輝度信号をC=Yとし、Cr色差信号をC=Cr、Cb色差成分をC=Cbと表す。
なお、重み付き動き補償部302は、第一予測画像及び第二予測画像と予測画像との演算精度が異なる場合、固定小数点精度であるlogWDCを数式(8)のように制御することで丸め処理を実現する。
logWD’C=logWDC+offset1 …(8)
丸め処理は、数式(7)のlogWDCを、数式(8)のlogWD’Cに置き換えることで実現できる。例えば、予測画像のビット精度が8であり、第一予測画像及び第二予測画像のビット精度が14である場合、logWDCを再設定することにより、数式(1)のshift2と同様の演算精度における一括丸め処理を実現することが可能となる。
なお、動き情報(予測パラメータ)で示される予測モードが単方向予測である場合、重み付き動き補償部302は、第一予測画像のみを用いて、数式(9)に基づいて最終的な予測画像を算出する。
P[x,y]=Clip1((PLX[x,y]*wXC+(1<<logWDC−1))>>(logWDC)) …(9)
ここで、PLX[x,y]は単方向予測画像(第一予測画像)を示し、wXCは単方向予測に対応する重み係数を示しており、Xは参照リストの0又は1のいずれかを示す識別子である。例えば、参照リストが0の場合はPL0[x,y]、w0C、参照リストが1の場合はPL1[x,y]、w1Cとなる。
なお、重み付き動き補償部302は、第一予測画像及び第二予測画像と予測画像との演算精度が異なる場合、固定小数点精度であるlogWDCを双方向予測時と同様に数式(8)のように制御することで丸め処理を実現する。
丸め処理は、数式(7)のlogWDCを、数式(8)のlogWD’Cに置き換えることで実現できる。例えば、予測画像のビット精度が8であり、第一予測画像のビット精度が14である場合、logWDCを再設定することにより、数式(4)のshift1と同様の演算精度における一括丸め処理を実現することが可能となる。
図7は、第1実施形態における重み係数の固定小数点精度の一例の説明図であり、時間方向の明度変化がある動画像と階調値との変化の一例を示す図である。図7に示す例では、符号化対象フレームをFrame(t)とし、時間的に1つ前のフレームをFrame(t−1)、時間的に1つ後のフレームをFrame(t+1)としている。図7に示すように、白から黒に変化するフェード画像では、画像の明度(階調値)が時間とともに減少していく。重み係数は、図7における変化の度合いを意味しており、数式(7)及び数式(9)から明らかなように、明度変化がない場合に1.0の値を取る。固定小数点精度は、重み係数の小数点に対応する刻み幅を制御するパラメータであり、明度変化がない場合の重み係数は、1<<logWDCとなる。
なお、単方向予測の場合には、第二予測画像に対応する各種パラメータ(第二WP適応フラグ,第二重み係数,及び第二オフセットの情報)は利用されないため、予め定めた初期値に設定されていてもよい。
図1に戻り、動き評価部109は、入力画像と予測画像生成部107から入力された参照画像とに基づき複数フレーム間の動き評価を行い、動き情報及びWPパラメータ情報を出力し、動き情報を予測画像生成部107及び符号化部110に入力し、WPパラメータ情報を予測画像生成部107及びインデックス設定部108に入力する。
動き評価部109は、例えば、予測対象画素ブロックの入力画像と同位置に対応する複数の参照画像を起点として差分値を計算することで誤差を算出し、この位置を分数精度でずらし、誤差最小のブロックを探すブロックマッチングなどの手法により、最適な動き情報を算出する。動き評価部109は、双方向予測の場合には、単方向予測で導出された動き情報を用いて、数式(1)及び数式(4)に示すようなデフォルト動き補償予測を含むブロックマッチングを行うことにより、双方向予測の動き情報を算出する。
この際、動き評価部109は、数式(7)及び数式(9)で示されるような重み付き動き補償予測を含むブロックマッチングを行うことにより、WPパラメータ情報を算出できる。なお、WPパラメータ情報の算出には、入力画像の明度勾配を用いて重み係数やオフセットを算出する方法や、符号化した際の予測誤差の累積による重み係数やオフセットの算出方法などを用いてもよい。またWPパラメータ情報は、符号化装置毎に予め定めた固定値を用いてもよい。
ここで、図7を参照しながら、時間的に明度変化のある動画像から、重み係数、重み係数の固定小数点精度、及びオフセットを算出する方法を説明する。前述したように、図7に示すような白から黒に変化するフェード画像では、画像の明度(階調値)が時間とともに減少していく。動き評価部109は、この傾きを計算することにより、重み係数を算出することができる。
また、重み係数の固定小数点精度は、この傾きの精度を示す情報であり、動き評価部109は、参照画像の時間的な距離と画像明度の変化度から、最適な値を計算できる。例えば、図7において、Frame(t−1)〜Frame(t+1)間の重み係数が小数点精度で0.75である場合、1/4精度であれば、3/4が表現できるため、動き評価部109は、固定小数点精度を2(1<<2)に設定する。固定小数点精度の値は、重み係数を符号化した場合の符号量に影響を与えるため、符号量と予測精度を考慮して最適な値を選択すればよい。なお、固定小数点精度の値は、予め定めた固定値としてもよい。
また、動き評価部109は、傾きが一致しない場合、一次関数の切片に対応する補正値(ズレ量)を求めることでオフセット値を算出できる。例えば、図7において、Frame(t−1)〜Frame(t+1)間の重み係数が小数点精度で0.60であり、固定小数点精度が1(1<<1)である場合、重み係数は1(つまり、重み係数の小数点精度0.50に該当)が設定される可能性が高い。この場合、重み係数の小数点精度は、最適な値である0.60から0.10ずれているため、動き評価部109は、この分の補正値を画素の最大値から計算し、オフセット値として設定する。画素の最大値が255である場合、動き評価部109は、25(255×0.1)などの値を設定すればよい。
なお第1実施形態では、符号化装置100の一機能として動き評価部109を例示しているが、動き評価部109は符号化装置100の必須の構成ではなく、例えば、動き評価部109を符号化装置100外の装置としてもよい。この場合、動き評価部109で算出された動き情報及びWPパラメータ情報を符号化装置100にロードするようにすればよい。
インデックス設定部108は、動き評価部109から入力されたWPパラメータ情報を受け取り、参照リスト(リスト番号)と参照画像(参照番号)とを確認して、インデックス情報を出力し、インデックス設定部108に入力する。
図8は、第1実施形態のインデックス設定部108の構成の一例を示すブロック図である。インデックス設定部108は、図8に示すように、参照画像確認部401と、インデックス生成部402とを、備える。
参照画像確認部401は、動き評価部109から入力されたWPパラメータ情報を受け取り、2つの参照リストに含まれる参照番号が互いに同一の参照画像を指しているWPパラメータがあるかどうかを確認する。そして参照画像確認部401は、WPパラメータ情報のうち同一の参照画像を指しているWPパラメータを削除し、削除後のWPパラメータ情報を出力し、インデックス生成部402に入力する。
インデックス生成部402は、参照画像確認部401から冗長なWPパラメータが削除されたWPパラメータ情報を受け取り、後述するシンタクス要素にマッピングを行ってインデックス情報を生成する。インデックス生成部402は、インデックス情報を出力し、符号化部110に入力する。
図9A及び図9Bは、第1実施形態のWPパラメータ情報の一例を示す図である。P−
slice時のWPパラメータ情報の一例は、図9Aに示すとおりであり、B−slice時のWPパラメータ情報の一例は、図9A及び図9Bに示すとおりである。リスト番号は、予測方向を示す識別子であり、単方向予測時は0の値を取り、双方向予測時は2種類の予測を用いることができるため、0と1の2つの値を取る。参照番号は、フレームメモリ206に示される1〜Nに対応する値である。WPパラメータ情報は、参照リストと参照画像毎に保持されるため、B−slice時で必要な情報は、参照画像がN個とすると2N個となる。参照画像確認部401は、これらのWPパラメータ情報を再変換し、冗長なWPパラメータを削除する。
図10は、第1実施形態の低遅延符号化構造における符号化順と表示順(POC:Pciture Order Count)の一例を示す図であり、参照画像となることが可能なB−sliceをrB−sliceとして用いた符号化構造の例を示している。低遅延符号化構造では、画像の先読みが出来ないため、符号化順と表示順が同一となる。ここでは、表示順でフレーム0〜3までが符号化済みとし、フレーム4を符号化することを考える。
図11は、第1実施形態の低遅延符号化構造における参照画像と参照番号との関係の一例を示す図であり、フレーム4を符号化する場合の参照画像と参照番号との関係を簡略化したWPパラメータ情報で示している。図11に示す例では、参照リスト内の参照番号の順序がリスト0とリスト1とで同一となっており、リスト0とリスト1との参照画像が同一であることを意味している。
図12は、第1実施形態のランダムアクセス符号化構造における符号化順と表示順の一例を示す図であり、ここでは、表示順でフレーム0、2、4、8が符号化済みであり、フレーム1を符号化することを考える。
図13は、第1実施形態のランダムアクセス符号化構造における参照画像と参照番号との関係の一例を示す図であり、フレーム1を符号化する場合の参照画像と参照番号との関係を簡略化したWPパラメータ情報で示している。図13に示す例では、参照リスト別の参照番号の順序はそれぞれ異なっているが、リスト0とリスト1とには、共通の4つの参照画像が含まれており、リスト0とリスト1との参照画像が同一であることを意味している。
参照画像確認部401は、冗長なWPパラメータ、即ち、2つの参照リストに含まれる参照番号が互いに同一の参照画像を指しているWPパラメータを削除するため、参照番号を並び替え、共通の新しいインデックスに変換する。
図14は、第1実施形態の参照画像のリスト番号及び参照番号のスキャン順序の一例を示す図である。参照画像確認部401は、図14に示すスキャン順で、2次元の参照リスト(2つの参照リスト)を1次元の共通リスト(1つの共通リスト)に変換する。具体的には、参照画像確認部401は、図14に示すスキャン順で、図9A及び図9Bに示すWPパラメータ情報を読み込むことにより、2つの参照リストを共通リストに並び替え、冗長なWPパラメータを削除する。ここでは、参照画像確認部401は、数式(10)に示す疑似コードに従って、WPパラメータ情報を読み込む。
for (scan=0; scan<=num_of_common_active_ref_minus1; scan++){
list = common_scan_list(scan)
ref_idx = common_scan_ref_idx(scan)
refPOC = RefPicOrderCount(list, ref_idx)
identical_ref_flag=false;
for (curridx=0; curridx<=num_of_common_active_ref_minus1; curridx++){
if( refPOC == CommonRefPicOrderCount(curridx) ){
identical_ref_flag=true;
}
}
if(!identical_ref_flag)
InsertCommonRefPicOrderCount(scan, refPOC);
} …(10)
ここで、common_scan_list()は、図14のスキャン番号に対応するリスト番号を返す関数である。common_scan_ref_idx()は、図14のスキャン番号に対応する参照番号を返す関数である。RefPicOrderCnt()は、リスト番号及び参照番号に対応するPOC番号を返す関数である。POC番号は、参照画像の表示順を示す番号である。但し、POC番号は、予め定められた最大数を超える場合、初期値にマッピングされる。例えば、POC番号の最大値が255である場合、256に対応するPOC番号は0となる。CommonRefPicOrderCount()は、共通リスト(CommonList)の参照番号に対応するPOC番号を返す関数である。InsertCommonRefPicOrderCount()は、スキャン番号に対応するPOC番号を、共通リスト(CommonList)に挿入する関数である。
なお、図14に示すスキャン順序は一例であり、予め定めたスキャン順序であればこれ以外のスキャン順序を用いてもよい。また、数式(10)で示した疑似コードは一例であり、本処理の目的を実現できれば処理の追加や冗長な処理の削減も可能である。
図15及び図16は、第1実施形態における共通リスト変換後のWPパラメータ情報の一例を簡略化して示した図である。図15は、図11に示す参照リストのWPパラメータ情報を変換した共通リストのWPパラメータ情報を簡略化して示しており、図16は、図13に示す参照リストのWPパラメータ情報を変換した共通リストのWPパラメータ情報を簡略化して示している。
図17は、第1実施形態のインデックス設定部108で実行されるインデックス情報の生成処理の一例を示すフローチャートである。
参照画像確認部401は、WPパラメータ情報が入力されると、スライスタイプに従って処理を分岐する(ステップS101)。
スライスタイプが1つの参照リストのみを用いる単方向予測スライス(P−slice)である場合には(ステップS101でNo)、参照画像確認部401は、図9Aに示すWPパラメータ情報をそのままインデックス生成部402へ出力する。インデックス生成部402は、参照画像確認部401から入力されたWPパラメータ情報を後述する予め定められたシンタクス要素にマッピングしてインデックス情報を生成し、出力する。
一方、スライスタイプが2つの参照リストを用いる双方向予測スライス(B−slice)である場合には(ステップS101でYes)、参照画像確認部401は、変数scanを0に初期化する(ステップS102)。変数scanは、図14のスキャン番号を示す。
続いて、参照画像確認部401は、変数scanを用いて、スキャン番号に対応するリスト番号を示す変数listを取得するとともに(ステップS103)、スキャン番号に対応する参照番号を示す変数refIdxを取得する(ステップS104)。
続いて、参照画像確認部401は、変数listが示すリスト番号及び変数refIdxが示す参
照番号に対応する参照画像のPOC番号を示す変数refPOCを導出する(ステップS105)。
続いて、参照画像確認部401は、フラグidentical_ref_flagをfalseに設定するとともに(ステップS106)、変数curridxを0に設定する(ステップS107)。フラグidentical_ref_flagは、共通リストに同一の参照画像があるか否かを示す。変数curridxは、共通リストの参照番号を示す。
続いて、参照画像確認部401は、導出した変数refPOCが示すPOC番号と変数curridxが示す参照番号に対応する参照画像のPOC番号とが同一であるかどうかを判断する(ステップS108)。
両POC番号が同一である場合(ステップS108でYes)、参照画像確認部401は、フラグidentical_ref_flagをtrueに設定する(ステップS109)。一方、両POC番号が同一でない場合(ステップS108でNo)、ステップS109の処理は行われない。
続いて、参照画像確認部401は、変数curridxをインクリメントする(ステップS110)。
続いて、参照画像確認部401は、変数curridxの値が共通リストの最大数から1を引いた値であるnum_of_common_active_ref_minus1より大きいかどうかを判断し(ステップS111)、num_of_common_active_ref_minus1以下の間(ステップS111でNo)、ステップS108〜ステップS110の処理を繰り返す。
num_of_common_active_ref_minus1より大きくなると(ステップS111でYes)、参照画像確認部401は、共通リストの確認を完了し、フラグidentical_ref_flagがfalseかどうかを更に確認する(ステップS112)。
フラグidentical_ref_flagがfalseの場合(ステップS112でYes)、参照画像確認部401は、共通リストに変数refPOCが示すPOC番号の参照画像と同一の参照画像が含まれないと判断し、変数refPOCが示すPOC番号を共通リストに追加する(ステップS113)。一方、フラグidentical_ref_flagがtrueの場合(ステップS112でNo)、参照画像確認部401は、共通リストに変数refPOCが示すPOC番号の参照画像と同一の参照画像が含まれると判断し、ステップS113の処理は行わない。
続いて、参照画像確認部401は、変数scanをインクリメントする(ステップS114)。
続いて、参照画像確認部401は、変数scanの値が共通リストの最大数から1を引いた値であるnum_of_common_active_ref_minus1より大きいかどうかを判断し(ステップS115)、num_of_common_active_ref_minus1以下であれば(ステップS115でNo)、ステップS103に戻る。一方、num_of_common_active_ref_minus1より大きければ(ステップS115でYes)、参照画像確認部401は、共通リストに変換後のWPパラメータ情報をインデックス生成部402へ出力する。インデックス生成部402は、参照画像確認部401から入力されたWPパラメータ情報を後述する予め定められたシンタクス要素にマッピングしてインデックス情報を生成し、出力する。
図1に戻り、符号化部110は、量子化部103から入力された量子化変換係数、動き評価部109から入力された動き情報、インデックス設定部108から入力されたインデ
ックス情報、及び符号化制御部111によって指定される量子化情報などの様々な符号化パラメータに対してエントロピー符号化を行い、符号化データを生成する。エントロピー符号化は、例えば、ハフマン符号化や算術符号化などが該当する。
符号化パラメータとは、予測方法などを示す予測情報、量子化変換係数に関する情報、及び量子化に関する情報などの復号に必要となるパラメータである。例えば、符号化制御部111が図示せぬ内部メモリを持ち、この内部メモリに符号化パラメータが保持され、画素ブロックを符号化する際に隣接する既に符号化済みの画素ブロックの符号化パラメータを用いるようにできる。例えば、H.264のイントラ予測では、符号化済みの隣接ブロックの予測情報から、画素ブロックの予測情報を導出することができる。
符号化部110は、生成した符号化データを、符号化制御部111が管理する適切な出力タイミングに従って出力する。出力された符号化データは、例えば、図示せぬ多重化部などで様々な情報が多重化されて、図示せぬ出力バッファなどに一時的に蓄積された後に、例えば、図示せぬ蓄積系(蓄積メディア)又は伝送系(通信回線)へ出力される。
図18は、第1実施形態の符号化装置100が利用するシンタクス500の一例を示す図である。シンタクス500は、符号化装置100が入力画像(動画像データ)を符号化して生成した符号化データの構造を示している。符号化データを復号化する場合、後述の復号装置は、シンタクス500と同一のシンタクス構造を参照して動画像のシンタクス解釈を行う。
シンタクス500は、ハイレベルシンタクス501、スライスレベルシンタクス502及びコーディングツリーレベルシンタクス503の3つのパートを含む。ハイレベルシンタクス501は、スライスよりも上位のレイヤのシンタクス情報を含む。スライスとは、フレーム若しくはフィールドに含まれる矩形領域又は連続領域を指す。スライスレベルシンタクス502は、各スライスを復号化するために必要な情報を含む。コーディングツリーレベルシンタクス503は、各コーディングツリー(即ち、各コーディングツリーブロック)を復号するために必要な情報を含む。これら各パートは、更に詳細なシンタクスを含む。
ハイレベルシンタクス501は、シーケンスパラメータセットシンタクス504、ピクチャパラメータセットシンタクス505、及びアダプテーションパラメータセットシンタクス506などのシーケンス及びピクチャレベルのシンタクスを含む。
スライスレベルシンタクス502は、スライスヘッダーシンタクス507、プレッドウェイトテーブルシンタクス508、及びスライスデータシンタクス509などを含む。プレッドウェイトテーブルシンタクス508は、スライスヘッダーシンタクス507から呼び出される。
コーディングツリーレベルシンタクス503は、コーディングツリーユニットシンタクス510、トランスフォームユニットシンタクス511、及びプレディクションユニットシンタクス512などを含む。コーディングツリーユニットシンタクス510は、四分木構造を持つことができる。具体的には、コーディングツリーユニットシンタクス510のシンタクス要素として、更にコーディングツリーユニットシンタクス510を再帰呼び出しすることができる。即ち、1つのコーディングツリーブロックを四分木で細分化することができる。また、コーディングツリーユニットシンタクス510内にはトランスフォームユニットシンタクス511が含まれている。トランスフォームユニットシンタクス511は、四分木の最末端の各コーディングツリーユニットシンタクス510において呼び出される。トランスフォームユニットシンタクス511は、逆直交変換及び量子化などに関
わる情報が記述されている。これらのシンタクスには、重み付き動き補償予測に関する情報が記述されてもよい。
図19は、第1実施形態のピクチャパラメータセットシンタクス505の一例を示す図である。weighted_pred_flagは、例えば、P−sliceに関する第1実施形態の重み付き補償予測の有効又は無効を示すシンタクス要素である。weighted_pred_flagが0である場合、P−slice内での第1実施形態の重み付き動き補償予測は無効となる。従って、WPパラメータ情報に含まれるWP適用フラグは常に0に設定され、WPセレクタ304、305は、各々の出力端をデフォルト動き補償部301へ接続する。一方、weighted_pred_flagが1である場合、P−slice内での第1実施形態の重み付き動き補償予測は有効となる。
なお、別の例として、weighted_pred_flagが1である場合には、より下位のレイヤ(スライスヘッダー、コーディングツリーブロック、トランスフォームユニット、及びプレディクションユニットなど)のシンタクスにおいて、スライス内部の局所領域毎に第1実施形態の重み付き動き補償予測の有効又は無効を規定するようにしてもよい。
weighted_bipred_idcは、例えば、B−sliceに関する第1実施形態の重み付き補償予測の有効又は無効を示すシンタクス要素である。weighted_bipred_idcが0である場合、B−slice内での第1実施形態の重み付き動き補償予測は無効となる。従って、WPパラメータ情報に含まれるWP適用フラグは常に0に設定され、WPセレクタ304、305は、各々の出力端をデフォルト動き補償部301へ接続する。一方、weighted_bipred_idcが1である場合、B−slice内での第1実施形態の重み付き動き補償予測は有効となる。
なお、別の例として、weighted_bipred_idcが1である場合には、より下位のレイヤ(スライスヘッダー、コーディングツリーブロック、及びトランスフォームユニットなど)のシンタクスにおいて、スライス内部の局所領域毎に第1実施形態の重み付き動き補償予測の有効又は無効を規定するようにしてもよい。
図20は、第1実施形態のスライスヘッダーシンタクス507の一例を示す図である。slice_typeはスライスのスライスタイプ(I−slice,P−slice,B−sliceなど)を示している。pic_parameter_set_idは、いずれのピクチャパラメータセットシンタクス505を参照するかを示す識別子である。num_ref_idx_active_override_flagは、有効な参照画像の数を更新するかどうかを示すフラグであり、本フラグが1の場合、参照リストの参照画像数を定義するnum_ref_idx_l0_active_minus1及びnum_ref_idx_l1_active_minus1が利用できる。pred_weight_table()は、重み付き動き補償予測に利用するプレッドウェイトテーブルシンタクスを示す関数であり、前述のweighted_pred_flagが1かつP−sliceの場合、及びweighted_bipred_idcが1かつB−sliceの場合に、本関数が呼び出される。
図21は、第1実施形態のプレッドウェイトテーブルシンタクス508の一例を示す図である。luma_log2_weight_denomは、スライスにおける輝度信号の重み係数の固定小数点精度を表しており、数式(7)又は数式(9)のlogWDCに対応する値である。chroma_log2_weight_denomは、スライスにおける色差信号の重み係数の固定小数点精度を表しており、数式(7)又は数式(9)のlogWDCに対応する値である。chroma_format_idcは、色空間を表す識別子であり、MONO_IDXはモノクロ映像を示す値である。num_ref_common_active_minus1は、スライスにおける共通リストに含まれる参照画像の数から1を引いた値を示し、数式(10)で用いられる。この値の最大値は、リスト0とリスト1の2つの参照画像枚数の最大値を足した値となる。
luma_weight_common_flagは、輝度信号におけるWP適応フラグを示している。本フラグが1の場合、スライス内全域で第1実施形態の輝度信号の重み付き動き補償予測が有効となる。chroma_weight_common_flagは、色差信号におけるWP適応フラグを示している。本フラグが1の場合、スライス内全域で第1実施形態の色差信号の重み付き動き補償予測が有効となる。luma_weight_common[i]は、共通リストで管理されたi番目に対応する輝度信号の重み係数である。luma_offset_common[i]は、共通リストで管理されたi番目に対応する輝度信号のオフセットである。これらは、それぞれ、数式(7)又は数式(9)のw0C、w1C、o0C、o1Cに対応する値である。但し、C=Yとする。
chroma_weight_common[i][j]は、共通リストで管理されたi番目に対応する色差信号の重み係数である。chroma_offset_common[i][j]は、共通リストで管理されたi番目に対応する色差信号のオフセットである。これらは、それぞれ、数式(7)又は数式(9)のw0C、w1C、o0C、o1Cに対応する値である。但し、C=Cr又はCbとする。jは色差成分のコンポーネントを示しており、例えばYUV4:2:0信号の場合、j=0がCr成分、j=1がCb成分であることを示す。
以上のように第1実施形態では、インデックス設定部108は、WPパラメータ情報において、リスト0及びリスト1の2つの参照リスト内に互いに同一の参照画像を含む組み合わせがある場合、2つの参照リストを共通リストへ変換することによって、WPパラメータ情報から重複する冗長なWPパラメータを削除してインデックス情報を生成する。従って、第1実施形態によれば、インデックス情報の符号量を削減することができる。
特に、重み係数及びオフセットは、参照画像毎に符号化する必要があるため、参照画像枚数の増加に従ってデコーダにシグナリングする情報量も増大するが、参照画像枚数が増加すると、参照リスト内に同一の参照画像を参照するケースが増えるため、共通リストで管理することにより大幅な符号量の削減効果が期待できる。
(第1実施形態の変形例)
第1実施形態の変形例について説明する。第1実施形態の変形例では、インデックス生成部402が用いるシンタクス要素が第1実施形態のシンタクス要素と異なる。
図22は、第1実施形態の変形例のシーケンスパラメータセットシンタクス504の一例を示す図である。profile_idcは、符号化データのプロファイルに関する情報を示す識別子である。level_idcは、符号化データのレベルに関する情報を示す識別子である。seq_parameter_set_idは、いずれのシーケンスパラメータセットシンタクス504を参照するかを示す識別子である。num_ref_framesは、フレームにおける参照画像の最大枚数を示す変数である。weighted_prediction_enabled_flagは、例えば、符号化データに関して変形例の重み付き動き補償予測の有効又は無効を示すシンタクス要素である。
weighted_prediction_enabled_flagが0である場合、符号化データ内での変形例の重み付き動き補償予測は無効となる。従って、WPパラメータ情報に含まれるWP適用フラグは常に0に設定され、WPセレクタ304、305は、各々の出力端をデフォルト動き補償部301へ接続する。一方、weighted_prediction_enabled_flagが1である場合、符号化データ内全域で変形例の重み付き動き補償予測が有効となる。
なお、別の例として、weighted_prediction_enabled_flagが1である場合には、より下位のレイヤ(ピクチャパラメータセット、アダプテーションパラメータセット、スライスヘッダー、コーディングツリーブロック、トランスフォームユニット、及びプレディクションユニットなど)のシンタクスにおいて、スライス内部の局所領域毎に変形例の重み付
き動き補償予測の有効又は無効を規定するようにしてもよい。
図23は、第1実施形態の変形例のアダプテーションパラメータセットシンタクス506の一例を示す図である。アダプテーションパラメータセットシンタクス506は、符号化フレーム全体に影響を与えるパラメータを保持しており、上位ユニットとして独立に符号化される。例えば、H.264では、ハイレベルシンタクス501に該当するシンタクス要素をNALユニットとして符号化する。このため、アダプテーションパラメータセットシンタクス506は、スライスや画素ブロックに代表される下位情報のパラメータを保持するスライスレベルシンタクス502より下位のシンタクスと符号化ユニットが異なる。
aps_idは、いずれのアダプテーションパラメータセットシンタクス506を参照するかを示す識別子である。本識別子を参照することにより、下位のスライスは、符号化済みの任意のaps_idを参照することができる。この場合、例えば、図20のスライスヘッダーシンタクス507にも同様のaps_idを付加することによって、フレーム全体に影響を与えるパラメータを読み込むことが可能となる。
aps_weighted_prediction_flagは、例えば、フレームにおけるP−sliceに関する変形例の重み付き動き補償予測の有効又は無効を示すシンタクス要素である。aps_weighted_prediction_flagが0である場合、フレーム内におけるP−sliceでの変形例の重み付き動き補償予測は無効となる。従って、WPパラメータ情報に含まれるWP適用フラグは常に0に設定され、WPセレクタ304、305は、各々の出力端をデフォルト動き補償部301へ接続する。一方、aps_weighted_prediction_flagが1である場合、当該フレーム内全域で変形例の重み付き動き補償予測が有効となる。
なお、別の例として、aps_weighted_prediction_flagが1である場合には、より下位のレイヤ(スライスヘッダー、コーディングツリーブロック、トランスフォームユニット、及びプレディクションユニットなど)のシンタクスにおいて、スライス内部の局所領域毎に変形例の予測の重み付き動き補償予測の有効又は無効を規定するようにしてもよい。
aps_weighted_bipred_idxは、例えば、フレームにおけるB−sliceに関する変形例の重み付き動き補償予測の有効又は無効を示すシンタクス要素である。aps_weighted_bipred_idxが0である場合、フレーム内におけるP−sliceでの変形例の重み付き動き補償予測は無効となる。従って、WPパラメータ情報に含まれるWP適用フラグは常に0に設定され、WPセレクタ304、305は、各々の出力端をデフォルト動き補償部301へ接続する。一方、aps_weighted_bipred_idxが1である場合、当該フレーム内全域で変形例の重み付き動き補償予測が有効となる。
なお、別の例として、aps_weighted_bipred_idxが1である場合には、より下位のレイヤ(スライスヘッダー、コーディングツリーブロック、トランスフォームユニット、及びプレディクションユニットなど)のシンタクスにおいて、スライス内部の局所領域毎に変形例の予測の重み付き動き補償予測の有効又は無効を規定するようにしてもよい。
pred_weight_table()は、重み付き動き補償予測に利用するプレッドウェイトテーブルシンタクスを示す関数であり、前述のaps_weighted_prediction_flagが1の場合、又はaps_weighted_bipred_idxが1の場合に、本関数が呼び出される。
図24は、第1実施形態の変形例のプレッドウェイトテーブルシンタクス508の一例を示す図である。第1実施形態の変形例では、図18のシンタクス構造において、アダプテーションパラメータセットシンタクス506からプレッドウェイトテーブルシンタクス
508が呼び出される。図21のプレッドウェイトテーブルシンタクス508との違いは、num_ref_common_active_minus1が、MAX_COMMON_REF_MINUS1に変更されている点である。参照画像の枚数は、スライスヘッダーシンタクス507で記述されているため、上位レイヤであるアダプテーションパラメータセットシンタクス506では参照することが出来ない。このため、例えばシーケンスパラメータセットシンタクス504に記述されているnum_ref_framesの値から1を引いた値をMAX_COMMON_REF_MINUS1にセットする。また、予め定めたプロファイル又はレベルに応じて最大の参照画像枚数を取れる値を定めておいてもよい。なお、他のシンタクス要素は図21と同一である。
以上のように第1実施形態の変形例によれば、プレッドウェイトテーブルシンタクス508をアダプテーションパラメータセットシンタクス506から呼び出す構造とすることにより、1フレームを複数のスライスに分割した際のWPパラメータ情報の符号量を大幅に削減することができる。
例えば、利用する3種類の異なるWPパラメータ情報を持つアダプテーションパラメータセットシンタクス506を先に符号化しておき、スライスヘッダーシンタクス507が、状況に応じてaps_idを用いて、必要なWPパラメータ情報を呼び出すことにより、スライスヘッダーシンタクス507でWPパラメータ情報を常に符号化する構成よりも、符号量を削減できる。
(第2実施形態)
第2実施形態について説明する。第2実施形態の符号化装置600では、インデックス設定部608の構成が第1実施形態の符号化装置100と相違する。以下では、第1実施形態との相違点の説明を主に行い、第1実施形態と同様の機能を有する構成要素については、第1実施形態と同様の名称・符号を付し、その説明を省略する。
図25は、第2実施形態のインデックス設定部608の構成の一例を示すブロック図である。インデックス設定部608は、図25に示すように、再利用判定部601と、インデックス生成部602とを、備える。
再利用判定部601は、リスト1の参照番号をリスト0の参照番号と照合し、リスト0のWPパラメータ情報をリスト1のWPパラメータ情報として再利用するかどうかを判定する。2つの参照リスト間で同一の参照画像が含まれており、かつ対応するWPパラメータ情報の値が同一である場合、リスト0だけでなく、リスト1でも同じ情報を符号化すると符号量の増大を招く。このため、再利用判定部601は、リスト0のWPパラメータ情報を再利用する。
具体的には、再利用判定部601は、リスト0のWPパラメータ情報を再利用する場合は再利用フラグを1とし、参照先(リスト0)の参照番号を参照情報として設定する。一方、再利用判定部601は、リスト0のWPパラメータ情報を再利用しない場合は再利用フラグを0とし、リスト1の参照番号に対応するWPパラメータ情報をシンタクスにセットする。
再利用判定部601は、例えば、数式(11)に示す疑似コードに従って、リスト0のWPパラメータ情報をリスト1のWPパラメータ情報として再利用するかどうかを判定する。
for (refIdx=0; refidx<=num_of_active_ref_l1_minus1; refIdx++){
refPOC = RefPicOrderCnt(ListL1, refIdx)
refWP = RefWPTable(ListL1, refIdx)
reuse_wp_flag=false;
reuse_ref_idx=0;
for (curridx=0; curridx<= num_of_active_ref_l0_minus1; curridx++){
if( refPOC == RefPicOrderCnt(ListL0, curridx)
&& RefWPTable(ListL0, curridx,refWP) ){
reuse_wp_flag=true;
reuse_ref_idx=curridx;
}
}
} …(11)
ここで、ListL0は、リスト0を示し、ListL1はリスト1を示す。RefWPTable()は、リスト番号、参照番号、及び参照用WPパラメータを入力すると、入力された参照用WPパラメータが入力されたリスト番号及び参照番号に対応するWPパラメータと一致しているかどうかをフラグで返す関数である。フラグの値が1の場合は、両WPパラメータが一致していることを示す。数式(11)に示す疑似コードでは、リスト1の参照番号を順にスキャンし、リスト0の中に同一のPOC番号の参照画像が存在した場合に、WPパラメータが同一であれば、再利用フラグを示すreuse_wp_flagをtureに設定するとともに、リスト0の対応する参照番号をreuse_ref_idxに設定する。
再利用判定部601は、再利用判定後の(再利用の設定を行った)WPパラメータ情報を出力し、インデックス生成部602に入力する。
インデックス生成部602は、再利用判定部601から再利用判定後のWPパラメータ情報を受け取り、後述するシンタクス要素にマッピングを行ってインデックス情報を生成する。なお、インデックス生成部602がマッピングを行うシンタクス要素は、第1実施形態と異なる。インデックス生成部602は、インデックス情報を出力し、符号化部110に入力する。
図26は、第2実施形態のインデックス設定部608で実行されるインデックス情報の生成処理の一例を示すフローチャートである。
再利用判定部601は、WPパラメータ情報が入力されると、スライスタイプに従って処理を分岐する(ステップS201)。
スライスタイプが1つの参照リストのみを用いる単方向予測スライス(P−slice)である場合には(ステップS201でNo)、再利用判定部601は、図9Aに示すWPパラメータ情報をそのままインデックス生成部602へ出力する。インデックス生成部602は、再利用判定部601から入力されたWPパラメータ情報を後述する予め定められたシンタクス要素にマッピングしてインデックス情報を生成し、出力する。
一方、スライスタイプが2つの参照リストを用いる双方向予測スライス(B−slice)である場合には(ステップS201でYes)、再利用判定部601は、変数refIdcを0に初期化する(ステップS202)。変数refIdcは、リスト1の参照番号を示す。
続いて、再利用判定部601は、変数refIdxが示す参照番号に対応する参照画像のPOC番号を示す変数refPOCを導出するとともに(ステップS203)、変数refIdxが示す参照番号に対応するWPパラメータを導出する(ステップS204)。
続いて、再利用判定部601は、フラグreuse_wp_flagをfalseに設定するとともに(ス
テップS205)、変数curridxを0に設定する(ステップS206)。フラグreuse_wp_flagは、リスト0とリスト1のWPパラメータが同一であるか否かを示す。変数curridxは、リスト0の参照番号を示す。
続いて、再利用判定部601は、導出した変数refPOCが示すPOC番号と変数curridxが示す参照番号に対応する参照画像のPOC番号とが同一であり、かつ変数refIdxが示す参照番号に対応するWPパラメータと変数curridxが示す参照番号に対応するWPパラメータとが同一であるかを判断する(ステップS207)。
両POC番号及び両WPパラメータが同一である場合(ステップS207でYes)、再利用判定部601は、フラグreuse_wp_flagをtrueに設定するとともに(ステップS208)、変数reuse_ref_idxに変数curridxの値を代入する(ステップS209)。一方、両POC番号又は両WPパラメータが同一でない場合(ステップS207でNo)、ステップS208、S209の処理は行われない。なお、POC番号の一致を確認しない構成としてもよい。
続いて、再利用判定部601は、変数curridxをインクリメントする(ステップS210)。
続いて、再利用判定部601は、変数curridxの値がリスト0の最大数から1を引いた値であるnum_of_active_ref_l0_minus1より大きいかどうかを判断し(ステップS211)、num_of_active_ref_l0_minus1以下の間(ステップS211でNo)、ステップS207〜ステップS210の処理を繰り返す。
num_of_active_ref_l0_minus1より大きくなると(ステップS211でYes)、再利用判定部601は、リスト0の確認を完了し、変数refIdxをインクリメントする(ステップS212)。
続いて、再利用判定部601は、変数refIdxの値がリスト1の最大数から1を引いた値であるnum_of_active_ref_l1_minus1より大きいかどうかを判断し(ステップS213)、num_of_active_ref_l1_minus1以下の間(ステップS213でNo)、ステップS203〜ステップS212の処理を繰り返す。
num_of_active_ref_l1_minus1より大きくとなると(ステップS213でYes)、再利用判定部601は、リスト1の確認を完了し、再利用判定後のWPパラメータ情報をインデックス生成部602へ出力する。インデックス生成部602は、再利用判定部601から入力されたWPパラメータ情報を後述する予め定められたシンタクス要素にマッピングしてインデックス情報を生成し、出力する。
図27は、第2実施形態のプレッドウェイトテーブルシンタクス506の一例を示す図である。図27に示すシンタクス要素のうち、l0、l1の記号があるものは、それぞれ、リスト0、1に対応する。また、接頭語が図21と同じシンタクス要素は、共通リストではなくリスト0又はリスト1の違いがあるが、参照リストの扱いが異なる以外は同一の変数として利用する。例えば、luma_weight_l0[i]は、参照リストl0における参照番号i番目の重み係数を表すシンタクス要素である。
luma_log2_weight_denom及びchroma_log2_weight_denomは、第1実施形態と同じ構成となっている。まず、l0の記号のあるリスト0に対して、luma_weight_l0_flag、luma_weight_l0[i]、luma_offset_l0[i]、chroma_weight_l0_flag、chroma_weight_l0[i][j]、及びchroma_offset_l0[i][j]が定義されている。次に、l1の記号のあるリスト1に関するシン
タクス要素が定義されている。
ここで、reuse_wp_flagは、リスト0に対応するl0のWPパラメータを再利用するかどうかを示すシンタクス要素である。reuse_wp_flagが1の場合、重み係数及びオフセットは符号化されずに、reuse_ref_idxが符号化される。reuse_ref_idxは、リスト0に対応するl0のどの参照番号に対応するWPパラメータを利用するかを示す。例えば、reuse_ref_idxが1である場合、リスト0の参照番号1に対応するWPパラメータがリスト1の参照番号iに対応するWPパラメータにコピーされる。reuse_wp_flagが0の場合、リスト0と同様、luma_weight_l1_flag、luma_weight_l1[i]、luma_offset_l1[i]、chroma_weight_l1_flag、chroma_weight_l1[i][j]、及びchroma_offset_l1[i][j]が符号化される。
以上のように第2実施形態では、インデックス設定部608は、WPパラメータ情報において、リスト0及びリスト1の2つの参照リスト内に互いに同一の参照画像を含む組み合わせがある場合、重複するWPパラメータを再利用することにより、WPパラメータ情報から重複する冗長なWPパラメータを削除してインデックス情報を生成する。従って、第2実施形態によれば、インデックス情報の符号量を削減することができる。
第2実施形態では、リスト0に対応するWPパラメータ情報は従来通り符号化し、リスト1に対応するWPパラメータ情報を符号化する際には、リスト0内で同じ参照画像を参照するかどうかをチェックし、同じ参照画像を参照し、WPパラメータも同一である場合には、リスト0のWPパラメータを再利用するフラグを符号化するとともに、リスト0のどの参照番号に対応するかを示す情報を符号化する。これらの情報は、重み係数及びオフセットに関する情報量よりも格段に少ない情報であるため、リスト0及びリスト1を別々に符号化する場合と比較して、WPパラメータ情報の符号量を大幅に削減できる。
また、第2実施形態では、リスト0及びリスト1に含まれる参照番号が同一の参照画像を指しており、且つWPパラメータが異なる場合、異なるWPパラメータを設定することが可能である。つまり、参照リスト内に同一の参照画像を指す組み合わせがあった場合、第1実施形態では、強制的に同一のWPパラメータを設定し、第2実施形態では、WPパラメータが同一の場合のみ、同じWPパラメータの冗長な表現を削除する。
(第3実施形態)
第3実施形態について説明する。図28は、第3実施形態の符号化装置700の構成の一例を示すブロック図である。第3実施形態の符号化装置700は、動き情報メモリ701、動き情報取得部702、及び切替スイッチ703を更に備えている点で、第1実施形態の符号化装置100と相違する。以下では、第1実施形態との相違点の説明を主に行い、第1実施形態と同様の機能を有する構成要素については、第1実施形態と同様の名称・符号を付し、その説明を省略する。
動き情報メモリ701は、符号化が終了した画素ブロックに適用された動き情報を、参照動き情報として一時的に格納する。動き情報メモリ701では、動き情報に対してサブサンプリングなどの圧縮処理を行い、情報量を削減しても構わない。
図29は、第3実施形態の動き情報メモリ701の詳細例を示す図である。動き情報メモリ701は、図29に示すように、フレーム又はスライス単位で保持されており、同一フレーム上の動き情報を参照動き情報710として格納する空間方向参照動き情報メモリ701A、及び、既に符号化が終了したフレームの動き情報を参照動き情報710として格納する時間方向参照動き情報メモリ701Bを更に有する。時間方向参照動き情報メモリ701Bは、符号化対象フレームが予測に用いる参照フレームの数に応じて複数有しても構わない。
参照動き情報710は、所定の領域単位(例えば、4×4画素ブロック単位)で空間方向参照動き情報メモリ701A及び時間方向参照動き情報メモリ701B内に保持される。参照動き情報710は、その領域が後述するインター予測で符号化されたのか又は後述するイントラ予測で符号化されたのかを示す情報をさらに有する。また、画素ブロック(コーディングユニット又はプレディクションユニット)がH.264で規定されるスキップモード、ダイレクトモード又は後述するマージモードのように、動き情報内の動きベクトルの値が符号化されず、符号化済みの領域から予測された動き情報を用いてインター予測される場合においても、当該画素ブロックの動き情報が参照動き情報710として保持される。
符号化対象のフレーム又はスライスの符号化処理が終了したら、当該フレームの空間方向参照動き情報メモリ701Aは、次に符号化処理を行うフレームに用いる時間方向参照動き情報メモリ701Bとしてその扱いが変更される。この際、時間方向参照動き情報メモリ701Bのメモリ容量を削減するために、動き情報を圧縮し、圧縮された動き情報を時間方向参照動き情報メモリ701Bに格納しても構わない。
動き情報取得部702は、動き情報メモリ701から参照動き情報が入力され、符号化画素ブロックに用いる動き情報Bを出力する。動き情報取得部702の詳細は後述する。
切替スイッチ703は、後述する予測モード情報に従って動き情報取得部702から出力される動き情報Bと動き評価部109から出力される動き情報Aの内、いずれかを選択して動き情報として予測画像生成部107に出力する。動き評価部109から出力される動き情報Aは、図示せぬ予測動きベクトル取得部から取得する予測動きベクトルとの差分情報や、予測動きベクトル取得位置情報を符号化する。このような予測モードを以降インターモードと称する。一方、予測モード情報に従って動き情報取得部702から出力される動き情報Bは、隣接する画素ブロックから動き情報をマージして、符号化画素ブロックに対してそのまま適用されるため、その他の動き情報に関する情報(例えば、動きベクトル差分情報)の符号化は不要である。以降、このような予測モードをマージモードと称する。
予測モード情報は、符号化制御部111が制御する予測モードに従っており、切替スイッチ703の切替情報を含む。
以下、動き情報取得部702の詳細について説明する。
動き情報取得部702は、参照動き情報を入力として、動き情報Bを切替スイッチ703に出力する。図30A及び図30Bは、第3実施形態の符号化画素ブロックに対する動き情報候補を導出するブロック位置の一例を示す図である。図30AにおけるA〜Eは、符号化画素ブロックに動き情報候補を導出する空間的に隣接する画素ブロック、図30BにおけるTは、動き情報候補を導出する時間的に隣接する画素ブロックを示している。
図31は、第3実施形態の複数の動き情報候補の画素ブロック位置と画素ブロック位置インデクス(idx)との関係の一例を示す図である。動き情報候補のブロック位置は、空間的に隣接するブロック位置(A〜E)、時間的に隣接する画素ブロック位置(T)の順序で並べられ、当該順序でAvailable(インター予測が適用されている)な画素ブロックがあれば、マージモードの格納リストMergeCandListへ格納する動き情報の最大数(N−1)に達するまで順次idxが割り当てられる。
図32は、第3実施形態のMergeCandListへの格納処理の一例を示すフローチャートで
ある。
まず、動き情報取得部702は、MergeCandListへの格納数numMergeCandを0で初期化する(ステップS301)。
続いて、動き情報取得部702は、全ての空間隣接ブロック(例えば、ブロックA〜E)に対して、Availableであるか否かを判定する(ステップS302、S303)。Availableである場合(ステップS303でYes)、動き情報取得部702は、MergeCandListに当該空間隣接ブロックの動き情報を格納し、numMergeCandをインクリメントする(ステップS304)。Availableでない場合(ステップS303でNo)、動き情報取得部702は、ステップS304の処理を行わない。
動き情報取得部702は、全ての空間隣接ブロックに対してステップS303、S304の処理を実行すると(ステップS305)、時間隣接ブロック(例えばブロックT)に対して、Availableであるか否かを判定する(ステップS306)。
Availableである場合(ステップS306でYes)、動き情報取得部702は、MergeCandListに当該時間隣接ブロックTの動き情報を格納し、numMergeCandをインクリメントする(ステップS307)。Availableでない場合(ステップS306でNo)、動き情報取得部702は、ステップS307の処理を行わない。
続いて、動き情報取得部702は、MergeCandList内で重複する動き情報を削除し、削除した数だけnumMergeCandをデクリメントする(ステップS308)。MergeCandList内で重複する動き情報か否かを判定するために、MergeCandList内の2種類の動き情報(動きベクトルmv,参照番号refIdx)及びWPパラメータ情報が一致しているかを判定し、全ての情報が一致している場合には、一方をMergeCandList[]から削除する。
図33は、第3実施形態の動き情報の格納リストの一例を示す図であり、詳細には、N=5として図31に示す表に従った、各idxに対応する動き情報(動きベクトルmv,参照番号refIdx)の格納リスト(MergeCandList[idx])の一例を示している。図33において、idx=0は、リスト0の参照動き情報(動きベクトルmv0L0,参照番号refIdx0L0)、idx=1は、リスト1の参照動き情報(動きベクトルmv1L1,参照番号refIdx1L1)、idx=2〜4は、リスト0及びリスト1の両方の参照動き情報(動きベクトルmv2L0,mv2L1,参照番号refIdx2L0,refIdx2L1)が格納されている。
符号化画素ブロックは、最大N種類のidxのうちいずれかを選択し、選択したidxに対応する画素ブロックの参照動き情報をMergeCandList[idx]から導出し、動き情報Bとして出力する。なお符号化画素ブロックは、参照動き情報が存在しない場合、ゼロベクトルを有する動き情報を、予測動き情報候補Bとして出力する。選択したidxの情報(後述するシンタクスmerge_idx)は予測モード情報に含まれ、符号化部110において符号化される。
なお、空間及び時間的に隣接するブロックは図30A及び図30Bに限らず、既に符号化済みの領域であればいずれの位置でも構わない。また、上記リストの別の例として、MergeCandListへの格納最大数(N)や順序は、上述の限りではなく任意の順序・最大数を用いても構わない。
符号化スライスがBスライスであって、空間・時間的に隣接する画素ブロックの参照動き情報をMergeCandList[]へ格納しても格納最大数(N)に達しなかった場合には、その時点でMergeCandList[]に格納されているリスト0及びリスト1の動き情報を相互に組み合
わせて、新たに双方向予測を生成しMergeCandList[]に格納する。
図34は、第3実施形態の動き情報の格納リストへの格納方法の一例を示すフローチャートである。
まず、動き情報取得部702は、空間・時間的に隣接する画素ブロックからのMergeCandListへの格納数をnumInputMergeCandとし、現在の格納数を示す変数numMergeCandをnumInputMergeCandで初期化するとともに、変数combIdx及びcombCntを0で初期化する(ステップS401)。
続いて、動き情報取得部702は、新たに生成する双方向予測の組み合わせ(図35参照)を用いて、combIdxから変数l0CandIdx,変数l1CandIdxを導出する(ステップS402)。なお、combIdxから変数l0CandIdx,変数l1CandIdxを導出する組み合わせは、図36に示す例に限らず、重複しなければ任意の順序に並び替えても構わない。
続いて、動き情報取得部702は、MergeCandList[l0CandIdx]に格納されている参照動き情報(双方向予測の場合はリスト0及びリスト1の2種類)をl0Candに設定する。l0Candにおける参照番号をrefIdxL0l0Cand、動きベクトルをmvL0l0Candと称する。同様に、動き情報取得部702は、MergeCandList[l1CandIdx]に格納されている参照動き情報をl1Candに設定する。l1Candにおける参照番号をrefIdxL1l1Cand、動きベクトルをmvL1l1Candと称する(ステップS403)。リスト0の動き情報としてl0Cand、リスト1の動き情報としてL1Candを用いて双方向予測を行う動き情報の組み合わせをcombCandと称する。
続いて、動き情報取得部702は、条件式(12)〜(15)を用いて、l0Candとl1Candが参照するブロックを同一であるか否かを判定する(ステップS404)。
l0Cand,l1CandがAvailableか? …(12)
RefPicOrderCnt(refIdxL0l0Cand,L0)!=RefPicOrderCnt(refIdxL1l1Cand,L1) …(13)
mvL0l0Cand!=mvL1l1Cand …(14)
WpParam(refIdxL0l0Cand,L0)!=WpParam(refIdxL1l1Cand,L1) …(15)
RefPicOrderCnt(refIdx,LX)は、参照リストX(X=0,1)において、参照番号refIdxが対応する参照フレームのPOC(Picture Order Count)を導出する関数である。WpParam(refIdx,LX)は、参照リストX(X=0,1)において、参照番号refIdxが対応する参照フレームのWPパラメータ情報を導出する関数である。この関数は、リスト0の参照フレームとリスト1の参照フレームが、同一のWPパラメータ(WPの有無WP_flag、重み係数Weight、オフセットOffset)ではない場合はYes、完全に同一のパラメータである場合にはNoを返す。WpParam()の別の例として、全てのパラメータの一致を確認する必要はなく、WPの有無WP_flag及びオフセットOffsetのみの一致を確認するなど、WPパラメータの一部のデータのみを用いて判定を行ってもよい。
条件式(12)を満たし、かつ条件式(13)〜(15)の何れかを満たす場合には(ステップS404でYes)、動き情報取得部702は、mergeCandList[]内でl0Candとl1Candと同一の組み合わせを用いる双方向予測があるか否かを判定する(ステップS405)。
mergeCandList[]内でl0Candとl1Candと同一の組み合わせがない場合(ステップS405でYes)、動き情報取得部702は、当該combCandをmergeCandListの最後尾に追加する(ステップS406)。具体的には、動き情報取得部702は、combCandをmergeCandList[numMergeCand]に代入し、numMergeCand及びcombCntをインクリメントする。
続いて、動き情報取得部702は、combIdxをインクリメントする(ステップS407)。
続いて、動き情報取得部702は、条件式(16)〜(18)を用いて、mergeCandList[]への格納を終了するか否かを判定する(ステップS408)。
combIdx == numInputMergeCand*(numInputMergeCand?1)) …(16)
numMergeCand == maxNumMergeCand …(17)
combCnt == N …(18)
条件式(16)〜(18)の何れかを満たす場合には(ステップS408でYes)、処理は終了となり、条件式(16)〜(18)の何れも満たす場合には(ステップS408でNo)、ステップS402へ戻る。
以上が、符号化スライスがBスライスであって、空間・時間的に隣接する画素ブロックの参照動き情報をMergeCandList[]へ格納しても格納最大数(N)に達しなかった場合の処理の説明である。以上により、動き情報取得部702から動き情報Bが切替スイッチ703に出力される。
図36は、第3実施形態のプレッドユニットシンタクス512の一例を示す図である。skip_flagは、プレディクションユニットシンタクスが属するコーディングユニットの予測モードがスキップモードであるか否かを示すフラグである。skip_flagが1である場合、予測モード情報以外のシンタクス(コーディングユニットシンタクス、プレディクションユニットシンタクス、トランスフォームユニットシンタクス)を符号化しないことを示す。skip_flagが0である場合、プレディクションユニットシンタクスが属するコーディングユニットの予測モードがスキップモードではないことを示す。
次に符号化画素ブロック(プレディクションユニット)がマージモードであるか否かを示すフラグであるmerge_flagが符号化される。Merge_flagは、値が1である場合、プレディクションユニットがマージモードであることを示し、値が0である場合、プレディクションユニットがインターモードを用いることを示す。Merge_flagの場合、前述の画素ブロック位置インデクス(idx)を特定する情報であるmerge_idxが符号化される。
Merge_flagが1である場合、merge_flag、merge_idx以外のプレディクションユニットシンタクスは符号化する必要はなく、Merge_flagが0である場合、プレディクションユニットがインターモードであることを示す。
以上のように第3実施形態では、符号化装置700は、重み付き動き補償とマージモードを同時に適用するにあたって、空間・時間的に隣接する画素ブロックの参照動き情報をマージモードの格納リスト(MergeCandList)内の重複する動き情報を削除する際に、動きベクトル及び参照番号が一致しても、WPパラメータ情報が異なる場合に、MergeCandListから削除されてしまう問題を解消する。また、MergeCandListへ格納しても格納最大数(N)に達しなかった場合に、その時点でMergeCandListに格納されているリスト0及びリ
スト1の動き情報を相互に組み合わせて、新たに双方向予測を生成し、MergeCandList[]に格納する際に、双方向予測に用いる2種類の動き情報が同一のブロックを参照する問題を解消する。
双方向予測に用いる2種類の動き情報が同一のブロックを参照する場合には、双方向予測による予測値と単方向予測による予測値の値が一致する。一般に双方向予測の予測効率は単方向予測の予測効率より高いために、双方向予測に用いる2種類の動き情報が同一のブロックを参照しないことが望ましい。符号化装置700は、双方向予測に用いる2種類の動き情報が同一のブロックを参照するか否かを判定する際に、動きベクトル、参照番号から導出される参照フレーム番号位置(POC)の他に、重み付き動き補償のパラメータを判定項目に導入する。これにより、符号化装置700は、動きベクトルと参照フレーム番号位置(POC)が同一であっても、重み付き動き補償のパラメータの異なる2種類の動き情報は同一のブロックを参照しないと判定し、マージモードの格納リストに格納される双方向予測に用いる動き情報の予測効率を向上させることができる。
なお、MergeCandListへの格納処理の別の例として、時間隣接ブロックTの動き情報をMergeCandListに格納する際に、時間隣接ブロックTの参照フレームにおけるWPパラメータと符号化画素ブロックの参照フレームにおけるWPパラメータが一致しているかを判定し、WPパラメータが一致している場合のみ、MergeCandListに格納するようにしてもよい。これは、時間隣接ブロックTの参照フレームにおけるWPパラメータと符号化画素ブロックの参照フレームにおけるWPパラメータが異なる場合には、時間隣接ブロックTと符号化画素ブロックで動き情報の相関が低下すると推測できるためである。
図37は、第3実施形態のMergeCandListへの格納処理の他の例を示すフローチャートである。図38に示すフローチャートは、ステップS507を除き、図32に示すフローチャートと同一である。
また、更に別の例として、時間隣接ブロックTの参照フレームにおけるWPパラメータと符号化画素ブロックの参照フレームにおけるWPパラメータが異なる場合には、ブロックTに空間的に隣接するブロックのうち、符号化画素ブロックの参照フレームにおけるWPパラメータが同一となるブロックをブロックTと置き換えてもよい。この時、時間隣接ブロックTと符号化画素ブロックで動き情報の相関は低下しない。
(第4実施形態)
第4実施形態では、第1実施形態の符号化装置で符号化された符号化データを復号する復号装置について説明する。
図38は、第4実施形態の復号装置800の構成の一例を示すブロック図である。
復号装置800は、図示せぬ入力バッファなどに蓄積された符号化データを復号画像に復号し、出力画像として図示せぬ出力バッファに出力する。符号化データは、例えば、図1の符号化装置100などから出力され、図示せぬ蓄積系、伝送系、又はバッファなどを経て、復号装置800に入力される。
復号装置800は、図38に示すように、復号部801と、逆量子化部802と、逆直交変換部803と、加算部804と、予測画像生成部805と、インデックス設定部806とを、備える。逆量子化部802、逆直交変換部803、加算部804、予測画像生成部805は、それぞれ、図1の逆量子化部104、逆直交変換部105、加算部106、予測画像生成部107、と実質的に同一又は類似の要素である。なお、図38に示す復号制御部807は、復号装置800を制御するものであり、例えば、CPUなどにより実現
できる。
復号部801は、符号化データの復号のために、1フレーム又は1フィールド毎にシンタクスに基づいて解読を行う。復号部801は、各シンタクスの符号列を順次エントロピー復号し、予測モード、動きベクトル、及び参照番号などを含む動き情報、重み付き動き補償予測のためのインデックス情報、並びに量子化変換係数などの符号化対象ブロックの符号化パラメータを再生する。符号化パラメータとは、上記以外の変換係数に関する情報や量子化に関する情報などの復号に必要となる全てのパラメータである。復号部801は、動き情報、インデックス情報、及び量子化変換係数を出力し、量子化変換係数を逆量子化部802に入力し、インデックス情報をインデックス設定部806に入力し、動き情報を予測画像生成部805に入力する。
逆量子化部802は、復号部801から入力された量子化変換係数に対して逆量子化処理を行い、復元変換係数を得る。具体的には、逆量子化部802は、復号部801において使用された量子化情報に従って逆量子化を行う。より詳細には、逆量子化部802は、量子化情報によって導出された量子化ステップサイズを量子化変換係数に乗算し、復元変換係数を得る。逆量子化部802は、復元変換係数を出力し、逆直交変換部803に入力する。
逆直交変換部803は、逆量子化部802から入力された復元変換係数に対して、符号化側において行われた直交変換に対応する逆直交変換を行い、復元予測誤差を得る。逆直交変換部803は、復元予測誤差を出力し、加算部804に入力する。
加算部804は、逆直交変換部803から入力された復元予測誤差と、対応する予測画像とを加算し、復号画像を生成する。加算部804は、復号画像を出力し、予測画像生成部805に入力する。また加算部804は、復号画像を出力画像として外部に出力する。出力画像は、その後図示せぬ外部の出力バッファなどに一時的に蓄積され、例えば、復号制御部807によって管理される出力タイミングに従って、図示せぬディスプレイやモニタなどの表示装置系又は映像デバイス系へ出力される。
インデックス設定部806は、復号部801から入力されたインデックス情報を受け取り、参照リスト(リスト番号)と参照画像(参照番号)とを確認して、WPパラメータ情報を出力し、予測画像生成部805に入力する。
図39は、第4実施形態のインデックス設定部806の構成の一例を示すブロック図である。インデックス設定部806は、図39に示すように、参照画像確認部901と、WPパラメータ生成部902とを、備える。
参照画像確認部901は、復号部801からインデックス情報を受け取り、2つの参照リストに含まれる参照番号が互いに同一の参照画像を指しているかどうかを確認する。
ここで、参照リスト内の参照番号は、例えば、H.264などで規定される方法により既に解読されている。このため、参照画像確認部901は、H.264などで規定されているDecoded Picture Buffer(DPB)の管理に従って、導出された参照リストと参照番号を用いて、同一の参照画像を指す組み合わせがあるかどうかを確認できる。なお、DPBの制御については、H.264などに記述されている方式でもよいし、別の方式であってもよい。ここでは、DPB制御により参照リストと参照番号が予め確定していればよい。
参照画像確認部901は、共通参照リストを作成し、図14に示すスキャン順で参照リ
ストと参照番号を確認する。なお、共通参照リストは、数式(10)に示す疑似コードに従って作成されている。
WPパラメータ生成部902は、参照画像確認部901で確認された参照リストと参照番号との関係を元に、作成された共通参照リストから、参照リストと参照番号に対応するWPパラメータ情報を生成して出力し、予測画像生成部805に入力する。WPパラメータ情報については、図9A及び図9Bを参照して既に説明しているため、説明を省略する。
WPパラメータ生成部902は、共通リストに従って、common_scan_list()関数及びcommon_scan_ref_idx()関数を用いて、スキャンで参照リストと参照番号を引き、抜けている場所にWPパラメータ情報を補填する。
つまり、図15、図16の共通リストを、それぞれ、図11、図13へと復元し、これらの対応に基づいて、共通リストに対応するインデックス情報を、図9A及び図9Bに示されるWPパラメータ情報に割り当てる。
なお、図14に示すスキャン順序は一例であり、予め定めたスキャン順序であればこれ以外のスキャン順序を用いてもよい。また、数式(10)で示した疑似コードは一例であり、本処理の目的を実現できれば処理の追加や冗長な処理の削減も可能である。
図38に戻り、予測画像生成部805は、復号部801から入力された動き情報、インデックス設定部806から入力されたWPパラメータ情報、及び加算部804から入力された復号画像を用いて、予測画像を生成する。
ここで、図4を参照しながら、予測画像生成部805の詳細について説明する。予測画像生成部805は、予測画像生成部107同様、複数フレーム動き補償部201と、メモリ202と、単方向動き補償部203と、予測パラメータ制御部204と、参照画像セレクタ205と、フレームメモリ206と、参照画像制御部207と、を備える。
フレームメモリ206は、参照画像制御部207の制御の下、加算部106から入力された復号画像を参照画像として格納する。フレームメモリ206は、参照画像を一時保持するための複数のメモリセットFM1〜FMN(N≧2)を有する。
予測パラメータ制御部204は、復号部801から入力される動き情報に基づいて、参照画像番号と予測パラメータとの複数の組み合わせをテーブルとして用意している。ここで、動き情報とは、動き補償予測で用いられる動きのズレ量を示す動きベクトルや参照画像番号、単方向/双方向予測などの予測モードに関する情報などを指す。予測パラメータは、動きベクトル及び予測モードに関する情報を指す。そして予測パラメータ制御部204は、動き情報に基づいて、予測画像の生成に用いる参照画像番号と予測パラメータとの組み合わせを選択して出力し、参照画像番号を参照画像セレクタ205に入力し、予測パラメータを単方向動き補償部203に入力する。
参照画像セレクタ205は、フレームメモリ206が有するフレームメモリFM1〜FMNのいずれの出力端を接続するかを、予測パラメータ制御部204から入力された参照画像番号に従って切り替えるスイッチである。参照画像セレクタ205は、例えば、参照画像番号が0であれば、FM1の出力端を参照画像セレクタ205の出力端に接続し、参照画像番号がN−1であれば、FMNの出力端を参照画像セレクタ205の出力端に接続する。参照画像セレクタ205は、フレームメモリ206が有するフレームメモリFM1〜FMNのうち、出力端が接続されているフレームメモリに格納されている参照画像を出
力し、単方向動き補償部203へ入力する。なお、復号装置800では、予測画像生成部805以外で参照画像は利用されないため、予測画像生成部805の外部へ参照画像を出力しなくてもよい。
単方向予測動き補償部203は、予測パラメータ制御部204から入力された予測パラメータと参照画像セレクタ205から入力された参照画像に従って、動き補償予測処理を行い、単方向予測画像を生成する。動き補償予測については、図5を参照して既に説明しているため、説明を省略する。
単方向予測動き補償部203は、単方向予測画像を出力し、メモリ202に一時的に格納する。ここで、動き情報(予測パラメータ)が双方向予測を示す場合には、複数フレーム動き補償部201が2種類の単方向予測画像を用いて重み付き予測を行うため、単方向予測動き補償部203は、1つ目に対応する単方向予測画像をメモリ202に格納し、2つ目に対応する単法予測画像を複数フレーム動き補償部201に直接出力する。ここでは、1つ目に対応する単方向予測画像を第一予測画像とし、2つ目に対応する単方向予測画像を第二予測画像とする。
なお、単方向動き補償部203を2つ用意し、それぞれが2つの単方向予測画像を生成するようにしてもよい。この場合、動き情報(予測パラメータ)が単方向予測を示すときには、単方向動き補償部203が、1つ目の単方向予測画像を第一予測画像として複数フレーム動き補償部201に直接出力すればよい。
複数フレーム動き補償部201は、メモリ202から入力される第一予測画像、単方向予測動き補償部203から入力される第二予測画像、及び動き評価部109から入力されるWPパラメータ情報を用いて、重み付き予測を行って予測画像を生成する。複数フレーム動き補償部201は、予測画像を出力し、加算部804に入力する。
ここで、図6を参照しながら、複数フレーム動き補償部201の詳細について説明する。複数フレーム動き補償部201は、予測画像生成部107同様、デフォルト動き補償部301と、重み付き動き補償部302と、WPパラメータ制御部303と、WPセレクタ304、305とを、備える。
WPパラメータ制御部303は、インデックス設定部806から入力されるWPパラメータ情報に基づいて、WP適用フラグ及び重み情報を出力し、WP適用フラグをWPセレクタ304、305に入力し、重み情報を重み付き動き補償部302に入力する。
ここで、WPパラメータ情報は、重み係数の固定小数点精度、第一予測画像に対応する第一WP適用フラグ,第一重み係数,及び第一オフセット、並びに第二予測画像に対応する第二WP適応フラグ,第二重み係数,及び第二オフセットの情報を含む。WP適用フラグは、該当する参照画像及び信号成分毎に設定可能なパラメータであり、重み付き動き補償予測を行うかどうかを示す。重み情報は、重み係数の固定小数点精度、第一重み係数、第一オフセット、第二重み係数、及び第二オフセットの情報を含む。なおWPパラメータ情報は、第1実施形態と同様の情報を表す。
詳細には、WPパラメータ制御部303は、インデックス設定部806からWPパラメータ情報が入力されると、WPパラメータ情報を第一WP適用フラグ、第二WP適用フラグ、及び重み情報に分離して出力し、第一WP適用フラグをWPセレクタ304に入力し、第二WP適用フラグをWPセレクタ305に入力し、重み情報を重み付き動き補償部302に入力する。
WPセレクタ304、305は、WPパラメータ制御部303から入力されたWP適用フラグに基づいて、各々の予測画像の接続端を切り替える。WPセレクタ304、305は、各々のWP適用フラグが0の場合、各々の出力端をデフォルト動き補償部301へ接続する。そしてWPセレクタ304、305は、第一予測画像及び第二予測画像を出力し、デフォルト動き補償部301に入力する。一方、WPセレクタ304、305は、各々のWP適用フラグが1の場合、各々の出力端を重み付き動き補償部302へ接続する。そしてWPセレクタ304、305は、第一予測画像及び第二予測画像を出力し、重み付き動き補償部302に入力する。
デフォルト動き補償部301は、WPセレクタ304、305から入力された2つの単方向予測画像(第一予測画像及び第二予測画像)を元に平均値処理を行い、予測画像を生成する。具体的には、デフォルト動き補償部301は、第一WP適用フラグ及び第二WP適用フラグが0の場合、数式(1)に基づいて平均値処理を行う。
なお、動き情報(予測パラメータ)で示される予測モードが単方向予測である場合、デフォルト動き補償部301は、第一予測画像のみを用いて、数式(4)に基づいて最終的な予測画像を算出する。
重み付き動き補償部302は、WPセレクタ304、305から入力された2つの単方向予測画像(第一予測画像及び第二予測画像)とWPパラメータ制御部303から入力された重み情報とを元に重み付き動き補償を行う。具体的には、重み付き動き補償部302は、第一WP適用フラグ及び第二WP適用フラグが1の場合、数式(7)に基づいて重み付き処理を行う。
なお、重み付き動き補償部302は、第一予測画像及び第二予測画像と予測画像との演算精度が異なる場合、固定小数点精度であるlogWDCを数式(8)のように制御することで丸め処理を実現する。
また、動き情報(予測パラメータ)で示される予測モードが単方向予測である場合、重み付き動き補償部302は、第一予測画像のみを用いて、数式(9)に基づいて最終的な予測画像を算出する。
なお、重み付き動き補償部302は、第一予測画像及び第二予測画像と予測画像との演算精度が異なる場合、固定小数点精度であるlogWDCを双方向予測時と同様に数式(8)のように制御することで丸め処理を実現する。
重み係数の固定小数点精度については、図7を参照して既に説明しているため、説明を省略する。なお、単方向予測の場合には、第二予測画像に対応する各種パラメータ(第二WP適応フラグ,第二重み係数,及び第二オフセットの情報)は利用されないため、予め定めた初期値に設定されていてもよい。
復号部801は、図18に示すシンタクス500を利用する。シンタクス500は、復号部801の復号対象の符号化データの構造を示している。シンタクス500については、図18を参照して既に説明しているため、説明を省略する。また、ピクチャパラメータセットシンタクス505については、符号化が復号である点を除き、図19を参照して既に説明しているため、説明を省略する。また、スライスヘッダーシンタクス507についても、符号化が復号である点を除き、図20を参照して既に説明しているため、説明を省略する。また、プレッドウェイトテーブルシンタクス508についても、符号化が復号である点を除き、図21を参照して既に説明しているため、説明を省略する。
以上のように第4実施形態では、復号化装置800は、双方向予測を選択可能な双方向予測スライスで、参照画像が同一であるが参照画像番号が異なる2つのインデックスを用いて重み付き動き補償を行う際に、同一の値を持つインデックスを2回復号することにより、符号化効率が低下する問題を解消する。
双方向予測スライスで所持する2つの参照リストとリスト毎に定められた参照番号を、共通リストと共通の参照番号に並び変えることにより、参照リスト内に同一の参照画像を指す参照番号の組み合わせが含まれないようになるので、復号化装置800は、冗長なインデックスの符号量を削減することができる。
(第4実施形態の変形例)
第4実施形態の変形例について説明する。第4実施形態の変形例では、復号部801が用いるシンタクス要素が第4実施形態のシンタクス要素と異なる。シーケンスパラメータセットシンタクス504については、符号化が復号である点を除き、図22を参照して既に説明しているため、説明を省略する。アダプテーションパラメータセットシンタクス506についても、符号化が復号である点を除き、図23を参照して既に説明しているため、説明を省略する。プレッドウェイトテーブルシンタクス508についても、符号化が復号である点を除き、図24を参照して既に説明しているため、説明を省略する。
以上のように第4実施形態の変形例によれば、プレッドウェイトテーブルシンタクス508をアダプテーションパラメータセットシンタクス506から呼び出す構造とすることにより、1フレームを複数のスライスに分割した際のWPパラメータ情報の符号量を大幅に削減することができる。
例えば、利用する3種類の異なるWPパラメータ情報を持つアダプテーションパラメータセットシンタクス506を先に復号しておき、スライスヘッダーシンタクス507が、状況に応じてaps_idを用いて、必要なWPパラメータ情報を呼び出すことにより、スライスヘッダーシンタクス507でWPパラメータ情報を常に復号する構成よりも、符号量を削減できる。
(第5実施形態)
第5実施形態では、第2実施形態の符号化装置で符号化された符号化データを復号する復号装置について説明する。第5実施形態の復号装置1000では、インデックス設定部1006の構成が第4実施形態の復号装置800と相違する。以下では、第4実施形態との相違点の説明を主に行い、第4実施形態と同様の機能を有する構成要素については、第4実施形態と同様の名称・符号を付し、その説明を省略する。
図40は、第5実施形態のインデックス設定部1006の構成の一例を示すブロック図である。インデックス設定部1006は、図40に示すように、再利用判定部1001と、WPパラメータ生成部1002とを、備える。
再利用判定部1001は、再利用フラグをチェックし、リスト0のWPパラメータを再利用するかどうかを確認する。WPパラメータ生成部1002は、リスト0のWPパラメータを再利用する場合、リスト0のどのWPパラメータをコピーするかの情報に従って、参照先のリスト0のWPパラメータをリスト1のWPパラメータにコピーする。再利用フラグと参照先を示す参照番号に関する情報は、シンタクス要素に記述されており、WPパラメータ生成部1002がインデックス情報を解釈することにより、WPパラメータ情報を復元する。
再利用判定部1001は、例えば、数式(11)に示す疑似コードに従って、リスト0
のWPパラメータを再利用するかどうかを確認する。
プレッドウェイトテーブルシンタクス508については、符号化が復号である点を除き、図27を参照して既に説明しているため、説明を省略する。
以上のように第5実施形態では、復号化装置1000は、双方向予測を選択可能な双方向予測スライスで、参照画像が同一であるが参照画像番号が異なる2つのインデックスを用いて重み付き動き補償を行う際に、同一の値を持つインデックスを2回復号することにより、符号化効率が低下する問題を解消する。
復号化装置1000は、リスト0のインデックスを従来通り復号し、リスト1のインデックスを復号する際に、参照リスト内に同一の参照画像を指す参照番号の組み合わせが存在するか確認し、インデックスが同一の場合には、リスト1で用いるインデックスをリスト0で用いたインデックスで再利用することにより、同一のインデックスが2度復号されることを避け、冗長なインデックスの符号量を削減することができる。
(第6実施形態)
第6実施形態では、第3実施形態の符号化装置で符号化された符号化データを復号する復号装置について説明する。図41は、第6実施形態の復号装置1100の構成の一例を示すブロック図である。第6実施形態の復号装置1100は、動き情報メモリ1101、動き情報取得部1102、及び切替スイッチ1103を更に備えている点で、第4実施形態の復号装置800と相違する。以下では、第4実施形態との相違点の説明を主に行い、第4実施形態と同様の機能を有する構成要素については、第4実施形態と同様の名称・符号を付し、その説明を省略する。
動き情報メモリ1101は、復号が終了した画素ブロックに適用された動き情報を参照動き情報として一時的に格納する。動き情報メモリ1101では、動き情報に対してサブサンプリングなどの圧縮処理を行って情報量を削減しても構わない。動き情報メモリ1101は、図29に示すように、フレーム又はスライス単位で保持されており、同一フレーム上の動き情報を参照動き情報710として格納する空間方向参照動き情報メモリ701A、及び既に復号が終了したフレームの動き情報を参照動き情報710として格納する時間方向参照動き情報メモリ701Bを更に有する。時間方向参照動き情報メモリ701Bは、復号対象フレームが予測に用いる参照フレームの数に応じて、複数有しても構わない。
参照動き情報710は、所定の領域単位(例えば、4×4画素ブロック単位)で空間方向参照動き情報メモリ701A及び時間方向参照動き情報メモリ701B内に保持される。参照動き情報710は、その領域が後述するインター予測で符号化されたのか又は後述するイントラ予測で符号化されたのかを示す情報をさらに有する。また、画素ブロック(コーディングユニット又はプレディクションユニット)がH.264で規定されるスキップモード、ダイレクトモード又は後述するマージモードのように、動き情報内の動きベクトルの値が復号されず、復号済みの領域から予測された動き情報を用いてインター予測される場合においても、当該画素ブロックの動き情報が参照動き情報710として保持される。
復号対象のフレーム又はスライスの復号処理が終了したら、当該フレームの空間方向参照動き情報メモリ701Aは、次に復号処理を行うフレームに用いる時間方向参照動き情報メモリ701Bとしてその扱いが変更される。この際、時間方向参照動き情報メモリ701Bのメモリ容量を削減するために、動き情報を圧縮し、圧縮された動き情報を時間方向参照動き情報メモリ701Bに格納しても構わない。
動き情報取得部1102は、動き情報メモリ1101から参照動き情報が入力され、復号画素ブロックに用いる動き情報Bを出力する。動き情報取得部1102の動作は、第3実施形態の動き情報取得部702と同一であるため、その説明を省略する。
切替スイッチ1103は、後述する予測モード情報に従って動き情報取得部1102から出力される動き情報Bと復号部801から出力される動き情報Aの内、いずれかを選択して動き情報として予測画像生成部805に出力する。復号部801から出力される動き情報Aは、図示せぬ予測動きベクトル取得部から取得する予測動きベクトルとの差分情報や、予測動きベクトル取得位置情報を復号する。このような予測モードを以降インターモードと称する。一方、予測モード情報に従って動き情報取得部1102から出力される動き情報Bは、隣接する画素ブロックから動き情報をマージして、復号画素ブロックに対してそのまま適用されるため、その他の動き情報に関する情報(例えば、動きベクトル差分情報)の復号は不要である。以降、このような予測モードをマージモードと称する。
予測モード情報は、復号制御部807が制御する予測モードに従っており、切替スイッチ1103の切替情報を含む。
プレッドユニットシンタクス512については、符号化が復号である点を除き、図36を参照して既に説明しているため、説明を省略する。
第6実施形態の効果は、第3実施形態と同様であるため、その説明を省略する。
なお、MergeCandListへの格納処理の別の例として、時間隣接ブロックTの動き情報をMergeCandListに格納する際に、時間隣接ブロックTの参照フレームにおけるWPパラメータと復号画素ブロックの参照フレームにおけるWPパラメータが一致しているかを判定し、WPパラメータが一致している場合のみ、MergeCandListに格納するようにしてもよい。これは、時間隣接ブロックTの参照フレームにおけるWPパラメータと復号画素ブロックの参照フレームにおけるWPパラメータが異なる場合には、時間隣接ブロックTと復号画素ブロックで動き情報の相関が低下すると推測できるためである。
また、更に別の例として、時間隣接ブロックTの参照フレームにおけるWPパラメータと復号画素ブロックの参照フレームにおけるWPパラメータが異なる場合には、ブロックTに空間的に隣接するブロックのうち、復号画素ブロックの参照フレームにおけるWPパラメータが同一となるブロックをブロックTと置き換えてもよい。この時、時間隣接ブロックTと復号画素ブロックで動き情報の相関は低下しない。
(変形例)
なお、第1〜第3実施形態を選択的に用いてもよい。つまり、予めいずれの方法を選択するかの情報を定めておき、双方向スライスが選択された場合に、第1実施形態の手法を用いるか第2実施形態の手法を用いるかを示す情報により、切り替えてもよい。例えば、図20に示すスライスヘッダーシンタクスに、これらの手法を切り替えるフラグを設定し、符号化状況に合わせて選択することも容易に可能である。また、特定のハードウェアの構成に合わせて予めいずれかの手法を用いるかを定めておいてもよい。第1〜第3実施形態の予測画像生成部及びインデックス設定部は、ハードウェア実装及びソフトウェア実装のいずれにも好適である。
また、第4〜第6実施形態を選択的に用いてもよい。つまり、予めいずれの方法を選択するかの情報を定めておき、双方向スライスが選択された場合に、第4実施形態の手法を用いるか第5実施形態の手法を用いるかを示す情報により、切り替えてもよい。例えば、
図20に示すスライスヘッダーシンタクスに、これらの手法を切り替えるフラグを設定し、符号化状況に合わせて選択することも容易に可能である。また、特定のハードウェアの構成に合わせて予めいずれかの手法を用いるかを定めておいてもよい。第4〜第6実施形態の予測画像生成部及びインデックス設定部は、ハードウェア実装及びソフトウェア実装のいずれにも好適である。
また、第1〜第6実施形態で例示したシンタクステーブルの行間には、上記実施形態において規定していないシンタクス要素が挿入されてもよいし、その他の条件分岐に関する記述が含まれていてもよい。また、シンタクステーブルを複数のテーブルに分割したり、複数のシンタクステーブルを統合したりしてもよい。また、例示した各シンタクス要素の用語は、任意に変更可能である。
また、第1実施形態の変形例は、第2実施形態に容易に適用できる。この場合、リスト0とリスト1に対応する参照画像の最大数を設定してもよいし、予め定めた最大数としてもよい。
また、第4実施形態の変形例は、第5実施形態に容易に適用できる。この場合、リスト0とリスト1に対応する参照画像の最大数を設定してもよいし、予め定めた最大数としてもよい。
上記第1〜第6実施形態では、フレームを16×16画素サイズなどの矩形ブロックに分割し、画面左上のブロックから右下に向かって順に符号化/復号を行う例について説明している(図3Aを参照)。しかしながら、符号化順序及び復号順序はこの例に限定されない。例えば、右下から左上に向かって順に符号化及び復号が行われてもよいし、画面中央から画面端に向かって渦巻を描くように符号化及び復号が行われてもよい。更に、右上から左下に向かって順に符号化及び復号が行われてもよいし、画面端から画面中央に向かって渦巻きを描くように符号化及び復号が行われてもよい。この場合、符号化順序によって参照できる隣接画素ブロックの位置が変わるので、適宜利用可能な位置に変更すればよい。
上記第1〜第6実施形態では、4×4画素ブロック、8×8画素ブロック、16×16画素ブロックなどの予測対象ブロックサイズを例示して説明を行ったが、予測対象ブロックは均一なブロック形状でなくてもよい。例えば、予測対象ブロックサイズは、16×8画素ブロック、8×16画素ブロック、8×4画素ブロック、4×8画素ブロックなどであってもよい。また、1つのコーディングツリーブロック内で全てのブロックサイズを統一させる必要はなく、複数の異なるブロックサイズを混在させてもよい。1つのコーディングツリーブロック内で複数の異なるブロックサイズを混在させる場合、分割数の増加に伴って分割情報を符号化又は復号するための符号量も増加する。そこで、分割情報の符号量と局部復号画像または復号画像の品質との間のバランスを考慮して、ブロックサイズを選択することが望ましい。
上記第1〜第6実施形態では、簡単化のために、輝度信号と色差信号における予測処理とを区別せず、色信号成分に関して包括的な説明を記述した。しかしながら、予測処理が輝度信号と色差信号との間で異なる場合には、同一または異なる予測方法が用いられてよい。輝度信号と色差信号との間で異なる予測方法が用いられるならば、色差信号に対して選択した予測方法を輝度信号と同様の方法で符号化又は復号できる。
上記第1〜第6実施形態では、簡単化のために、輝度信号と色差信号における重み付き動き補償予測処理とを区別せず、色信号成分に関して包括的な説明を記述した。しかしながら、重み付き動き補償予測処理が輝度信号と色差信号との間で異なる場合には、同一ま
たは異なる重み付き動き補償予測処理が用いられてよい。輝度信号と色差信号との間で異なる重み付き動き補償予測処理が用いられるならば、色差信号に対して選択した重み付き動き補償予測処理を輝度信号と同様の方法で符号化又は復号できる。
上記第1〜第6実施形態では、シンタクス構成に示す表の行間には、本実施形態で規定していないシンタクス要素が挿入されることも可能であるし、それ以外の条件分岐に関する記述が含まれていても構わない。或いは、シンタクステーブルを複数のテーブルに分割、統合することも可能である。また、必ずしも同一の用語を用いる必要は無く、利用する形態によって任意に変更しても構わない。
以上説明したように、各実施形態は、重み付き動き補償予測を行う際に冗長な情報を符号化する問題を解消しつつ、高効率な重み付き動き補償予測処理を実現する。故に、各実施形態によれば、符号化効率が向上し、ひいては主観画質も向上する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
例えば、上記各実施形態の処理を実現するプログラムを、コンピュータで読み取り可能な記憶媒体に格納して提供することも可能である。記憶媒体としては、磁気ディスク、光ディスク(CD−ROM、CD−R、DVD等)、光磁気ディスク(MO等)、半導体メモリなど、プログラムを記憶でき、かつ、コンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
また、上記各実施形態の処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ(サーバ)上に格納し、ネットワーク経由でコンピュータ(クライアント)にダウンロードさせてもよい。