以下、添付図面を参照しながら、実施形態を詳細に説明する。以下の各実施形態の符号化装置及び復号装置は、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セレクタ304、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パラメータ情報を受け取り、参照リスト(リスト番号)と参照画像(参照番号)とを確認して、インデックス情報を出力し、符号化部110に入力する。インデックス設定部108は、動き評価部109から入力されたWPパラメータ情報を、後述するシンタクス要素にマッピングしてインデックス情報を生成する。
図8A及び図8Bは、第1実施形態のWPパラメータ情報の一例を示す図である。P−slice時のWPパラメータ情報の一例は、図8Aに示すとおりであり、B−slice時のWPパラメータ情報の一例は、図8A及び図8Bに示すとおりである。リスト番号は、予測方向を示す識別子であり、単方向予測時は0の値を取り、双方向予測時は2種類の予測を用いることができるため、0と1の2つの値を取る。参照番号は、フレームメモリ206に示される1〜Nに対応する値である。WPパラメータ情報は、参照リストと参照画像毎に保持されるため、B−slice時で必要な情報は、参照画像がN個とすると2N個となる。
図1に戻り、符号化部110は、量子化部103から入力された量子化変換係数、動き評価部109から入力された動き情報、インデックス設定部108から入力されたインデックス情報、及び符号化制御部111によって指定される量子化情報などの様々な符号化パラメータに対して符号化処理を行い、符号化データを生成する。符号化処理は、例えば、ハフマン符号化や算術符号化などが該当する。
符号化パラメータとは、予測方法などを示す予測情報、量子化変換係数に関する情報、及び量子化に関する情報などの復号に必要となるパラメータである。例えば、符号化制御部111が図示せぬ内部メモリを持ち、この内部メモリに符号化パラメータが保持され、画素ブロックを符号化する際に隣接する既に符号化済みの画素ブロックの符号化パラメータを用いるようにできる。例えば、H.264のイントラ予測では、符号化済みの隣接ブロックの予測情報から、画素ブロックの予測情報を導出することができる。
符号化部110は、生成した符号化データを、符号化制御部111が管理する適切な出力タイミングに従って出力する。出力された符号化データは、例えば、図示せぬ多重化部などで様々な情報が多重化されて、図示せぬ出力バッファなどに一時的に蓄積された後に、例えば、図示せぬ蓄積系(蓄積メディア)又は伝送系(通信回線)へ出力される。
符号化部110は、エントロピー符号化部110Aと、インデックス再構成部110Bとを、備える。
エントロピー符号化部110Aは、入力されてきた情報に対して可変長符号化や算術符号化などの符号化処理を行う。例えば、H.264では、コンテキスト適応型の可変長符号化(CAVLC:Context based Adaptive Variable Length Coding)やコンテキスト適応型の算術符号化(CABAC:Context based Adaptive Binary Arithmetic Coding)などが用いられる。
インデックス再構成部110Bは、インデックス設定部108から入力されたインデックス情報のシンタクス要素の符号長を削減するため、シンタクス要素のパラメータの特徴に応じて予測処理を行い、シンタクス要素のそのままの値(直値)と予測値の差分値とを計算し、エントロピー符号化部110Aに出力する。予測処理の具体例は、後述する。
図9は、第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は、逆直交変換及び量子化などに関わる情報が記述されている。これらのシンタクスには、重み付き動き補償予測に関する情報が記述されてもよい。
図10は、第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実施形態の重み付き動き補償予測の有効又は無効を規定するようにしてもよい。
図11は、第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の場合に、本関数が呼び出される。
図12は、第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を引いた値を示している。
luma_weight_l0_flag及びluma_weight_l1_flagは、リスト0及びリスト1のそれぞれに対応する輝度信号におけるWP適応フラグを示している。本フラグが1の場合、スライス内全域で第1実施形態の輝度信号の重み付き動き補償予測が有効となる。chroma_weight_l0_flag及びchroma_weight_l1_flagは、リスト0及びリスト1のそれぞれに対応する色差信号におけるWP適応フラグを示している。本フラグが1の場合、スライス内全域で第1実施形態の色差信号の重み付き動き補償予測が有効となる。luma_weight_l0[i]及びluma_weight_l1[i]は、リスト0及びリスト1のそれぞれで管理されたi番目に対応する輝度信号の重み係数である。luma_offset_l0[i]及びluma_offset_l1[i]は、リスト0及びリスト1のそれぞれで管理されたi番目に対応する輝度信号のオフセットである。これらは、それぞれ、数式(7)又は数式(9)のw0C、w1C、o0C、o1Cに対応する値である。但し、C=Yとする。
chroma_weight_l0[i][j]及びchroma_weight_l1[i][j]は、リスト0及びリスト1のそれぞれで管理されたi番目に対応する色差信号の重み係数である。chroma_offset_l0[i][j]及びchroma_offset_l1[i][j]は、リスト0及びリスト1のそれぞれで管理されたi番目に対応する色差信号のオフセットである。これらは、それぞれ、数式(7)又は数式(9)のw0C、w1C、o0C、o1Cに対応する値である。但し、C=Cr又はCbとする。jは色差成分のコンポーネントを示しており、例えばYUV4:2:0信号の場合、j=0がCr成分、j=1がCb成分であることを示す。
ここで、シンタクス構成における重み付き予測に関連するそれぞれのシンタクス要素の予測方法の詳細について説明する。シンタクス要素の予測は、インデックス再構成部110Bにより行われる。図13は、第1実施形態の予測方法を明示的に示したシンタクス構成一例を示す図である。図13に示す例では、予測を導入したシンタクス要素をdeltaの接頭語を付けて示しているが、これらのシンタクス構成は基本的に図12で示したシンタクス構成を同じ構成要素を持つ。
まず、重み係数の固定小数点精度を示すluma_log2_weight_denom及びchroma_log2_weight_denomの信号間の予測方法について説明する。インデックス再構成部110Bは、数式(10)を用いて、luma_log2_weight_denom及びchroma_log2_weight_denomの信号間の予測処理を行い、数式(11)を用いて、復元処理を行う。ここでは、図12及び図13に示すとおり、luma_log2_weight_denomが先に定義されているため、luma_log2_weight_denomの値からchroma_log2_weight_denomを予測する。
delta_chroma_log2_weight_denom = (chroma_log2_weight_denom - luma_log2_weight_denom) …(10)
chroma_log2_weight_denom = (luma_log2_weight_denom + delta_chroma_log2_weight_denom) …(11)
図14は、第1実施形態のchroma_log2_weight_denomの予測処理の一例を示すフローチャートである。
まず、インデックス再構成部110Bは、インデックス情報に設定されているluma_log2_weight_denomを予測値として導出する(ステップS101)。
続いて、インデックス再構成部110Bは、chroma_log2_weight_denomからluma_log2_weight_denomを減算し(ステップS102)、差分値をdelta_chroma_log2_weight_denomとしてインデックス情報に設定する(ステップS103)。
図15は、第1実施形態のchroma_log2_weight_denomの復元処理の一例を示すフローチャートである。
まず、インデックス再構成部110Bは、インデックス情報に既に設定されているluma_log2_weight_denomを予測値として導出する(ステップS201)。
続いて、インデックス再構成部110Bは、luma_log2_weight_denomをdelta_chroma_log2_weight_denomに加算し(ステップS202)、加算値をchroma_log2_weight_denomとしてインデックス情報に設定する(ステップS203)。
フェード効果は、一般的に色空間別に異なる時間的変化をさせるケースが少ないため、信号成分毎の固定小数点精度は、輝度成分と色差成分で強い相関がある。このため、このように色空間内で予測することにより、固定小数点精度を示す情報量を削減できる。
なお、数式(10)では、色差成分から輝度成分を減算しているが、輝度成分から色差成分を減算してもよい。この場合、数式(10)に応じて数式(11)も式を変形すればよい。
次に、輝度及び色差信号の重み係数をそれぞれ表すluma_weight_lx[i]及びchroma_weight_lx[i][j]の予測方法について説明する。ここで、xは、0又は1を示す識別子である。luma_weight_lx[i]及びchroma_weight_lx[i][j]の値は、それぞれ、luma_log2_weight_denom及びchroma_log2_weight_denomの値に応じて増減する。例えば、luma_log2_weight_denomの値が3である場合、明度変化がないと仮定した場合のluma_weight_lx[i]は、(1<<3)となる。一方、luma_log2_weight_denomの値が5である場合、明度変化がないと仮定した場合のluma_weight_lx[i]は、(1<<5)となる。
このため、インデックス再構成部110Bは、明度変化がない場合の重み係数を基準係数(デフォルト値)として予測処理を行う。具体的には、インデックス再構成部110Bは、数式(12)〜(13)を用いてluma_weight_lx[i]の予測処理を行い、数式(14)を用いて、復元処理を行う。同様に、インデックス再構成部110Bは、数式(15)〜(16)を用いてchroma_weight_lx[i]の予測処理を行い、数式(17)を用いて、復元処理を行う。
delta_luma_weight_lx[i] = (luma_weight_lx[i] - default_luma_weight_lx) …(12)
default_luma_weight_lx = (1<<luma_log2_weight_denom) …(13)
luma_weight_lx[i] = (default_luma_weight_lx + delta_luma_weight_lx[i]) …(14)
delta_chroma_weight_lx[i][j] = (chroma_weight_lx[i][j] - default_chroma_weight_lx) …(15)
default_chroma_weight_lx = (1<<chroma_log2_weight_denom) …(16)
chroma_weight_lx[i][j] = (default_chroma_weight_lx + delta_chroma_weight_lx[i][j]) …(17)
ここで、default_luma_weight_lx、default_chroma_weight_lxは、それぞれ、輝度成分、色差成分における明度変化がないデフォルト値である。
図16は、第1実施形態のluma_weight_lx[i]の予測処理の一例を示すフローチャートである。
まず、インデックス再構成部110Bは、インデックス情報に設定されているluma_log2_weight_denomを導出し(ステップS301)、default_luma_weight_lxを予測値として算出する(ステップS302)。
続いて、インデックス再構成部110Bは、luma_weight_lx[i]からdefault_luma_weight_lxを減算し(ステップS303)、差分値をdelta_luma_weight_lx[i]としてインデックス情報に設定する(ステップS304)。
なお、本処理を参照画像枚数分だけ繰り返すことでluma_weight_lx[i]に予測処理を適用できる。
図17は、第1実施形態のluma_weight_lx[i]の復元処理の一例を示すフローチャートである。
まず、インデックス再構成部110Bは、インデックス情報に既に設定されているdelta_luma_weight_lx[i]を導出し(ステップS401)、default_luma_weight_lxを予測値として算出する(ステップS402)。
続いて、インデックス再構成部110Bは、delta_luma_weight_lx[i]をdefault_luma_weight_lxに加算し(ステップS403)、加算値をluma_weight_lx[i]としてインデックス情報に設定する(ステップS404)。
なお、ここでは輝度成分に対するフローチャートを示したが、色差成分(chroma_weight_lx[i][j])に関しても同様に予測処理と復元処理が実現できる。
フェード効果を含む画像は、ある特定のフェード変化点でフェードを行い、それ以外の画像は通常の自然画像又はフェード効果のない画像であることが多い。この場合、重み係数は明度変化がない場合を取ることが多くなる。そこで、明度変化がない場合の初期値を、固定小数点精度から導出し、予測値として用いることで重み係数の符号量を削減できる。
なお、輝度及び色差信号の重み係数(luma_weight_lx[i]及びchroma_weight_lx[i][j])の予測値を、異なる参照番号又は異なるPOC番号で導出してもよい。この場合、符号化対象スライスから最も距離の近い参照番号をbase_idxとすると、インデックス再構成部110Bは、数式(18)を用いてluma_weight_lx[i]の予測処理を行い、数式(19)を用いて、復元処理を行う。同様に、インデックス再構成部110Bは、数式(20)を用いてchroma_weight_lx[i][j]の予測処理を行い、数式(21)を用いて、復元処理を行う。
delta_luma_weight_lx[i] = (luma_weight_lx[i] - luma_weight_lx[base_idx]) …(18)
luma_weight_lx[i] = (delta_luma_weight_lx[i] + luma_weight_lx[base_idx]) …(19)
delta_chroma_weight_lx[i][j] = (chroma_weight_lx[i][j] - chroma_weight_lx[base_idx][j]) …(20)
chroma_weight_lx[i][j] = (delta_chroma_weight_lx[i][j] + chroma_weight_lx[base_idx][j]) …(21)
ここで、数式(18)及び(20)では、i≠base_idxとなる。base_idxで示される参照番号の重み係数は、数式(18)及び(20)で利用できないので、数式(12)〜(13)及び(15)〜(16)を利用すればよい。
図18は、第1実施形態のluma_weight_lx[i]の予測処理の他の例を示すフローチャートである。
まず、インデックス再構成部110Bは、基準となる参照番号を示すbaseidxを設定する(ステップS501)。ここでは、baseidxの値を、仮に0とする。
続いて、インデックス再構成部110Bは、baseidxに基づいて、インデックス情報からluma_weight_lx[baseidx]を予測値として導出する(ステップS502)。なお、baseidxで示されるインデックス情報のluma_weight_lx[baseidx]は、例えば、予測を行わず直値で符号化されている。
続いて、インデックス再構成部110Bは、luma_weight_lx[i]からluma_weight_lx[baseidx]を減算し(ステップS503)、差分値をdelta_luma_weight_lx[i]としてインデックス情報に設定する(ステップS504)。
なお、本処理を参照画像枚数分だけ繰り返すことでbaseidx以外のluma_weight_lx[i]に予測処理を適用できる。
図19は、第1実施形態のluma_weight_lx[i]の復元処理の他の例を示すフローチャートである。
まず、インデックス再構成部110Bは、基準となる参照番号を示すbaseidxを設定する(ステップS601)。ここでは、baseidxの値を、仮に0とする。
続いて、インデックス再構成部110Bは、baseidxに基づいて、インデックス情報からluma_weight_lx[baseidx]を予測値として導出する(ステップS602)。なお、baseidxで示されるインデックス情報のluma_weight_lx[baseidx]は、例えば、予測を行わず直値で符号化又は復号されている。
続いて、インデックス再構成部110Bは、delta_luma_weight_lx[i]をluma_weight_lx[baseidx]に加算し(ステップS603)、加算値をluma_weight_lx[i]としてインデックス情報に設定する(ステップS604)。
なお、ここでは輝度成分に対するフローチャートを示したが、色差成分(chroma_weight_lx[i][j])に関しても同様に予測処理と復元処理が実現できる。また、ここでは、例として、luma_weight_lx[i]の予測方法及び復元方法を説明したが、luma_offset_lx[i]に関しても同様に予測、復元が可能である。
また、輝度及び色差信号の重み係数(luma_weight_lx[i]及びchroma_weight_lx[i][j])の予測値を、符号化対象の参照スライスとの距離を用いて導出してもよい。この場合、インデックス再構成部110Bは、数式(22)を用いてluma_weight_lx[i]の予測処理を行い、数式(23)を用いて、復元処理を行う。同様に、インデックス再構成部110Bは、数式(24)を用いてchroma_weight_lx[i][j]の予測処理を行い、数式(25)を用いて、復元処理を行う。
delta_luma_weight_lx[i] = (luma_weight_lx[i] - luma_weight_lx[i-1]) …(22)
luma_weight_lx[i] = (delta_luma_weight_lx[i] + luma_weight_lx[i-1]) …(23)
delta_chroma_weight_lx[i][j] = (chroma_weight_lx[i][j] - chroma_weight_lx[i-1][j]) …(24)
chroma_weight_lx[i][j] = (delta_chroma_weight_lx[i][j] + chroma_weight_lx[i-1][j]) …(25)
ここで、数式(22)及び(24)では、i≠0となる。
なお、本予測処理及び復号処理は、図18及び図19のフローチャートにおいて、baseidxにi-1番目の値(i≠0)を導入することと等価であるため、説明は省略する。なお、ここでは輝度成分に対するフローチャートを示したが、色差成分(chroma_weight_lx[i][j])に関しても同様に予測処理と復元処理が実現できる。また、ここでは、例として、luma_weight_lx[i]の予測方法及び復元方法を説明したが、luma_offset_lx[i]に関しても同様に予測、復元が可能である。
符号化対象スライスが参照可能な参照スライスは、符号化効率の観点で符号化対象スライスから時間距離的又は空間距離的に近いスライスが設定される場合が多い。ここで、時間距離的に連続するスライスの輝度変化は相関が高いため、重み係数及びオフセットの時間距離的な相関も高い。そこで、基準となる参照スライスの重み係数及びオフセット値を用いて、時間的に異なる参照スライスの重み係数及びオフセット値を予測することで、効率良く符号量を削減できる。なお、空間的に同一の参照スライスは、同じ重み係数及びオフセット値を取る場合が多いため、同様の理由で予測を導入することにより、符号量を削減できる。
次に、色差信号のオフセットを表すchroma_offset_lx[i][j]の予測方法について説明する。YUVの色空間では、色差成分は、中央値からのズレ量で色を表現する。このため、重み係数を用いて中央値を考慮した明度変化からの変化量を予測値とすることができる。具体的には、インデックス再構成部110Bは、数式(26)〜(27)を用いてchroma_offset_lx[i][j]の予測処理を行い、数式(28)を用いて、復元処理を行う。
delta_chroma_offset_lx[i][j] = (chroma_offset_lx[i][j] + ( ( MED * chroma_weight_lx[i][j])>> chroma_log2_weight_denom) - MED ) …(26)
MED = (MaxChromaValue>>1) …(27)
ここで、MaxChromaValueは色差信号が取れる最大明度を示している。例えば、8ビットの信号である場合、MaxChromaValueは255であり、MEDは128となる。
chroma_offset_lx[i][j] = (delta_chroma_offset_lx[i][j] - ( ( MED * chroma_weight_lx[i][j])>> chroma_log2_weight_denom) + MED ) …(28)
図20は、第1実施形態のchroma_offset_lx[i][j]の予測処理の一例を示すフローチャートである。
まず、インデックス再構成部110Bは、インデックス情報に設定されているchroma_log2_weight_denomを導出する(ステップS701)。
続いて、インデックス再構成部110Bは、インデックス情報に設定されているchroma_offset_lx[i][j]を導出する(ステップS702)。
続いて、インデックス再構成部110Bは、色差信号の最大値(最大信号)の中間値を導出する(ステップS703)。
続いて、インデックス再構成部110Bは、delta_chroma_offsett_lx[i][j]を導出し、インデックス情報に設定する(ステップS704)。
図21は、第1実施形態のchroma_offset_lx[i][j]の復元処理の一例を示すフローチャートである。
まず、インデックス再構成部110Bは、インデックス情報に既に設定されているchroma_log2_weight_denomを導出する(ステップS801)。
続いて、インデックス再構成部110Bは、インデックス情報に設定されているchroma_offset_lx[i][j]を導出する(ステップS802)。
続いて、インデックス再構成部110Bは、色差信号の最大値(最大信号)の中間値を導出する(ステップS803)。
続いて、インデックス再構成部110Bは、chroma_offsett_lx[i][j]を導出し、インデックス情報に設定する(ステップS804)。
色差信号の信号特性を利用して、中央値からのズレ量を考慮した予測値を導入することにより、オフセット値をそのまま符号化する場合と比較して、色差信号のオフセット値の符号量を削減できる。
次に、H.264などで定義されている重み付き予測の暗黙的重み付き予測のWPパラメータ導出方法を用いた重み係数及び固定小数点精度の予測値導出手法を説明する。H.264の暗黙的重み付き予測では、参照スライス間の時間的距離(POC番号の時間比率)に応じて、重み係数を導出している(オフセットは0となる)。参照スライス間の時間的距離は、POC番号に基づいて、符号化対象スライスと参照スライス間の距離を導出し、その距離比に基づいて重み係数が定まる。この際、固定小数点精度は固定値5に設定される。
例えばH.264では、数式(29)に示す疑似コードに従って重み係数が導出される。
td = Clip3(-128, 127, POCA - POCB)
tb = Clip3(-128, 127, POCT - POCA)
tx = ( td != 0 ) ? ( ( 16384 + abs( td / 2 ) ) / td ) : (0)
DistScaleFactor = Clip3( -1024, 1023, ( tb * tx + 32 ) >> 6 )
implicit_luma_weight_l0[i] = 64 - (DistScaleFactor >> 2)
implicit_luma_weight_l1[i] = DistScaleFactor >> 2 …(29)
ここで、POCAは、リスト1に対応する参照画像AのPOC番号、POCBは、リスト0に対応する参照画像BのPOC番号、POCTは、予測対象画像のPOC番号を示している。Clip3(L,M,N)は、最後の引数Nが、最初の2つが示す最小値Lと最大値Mの範囲を超えないようにクリップ処理を行う関数である。abs()関数は、引数の絶対値を返す関数である。td及びtbは、時間比を表しており、tdは、リスト1に対応する参照画像のPOC番号とリスト0に対応する参照画像のPOC番号の差、tbは、予測対象画像のPOC番号とリスト0に対応する参照画像のPOC番号の差を示す。これらの値によって重み係数の距離におけるスケーリング変数DistScaleFactorが導出される。DistScaleFactorに基づいて、リスト0及びリスト1に対応する重み係数(implicit_luma_weight_l0[i]、implicit_luma_weight_l1[i])が導出される。なお、色差信号についても同様に設定される。インデックス再構成部110Bは、ここで導出される固定小数点精度implicit_log2_weight_denomを用いて、数式(30)で固定小数点精度を予測する。
delta_luma_log2_weight_denom = (luma_log2_weight_denom - implicit_log2_weight_denom) …(30)
なお、色差信号の固定小数点精度も数式(30)で予測できる。この値は、数式(31)で復元される。
luma_log2_weight_denom = (delta_luma_log2_weight_denom + implicit_log2_weight_denom) …(31)
なお、色差信号の固定小数点精度も数式(31)と同様の方法で復元できる。
次に、重み係数の予測式を説明する。暗黙的重み係数をimplicit_luma_weight_lx[i]とすると、インデックス再構成部110Bは、数式(32)で重み係数luma_weight_lx[i]を予測し、数式(33)で復元する。
if(luma_log2_weight_denom >= implicit_log2_weight_denom ) {
norm_denom = (luma_log2_weight_denom - implicit_log2_weight_denom)
delta_luma_weight_lx[i] = (luma_weight_lx[i] - (implicit_luma_weight_lx[i] << norm_denom) )
}
else{
norm_denom = (implicit_log2_weight_denom - luma_log2_weight_denom)
delta_luma_weight_lx[i] = (luma_weight_lx[i] - (implicit_luma_weight_lx[i] >> norm_denom) )
} …(32)
ここでは、インデックス再構成部110Bは、暗黙的重み付き予測の固定小数点精度から大きいか小さいかにより、重み係数を補正して予測に利用する。
if(luma_log2_weight_denom >= implicit_log2_weight_denom ) {
norm_denom = (luma_log2_weight_denom - implicit_log2_weight_denom)
luma_weight_lx[i] = (delta_luma_weight_lx[i] + (implicit_luma_weight_lx[i] << norm_denom) )
}
else{
norm_denom = (implicit_log2_weight_denom - luma_log2_weight_denom)
luma_weight_lx[i] = (delta_luma_weight_lx[i] + (implicit_luma_weight_lx[i] >> norm_denom) )
} …(33)
なお、数式(32)では輝度成分の重み係数の例を示したが、色差成分についても同様な方法を用いることにより予測値を導出できる。
図22は、第1実施形態のluma_weight_lx[i]の予測処理の他の例を示すフローチャートである。
まず、インデックス再構成部110Bは、インデックス情報に設定されているluma_log2_weight_denomを導出する(ステップS901)。
続いて、インデックス再構成部110Bは、H.264の暗黙的重み付き予測の導出方法に従って、implicit_log2_weight_denom及びimplicit_luma_weight_lx[i]を導出する(ステップS902、S903)。
続いて、インデックス再構成部110Bは、luma_log2_weight_denomがimplicit_log2_weight_denom以上かどうかを判断する(ステップS904)。
luma_log2_weight_denomがimplicit_log2_weight_denom以上の場合(ステップS904でYes)、インデックス再構成部110Bは、luma_log2_weight_denomからimplicit_log2_weight_denomを減算し(ステップS905)、implicit_luma_weight_lx[i]を減算した値分左シフトし、予測値を導出する(ステップS906)。
一方、luma_log2_weight_denomがimplicit_log2_weight_denom以上でない場合(ステップS904でNo)、インデックス再構成部110Bは、implicit_log2_weight_denomからluma_log2_weight_denomを減算し(ステップS907)、implicit_luma_weight_lx[i]を減算した値分右シフトし、予測値を導出する(ステップS908)。
続いて、インデックス再構成部110Bは、luma_weight_lx[i]から導出した予測値を減算し(ステップS909)、減算した値(差分値)をインデックス情報に設定する(ステップS910)。
図23は、第1実施形態のluma_weight_lx[i]の復元処理の他の例を示すフローチャートである。
まず、インデックス再構成部110Bは、インデックス情報に既に設定されているluma_log2_weight_denomを導出する(ステップS1001)。
続いて、インデックス再構成部110Bは、H.264の暗黙的重み付き予測の導出方法に従って、implicit_log2_weight_denom及びimplicit_luma_weight_lx[i]を導出する(ステップS1002、S1003)。
続いて、インデックス再構成部110Bは、luma_log2_weight_denomがimplicit_log2_weight_denom以上かどうかを判断する(ステップS1004)。
luma_log2_weight_denomがimplicit_log2_weight_denom以上の場合(ステップS1004でYes)、インデックス再構成部110Bは、luma_log2_weight_denomからimplicit_log2_weight_denomを減算し(ステップS1005)、implicit_luma_weight_lx[i]を減算した値分左シフトし、予測値を導出する(ステップS1006)。
一方、luma_log2_weight_denomがimplicit_log2_weight_denom以上でない場合(ステップS1004でNo)、インデックス再構成部110Bは、implicit_log2_weight_denomからluma_log2_weight_denomを減算し(ステップS1007)、implicit_luma_weight_lx[i]を減算した値分右シフトし、予測値を導出する(ステップS1008)。
続いて、インデックス再構成部110Bは、delta_luma_weight_lx[i]に導出した予測値を加算し(ステップS1009)、加算した値をインデックス情報に設定する(ステップS1010)。
なお、上記で説明した複数の予測手法は、単独で使用するだけでなく組み合わせて利用することもできる。例えば、数式(10)、数式(12)〜(13)、数式(15)〜(16)、及び数式(26)〜(27)を組み合わせるなどとすることにより、インデックス情報におけるシンタクス要素の符号量を効率良く削減することが可能となる。
以上のように第1実施形態では、インデックス設定部108は、WPパラメータ情報を対応するシンタクス構成にマッピングしたインデックス情報を出力し、インデックス再構成部110Bは、シンタクス要素の冗長な表現を、当該スライス内で符号化される情報に基づいて予測する。従って、第1実施形態によれば、シンタクス要素をそのまま(直値で)符号化する場合と比較して、符号量を削減することができる。
ここで、符号化対象スライスで利用されるシンタクス要素の定義順(符号化順序)に基づいて、既に符号化済みのシンタクス要素から画面内相関として予測値を導出することや、明度変化がないことを仮定したデフォルト値から、予測値を導出することで、シンタクス要素の特徴を活かした予測が可能となり、結果としてシンタクス要素の符号化に必要なオーバーヘッドを削減できる効果を奏する。
なお、第1実施形態の図10〜図13に例示するシンタクステーブルの行間には、本実施形態において規定していないシンタクス要素が挿入されてもよいし、その他の条件分岐に関する記述が含まれていてもよい。また、シンタクステーブルを複数のテーブルに分割したり、複数のシンタクステーブルを統合したりしてもよい。また、例示した各シンタクス要素の用語は、任意に変更可能である。
以上説明したように、第1実施形態の符号化装置100は、符号化する情報のパラメータの相関を利用して空間冗長性を削除することにより、符号化効率が低下する問題を解消する。符号化装置100は、重み付き動き補償予測で用いるシンタクス要素をそのまま(直値で)符号化していた従来の構成と比較して、符号量を削減することができる。
(第2実施形態)
第2実施形態では、第1実施形態の符号化装置で符号化された符号化データを復号する復号装置について説明する。
図24は、第2実施形態の復号装置800の構成の一例を示すブロック図である。
復号装置800は、図示せぬ入力バッファなどに蓄積された符号化データを復号画像に復号し、出力画像として図示せぬ出力バッファに出力する。符号化データは、例えば、図1の符号化装置100などから出力され、図示せぬ蓄積系、伝送系、又はバッファなどを経て、復号装置800に入力される。
復号装置800は、図24に示すように、復号部801と、逆量子化部802と、逆直交変換部803と、加算部804と、予測画像生成部805と、インデックス設定部806とを、備える。逆量子化部802、逆直交変換部803、加算部804、予測画像生成部805は、それぞれ、図1の逆量子化部104、逆直交変換部105、加算部106、予測画像生成部107、と実質的に同一又は類似の要素である。なお、図24に示す復号制御部807は、復号装置800を制御するものであり、例えば、CPUなどにより実現できる。
復号部801は、符号化データの復号のために、1フレーム又は1フィールド毎にシンタクスに基づいて解読を行う。復号部801は、エントロピー復号部801Aと、インデックス再構成部801Bとを、備える。
エントロピー復号部801Aは、各シンタクスの符号列を順次エントロピー復号し、予測モード、動きベクトル、及び参照番号などを含む動き情報、重み付き動き補償予測のためのインデックス情報、並びに量子化変換係数などの符号化対象ブロックの符号化パラメータを再生する。ここで、符号化パラメータとは、上記以外にも変換係数に関する情報、量子化に関する情報、などの復号に必要となるすべてのパラメータである。
具体的には、エントロピー復号部801Aは、入力されてきた符号化データに対して可変長復号処理や算術復号処理などの復号処理を行う機能を有する。例えば、H.264ではコンテキスト適応型の可変長符号化(CAVLC:Context based Adaptive Variable Length Coding)やコンテキスト適応型の算術符号化(CABAC:Context based Adaptive Binary Arithmetic Coding)などが用いられている。これらの処理は解読処理とも呼ばれる。
インデックス再構成部801Bは、解読されたインデックス情報を復元し、インデックス情報を再構成する。具体的には、インデックス再構成部801Bは、解読されたインデックス情報のシンタクス要素の符号長を削減するために、シンタクス要素のパラメータの特徴に応じて予測処理を行い、シンタクス要素を復元し、インデックス情報を再構成する。予測処理の具体例は、後述する。
復号部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に入力する。具体的には、インデックス設定部806は、エントロピー復号部801Aで復号処理され、インデックス再構成部801Bで再構成されたインデックス情報を受け取る。そしてインデックス設定部806は、参照画像のリストと参照番号を確認して、WPパラメータ情報に変換し、変換したWPパラメータ情報を予測画像生成部805へ出力する。WPパラメータ情報については、図8A及び図8Bを参照して既に説明しているため、説明を省略する。
予測画像生成部805は、復号部801から入力された動き情報、インデックス設定部806から入力されたWPパラメータ情報、及び加算部804から入力された復号画像を用いて、予測画像815を生成する。
ここで、図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は、図9に示すシンタクス500を利用する。シンタクス500は、復号部801の復号対象の符号化データの構造を示している。シンタクス500については、図9を参照して既に説明しているため、説明を省略する。また、ピクチャパラメータセットシンタクス505については、符号化が復号である点を除き、図10を参照して既に説明しているため、説明を省略する。また、スライスヘッダーシンタクス507についても、符号化が復号である点を除き、図11を参照して既に説明しているため、説明を省略する。また、プレッドウェイトテーブルシンタクス508についても、符号化が復号である点を除き、図12を参照して既に説明しているため、説明を省略する。
ここで、シンタクス構成における重み付き予測に関連するそれぞれのシンタクス要素の予測方法の詳細について説明する。シンタクス要素の予測は、インデックス再構成部801Bにより行われる。第2実施形態の予測方法を明示的に示したシンタクス構成は、第2実施形態と同様であり、図13に示すとおりである。
重み係数の固定小数点精度を示すluma_log2_weight_denom及びchroma_log2_weight_denomの信号間の予測方法については、数式(11)を用いて、復元処理が行われる。復元処理の詳細は、図15に示すとおりである。
輝度及び色差信号の重み係数を表すluma_weight_lx[i]及びchroma_weight_lx[i][j]の予測方法については、数式(14)及び(17)を用いて、復元処理が行われる。復元処理の詳細は、図17に示すとおりである。
輝度及び色差信号の重み係数(luma_weight_lx[i]及びchroma_weight_lx[i][j])の予測値を、異なる参照番号又は異なるPOC番号で導出する予測方法については、数式(19)及び(21)を用いて、復元処理が行われる。復元処理の詳細は、図19に示すとおりである。
輝度及び色差信号の重み係数(luma_weight_lx[i]及びchroma_weight_lx[i][j])の予測値を、符号化対象の参照スライスとの距離を用いて導出する予測方法については、数式(23)及び(25)を用いて、復元処理が行われる。復元処理の詳細は、図19のフローチャートにおいて、baseidxにi-1番目の値(i≠0)を導入することと等価である。
H.264などで定義されている重み付き予測の暗黙的重み付き予測のWPパラメータ導出方法を用いた重み係数及び固定小数点精度の予測値導出手法については、数式(31)及び(33)を用いて、復元処理が行われる。復元処理の詳細は、図23に示すとおりである。
なお、上記説明した複数の予測手法は、単独で使用するだけでなく組み合わせて利用することもできる。例えば、数式(11)、数式(14)、数式(17)、及び数式(28)を組み合わせるなどとすることにより、インデックス情報におけるシンタクス要素の符号量を効率良く削減することが可能となる。
以上のように第2実施形態では、復号装置800は、符号化する情報のパラメータの相関を利用して空間冗長性を削除することにより、符号化効率が低下する問題を解消する。復号装置800は、重み付き動き補償予測で用いるシンタクス要素をそのまま(直値で)符号化していた従来の構成と比較して、符号量を削減することができる。
(変形例)
上記第1〜第2実施形態では、フレームを16×16画素サイズなどの矩形ブロックに分割し、画面左上のブロックから右下に向かって順に符号化/復号を行う例について説明している(図2Aを参照)。しかしながら、符号化順序及び復号順序はこの例に限定されない。例えば、右下から左上に向かって順に符号化及び復号が行われてもよいし、画面中央から画面端に向かって渦巻を描くように符号化及び復号が行われてもよい。更に、右上から左下に向かって順に符号化及び復号が行われてもよいし、画面端から画面中央に向かって渦巻きを描くように符号化及び復号が行われてもよい。この場合、符号化順序によって参照できる隣接画素ブロックの位置が変わるので、適宜利用可能な位置に変更すればよい。
上記第1〜第2実施形態では、4×4画素ブロック、8×8画素ブロック、16×16画素ブロックなどの予測対象ブロックサイズを例示して説明を行ったが、予測対象ブロックは均一なブロック形状でなくてもよい。例えば、予測対象ブロックサイズは、16×8画素ブロック、8×16画素ブロック、8×4画素ブロック、4×8画素ブロックなどであってもよい。また、1つのコーディングツリーブロック内で全てのブロックサイズを統一させる必要はなく、複数の異なるブロックサイズを混在させてもよい。1つのコーディングツリーブロック内で複数の異なるブロックサイズを混在させる場合、分割数の増加に伴って分割情報を符号化又は復号するための符号量も増加する。そこで、分割情報の符号量と局部復号画像または復号画像の品質との間のバランスを考慮して、ブロックサイズを選択することが望ましい。
上記第1〜第2実施形態では、簡単化のために、輝度信号と色差信号における予測処理とを区別せず、色信号成分に関して包括的な説明を記述した。しかしながら、予測処理が輝度信号と色差信号との間で異なる場合には、同一または異なる予測方法が用いられてよい。輝度信号と色差信号との間で異なる予測方法が用いられるならば、色差信号に対して選択した予測方法を輝度信号と同様の方法で符号化又は復号できる。
上記第1〜第2実施形態では、簡単化のために、輝度信号と色差信号における重み付き動き補償予測処理とを区別せず、色信号成分に関して包括的な説明を記述した。しかしながら、重み付き動き補償予測処理が輝度信号と色差信号との間で異なる場合には、同一または異なる重み付き動き補償予測処理が用いられてよい。輝度信号と色差信号との間で異なる重み付き動き補償予測処理が用いられるならば、色差信号に対して選択した重み付き動き補償予測処理を輝度信号と同様の方法で符号化又は復号できる。
上記第1〜第2実施形態では、シンタクス構成に示す表の行間には、本実施形態で規定していないシンタクス要素が挿入されることも可能であるし、それ以外の条件分岐に関する記述が含まれていても構わない。或いは、シンタクステーブルを複数のテーブルに分割、統合することも可能である。また、必ずしも同一の用語を用いる必要は無く、利用する形態によって任意に変更しても構わない。
以上説明したように、各実施形態は、重み付き動き補償予測を行う際にシンタクス構成の冗長な情報を符号化する問題を解消しつつ、高効率な重み付き動き補償予測処理を実現する。故に、各実施形態によれば、符号化効率が向上し、ひいては主観画質も向上する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
例えば、上記各実施形態の処理を実現するプログラムを、コンピュータで読み取り可能な記憶媒体に格納して提供することも可能である。記憶媒体としては、磁気ディスク、光ディスク(CD−ROM、CD−R、DVD等)、光磁気ディスク(MO等)、半導体メモリなど、プログラムを記憶でき、かつ、コンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
また、上記各実施形態の処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ(サーバ)上に格納し、ネットワーク経由でコンピュータ(クライアント)にダウンロードさせてもよい。