以下、図面とともに本発明の実施の形態に係る動画像符号化装置、動画像符号化方法、動画像符号化プログラム、並びに動画像復号装置、動画像復号方法、動画像復号プログラムの好適な実施の形態について詳細に説明する。なお、図面の説明には同一要素には同一符号を付与して重複する説明を省略する。
(実施の形態1)
[動画像符号化装置全体構成]
図1は、本発明の実施の形態1に係る動画像符号化装置の構成を示す図である。以下、各部の動作について説明する。実施の形態1に係る動画像符号化装置は、入力端子100、入力画像メモリ101、符号化ブロック取得部102、減算部103、直交変換・量子化部104、予測誤差符号化部105、逆量子化・逆変換部106、加算部107、フレーム内復号画像バッファ108、ループフィルタ部109、復号画像メモリ110、動きベクトル検出部111、動き補償予測部112、動き補償予測ブロック構造選択部113、イントラ予測部114、イントラ予測ブロック構造選択部115、予測モード選択部116、符号化ブロック構造選択部117、ブロック構造/予測モード情報付加情報符号化部118、予測モード情報メモリ119、多重化部120、出力端子121、及び符号化ブロック制御パラメータ生成部122を備える。
入力端子100より入力される画像信号は、入力画像メモリ101に格納され、入力画像メモリ101より、符号化対象ピクチャに対する処理対象の画像信号が、符号化ブロック取得部102に入力される。符号化ブロック取得部102により符号化対象ブロックの位置情報に基づいて切り出された符号化対象ブロックの画像信号は、減算部103、動きベクトル検出部111、動き補償予測部112、及びイントラ予測部114に供給される。
図2は、符号化対象画像の一例を示す図である。実施の形態1に係る予測ブロックサイズに関しては、図2に示すように符号化対象画像が64×64画素の符号化ブロック単位で符号化処理され、予測ブロックは符号化ブロックを基準に構成される。最大予測ブロックサイズは符号化ブロックと同じ64×64画素で、最小予測ブロックサイズは4×4画素である。CUの予測ブロックへの分割構成は、非分割(2N×2N)、水平・垂直への分割(N×N)、水平方向のみへの分割(2N×N)、垂直方向のみへの分割(N×2N)が可能である。水平・垂直への分割の場合は、更に水平・垂直に分割された予測ブロックを符号化ブロック(CU)として階層的に予測ブロックに分割でき、その階層をCU分割数で表現する。4分割されたCUの上位階層CUから見た分割領域をここでは分割1、分割2、分割3、分割4と定義する。
図3は、予測ブロックサイズの詳細な定義の一例を示す図である。CUのブロックサイズ(CUサイズ)は、CU分割数(CU_Depth)が0である64画素×64画素から、CU分割数が3である8×8画素まで定義され、最大の予測ブロックサイズはCU_Depth=0で非分割(2N×2N)の64画素×64画素、最小の予測ブロックサイズはCU_Depth=3で水平・垂直への分割(N×N)の4画素×4画素までの予測ブロックサイズが存在することになる。
画面間の相関を用いて予測を行う、動き補償予測を行う場合の予測ブロックサイズは、CUの予測ブロックへの分割構成に対して、水平方向のみへの分割(2N×N)、垂直方向のみへの分割(N×2N)を可能としており、計13種類の予測ブロックサイズが定義可能であるが、画面内の相関を用いて予測を行うイントラ予測の場合の予測ブロックサイズは、水平方向のみへの分割(2N×N)、垂直方向のみへの分割(N×2N)を可能としないため、計5種類の予測ブロックサイズが定義される。
本発明の実施の形態1に係る予測ブロックの分割構成に関して、この組み合わせに限定されない。定義できる符号化ブロックサイズは、図3に示すMaximum_cu_sizeやMinimum_cu_sizeなどの制御パラメータを用いて最大CUサイズや最小CUサイズを設定し、これらの制御パラメータを符号化・復号することで、変化させることが可能である。
図1に戻り、減算部103は、符号化ブロック取得部102より供給される画像信号と符号化ブロック構造選択部117より供給される予測信号を減算して予測誤差信号を算出し、予測誤差信号を直交変換・量子化部104に供給する。
直交変換・量子化部104は、減算部103より供給される予測誤差信号に直交変換及び量子化を施し、量子化された予測誤差信号を予測誤差符号化部105及び逆量子化・逆変換部106に供給する。
予測誤差符号化部105は、直交変換・量子化部104より供給される量子化された予測誤差信号をエントロピー符号化して、予測誤差信号に対する符号列を生成して、多重化部120に供給する。
逆量子化・逆変換部106は、直交変換・量子化部104より供給される量子化された予測誤差信号に対して、逆量子化や逆直交変換などの処理を行い、復号予測誤差信号を生成し加算部107に供給する。
加算部107は、逆量子化・逆変換部106より供給される復号予測誤差信号と、符号化ブロック構造選択部117より供給される予測信号を加算して、復号画像信号を生成し、復号画像信号をフレーム内復号画像バッファ108及びループフィルタ部109に供給する。
フレーム内復号画像バッファ108は、符号化対象ブロックに隣接した領域の同一フレーム内の復号画像をイントラ予測部114に供給すると共に、加算部107より供給される復号画像信号を格納する。
ループフィルタ部109は、加算部107より供給される復号画像信号に対して、符号化によって生じる歪の除去や符号化前画像に近づける復元処理を、フィルタを施すことにより行い、フィルタ処理を行った結果の復号画像を復号画像メモリ110に供給する。
復号画像メモリ110は、ループフィルタ部109より供給されるフィルタ処理を行った復号画像信号を格納する。また、画像全体の復号が完了した復号画像については参照画像として1以上の所定画像数記憶し、参照画像信号を動きベクトル検出部111と動き補償予測部112に供給する。
動きベクトル検出部111は、符号化ブロック取得部102より供給される符号化対象ブロックの画像信号と、復号画像メモリ110に記憶された参照画像信号の入力を受けて、各参照画像に対する動きベクトルを検出し、動きベクトル値を動き補償予測部112及び動き補償予測ブロック構造選択部113に供給する。
一般的な動きベクトルの検出方法は、画像信号と同一位置より所定の移動量だけ移動させた参照画像に相当する画像信号について誤差評価値を算出し、誤差評価値が最小となる移動量を動きベクトルとする。誤差評価値としては、画素毎の差分絶対値の総和SAD(Sum of Absolute Difference)や、画素毎の二乗誤差値の総和SSE(Sum of Square Error)等を利用する。さらに、動きベクトルの符号化に関わる符号量も誤差評価値に含めることも可能である。
動き補償予測部112は、動き補償予測ブロック構造選択部113より指定される予測ブロック構造を指定する情報及び参照画像指定情報と、動きベクトル検出部111より入力される動きベクトル値に従って、復号画像メモリ110内の参照画像指定情報で示される参照画像を、動きベクトル値だけ予測ブロックの画像信号と同一位置より移動させた位置の画像信号を取得して予測信号を生成する。
動き補償予測ブロック構造選択部113より指定される予測モードが単一の参照画像からの予測の場合には、1つの参照画像から取得した予測信号を動き補償予測信号とし、予測モードが2つの参照画像からの予測の場合には、2つの参照画像から取得した予測信号を重みづけ平均したものを動き補償予測信号とし、動き補償予測信号を予測モード選択部116に供給する。ここでは双予測の重みづけ平均の比率を1:1とする。
図4(a)〜(d)は、動き補償予測の予測種別について説明するための図である。単一の参照画像からの予測を行う処理を単予測と定義し、単予測の場合はL0予測またはL1予測という、参照画像管理リストに登録された2つの参照画像のいずれか一方を利用した予測を行う。
図4(a)は単予測であってL0予測の参照画像(RefL0Pic)が符号化対象画像(CurPic)より前の時刻にある場合を示している。図4(b)は単予測であってL0予測の参照画像が符号化対象画像より後の時刻にある場合を示している。同様に、図4(a)および図4(b)のL0予測の参照画像をL1予測の参照画像(RefL1Pic)に置き換えて単予測を行うこともできる。
2つの参照画像からの予測を行う処理を双予測と定義し、双予測の場合はL0予測とL1予測の双方を利用してBI予測と表現する。図4(c)は双予測であってL0予測の参照画像が符号化対象画像より前の時刻にあって、L1予測の参照画像が符号化対象画像より後の時刻にある場合を示している。図4(d)は双予測であってL0予測の参照画像とL1予測の参照画像が符号化対象画像より前の時刻にある場合を示している。このように、L0/L1の予測種別と時間の関係は、L0が過去方向、L1が未来方向とは限定されずに用いることが可能である。また双予測の場合に、同一の参照ピクチャを用いてL0予測及びL1予測のそれぞれを行ってもよい。なお、動き補償予測を単予測で行うか双予測で行うかの判断は、例えばL0予測を利用するか否か及びL1予測を利用するか否かを示す情報(例えば、フラグ)に基づき判断される。
双予測は2つの参照画像メモリへの画像情報アクセスが必要となるため、単予測と比較して2倍以上のメモリ帯域を必要とする場合がある。ハードウェアを構成する場合、動き補償予測の予測ブロックサイズが小さい場合の双予測がメモリ帯域のボトルネックとなり、本発明の実施の形態ではメモリ帯域のボトルネックを抑制する。
図1に戻り、動き補償予測ブロック構造選択部113は、動きベクトル検出部111より入力される各参照画像に対して検出された動きベクトル値と、予測モード情報メモリ119に格納された動き情報(予測種別、動きベクトル値、及び参照画像指定情報)をもとに、符号化ブロック制御パラメータ生成部122で生成された、実施の形態1において定義した予測ブロックサイズ及び動き補償予測モードに関する制御パラメータが入力され、制御パラメータに基づいて決められた、予測ブロックサイズ及び動き補償予測モードのそれぞれに対して用いられる、参照画像指定情報と動きベクトル値を動き補償予測部112に設定する。設定した値によって、動き補償予測部112から供給される動き補償予測信号と、符号化ブロック取得部102より供給される符号化対象ブロックの画像信号を用いて、最適な予測ブロックサイズと動き補償予測モードを決定する。
動き補償予測ブロック構造選択部113は、決定した予測ブロックサイズ、動き補償予測モード、予測モードに応じた予測種別、動きベクトル、及び参照画像指定情報を特定する情報を、動き補償予測信号及び予測誤差に対する誤差評価値と共に予測モード選択部116に供給する。
イントラ予測部114は、イントラ予測ブロック構造選択部115より指定される予測ブロック構造を指定する情報と定義されたイントラ予測モードに従って、フレーム内復号画像バッファ108より供給される符号化対象ブロックに隣接した同一フレーム内の復号画像を用いて、イントラ予測信号を生成しイントラ予測ブロック構造選択部115に供給する。
イントラ予測ブロック構造選択部115は、予測モード情報メモリ119に格納されたイントラ予測モード情報と複数の定義されたイントラ予測モードに従って、符号化ブロック制御パラメータ生成部122で生成された、実施の形態1において定義した予測ブロックサイズに関する制御パラメータが入力され、制御パラメータに基づいて決められた予測ブロックサイズのそれぞれに対して用いられるイントラ予測モードをイントラ予測部114に設定する。設定した値によって、イントラ予測部114から供給されるイントラ予測信号と、符号化ブロック取得部102より供給される符号化対象ブロックの画像信号を用いて、最適な予測ブロックサイズとイントラ予測モードを決定する。
また、イントラ予測ブロック構造選択部115は、決定した予測ブロックサイズ、イントラ予測モードを特定する情報を、イントラ予測信号及び予測誤差に対する誤差評価値と共に予測モード選択部116に供給する。
予測モード選択部116は、動き補償予測ブロック構造選択部113より供給される、決定した予測ブロックサイズ、動き補償予測モード、予測モードに応じた予測種別、動きベクトル、参照画像指定情報を特定する情報、及び予測誤差に対する誤差評価値と、イントラ予測ブロック構造選択部115より供給される、決定した予測ブロックサイズ、イントラ予測モード、及び予測誤差に対する誤差評価値より、階層的に構成されるCUサイズ単位の最適な予測モードを、誤差評価値を比較し選択する。
予測モード選択部116により選択された、CUサイズ単位の最適な予測モード情報として、予測ブロックサイズ、予測信号、誤差評価値のCUサイズ単位の総和と共に、動き補償予測が選択された場合には、動き補償予測モード、予測モードに応じた予測種別、動きベクトル、参照画像指定情報を特定する情報、及び動き補償予測信号が、イントラ予測が選択された場合には、イントラ予測モード、及びイントラ予測信号が、符号化ブロック構造選択部117に供給される。
符号化ブロック構造選択部117は、予測モード選択部116より供給されたCUサイズ単位の最適な予測モード情報を元に、符号化ブロック制御パラメータ生成部122で生成された、実施の形態1において定義した符号化ブロックサイズに関する制御パラメータが入力され、制御パラメータに基づいて決められた符号化ブロックサイズ構成において最適なCU_Depth構成を選択し、CU分割構成を指定する情報と、指定された分割構成毎のCUサイズにおける最適な予測モード情報と予測モードに関連する付加情報(動き情報、イントラ予測モード)を、ブロック構造/予測モード情報付加情報符号化部118に供給すると共に、選択した予測信号を減算部103及び加算部107に供給する。
ブロック構造/予測モード情報付加情報符号化部118は、符号化ブロック構造選択部117より供給された、CU分割構成を指定する情報と、指定した分割構成毎のCUサイズにおける最適な予測モード情報と予測モードに関連する付加情報と、符号化ブロック制御パラメータ生成部122より供給された、符号化ブロック及び予測ブロック構造に関する制御パラメータを、所定のシンタックス構造に従って符号化することで、符号化ブロック単位のCU分割構成と予測に用いられたモード情報を符号化し、多重化部120に供給すると共に、これらの情報を予測モード情報メモリ119に格納する。
予測モード情報メモリ119は、ブロック構造/予測モード情報付加情報符号化部118より供給される符号化ブロック単位のCU分割構成と予測に用いられたモード情報を、最小予測ブロックサイズ単位を基準として所定画像分記憶する。実施の形態1は画面間の予測である動き補償予測に注目したものであるため、モード情報における動き補償予測に関連する情報である動き情報(予測種別、動きベクトル、及び参照画像インデックス)に対して、説明を加える。
動き補償予測の処理対象である予測ブロックの隣接ブロックの動き情報を空間候補ブロック群とし、処理対象の予測ブロックと同一位置にあるColPic上のブロックとその周辺ブロックの動き情報を時間候補ブロック群とする。
ColPicとは、処理対象の予測ブロックとは別の復号済みの画像であって、復号画像メモリ110に参照画像として記憶されている。実施の形態1では、ColPicは直前に復号した参照画像とする。なお、実施の形態1では、ColPicは直前に復号した参照画像としたが、表示順で直前の参照画像や表示順で直後の参照画像でもよく、符号化ストリーム中に、ColPicに用いる参照画像を直接指定することも可能である。
予測モード情報メモリ119は、空間候補ブロック群と時間候補ブロック群の動き情報を、候補ブロック群の動き情報として動き補償予測ブロック構造選択部113に供給すると共に、イントラ予測ブロックの隣接ブロックのイントラ予測モード情報をイントラ予測ブロック構造選択部115に供給する。
多重化部120は、予測誤差符号化部105から供給される予測誤差の符号化列と、ブロック構造/予測モード情報付加情報符号化部118から供給される符号化ブロック単位のCU分割構成と予測に用いられたモード情報及び付加情報の符号化列を多重化することで符号化ビットストリームを生成し、出力端子121経由で、記録媒体・伝送路等に当該符号化ビットストリームを出力する。
符号化ブロック制御パラメータ生成部122は、実施の形態1における、符号化ブロック構造を定義するパラメータである、図3に示すMaximum_cu_sizeやMinimum_cu_size等の制御パラメータや、動き補償予測のブロックサイズ及び予測処理を制限する制御パラメータ等の、符号化ブロック構造や予測ブロック構造を定義するためのパラメータを生成し、動き補償予測ブロック構造選択部113、イントラ予測ブロック構造選択部115、符号化ブロック構造選択部117、及びブロック構造/予測モード情報付加情報符号化部118に供給する。動き補償予測のブロックサイズ及び予測処理を制限する制御パラメータに関する詳細については後述する。
図1に示した動画像符号化装置の構成は、CPU(Central Processing Unit)、フレームメモリ、ハードディスクなどを備える情報処理装置等のハードウェアによっても実現可能である。
図5は、本発明の実施の形態1に係る動画像符号化装置における符号化処理の動作の流れを示すフローチャートである。符号化ブロック単位毎に、CU分割の制御パラメータであるCU_Depthを0に初期化(S500)し、符号化ブロック取得部102より符号化処理対象ブロック画像を取得する(S501)。動きベクトル検出部111は、符号化対象ブロック画像よりCU分割に応じた予測対象のブロック画像と復号画像メモリ110に格納された複数の参照画像より、CU分割に応じた参照画像毎の動きベクトル値を算出する(S502)。
続いて、動き補償予測ブロック構造選択部113は、動きベクトル検出部111より供給される動きベクトルと、予測モード情報メモリ119に格納された動き情報及びイントラ予測モード情報を用いて、実施の形態1において定義した予測ブロックサイズ、動き補償予測モードのそれぞれに対する予測信号を、動き補償予測部112を用いて取得し、最適なCU単位の予測ブロックサイズ及び予測モードを選択した結果を出力する。また、イントラ予測ブロック構造選択部115は、予測ブロックサイズ、イントラ予測モードのそれぞれに対する予測信号を、イントラ予測部114を用いて取得し、最適なCU単位の予測ブロックサイズ及び予測モードを選択した結果を出力する。符号化ブロック構造選択部117は、これらの結果を用いて最適な符号化ブロック構造における予測モードと予測信号を生成する(S503)。ステップS503の処理の詳細については後述する。
続いて、減算部103は、符号化ブロック取得部102より供給された符号化処理ブロック画像と、符号化ブロック構造選択部117より供給された予測信号との差分を予測誤差信号として算出する(S504)。ブロック構造/予測モード情報付加情報符号化部118は、符号化ブロック構造選択部117より供給される符号化構造、予測モード、動き補償予測の場合の予測モードに応じた予測種別、動きベクトル、及び参照画像指定情報を特定する情報、イントラ予測の場合のイントラ予測モード情報を、所定のシンタックス構造に従って符号化し、符号化構造と予測モード情報に関連する付加情報の符号化データを生成する(S505)。
続いて、予測誤差符号化部105は、直交変換・量子化部104で生成された量子化された予測誤差信号をエントロピー符号化して、予測誤差の符号化データを生成する(S506)。多重化部120は、ブロック構造/予測モード情報付加情報符号化部118から供給される符号化構造と予測モード情報に関連する付加情報の符号化データと、予測誤差符号化部105から供給される予測誤差の符号化データを多重化し、符号化ビットストリームを生成する(S507)。
加算部107は、逆量子化・逆変換部106より供給される復号予測誤差信号と、符号化ブロック構造選択部117より供給される予測信号を加算して、復号画像信号を生成する(S508)。予測モード情報メモリ119は、ブロック構造/予測モード情報付加情報符号化部118より供給される符号化構造と予測モード情報に関連する付加情報として、動き補償予測が用いられた場合の動き情報(予測種別、動きベクトル、及び参照画像指定情報)と、イントラ予測が用いられた場合のイントラ予測モード情報を、最小の予測ブロックサイズ単位で格納する(S509)。
加算部107によって、生成された復号画像信号はフレーム内復号画像バッファ108に格納されると共に、ループフィルタ部109において、歪除去のためのループフィルタ処理が施され(S510)、フィルタを施された復号画像信号が復号画像メモリ110に供給、格納され、以降に符号化する符号化画像の動き補償予測処理に用いられる(S511)。
[CU単位の予測モード/予測信号生成処理の詳細]
次に、図5のフローチャートにおけるステップS503であるCU単位の予測モード/予測信号生成処理の詳細について、図6のフローチャートを用いて説明する。
最初に、設定された最大CUサイズと最小CUサイズの間の階層数を示す値をMax_CU_Depthとして、対象CUのCU_DepthがMax_CU_Depthより小さいか否かを判定する(S600)。実施の形態1においては、図3に示すCU分割構成を取るものとし、Max_CU_Depth=3とする。
CU_DepthがMax_CU_Depthより小さい場合には(S600:YES)、CU_Depthを1加算して(S601)、現在の対象CUを4分割した一階層下のCUに対する、CU単位の予測モード/予測信号生成処理を行う(S602−S605)。図2で示したCUの分割領域に対して、分割1領域の処理(S602)、分割2領域の処理(S603)、分割3領域の処理(S604)、分割4領域の処理(S605)の順で、再帰的に図6のフローチャートで説明されるCU単位の予測モード/予測信号生成処理が行われる。
各CU分割領域の予測モード算出結果の内、誤差評価値が積算され、4つの分割CUの誤差評価値総和が算出される(S606)。
一方、CU_DepthがMax_CU_Depth以上の場合(S600:NO)には、図1のイントラ予測ブロック構造選択部115及びイントラ予測部114において、イントラ予測モードの算出と予測信号の生成が行われ(S607)、対象CUにおけるイントラ予測のモード情報、予測信号と誤差評価値が算出される。
続いて、動き補償予測ブロック構造選択部113及び動き補償予測部112において、動き補償予測ブロックサイズの選択と、選択された予測ブロック単位の動き補償予測モード及び予測信号生成が行われ(S608)、対象CUにおける動き補償予測の予測ブロックサイズ、モード情報、動き情報、予測信号と誤差評価値が算出される。ステップS608の詳細に関しては、後述する。
続いて、符号化ブロック構造選択部117は、対象CUにおけるイントラ予測の誤差評価値と、動き補償予測の誤差評価値を比較して、誤差の少ない予測手法を選択しイントラ/インター(動き補償予測)の判定を行う(S609)。
次に、再帰的に施された図6のフローチャートの処理(図6のS602−S605)と誤差評価値の総和算出(S606)によって生成された、対象CUよりも下位階層の(CU_Depthが大きい)CUに対する誤差評価値と、対象CUの誤差評価値を比較し、予測に適用するCU_Depthの判定を行う(S610)。
再帰的に図6のフローチャートで示される処理が呼び出されるために、最も下位(CU_Depth=Max_CU_Depth)のCUから上位のCUに対して、順次比較が行われ、CUの分割領域毎の最適なCU_Depthと予測モードが選択できる。
最後に、選択された、対象CUと対象CUより下位のCUの間での最適CU_Depth、予測モード及び、選択されたイントラ予測または動き補償予測に関する付加情報と、誤差評価値及び予測信号が格納され(S611)、対象CUにおける予測モード/予測信号生成処理が終了する。
[動き補償予測ブロックサイズ選択/予測信号生成処理の詳細]
次に、図6のフローチャートにおけるステップS608である対象CUにおける動き補償予測ブロックサイズ選択及び、予測ブロック単位の動き補償予測モード/予測信号生成処理の詳細について、図7のフローチャートを用いて説明する。
最初に、対象CUに対して予測対象となる符号化ブロック画像を取得する(S700)。次に、図3に示した構成により、CU内分割モード毎の動き補償予測モード/予測信号生成処理を行う(S701〜S705)。
先ず、CU内分割モードが2N×2Nの場合の動き補償予測モード/予測信号生成処理を、分割数を示す値であるNumPartを1に設定して行う(S701)。続いて、NumPartを2に設定して、2N×Nの場合(S702)、N×2Nの場合(S703)の動き補償予測モード/予測信号生成処理を行う。
次に、CU_DepthがMax_CU_Depthと等しく且つ、対象CUサイズが8×8で、後述するinter_4x4_enableフラグが1である場合(S704:YES)、NumPartを4に設定して、N×Nの場合の動き補償予測モード/予測信号生成処理を行う(S705)。ステップS701、S702、S703、S705で施される、動き補償予測モード/予測信号生成処理の詳細は後述する。ステップS704の条件を満たさない場合(S704:NO)には、ステップS705をスキップし後続するステップが施される。
実施の形態1においては、2N×2N(S701)、2N×N(S702)、N×2N(S703)、及びN×N(S705)の順で、CU内分割における動き補償予測/予測信号生成を行っているが、上記CU分割それぞれのステップの処理順に関しては、順序が変更されても構わず、また並列処理を可能とするCPU等で処理を施す場合に、S701、S702、S703及びS705を並列に行うことも可能である。
続いて、動き補償予測モード/予測信号生成を行った、CU内分割モード毎の誤差評価値を比較し、最適なCU内分割モードである最適予測ブロックサイズ(PU)を選択する(S706)。選択されたPUに対する予測モード情報/誤差評価値/予測信号が格納され(S707)、図6のフローチャートにおけるステップS608の処理が終了する。
[実施の形態1における動き補償予測モードの定義]
図8(a)、(b)は、本発明の実施の形態1における動き補償予測において使用される動き情報を符号化するための2つの予測モードを説明するための図である。
第一の予測モードは、予測対象ブロックと当該予測対象ブロックに隣接する符号化済ブロックにおける時間方向や空間方向の動きの連続性を用いて、当該予測対象ブロックは自身の動き情報を直接符号化せずに、空間及び時間的に隣接するブロックの動き情報を符号化に使用する手法であり、結合予測モード(マージモード)と呼ぶ。
ここで、空間的に隣接するブロックとは予測対象ブロックと同じ画像に属する符号化済みブロックの中で、予測対象ブロックに隣接するブロックを指す。ここで、時間的に隣接するブロックとは予測対象ブロックとは別の符号化済みの画像に属するブロックの中で、予測対象ブロックと同一空間位置及びその周辺にあるブロックを指す。
結合予測モードの場合には、複数の隣接ブロック候補より選択的に結合する動き情報が定義でき、動き情報は使用する隣接ブロックを指定する情報(結合動き情報インデックス)を符号化することで、指定情報をもとに取得した動き情報をそのまま動き補償予測に用いる。更に、結合予測モードにおいては、予測差分情報を符号化伝送せずに、結合予測モードで予測された予測信号を復号ピクチャとするSkipモードを定義し、結合した動き情報のみの少ない情報で復号画像が再生できる構成を有する。SkipモードはCU内分割モードが2N×2Nの場合に用いることが可能であり、Skipモードにおいて伝送する動き情報は、結合予測モードと同様に隣接ブロックを定義する指定情報となる。
第二の予測モードは、動き情報の構成要素を個別にすべて符号化し、予測ブロックに対して予測誤差の少ない動き情報を伝送する手法であり、動き検出予測モードと呼ぶ。動き検出予測モードは、従来の動き補償予測の動き情報の符号化と同様に、双予測であるか単予測であるかを示す予測種別、参照画像を特定するための情報(参照画像インデックス)と、動きベクトルを特定するための情報が別々に符号化される。
動き検出予測モードには、単予測と双予測のどちらを使用するか予測モードで指示し、単予測単予測の場合には1つの参照画像に対する参照画像を特定する情報と、動きベクトルの予測ベクトルとの差分ベクトルを符号化する。双予測の場合には2つの参照画像に対する参照画像を特定する情報と、動きベクトルがそれぞれ個別に符号化される。動きベクトルに対する予測ベクトルは、AVCと同様に隣接ブロックの動き情報から生成されるが、結合予測モードと同様に、複数の隣接ブロック候補より予測ベクトルに用いる動きベクトルを選択でき、動きベクトルは予測ベクトルに使用する隣接ブロックを指定する情報(予測ベクトルインデックス)と差分ベクトルの2つを符号化することで伝送される。
[実施の形態1における、動き補償予測のブロックサイズ及び予測処理を制限する手法に関する説明]
次に、動き補償予測における予測時に必要な参照画像メモリ量に関する概算値を図9に示し、実施の形態1における予測ブロックサイズと予測処理の制限手法の説明を行う。動き補償予測においては、動きの精度を細かくすることで予測精度を向上させており、AVCを例にとると、1/4画素精度で動きベクトルを検出・伝送することが可能となっている。
実施の形態1においても、1/4画素精度で動きベクトルを検出・伝送する構成を取り、1/4画素精度の動きに対する動き補償予測信号を生成する際には、参照画像に存在する整数動き位置の画素を複数画素用いて、補間フィルタにより1/4画素精度の動き位置の参照画像の画素を算出する。実施の形態1における動画像符号化装置、動画像復号装置においては、補間フィルタとして7タップのFIRフィルタを用いる。
7タップのフィルタを施す為には、対象となる位置に最も近い水平・垂直の整数動き位置の画素に対して、水平および垂直にプラスマイナス6画素の画素を取得する必要がある。予測ブロックの右境界部分において3/4画素離れた動き位置の予測画像を取得する際には、対象となる位置に最も近い整数動き位置の画素が、予測ブロックの1画素外に属する画素となるため、更に1画素取得する画素が増加し、予測ブロックサイズに対して、水平および垂直にタップ数と同じ7画素分のフィルタ処理に必要な参照画像取得が必要となる。
図9は、7タップフィルタを施す場合の、実施の形態1における図3で示した動き補償予測の定義可能なそれぞれの予測ブロックサイズにおいて、単予測及び双予測を行う際にメモリ帯域として確保が必要な、参照画像のメモリアクセス量を示す。符号化装置及び復号装置の参照画像メモリの構成によっては、メモリアクセスが水平4画素単位で可能な構成や、水平・垂直2×2画素単位で可能な構成など、様々な構成を取ることができるが、上記メモリアクセス量は、参照画像メモリの構成に関わらず最小限取得が必要なメモリアクセス量の最大値を示している。
予測ブロックサイズの大きさに関わらず、フィルタ処理の為に追加で取得が必要となる水平・垂直のサイズは変わらないため、4×4画素サイズの場合が最も符号化ブロックサイズ(LCU)単位でのメモリアクセス量は大きくなり、64×64画素サイズの6倍近くのアクセスが必要となる。また、双予測の動き補償予測の場合には、異なる位置の参照画像から2つの予測信号を取得するため、単予測の2倍のメモリアクセスが必要となる。
動き補償予測のブロックサイズが小さい場合や、双予測の動き補償の場合に確保する必要があるメモリ帯域は、特に符号化する画像サイズが大きくなりハイビジョン以上の高精細画像になる場合に大きくなり、符号化装置及び復号装置の実現性が困難になる課題がある。本発明においては、メモリ帯域を制限するための、参照画像のメモリアクセス最大量が段階的に制御できる、動き補償予測の制限手法と制限するための制御パラメータの定義及び設定手法を提供し、高精細画像における動画像符号化装置の実現性と符号化効率を両立することを可能とする。
続いて、図10に本発明の実施の形態1における、図1の符号化ブロック制御パラメータ生成部122において生成する、動き補償予測のブロックサイズ及び予測処理を制限する制御パラメータの一例を示し、説明する。
制御パラメータは、最も小さな動き補償予測ブロックサイズである4×4画素の動き補償予測の有効・無効を制御するパラメータである、inter_4x4_enableと、動き補償予測の内、双予測が施される予測処理のみを禁止するブロックサイズを定義する、inter_bipred_restriction_idcの2つのパラメータで構成される。
図9の必要な参照画像メモリ量を比較すると、最もアクセス量が大きな条件から、4×4双予測、4×8/8×4双予測、4×4単予測、8×8双予測、8×16/16×8双予測、4×8/8×4単予測、16×16双予測の順となっており、単予測に関しては、4×4画素の最小予測ブロックサイズ以外は比較的アクセス量が少ない。
そのため、最小予測ブロックサイズに関しては、動き補償予測処理そのものを禁止する制御パラメータであるinter_4x4_enableを用意し、各ブロックサイズに関して、更に双予測に対する制限を加えるinter_bipred_restriction_idcを制御パラメータとして用意することで、段階的なメモリアクセス量の制御を明示的に実現できる。
ちなみに、4×8/8×4単予測に関しては、16×16双予測よりはメモリアクセス量が多くなるが、4×8/8×4単予測に対して制限を加える場合には、それよりもメモリアクセス量の大きな4×4及び4×8/8×4双予測にも制限をかける必要があり、その場合には最小CUサイズを16×16に設定することで、CU内分割モードがN×Nである8×8ブロックより小さな予測ブロックサイズの動き補償予測全体を禁止できるため、動き補償予測処理そのものを禁止に関しては、固定的な最小予測ブロックサイズに対する制限を有する構成で、段階的なメモリアクセス量の制御が可能である。
上記制御を行う場合には、inter_4x4_enableとinter_bipred_restriction_idcに加えて、最小CUサイズ値を組合せて、メモリアクセス量の制御を行う構成となる。
実施の形態1においてinter_bipred_restriction_idcは、図10に示すように0から5までの値を定義し、双予測に対する制限なしの状態から、16×16ブロック以下のサイズの双予測を制限する状態までを、制御可能としているが、定義の範囲は一例であり、この値よりも少なくまたは多くの制御値を定義することも、本発明の実施の形態の別構成として実現できる。
所定サイズの動き補償予測全体の無効化を制御するパラメータと、所定サイズ以下の動き補償予測の双予測を制限する制御パラメータを組合せて、メモリアクセス量の最大値が所定範囲内に収まるように制御する手法が、本発明の実施の形態1における構成である。
[動画像復号装置全体構成]
図11は、本発明の実施の形態1に係る動画像復号装置の構成を示す図である。以下、各部の動作について説明する。実施の形態1に係る動画像復号装置は、入力端子1100、多重分離部1101、予測差分情報復号部1102、逆量子化・逆変換部1103、加算部1104、フレーム内復号画像バッファ1105、ループフィルタ部1106、復号画像メモリ1107、予測モード/ブロック構造復号部1108、予測モード/ブロック構造選択部1109、イントラ予測情報復号部1110、動き情報復号部1111、予測モード情報メモリ1112、イントラ予測部1113、動き補償予測部1114、及び出力端子1115を備える。
入力端子1100より符号化ビットストリームが多重分離部1101に供給される。多重分離部1101は、供給された符号化ビットストリームの符号列を予測誤差情報の符号化列と、符号化ブロック及び予測ブロック構造に関する制御パラメータ、符号化ブロック単位のCU分割構成と予測に用いられたモード情報である、予測モード、動き補償予測の場合の予測モードに応じた予測種別、動きベクトル、及び参照画像指定情報を特定する情報である動き情報、イントラ予測の場合のイントラ予測モード情報で構成される符号化列に分離する。当該予測誤差情報の符号化列を予測差分情報復号部1102に供給し、制御パラメータ、及び当該符号化ブロック単位のCU分割構成と予測に用いられたモード情報の符号化列を予測モード/ブロック構造復号部1108に供給する。
予測差分情報復号部1102は、多重分離部1101より供給された予測誤差情報の符号化列を復号し、量子化された予測誤差信号を生成する。予測差分情報復号部1102は、生成した量子化された予測誤差信号を逆量子化・逆変換部1103に供給する。
逆量子化・逆変換部1103は、予測差分情報復号部1102より供給される、量子化された予測誤差信号を、逆量子化や逆直交変換などの処理を行って予測誤差信号を生成し、復号予測誤差信号を加算部1104に供給する。
加算部1104は、逆量子化・逆変換部1103より供給される復号予測誤差信号と、予測モード/ブロック構造選択部1109より供給される予測信号を加算して復号画像信号を生成し、復号画像信号をフレーム内復号画像バッファ1105及びループフィルタ部1106に供給する。
フレーム内復号画像バッファ1105は、図1の動画像符号化装置におけるフレーム内復号画像バッファ108と同じ機能を有し、イントラ予測の参照画像としてイントラ予測部1113に同一フレーム内の復号画像信号を供給すると共に、加算部1104から供給された復号画像信号を格納する。
ループフィルタ部1106は、図1の動画像符号化装置におけるループフィルタ部109と同じ機能を有し、加算部1104より供給される復号画像信号に対して、歪除去のフィルタを施し、フィルタ処理を行った結果の復号画像を復号画像メモリ1107に供給する。
復号画像メモリ1107は、図1の動画像符号化装置における復号画像メモリ110と同じ機能を有し、ループフィルタ部1106から供給された復号画像信号を格納し、参照画像信号を動き補償予測部1114に供給する。また、復号画像メモリ1107は、格納された復号画像信号を再生時刻に合わせて、画像の表示順序に従い出力端子1115に供給する。
予測モード/ブロック構造復号部1108は、多重分離部1101より供給される、符号化ブロック及び予測ブロック構造に関する制御パラメータより、図3で示されるCU構造を定義する制御パラメータや、図10で示されるような動き補償予測のブロック構成及び予測処理を制限する制御パラメータを生成する。
また、予測モード/ブロック構造復号部1108は、多重分離部1101より供給される、当該符号化ブロック単位のCU分割構成と予測に用いられたモード情報の符号化列より、符号化ブロック単位のCU分割構成と予測に用いられたモード情報を復号し、予測ブロックサイズ及び予測モードを生成すると共に、動き補償予測の場合の予測モードに応じた予測種別、動きベクトル、及び参照画像指定情報を特定する情報である動き情報、イントラ予測の場合のイントラ予測モード情報を分離し、当該符号化ブロック単位のCU分割構成と、予測モード情報を予測モード/ブロック構造選択部1109に供給する。
予測モード/ブロック構造復号部1108は、予測ブロックにイントラ予測が用いられている場合には、イントラ予測情報復号部1110に予測ブロックサイズと共に、イントラ予測モード情報を供給し、動き補償予測が用いられている場合には、動き情報復号部1111に予測ブロックサイズと共に、動き補償予測モード、並びに予測モードに応じた予測種別、動きベクトル、及び参照画像指定情報を特定する情報を供給する。
イントラ予測情報復号部1110は、予測モード/ブロック構造復号部1108より供給された予測ブロックサイズ、イントラ予測モード情報を復号し、符号化対象ブロックに対する予測ブロック構造と各予測ブロックにおけるイントラ予測モードを再生する。イントラ予測情報復号部1110は、再生したイントラ予測モードをイントラ予測部1113に供給すると共に、予測モード情報メモリ1112に対しても供給する。
動き情報復号部1111は、予測モード/ブロック構造復号部1108より供給された、予測ブロックサイズ、動き補償予測モード、並びに予測モードに応じた予測種別、動きベクトル、及び参照画像指定情報を特定する情報を動き情報として復号し、復号した動き情報と、予測モード情報メモリ1112より供給される候補ブロック群の動き情報より、動き補償予測に用いる予測種別、動きベクトル及び参照画像指定情報を再生し、動き補償予測部1114に供給する。また、動き情報復号部1111は再生した動き情報を、予測モード情報メモリ1112に対しても供給する。動き情報復号部1111の詳細な構成については後述する。
予測モード情報メモリ1112は、図1の動画像符号化装置における予測モード情報メモリ119と同じ機能を持ち、動き情報復号部1111より供給される再生した動き情報、及びイントラ予測情報復号部1110から供給されるイントラ予測モードを、最小予測ブロックサイズ単位を基準として所定画像分記憶する。また、予測モード情報メモリ1112は、空間候補ブロック群と時間候補ブロック群の動き情報を、候補ブロック群の動き情報として動き情報復号部1111に供給すると共に、同一フレーム内の復号済隣接ブロックのイントラ予測モード情報を、対象予測ブロックのモード情報の予測候補として、イントラ予測情報復号部1110に供給する。
イントラ予測部1113は、図1の動画像符号化装置におけるイントラ予測部114と同じ機能を持ち、イントラ予測情報復号部1110より供給されるイントラ予測モードに従って、フレーム内復号画像バッファ1105よりイントラ予測の参照画像を入力し、イントラ予測信号を生成して、予測モード/ブロック構造選択部1109に供給する。
動き補償予測部1114は、図1の動画像符号化装置における動き補償予測部112と同じ機能を持ち、動き情報復号部1111より供給される動き情報に基づいて、復号画像メモリ1107内の参照画像指定情報が示す参照画像を、動きベクトル値だけ予測ブロックの画像信号と同一位置より移動させた位置の画像信号を取得して予測信号を生成する。動き補償予測の予測種別が双予測であれば、各予測種別の予測信号を平均したものを予測信号として生成し、予測信号を予測モード/ブロック構造選択部1109に供給する。
予測モード/ブロック構造選択部1109は、予測モード/ブロック構造復号部1108より供給された、当該符号化ブロック単位のCU分割構成と、予測モード情報を元に、CU分割を行い、再生された予測ブロック構造単位の予測モードによって、動き補償予測の場合には、動き補償予測部1114より動き補償予測信号を入力し、イントラ予測の場合には、イントラ予測部1113よりイントラ予測信号を入力し、再生された予測信号を加算部1104に供給する。
出力端子1115は、復号画像メモリ1107より供給された復号画像信号を、ディスプレイなどの表示媒体に出力することで、復号画像信号が再生される。
図11に示した動画像復号装置の構成も、図1に示した動画像符号化装置の構成と同様に、CPU、フレームメモリ、ハードディスクなどを備える情報処理装置等のハードウェアによっても実現可能である。
図12は、本発明の実施の形態1に係る動画像復号装置における復号処理の符号化ブロック単位の動作の流れを示すフローチャートである。最初にCU分割の制御パラメータであるCU_Depthを0に初期化(S1200)し、多重分離部1101は、入力端子1100より供給された符号化ビットストリームを予測誤差情報の符号化列と、当該符号化ブロック単位のCU分割構成と予測に用いられたモード情報の符号化列に分離する(S1201)。分離された符号化ブロック単位の予測誤差情報の符号化列と、当該符号化ブロック単位のCU分割構成と予測に用いられたモード情報の符号化列が予測差分情報復号部1102及び、予測モード/ブロック構造復号部1108に供給され、CU分割構造を元にしたCU単位の復号処理が施される(S1202)。ステップS1202の詳細動作に関しては、後述する。
続いて、当該符号化ブロック単位のCU分割構成は、ステップS1202で予測モード/ブロック構造復号部1108において復号され、復号された符号化構造情報が予測モード情報メモリ1112に格納される(S1203)。
CU単位の復号処理(S1202)により復号された復号画像信号は、ループフィルタ部1106においてループフィルタ処理が施され(S1204)、復号画像メモリ1107に格納され(S1205)、符号化ブロック単位の復号処理が終了する。実施の形態1において、符号化ブロック単位の処理でループフィルタを施しているが、ループフィルタを施した復号画像信号は、同一フレームの復号処理には参照されず、後続するフレームの動き補償予測において参照されるため、符号化ブロック単位の処理を行わずに、フレーム全体の復号処理完了後に、フレーム全体に対して施すことも可能である。
[CU単位の復号処理の詳細]
続いて、図12のフローチャートにおけるステップS1202であるCU単位の復号処理の詳細について、図13のフローチャートを用いて説明する。
最初に、設定された最大CUサイズと最小CUサイズの間の階層数を示す値Max_CU_Depthに対して、対象CUのCU_Depthが小さいか否かを判定する(S1300)。図3における最大CUサイズ及び最小CUサイズに関する制御パラメータが符号化・伝送されるため、復号処理において制御パラメータを復号することで、符号化時のMax_CU_Depthは復号される。Max_CU_Depthを定義する符号化情報の一例に関しては後述する。
CU_DepthがMax_CU_Depthより小さい場合には(S1300:YES)、CU分割情報を取得する(S1301)。一例としては、1ビットのフラグ情報(cu_split_flag)が、CUを分割するか否かの選択に合わせて、符号化・伝送され、このフラグ情報を復号することで、CUが分割されているか否かを認識する。
CUが分割されている場合(S1302:YES)には、CUを分割して復号するため、CU分割CU_Depthを1加算して(S1303)一階層下のCUに対するCU単位の復号処理を行う(S1304−S1307)、CUの分割領域に対して分割1領域の処理(S1304)、分割2領域の処理(S1305)、分割3領域の処理(S1306)、分割4領域の処理(S1307)の順で再帰的に図13のフローチャートで説明される処理が行われる。
CU_DepthがMax_CU_Depth以上の場合(S1300:NO)及び、CUが分割されていない場合(S1302:NO)には、復号対象となるCUの大きさが確定し、確定したCU内の予測モードに応じた復号処理が施される。
最初に、CU内の予測にイントラ予測が用いられているか、動き補償予測が用いられているかを示す情報を取得する。(S1308)。実施の形態1においては、CU単位でskipモードであるか否かを示すskipフラグ情報(skip_flag)、また当該CUがskipモードで無い場合にイントラ予測であるか動き補償予測であるかを示す予測モードフラグ情報(pred_mode_flag)が符号化時にCU単位の予測モード情報として符号化されており、これらを復号する事により、イントラ予測であるか、動き補償予測(skipモードを含む)であるかの情報が取得できる。
続いて、当該CUがイントラ予測である場合には(S1309:YES)、CU単位のイントラ予測復号処理が、図11のイントラ予測情報復号部1110及びイントラ予測部1113で行われ(S1311)、対象CUにおけるイントラ予測信号を生成し、復号誤差信号と加算されることにより、復号画像信号を生成し(S1312)、CU単位の復号処理を終了する。
当該CUがイントラ予測でない場合には(S1309:NO)、CU単位の動き補償予測復号処理が、図11の動き情報復号部1111及び動き補償予測部1114で行われ(S1310)、対象CUにおける動き補償予測信号を生成し、復号誤差信号と加算されることにより、復号画像信号を生成し(S1312)、CU単位の復号処理を終了する。ステップS1310の動作の詳細に関しては後述する。
続いて、図13のフローチャートにおけるステップS1310である対象CUにおける動き補償予測復号処理の詳細について、図14のフローチャートを用いて説明する。最初に、CU単位の予測モードを示す情報として復号したskipフラグを取得し(S1400)、skipフラグが1である、すなわちskipモードである場合(S1401:YES)には、CU内の予測ブロック分割モードは2N×2Nとなり、NumPartが1に設定され2N×2N予測ブロックの予測ブロック単位復号が施される(S1402)。
skip_flagが0である、すなわちskipモードでない場合(S1401:NO)には、CU分割(PU)モードとして、符号化時に当該CUで選択した動き補償予測ブロックサイズの種別であるCU内分割モード値を、予測モード情報より取得し(S1403)、PUモードが2N×2Nの場合(S1404:YES)には、NumPartが1に設定され2N×2N予測ブロックの予測ブロック単位復号が施される(S1402)。
PUモードが2N×2Nでない場合(S1404:NO)、PUモードが2N×Nの場合(S1405:YES)には、NumPartが2に設定され2N×N予測ブロックの予測ブロック単位復号が施される(S1406)。
続いて、CU_DepthがMax_CU_Depthと等しく且つ、対象CUサイズが8×8で、後述するinter_4x4_enableフラグが1である場合(S1407:YES)には、更にPUモードがN×2Nであるか否かを判定し(S1409)、PUモードがN×2Nである場合(S1409:YES)には、NumPartが2に設定され、N×2N予測ブロックの予測ブロック単位復号が施される(S1408)。
PUモードがN×2Nでない場合(S1409:NO)には、PUモードはN×Nとなり、NumPartを4に設定して、N×N予測ブロックの予測ブロック単位復号が施される(S1410)。
ステップS1407の条件を満たさない場合(S1407:NO)には、当該CUにおいてN×N予測ブロックは適用されないため、NumPartが2に設定され、N×2N予測ブロックの予測ブロック単位復号が施される(S1408)。ステップS1402、S1406、S1408、S1410で施される、PUモード毎の予測ブロック単位復号処理の詳細は後述する。
実施の形態1においては、復号したPUモードに対する予測ブロック単位の復号処理を選択するための条件判断に関しては、図14のフローチャートに示すように、ステップS1404からS1409までに示した順番で処理を行っているが、復号したPUモードに従って、予測ブロック単位の復号処理が施される構成であれば、条件分岐の順番に関しては異なる構成でも実現可能である。
PUモード毎の予測ブロック単位復号処理が施された後、PUモード及び予測ブロック単位の動き情報等のモード情報が、図11における予測モード情報メモリ1112に格納され(S1411)、当該CUに対する動き補償予測復号処理が終了する。
[実施の形態1の詳細機能説明]
続いて、本発明の実施の形態1に係る動画像符号化装置の動き補償予測ブロック構造選択部113の動作、図7のフローチャートにおけるステップS701、S702、S703、S705の処理の詳細動作を、以下説明する。
[実施の形態1における動画像符号化装置における動き補償予測ブロック構造選択部の詳細動作説明]
図15は、実施の形態1の動画像符号化装置における動き補償予測ブロック構造選択部113の詳細な構成を示す図である。動き補償予測ブロック構造選択部113は、最適な動き補償予測モード及び予測ブロック構造を決定する機能を有する。
動き補償予測ブロック構造選択部113は、動き補償予測生成部1500、予測誤差算出部1501、予測ベクトル算出部1502、差分ベクトル算出部1503、動き情報符号量算出部1504、予測モード/ブロック構造評価部1505、結合動き情報算出部1506、結合動き情報単予測変換部1507、及び結合動き補償予測生成部1508を含む。
図1における動き補償予測ブロック構造選択部113に対して、動きベクトル検出部111より入力された動きベクトル値が、動き補償予測生成部1500に供給され、予測モード情報メモリ119より入力された動き情報が、予測ベクトル算出部1502、及び結合動き情報算出部1506に供給される。
また、動き補償予測部112に対して、動き補償予測生成部1500、及び結合動き補償予測生成部1508から、動き補償予測に用いる参照画像指定情報と動きベクトルが出力され、動き補償予測部112より、生成された動き補償予測画像が予測誤差算出部1501に供給される。予測誤差算出部1501には更に、符号化ブロック取得部102より符号化対象となる予測ブロックの画像信号が供給される。
また、予測モード/ブロック構造評価部1505から、予測モード選択部116に対して、予測ブロック構造、符号化する動き情報と確定した予測モード情報、及び動き補償予測信号を供給する。
動き補償予測生成部1500は、各予測ブロック構造において、予測に使用可能な各参照画像に対して算出された動きベクトル値を受信し、図10で示される双予測制限情報に従って動き補償予測を行い、参照画像指定情報を予測ベクトル算出部1502に供給し、参照画像指定情報と動きベクトルを出力する。
予測誤差算出部1501は、入力された動き補償予測画像と処理対象の予測ブロック画像より、予測誤差評価値を算出する。誤差評価値を算出するための演算としては、動きベクトル検出における誤差評価値と同様に、画素毎の差分絶対値の総和SADや、画素毎の二乗誤差値の総和SSE等を使用できる。更に、予測残差の符号化を行う際に施される、直交変換・量子化を行うことによって復号画像に生じる歪成分の量を加味することで、より正確な誤差評価値が算出可能である。この場合には、予測誤差算出部1501内に、図1における減算部103、直交変換・量子化部104、逆量子化・逆変換部106、加算部107の機能を有することで実現できる。
予測誤差算出部1501は、各予測モード及び各予測ブロック構造において算出された予測誤差評価値と、動き補償予測信号を予測モード/ブロック構造評価部1505に供給する。
予測ベクトル算出部1502は、動き補償予測生成部1500より参照画像指定情報を供給され、予測モード情報メモリ119から供給される隣接ブロックの動き情報における候補ブロック群より、指定された参照画像に対する動きベクトル値を入力し、複数の予測ベクトルを予測ベクトル候補リストと共に生成し、差分ベクトル算出部1503に、参照画像指定情報と共に供給する。予測ベクトル算出部1502は、予測ベクトルの候補を作成し、予測ベクトル候補として登録する。
差分ベクトル算出部1503は、予測ベクトル算出部1502より供給された、予測ベクトル候補のそれぞれに対して、動き補償予測生成部1500から供給される動きベクトル値との差分を計算し、差分ベクトル値を算出する。算出された差分ベクトル値と予測ベクトル候補に対する指定情報である予測ベクトルインデックスを符号化した際、符号量が最も少ない。差分ベクトル算出部1503は、最も少ない情報量である予測ベクトルに対する予測ベクトルインデックスと差分ベクトル値を参照画像指定情報と共に、動き情報符号量算出部1504に供給する。
動き情報符号量算出部1504は、差分ベクトル算出部1503より供給される、差分ベクトル値、参照画像指定情報、予測ベクトルインデックス、および予測モードより、各予測ブロック構造及び各予測モードにおける動き情報に要する符号量を算出する。また、動き情報符号量算出部1504は、結合動き補償予測生成部1508より、結合予測モードにおいて伝送する必要がある、結合動き情報インデックスと予測モードを示すための情報を受け取り、結合予測モードにおける動き情報に要する符号量を算出する。
動き情報符号量算出部1504は、各予測ブロック構造及び各予測モードにおいて算出された動き情報及び動き情報に要する符号量を予測モード/ブロック構造評価部1505に供給する。
予測モード/ブロック構造評価部1505は、予測誤差算出部1501より供給された各予測モードの予測誤差評価値と、動き情報符号量算出部1504から供給された各予測モードの動き情報符号量を用いて、各予測モードの総合動き補償予測誤差評価値を算出し、最も少ない評価値である予測モード及び予測ブロックサイズを選択し、選択した予測モード、予測ブロックサイズと選択した予測モードに対する動き情報を、予測モード選択部116に出力する。また、予測モード/ブロック構造評価部1505は同様に、予測誤差算出部1501より供給された動き補償予測信号に対して、選択した予測モード、予測ブロックサイズにおける予測信号を選択して予測モード選択部116に出力する。
結合動き情報算出部1506は、予測モード情報メモリ119より供給される隣接ブロックの動き情報における候補ブロック群を用いて、単予測であるか双予測であるかを示す予測種別、参照画像指定情報、動きベクトル値で構成される動き情報として、複数の動き情報を結合動き情報候補リストと共に生成し、結合動き情報単予測変換部1507に供給する。
図16は、結合動き情報算出部1506の構成を示す図である。結合動き情報算出部1506は、空間結合動き情報候補リスト生成部1600、結合動き情報候補リスト削除部1601、時間結合動き情報候補リスト生成部1602、第1結合動き情報候補リスト追加部1603および第2結合動き情報候補リスト追加部1604を含む。結合動き情報算出部1506は、空間的に隣接する候補ブロック群より所定の順番で動き情報の候補を作成し、その中から、同一の動き情報を持つ候補を削除したのち、時間的に隣接する候補ブロック群より作成した動き情報の候補を追加することで、有効な動き情報のみを結合動き情報候補として登録する。この時間結合動き情報候補リスト生成部を結合動き情報候補リスト削除部より後段に配置した点が、本実施の形態の特徴的な構成であり、時間結合動き情報候補を同一の動き情報を削除する処理の対象からはずすことにより、符号化効率を落とすことなく演算量を削減することが可能である。結合動き情報算出部1506の詳細動作に関しては、後述する。
図15に戻り、結合動き情報単予測変換部1507は、結合動き情報算出部1506より供給される結合動き情報候補リスト及び、候補リストに登録される動き情報に対して、図10で示される双予測制限情報に従って、予測種別が双予測である動き情報を単予測の動き情報に変換し、結合動き補償予測生成部1508に供給する。
結合動き補償予測生成部1508は、結合動き情報単予測変換部1507より供給された結合動き情報候補リストより、登録された結合動き情報候補のそれぞれに対して、動き情報より、予測種別に応じて1つの参照画像(単予測)もしくは異なる2つの参照画像(双予測)の参照画像指定情報と動きベクトル値を動き補償予測部112に指定して、動き補償予測画像を生成すると共に、それぞれの結合動き情報インデックスを動き情報符号量算出部1504に供給する。
図15の構成では、それぞれの結合動き情報インデックスにおける予測モード評価は、予測モード/ブロック構造評価部1505で施されるが、予測誤差評価値及び動き情報符号量を予測誤差算出部1501及び動き情報符号量算出部1504より受け取り、結合動き補償予測生成部1508内で、最適な結合動き補償予測の結合動きインデックスを確定させた後に、他の予測モードを含めた最適予測モードの評価を行う構成を取ることも可能である。
図17は、図7のフローチャートにおけるステップS701、S702、S703、S705ステップの動き補償予測モード/予測信号生成処理の詳細動作を説明するためのフローチャートである。この動作は、図15の動き補償予測ブロック構造選択部113における詳細動作を示している。
最初に、定義されたCU内の予測ブロックサイズ分割モード(PU)に従って設定されたNumPartに基づき、対象CU内をPU分割した予測ブロックサイズ毎に(S1700)、ステップS1701からステップS1708までのステップが実行される(S1709)。先ず、結合動き情報候補リスト生成を行う(S1701)。
続いて、予測ブロックサイズが、図10に示した双予測を制限する制御パラメータinter_bipred_restriction_idcにより設定される双予測を制限する予測ブロックサイズであるbipred_restriction_size以下である場合(S1702:YES)には、生成された結合動き情報候補リスト内の各候補における双予測の動き情報を単予測の動き情報に置き換える、結合動き情報候補単予測変換を行う(S1703)。予測ブロックサイズが、bipred_restriction_size以下でない場合(S1702:NO)には、続くステップS1704に進む。
次に、生成または置き換えられた結合動き情報候補リストの動き情報を元に、結合予測モード評価値を生成する(S1704)。続いて、予測モード評価値を生成し(S1705)、生成した評価値を比較することで最適な予測モードを選択する(S1706)。ただし、ステップS1704及びS1705の評価値生成の順序はこれに限らない。
選択された予測モードに従い予測信号を出力し(S1707)、選択された予測モードに従い動き情報を出力する(S1708)ことで、予測ブロック単位の動き補償予測モード/予測信号生成処理が終了する。ステップS1701、S1703、S1704及びS1705の詳細動作に関しては後述する。
図18は、図17のステップS1701の結合動き情報候補リスト生成の詳細動作を説明するためのフローチャートである。この動作は、図15の結合動き情報算出部1506における構成の詳細動作を示している。
図16の空間結合動き情報候補リスト生成部1600は、予測モード情報メモリ119より供給される空間候補ブロック群から領域外である候補ブロックや、イントラモードである候補ブロックを除いた候補ブロックから空間結合動き情報候補リストを生成する(S1800)。空間結合動き情報候補リスト生成の詳細な動作は後述する。
続いて、結合動き情報候補リスト削除部1601において、生成された空間結合動き情報候補リストより、同一の動き情報を持つ結合動き情報候補を削除して動き情報候補リストを更新する(S1801)。結合動き情報候補削除の詳細な動作は後述する。
時間結合動き情報候補リスト生成部1602は、続いて予測モード情報メモリ119より供給される時間候補ブロック群から領域外である候補ブロックや、イントラモードである候補ブロックを除いた候補ブロックから時間結合動き情報候補リストを生成し(S1802)、時間結合動き情報候補リストと結合して結合動き情報候補リストとする。時間結合動き情報候補リスト生成の詳細な動作は後述する。
次に、第1結合動き情報候補リスト追加部1603は、時間結合動き情報候補リスト生成部1602で生成された結合動き情報候補リストに登録された結合動き情報候補から0個から2個の第1結合動き情報候補を生成して結合動き情報候補リストに追加し(S1803)、当該結合動き情報候補リストを第2結合動き情報候補リスト追加部1604に供給する。第1結合動き情報候補リスト追加の詳細な動作は後述する。
次に、第2結合動き情報候補リスト追加部1604は、第1結合動き情報候補リスト追加部1603より供給される結合動き情報候補リストに依存しない0個から4個の第2結合動き情報候補を生成して第1結合動き情報候補リスト追加部1603より供給される結合動き情報候補リストに追加し(S1804)、処理を終了する。第2結合動き情報候補リスト追加の詳細な動作は後述する。
予測モード情報メモリ119より、結合動き情報算出部1506に供給される動き情報の候補ブロック群には、空間候補ブロック群と時間候補ブロック群が含まれる。まず、空間結合動き情報候補リスト生成について説明する。
図19は、空間結合動き情報候補リスト生成に用いる空間候補ブロック群を示す図である。空間候補ブロック群は、符号化対象画像の予測対象ブロックに隣接している同一画像のブロックを示す。ブロック群は、その管理が最小予測ブロックサイズ単位で行われ、候補ブロックの位置は、最小予測ブロックサイズの単位で管理されるが、隣接ブロックの予測ブロックサイズが最小予測ブロックサイズよりも大きな場合には、予測ブロックサイズ内の全ての候補ブロックに同一の動き情報が格納される。実施の形態1においては、隣接するブロック群の内、図19に示すようなブロックA0、ブロックA1、ブロックB0、ブロックB1、ブロックB2の5ブロックを空間候補ブロック群とする。
図20は、空間結合動き情報候補リスト生成の詳細動作を説明するためのフローチャートである。空間候補ブロック群に含まれる5つの候補ブロックのうち、ブロックA0、ブロックA1、ブロックB0、ブロックB1、ブロックB2について、ブロックA1、ブロックB1、ブロックB0、ブロックA0の順序で以下の処理を繰り返し行う(S2000〜S2003)。
最初に候補ブロックの有効性を検査する(S2001)。候補ブロックが領域外でなくイントラモードでない場合、候補ブロックは有効となる。候補ブロックが有効であれば(S2001:YES)、候補ブロックの動き情報を空間結合動き情報候補リストに追加する(S2002)。
ステップS2000からS2003までの繰り返し処理に続いて、空間結合動き情報候補リストに追加された候補数が4未満だった場合(S2004:YES)、候補ブロックB2の有効性を検査する(S2005)。ブロックB2が領域外でなくイントラモードでない場合(S2005:YES)、ブロックB2の動き情報を空間結合動き情報候補リストに追加する(S2006)。
ここでは、空間結合動き情報候補リストには4以下の候補ブロックの動き情報が含まれるとしたが、空間候補ブロック群は、処理対象の予測ブロックに隣接する少なくとも1以上の処理済みのブロックであり、候補ブロックの有効性によって空間結合動き情報候補リストの数が変動すればよく、これに限定されない。
図21は、結合動き情報候補削除の詳細動作を説明するためのフローチャートである。空間結合動き情報候補リスト作成処理により、生成される結合動き情報候補の最大数をMaxSpatialCandとすると、i=MaxSpatialCand−1からi>0までの結合動き情報候補(候補(i))に対して以下の処理を繰り返し行う(S2100〜S2106)。
候補(i)が存在していれば(S2101のYES)、ii=i−1からii>=0までの結合動き情報候補(候補(ii))に対して以下の処理を繰り返し行い(S2102〜S2105)、候補(i)が存在しない場合(S2101のNO)はステップS2102からS2105までの候補(ii)についての繰り返し処理をスキップする。
まず、候補(i)の動き情報(動き情報(i))と候補(ii)の動き情報(動き情報(ii))が同一であるか検査し(S2103)、同じである場合(S2103のYES)、候補(i)を結合動き情報候補リストから削除し(S2104)、候補(ii)についての繰り返し処理を終了する。
動き情報(i)と動き情報(ii)が同一でない場合(S2103のNO)、iiから1を減算し、候補(ii)についての処理を繰り返す(S2102〜S2105)。
ステップS2100からS2105までの繰り返し処理に続いて、iから1を減算し、候補(i)についての処理を繰り返す(S2100〜S2106)。
図22に結合動き情報候補が4つの場合のリスト中の候補の比較関係を示す。すなわち時間結合動き情報候補を含まない4つの空間結合動き情報候補について総当たりで比較して同一性を判定し、重複する候補を削除する。
ここで、結合予測モードは時間方向や空間方向の動きの連続性を用いて、予測対象ブロックは自身の動き情報を直接符号化せずに、空間及び時間的に隣接するブロックの動き情報を符号化に使用する手法であるが、空間結合動き情報候補が空間方向の連続性を基づいているのに対し、時間結合動き情報候補は時間方向の連続性に基づいて後述する方法で生成されており、これらの性質は異なるものである。よって時間結合動き情報候補と空間結合動き情報候補に同一の動き情報が含まれることは稀であり、同一の動き情報を削除するための結合動き情報候補削除処理の対象から時間結合動き情報候補を除いても、最終的に得られる結合動き情報候補リストに同一の動き情報が含まれることは稀である。
また、後述するように時間結合動き情報候補ブロックは最小予測ブロックよりも大きなサイズである最小時間予測ブロック単位で管理されるため、時間的に隣接する予測ブロックの大きさが最小時間予測ブロックよりも小さな場合には、本来の位置とはずれた位置の動き情報が用いられることとなり、その結果、動き情報に誤差を含む場合が多い。そのため、空間結合動き情報候補の動き情報とは異なる動き情報となることが多く、同一の動き情報を削除するための結合動き情報候補削除処理の対象から除いても影響が少ない。
図23は、空間結合動き情報候補の最大数が4である場合の結合動き情報候補削除における候補の比較内容の一例である。図23(a)は空間結合動き情報候補のみを結合動き情報候補削除処理の対象とした場合の比較内容であり、図23(b)は空間結合動き情報候補と時間結合動き情報を処理の対象とした場合の比較内容である。空間結合動き情報候補のみを結合動き情報候補削除処理の対象とすることにより、動き情報を比較の回数が10回から6回に減少している。
このように、時間結合動き情報候補を結合動き情報候補削除処理の対象にしないことにより、同一の動き情報を適切に削除しながら、動き情報の比較の回数を10回から6回に削減することが可能である。
また、すべての空間予測候補の同一を比較せず、空間的な位置が近い候補間同士の比較のみ行うことで 結合動き情報候補削除処理の回数を削減することも可能である。具体的には、図19のB1位置から算出された結合動き情報はA1位置の結合動き情報と比較し、B0位置から算出された結合動き情報はB1位置の結合動き情報のみと比較し、A0位置から算出された結合動き情報はA1のみと比較し、B2位置から算出された結合動き情報はA1、B1のみと比較することで、動き情報の比較回数を最大5回に制限できる。
上記のように特定の空間予測候補のみ結合動き情報の同一比較を行う場合、空間結合動き情報候補リスト生成中に(S1800)、結合動き情報候補削減処理(S1801)を行った方が、同一結合動き情報が残存してしまうことによる符号化効率低下の影響が少ない。つまり、空間結合動き情報候補リスト生成時に結合動き情報の同一比較を行うことで、不要な結合動き情報を追加せずにすむため、図20のステップS2004の最大空間予測候補数を4つに制限する場合に、B2位置から算出される結合動き情報が追加できる可能性が高まるためである。
続いて、時間結合動き情報候補リスト生成について説明する。図24は、時間結合動き情報候補リスト生成に用いる時間方向周辺予測ブロックの定義を説明する図である。時間候補ブロック群は、予測対象ブロックが属する画像とは別の復号済みの画像ColPicに属するブロックの中で、予測対象ブロックと同位置及びその周辺にあるブロックを示す。ブロック群は、その管理が最小時間予測ブロックサイズ単位で行われ、候補ブロックの位置は、最小時間予測ブロックサイズの単位で管理される。本発明の実施の形態1においては、最小時間予測ブロックサイズは最小予測ブロックサイズを垂直方向、水平方向にそれぞれ2倍した大きさとする。時間的に隣接するブロックの予測ブロックのサイズが最小時間予測ブロックサイズよりも大きな場合には、予測ブロックサイズ内のすべての候補ブロックに同一の動きの情報が格納される。一方、予測ブロックのサイズが最小時間予測ブロックサイズよりも小さな場合には、時間方向周辺予測ブロックの左上に位置する予測ブロックの動きの情報を時間方向周辺予測ブロックの情報とする。図24(b)に予測ブロックサイズが最小時間予測ブロックサイズより小さい場合の時間方向周辺予測ブロックの動き情報を示す。
図24(a)におけるA1〜A4、B1〜B4、C、D、E、F1〜F4、G1〜G4、H、I1〜I16の位置のブロックが、時間的に隣接するブロック群となる。実施の形態1においては、これら時間的に隣接するブロック群の内、時間候補ブロック群をブロックHとブロックI6の2ブロックとする。
図25は、時間結合動き情報候補リスト生成の詳細動作を説明するためのフローチャートである。時間候補ブロック群に含まれる2つの候補ブロックであるブロックHとブロックI11について(S2500、S2505)、ブロックH、ブロックI11の順序で候補ブロックの有効性を検査する(S2501)。候補ブロックが有効である場合(S2501:YES)、ステップS2502〜ステップS2504の処理が行われ、生成された動き情報が時間結合動き情報候補リストに登録され、処理が終了する。候補ブロックが画面領域外の位置を示す場合や、候補ブロックがイントラ予測ブロックである場合(S2501:NO)、候補ブロックが有効でなく、次の候補ブロックの有効/無効判定が行われる。
候補ブロックが有効である場合(S2501:YES)、候補ブロックの動き情報をもとに結合動き情報候補に登録する参照画像選択候補を確定する(S2502)。実施の形態1ではL0予測の参照画像を、L0予測の参照画像のうち処理対象画像に最も近い距離にある参照画像とし、L1予測の参照画像を、L1予測の参照画像のうち処理対象画像に最も近い距離にある参照画像とする。
ここでの参照画像選択候補の確定手法は、L0予測の参照画像とL1予測の参照画像が決定できればよく、これに限定されない。符号化処理と復号処理で同一の手法で参照画像を確定することで、符号化時に意図した参照画像を確定できる。他の確定手法としては、例えばL0予測の参照画像及びL1予測の参照画像の参照画像インデックスが0である参照画像を選択する手法や、空間隣接ブロックが使用しているL0参照画像及びL1参照画像を選択する手法や、符号化ストリーム中で各予測種別の参照画像を指定する手法を用いることが可能である。
次に、候補ブロックの動き情報をもとに結合動き情報候補に登録する動きベクトル値を確定する(S2503)。実施の形態1における、時間結合動き情報は、候補ブロックの動き情報で有効な予測種別である動きベクトル値をもとに、双予測の動き情報を算出する。候補ブロックの予測種別がL0予測もしくはL1予測の単予測の場合には、予測に用いられている予測種別(L0予測或いはL1予測)の動き情報を選択し、その参照画像指定情報と動きベクトル値を双予測動き情報生成の基準値とする。
候補ブロックの予測種別が双予測である場合には、L0予測或いはL1予測のどちらか一方の動き情報を基準値として選択する。基準値の選択方法は、例えばColPicと同じ予測種別に存在する動き情報を選択する、候補ブロックのL0予測、L1予測のそれぞれの参照画像でColPicとの画像間距離が近い方を選択する、符号化側で選択してシンタックスで明示的に伝送する等が挙げられる。
双予測動き情報生成の基準とする動きベクトル値が確定したら、結合動き情報候補に登録する動きベクトル値を算出する。
図26は、時間結合動き情報に対する基準動きベクトル値ColMvに対する、L0予測、L1予測に対して登録する動きベクトル値mvL0t、mvL1tの算出手法を説明するための図である。
基準動きベクトル値ColMvに対するColPicと候補ブロックの基準とする動きベクトルの対象となる参照画像との画像間距離をColDistとする。L0予測、L1予測の各参照画像と処理対象画像との画像間距離をCurrL0Dist、CurrL1Distとする。ColMvを、ColDistとCurrL0Dist、CurrL1Distの距離比率でスケーリングした動きベクトルを、それぞれに登録する動きベクトルとする。具体的には、登録する動きベクトル値mvL0t、mvL1tは、下記式1、2で算出される。
mvL0t=mvCol×CurrL0Dist/ColDist・・・(式1)
mvL1t=mvCol×CurrL1Dist/ColDist・・・(式2)
となる。
図25に戻り、このようにして生成された、双予測の参照画像選択情報(インデックス)と、動きベクトル値を結合動き情報候補に追加し(S2504)、時間結合動き情報候補リスト作成処理が終了する。
続いて、第1結合動き情報候補リスト追加部1603の詳細な動作について説明する。図27は、第1結合動き情報候補リスト追加部1603の動作を説明するためのフローチャートである。最初に、時間結合動き情報候補リスト生成部1602より供給される結合動き情報候補リストに登録された結合動き情報候補の数(NumCandList)と結合動き情報候補最大数(MaxNumMergeCand)から、第1追加結合動き情報候補を生成する最大数であるMaxNumGenCandを式3より算出する(S2700)。
MaxNumGenCand=MaxNumMergeCand-NumCandList; (NumCandList>1)
MaxNumGenCand=0; (NumCandList<=1) (式3)
次に、MaxNumGenCandが0より大きいか検査する(S2701)。MaxNumGenCandが0より大きくなければ(S2701:NO)、処理を終了する。MaxNumGenCandが0より大きければ(S2701:YES)、以下の処理を行う。まず、組み合わせ検査回数であるloopTimesを決定する。loopTimesはNumCandList×NumCandListに設定する。ただし、loopTimesが8を超える場合にはloopTimesは8に制限する(S2702)。ここで、loopTimesは0から7までの整数となる。loopTimesだけ以下の処理を繰り返し行う(S2702からS2708)。
結合動き情報候補Mと結合動き情報候補Nの組み合わせを決定する(S2703)。ここで、組み合わせ検査回数と結合動き情報候補Mと結合動き情報候補Nの関係について説明する。
図28は組み合わせ検査回数と結合動き情報候補Mと結合動き情報候補Nの関係を説明するための図である。図28のようにMとNは異なる値であって、まずMを0に固定してNの値を1〜4(最大値はNumCandList)に変化させ、その後、Nの値を0に固定してMの値を1〜4(最大値はNumCandList)に変化させる。このような組み合わせ定義は、最も選択される確率の高い動き情報である結合動き情報候補リスト内で最初の動き情報を有効に活用しつつ、実際には組み合わせテーブルを持たずに計算で組み合わせパターンを算出できる効果がある。
結合動き情報候補MのL0予測が有効で且つ結合動き情報候補NのL1予測が有効であるか検査する(S2704)。結合動き情報候補MのL0予測が有効で且つ結合動き情報候補NのL1予測が有効であれば(S2704:YES)、結合動き情報候補MのL0予測の動きベクトルと参照画像を結合動き情報候補NのL1予測の動きベクトルと参照画像と組み合わせて双結合動き情報候補を生成する(S2705)。結合動き情報候補MのL0予測が有効で且つ結合動き情報候補NのL1予測が有効でなければ(S2704:NO)、次の組み合わせを処理する。ここで、第1追加結合動き情報候補として、L0予測の動き情報とL1予測が同一である場合があり、動き補償を双予測で行ってもL0予測もしくはL1予測の単予測と同じ結果が得られるため、L0予測の動き情報とL1予測の動き情報が同一である追加結合動き情報候補生成は、動き補償予測の演算量を増加させる要因となる。そのため、通常は、L0予測の動き情報とL1予測の動き情報が同一であるかどうか比較し、同一でない場合にのみ、第1追加結合動き情報候補とする。
ステップS2705に続いて、双結合動き情報候補を結合動き情報候補リストに追加する(S2706)。ステップS2706に続いて、生成した双結合動き情報の数がMaxNumGenCandであるか検査する(S2707)。生成された双結合動き情報の数がMaxNumGenCandであれば(S2707のYES)、処理を終了する。生成された双結合動き情報の数がMaxNumGenCandでなければ(S2707のNO)、次の組み合わせを処理する。
ここで、第1追加結合動き情報候補は、結合動き情報候補リストに登録された結合動き情報候補の動き情報と処理対象の動き情報候補の動きに微妙にずれがある場合に、結合動き情報候補リストに登録された結合動き情報候補の動き情報を修正して有効な結合動き情報候補を生成することで、符号化効率を高めることができる。
続いて、第2結合動き情報候補リスト追加部1604の詳細な動作について説明する。図29は、第2結合動き情報候補リスト追加部1604の動作を説明するためのフローチャートである。最初に、第1結合動き情報候補リスト追加部1603より供給される結合動き情報候補リストに登録された結合動き情報候補の数(NumCandList)と結合動き情報候補最大数(MaxNumMergeCand)から、第1追加結合動き情報候補を生成する最大数であるMaxNumGenCandを式4より算出する(S2900)。
MaxNumGenCand=MaxNumMergeCand-NumCandList; (式4)
次に、以下の処理をiについてMaxNumGenCand回繰り返し行う(S2901からS2905)。ここで、iは0からMaxNumGenCand−1の整数となる。L0予測の動きベクトルが(0,0)、参照インデックスがiであって、L1予測の動きベクトルが(0,0)、参照インデックスがiである予測種別が双予測である第2追加結合動き情報候補を生成する(S2902)。第2追加結合動き情報候補を結合動き情報候補リストに追加する(S2903)。次のiについて処理する(S2904)。
ここでは、第2追加結合動き情報候補を、L0予測の動きベクトルが(0,0)、参照インデックスがiであって、L1予測の動きベクトルが(0,0)、参照インデックスがiである予測種別が双予測である結合動き情報候補とした。これは、一般的な動画像において、L0予測の動きベクトルとL1予測の動きベクトルが(0,0)である結合動き情報候補の発生頻度が統計的に高いためである。結合動き情報候補リストに登録された結合動き情報候補の動き情報に依存せず、統計的に利用頻度が高い結合動き情報候補であれば、これに限定されない。例えば、L0予測やL1予測の動きベクトルはそれぞれ(0,0)以外のベクトル値でもよく、L0予測とL1予測の参照インデックスが異なるように設定してもよい。また、第2追加結合動き情報候補を符号化済みの画像や符号化済みの画像の一部の発生頻度の高い動き情報とし、符号化ストリームに符号化して伝送して設定することもできる。なお、ここではBピクチャ(Bスライス)について説明したが、Pピクチャ(Pスライス)の場合は、L0予測の動きベクトルが(0,0)で、予測種別がL0予測である第2追加結合動き情報候補を生成する。
ここで、第2追加結合動き情報候補として、L0予測の参照画像とL1予測の参照画像が同一である場合、第1追加結合動き情報候補リスト生成部と同様に、動き補償を双予測で行ってもL0予測もしくはL1予測の単予測と同じ結果が得られため、L0予測の参照画像とL1予測の参照画像が同一である追加結合動き情報候補生成は、動き補償予測の演算量を増加させる要因となる。しかし、本発明の実施の形態では後述する動き補償部で一括して双予測を単予測に変換する処理を行うため、第2追加結合動き情報候補リスト追加部でのL0予測の動き情報とL1予測の動き情報の同一性判断を行う必要はなく演算量が削減できる。
ここで、第2追加結合動き情報候補として結合動き情報候補リストに登録された結合動き情報候補に依存しない結合動き情報候補を設定することで、結合動き情報候補リストに登録された結合動き情報候補が0個である場合に、結合予測モードを利用することを可能とし、符号化効率を向上させることができる。また、結合動き情報候補リストに登録された結合動き情報候補の動き情報と処理対象の動き情報候補の動きが異なる場合に、新たな結合動き情報候補を生成して選択肢の幅を広げることで、符号化効率を向上させることができる。
図30は、図17のステップS1703における結合動き情報候補単予測変換処理の詳細動作を説明するためのフローチャートである。最初に、結合動き情報候補リスト生成処理により、生成された結合動き情報候補リストの数をnum_of_indexとすると、i=0からnum_of_index−1までの結合動き情報候補について以下の処理を繰り返し行う(S3000からS3005)。
先ず、結合動き情報候補リストよりインデックスiに格納された動き情報を取得する(S3001)。続いて、動き情報の予測種別が単予測である場合(S3002:YES)、そのままインデックスiに格納された動き情報に対しての処理を終了し、次のインデックスに進む(S3005)。
動き情報が単予測でない場合、つまり動き情報が双予測である場合(S3002:NO)には、双予測の動き情報を単予測に変換するために、インデックスiに格納された動き情報のL1情報を無効にする(S3003)。実施の形態1においては、このようにL1情報を無効にすることで双予測の動き情報をL0予測の単予測に変換させているが、逆にL0情報を無効にして、双予測の動き情報をL1予測の単予測に変換させることも可能であり、暗黙に単予測に変換する際の無効にする予測種別を定義することで実現できる。
次に、単予測に変換したインデックスiの動き情報を格納し(S3004)、次のインデックスに進む(S3005)。i=0からnum_of_index−1までの結合動き情報候補について処理を行い、結合動き情報候補単予測変換処理が終了する。
実施の形態1において、予測ブロックサイズによる結合動き情報の双予測制限は、結合動き情報候補リストを一旦生成した後に、図30のフローチャートに示す結合動き情報候補の単予測変換処理を行っている。結合動き情報の単予測変換処理に関しては、結合動き情報候補生成処理である図18のフローチャートで示される処理の内部で、候補生成毎に判断を加えて、単予測の結合動き情報候補リストを生成することも可能であるが、その場合には、予測ブロックサイズによる条件判断が各処理に入ることになり、処理が複雑になり、リスト構築処理の負荷が増大する。実施の形態1では、一旦リストを構築した後に単予測への動き情報の変換処理を施すことで、リスト構築処理の負荷増大を防いだ、双予測の制限処理を実現できる効果を有する。
図31は、図11のステップS1702における結合予測モード評価値生成処理の詳細動作を説明するためのフローチャートである。この動作は、図15の結合動き補償予測生成部1508を用いた構成の詳細動作を示している。
最初に予測誤差評価値を最大値に設定し、予測誤差が最小となる結合動き情報インデックスを初期化(例えば、−1などのリスト外の値)する(S3100)。結合動き情報候補リスト生成処理により、生成された結合動き情報候補リストの数をnum_of_indexとすると、i=0からnum_of_index−1までの結合動き情報候補について以下の処理を繰り返し行う(S3101からS3109)。
先ず、結合動き情報候補リストよりインデックスiに格納された動き情報を取得する(S3102)。続いて動き情報符号量を算出する(S3103)。結合予測モードにおいては、結合動き情報インデックスのみが符号化されるので、結合動き情報インデックスのみが動き情報符号量となる。
結合動き情報インデックスの符号列としては、実施の形態1では、Truncated Unary符号列を用いる。図32は、結合動き情報候補数が5の場合のTruncated Unary符号列を示す図である。Truncated Unary符号列を用いて結合動き情報インデックスの値を符号化する場合には、結合動き情報インデックスが小さいほど、結合動き情報インデックスに割り当てられる符号ビットが小さくなる。例えば、結合動き情報候補数が5個である場合、結合動き情報インデックスが1であれば'10'の2ビットで表現されるが、結合動き情報インデックスが3であれば'1110'の4ビットで表現される。なお、ここでは上記のように結合動き情報インデックスの符号化にTruncated Unary符号列を利用しているが、他の符号列生成手法を用いることも可能であり、これに限定されない。
続いて、動き情報の予測種別が単予測である場合(S3104:YES)、1つの参照画像に対する参照画像指定情報と動きベクトルを、図1における動き補償予測部112に設定して、動き補償単予測ブロックを生成する(S3105)。動き情報が単予測でない場合、つまり動き情報が双予測である場合(S3104:NO)には、2つの参照画像に対する参照画像指定情報と動きベクトルを動き補償予測部112に設定して、動き補償双予測ブロックを生成する(S3105)。
続いて、動き補償予測ブロックと予測対象ブロックの予測誤差と動き情報符号量より、予測誤差評価値を算出し(S3107)、予測誤差評価値が最小値である場合には評価値を更新すると共に、予測誤差最小インデックスを更新する(S3108)。
全ての結合動き情報候補についての予測誤差評価値が比較された結果、選択された予測誤差最小インデックスを、結合予測モードで用いる結合動き情報インデックスとして、予測誤差最小値、動き補償予測ブロックと共に出力し(S3109)、結合予測モード評価値生成処理を終了する。
図33は、図17のステップS1703の予測モード評価値生成処理の詳細動作を説明するためのフローチャートである。
最初に、予測モードが単予測であるか否かを判別する(S3300)。図34に予測ブロックの動き情報に関するシンタックスを示す。図34中のmerge_flagは結合予測モードであるかどうかを示し、merge_flagが0の場合が動き検出予測モードを示す。動き検出予測モードである場合で双予測を用いることが可能なBスライスの場合、予測種別が単予測であるか双予測であるかを示すフラグinter_pred_flagを伝送する。ここで、予測ブロックのサイズが双予測制限ブロックサイズ以下である場合にも双予測を禁止せずinter_pred_flagを伝送する。これは、予測ブロックのサイズが双予測制限ブロックサイズ以下であるかどうかに応じてinter_pred_flagを伝送するかどうかを切り替えると、エントロピー符号化・復号化に条件分岐が必要になるため、処理が複雑になるのを防止するためである。
図33のフローチャートに戻り、単予測であれば(S3300:YES)、処理対象とする参照画像リスト(LX)を予測に用いている参照画像リストに設定する(S3301)。単予測でなければ、双予測であるから、この場合はLXをL0とする(S3302)。
次に、LX予測に対する参照画像指定情報(インデックス)と動きベクトル値を取得する(S3303)。続いて、予測ベクトル候補リストを生成し(S3304)、予測ベクトルの中から最適予測ベクトルを選択し、差分ベクトルを生成する(S3305)。最適予測ベクトルの選択手法は、予測ベクトルと伝送する動きベクトルの差分ベクトルを実際に符号化する際の符号量が最も少ないものを選択することが望ましいが、単純に差分ベクトルの水平・垂直成分の絶対値の総和が小さいものを選択するなどの手法で、簡易的に算出してもよい。
続いて、再度予測モードが単予測である否かを判別し(S3306)、予測モードが単予測であればステップS3311に進む。単予測でない、すなわち、双予測であれば、処理対象の参照リストLXがL1か否かを判定する(S3307)。参照リストLXがL1であれば、ステップS3311に進み、L1でない、すなわちL0の場合には、予測ブロックサイズがbipred_restriction_size以下である場合(S3308:YES)には、L1予測に対する情報を算出せず、予測モードを単予測に変換し(S3310)、ステップS3311に進む。
予測ブロックサイズがbipred_restriction_sizeより大きい場合(S3308:NO)には、LXをL1として(S3309)、ステップS3303からステップS3306までの処理と同じ処理が行われる。
実施の形態1においては、復号装置において、図34に示された予測ブロックの動き情報に関するシンタックスに従い復号を行った場合に、予測ブロックサイズに対する双予測制限時に対象となる予測ブロックサイズで双予測の動き情報が復号されないように、ステップS3308及びステップS3310の処理を用いて、予測モード評価値生成処理で双予測を制限する構成を取っている。
動きベクトル検出時に、双予測を想定した動きベクトル検出を行った場合には、単予測で用いられる動きベクトル情報と、上記ステップにおいて双予測を制限することで生成された単予測の動きベクトル情報が異なる場合があるため、単予測の新たな動き情報候補が登録されることで、単純に双予測の動き情報を使用しないように制限した場合よりも、符号化効率を向上させることができる。
続いて、動き情報符号量を算出する(S3311)。単予測モードの場合に、符号化する動き情報としては、1つの参照画像に対する、参照画像指定情報、差分ベクトル値、及び予測ベクトルインデックスの3要素、双予測モードの場合には、L0とL1の2つの参照画像に対する、参照画像指定情報、差分ベクトル値、及び予測ベクトルインデックスの計6要素となり、各々符号化された符号量の総量が動き情報符号量として算出される。本実施の形態における予測ベクトルインデックスの符号列生成手法としては、結合動き情報インデックスの符号列と同様にTruncated Unary符号列を用いるものとする。
続いて、参照画像に対する参照画像指定情報と動きベクトルを図1における動き補償予測部112に設定して、動き補償予測ブロックを生成する(S3312)。
さらに、動き補償予測ブロックと予測対象ブロックの予測誤差と動き情報符号量より、予測誤差評価値を算出し(S3313)、予測誤差評価値と、参照画像に対する動き情報である、参照画像指定情報と差分ベクトル値と予測ベクトルインデックスを動き補償予測ブロックと共に出力し(S3314)、予測モード評価値生成処理を終了する。
以上の処理が、実施の形態1における動画像符号化装置における動き補償予測ブロック構造選択部113の詳細動作となる。
本発明の実施の形態1において、動き補償予測におけるメモリアクセス量を制限するための制御パラメータである、図10に示した、inter_4x4_enable及びinter_bipred_restriction_idcを、復号装置で認識するために伝送するシンタックスの一例を図35に示す。
図35においては、図10に示した制御パラメータ値をそのまま、シーケンスや画像単位で設定するヘッダ情報の一部として伝送する構成を取っている。一例では、シーケンス単位のパラメータを伝送するseq_parameter_set_rbsp()の内部において伝送され、図3に示す最小CUサイズに対する情報がlog2_min_coding_block_size_minus3で8を基準とした(8×8を示す)2のべき乗値で定義され、最大CUサイズ(実施の形態1における符号化ブロックサイズ)が最大CU分割数(Max_CU_Depth)を示す値となるlog2_diff_max_min_coding_block_sizeとして、伝送される。
inter_4x4_enableは、inter_4x4_enable_flagとして、log2_min_coding_block_size_minus3が0すなわち最小CUサイズが8×8の場合にのみ伝送されることで、inter_4x4_enableによる制御が有効な条件の時にのみ制御パラメータを送ることで、無効な制御情報の伝送を防ぐことができる。一方、inter_bipred_restriction_idcに関しては、最小CUサイズが16×16の場合においても制御に必要となるため、常に伝送される構成を取る。
実施の形態1においては、これらの制御パラメータ値をシーケンス単位のパラメータで符号化伝送する構成を示したが、フレーム単位等の所定符号化ブロック単位以上の間隔で設定を変更させることも可能であり、シーケンス単位での制御パラメータ構成に制限されることはなく、所定単位に制御パラメータを復号装置が取得できることが、実施の形態1における構成の特徴である。
[実施の形態1における動画像復号装置における動き情報復号部の詳細動作説明]
図36は、図11に示した実施の形態1の動画像復号装置における動き情報復号部1111の詳細な構成を示す図である。動き情報復号部1111は、動き情報ビットストリーム復号部3600、予測ベクトル算出部3601、ベクトル加算部3602、動き補償予測復号部3603、結合動き情報算出部3604、結合動き情報単予測変換部3605、及び結合動き補償予測復号部3606を含む。
図11における動き情報復号部1111に対して、予測モード/ブロック構造復号部1108より入力された動き情報に関するビットストリームが、動き情報ビットストリーム復号部3600に供給され、予測モード情報メモリ1112より入力された動き情報が、予測ベクトル算出部3601、及び結合動き情報算出部3604に供給される。
また、動き情報復号部1111に対して、動き補償予測復号部3603、及び結合動き補償予測復号部3606から、動き補償予測に用いる参照画像指定情報と動きベクトルが出力され、予測種別を示す情報を含めた復号された動き情報が、動き補償予測部1114及び予測モード情報メモリ1112に供給される。
動き情報ビットストリーム復号部3600は、入力された動き情報ビットストリームを符号化シンタックスに従って復号していくことで、伝送された予測モードと、予測モードに応じた動き情報を生成する。生成した動き情報の中で、結合動き情報インデックスは、結合動き補償予測復号部3606に供給され、参照画像指定情報が予測ベクトル算出部3601に供給され、予測ベクトルインデックスがベクトル加算部3602に供給され、差分ベクトル値がベクトル加算部3602に供給される。
予測ベクトル算出部3601は、予測モード情報メモリ1112より供給された隣接ブロックの動き情報と、動き情報ビットストリーム復号部3600より供給された参照画像指定情報から、動き補償予測の対象となる参照画像に対する予測ベクトル候補リストを生成し、参照画像指定情報と共にベクトル加算部3602に供給する。予測ベクトル算出部3601の動作に関しては、動画像符号化装置における図15の予測ベクトル算出部1502と同一の動作が行われ、符号化時の予測ベクトル候補リストと同一の候補リストが生成される。
ベクトル加算部3602は、予測ベクトル算出部3601より供給された予測ベクトル候補リスト及び参照画像指定情報と、動き情報ビットストリーム復号部3600から供給された予測ベクトルインデックス及び差分ベクトルより、予測ベクトルインデックスで示された位置に登録された予測ベクトル値と差分ベクトル値を加算することで、動き補償予測対象となる参照画像に対しての動きベクトル値が再生される。再生された動きベクトル値は、参照画像指定情報と共に、動き補償予測復号部3603に供給される。
動き補償予測復号部3603は、ベクトル加算部2602より参照画像に対する、再生された動きベクトル値と参照画像指定情報が供給され、動きベクトル値と参照画像指定情報を動き補償予測部1114に設定することで、動き補償予測信号を生成する。
結合動き情報算出部3604は、予測モード情報メモリ1112から供給される隣接ブロックの動き情報より、結合動き情報候補リストを生成し、結合動き情報候補リストとリスト内の構成要素である結合動き情報候補の参照画像指定情報と動きベクトル値を、結合動き情報単予測変換部3605に供給する。
結合動き情報算出部3604の動作に関しては、動画像符号化装置における図15の結合動き情報算出部1506と同一の動作が行われ、符号化時の結合動き情報候補リストと同一の候補リストが生成される。
結合動き情報単予測変換部3605では、動画像符号化装置における図15の結合動き情報単予測変換部1507と同一の動作が行われ、結合動き情報算出部3604より供給される結合動き情報候補リスト及び、候補リストに登録される動き情報に対して、図10で示される双予測制限情報に従って、予測種別が双予測である動き情報を単予測の動き情報に変換し、結合動き補償予測復号部3606に供給する。
結合動き補償予測復号部3606は、結合動き情報単予測変換部3605より供給される結合動き情報候補リストとリスト内の構成要素である結合動き情報候補の参照画像指定情報と動きベクトル値と、動き情報ビットストリーム復号部3600より供給される結合動き情報インデックスより、結合動き情報インデックスで示された結合動き情報候補リストにおける参照画像指定情報と動きベクトル値を再生し、動き補償予測部1114に設定することで、動き補償予測信号を生成する。
図37は、図14のステップS1402、S1405、S1408、S1410の予測ブロック単位復号処理の詳細動作を説明するためのフローチャートである。最初に、CU単位の符号化ストリームを取得し(S3700)、CU内の予測ブロックサイズ分割モード(PU)に従って設定されたNumPartに基づき、対象CU内をPU分割した予測ブロックサイズ毎に(S3701)、ステップS3702からステップS3706までのステップが実行される(S3707)。
CU単位の符号化ストリームより分離された動き情報の符号化列は、図11の予測モード/ブロック構造復号部1108より動き情報復号部1111に供給され、予測モード情報メモリ1112より供給される候補ブロック群の動き情報を用いて、復号対象ブロックの動き情報を復号する(S3702)。ステップS3702の処理の詳細については後述する。
分離された予測誤差情報の符号化列は、予測差分情報復号部1102に供給され、量子化された予測誤差信号として復号され、逆量子化・逆変換部1103で逆量子化や逆直交変換などの処理を施されることで、復号予測誤差信号が生成される(S3703)。
動き情報復号部1111より、復号対象ブロックの動き情報が動き補償予測部1114に供給され、動き補償予測部1114は動き情報にしたがって動き補償予測を行い、予測信号を算出する(S3704)。加算部1104は、逆量子化・逆変換部1103から供給された復号予測誤差信号と、動き補償予測部1114から予測モード/ブロック構造選択部1109に供給され、更に予測モードで動き補償予測が選択されることで加算部1104に供給された予測信号とを加算し、復号画像信号を生成する(S3705)。
加算部1104より供給された復号画像信号は、フレーム内復号画像バッファ1105に格納されると共に、ループフィルタ部1106に供給される。また、動き情報復号部1111より供給された復号対象ブロックの動き情報が予測モード情報メモリ1112に格納される(S3706)。これが、対象CU内のすべての予測ブロックに対して施されることにより、予測ブロック単位の復号処理が終了する。
図38は、図37のステップS3702の動き情報復号処理の詳細動作を説明するためのフローチャートである。動き情報ビットストリーム復号部3600と予測ベクトル算出部3601、及び結合動き情報算出部3604により、図37のステップS3702の動き情報復号処理が行われる。
動き情報復号処理は、特定のシンタックス構造で符号化された符号化ビットストリームより動き情報を復号する処理である。最初に符号化ブロックのCU単位で復号されたSkipフラグがSkipモードを示している場合(S3800:YES)、結合予測動き情報復号を行う(S3801)。ステップS3801の詳細処理については、後述する。
一方、Skipモードでない場合には(S3800:NO)、マージフラグを復号する(S3802)。マージフラグが1を示している場合(S3803:YES)には、ステップS3801の結合予測動き情報復号に進む。
マージフラグが1でない場合(S3803:NO)、動き予測フラグを復号し(S3804)、予測動き情報復号を行い(S3805)、処理を終了する。ステップS3805の詳細動作については、後述する。
図39は、図38のステップS3801の結合予測動き情報復号処理の詳細動作を説明するためのフローチャートである。
最初に予測モードに結合予測モードを設定し(S3900)、結合動き情報候補リストを生成する(S3901)。ステップS3901の処理は、動画像符号化装置における図17のステップS1701の結合動き情報候補リスト生成処理と同一の処理である。
続いて、予測ブロックサイズが、図10に示した双予測を制限する制御パラメータinter_bipred_restriction_idcにより設定される双予測を制限する予測ブロックサイズであるbipred_restriction_size以下である場合(S3902:YES)には、格納された結合動き情報候補リスト内の各候補における双予測の動き情報を単予測の動き情報に置き換える、結合動き情報候補単予測変換を行う(S3903)。この処理では、図30のフローチャートで示した符号化装置における結合動き情報単予測変換処理と同じ処理が施される。予測ブロックサイズが、bipred_restriction_size以下でない場合(S3902:NO)には、ステップS3904に進む。
つぎに、結合動き情報インデックスを復号し(S3904)、続いて、結合動き情報候補リストより、結合動き情報インデックスで示す位置に格納されている動き情報を取得する(S3905)。取得する動き情報としては、単予測/双予測を示す予測種別、参照画像指定情報、動きベクトル値となる。
実施の形態1においては、結合動き情報の双予測から単予測への変換処理は、結合動き情報のインデックスの値を変更することがないため、復号装置においては復号に必要なインデックスの結合動き情報にのみ変換処理を行うことも可能であり、その場合には図39のステップS3904及びステップS3905を行った後に、予測ブロックサイズによる双予測の制限を行うステップS3902及びステップS3903が行われる。
生成された動き情報は、結合予測モードの動き情報として格納され(S3906)、結合動き補償予測復号部3606に供給される。
図40は、図38のステップS3805の予測動き情報復号処理の詳細動作を説明するためのフローチャートである。
最初に、予測種別が単予測であるか否かを判別する(S4000)。単予測であれば、処理対象とする参照画像リスト(LX)を予測に用いている参照画像リストに設定する(S4001)。単予測でなければ、双予測であるから、この場合はLXをL0とする(S4002)。
次に、参照画像指定情報を復号し(S4003)、差分ベクトル値を復号する(S4004)。次に、予測ベクトル候補リストを生成し(S4005)、予測ベクトル候補リストが1より大きな場合(S4006:YES)、予測ベクトルインデックスを復号し(S4007)、予測ベクトル候補リストが1の場合(S4006:NO)、予測ベクトルインデックスに0を設定する(S4008)。
ここで、ステップS4005では、動画像符号化装置における図33のフローチャートのステップS3304と同様の処理が行われる。
次に、予測ベクトル候補リストより、予測ベクトルインデックスで示す位置に格納されている動きベクトル値を取得する(S4009)。復号した差分ベクトル値と動きベクトル値を加算することで動きベクトルを再生する(S4010)。
続いて、再度予測種別が単予測である否かを判別し(S4011)、予測種別が単予測であればステップS4014に進む。単予測でない、すなわち、双予測であれば、処理対象の参照リストLXがL1か否かを判定する(S4012)。参照リストLXがL1であれば、ステップS4014に進み、L1でない、すなわち、L0であれば予測ブロックサイズがbipred_restrcition_size以下である場合には(S4013:YES)、ステップS4016に進み、予測ブロックサイズがbipred_restriction_sizeより大きい場合には(S4013:NO)、LXをL1として(S4015)、ステップS4003からステップS4011までの処理と同じ処理が行われる。
予測ブロックサイズがbipred_restrcition_size以下である場合には、双予測の動き補償が禁止されるため、復号装置におけるメモリアクセス量の制限を確実にするために、伝送された動き情報を単予測に変換して(S4016)、ステップS4014に進む。
続いて、生成された動き情報として、単予測の場合には、1つの参照画像に対する参照画像指定情報と動きベクトル値が、双予測の場合には、2つの参照画像に対する参照画像指定情報と動きベクトル値が、動き情報として格納され(S4014)、動き補償予測復号部3603に供給される。
実施の形態1における、予測動き情報復号処理においては、符号化時に伝送された動き情報に対してシンタックスに従って復号を行うため、動画像符号化装置における、図33の予測モード評価値生成処理において施しているような、メモリアクセス量の制限を確実にするために双予測制限に関する条件分岐を行う、ステップS4013の条件判断及びステップS4016の処理を省略する形態においても実現可能であるが、実施の形態1においては、メモリ帯域の制限を復号装置においても確実にする構成として、図40のフローチャートによる予測動き情報復号処理をとる。
図41は、図35に示したような、シーケンス単位のパラメータを伝送するseq_parameter_set_rbsp()等で、符号化処理/復号処理の最大画像サイズもしくは所定時間単位の最大処理画素数を定義するlevel_idcが伝送される場合に、参照画像のメモリアクセス量の負荷は、最大処理画素数に比例して増大するため、使用可能な最大処理画素数に連動させて、動き補償予測の予測ブロックサイズと双予測の制限を加える構成の一例である。符号化装置で定義され伝送されるlevel_idcに応じて、inter_4x4_enable及びinter_bipred_restriction_idcの取り得る値に制限を加えることで、符号化装置・復号装置の想定される画像サイズに応じたメモリアクセスの制限をかけることが可能となり、符号化装置及び復号装置の用途に応じて、必要なメモリ帯域を確保できる、処理負荷及び装置の規模を削減しつつ符号化効率を維持できる符号化装置及び復号装置が実現できる。
図41は、一例としてlevel_idcが6段階に設定されている場合に、少ない画素数の符号化を想定した条件の場合には、inter_4x4_enableは制約なく(0と1のどちらも設定可能)、inter_bipred_restriction_idcに対しても定義された値のすべてを設定可能としているが、level_idcの増加に伴い、図9で示したメモリアクセス量の大きな予測処理から段階的に予測ブロックサイズ及び双予測の制限を加えることで、inter_4x4_enable(常に0のみにする)及びinter_bipred_restriction_idc(取り得る値の最小値を大きくする)を、最大画像サイズや最大処理画素数と連動して制御することができる。
また、図41のように、level_idcを基準に最大画像サイズや最大処理画素数と連動してinter_4x4_enableやinter_bipred_restriction_idcの値を、伝送せずに暗黙で制限下の固定値に設定し、符号化装置・復号装置にて、設定された制限による動き補償予測及び双予測の制限をおこなうことも可能であり、その場合にはlevel_idcが伝送されることで、対応したinter_4x4_enableやinter_bipred_restriction_idcの値が復号できる構成になる。
実施の形態1においては、inter_4x4_enableという4×4予測ブロックサイズの動き補償予測を禁止する制御パラメータを用いているが、動き補償予測の予測ブロック制限に関しても、inter_bipred_restriction_idcと同様に、指定された予測ブロックサイズ以下のブロックサイズの動き補償予測を禁止する制御パラメータを用いることも可能であり、よりメモリアクセス量を細かく制御することを可能にする。
実施の形態1において、4×8画素と8×4画素のように、予測ブロックサイズの面積は同一で水平・垂直の画素数が異なる場合の双予測の制限を、同一基準で行っているが、一般的に参照画像メモリのアクセス単位が水平方向に4画素や8画素などの複数画素で構成される場合が多いことを想定し、水平方向の画素数が少ない4×8画素を、よりメモリアクセス量が多い予測ブロックサイズであると定義して、動き補償予測や双予測の制限を加えることも可能であり、より復号装置の構成に適したメモリアクセス量の制御が可能となる。
また、実施の形態1において、動き補償予測の効率を向上させるために、図42に示すように、CU内の分割を更に細かくて左右や上下が非対称の予測ブロックを定義する場合においても、非対称のブロックに対する、予測ブロックサイズの制限を加えることにより、段階的なメモリアクセス量の制御が可能である。
図42に示す、実施の形態1の別構成における、CUの予測ブロックへの分割構成は、非分割(2N×2N)、水平・垂直への分割(N×N)、水平方向のみへの分割(2N×N)、垂直方向のみへの分割(N×2N)に加えて、水平方向のみへの上1/4、下3/4の非対称分割(2N×nU)、水平方向のみへの上3/4、下1/4の非対称分割(2N×nD)、垂直方向のみへの左1/4、右3/4の非対称分割(nL×2N)、垂直方向のみへの左3/4、右1/4の非対称分割(nR×2N)となっており、水平4画素、垂直4画素未満の予測ブロックサイズを適用しないように、CUサイズが16×16以上のCUにのみ、非対称分割の分割構成が適用可能になっている。
続いて、図43に図42の予測ブロック構成における、動き補償予測のブロックサイズ及び予測処理を制限する制御パラメータの一例を示し、説明する。制御パラメータは、最も小さなCUサイズである8×8ブロックを分割する構成である、4×4、4×8及び8×4予測ブロックの動き補償予測の有効・無効を制御するパラメータである、inter_pred_enable_idcと、動き補償予測の内、双予測が施される予測処理のみを禁止するブロックサイズを定義する、inter_bipred_restriction_idcの2つのパラメータで構成される。
図43の制御パラメータの構成では、inter_bipred_restriction_idcに対して、水平・垂直の画素数のメモリアクセスに与える影響を加味した、16×16画素以下の予測ブロックサイズの大きさの順番を小さい方から、4×4、4×8、8×4、8×8、4×16/12×16(nL×2N/nR×2N)、8×16、16×12/16×4(2N×nU/2N×nD)、16×8、16×16と定義し、双予測を制限する予測ブロックサイズの値を設定する。これにより、動き補償予測の効率を向上させた非対称構成の予測ブロックに対しても、図10で示した制御パラメータを用いた構成と同様に、細かい単位でのメモリアクセス量の制御を行うことが可能となり、動き補償予測の効率を向上させたうえで、許容されるメモリ帯域に応じた、メモリアクセス量の制御を可能とする。
実施の形態1においては、inter_bipred_restriction_idcで定義された予測ブロックサイズを基準に、定義されたサイズ以下の予測ブロックに双予測の制限を加えているが、値による制限を、定義されたサイズ未満の予測ブロックに双予測の制限を加えるようにすることも、双予測の制限を加える予測ブロックサイズ未満の予測ブロックサイズにおいて動き補償予測を行わない場合に、定義されたサイズの予測ブロックに双予測の制限を加えるようにすることも、本発明を実現する構成として可能である。定義されたサイズ未満の予測ブロックに双予測の制限を加えるようにする場合には、実施の形態1の符号化装置における、図17のフローチャートで示すステップS1702、図33のフローチャートで示すステップS3308、実施の形態1の復号装置における、図39のフローチャートで示すステップS3902、図40のフローチャートで示すステップS4013における条件判断が、bipred_restriction_size未満で有るか否かになると共に、inter_bipred_restriction_idcで定義する予測ブロックサイズの値が1つ大きい予測ブロックサイズとして設定されることで、実現される。
実施の形態1においては、図35に示したように、動き補償予測におけるメモリアクセス量を制限するための制御パラメータである、inter_4x4_enable及びinter_bipred_restriction_idcを、それぞれ個別のパラメータとして符号化伝送する構成を一例として示したが、これらの制御パラメータ情報が、動画像符号化装置及び動画像復号装置のメモリアクセス量制限を制御するパラメータとして伝送できる構成であれば、図44に示すようなinter_4x4_enableとinter_bipred_restriction_idcの組合せで定義する情報(inter_mc_restrcution_idc)を符号化伝送する構成も可能であり、所定もしくは所定以下の予測ブロックサイズでの動き補償予測処理を行わないように制御する情報と、所定以下の予測ブロックサイズでの双予測を行わないように制御する情報により、更に動き補償予測及び結合動き情報候補の単予測制限を行う処理を1つの指示情報に統合して符号化伝送及び復号できる効果が生じる。
また、実施の形態1においては、動き補償予測に対してメモリアクセス量を制限するための、結合動き補償予測に用いられる双予測を禁止する手段として、結合動き情報候補インデックスに格納された後の動き情報を、条件に応じて双予測の動き情報から単予測の動き情報に変換し格納し、予測処理に使用するため、双予測の結合動き情報候補を禁止するのでなく、単予測の動き情報として用いることが可能となり、双予測を禁止する条件の予測ブロックサイズにおける動き補償予測の予測精度が向上し、符号化効率が向上する効果を有する。
(実施の形態2)
続いて、本発明の実施の形態2に係る動画像符号化装置及び動画像復号装置の説明を行う。実施の形態2においては、実施の形態1と同様に、予測ブロックサイズによる動き補償予測の制限と、予測ブロックサイズ以下の双予測の制限の組合せで、最大メモリアクセス量を制限する構成は同一であるが、双予測の制限を定義するパラメータを制限する予測ブロックサイズを示す情報ではなく、最小CUサイズにおけるCU分割構造に対する双予測の制限を加える構造を取る。
図45に本発明の実施の形態2における、動き補償予測のブロックサイズ及び予測処理を制限する制御パラメータの一例を示し、説明する。
制御パラメータは、最も小さな動き補償予測ブロックサイズである4×4画素の動き補償予測の有効・無効を制御するパラメータである、inter_4x4_enableと、動き補償予測の内、双予測が施される予測処理のみを禁止する最小CUサイズにおけるCU分割構造を定義する、inter_bipred_restriction_for_mincb_idcの2つのパラメータで構成される。
inter_bipred_restriction_for_mincb_idcは、4つの値を定義し、制限なし、N×N制限、N×2N/2N×N以下制限、CU内すべての分割(PU)で制限の4つの状態を制御する。最小CUサイズは、実施の形態1における、図35のシンタックスで示されるようにlog2_min_coding_block_size_minus3で8を基準とした(8×8を示す)2のべき乗値で定義され、inter_bipred_restriction_for_mincb_idcの値と最小CUサイズの連動により、双予測を制限するブロックサイズbipred_restriction_sizeが設定される。
実施の形態2における、符号化装置及び復号装置の構成は、実施の形態1と同様の構成をとることができ、実施の形態1におけるbipred_restriction_sizeが、上記log2_min_coding_block_size_minus3とinter_bipred_restriction_for_mincb_idcの組合せで定義される点が、異なる構成となっている。具体的なbipred_restriction_sizeの定義を図46に示す。
inter_bipred_restriction_for_mincb_idcは、図47に示すシンタックスの一例に示されるように、実施の形態1における図35のシンタックスと同様に構成され、シーケンス単位のパラメータとしてseq_parameter_set_rbsp()で伝送され、inter_bipred_restriction_idcに代わってinter_bipred_restriction_for_mincb_idcが伝送する値となる。
メモリアクセス量が大きくなり、メモリ帯域の制限が必要になる状態は、符号化時の最小CUサイズに対して生じるため、最小CUサイズと連動して双予測の制限を加える構成は、管理・伝送するパラメータの無駄が少なく、なお且つ符号化装置においてメモリアクセス量の制限を加えたい場合に、より大きなサイズでの双予測制限を少ない制御パラメータ値で定義できる効果を有する。
さらに、実施の形態2においては、CU内の分割を更に細かくて左右や上下が非対称の予測ブロックを定義して、動き補償予測効率を向上させる場合においても、ブロックサイズ毎のサイズ制限を各CU階層で追加しなくても、最小CUサイズにおける定義のみを追加すれば良いため、拡張性も高いと共に、ハイビジョンを終える超高精細画像の符号化・復号処理を行う際に、予測ブロックサイズの大きさや双予測の制限を明示的に行うことが容易に実現できる効果を有する。
(実施の形態3)
続いて、本発明の実施の形態3に係る動画像符号化装置及び動画像復号装置の説明を行う。実施の形態3においては、メモリアクセス量を制限する為の動き補償予測や双予測の制限に加えて、予測ブロックサイズが小さくなった際の結合動き予測候補生成処理の動作回数を制限することで、結合動き予測候補生成に要する処理負荷を軽減させる構成を取る。
具体的には、所定のCUサイズ以下予測ブロックサイズにおける、各予測ブロックにおいて、同一の隣接ブロックの動き情報を用いて同一の結合動き情報候補生成処理を行う構成となる。実施の形態3では、最小CUサイズである8×8CUサイズの予測ブロックに対して、上記構成を取る構成を取り、実施の形態3の8×8CUサイズの結合動き情報候補生成における空間周辺予測ブロックの位置を、図48を用いて説明する。
8×8CUにおいて、8×8画素の予測ブロック(2N×2N)に対する空間候補ブロック群のブロックA0、ブロックA1、ブロックB0、ブロックB1、ブロックB2の5ブロックの位置は、図48(a)に示すように、図19に示した、実施の形態1における空間候補ブロック群の定義と同一の位置を示す。
これに対して、4×8画素の予測ブロック(N×2N)、8×4画素の予測ブロック(2N×N)、4×4画素の予測ブロック(N×N)に対する空間候補ブロック群の位置に関しては、図48(b)、(c)、(d)に示すように、図19に示した、実施の形態1における空間候補ブロック群の定義で示される、対象予測ブロックの隣接位置のブロックではなく、8×8画素に対する空間候補ブロック群と同じ位置が、すべての予測ブロックに対して用いられる。時間候補ブロック群の位置に関しても同様に、8×8画素の予測ブロックと同一の位置が、4×8画素、8×4画素、4×4画素すべての予測ブロックに対して用いられる。
すなわち、対象となる8×8CUに対して、構成されるすべての予測ブロック構造において、同一の結合動き情報候補が用いられることになり、符号化装置及び復号装置における結合動き情報生成処理は1回の生成処理で実現できる。
続いて、実施の形態3における、動画像符号化装置の符号化ブロック単位の符号化処理の説明を行う。実施の形態1における符号化ブロック単位の符号化処理に対して、図7のフローチャートで示される動き補償予測ブロックサイズ選択/予測信号生成処理と、図17のフローチャートで示される動き補償予測モード/予測信号生成処理のみが異なるため、これらの処理に関して説明する。
図49に実施の形態3における動き補償予測ブロックサイズ選択/予測信号生成処理のフローチャートを示す。実施の形態1の図7のフローチャートと同一のステップに関しては、同一番号をつけ異なる部分にのみ新しいステップ番号をつけている。
最初に、対象CUに対して予測対象となる符号化ブロック画像を取得する(S700)。次に、対象CUのCUサイズが8×8であるか否かを判定する(S4908)。対象CUのCUサイズが8×8である場合(S4908:YES)には、結合動き情報候補リスト生成処理が行われる(S4909)。対象CUのCUサイズが8×8でない場合(S4908:NO)には、ステップS701に進む。ステップS4909の詳細に関しては、実施の形態1における図18の結合動き情報候補リスト生成処理と同一の処理が行われる。
ステップS4909を行った後、対象CU内の最小予測ブロックサイズがbipred_restriction_size以下である場合(S4910:YES)、結合動き情報候補単予測変換処理が行われる(S4911)。対象CU内の最小予測ブロックサイズがbipred_restriction_size以下でない場合には(S4910:NO)、ステップS701に進む。ステップS4911の詳細に関しては、実施の形態1における図30の結合動き情報候補単予測変換処理と同一の処理が行われる。
実施の形態3においては、双予測を制限する予測ブロックサイズであるbipred_restriction_sizeにおける結合動き情報候補生成処理が、対象となるCUにおいて用いられる予測ブロックサイズである場合(inter_4x4_enableが1の場合には、4×4/4×8/8×4/8×8の予測ブロック、inter_4x4_enableが0の場合には、4×8/8×4/8×8の予測ブロック)には、対象CUに対して同一に生成する結合動き情報候補リストに対して双予測の動き情報を単予測に変換する処理を行う。つまり、bipred_restriction_sizeが3(8×8以下制限)に拡張された処理が行われることになる。
図49の説明に戻り、ステップS4911の結合動き情報候補単予測変換処理を行った後、ステップS701に進む。ステップS701以降、ステップS707までの処理に関しては、実施の形態1における図7のフローチャートにおけるステップS701からステップS707までの処理と同一の処理が行われる。
実施の形態3においては、8×8CUサイズに対する、結合動き情報候補リスト生成処理と結合動き情報候補単予測変換処理が同一の動作で行われ、符号化装置においては1回の生成処理によって、8×8CUサイズ内のすべての結合動き情報候補を生成することが可能となる効果を有する。また、実施の形態3において、図49のフローチャートのステップS4910の処理を行わない構成においては、8×8CUサイズに対して結合動き情報候補リスト生成処理が同一の動作で行われ、且つbipred_restriction_sizeを拡張しない状態での結合動き情報候補単予測変換処理を可能とする効果を有するが、符号化装置においては8×8CUサイズ内の予測ブロックサイズ毎の結合動き情報候補単予測変換処理が必要となる。
次に、図50に実施の形態3における動き補償予測モード/予測信号生成処理のフローチャートを示し説明する。実施の形態1の図17のフローチャートと同一のステップに関しては、同一番号をつけ異なる部分にのみ新しいステップ番号をつけている。
定義されたCU内の予測ブロックサイズ分割モード(PU)に従って設定されたNumPartに基づき、対象CU内をPU分割した予測ブロックサイズ毎に(S1700)、対象CUサイズが8×8でない場合(S5010:NO)には、ステップS1701からステップS1708までのステップが実行される(S1709)。ステップS1701からステップS1708までの処理に関しては、実施の形態1における図17のフローチャートと同一の処理が行われる。
対象CUサイズが8×8である場合(S5010:YES)には、ステップS1701からステップS1703までの処理を行わずに、ステップS1704に進む。すなわち、対象CUサイズが8×8である、予測ブロックサイズの場合には、図49で示した動き補償予測ブロックサイズ選択/予測信号生成処理のフローチャート内の処理で生成された結合動き情報候補をそのまま使用して、結合予測モードの動き補償予測を行う構成となっている。
続いて、実施の形態3における、動画像復号装置の符号化ブロック単位の復号処理は実施の形態1と同一の処理を行い、結合動き予測における結合動き情報候補リスト生成のために用いる候補ブロックの位置のみを対象となるCUが8×8の場合に、図48で示したようにすべての予測ブロックで同一位置の候補ブロックを取得し、図39のフローチャートで示された結合動き情報復号処理におけるステップS3902の判断条件として、CUサイズが8×8の場合には、CU内で定義可能な最小予測ブロックサイズがbipred_restriction_size以下であるか否かの条件に置き換わる構成で実現できる。
なお、実施の形態3において、図39のフローチャートで示された結合動き情報復号処理におけるステップS3902の判断条件を変更しない構成で実現した場合には、8×8CUサイズに対して結合動き情報候補リスト生成処理を同一の動作で行い、且つbipred_restriction_sizeを拡張しない状態での結合動き情報候補単予測変換処理を可能とする効果を有する。復号装置においては、符号化ストリームを復号することで、復号対象ブロックに対する予測ブロックサイズは特定されるため、特定された予測ブロックサイズに対する単一の結合動き情報候補単予測変換処理が行われる。
また、実施の形態3における、動画像復号装置において、更に結合動き情報候補生成処理を少ない処理で実現できる構成として、実施の形態1における符号化ブロック単位の復号処理に対して、図39の結合動き情報復号処理を図51で示すフローチャートの処理に置き換える構成をとることが可能であり、その動作を説明する。図39のフローチャートと同一のステップに関しては、同一番号をつけ異なる部分にのみ新しいステップ番号をつけている。
予測モードに結合予測モードを設定した後(S3900)、対象となっている予測ブロックのCUサイズが8×8であるか否かを判断する(S5107)。CUサイズが8×8でない場合(S5107:NO)には、ステップS3901に進み、実施の形態1と同様の結合予測動き情報復号処理が行われる。
一方、CUサイズが8×8である場合には(S5107:YES)、対象となっている予測ブロックが対象CU内の最初の結合予測モードであるか否かを判断する(S5108)。最初の結合予測モードである場合には(S5108:YES)、結合動き情報候補リスト生成処理が行われる(S5109)。ステップS5109においては、図48で示したように、CU内の全予測ブロックで同一位置の候補ブロックを取得する構成で、ステップS3901と同じ処理が行われる。
最初の結合予測モードでない場合には(S5108:NO)、既に対象CUで同一に生成される結合動き情報候補リストが生成済であるため、結合動き情報候補リスト生成処理を行わず、ステップS3904に進む。対象CUにおいて一度の結合動き情報候補リスト生成で復号処理が可能となるため、8×8CU内に複数の結合予測モードが存在する場合の結合動き情報候補リスト生成処理が削減される。
ステップS5109を行った後、CU内で定義可能な最小予測ブロックサイズがbipred_restriction_size以下であるか否かの判断を行い(S5110)、最小予測ブロックサイズがbipred_restriction_size以下である場合(S5110:YES)には、結合動き情報候補単予測変換処理を行い(S3903)、最小予測ブロックサイズがbipred_restriction_sizeより大きい場合(S5110:NO)には、ステップS3904に進む。
ステップS3904からステップS3906の処理に関しては、実施の形態1における図39のフローチャートの処理と同一の処理が行われ、結合予測モードの動き情報が復号され格納される。
実施の形態3における動画像符号化装置及び動画像復号装置によれば、メモリアクセス量を制限する為の動き補償予測や双予測の制限と予測ブロックサイズが小さくなった際の結合動き予測候補生成処理の処理削減を、それぞれの制限に対して整合がとれた構成で実現可能とし、メモリ帯域の制限及び結合動き情報候補生成処理削減を両立しつつ符号化効率を向上させることができる。
実施の形態3における同一結合動き情報候補リストを構成する単位は、8×8サイズとして説明を行ったが、8×8サイズに限定される必要はなく、ピクチャ単位やシーケンス単位などの所定単位で、同一リストを生成する最大予測ブロックサイズを定義するパラメータ情報を伝送することで、その単位を変化されることが可能である。パラメータとしては、例えばlog2_parallel_merge_level_minus2として、同一リストを生成する予測ブロックサイズの水平・垂直サイズの基準となる、2のべき乗値に対応する値が定義できる。
(実施の形態4)
続いて、本発明の実施の形態4に係る動画像符号化装置及び動画像復号装置の説明を行う。実施の形態4においては、実施の形態3と同様に、メモリアクセス量を制限する為の動き補償予測や双予測の制限に加えて、予測ブロックサイズが小さくなった際の結合動き予測候補生成処理の動作回数を制限することで、結合動き予測候補生成に要する処理負荷を軽減させる構成を取る。
実施の形態4における、動画像符号化装置においては、実施の形態1に示した動画像符号化装置に対して、図15に示す、動き補償予測ブロック構造選択部113において、結合動き情報単予測変換部1507が無くなり、結合動き情報算出部1506より出力された、動きベクトル、参照画像指定情報、結合動き情報候補リストが直接、結合動き補償予測生成部1508に供給される構成を取る。
また、実施の形態4における、動画像復号装置においては、実施の形態1に示した動画像復号装置に対して、図36に示す、動き情報復号部1111において、結合動き情報単予測変換部3605が無くなり、結合動き情報算出部3604より出力された、動きベクトル、参照画像指定情報、結合動き情報候補リストが直接、結合動き補償予測復号部3606に供給される構成を取る。
実施の形態4においては、結合動き情報単予測変換部で行われていた動き情報の双予測から単予測への変換処理の変わりに、動き補償予測時に予測ブロックサイズがbipred_restriction_size以下の場合に双予測の動き情報のL0予測もしくはL1予測の一方の動き情報のみを用いた単予測の動き補償を行うことで、メモリアクセス量に制限を加えた動き補償予測をおこなう構造を取る。
具体的には、実施の形態4における符号化処理では、実施の形態1における、図17のフローチャートで示される動き補償予測モード/予測信号生成処理において、ステップS1702及びステップS1703の処理が無くなり、図31のフローチャートで示される結合予測モード評価値生成処理におけるステップS3105及びステップS3106で行われる、動き補償(単/双)予測ブロック生成処理の内部、及び図33のフローチャートで示される予測モード評価値生成処理のステップS3312で行われる動き補償予測ブロック生成処理の内部で、単予測への制限処理が行われる。
実施の形態4において、図31のフローチャートのステップS3105、ステップS3106及び、図33のフローチャートのステップS3312で施される動き補償予測ブロック生成の動作を、図52のフローチャートに示し、説明する。図52のフローチャートは実施の形態4において、図1に示す動画像符号化装置における動き補償予測部112の詳細動作となり、以下の動作を行う。
供給された動き情報の予測種別が単予測である場合(S5200:YES)、1つの参照画像に対する参照画像指定情報と動きベクトルを用いて動き補償単予測ブロックを生成する(S5203)。
供給された動き情報が単予測でない場合、つまり動き情報が双予測である場合(S5200:NO)、L0予測の動き情報とL1予測の動き情報(参照画像情報及び動きベクトル)が同一であるかどうか判定し、L0予測の動き情報とL1予測の動き情報が同一である場合(S5201:YES)、L0予測の動き情報のみを用いてL0単予測動き補償予測を行う(S5204)。ただし、双予測の動き情報は維持しL1予測の動き情報は変更しない。
供給されたL0予測の動き情報とL1予測の動き情報が同一でない場合(S5201:NO)、予測ブロックサイズがbipred_restriction_size以下であるかどうかを判定し、予測ブロックサイズがbipred_restriction_size以下である場合(S5202:YES)、L0予測の動き情報とL1予測の動き情報が同一である場合(S5201:YES)と同様に、L0予測の動き情報のみを用いてL0単予測動き補償予測を行う(S5204)。ただし、双予測の動き情報は維持しL1予測の動き情報は変更しない。双予測制限は双予測を単予測に制限することで動き補償予測のメモリ帯域を抑制することが目的であるため、双予測制限によって制限される予測リスト(L0/L1)は、L1単予測にしても良い。
供給された予測ブロックサイズがbipred_restriction_sizeより大きい場合(S5202:NO)、2つの参照画像に対する参照画像指定情報と動きベクトルを用いて動き補償双予測ブロックを生成する(S5205)。
また、実施の形態4における復号処理では、実施の形態1における、図39のフローチャートで示される結合予測動き情報復号処理において、ステップS3902及びステップS3903の処理が無くなり、図37のフローチャートで示される予測ブロック単位復号処理におけるステップS3704で行われる、動き補償予測信号算出処理の内部で、単予測への制限処理が、符号化処理と同様に、図52のフローチャートで示した処理で行われる。
実施の形態4においては、双予測の制限処理を結合動き情報候補リストを単予測に変換する構成を用いずに、動き補償予測時に双予測の動き情報のうち、L0予測もしくはL1予測の一方の動き情報のみを用いて、単予測の動き補償予測を行う構成を用いることで、メモリアクセス量の制限を実現する。
また、双予測の制限処理において、予測信号としては単予測と同一でありながら、動き情報は双予測となる結合動き情報候補を維持することができる。これにより、bipred_restriction_size以下の予測ブロックであっても、L0予測、L1予測ともに動き情報が保存されるため、以降に符号化・復号される予測ブロックの隣接参照動き情報として双予測の情報がそのまま利用でき、以降に符号化・復号される予測ブロックの動き予測処理の予測効率を向上させることができる。
また、結合動き情報候補リストとしては同じ動き情報を用いる、異なる大きさの予測ブロックサイズにおいて、動き補償予測時の双予測制限で、メモリアクセス量の制限を可能とするため、予測ブロックサイズが小さくなった際に、同一の結合動き予測候補リスト生成を行う場合に、同一リストを構成する基準の予測ブロックサイズとbipred_restriction_sizeが異なる場合でも、実施の形態4の構成をとることにより、結合動き情報候補リスト生成時に同一リスト構成と双予測制限の両方を加味した条件判断を加える必要がなく、動き補償予測時の双予測制限だけで機能を実現できる効果を有すると共に、メモリアクセスの制限を行うために制御するbipred_restriction_sizeより大きな予測ブロックサイズにおいて、結合動き情報に双予測の制限を加える必要がなくなるため、符号化効率を向上させる効果を有する。
また、動き補償予測時に双予測制限する構成では、動き情報を符号化するための2つの予測モード(結合予測モード、動き検出予測モード)の双方の双予測制限を一括して対応可能であるため、最小の構成で双予測制限を実現できる。
(実施の形態5)
続いて、本発明の実施の形態5に係る動画像符号化装置及び動画像復号装置の説明を行う。実施の形態5においては、実施の形態1と同様に、メモリアクセス量の制限を行うための、予測ブロックサイズによる動き補償予測制限と、双予測動き補償の制限を行うが、双予測の制限を行うための、結合動き情報候補リストの動き情報に対する双予測から単予測への変換手法が異なる構成を取る。
実施の形態5においては、実施の形態1と同様の構成及び処理を行うが、実施の形態1における、図18のフローチャートで示される、結合動き情報候補リスト生成処理、及び図30のフローチャートで示される、結合動き情報候補単予測変換処理が異なる構成を取る。
図51のフローチャートで、実施の形態5における結合動き情報候補リスト生成処理の説明を行う。実施の形態5においては、符号化処理に対する図17のフローチャートにおけるステップS1701及び、復号処理に対する図39のフローチャートにおけるステップS3901において、図53に示される処理が施される。実施の形態1の図18のフローチャートと同一のステップに関しては、同一番号をつけ異なる部分にのみ新しいステップ番号をつけている。
ステップS1800からステップS1802までの処理によって、結合動き情報の候補となる、空間候補ブロック群から同一の情報を削除した形での空間結合動き情報候補と、時間結合動き情報候補が算出され、候補ブロックの動き情報から算出された結合動き情報が生成される。次に、ステップS1802までに生成された結合動き情報の数である、num_list_before_combined_mergeを格納する(S5305)。この値は、後述する結合動き情報候補単予測変換処理において用いられる。
続いて、ステップS1803からステップS1804までの処理によって、結合動き情報候補リストに登録された複数の結合動き情報候補の動き情報を組合せて生成した、第1結合動き情報候補と、結合動き情報候補リストに登録された動き情報に依存せずに生成した、第2結合動き情報候補が必要に応じて追加され、結合動き情報候補リスト生成処理を終了する。
実施の形態5における、結合動き情報候補リスト生成処理においての実施の形態1と異なる処理は、num_list_before_combined_mergeの格納処理であり、隣接ブロックより定義される候補ブロック群の動き情報を登録した結合動き情報と、候補ブロック群の動き情報の組合せや、候補ブロックの動き情報に依存しない動き情報を登録した結合動き情報の、境界のリスト番号を保存している。
続いて、図54のフローチャートで、実施の形態5における結合動き情報候補単予測変換処理の説明を行う。実施の形態5においては、符号化処理に対する図17のフローチャートにおけるステップS1703及び、復号処理に対する図39のフローチャートにおけるステップS3903において、図54に示される処理が施される。実施の形態1の図30のフローチャートと同一のステップに関しては、同一番号をつけ異なる部分にのみ新しいステップ番号をつけている。
図52のフローチャートで示す結合動き情報候補単予測変換処理は、図30のフローチャートに対して、動き情報が単予測でない場合(S3002:NO)の処理が異なり、結合動き情報候補リストのインデックスiがnum_list_before_combined_mergeより小さい場合(S5407:YES)には、双予測の動き情報を単予測に変換するために、インデックスiに格納された動き情報のL1情報を無効にする(S3003)。
一方、インデックスiがnum_list_before_combined_merge以上である場合(S5407:NO)には、双予測の動き情報を単予測に変換するために、インデックスiに格納された動き情報のL0情報を無効にする(S5408)。
ステップS3003及びステップS5408で、単予測に変換されたインデックスiの動き情報が結合動き情報候補リストに格納され(S3004)、次のインデックスに進む(S3005)。
実施の形態5における、結合動き情報候補単予測変換においては、結合動き情報候補リスト内の候補動き情報を、隣接する候補ブロックの動き情報から算出された動き情報と、登録された複数の動き情報の組合せや、候補ブロックの動き情報に依存せずに生成した動き情報に対して、単予測変換時に無効にする動き情報を予測種別(L0予測/L1予測)で切り替える。これにより、特に第1結合動き情報候補リスト追加部で追加された動き情報に対して、単予測変換時に無効にされた予測種別の動き情報を残して、単予測変換時に有効にされた予測種別の動き情報を無効にすることができ、結合動き情報として有効な動き情報を多く残すことが可能となり、符号化効率を向上させることができる。
また、双予測が制限された予測ブロックサイズにおいて、L0予測とL1予測が偏らずに候補として用いられるため、符号化・復号時に用いられた動き情報として保存される動き情報においてもL0予測とL1予測の偏りが少なくなる。そのため、後続する予測ブロックの結合動き情報候補生成時に、第1結合動き情報候補リスト追加部で生成できる双予測の動き情報の精度が向上し、符号化効率を向上させることができる。
実施の形態5においては、インデックスiがnum_list_before_combined_mergeより小さい時にL1情報を無効にし、インデックスiがnum_list_before_combined_merge以上の場合にL0情報を無効にしたが、num_list_before_combined_mergeを基準に無効にする予測種別を切り替えることが、この実施の形態における特徴であり、インデックスiがnum_list_before_combined_mergeより小さい時にL0情報を無効にし、インデックスiがnum_list_before_combined_merge以上の場合にL1情報を無効にする構成を取ることも可能である。
(実施の形態6)
続いて、本発明の実施の形態6に係る動画像符号化装置及び動画像復号装置の説明を行う。実施の形態6においては、実施の形態5と同様の構成をとり、結合動き情報候補単予測変換における無効にする予測種別(L0予測/L1予測)を切り替える点が特徴であるが、インデックスの固定位置を基準に切り替える構成を取る。
実施の形態6においては、実施の形態5と同様の構成及び処理を行うが、実施の形態5における、図53のフローチャートで示される、結合動き情報候補リスト生成処理は行わず、実施の形態1と同一の、図18のフローチャートで示される、結合動き情報候補リスト生成処理が行われる。
また、実施の形態6においては、実施の形態5における、図54のフローチャートで示される、結合動き情報候補単予測変換処理が、図55のフローチャートで示される処理に置き換わる構成を取る。実施の形態6においては、符号化処理に対する図17のフローチャートにおけるステップS1703及び、復号処理に対する図39のフローチャートにおけるステップS3903において、図55に示される処理が施される。
以下、図55のフローチャートの説明を行う。図54のフローチャートと同一のステップに関しては、同一番号をつけ異なる部分にのみ新しいステップ番号をつけている。
図55のフローチャートで示す結合動き情報候補単予測変換処理は、図54のフローチャートに対して、動き情報が単予測でない場合(S3002:NO)の処理が異なり、結合動き情報候補リストのインデックスiが2より小さい場合(S5507:YES)には、双予測の動き情報を単予測に変換するために、インデックスiに格納された動き情報のL1情報を無効にする(S3003)。
一方、インデックスiが2以上である場合(S5507:NO)には、双予測の動き情報を単予測に変換するために、インデックスiに格納された動き情報のL0情報を無効にする(S5408)。
ステップS3003及びステップS5408で、単予測に変換されたインデックスiの動き情報が結合動き情報候補リストに格納され(S3004)、次のインデックスに進む(S3005)。
実施の形態6における、結合動き情報候補単予測変換においては、結合動き情報候補リスト内の候補動き情報を、隣接する候補ブロックの動き情報から算出された動き情報によって第1結合動き情報候補リスト追加部で、双予測の追加動き情報を生成するために必要な最小限の動き情報である2つの動き情報と、リストの後半で登録される第1結合動き情報候補リスト追加部及び第2結合動き情報候補リスト追加部で追加された動き情報に対して、インデックスの位置で固定的に単予測変換時に無効にする動き情報を予測種別(L0予測/L1予測)を切り替える構成を取る。
実施の形態6における、結合動き情報候補単予測変換においては、実施の形態5に対して、隣接ブロックより定義される候補ブロック群の動き情報を登録した結合動き情報と、候補ブロック群の動き情報の組合せや、候補ブロックの動き情報に依存しない動き情報を登録した結合動き情報の、境界のリスト番号を保存する処理を無くすことができるため、処理負荷が軽減できると共に、実施の形態5と同様に、第1結合動き情報候補リスト追加部で追加された動き情報に対して、単予測変換時に無効にされた予測種別の動き情報を残して、単予測変換時に有効にされた予測種別の動き情報を無効にすることができ、結合動き情報として有効な動き情報を多く残すことが可能となり、符号化効率を向上させることができる。
また、実施の形態6では、第1結合動き情報候補、第2結合動き情報候補だけでなく、空間予測候補や時間予測候補に対しても無効にする予測種別を切り替えることができるため、予測種別が双予測で同一の動き情報が登録されている場合に、結合動き情報としてL0単予測、L1単予測の動き情報をそれぞれ利用可能になるため、符号化効率を向上させることができる。
実施の形態6における、結合動き情報候補単予測変換において、無効にする予測種別(L0予測/L1予測)を切り替えるインデックスの位置を2に固定しているが、固定のインデックスで予測種別を切り替えることが実施の形態6における特徴であり、空間結合動き情報候補、時間結合動き情報候補、第1結合動き情報候補、第2結合動き情報候補として登録可能な動き情報の数と、最大で登録可能な結合動き情報候補の数に応じて、固定にする切り替え位置のインデックスの値を設定することも可能である。
以上述べた実施の形態の動画像符号化装置が出力する動画像の符号化ストリームは、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有しており、動画像符号化装置に対応する動画像復号装置がこの特定のデータフォーマットの符号化ストリームを復号することができる。
動画像符号化装置と動画像復号装置の間で符号化ストリームをやりとりするために、有線または無線のネットワークが用いられる場合、符号化ストリームを通信路の伝送形態に適したデータ形式に変換して伝送してもよい。その場合、動画像符号化装置が出力する符号化ストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する動画像送信装置と、ネットワークから符号化データを受信して符号化ストリームに復元して動画像復号装置に供給する動画像受信装置とが設けられる。
動画像送信装置は、動画像符号化装置が出力する符号化ストリームをバッファするメモリと、符号化ストリームをパケット化するパケット処理部と、パケット化された符号化データをネットワークを介して送信する送信部とを含む。動画像受信装置は、パケット化された符号化データをネットワークを介して受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理して符号化ストリームを生成し、動画像復号装置に提供するパケット処理部とを含む。
また、以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現することができるのは勿論のこと、ROM(Read Only Memory)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによっても実現することができる。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供することも、有線あるいは無線のネットワークを通してサーバから提供することも、地上波あるいは衛星ディジタル放送のデータ放送として提供することも可能である。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。