以下、本実施の形態について説明する。本実施の形態では、動画像の符号化に関し、画像を階層的に符号化するスケーラブル符号化を用いて、各階層のピクチャを任意のサイズ、形状の矩形ブロックに分割し、ピクチャ間でブロック単位に動き補償を行う動画像符号化における符号化効率を向上させる為に、符号化対象ブロックに近接するブロック、符号化済みのピクチャのブロック、または符号化済みの階層のピクチャのブロックの動きベクトルから複数の予測動きベクトルを導出し、符号化対象のブロックの動きベクトルと選択された予測動きベクトルとの差分ベクトルを算出して符号化することによって符号量を削減する。あるいは、符号化対象ブロックに近接するブロック、符号化済みのピクチャのブロック、または符号化済みの階層のピクチャのブロックの符号化情報を利用することにより、符号化対象ブロックの符号化情報を導出することによって符号量を削減する。また、動画像の復号の場合は、復号対象ブロックに近接するブロック、復号済みのピクチャのブロック、または復号済みの階層のピクチャのブロックの動きベクトルから複数の予測動きベクトルを算出し、符号化ストリームから復号された差分ベクトルと選択された予測動きベクトルとから復号対象のブロックの動きベクトルを算出して復号する。あるいは、復号対象ブロックに近接するブロック、復号済みのピクチャのブロック、または復号済みの階層のピクチャのブロックの符号化情報を利用することにより、復号対象ブロックの符号化情報を導出する。
まず、本実施の形態において使用する技術、及び技術用語を定義する。
(ツリーブロック、符号化ブロックについて)
実施の形態では、ピクチャを1つまたは複数分割したスライスが符号化の基本単位となっており、スライス毎にスライスの種類を示す情報であるスライスタイプが設定される。図5に示されるように、スライス内を任意の同一サイズの正方の矩形の単位にて均等分割する。この単位をツリーブロックと定義し、スライス内での符号化または復号対象ブロック(符号化処理においては符号化対象ブロック、復号処理においては復号対象ブロックのことである。以下、断りのない限り、この意味で用いる。)を特定するためのアドレス管理の基本単位とする。モノクロを除きツリーブロックは1つの輝度信号と2つの色差信号で構成される。ツリーブロックのサイズはピクチャサイズやピクチャ内のテクスチャに応じて、2のべき乗のサイズで自由に設定することができる。ツリーブロックはピクチャ内のテクスチャに応じて、符号化処理を最適にすべく、必要に応じてツリーブロック内の輝度信号、及び色差信号を階層的に4分割(縦横に2分割ずつ)して、ブロックサイズの小さいブロックにすることができる。このブロックをそれぞれ符号化ブロックと定義し、符号化及び復号を行う際の処理の基本単位とする。モノクロを除き符号化ブロックも1つの輝度信号と2つの色差信号で構成される。符号化ブロックの最大サイズはツリーブロックのサイズと同一である。符号化ブロックの最小のサイズとなる符号化ブロックを最小符号化ブロックと呼び、2のべき乗のサイズで自由に設定することができる。
図5においては、符号化ブロックAは、ツリーブロックを分割せず、1つの符号化ブロックとしたものである。符号化ブロックBは、ツリーブロックを4分割してできた符号化ブロックである。符号化ブロックCは、ツリーブロックを4分割してできたブロックをさらに4分割してできた符号化ブロックである。符号化ブロックDは、ツリーブロックを4分割してできたブロックをさらに階層的に2度4分割してできた符号化ブロックであり、最小サイズの符号化ブロックである。
(予測モードについて)
符号化ブロック単位で、符号化または復号対象ピクチャ内の復号済み(符号化処理においては符号化した信号を復号したピクチャ、予測ブロック、画像信号等に用い、復号処理においては復号したピクチャ、予測ブロック、画像信号等に用いる。以下、断りのない限り、この意味で用いる。)の周囲の画像信号から予測を行うイントラ予測(MODE_INTRA)、及び符号化または復号済みのピクチャの画像信号から予測を行うインター予測(MODE_INTER)を切り替える。このイントラ予測(MODE_INTRA)とインター予測(MODE_INTER)を識別するモードを予測モード(PredMode)と定義する。予測モード(PredMode)はイントラ予測(MODE_INTRA)、またはインター予測(MODE_INTER)を値として持ち、選択して符号化できる。
(分割モード、予測ブロック、予測ユニットについて)
ピクチャ内をブロックに分割してイントラ予測(MODE_INTRA)及びインター予測(MODE_INTER)を行う場合、イントラ予測及びインター予測の方法を切り替える単位をより小さくするために、必要に応じて符号化ブロックを分割して予測を行う。この符号化ブロックの輝度信号と色差信号の分割方法を識別するモードを分割モード(PartMode)と定義する。さらに、この分割されたブロックを予測ブロックと定義する。図6に示すように、符号化ブロックの輝度信号の分割方法に応じて8種類の分割モード(PartMode)を定義する。
図6(a)に示す符号化ブロックの輝度信号を分割せず1つの予測ブロックとみなした分割モード(PartMode)を2N×2N分割(PART_2Nx2N)と定義する。図6(b)、(c)、(d)に示す符号化ブロックの輝度信号を上下に並ぶ2つの予測ブロックに分割する分割モード(PartMode)をそれぞれ2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)と定義する。ただし、2N×N分割(PART_2NxN)は上下に1:1の比率で分割した分割モードであり、2N×nU分割(PART_2NxnU)は上下に1:3の比率で分割した分割モードであり、2N×nD分割(PART_2NxnD)は上下に3:1の比率で分割した分割モードである。図6(e)、(f)、(g)に示す符号化ブロックの輝度信号を左右に並ぶ2つの予測ブロックに分割する分割モード(PartMode)をそれぞれN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)と定義する。ただし、N×2N分割(PART_Nx2N)は左右に1:1の比率で分割した分割モードであり、nL×2N分割(PART_nLx2N)は左右に1:3の比率で分割した分割モードであり、nR×2N分割(PART_nRx2N)は左右に3:1の比率で分割した分割モードである。図6(h)に示す符号化ブロックの輝度信号を上下左右に4分割して、4つの予測ブロックとした分割モード(PartMode)をN×N分割(PART_NxN)とそれぞれ定義する。
なお、各分割モード(PartMode)毎に輝度信号の縦横の分割比率と同様に色差信号も分割する。
符号化ブロック内部において、各予測ブロックを特定する為に、0から開始する番号を、符号化順序で、符号化ブロック内部に存在する予測ブロックに対して割り当てる。この番号を分割インデックスPartIdxと定義する。図6の符号化ブロックの各予測ブロックの中に記述された数字は、その予測ブロックの分割インデックスPartIdxを表す。図6(b)、(c)、(d)に示す2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)では上の予測ブロックの分割インデックスPartIdxを0とし、下の予測ブロックの分割インデックスPartIdxを1とする。図6(e)、(f)、(g)に示すN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)では左の予測ブロックの分割インデックスPartIdxを0とし、右の予測ブロックの分割インデックスPartIdxを1とする。図6(h)に示すN×N分割(PART_NxN)では、左上の予測ブロックの分割インデックスPartIdxを0とし、右上の予測ブロックの分割インデックスPartIdxを1とし、左下の予測ブロックの分割インデックスPartIdxを2とし、右下の予測ブロックの分割インデックスPartIdxを3とする。
予測モード(PredMode)がインター予測(MODE_INTER)では、分割モード(PartMode)は2N×2N分割(PART_2Nx2N)、2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)、N×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、及びnR×2N分割(PART_nRx2N)を定義する。最小の符号化ブロックである符号化ブロックDのみ、分割モード(PartMode)は2N×2N分割(PART_2Nx2N)、2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)、N×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、及びnR×2N分割(PART_nRx2N)に加えてN×N分割(PART_NxN)を定義することもできるが、本実施の形態においては、分割モード(PartMode)がN×N分割(PART_NxN)を定義しないものとする。
予測モード(PredMode)がイントラ予測(MODE_INTRA)では、最小の符号化ブロックである符号化ブロックD以外では、分割モード(PartMode)は2N×2N分割(PART_2Nx2N)だけを定義し、最小の符号化ブロックである符号化ブロックDのみ、分割モード(PartMode)は2N×2N分割(PART_2Nx2N)に加えてN×N分割(PART_NxN)を定義する。なお、最小の符号化ブロック以外にN×N分割(PART_NxN)を定義しない理由は最小の符号化ブロック以外では、符号化ブロックを4分割して小さな符号化ブロックを表現できるからである。
(ツリーブロック、符号化ブロック、予測ブロック、変換ブロックの位置)
本実施の形態のツリーブロック、符号化ブロック、予測ブロック、変換ブロックを始めとする各ブロックの位置は、輝度信号の画面の一番左上の輝度信号の画素の位置を原点(0,0)とし、それぞれのブロックの領域に含まれる一番左上の輝度信号の画素の位置を(x,y)の二次元座標で表す。座標軸の向きは水平方向に右の方向、垂直方向に下の方向をそれぞれ正の向きとし、単位は輝度信号の1画素単位である。輝度信号と色差信号で画像サイズ(画素数)が同じである色差フォーマットが4:4:4の場合ではもちろんのこと、輝度信号と色差信号で画像サイズ(画素数)が異なる色差フォーマットが4:2:0、4:2:2の場合でも色差信号の各ブロックの位置をそのブロックの領域に含まれる輝度信号の画素の座標で表し、単位は輝度信号の1画素である。この様にすることで、色差信号の各ブロックの位置が特定できるのはもちろんのこと、座標の値を比較するだけで、輝度信号のブロックと色差信号のブロックの位置の関係も明確となる。
(インター予測モード、参照リストについて)
本発明の実施の形態においては、復号済みのピクチャの画像信号から予測を行うインター予測では、複数の復号済みのピクチャを参照ピクチャとして用いることができる。複数の参照ピクチャから選択された参照ピクチャを特定するため、予測ブロック毎に参照インデックスを付ける。Bスライスでは予測ブロック毎に任意の2枚の参照ピクチャを選択してインター予測を行うことができ、インター予測モードとしてL0予測(Pred_L0)、L1予測(Pred_L1)、双予測(Pred_BI)がある。参照ピクチャはリスト構造のL0(参照リスト0)とL1(参照リスト1)で管理され、L0またはL1の参照インデックスを指定することにより参照ピクチャを特定することができる。L0予測(Pred_L0)はL0で管理されている参照ピクチャを参照するインター予測であり、L1予測(Pred_L1)はL1で管理されている参照ピクチャを参照するインター予測であり、双予測(Pred_BI)はL0予測とL1予測が共に行われ、L0とL1のそれぞれで管理されている1つずつの参照ピクチャを参照するインター予測である。Pスライスのインター予測ではL0予測のみが使用でき、Bスライスのインター予測ではL0予測、L1予測、L0予測とL1予測を平均または重み付け加算する双予測(Pred_BI)が使用できる。以降の処理において出力に添え字LXが付いている定数、変数に関しては、L0、L1ごとに処理が行われることを前提とする。
(マージモード、マージ候補)
マージモードとは、符号化または復号対象の予測ブロックの予測モード、参照インデックス、動きベクトル等のインター予測情報を符号化または復号するのではなく、符号化または復号対象の予測ブロックと同一ピクチャ内でその符号化または復号対象の予測ブロックに近接する予測ブロック、あるいは符号化または復号対象の予測ブロックと時間的に異なる復号済みのピクチャの符号化または復号対象の予測ブロックと同一位置あるいはその付近(近傍の位置)に存在する予測ブロックのインター予測情報から符号化または復号対象の予測ブロックのインター予測情報を導出することによりインター予測を行うモードである。符号化または復号対象の予測ブロックと同一ピクチャ内でその符号化または復号対象の予測ブロックに近接する予測ブロック及びその予測ブロックのインター予測情報を空間マージ候補、符号化または復号対象の予測ブロックと時間的に異なる復号済みのピクチャの符号化または復号対象の予測ブロックと同一位置あるいはその付近(近傍の位置)に存在する予測ブロック及びその予測ブロックのインター予測情報から導出されるインター予測情報を時間マージ候補とする。それぞれのマージ候補はマージ候補リストに登録され、マージインデックスによりインター予測で用いるマージ候補を特定する。
(近接する予測ブロックについて)
図7、図8、図9及び図10は空間マージ候補、および予測動きベクトル候補の導出の際に参照する符号化または復号対象の予測ブロックと同一ピクチャ内でその符号化または復号対象の予測ブロックに近接する予測ブロックを説明する図である。図11は時間マージ候補、および予測動きベクトル候補の導出の際に参照する符号化または復号対象の予測ブロックと時間的に異なる復号済みのピクチャにおいて、符号化または復号対象の予測ブロックと同一位置あるいはその付近に存在する既に符号化または復号済みの予測ブロックを説明する図である。図7、図8、図9、図10及び図11を用いて符号化または復号対象の予測ブロックの空間方向に近接する予測ブロック、及び異なる時間の同一位置の予測ブロックについて説明する。
図7に示すように、符号化または復号対象の予測ブロックと同一ピクチャ内でその符号化または復号対象の予測ブロックの左側の辺に近接する予測ブロックA1、上側の辺に近接する予測ブロックB1、右上の頂点に近接する予測ブロックB0、左下の頂点に近接する予測ブロックA0、および左上の頂点に近接する予測ブロックB2を空間方向に近接する予測ブロックと定義する。また、符号化または復号対象の予測ブロックの左下の頂点に近接する予測ブロックA0、および符号化または復号対象の予測ブロックの左側の辺に近接する予測ブロックA1で構成される第1の予測ブロックグループを左側に近接する予測ブロックグループと定義する。符号化または復号対象の予測ブロックの右上の頂点に近接する予測ブロックB0、符号化または復号対象の予測ブロックの上側の辺に近接する予測ブロックB1、および符号化または復号対象の予測ブロックの左上の頂点に近接する予測ブロックB2で構成される第2の予測ブロックグループを上側に近接する予測ブロックグループと定義する。
なお、図8に示すように、符号化または復号対象の予測ブロックの左側の辺に近接する予測ブロックのサイズが符号化または復号対象の予測ブロックより小さく、複数存在する場合には、本実施の形態においては左側の辺に近接する予測ブロックの中で最も下の予測ブロックA10を左側の辺に近接する予測ブロックA1とする。
同様に、符号化または復号対象の予測ブロックの上側の辺に近接する予測ブロックのサイズが符号化または復号対象の予測ブロックより小さく、複数存在する場合には、本実施の形態においては上側の辺に近接する予測ブロックの中で最も右の予測ブロックB10を上側の辺に近接する予測ブロックB1とする。
なお、図9に示すように、符号化または復号対象の予測ブロックの左側に近接する予測ブロックAのサイズが符号化または復号対象の予測ブロックより大きい場合にも、前記条件に従い、左側に近接する予測ブロックAがその符号化または復号対象の予測ブロックの左側の辺に近接していれば予測ブロックA1とし、符号化または復号対象の予測ブロックの左下の頂点に近接していれば予測ブロックA0とし、符号化または復号対象の予測ブロックの左上の頂点に近接していれば予測ブロックB2とする。図9の例では、予測ブロックA0、予測ブロックA1及び予測ブロックB2は同一の予測ブロックとなる。
なお、図10に示すように、符号化または復号対象の予測ブロックの上側に近接する予測ブロックBのサイズが符号化または復号対象の予測ブロックより大きい場合にも、前記条件に従い、上側に近接する予測ブロックBがその符号化または復号対象の予測ブロックの上側の辺に近接していれば予測ブロックB1とし、符号化または復号対象の予測ブロックの右上の頂点に近接していれば予測ブロックB0とし、符号化または復号対象の予測ブロックの左上の頂点に近接していれば予測ブロックB2とする。図10の例では、予測ブロックB0、予測ブロックB1及び予測ブロックB2は同一の予測ブロックとなる。
図11に示すように、符号化または復号対象の予測ブロックと時間的に異なる復号済みのピクチャにおいて、符号化または復号対象の予測ブロックと同一位置あるいはその付近に存在する既に復号済みの予測ブロックT0およびT1を異なる時間の同一位置の予測ブロックと定義する。また、異なる時間のピクチャの予測ブロックグループT0およびT1で構成される第3の予測ブロックグループを異なる時間の予測ブロックグループと定義する。
(POCについて)
POCは符号化されるピクチャに関連付けられる変数とし、ピクチャの出力順序で1ずつ増加する値が設定される。POCの値によって、同じピクチャであるかを判別したり、出力順序でのピクチャ間の前後関係を判別したり、ピクチャ間の距離を導出したりすることができる。例えば、2つのピクチャのPOCが同じ値を持つ場合、同一のピクチャであると判断できる。2つのピクチャのPOCが違う値を持つ場合、POCの値が小さいピクチャのほうが、先に出力されるピクチャであると判断でき、2つのピクチャのPOCの差が時間軸方向でのピクチャ間距離を示す。
次に本実施の形態で符号化または復号対象となる階層画像について説明する。図12は本実施の形態で符号化または復号対象となる3階層の階層画像を説明する図である。階層画像M(2)は最も上位階層の画像であり、階層画像M(1)は階層画像M(2)より解像度の小さい下位階層の画像である。階層画像M(0)は階層画像M(1)よりさらに解像度の小さい最下位階層の画像である。本実施の形態においては、階層画像M(0)の符号化および復号を行う階層を階層0、階層画像M(1)の符号化および復号を行う階層を階層1、階層画像M(2)の符号化および復号を行う階層を階層2とする。また、最下位階層である階層0をベース階層、最下位階層以外の階層である階層1、階層2を拡張階層と定義し、階層1を第1の拡張階層、階層2を第2の拡張階層とする。なお、ピクチャ単位、あるいはスライス単位で、階層を特定するためのIDを割り当てることにより、各階層を特定することができる。
ピクチャP11、P12、P13、P14、P15はベース階層の階層画像M(0)を構成し、ピクチャP21、P22、P23、P24、P25は第1の拡張階層の階層画像M(1)を構成し、ピクチャP31、P32、P33、P34、P35は第2の拡張階層の階層画像M(2)を構成する。
最上位階層の階層画像M(2)のピクチャP31、P32、P33、P34、P35をスケーリングにより縮小したピクチャが階層画像M(1)のそれぞれピクチャP21、P22、P23、P24、P25であり、さらに縮小したピクチャが階層画像M(0)のそれぞれピクチャP11、P12、P13、P14、P15である。
次に、本実施の形態における下位階層のピクチャと上位階層のピクチャの時間軸上の位置の関係について図13を用いて説明する。本実施の形態においては、同じ時刻の画像は同じPOCの値を持つものとする。例えば、ベース階層の階層画像M(0)のピクチャP11、階層画像M(1)のピクチャP21、最上位階層の階層画像M(2)のピクチャP31は同じPOCの値である。同じく、ピクチャP12、P22、P32のPOCは同一の値であり、同じく、ピクチャP13、P23、P33のPOCは同一の値であり、同じく、ピクチャP14、P24、P34のPOCは同一の値であり、同じく、ピクチャP15、P25、P35のPOCは同一の値である。また、各階層のインター予測の参照構造は下位階層の参照構造を継承しているものとする。例えば、ベース階層の階層画像M(0)のP13のL0のインデックス0の参照ピクチャがP11、L1のインデックス0の参照ピクチャがP15である場合、拡張階層の階層画像M(1)のP23のL0のインデックス0の参照ピクチャがP21(P21は下位階層のP11のPOCと同じ値のPOCを持つ)、L1のインデックス0の参照ピクチャがP25(P25は下位階層のP15のPOCと同じ値のPOCを持つ)となり、拡張階層の階層画像M(2)のP33のL0のインデックス0の参照ピクチャがP31(P31は下位階層のP11、P21のPOCと同じ値のPOCを持つ)、L1のインデックス0の参照ピクチャがP35(P35は下位階層のP15、P25のPOCと同じ値のPOCを持つ)となる。ただし、本実施の形態においては、下位階層で符号化および復号されるフレームレートが小さい場合、例えば、ベース階層M(0)において、ピクチャP12の符号化および復号を行わない場合でも、その上位階層の階層画像M(1)のピクチャP22は符号化及び復号することがあり、P22のL0のインデックス0の参照ピクチャがP21、L1のインデックス0の参照ピクチャがP23となる。
次に、本実施の形態における階層間の参照関係について説明する。本実施の形態においては上位階層である拡張階層のピクチャを符号化または復号する際に、符号化または復号対象の拡張階層のピクチャと同じ値のPOCを持つ下位階層の同じ時刻のピクチャの符号化情報を利用して、符号化または復号を行う。拡張階層を符号化または復号する際に参照する下位階層を参照階層と定義する。図12では、階層画像M(1)のピクチャP23を符号化または復号する際には、階層画像M(0)を参照階層とし、階層画像M(0)のピクチャP13の符号化情報を利用する。さらに、階層画像M(2)のピクチャP33を符号化または復号する際には、階層画像M(1)を参照階層とし、階層画像M(1)のピクチャP23の符号化情報を利用する。ただし、階層画像M(0)のピクチャP12が符号化されない場合、階層画像M(1)のピクチャP22の符号化及び復号の際には、参照階層のピクチャP12を参照せずに符号化及び復号を行う。
ここで、本実施の形態における下位階層のピクチャと上位階層のピクチャの空間軸上の位置の関係について図14を用いて説明する。図14において、参照階層となる下位階層のピクチャを符号化または復号対象の拡張階層となる上位階層と同じ解像度で表したピクチャがスケーリングされた参照階層(下位階層)のピクチャである。符号化または復号対象の階層のピクチャの左上を原点としたときのスケーリングされた参照階層(下位階層)のピクチャの左上のx座標がLeftOffsetであり、y座標がTopOffsetである。さらに、参照階層(下位階層)のピクチャの幅がRefWidthであり、高さがRefHeightである。さらに、スケーリングされた参照階層(下位階層)のピクチャの幅がScaledRefWidthであり、高さがScaledRefHeightである。
図14に示すように、符号化または復号対象の予測ブロックと階層の異なる復号済みのピクチャにおいて、符号化または復号対象の予測ブロックに対応する既に復号済みの予測ブロックL0およびL1を参照階層の同一位置の予測ブロックと定義する。また、異なる時間のピクチャの予測ブロックグループL0およびL1で構成される第4の予測ブロックグループを参照階層の予測ブロックグループと定義する。
図1は本発明の実施の形態に係る動画像符号化装置の構成を示すブロック図であり、図3は動画像符号化装置の階層画像符号化部を構成する階層画像符号化部の構成を示すブロック図である。動画像符号化装置は符号化制御部11、階層画像符号化部12、13、14、多重化部15を備えている。本実施の形態の動画像符号化装置は同じ構成の階層画像符号化部を階層分だけ積み重ねた構成をとっている。M(0)、M(1)、M(2)は本動画像符号化装置に供給されるそれぞれの階層画像であり、S(0)、S(1)、S(2)は符号化の結果得られる各階層の符号化ビット列である。本実施例では3階層で説明しているが、2階層、あるいは4階層以上の階層画像も符号化することができる。
図1に示す符号化制御部11は表示時間順に入力された各階層の階層画像M(0)、M(1)、M(2)を符号化する階層画像符号化部12、13、14を制御する。階層画像符号化部12は符号化制御部11により符号化タイミング等を制御されてベース階層の階層画像M(0)を符号化し、ベース階層の符号化ビット列S(0)を得て、多重化部15に供給される。
同様に、階層画像符号化部13は第1の拡張階層の階層画像M(1)を符号化し、第1の拡張階層の符号化ビット列S(1)を得て、多重化部15に供給される。さらに、階層画像符号化部14は第2の拡張階層の階層画像M(2)を符号化し、第2の拡張階層の符号化ビット列S(2)を得て、多重化部15に供給される。多重化部15は符号化された各階層の符号化ビット列S(0)、S(1)、S(2)を多重化し、出力する。
なお、上位の階層画像を符号化または復号する際には、下位の階層を参照階層とし、参照階層の符号化情報あるいは復号画像信号を参照して符号化または復号することにより、符号化効率を向上させる。符号化制御部11は、上位の階層画像のピクチャを符号化する前に、参照階層のピクチャを符号化し、上位画像の階層画像のピクチャの符号化の際に、参照階層のピクチャの符号化情報を利用できるように制御する。
本実施の形態においては、階層画像符号化部13が第1の拡張階層を符号化する際には、下位の階層であるベース階層を参照階層とし、参照階層であるベース階層の符号化情報を参照して、符号化する。階層画像符号化部14が第2の拡張階層を符号化する際には、下位の階層である第1の拡張階層を参照階層とし、参照階層である第1の拡張階層の符号化情報を参照して、符号化する。
図2は図1の階層画像符号化部に対応した本発明の実施の形態に係る階層画像復号部の構成を示すブロックである。階層画像復号部は復号制御部21、階層画像復号部22、23、24、分離部25を備えている。本実施の形態の動画像復号装置は同じ構成の階層画像復号部を階層分だけ積み重ねた構成をとっている。分離部25には動画像符号化装置で符号化された符号化ビット列が供給され、その符号化ビット列から各階層の符号化ビット列S'(0)、S'(1)、S'(2)に分離し、階層画像復号部22、23、24にそれぞれ供給する。M'(0)、M'(1)、M'(2)は本動画像符号化装置に供給されるそれぞれの階層画像であり、は符号化の結果得られる各階層の符号化ビット列である。本実施例では3階層で説明しているが、2階層、あるいは4階層以上の階層画像も復号することができる。
図2に示す復号制御部21は分離部から供給される情報に応じて、各階層の階層画像M(0)、M(1)、M(2)を符号化する階層画像復号部22、23、24を制御する。階層画像復号部22はベース階層の符号化ビット列S'(0)を復号し、ベース階層の階層画像M'(0)を得て、出力する。同様に、階層画像復号部23は第1の拡張階層の符号化ビット列S'(1)を符号化し、第1の拡張階層の階層画像M'(1)を得て、出力する。さらに、階層画像復号部24は第2の拡張階層の符号化ビット列S'(2)を符号化し、第2の拡張階層の階層画像M'(2)を得て、出力する。
なお、符号化側で説明したように、上位の階層画像を復号する際には、下位の階層を参照階層とし、参照階層の符号化情報あるいは復号画像信号を参照して復号することにより、符号化効率を向上させる。
本実施の形態においては、階層画像復号部23が第1の拡張階層を復号する際には、下位の階層であるベース階層を参照階層とし、参照階層であるベース階層の符号化情報を参照して復号することにより、符号化効率を向上させる。階層画像復号部24が第2の拡張階層を復号する際には、下位の階層である第1の拡張階層を参照階層とし、参照階層である第1の拡張階層の符号化情報を参照して、復号する。したがって、本実施の形態においては、上位の階層画像のピクチャを復号する際には、参照する下位の階層画像のピクチャはすでに復号済みであるものとする。
図3は本実施の形態の図1の動画像符号化装置を構成する各階層の階層画像符号化部12、13、14の構成を示すブロック図である。各階層の階層画像符号化部12、13、14は共通の符号化方法で符号化することができる。ただし、ベース階層の階層画像符号化部12は他の階層の符号化情報を用いずに符号化するが、拡張階層の階層画像符号化部13、14は参照階層の符号化情報を用いて符号化する。実施の形態の動画像符号化装置の階層画像符号化部は、画像メモリ101、ヘッダ情報設定部117、動きベクトル検出部102、差分動きベクトル算出部103、インター予測情報導出部104、インター予測部105、イントラ予測部106、予測方法決定部107、残差信号生成部108、直交変換・量子化部109、第1符号化ビット列生成部118、第2符号化ビット列生成部110、第3符号化ビット列生成部111、多重化部112、逆量子化・逆直交変換部113、復号画像信号重畳部114、符号化情報格納メモリ115、および復号画像メモリ116を備える。なお、符号化制御部11の制御は図3におけるすべてのブロック対して及ぶ。
ヘッダ情報設定部117は、シーケンス、ピクチャ、スライス単位の情報を設定する。設定されたシーケンス、ピクチャ、スライス単位の情報はインター予測情報導出部104、第1符号化ビット列生成部118に供給するとともに、図示していないがすべてのブロックに供給する。後述するシーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_temporal_mvp_enable_flag、シーケンス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_inter_layer_mvp_enable_flag、スライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_temporal_mvp_enable_flag、スライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_inter_layer_mvp_enable_flagはヘッダ情報設定部で設定され、インター予測情報導出部104、差分動きベクトル算出部103、第1符号化ビット列生成部118に供給される。シーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_temporal_mvp_enable_flag、シーケンス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_inter_layer_mvp_enable_flag、スライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_temporal_mvp_enable_flag、スライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_inter_layer_mvp_enable_flagの設定処理手順は図49、及び図54のフローチャートを用いて、後ほど詳細に説明する。
画像メモリ101は、撮影/表示時間順に供給された符号化対象のピクチャの画像信号を一時格納する。画像メモリ101は、格納された符号化対象のピクチャの画像信号を、所定の画素ブロック単位で、動きベクトル検出部102、予測方法決定部107、および残差信号生成部108に供給する。その際、撮影/表示時間順に格納されたピクチャの画像信号は、符号化順序に並べ替えられて、画素ブロック単位で、画像メモリ101から出力される。
動きベクトル検出部102は、画像メモリ101から供給される画像信号と復号画像メモリ116から供給される参照ピクチャ間でブロックマッチング等により各予測ブロックサイズ、各予測モード、各参照ピクチャ(参照インデックス)のそれぞれの動きベクトルを各予測ブロック単位で検出し、検出された動きベクトルを対応する予測ブロックサイズ、予測モード、参照インデックスの情報とともにインター予測情報として、インター予測部105、差分動きベクトル算出部103、および予測方法決定部107に供給する。
差分動きベクトル算出部103は、予測動きベクトル候補を導出して、差分動きベクトルを算出する。差分動きベクトルを導出する際は、ベース階層の符号化においては、同じ階層の符号化情報格納メモリ115に記憶されている既に符号化された予測ブロックの符号化情報を用いる。拡張階層の符号化においては、同じ階層の符号化情報格納メモリ115に記憶されている既に符号化された同じ階層の予測ブロックの符号化情報に加えて、参照階層の符号化情報格納メモリ115に記憶されている既に符号化された参照階層の予測ブロックの符号化情報も用いる。これらの符号化情報を用いて、複数の予測動きベクトルの候補を導出して後述する予測動きベクトルリストに登録し、予測動きベクトルリストに登録された複数の予測動きベクトルの候補の中から最適な予測動きベクトルを選択し、動きベクトル検出部102が検出した動きベクトルと予測動きベクトルから差分動きベクトルを算出し、算出された差分動きベクトルを予測方法決定部107に供給する。さらに、予測動きベクトルリストに登録された予測動きベクトルの候補から選択された予測動きベクトルを特定する予測動きベクトルインデックスを予測方法決定部107に供給する。差分動きベクトル算出部103の詳細な構成と動作は後述する。
インター予測情報導出部104は、マージモードでのマージ候補を導出する。マージ候補を導出する際は、ベース階層の符号化においては、同じ階層の符号化情報格納メモリ115に記憶されている既に符号化された同じ階層の予測ブロックの符号化情報を用いる。拡張階層の符号化においては、同じ階層の符号化情報格納メモリ115に記憶されている既に符号化された同じ階層の予測ブロックの符号化情報に加えて、参照階層の符号化情報格納メモリ115に記憶されている既に符号化された参照階層の予測ブロックの符号化情報も用いる。これらの符号化情報を用いて、複数のマージ候補を導出して後述するマージ候補リストに登録し、マージ候補リストに登録された複数のマージ候補の中から適したマージ候補を選択し、選択されたマージ候補の各予測ブロックのL0予測、及びL1予測を利用するかどうかを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]、参照インデックスrefIdxL0[xP][yP], refIdxL1[xP][yP]、動きベクトルmvL0[xP][yP], mvL1[xP][yP]等のインター予測情報をインター予測部105に供給するとともに、選択されたマージ候補を特定するマージインデックスを予測方法決定部107に供給する。ここで、xP、yPはピクチャ内での予測ブロックの左上の画素の位置を示すインデックスである。インター予測情報導出部104の詳細な構成と動作は後述する。
インター予測部105は、動きベクトル検出部102およびインター予測情報導出部104により検出された動きベクトルを用いて参照ピクチャからインター予測(動き補償予測)により予測画像信号を生成し、予測画像信号を予測方法決定部107に供給する。なお、L0予測、及びL1予測では、片方向の予測を行う。双予測(Pred_BI)の場合は、双方向の予測を行い、L0予測、L1予測のそれぞれのインター予測された信号に適応的に重み係数を掛け算し、オフセット値を加算して重畳し、最終的な予測画像信号を生成する。
イントラ予測部106は、各イントラ予測モードについてイントラ予測を行う。復号画像メモリ116に格納されている復号済みの画像信号からイントラ予測により予測画像信号を生成し、複数のイントラ予測モードの中から適したイントラ予測モードを選択し、選択されたイントラ予測モード、及び選択されたイントラ予測モードに応じた予測画像信号を予測方法決定部107に供給する。
予測方法決定部107はそれぞれの予測方法毎に符号化情報及び残差信号の符号量、予測画像信号と画像信号との間の歪量等を評価することにより、複数の予測方法の中から、最適な符号化ブロック単位でインター予測(PRED_INTER)かイントラ予測(PRED_INTRA)かを判別する予測モードPredMode、分割モードPartModeを決定し、インター予測(PRED_INTER)では予測ブロック単位でマージモードか否かを決定し、マージモードの場合はマージインデックス、マージモードでない場合はインター予測モード、予測動きベクトルインデックス、L0、L1の参照インデックス、差分動きベクトル等を決定して、決定に応じた符号化情報を第2符号化ビット列生成部110に供給する。
さらに、予測方法決定部107は、決定された予測方法を示す情報、及び決定された予測方法に応じた動きベクトル等を含む符号化情報を符号化情報格納メモリ115に格納する。ここで格納する符号化情報は、各符号化ブロックの予測モードPredMode、分割モードPartMode、各予測ブロックのL0予測、及びL1予測を利用するかどうかを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]、L0、L1の参照インデックスrefIdxL0[xP][yP], refIdxL1[xP][yP]、L0、L1の動きベクトルmvL0[xP][yP], mvL1[xP][yP]等である。ここで、xP、yPはピクチャ内での予測ブロックの左上の画素の位置を示すインデックスである。なお、予測モードPredModeがイントラ予測(MODE_INTRA)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0[xP][yP]、L1予測を利用するかどうかを示すフラグpredFlagL1[xP][yP]は共に0である。一方、予測モードPredModeがインター予測(MODE_INTER)で、インター予測モードがL0予測(Pred_L0)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0[xP][yP]は1, L1予測を利用するかどうかを示すフラグpredFlagL1[xP][yP]は0である。インター予測モードがL1予測(Pred_L1)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0[xP][yP]は0, L1予測を利用するかどうかを示すフラグpredFlagL1[xP][yP]は1である。インター予測モードが双予測(Pred_BI)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0[xP][yP]、L1予測を利用するかどうかを示すフラグpredFlagL1[xP][yP]は共に1である。予測方法決定部107は、決定された予測モードに応じた予測画像信号を残差信号生成部108と復号画像信号重畳部114に供給する。
残差信号生成部108は、符号化する画像信号と予測画像信号との減算を行うことにより残差信号を生成し、直交変換・量子化部109に供給する。
直交変換・量子化部109は、残差信号に対して量子化パラメータに応じて直交変換及び量子化を行い直交変換・量子化された残差信号を生成し、第3符号化ビット列生成部111と逆量子化・逆直交変換部113に供給する。さらに、直交変換・量子化部109は、量子化パラメータを符号化情報格納メモリ115に格納する。
第1符号化ビット列生成部118は、ヘッダ情報設定部117で設定されたシーケンス、ピクチャ、スライス単位の情報を符号化する。第1の符号化ビット列を生成し、多重化部112に供給する。後述するシーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_temporal_mvp_enable_flag、シーケンス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_inter_layer_mvp_enable_flag、スライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_temporal_mvp_enable_flag、スライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_inter_layer_mvp_enable_flagも第1符号化ビット列生成部118で符号化される。シーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_temporal_mvp_enable_flag、シーケンス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_inter_layer_mvp_enable_flag、スライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_temporal_mvp_enable_flag、スライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_inter_layer_mvp_enable_flagの符号化処理手順は図49、及び図54のフローチャートを用いて後ほど詳細に説明する。
第2符号化ビット列生成部110は、符号化ブロック及び予測ブロック毎に予測方法決定部107によって決定された予測方法に応じた符号化情報を符号化する。具体的には、符号化ブロック毎のスキップモードかどうかを判別する情報、インター予測(PRED_INTER)かイントラ予測(PRED_INTRA)かを判別する予測モードPredMode、分割モードPartMode、イントラ予測(PRED_INTRA)の場合、イントラ予測モード、インター予測(PRED_INTER)の場合、マージモードかどうかを判別するフラグ、マージモードの場合は選択すべきマージ候補(インター予測情報の候補)を特定するマージインデックス、マージモードでない場合はインター予測モード、選択すべき予測動きベクトル候補を特定する予測動きベクトルインデックスまたはフラグ、差分動きベクトルに関する情報等の符号化情報を後述する規定のシンタックス規則に従って符号化して第2の符号化ビット列を生成し、多重化部112に供給する。なお、本実施の形態では、符号化ブロックがスキップモード(シンタックス要素skip_flag[x0][y0]が1)の場合、予測ブロックの予測モードPredModeの値はインター予測(MODE_INTER)で、マージモード(merge_flag[x0][y0]が1)で、分割モード(PartMode)は2N×2N分割(PART_2Nx2N)とする。
第3符号化ビット列生成部111は、直交変換及び量子化された残差信号を規定のシンタックス規則に従ってエントロピー符号化して第3の符号化ビット列を生成し、多重化部112に供給する。多重化部112で、第1の符号化ビット列、第2の符号化ビット列および第3の符号化ビット列を規定のシンタックス規則に従って多重化し、ビットストリームを出力する。
逆量子化・逆直交変換部113は、直交変換・量子化部109から供給された直交変換・量子化された残差信号を逆量子化及び逆直交変換して残差信号を算出し、復号画像信号重畳部114に供給する。復号画像信号重畳部114は、予測方法決定部107による決定に応じた予測画像信号と逆量子化・逆直交変換部113で逆量子化及び逆直交変換された残差信号を重畳して復号画像を生成し、復号画像メモリ116に格納する。なお、復号画像に対して符号化によるブロック歪等の歪を減少させるフィルタリング処理を施して、復号画像メモリ116に格納されることもある。
図4は本実施の形態の図2の動画像復号装置を構成する各階層の階層画像復号部22、23、24の構成を示すブロック図である。図4は図3の実施の形態の動画像符号化装置の階層画像符号化部12、13、14に対応した本発明の実施の形態に係る動画像復号装置の階層画像復号部22、23、24の構成を示すブロックである。実施の形態の動画像復号装置の階層画像復号部22、23、24は、分離部201、第1符号化ビット列復号部212、第2符号化ビット列復号部202、第3符号化ビット列復号部203、動きベクトル算出部204、インター予測情報導出部205、インター予測部206、イントラ予測部207、逆量子化・逆直交変換部208、復号画像信号重畳部209、符号化情報格納メモリ210、および復号画像メモリ211を備える。
図4の階層画像復号部の復号処理は、図3の階層画像符号化部の内部に設けられている復号処理に対応するものであるから、図4のインター予測部206、逆量子化・逆直交変換部208、復号画像信号重畳部209、符号化情報格納メモリ210、および復号画像メモリ211の各構成は、図3の階層画像符号化部のインター予測部105、逆量子化・逆直交変換部113、復号画像信号重畳部114、符号化情報格納メモリ115、および復号画像メモリ116の各構成とそれぞれ対応する機能を有する。
分離部201に供給されるビットストリームは規定のシンタックスの規則に従って分離し、分離された第1の符号化ビット列が第1符号化ビット列復号部212に供給され、第2の符号化ビット列が第2符号化ビット列復号部202に供給され、第3の符号化ビット列が第3符号化ビット列復号部203に供給される。
第1符号化ビット列復号部212は、供給された第1の符号化ビット列を復号して、シーケンス、ピクチャ、スライス単位の情報を得る。得られたシーケンス、ピクチャ、スライス単位の情報は図示していないがすべてのブロックに供給する。後述するシーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_temporal_mvp_enable_flag、シーケンス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_inter_layer_mvp_enable_flag、スライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_temporal_mvp_enable_flag、スライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_inter_layer_mvp_enable_flagも第1符号化ビット列復号部212で復号される。シーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_temporal_mvp_enable_flag、シーケンス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かを示すフラグsps_inter_layer_mvp_enable_flag、スライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_temporal_mvp_enable_flag、スライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かを示すフラグslice_inter_layer_mvp_enable_flagの復号処理手順は図50、及び図55のフローチャートを用いて、後ほど詳細に説明する。
第2符号化ビット列復号部202は、供給された第2の符号化ビット列を復号して、符号化ブロック単位の情報、及び、予測ブロック単位の符号化情報を得る。具体的には、符号化ブロック単位でスキップモードかどうかを判別する情報、インター予測(PRED_INTER)かイントラ予測(PRED_INTRA)かを判別する予測モードPredMode、分割モードPartMode、インター予測(PRED_INTER)の場合、マージモードかどうかを判別するフラグ、マージモードの場合は選択すべきマージ候補(インター予測情報の候補)を特定するマージインデックス、マージモードでない場合はインター予測モード、選択すべき予測動きベクトル候補を特定する予測動きベクトルインデックスまたはフラグ、差分動きベクトル等に関する符号化情報を後述する規定のシンタックス規則に従って復号し、復号された符号化情報を符号化情報格納メモリ210に格納するとともに、動きベクトル算出部204、インター予測情報導出部205またはイントラ予測部207に供給する。なお、本実施の形態では、符号化ブロックがスキップモード(シンタックス要素skip_flag[x0][y0]が1)の場合、予測ブロックの予測モードPredModeの値はインター予測(MODE_INTER)で、マージモード(merge_flag[x0][y0]が1)で、分割モード(PartMode)は2N×2N分割(PART_2Nx2N)とする。
第3符号化ビット列復号部203は、供給された第3の符号化ビット列を復号して直交変換・量子化された残差信号を算出し、直交変換・量子化された残差信号を逆量子化・逆直交変換部208に供給する。
動きベクトル算出部204は、復号対象の予測ブロックの予測モードPredModeがインター予測(PRED_INTER)でマージモードでない時に、予測動きベクトル候補を導出して、動きベクトルを導出する。予測動きベクトルを導出する際は、ベース階層の復号においては、第2符号化ビット列復号部202で復号され供給される予測モード、参照インデックス等のインター予測情報と同じ階層の符号化情報格納メモリ210に記憶されている既に復号された画像信号の符号化情報を用いる。拡張階層の復号においては、第2符号化ビット列復号部202で復号され供給される予測モード、参照インデックス等の符号化情報と同じ階層の符号化情報格納メモリ210に記憶されている既に復号された同じ階層の予測ブロックの符号化情報に加えて、参照階層の符号化情報格納メモリ210に記憶されている既に復号された参照階層の予測ブロックの符号化情報も用いる。これらの符号化情報を用いて、複数の予測動きベクトルの候補を導出して後述する予測動きベクトルリストに登録し、予測動きベクトルリストに登録された複数の予測動きベクトルの候補の中から、第2符号化ビット列復号部202で復号され供給される予測動きベクトルインデックスに応じた予測動きベクトルを選択し、第2符号化ビット列復号部202で復号された差分ベクトルと選択された予測動きベクトルから動きベクトルを算出し、他の符号化情報とともにインター予測部206に供給するとともに、符号化情報格納メモリ210に格納する。ここで供給・格納する予測ブロックの符号化情報は、L0予測、及びL1予測を利用するかどうかを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]、L0、L1の参照インデックスrefIdxL0[xP][yP], refIdxL1[xP][yP]、L0、L1の動きベクトルmvL0[xP][yP], mvL1[xP][yP]等である。ここで、xP、yPはピクチャ内での予測ブロックの左上の画素の位置を示すインデックスである。予測モードPredModeがインター予測(MODE_INTER)で、インター予測モードがL0予測(Pred_L0)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0は1, L1予測を利用するかどうかを示すフラグpredFlagL1は0である。インター予測モードがL1予測(Pred_L1)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0は0, L1予測を利用するかどうかを示すフラグpredFlagL1は1である。インター予測モードが双予測(Pred_BI)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0、L1予測を利用するかどうかを示すフラグpredFlagL1は共に1である。動きベクトル算出部204の詳細な構成と動作は後述する。
インター予測情報導出部205は、復号対象の予測ブロックの予測モードPredModeがインター予測(PRED_INTER)でマージモードの時に、マージ候補を導出する。符号化側のインター予測情報導出部104と同様に復号側でも、マージ候補を導出する際は、ベース階層の復号においては、同じ階層の符号化情報格納メモリ210に記憶されている既に復号された同じ階層の予測ブロックの符号化情報を用いる。拡張階層においては、同じ階層の符号化情報格納メモリ210に記憶されている既に復号された同じ階層の予測ブロックの符号化情報を用いるとともに、参照階層の符号化情報格納メモリ210に記憶されている既に復号された参照階層の予測ブロックの符号化情報も用いる。符号化情報格納メモリ115に記憶されている既に復号された予測ブロックの符号化情報を用いて、複数のマージの候補を導出して後述するマージ候補リストに登録し、マージ候補リストに登録された複数のマージ候補の中から第2符号化ビット列復号部202で復号され供給されるマージインデックスに対応したマージ候補を選択し、選択されたマージ候補のL0予測、及びL1予測を利用するかどうかを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]、L0、L1の参照インデックスrefIdxL0[xP][yP], refIdxL1[xP][yP]、L0、L1の動きベクトルmvL0[xP][yP], mvL1[xP][yP]等のインター予測情報をインター予測部206に供給するとともに、符号化情報格納メモリ210に格納する。ここで、xP、yPはピクチャ内での予測ブロックの左上の画素の位置を示すインデックスである。インター予測情報導出部205の詳細な構成と動作は後述する。
インター予測部206は、動きベクトル算出部204またはインター予測情報導出部205で算出されたインター予測情報を用いて復号画像メモリ211に格納されている参照ピクチャからインター予測(動き補償予測)により予測画像信号を生成し、予測画像信号を復号画像信号重畳部209に供給する。なお、双予測(Pred_BI)の場合は、L0予測、L1予測の2つの動き補償予測画像信号に必要に応じて適応的に重み係数を掛け算して重畳し、最終的な予測画像信号を生成する。
イントラ予測部207は、復号対象の予測ブロックの予測モードPredModeがイントラ予測(PRED_INTRA)の時に、イントラ予測を行う。第2符号化ビット列復号部202で復号された符号化情報にはイントラ予測モードが含まれており、イントラ予測モードに応じて、復号画像メモリ211に格納されている復号済みの画像信号からイントラ予測により予測画像信号を生成し、予測画像信号を復号画像信号重畳部209に供給する。L0予測、及びL1予測を利用するかどうかを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]を共に0に設定し、符号化情報格納メモリ210に格納する。本実施の形態においては、predFlagL0[xP][yP],とpredFlagL1[xP][yP]が共に0であれば、インター予測ではなくイントラ予測により符号化されているを示す。さらに、L0、L1の参照インデックスrefIdxL0[xP][yP], refIdxL1[xP][yP]を共に-1に設定し、L0、L1の動きベクトルmvL0[xP][yP], mvL1[xP][yP]を共に(0, 0)に設定し、それぞれの符号化情報を符号化情報格納メモリ210に格納する。ここで、xP、yPはピクチャ内での予測ブロックの左上の画素の位置を示すインデックスである。
逆量子化・逆直交変換部208は、第2符号化ビット列復号部202で復号された直交変換・量子化された残差信号に対して逆直交変換及び逆量子化を行い、逆直交変換・逆量子化された残差信号を得る。
復号画像信号重畳部209は、インター予測部206でインター予測された予測画像信号、またはイントラ予測部207でイントラ予測された予測画像信号と、逆量子化・逆直交変換部208により逆直交変換・逆量子化された残差信号とを重畳することにより、復号画像信号を復号し、復号画像メモリ211に格納する。復号画像メモリ211に格納する際には、復号画像に対して符号化によるブロック歪等を減少させるフィルタリング処理を施して、復号画像メモリ211に格納されることもある。
なお、動きベクトル算出部204、インター予測情報導出部205またはイントラ予測部207により符号化情報格納メモリ210に格納されたL0予測、及びL1予測を利用するかどうかを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]、L0、L1の参照インデックスrefIdxL0[xP][yP], refIdxL1[xP][yP]、L0、L1の動きベクトルmvL0[xP][yP], mvL1[xP][yP]等の符号化情報は復号対象の復号の際に用いられるのはもちろんのこと、上位階層の復号の際にも用いられる。
次に、実施の形態に係るインター予測情報導出方法について説明する。インター予測情報導出方法は、図3の動画像符号化装置の階層画像符号化部のインター予測情報導出部104及び図4の動画像復号装置の階層画像復号部のインター予測情報導出部205において実施される。
実施の形態に係るインター予測情報導出方法を図面を用いて説明する。実施の形態に係るインター予測情報導出方法は、符号化ブロックを構成する予測ブロック単位に、符号化及び復号の処理の何れでも実施される。予測ブロックの予測モードPredModeがインター予測(MODE_INTER)で、スキップモードを含むマージモードの場合に、符号化の場合、符号化済みの予測ブロックの予測モード、参照インデックス、動きベクトルを利用して符号化対象の予測ブロックの予測モード、参照インデックス、動きベクトルを導出する際、復号の場合、復号済みの予測ブロックの予測モード、参照インデックス、動きベクトルを利用して復号対象の予測ブロックの予測モード、参照インデックス、動きベクトルを導出する際に実施される。
マージモードは符号化側の動画像符号化装置の階層画像符号化部と復号側の動画像復号装置の階層画像復号部で共通の規定の方法により、マージ候補を導出し、マージ候補リストに登録する。図7、図8、図9及び図10を用いて説明した左に近接する予測ブロックA1、上に近接する予測ブロックB1、右上に近接する予測ブロックB0、左下に近接する予測ブロックA0、左上に近接する予測ブロックB2の5つの予測ブロックから空間のマージ候補を導出する。図11を用いて説明した異なる時間の同一位置あるいはその付近に存在する予測ブロックcolPb(T0、T1のいずれか)の予測ブロックから異なる時間のマージ候補を導出する。また、拡張階層では、図12〜14を用いて説明した参照階層を符号化または復号対象の拡張階層に対応するサイズ、位置にスケーリングした場合に符号化または復号対象の予測ブロックと同一位置あるいはその付近に存在する参照階層の予測ブロックilPb(L0、L1のいずれか)の符号化情報から階層間のマージ候補ILを導出する。
動画像符号化装置の階層画像符号化部のインター予測情報導出部104はマージ候補リストの要素を特定するマージインデックスを決定して第2符号化ビット列生成部110を経由して符号化し、動画像復号装置の階層画像復号部のインター予測情報導出部205は第2符号化ビット列復号部202で復号されたマージインデックスが供給されて、そのマージインデックスに応じた予測ブロックをマージ候補リストから選択し、その選択されたマージ候補の予測モード、参照インデックス、動きベクトル等のインター予測情報を用いて、動き補償予測を行う。
実施の形態に係るインター予測情報導出方法を図面を用いて説明する。図15は、実施の形態に係る第1の実施例の図3の動画像符号化装置の階層画像符号化部のインター予測情報導出部104の詳細な構成を示す図である。また、図16は、実施の形態に係る図4の動画像復号装置の階層画像復号部のインター予測情報導出部205の詳細な構成を示す図である。
図15及び図16の太枠線で囲まれる部分はそれぞれ、インター予測情報導出部104及びインター予測情報導出部205を示している。
更に、それらの内部の太点線で囲まれる部分はそれぞれのマージ候補を導出してマージ候補リストを構築する動画像符号化装置の階層画像符号化部のマージ候補リストの構築部120及び動画像復号装置の階層画像復号部のマージ候補リストの構築部220を示しており、実施の形態の動画像符号化装置の階層画像符号化部と対応する動画像復号装置の階層画像復号部にも同様に設置され、符号化と復号で矛盾しない同一の導出結果を得られるようにしている。
図15の動画像符号化装置の階層画像符号化部のインター予測情報導出部104は、マージ候補生成部131、マージ候補登録部134、追加マージ候補生成部135およびインター予測情報選択部136を含む。
図16の動画像復号装置の階層画像復号部のインター予測情報導出部205は、マージ候補生成部231、マージ候補登録部234、追加マージ候補生成部235およびインター予測情報選択部236を含む。
図17は本発明の実施の形態に係る動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補リストの構築部120及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補リストの構築部220とで共通する機能を有するマージ候補の導出処理及びマージ候補リストの構築処理の手順を説明するフローチャートである。
以下、諸過程を順を追って説明する。なお、以下の説明においては特に断りのない限りスライスタイプslice_typeがBスライスの場合について説明するが、Pスライスの場合にも適用できる。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
動画像符号化装置の階層画像符号化部のインター予測情報導出部104及び動画像復号装置の階層画像復号部のインター予測情報導出部205では、マージ候補リストmergeCandListを用意する。マージ候補リストmergeCandListはリスト構造を成し、マージ候補リスト内部の所在を示すマージインデックスと、インデックスに対応するマージ候補を要素として格納する記憶領域が設けられている。マージインデックスの数字は0から開始され、マージ候補リストmergeCandListの記憶領域に、マージ候補が格納される。以降の処理では、マージ候補リストmergeCandListに登録されたマージインデックスiのマージ候補となる予測ブロックは、mergeCandList[i]で表すこととし、マージ候補リストmergeCandListとは配列表記をすることで区別することとする。本実施の形態においては、マージ候補リストmergeCandListは少なくとも5個のマージ候補(インター予測情報)を登録することができるものとする。
また、階層間マージ候補が利用できるかどうかを示すフラグavailableFlagIL、予測ブロックA1、B1、B0、A0、B2のインター予測情報が空間マージ候補A1、B1、B0、A0、B2として利用できるかどうかを示すフラグavailableFlagA1、 availableFlagB1、availableFlagB0、availableFlagA0、availableFlagB2、時間マージ候補が利用できるかどうかを示すフラグavailableFlagColは0に初期化される。
動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補生成部131及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補生成部231では、複数のマージ候補を導出する。導出されたマージ候補は、動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補登録部134及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補登録部234にそれぞれ供給される。
本実施の形態の動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補生成部131及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補生成部231では、ベース階層では、異なる時間のピクチャの符号化または復号に用いたインター予測情報を参照する時間マージ候補をマージ候補の1つとし、時間マージ候補を導出するか否かをシーケンス単位、またはスライス単位で切り替える。拡張階層では、時間マージ候補、または下位階層のピクチャの符号化または復号に用いたインター予測情報を参照する階層間マージ候補のいずれか一方をマージ候補の1つとし、時間マージ候補を導出するか否かをシーケンス単位、またはスライス単位で切り替えると共に、階層間マージ候補を導出するか否かをシーケンス単位、またはスライス単位で切り替える。
動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補生成部131及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補生成部231では、動画像符号化装置および動画像復号装置の拡張階層において、後述するスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_inter_layer_mvp_enable_flagの値が1の場合、すなわち階層間マージ候補を導出する場合(図17のステップS101のYES)、参照階層の予測ブロックから階層間マージ候補を導出する(図17のステップS102)。階層間マージ候補が利用できるかどうかを示すフラグavailableFlagIL、階層間マージ候補のL0予測が行われるかどうかを示すL0予測フラグpredFlagL0ILおよびL1予測が行われるかどうかを示すL1予測フラグpredFlagL1IL、及びL0の動きベクトルmvL0IL、L1の動きベクトルmvL1ILを導出する。ステップS102の階層間マージ候補導出処理の詳細な処理手順については図26のフローチャートを用いて後ほど詳細に説明する。導出された拡張マージ候補は動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補登録部134及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補登録部234にそれぞれ供給される。一方、ベース階層の符号化および復号の場合、またはスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_inter_layer_mvp_enable_flagの値が1でない場合(値が0の場合)、すなわち階層間マージ候補を導出しない場合(図17のステップS101のNO)、ステップS102の階層間マージ候補導出処理を行わずにステップS103に進む。この場合は、フラグavailableFlagILは0に設定される。
続いて、動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補生成部131及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補生成部231では、動画像符号化装置の階層画像符号化部の符号化情報格納メモリ115または動画像復号装置の階層画像復号部の符号化情報格納メモリ210に格納されている符号化情報から、符号化または復号対象ブロックに近接するそれぞれの予測ブロックA1,B1,B0,A0,B2からの空間マージ候補A1,B1,B0,A0,B2を導出する(図17のステップS103)。ここで、空間マージ候補A1,B1,B0,A0,B2,時間マージ候補Colまたは階層間マージ候補ILのいずれかを示すNを定義する。予測ブロックNのインター予測情報が空間マージ候補Nとして利用できるかどうかを示すフラグavailableFlagN、空間マージ候補NのL0の参照インデックスrefIdxL0N及びL1の参照インデックスrefIdxL1N、L0予測が行われるかどうかを示すL0予測フラグpredFlagL0NおよびL1予測が行われるかどうかを示すL1予測フラグpredFlagL1N、L0の動きベクトルmvL0N、L1の動きベクトルmvL1Nを導出する。ただし、本実施の形態においては処理対象となる予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる予測ブロックを参照せずに、マージ候補を導出するので、処理対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる空間マージ候補は導出しない。ステップS103の空間マージ候補導出処理の詳細な処理手順については図18のフローチャートを用いて後ほど詳細に説明する。導出されたそれぞれの空間マージ候補は動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補登録部134及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補登録部234にそれぞれ供給される。
後述するスライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_temporal_mvp_enable_flagの値が1の場合、すなわち時間マージ候補を導出する場合(図17のステップS104のYES)、動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補生成部131及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補生成部231では、異なる時間のピクチャからの時間マージ候補を導出する(図17のステップS106)。時間マージ候補が利用できるかどうかを示すフラグavailableFlagCol、時間マージ候補のL0予測が行われるかどうかを示すL0予測フラグpredFlagL0ColおよびL1予測が行われるかどうかを示すL1予測フラグpredFlagL1Col、及びL0の動きベクトル mvL0Col、L1の動きベクトルmvL1Colを導出する。ステップS106の時間マージ候補導出処理の詳細な処理手順については図19のフローチャートを用いて後ほど詳細に説明する。導出された時間マージ候補は動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補登録部134及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補登録部234にそれぞれ供給される。一方、後述するスライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_temporal_mvp_enable_flagの値が1でない場合(値が0の場合)、すなわち時間マージ候補を導出しない場合(図17のステップS104のNO)、ステップS106の時間マージ候補導出処理をスキップしてステップS107に進む。この場合は、フラグavailableFlagColは0に設定される。
続いて、動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補登録部134及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補登録部234では、マージ候補リストmergeCandListを作成し、動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補生成部131及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補生成部231から供給される空間マージ候補A1,B1,B0,A0,B2、時間マージ候補Col、階層間マージ候補ILをマージ候補リストmergeCandList内に登録し、マージ候補数numMergeCandにマージ候補リストmergeCandList内のマージ候補数を設定する(図17のステップS107)。ステップS107の詳細な処理手順については図31のフローチャートを用いて後ほど詳細に説明する。
続いて、動画像符号化装置の階層画像符号化部のインター予測情報導出部104の追加マージ候補生成部135及び動画像復号装置の階層画像復号部のインター予測情報導出部205の追加マージ候補生成部235では、マージ候補リストmergeCandList内に登録されているマージ候補数numMergeCandが、最大マージ候補数maxNumMergeCandより小さい場合、マージ候補リストmergeCandList内に登録されているマージ候補数numMergeCandが最大マージ候補数maxNumMergeCandを上限としてマージ候補リスト内のマージインデックスが0から(maxNumMergeCand-1)の値で指し示される範囲内で、無効なマージ候補がなくなるまで、追加マージ候補を導出して、マージ候補リストmergeCandListに登録する(図17のステップS108)。なお、最大マージ候補数maxNumMergeCandはスライス単位で符号化または復号されるシンタックス要素である。最大マージ候補数maxNumMergeCandを上限として、Pスライスでは、動きベクトルが(0,0)(水平および垂直成分がともに0)で、予測モードがL0予測(Pred_L0)のマージ候補を追加する。Bスライスでは、動きベクトルが(0,0)で、予測モードが双予測(Pred_BI)のマージ候補を追加する。ステップS108の詳細な処理手順については図32のフローチャートを用いて後ほど詳細に説明する。マージ候補リストmergeCandListは動画像符号化装置の階層画像符号化部のインター予測情報導出部104のインター予測情報選択部136及び動画像復号装置の階層画像復号部のインター予測情報導出部205のインター予測情報選択部236にそれぞれ供給される。
次に、図17のステップS103の処理手順である符号化または復号対象ブロックに近接する予測ブロックNからのマージ候補Nの導出方法について詳細に説明する。図18は図17のステップS103の空間マージ候補導出処理手順を説明するフローチャートである。Nには近接する予測ブロックの領域を表すA1(左側)、B1(上側)、B0(右上)、A0(左下)またはB2(左上)が入る。なお、本実施の形態においては、近接する5つの予測ブロックから最大4つの空間マージ候補を導出する。
図18で、変数NをAとして符号化または復号対象の予測ブロックの左側に近接する予測ブロックA1の符号化情報を調べてマージ候補A1を導出し、変数NをB1として上側に近接する予測ブロックB1の符号化情報を調べてマージ候補B1を導出し、変数NをB0として右上側に近接する予測ブロックB0の符号化情報を調べてマージ候補B0を導出し、変数NをA0として左下側に近接する予測ブロックA0の符号化情報を調べてマージ候補A0を導出し、変数NをB2として左上側に近接する予測ブロックB2の符号化情報を調べてマージ候補B2を導出する(図18のステップS1101〜ステップS1117)。
まず、変数NがB2で、フラグavailableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1の値を加算して合計が4の場合(図18のステップS1102のYES)、すなわち4つの空間マージ候補が導出された場合、ステップS1109以降の処理を行う。
本実施の形態においては、近接する予測ブロックから最大で4つのマージ候補を導出するので、既に4つの空間マージ候補が導出された場合はそれ以上の空間マージ候補の導出処理を行う必要がない。
一方、変数NがB2でないか、フラグavailableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1の値を加算して合計が4でない場合(図18のステップS1102のNO)、すなわち4つの空間マージ候補が導出されていない場合、ステップS1103以降の処理を行う。近接する予測ブロックNが導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる場合(図18のステップS1103のYES)、ステップS1109以降の処理を行う。近接する予測ブロックNが導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる場合(図18のステップS1103のYES)、近接する予測ブロックNを参照しないことで、予測ブロックのマージ候補導出及びマージ候補リストの構築処理の並列処理を可能とする。
具体的には、分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)または2N×nD分割(PART_2NxnD)で、処理対象の予測ブロックのPartIdxが1で、近接する予測ブロックBの場合が、近接する予測ブロックNが導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる場合である。この場合、近接する予測ブロックB1はPartIdxが0の予測ブロックであるので、近接する予測ブロックB1を参照しないことで、予測ブロックのマージ候補導出及びマージ候補リストの構築処理の並列処理を可能とする。
さらに、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)またはnR×2N分割(PART_nRx2N)で、処理対象の予測ブロックのPartIdxが1で、近接する予測ブロックA1の場合も、近接する予測ブロックNが導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる場合である。この場合も、近接する予測ブロックA1はPartIdxが0の予測ブロックであるので、近接する予測ブロックA1を参照しないことで、予測ブロックのマージ候補導出及びマージ候補リストの構築処理の並列処理を可能とする。
さらに、分割モード(PartMode)がN×N分割(PART_NxN)で、処理対象の予測ブロックのPartIdxが1、2または3の場合も、近接する予測ブロックNが導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれることがある。
一方、近接する予測ブロックNが処理対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれない場合(図18のステップS1103のNO)、符号化または復号対象の予測ブロックに近接する予測ブロックNを特定し、それぞれの予測ブロックNが利用できる場合は符号化情報格納メモリ115または210から予測ブロックNの符号化情報を取得する(図18のステップS1104)。
近接する予測ブロックNが利用できないか(図18のステップS1105のNO)、予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)である場合(図18のステップS1106のNO)、ステップS1109以降の処理を行う。ここで、近接する予測ブロックNが利用できない場合とは、具体的には近接する予測ブロックNが符号化または復号対象スライスの外に位置する場合や、まだ符号化または復号処理順序で後のため、符号化または復号処理が完了していない場合等が該当する。
続いて、マージ候補NのフラグpredFlagL0N, predFlagL1N、マージ候補Nの参照インデックスrefIdxL0N, refIdxL1N、マージ候補Nの動きベクトルmvL0N, mvL1Nをすでに導出された隣同士のマージ候補とそれぞれ比較する(図18のステップS1107)。マージ候補の値が同一の場合(図18のステップS1108のNO)、ステップS1109以降の処理を行う。
変数NがB2で、フラグavailableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1の値を加算して合計が4となり4つの空間マージ候補が導出されたか、(図18のステップS1102のYES)、近接する予測ブロックNが導出対象の予測ブロックの符号化ブロックと同じ符号化ブロックに含まれるか(図18のステップS1103のYES)、近接する予測ブロックNが利用できないか(図18のステップS1105のNO)、予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)であるか(図18のステップS1106のNO)、すでに導出された隣同士のマージ候補と値が同一の場合(図18のステップS1108のNO)、マージ候補NのフラグavailableFlagNの値を0に設定し(図18のステップS1109)、マージ候補Nの動きベクトルmvL0N, mvL1Nの値を共に(0,0)に設定し(図18のステップS1110)、マージ候補Nの参照インデックスrefIdxL0N, refIdxL1Nをそれぞれ予測ブロックNの参照インデックスrefIdxL0[xN][yN], refIdxL1[xN][yN]と同じ値に設定し(図18のステップS1111)、マージ候補NのフラグpredFlagL0N、predFlagL1Nの値を共に0に設定し(図18のステップS1112)、ステップS1117に進む。
一方、変数NがB2で、フラグavailableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1の値を加算して合計が4でなく4つの空間マージ候補が導出されておらず、(図18のステップS1102のYES)、近接する予測ブロックNが導出対象の予測ブロックの符号化ブロックと同じ符号化ブロック外で(図18のステップS1103のNO)、近接する予測ブロックNが利用でき(図18のステップS1105のYES)、予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)でなく(図18のステップS1106のYES)、すでに導出された隣同士のマージ候補と値が同一でない場合(図18のステップS1108のYES)、予測ブロックNのインター予測情報をマージ候補Nのインター予測情報とする。マージ候補NのフラグavailableFlagNの値を1に設定し(図18のステップS1113)、マージ候補Nの動きベクトルmvL0N, mvL1Nをそれぞれ予測ブロックNの動きベクトルmvL0N[xN][yN], mvL1N[xN][yN]と同じ値に設定し(図18のステップS1114)、マージ候補Nの参照インデックスrefIdxL0N, refIdxL1Nをそれぞれ予測ブロックNの参照インデックスrefIdxL0[xN][yN], refIdxL1[xN][yN]と同じ値に設定し(図18のステップS1115)、マージ候補NのフラグpredFlagL0N, predFlagL1Nをそれぞれ予測ブロックNのフラグpredFlagL0[xN][yN], predFlagL1[xN][yN]に設定する(図18のステップS1116)。ここで、xN、yNはピクチャ内での予測ブロックNの左上の画素の位置を示すインデックスである。
以上のステップS1102〜ステップS1116の処理をN=A1,B1,B0,A0,B2についてそれぞれ繰り返す(図18のステップS1101〜ステップS1117)。
次に、図17のステップS106の異なる時間のピクチャのインター予測情報を用いるマージ候補の導出方法について詳細に説明する。図19は図17のステップS106の時間マージ候補導出処理手順を説明するフローチャートである。
まず、スライス単位でスライスヘッダに記述されるスライスタイプslice_typeと時間方向の予測動きベクトルの候補、またはマージ候補を導出する際に用いる異なる時間のピクチャcolPicが処理対象の予測ブロックが含まれるピクチャのL0の参照リスト或いはL1の参照リストのどちらに登録されている参照ピクチャを使用するかを示すフラグcollocated_from_l0_flagにより、異なる時間のピクチャcolPicを導出する(図19のS2101)。ステップS2101の詳細な処理手順については図20のフローチャートを用いて後ほど詳細に説明する。
続いて、異なる時間の予測ブロックcolPbを導出し、符号化情報を取得する(図19のS2102)。ステップS2102の詳細な処理手順については図21のフローチャートを用いて後ほど詳細に説明する。
続いて、符号化または復号対象の予測ブロックと同位置の他ピクチャの予測ブロックから導出されるL0の予測動きベクトルmvL0Colと時間マージ候補Colが有効か否かを示すフラグavailableFlagL0Colを導出するとともに(図19のS2103)、L1の予測動きベクトルmvL1Colと時間マージ候補Colが有効か否かを示すフラグavailableFlagL1Colを導出する(図19のS2104)。ステップS2103、S2104の詳細な処理手順については図22のフローチャートを用いて後ほど詳細に説明する。さらに、フラグavailableFlagL0Col またはフラグavailableFlagL1Colが1の場合に、時間マージ候補Colが有効か否かを示すフラグavailableFlagColを1に設定し、そうでない場合に、availableFlagColを0に設定する(図19のS2105)。
次に、図19のステップS2101の異なる時間のピクチャcolPicの導出処理手順について詳細に説明する。図20は図19のステップS2101の異なる時間のピクチャcolPicの導出処理手順を説明するフローチャートである。スライスタイプslice_typeがBスライスで、フラグcollocated_from_l0_flagの値が0の場合(図20のS2201のYES、S2202のYES)、RefPicList1[collocated_ref_idx]、すなわち参照リストL1の参照インデックスがcollocated_ref_idxの値のピクチャが異なる時間のピクチャcolPicとなる(図20のS2203)。そうでない場合、すなわちスライスタイプslice_typeがBスライスで前述のフラグcollocated_from_l0_flagの値が1の場合(図20のS2201のYES、S2202のNO)、またはスライスタイプslice_typeがPスライスの場合(図20のS2201のNO、S2204のYES)、RefPicList0[collocated_ref_idx]、すなわち参照リストL0の参照インデックスがcollocated_ref_idxの値のピクチャが異なる時間のピクチャcolPicとなる(図20のS2205)。なお、collocated_ref_idx, collocated_ref_idxはスライスヘッダで符号化または復号されるシンタックス要素である。
次に、図19のステップS2102の異なる時間のピクチャcolPicの予測ブロックcolPbの導出処理手順について詳細に説明する。図21は図19のステップS2102の異なる時間のピクチャcolPicの予測ブロックcolPbの導出処理手順を説明するフローチャートである。
まず、異なる時間のピクチャcolPic内で処理対象の予測ブロックと同一位置の右下(外側)に位置する予測ブロックを異なる時間の予測ブロックcolPbとする(図21のS2301)。この予測ブロックは図11の予測ブロックT0に相当する。具体的には、処理対象の輝度信号の予測ブロックの左上の画素の位置を(xP, yP)とし、予測ブロックの幅をW, 高さをHとした際に、(xP+W, yP+H)で導出される位置を含む予測ブロックを異なる時間の予測ブロックcolPbとする。なお、インター予測情報が記憶される階層画像符号化部の符号化情報格納メモリ115および階層画像復号部の符号化情報格納メモリ210のメモリ量を削減するために、輝度の16×16画素ブロック単位で圧縮されたインター予測情報を参照すると規定する場合には、(((xP+W)>>4)<<4, ((yP+H)>>4)<<4)で導出される位置を含む予測ブロックを異なる時間の予測ブロックcolPbとする。
続いて、異なる時間の予測ブロックcolPbの符号化情報を取得する(図21のS2302)。異なる時間の予測ブロックcolPbのPredModeが利用できないか、異なる時間の予測ブロックcolPbの予測モードPredModeがイントラ予測(MODE_INTRA)である場合(図21のS2303のYES、S2304のYES)、異なる時間のピクチャcolPic内で処理対象の予測ブロックと同一位置の中央に位置する予測ブロックを異なる時間の予測ブロックcolPbとする(図21のS2305)。この予測ブロックは図11の予測ブロックT1に相当する。中央に位置する予測ブロックが複数存在する場合があるので、具体的には、中央の右下に位置する予測ブロックとする。処理対象の輝度信号の予測ブロックの左上の画素の位置を(xP, yP)とし、予測ブロックの幅をW, 高さをHとした際に、(xP +(W>>1), yP +(H>>1))で導出される位置を含む予測ブロックを異なる時間の予測ブロックcolPbとする。なお、インター予測情報が記憶される階層画像符号化部の符号化情報格納メモリ115および階層画像復号部の符号化情報格納メモリ210のメモリ量を削減するために、輝度の16×16画素ブロック単位で圧縮されたインター予測情報を参照すると規定する場合には、(((xP+(W>>1))>>4)<<4, ((yP+(H>>1))>>4)<<4 )で導出される位置を含む予測ブロックを異なる時間の予測ブロックcolPbとする。
ここで、xPCol、yPColを異なる時間のピクチャcolPic内での予測ブロックcolPbの左上の画素の位置を示すインデックスとする(図21のS2306)。
次に、図19のステップS2103、ステップS2104および後述する図37のステップS504の時間マージ候補または予測動きベクトル候補のインター予測情報の導出処理手順について詳細に説明する。図22は図19のステップS2103、ステップS2104、図37のステップS504の時間マージ候補または予測動きベクトル候補のインター予測情報の導出処理手順を説明するフローチャートである。L0またはL1で、時間マージ候補または予測動きベクトル候補の導出対象のリストをLXとし、LXを用いた予測をLX予測とする。以下、断りのない限り、この意味で用いる。時間マージ候補または予測動きベクトル候補のL0の導出処理であるステップS2103として呼び出される際には、LXがL0となり、時間マージ候補または予測動きベクトル候補のL1の導出処理であるステップS2104として呼び出される際には、LXがL1となる。
異なる時間の予測ブロックcolPbの予測モードPredModeがイントラ予測(MODE_INTRA)か、利用できない場合(ステップS2401のNO、ステップS2402のNO)、時間マージ候補または予測動きベクトル候補は存在しないものとする。フラグavailableFlagLXColとフラグpredFlagLXColを共に0とし(ステップS2403)、動きベクトルmvLXColを(0,0)として(ステップS2404)、本時間マージ候補または予測動きベクトル候補のインター予測情報の導出処理を終了する。
予測ブロックcolPbが利用できて予測モードPredModeがイントラ予測(MODE_INTRA)でない場合(ステップS2401のYES、ステップS2402のYES)、以下の手順でmvColとrefIdxColとavailableFlagColを導出する。
予測ブロックcolPbのL0予測が利用されているかどうかを示すフラグPredFlagL0[xPCol][yPCol]が0の場合(ステップS2405のYES)、予測ブロックcolPbの予測モードはPred_L1であるので、動きベクトルmvColが予測ブロックcolPbのL1の動きベクトルであるMvL1[xPCol][yPCol]と同じ値に設定され(ステップS2406)、参照インデックスrefIdxColがL1の参照インデックスRefIdxL1[xPCol][yPCol]と同じ値に設定され(ステップS2407)、リストListColがL1に設定される(ステップS2408)。
一方、予測ブロックcolPbのL0予測フラグPredFlagL0[xPCol][yPCol]が0でない場合(図22のステップS2405のNO)、予測ブロックcolPbのL1予測フラグPredFlagL1[xPCol][yPCol]が0かどうかを判定する。予測ブロックcolPbのL1予測フラグPredFlagL1[xPCol][yPCol]が0の場合(ステップS2409のYES)、動きベクトルmvColが予測ブロックcolPbのL0の動きベクトルであるMvL0[xPCol][yPCol]と同じ値に設定され(ステップS2410)、参照インデックスrefIdxColがL0の参照インデックスRefIdxL0[xPCol][yPCol]と同じ値に設定され(ステップS2411)、リストListColがL0に設定される(ステップS2412)。
予測ブロックcolPbのL0予測フラグPredFlagL0[xPCol][yPCol]と予測ブロックcolPbのL1予測フラグPredFlagL1[xPCol][yPCol]が共に0でない場合(ステップS2405のNO、ステップS2409のNO)、予測ブロックcolPbのインター予測モードは双予測(Pred_BI)であるので、L0、L1の2つの動きベクトルから、一方を選択する(ステップS2413)。
図23は予測ブロックcolPbのインター予測モードが双予測(Pred_BI)のときの時間マージ候補または予測動きベクトル候補のインター予測情報の導出処理手順を示すフローチャートである。
まず、すべての参照リストに登録されているすべてのピクチャのPOCが現在の符号化または復号対象ピクチャのPOCより小さいかどうかを判定し(ステップS2501)、予測ブロックcolPbのすべての参照リストであるL0及びL1に登録されているすべてのピクチャのPOCが現在の符号化または復号対象ピクチャのPOCより小さい場合で(ステップS2501のYES)、LXがL0、即ち符号化または復号対象ピクチャのL0の動きベクトルの予測動きベクトル候補を導出している場合(ステップS2502のYES)、予測ブロックcolPbのL0の方のインター予測情報を選択し、LXがL1、即ち符号化または復号対象ピクチャのL1の動きベクトルの予測動きベクトル候補を導出している場合(ステップS2502のNO)、予測ブロックcolPbのL1の方のインター予測情報を選択する。一方、予測ブロックcolPbのすべての参照リストL0及びL1に登録されているピクチャのPOCの少なくとも1つが現在の符号化または復号対象ピクチャのPOCより大きい場合で(ステップS2501のNO)、フラグcollocated_from_l0_flagの値が0の場合(ステップS2503のYES)、予測ブロックcolPbのL0の方のインター予測情報を選択し、フラグcollocated_from_l0_flagの値が1の場合(ステップS2503のNO)、予測ブロックcolPbのL1の方のインター予測情報を選択する。
予測ブロックcolPbのL0の方のインター予測情報を選択する場合(ステップのYES、ステップS2503のYES)、動きベクトルmvColがMvL0[xPCol][yPCol]と同じ値に設定され(ステップS2504)、参照インデックスrefIdxColがRefIdxL0[xPCol][yPCol]と同じ値に設定され(ステップS2505)、リストListColがL0に設定される(ステップS2506)。
予測ブロックcolPbのL1の方のインター予測情報を選択する場合(ステップS2502のNO、ステップS2503のNO)、動きベクトルmvColがMvL1[xPCol][yPCol]と同じ値に設定され(ステップS2507)、参照インデックスrefIdxColがRefIdxL1[xPCol][yPCol]と同じ値に設定され(ステップS2508)、リストListColがL1に設定される(ステップS2509)。
図22に戻り、予測ブロックcolPbからインター予測情報が取得できたらフラグavailableFlagLXColとフラグpredFlagLXColを共に1とする(ステップS2414)。
続いて、動きベクトルmvColをスケーリングして時間マージ候補または予測動きベクトル候補のLXの動きベクトルmvLXColとする(ステップS2415)。この動きベクトルのスケーリング演算処理手順を図24及び図25を用いて説明する。
図24は図22のステップS2415の動きベクトルのスケーリング演算処理手順を示すフローチャートである。
異なる時間のピクチャcolPicのPOCから、予測ブロックcolPbのリストListColで参照する参照インデックスrefIdxColに対応する参照ピクチャのPOCを減算してピクチャ間距離tdを導出する(ステップS2601)。なお、異なる時間のピクチャcolPicよりも予測ブロックcolPbのリストListColで参照する参照ピクチャのPOCの方が表示順序で前の場合、ピクチャ間距離tdは正の値となり、異なる時間のピクチャcolPicよりも予測ブロックcolPbのリストListColで参照する参照ピクチャのPOCの方が表示順序で後の場合、ピクチャ間距離tdは負の値となる。
td=異なる時間のピクチャcolPicのPOC−予測ブロックcolPbのリストListColで参照する参照ピクチャのPOC
現在の符号化または復号対象ピクチャのPOCから導出対象のLXの参照インデックスrefIdxLXに対応する参照ピクチャのPOCを減算してピクチャ間距離tbを導出する(ステップS2602)。ここで、導出対象のLXの参照インデックスrefIdxLXとは時間マージ候補導出処理の場合は0であり、予測動きベクトル候補導出処理においては、符号化または復号対象予測ブロックのLXの参照インデックスである。なお、現在の符号化または復号対象ピクチャよりも現在の符号化または復号対象ピクチャのリストLXで参照する参照ピクチャの方が表示順序で前の場合、ピクチャ間距離tbは正の値となり、現在の符号化または復号対象ピクチャのリストLXで参照する参照ピクチャの方が表示順序で後の場合、ピクチャ間距離tbは負の値となる。
tb=現在の符号化または復号対象ピクチャのPOC−導出対象のLXの参照インデックスに対応する参照ピクチャのPOC
続いて、ピクチャ間距離tdとtbを比較し(ステップS2603)、ピクチャ間距離tdとtbが等しい場合(ステップS2603のYES)、時間マージ候補または予測動きベクトル候補のLXの動きベクトルmvLXColを動きベクトルmvColと同じ値に設定して(ステップS2604)、本スケーリング演算処理を終了する。
mvLXCol=mvCol
一方、ピクチャ間距離tdとtbが等しくない場合(ステップS2603のNO)、次式によりmvColにスケール係数tb/tdを乗じることでスケーリング演算処理を行い(ステップS2605)、スケーリングされた時間マージ候補または予測動きベクトル候補のLXの動きベクトルmvLXColを得る。
mvLXCol=tb / td * mvCol
また、図24のステップS2605のスケーリング演算を整数精度の演算で行う場合の例を図25に示す。図25のステップS2606〜ステップS2608の処理が、図24のステップS2605の処理に対応する。
まず、図24のフローチャートと同様に、ピクチャ間距離tdとピクチャ間距離tbを導出する(ステップS2601、ステップS2602)。
続いて、ピクチャ間距離tdとtbを比較し(ステップS2603)、ピクチャ間距離tdとtbが等しい場合(ステップS2603のYES)、図24のフローチャートと同様に、時間マージ候補または予測動きベクトル候補のLXの動きベクトルmvLXColを動きベクトルmvColと同じ値に設定して(ステップS2604)、本スケーリング演算処理を終了する。
mvLXCol=mvCol
一方、ピクチャ間距離tdとtbが等しくない場合(ステップS2603のNO)、次式により変数txを導出する(ステップS2606)。
tx = ( 16384 + ( Abs( td ) >>1 ) ) / td
なお、Absは括弧内の引数の値の絶対値を表す。
続いて、次式によりスケール係数distScaleFactor を導出する(ステップS2607)。
distScaleFactor = Clip3( -4096, 4095, ( tb * tx + 32 ) >> 6 )
なお、Clip3は規定された第1の引数の最小値および第2の引数の最大値で第3の引数の値をクリッピングすることを表す。
続いて、次式により、スケーリングされた時間マージ候補または予測動きベクトル候補のLXの動きベクトルmvLXColを得る(ステップS2608)。
mvLXCol = Clip3( -32768, 32767, Sign2( distScaleFactor * mvCol ) *
( (Abs( distScaleFactor * mvCol ) + 127 ) >> 8 ) )
なお、Sign2は括弧内の引数の値が0以上のとき1となり、0未満のとき-1となることを表す。
次に、図19のフローチャートに戻り、availableFlagL0ColかavailableFlagL1Colのいずれか一方が1ならavailableFlagColに1を設定し、availableFlagL0ColとavailableFlagL1Colが共に0ならavailableFlagColに0を設定して(ステップS2105)、本時間マージ候補または予測動きベクトル候補導出処理を終了する。
次に、図17のステップS102の階層間マージ候補の導出方法について詳細に説明する。図26は図17のステップS102の階層間マージ候補導出処理手順を説明するフローチャートである。
まず、参照階層のピクチャilPicを特定する(図26のステップS3101)。本実施の形態においては、符号化または復号対象の拡張階層の下位の階層を参照階層とする。さらに、符号化または復号対象の拡張階層のピクチャと同じPOCの値を持つ参照階層のピクチャを参照階層のピクチャilPicとする。ピクチャ単位、あるいはスライス単位で割り当てられた階層を特定するためのIDとPOCにより、参照階層のピクチャilPicを特定する。
続いて、参照階層のピクチャilPic内の予測ブロックilPbを導出し、符号化情報を取得する(図26のステップS3102)。ステップS3102の詳細な処理手順については図27のフローチャートを用いて後ほど詳細に説明する。
続いて、符号化または復号対象の予測ブロックと同位置の参照階層の予測ブロックilPbから導出される階層間マージ候補ILが有効か否かを示すフラグavailableFlagIL、階層間マージ候補ILの動きベクトルmvL0IL, mvL1IL、階層間マージ候補ILの参照インデックスrefIdxL0IL, refIdxL1IL、階層間マージ候補ILのフラグpredFlagL0IL、predFlagL1ILを導出し(図26のステップS3103)、本階層マージ候補導出処理を終了する。ステップS3103の詳細な処理手順については図28のフローチャートを用いて後ほど詳細に説明する。
次に、図26のステップS3102の参照階層のピクチャilPicの予測ブロックilPbの導出処理手順について詳細に説明する。図27は図26のステップS3102の参照階層のピクチャilPicの予測ブロックilPbの導出処理手順を説明するフローチャートである。
まず、参照階層のピクチャilPic内で処理対象の予測ブロックと同一位置の中央に位置する予測ブロックを参照階層の予測ブロックilPbとする(図27のステップS3201)。予測ブロックによっては中央に位置する予測ブロックが複数存在する場合があるが、例えば中央の右下に位置する予測ブロックとする。この予測ブロックは図14の予測ブロックL1に相当する。参照階層のピクチャilPic内で処理対象の予測ブロックと同一位置の中央の右下に位置する予測ブロックの導出方法について説明する。
参照階層のピクチャilPic内で処理対象の予測ブロックと同一位置の中央の右下に位置する予測ブロックの導出方法について説明する。処理対象の輝度信号の予測ブロックの左上の画素の位置を(xP, yP)とし、予測ブロックの幅をW, 高さをHとすると、処理対象の予測ブロックの中央の右下の予測ブロックの左上の画素の位置は(xP+(W>>1), yP+(H>>1))で導出される。この画素の位置は、スケーリングされた参照階層のピクチャ上では(xP+(W>>1)-LeftOffset, yP+(H>>1)-TopOffset)で導出される。また、参照階層のピクチャ上での位置(xRrb, yRrb)は、
xRrb =((xP+(W>>1)-LeftOffset)* RefWidth)/ ScaledRefWidth
yRrb =((xP+(H>>1)-TopOffset)* RefHeight)/ ScaledRefHeight
で導出される。参照階層のピクチャ内で、この座標位置(xRrb, yRrb)を含む予測ブロックを参照階層の予測ブロックilPbとする。なお、インター予測情報が記憶される階層画像符号化部の符号化情報格納メモリ115および階層画像復号部の符号化情報格納メモリ210のメモリ量を削減するために、輝度の16×16画素ブロック単位で圧縮されたインター予測情報を参照すると規定する場合には、((xRrb>>4)<<4, (yRrb>>4)<<4 )で導出される位置を含む予測ブロックを参照階層の予測ブロックilPbとする。また、輝度の8×8画素ブロック単位で圧縮されたインター予測情報を参照すると規定する場合には、((xRrb>>2)<<2, (yRrb>>2)<<2 )で導出される位置を含む予測ブロックを参照階層の予測ブロックilPbとする。
次に、参照階層の予測ブロックilPbの符号化情報を取得する(図27のステップS3202)。
参照階層のピクチャilPic内で処理対象の予測ブロックと同一位置の中央に位置する予測ブロックを参照階層の予測ブロックilPbとする理由は、同一位置の中央に位置する下位階層の予測ブロックは処理対象の階層の予測ブロックと同じ動きをしている可能性が高いからである。そこで、本発明においては、処理対象の予測ブロックと同一位置の中央に位置する参照階層の予測ブロックを参照階層の予測ブロックilPbとする。
ここで、xPIL、yPILは参照階層のピクチャilPic内での予測ブロックilPbの左上の画素の位置を示すインデックスとする(図27のステップS3206)。
次に、図26のステップS3103の参照階層の階層間マージ候補ILの導出処理手順について詳細に説明する。図28は図26のステップS3103の参照階層の階層間マージ候補ILの導出処理手順を説明するフローチャートである。
参照階層の符号化情報格納メモリ115または210から参照階層の予測ブロックILの符号化情報を取得する(図28のステップS3301)。
参照階層の予測ブロックilPbが利用できないか(図28のステップS3302のNO)、参照階層の予測ブロックilPbの予測モードPredModeがイントラ予測(MODE_INTRA)である場合(図28のステップS3303のNO)、階層間マージ候補ILのフラグavailableFlagILの値を0に設定し(図28のステップS3304)、階層間マージ候補ILの動きベクトルmvL0IL, mvL1ILの値を共に(0,0)に設定し(図28のステップS3305)、階層間マージ候補ILの参照インデックスrefIdxL0IL, refIdxL1ILを共に−1に設定し(図28のステップS3306)、階層間マージ候補ILのフラグpredFlagL0IL、predFlagL1ILの値を共に0に設定し(図28のステップS3307)、本階層間マージ候補の導出処理を終了する。
一方、参照階層の予測ブロックilPbが利用でき(図28のステップS3302のYES)、参照階層の予測ブロックilPbの予測モードPredModeがイントラ予測(MODE_INTRA)でない場合(図28のステップS3303のYES)、参照階層の予測ブロックilPbのインター予測情報を階層間マージ候補ILのインター予測情報とする。階層間マージ候補ILのフラグavailableFlagNの値を1に設定し(図28のステップS3308)、階層間マージ候補ILの動きベクトルmvL0IL, mvL1ILをそれぞれ参照階層の予測ブロックilPbの動きベクトルmvL0[xIL][yIL], mvL1[xIL][yIL]と同じ値に設定し(図28のステップS3309)、階層間マージ候補ILの参照インデックスrefIdxL0IL, refIdxL1ILをそれぞれ参照階層の予測ブロックilPbの参照インデックスrefIdx[xIL][yIL], refIdx[xIL][yIL]と同じ値に設定し(図28のステップS3310)、階層間マージ候補ILのフラグpredFlagL0IL, predFlagL1ILをそれぞれ参照階層の予測ブロックilPbのフラグpredFlagL0[xIL][yIL], predFlagL1[xIL][yIL]に設定する(図28のステップS3311)。
続いて、predFlagL0[xIL][yIL]が1、すなわちL0予測または双予測の場合(図28のステップS3313のYES)、階層間マージ候補のL0の動きベクトルmvL0ILをスケーリングし(図28のステップS3313)、predFlagL1[xIL][yIL]が1、すなわちL1予測または双予測の場合(図28のステップS3314のYES)、階層間マージ候補のL1の動きベクトルmvL1ILをスケーリングする(図28のS3315)。この階層間マージ候補のLX(LXはL0またはL1)の動きベクトルmvLXILのスケーリング演算処理手順を図29及び図30を用いて説明する。
図29は図28のステップS3313およびステップS3315、および後述する図45のステップS3330の階層マージ候補または予測動きベクトル候補LX(LXはL0またはL1)の動きベクトルmvLXILのスケーリング演算処理手順を示すフローチャートである。
参照階層(下位階層)のピクチャの幅RefWidthとスケーリングされた参照階層(下位階層)のピクチャの幅ScaledRefWidthを比較し(ステップS3401)、RefWidthとScaledRefWidthが等しい場合(ステップS3401のYES)、階層間マージ候補のLXの動きベクトルの水平成分mvLXIL[0]のスケーリングを行わずに、ステップS3406に進む。なお、ステップS3401の条件判断を省略してステップS3402に進むこともできる。
一方、RefWidthとScaledRefWidthが等しくない場合(ステップS3401のNO)、次式により階層間マージ候補のLXの動きベクトルの水平成分mvLXIL[0]にスケール係数ScaledRefWidth/RefWidthを乗じることでスケーリング演算処理を行い(ステップS3402)、スケーリングされた時間マージ候補のLXの動きベクトルの水平成分mvLXIL[0]を得る。
mvLXIL[0]= ScaledRefWidth / RefWidth * mvLXIL[0]
続いて、参照階層(下位階層)のピクチャの高さRefHeightとスケーリングされた参照階層(下位階層)のピクチャの高さScaledRefHeightを比較し(ステップS3406)、RefHeightとScaledRefHeightが等しい場合(ステップS3406のYES)、階層間マージ候補のLXの動きベクトルの垂直成分mvLXIL[1]のスケーリングを行わずに、本スケーリング処理を終了する。なお、ステップS3406の条件判断を省略してステップS3407に進むこともできる。
一方、RefHeightとScaledRefHeightが等しくない場合(ステップS3407のNO)、次式により階層間マージ候補のLXの動きベクトルの垂直成分mvLXIL[1]にスケール係数ScaledRefWidth/RefWidthを乗じることでスケーリング演算処理を行い(ステップS3407)、スケーリングされた時間マージ候補のLXの動きベクトルの垂直成分mvLXIL[1]を得る。
mvLXIL[1]= ScaledRefHeight / RefHeight * mvLXIL[1]
また、図29のステップS3402およびステップS3407のスケーリング演算を整数精度の演算で行う場合の例を図30に示す。図30のステップS3403〜ステップS3405の処理が、図29のステップS3402の処理に相当し、ステップS3408〜ステップS3410の処理が、図29のステップS3407の処理に相当する。
参照階層(下位階層)のピクチャの幅RefWidthとスケーリングされた参照階層(下位階層)のピクチャの幅ScaledRefWidthを比較し(ステップS3401)、RefWidthとScaledRefWidthが等しい場合(ステップS3401のYES)、階層間マージ候補のLXの動きベクトルの水平成分mvLXIL[0]のスケーリングを行わずに、ステップS3406に進む。なお、ステップS3401の条件判断を省略してステップS3403に進むこともできる。
一方、RefWidthとScaledRefWidthが等しくない場合(ステップS3401のNO)、水平成分のスケーリング演算処理を行い(ステップS3403〜4405)、スケーリングされた時間マージ候補のLXの動きベクトルの水平成分mvLXIL[0]を得る。まず、次式により変数txを導出する(ステップS3403)。
tx = ( 16384 + ( Abs(RefWidth ) >> 1 ) ) / RefWidth
なお、Absは括弧内の引数の値の絶対値を表す。
続いて、次式によりスケール係数distScaleFactor を導出する(ステップS3404)。
distScaleFactor = Clip3( -4096, 4095, ( ScaledRefWidth * tx + 32 ) >> 6 )
なお、Clip3は規定された第1の引数の最小値および第2の引数の最大値で第3の引数の値をクリッピングすることを表す。
続いて、次式により、スケーリングされた時間マージ候補のLXの動きベクトルの水平成分mvLXIL[0]を得る(ステップS3405)。
mvLXIL[0] =Clip3( -32768, 32767, Sign2( distScaleFactor * mvLXIL[0] ) *
( (Abs( distScaleFactor * mvLXIL[0] ) + 127 ) >> 8 ) )
なお、Sign2は括弧内の引数の値が0以上のとき1となり、0未満のとき-1となることを表す。
続いて、参照階層(下位階層)のピクチャの高さRefHeightとスケーリングされた参照階層(下位階層)のピクチャの高さScaledRefHeightを比較し(ステップS3406)、RefHeightとScaledRefHeightが等しい場合(ステップS3406のYES)、階層間マージ候補のLXの動きベクトルの水平成分mvLXIL[0]のスケーリングを行わずに、本スケーリング処理を終了する。なお、ステップS3406の条件判断を省略してステップS3408に進むこともできる。
一方、RefHeightとScaledRefHeightが等しくない場合(ステップS3406のNO)、垂直成分のスケーリング演算処理を行い(ステップS3408〜4410)、スケーリングされた時間マージ候補のLXの動きベクトルの垂直成分mvLXIL[1]を得る。まず、次式により変数txを導出する(ステップS3408)。
tx = ( 16384 + ( Abs(RefHeight ) >> 1 ) ) / RefHeight
続いて、次式によりスケール係数DistScaleFactorを導出する(ステップS3409)。
distScaleFactor = Clip3( -4096, 4095, ( ScaledRefHeight * tx + 32 ) >> 6 )
続いて、次式により、スケーリングされた時間マージ候補のLXの動きベクトルの垂直成分mvLXIL[1]を得る(ステップS3410)。
mvLXIL[1] =Clip3( -32768, 32767, Sign2( distScaleFactor * mvLXIL[1] ) *
( (Abs( distScaleFactor * mvLXIL[1] ) + 127 ) >> 8 ) )
次に、図28のフローチャートに戻り、本階層間マージ候補導出処理を終了する。
次に、図17のステップS107のマージ候補をマージ候補リストに登録する方法について詳細に説明する。図31はマージ候補リストへのマージ候補の登録処理手順を示すフローチャートである。本方式では、発生頻度により優先順位をつけて、優先順位の高いものからマージ候補リストmergeCandListに、マージ候補を登録することで、マージインデックスmerge_idx[x0][y0]の符号量を削減する。優先順位の高い要素をマージ候補リストの前方に配置することで、符号量を削減する。例えば、マージ候補リストmergeCandListの要素が5個の場合、マージ候補リストのインデックス0を「0」、インデックス1を「10」、インデックス2を「110」、インデックス3を「1110」、インデックス4を「11110」とすることで、インデックス0を表す符号量が1ビットとなり、インデックス0に発生頻度が高いと考えられる要素を登録することで、符号量を削減する。具体的には、複雑な動きの画像において発生頻度が高いと考えられる階層間マージ候補ILを追加し、その後に、その次に発生頻度が高いと考えられるマージ候補リストmergeCandListに空間マージ候補A1、B1、B0、A0、B2の順序で追加し、さらに、時間マージ候補Colを追加する。
マージ候補リストmergeCandListはリスト構造を成し、マージ候補リスト内部の所在を示すマージインデックスと、インデックスに対応するマージ候補を要素として格納する記憶領域が設けられている。マージインデックスの数字は0から開始され、マージ候補リストmergeCandListの記憶領域に、マージ候補が格納される。以降の処理では、マージ候補リストmergeCandListに登録されたマージインデックスiのマージ候補となる予測ブロックは、mergeCandList[i]で表すこととし、マージ候補リストmergeCandListとは配列表記をすることで区別することとする。
まず、拡張階層において、階層間マージ候補を導出する場合で、availableFlagILが1の場合(図31のS4101のYES)、マージ候補リストmergeCandListの先頭にマージ候補ILを登録する(図31のS4102)。
続いて、availableFlagA1が1の場合(図31のS4103のYES)、マージ候補リストmergeCandListの先頭に空間マージ候補A1を登録する(図31のS4104)。
続いて、availableFlagB1が1の場合(図31のS4105のYES)、マージ候補リストmergeCandListの登録されたマージ候補の後に空間マージ候補B1を登録する(図31のS4106)。
続いて、availableFlagB0が1の場合(図31のS4107のYES)、マージ候補リストmergeCandListの直前に登録されたマージ候補の後に空間マージ候補B0を登録する(図31のS4108)。
続いて、availableFlagA0が1の場合(図31のS4109のYES)、マージ候補リストmergeCandListの直前に登録されたマージ候補の後に空間マージ候補A0を登録する(図31のS4110)。
続いて、availableFlagB2が1の場合(図31のS4111のYES)、マージ候補リストmergeCandListの直前に登録されたマージ候補の後に空間マージ候補B2を登録する(図31のS4112)。
続いて、時間マージ候補を導出する場合で、availableFlagColが1の場合(図31のS4115のYES)、マージ候補リストmergeCandListの最後に時間マージ候補Colを登録する(図31のS4116)。
本方式では、複雑な動きの画像においては、符号化または復号対象予測ブロックと同じ空間上の下位階層のインター予測情報は同じ動きをしている可能性が高いので階層間マージ候補を優先的にマージ候補リストの前方に登録する。
また、左に近接する予測ブロックA1及び上に近接する予測ブロックB1は符号化または復号対象の予測ブロックと一体となる動きになることが多いので、インター予測情報選択部136により選択される頻度が高くなるので、マージ候補A1、B1を他の空間マージ候補や時間マージ候補よりも優先的にマージ候補リストの前方に登録する。
次に、図15の追加マージ候補生成部135および図16の追加マージ候補生成部235で実施される図17のステップS108の処理手順である追加マージ候補の導出方法について詳細に説明する。図32は図17のステップS108の追加マージ候補導出処理手順を説明するフローチャートである。
図15の追加マージ候補生成部135および図16の追加マージ候補生成部235で実施される追加マージ候補導出処理においては、マージ候補リスト内のマージインデックスが0から(maxNumMergeCand-1)の値で指し示される範囲内で、無効なマージ候補が無くなるまで、有効なマージ候補をマージ候補リストに登録するために、スライスタイプに応じたインター予測モードの動きベクトルの値が(0,0)の有効マージ候補を、マージ候補リストに登録する。(図32のステップS5101〜S5121)。
まず、スライスタイプがPスライスの場合(図32のステップS5101のYES)、参照インデックス数を示す変数numRefIdxにL0の参照インデックス数の値を設定する(図32のステップS5102)。一方、スライスタイプがPスライスでない場合(図32のステップS5101のNO)、すなわちスライスタイプがBスライスの場合、参照インデックス数を示す変数numRefIdxにL0の参照インデックス数とL1の参照インデックス数の小さい方の値を設定する(図32のステップS5103)。続いて参照インデックスiに0を設定する(図32のステップS5104)。
続いて、参照インデックスiを変更しながら、スライスタイプに応じた予測モードの動きベクトルの値が(0,0)の追加マージ候補を導出し、マージ候補リストに登録する。(図32のステップS5105〜S5121)。
マージ候補数numMergeCandが最大マージ候補数maxNumMergeCandより小さい場合(図32のステップS5106のYES)、ステップS5107に進み、マージ候補数numMergeCandが最大マージ候補数maxNumMergeCandより小さくない場合(図32のステップS5106のNO)、本追加マージ候補導出処理を終了する。
続いて、スライスタイプがPスライスの場合(図32のステップS5107のYES)、追加マージ候補の動きベクトルmvL0Zero、mvL1Zeroに(0,0)を設定する(図32のステップS5108)。続いて、参照インデックスiが変数numRefIdxより小さい場合(図32のステップS5109のYES)、追加マージ候補の参照インデックスrefIdxL0Zeroに参照インデックスiの値を設定し、refIdxL1Zeroに−1を設定する(図32のステップS5110)。参照インデックスiが変数numRefIdxより小さくない場合(図32のステップS5109のNO)、追加マージ候補の参照インデックスrefIdxL0Zeroに0を設定し、refIdxL1Zeroに−1を設定する(図32のステップS5111)。続いて、追加マージ候補のフラグpredFlagL0Zeroに1を設定し、predFlagL1Zeroに0を設定して(図32のステップS5112)、ステップS5118に進む。
一方、スライスタイプがPスライスでない場合(図32のステップS5107のNO)、すなわちスライスタイプがBスライスの場合、追加マージ候補の動きベクトルmvL0Zero、mvL1Zeroに(0,0)を設定する(図32のステップS5113)。続いて、参照インデックスiが変数numRefIdxより小さい場合(図32のステップS5114のYES)、追加マージ候補の参照インデックスrefIdxL0Zero、refIdxL1Zeroに参照インデックスiの値を設定する(図32のステップS5115)。参照インデックスiが変数numRefIdxより小さくない場合(図32のステップS5114のNO)、追加マージ候補の参照インデックスrefIdxL0Zero、refIdxL1Zeroに0を設定する(図32のステップS5116)。続いて、追加マージ候補のフラグpredFlagL0Zero、predFlagL1Zeroに1を設定して(図32のステップS5117)、ステップS5118に進む。
続いて、追加マージ候補をマージ候補リストmergeCandListのマージインデックスがnumMergeCandと同じ値で示される位置に登録し(図32のステップS5118)、マージ候補数numMergeCandに1を加算する(図32のステップS5119)。続いて、インデックスiに1を加算し(図32のステップS5120)、ステップS5121に進む。
以上のステップS5106〜ステップS5120の処理をそれぞれの参照インデックスi毎にそれぞれ繰り返す(図32のステップS5105〜ステップS5121)。
次に、階層画像符号化部のインター予測情報導出部104のインター予測情報選択部136について説明する。図15において、階層画像符号化部のインター予測情報導出部104のインター予測情報選択部136では、マージ候補リストに登録されているマージインデックスが0から(numMergeCand-1)の範囲内で指し示される有効なマージ候補の中から、マージ候補を選択し、選択されたマージ候補の各予測ブロックのL0予測、及びL1予測を利用するかどうかを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]、参照インデックスrefIdxL0[xP][yP], refIdxL1[xP][yP]、動きベクトルmvL0[xP][yP], mvL1[xP][yP]等のインター予測情報をインター予測部105に供給するとともに、選択されたマージ候補を特定するマージインデックスを予測方法決定部107に供給する。本実施例においては、マージ候補リスト内のマージインデックスが0から(maxNumMergeCand-1)の値で指し示される範囲内で、無効なマージ候補は存在せず、すべて有効なマージ候補である。
マージ候補の選択においては、予測方法決定部107と同様の方法を用いることができる。それぞれのマージ候補ごとに符号化情報及び残差信号の符号量と予測画像信号と画像信号との間の符号化歪を導出し、最も少ない発生符号量と符号化歪となるマージ候補が決定される。それぞれのマージ候補毎にマージモードの符号化情報であるマージインデックスのシンタックス要素merge_idxのエントロピー符号化を行い、符号化情報の符号量を算出する。さらに、それぞれのマージ候補毎にインター予測部105と同様の方法で各マージ候補のインター予測情報に応じて動き補償した予測画像信号と、画像メモリ101から供給される符号化対象の画像信号との予測残差信号を符号化した予測残差信号の符号量を算出する。符号化情報、即ちマージインデックスの符号量と予測残差信号の符号量とが加算された総発生符号量を算出し評価値とする。
また、こうした予測残差信号を符号化後に、歪量評価の為に復号し、符号化により生じる元の画像信号との誤差を表す比率として符号化歪が算出される。これら総発生符号量と符号化歪とをマージ候補毎に比較することで、少ない発生符号量と符号化歪となる符号化情報が決定される。決定された符号化情報に対応するマージインデックスが、予測ブロック単位の第2のシンタックスパターンで表されるフラグmerge_idxとして符号化される。
尚、ここで算出される発生符号量は、符号化過程をシミュレートしたものであることが望ましいが、簡便に近似したり、概算することも可能である。
次に、階層画像復号部のインター予測情報導出部205のインター予測情報選択部236について説明する。図16において、階層画像復号部のインター予測情報導出部205のインター予測情報選択部236では、マージ候補リストmergeCandListに登録されているマージ候補の中から、第2符号化ビット列復号部202から供給されたマージインデックスmergeIdxに対応するマージ候補を選択し、選択されたマージ候補のL0予測、及びL1予測を利用するかどうかを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]、L0、L1の参照インデックスrefIdxL0[xP][yP], refIdxL1[xP][yP]、L0、L1の動きベクトルmvL0[xP][yP], mvL1[xP][yP]等のインター予測情報をインター予測部206に供給するとともに、符号化情報格納メモリ210に格納する。ただし、本実施例においては、マージ候補リスト内のマージインデックスが0から(maxNumMergeCand-1)の値で指し示される範囲内で、無効なマージ候補は存在せず、すべて有効なマージ候補である。
次に、実施の形態に係る動きベクトルの予測方法について説明する。実施の形態に係る動きベクトルの予測方法は、図1の動画像符号化装置の階層画像符号化部の差分動きベクトル算出部103及び図2の動画像復号装置の階層画像復号部の動きベクトル算出部204において実施される。
動きベクトルの予測方法は、符号化ブロックを構成する予測ブロック単位に、符号化及び復号の処理の何れでも実施される。予測ブロックの予測モードがインター予測(MODE_INTER)で、マージモードでない場合に、符号化の場合、符号化対象の動きベクトルから符号化する差分動きベクトルを算出する時に用いる符号化済みの動きベクトルを利用して予測動きベクトルを導出する際、復号の場合、復号対象の動きベクトルを算出する時に用いる復号済みの動きベクトルを利用して予測動きベクトルを導出する際に実施される。
動きベクトルの予測方法は、スライスタイプがPスライス(片方向予測スライス)或いはBスライス(両方向予測スライス)の場合で、更に、スライスの中の予測ブロックの予測モードがインター予測(MODE_INTER)で、マージモードでない差分動きベクトルを符号化または復号する予測ブロックに適用される。
動きベクトルの予測は符号化側の動画像符号化装置の階層画像符号化部と復号側の動画像復号装置の階層画像復号部で共通の規定の方法により、予測動きベクトル候補を導出し、予測動きベクトル候補リストに登録する。図7、図8、図9及び図10を用いて説明した左に近接する予測ブロックA1、左下に近接する予測ブロックA0から左側の予測ブロック候補を導出し、上に近接する予測ブロックB1、右上に近接する予測ブロックB0、左上に近接する予測ブロックB2から上側の予測ブロック候補を導出する。さらに、図11を用いて説明した異なる時間の同一位置あるいはその付近に存在する予測ブロックCol(T0、T1のいずれか)の予測ブロックから異なる時間の予測動きベクトル候補を導出する。また、拡張階層を復号する際には、図12〜14を用いて説明した参照階層を符号化または復号対象の拡張階層と同じサイズ、位置にスケーリングした場合の同一位置あるいはその付近に存在する予測ブロックIL(L0、L1のいずれか)の予測ブロックから階層間の予測動きベクトル候補を導出する。なお、ベース階層を復号する際には、階層間の予測動きベクトル候補は導出しない。
実施の形態に係る動きベクトルの予測方法を図面を用いて説明する。図33は、図1の動画像符号化装置の階層画像符号化部の差分動きベクトル算出部103の詳細な構成を示す図である。また、図34は、実施の形態に係る図2の動画像復号装置の階層画像復号部の動きベクトル算出部204の詳細な構成を示す図である。図33及び図34の太枠線で囲まれる部分はそれぞれ、差分動きベクトル算出部103及び動きベクトル算出部204を示している。
更に、それらの内部の太点線で囲まれる部分はそれぞれの動きベクトルの予測方法の動画像符号化装置の階層画像符号化部の予測動きベクトル候補リスト構築部121及び動画像復号装置の階層画像復号部の予測動きベクトル候補リスト構築部221を示しており、実施の形態の動画像符号化装置と対応する動画像復号装置にも同様に設置され、符号化と復号で矛盾しない同一の導出結果を得られるようにしている。以下、この図を用いて、符号化における動きベクトルの予測方法を説明する。
動画像符号化装置の階層画像符号化部の差分動きベクトル算出部103は、予測動きベクトル候補生成部141、予測動きベクトル候補登録部142、予測動きベクトル冗長候補削除部143、予測動きベクトル候補数制限部144、予測動きベクトル候補符号量算出部145、予測動きベクトル選択部146、および動きベクトル減算部147を含む。
動画像復号装置の階層画像復号部の動きベクトル算出部204は、予測動きベクトル候補生成部241、予測動きベクトル候補登録部242、予測動きベクトル冗長候補削除部243、予測動きベクトル候補数制限部244、予測動きベクトル選択部245及び動きベクトル加算部246を含む。
この動画像符号化装置の階層画像符号化部の差分動きベクトル算出部103での差分動きベクトル算出処理は、符号化対象予測ブロックのインター予測方法で用いる動きベクトルの予測動きベクトルの候補、および差分動きベクトルをL0、L1毎にそれぞれ算出する。さらに、動画像復号装置の階層画像復号部の動きベクトル算出部204での動きベクトル算出処理も、復号対象予測ブロックのインター予測で用いる予測動きベクトルの候補、動きベクトルをL0,L1毎にそれぞれ算出する。
具体的には符号化または復号対象ブロックの予測モードPredModeがインター予測(MODE_INTER)で、符号化または復号対象ブロックのインター予測モードがL0予測(Pred_L0)の場合、L0予測が行われるので、L0の予測動きベクトル候補を導出して、L0の予測動きベクトルリストmvpListL0に登録する。符号化または復号対象ブロックのインター予測モード(Pred_L1)がL1予測の場合、L1予測が行われるので、L1の予測動きベクトル候補を導出して、L1の予測動きベクトルリストmvpListL1に登録する。符号化対象ブロックのインター予測モードが双予測(Pred_BI)の場合、L0予測とL1予測が共に行われるので、L0の予測動きベクトル候補を導出して、L0の予測動きベクトルリストmvpListL0に登録するとともに、L1の予測動きベクトル候補を導出して、L1の予測動きベクトルリストmvpListL1に登録する。符号化側では、導出した予測動きベクトルを用いて、差分動きベクトルを導出し、復号側では導出した予測動きベクトルを用いて、動きベクトルを導出する。
L0、L1それぞれについて、符号化側及び復号側では予測動きベクトル導出処理を行い、符号化側では差分動きベクトル導出処理、復号側では動きベクトル導出処理を行うが、L0、L1ともに共通の処理となる。したがって、以下の説明においてはL0、L1を共通のLXとして表す。L0の予測動きベクトル導出処理、差分動きベクトル算出処理、および動きベクトル算出処理ではLXがL0であり、L1の予測動きベクトル導出処理、差分動きベクトル算出処理及び動きベクトル算出処理ではLXがL1である。また、LXの予測動きベクトル導出処理、差分動きベクトル算出処理、または動きベクトル算出処理中に、LXではなく、もう一方のリストの情報を参照する場合、もう一方のリストをLYとして表す。つまり、L0の予測動きベクトル導出処理、差分動きベクトル算出処理、または動きベクトル算出処理中に、もう一方のリストの情報を参照する場合、もう一方のリストLYはL1であり、L1の予測動きベクトル導出処理、差分動きベクトル算出処理、または動きベクトル算出処理中に、もう一方のリストの情報を参照する場合、もう一方のリストLYはL0である。
動画像符号化装置の階層画像符号化部の差分動きベクトル算出部103、動画像復号装置の階層画像復号部の動きベクトル算出部204の処理手順について、それぞれ図35、図36のフローチャートを用いて説明する。図35は動画像符号化装置の階層画像符号化部による差分動きベクトル算出処理手順を示すフローチャートであり、図36は動画像復号装置の階層画像復号部による動きベクトル算出処理手順を示すフローチャートである。
図35を参照して符号化側の差分動きベクトル算出処理手順を説明する。符号化側では、差分動きベクトル算出部103で、符号化対象ブロックで選択されたインター予測で用いる動きベクトルの差分動きベクトルをL0、L1毎にそれぞれ算出する(図35のS301〜S306)。具体的には図3の動きベクトル検出部102から供給される予測ブロックサイズ、インター予測モード、参照インデックス毎に、符号化対象ブロックの予測モードPredModeがインター予測(MODE_INTER)で、インター予測モードがL0予測(Pred_L0)の場合、図3の動きベクトル検出部102から供給されるL0の参照インデックスに対応したL0予測動きベクトル候補で構成されるL0の予測動きベクトルリストmvpListL0を算出して、予測動きベクトルmvpL0を選択し、L0の動きベクトルmvL0の差分動きベクトルmvdL0を算出する。符号化対象ブロックのインター予測モードがL1予測(Pred_L1)の場合、図3の動きベクトル検出部102から供給されるL1の参照インデックスに対応したL1の予測動きベクトル候補で構成されるL1の予測動きベクトルリストmvpListL1を算出して、予測動きベクトルmvpL1を選択し、L1の動きベクトルmvL1の差分動きベクトルmvdL1を算出する。符号化対象ブロックのインター予測モードが双予測(Pred_BI)の場合、L0予測とL1予測が共に行われ、図3の動きベクトル検出部102から供給されるL0の参照インデックスに対応したL0予測動きベクトル候補で構成されるL0の予測動きベクトルリストmvpListL0を算出して、L0の予測動きベクトルmvpL0を選択し、L0の動きベクトルmvL0の差分動きベクトルmvdL0を算出するとともに、図3の動きベクトル検出部102から供給されるL1の参照インデックスに対応したL1の予測動きベクトル候補で構成されるL1の予測動きベクトルリストmvpListL1を算出して、L1の予測動きベクトルmvpL1を算出し、L1の動きベクトルmvL1の差分動きベクトルmvdL1をそれぞれ算出する。
LX(LXはL0またはL1)の差分動きベクトルmvdLXを算出する場合(図35のS302のYES)、LXの予測動きベクトルの候補を算出してLXの予測動きベクトルリストmvpListLXを構築する(図35のS303)。差分動きベクトル算出部103の中の予測動きベクトル候補生成部141で複数の予測動きベクトルの候補を導出し、予測動きベクトル候補登録部142で予測動きベクトルリストmvpListLXに導出した予測動きベクトルの候補を登録し、予測動きベクトル冗長候補削除部143で不要な予測動きベクトルの候補を削除し、予測動きベクトル候補数制限部144で予測動きベクトルリストmvpListLXに登録されているLXの予測動きベクトル候補数numMVPCandLXが設定され、予測動きベクトルリストmvpListLXに登録されているLXの予測動きベクトル候補数numMVPCandLXを規定された2に制限することにより、予測動きベクトルリストmvpListLXを構築する。構築されたLXの予測動きベクトルリストmvpListLXは予測動きベクトル候補符号量算出部145、及び予測動きベクトル選択部146に供給される。ステップS303の詳細な処理手順については図37のフローチャートを用いて後述する。
続いて、予測動きベクトル候補符号量算出部145、及び予測動きベクトル選択部146により、LXの予測動きベクトルリストmvpListLXからLXの予測動きベクトルmvpLXを選択する(図35のS304)。まず、予測動きベクトル候補符号量算出部145で、動きベクトル検出部102で導出されたLXの動きベクトルmvLXと、予測動きベクトルリストmvpListLXの中に格納された各予測動きベクトルの候補mvpListLX[i]との差分であるそれぞれの差分動きベクトルを算出し、それら差分動きベクトルを符号化したときの符号量を予測動きベクトルリストmvpListLXの要素ごとに算出し、予測動きベクトル選択部146で、予測動きベクトルリストmvpListLXに登録された各要素の中で、予測動きベクトルの候補毎の符号量が最小となる予測動きベクトルの候補mvpListLX[i]を予測動きベクトルmvpLXとして選択する。選択された予測動きベクトルmvpLXを動きベクトル減算部147に供給する。さらに、その選択された予測動きベクトルmvpLXに対応する予測動きベクトルリスト中のインデックスiをLXの予測動きベクトルインデックスmvpIdxLXとして出力する。
続いて、動きベクトル減算部147で、動きベクトル検出部102で導出されたLXの動きベクトルmvLXから予測動きベクトル選択部146で選択されたLXの予測動きベクトルmvpLXを減算することによりLXの差分動きベクトルmvdLXを算出し、出力する(図35のS305)。
mvdLX = mvLX - mvpLX
次に、図36を参照して復号側の動きベクトル算出処理手順を説明する。復号側では、動きベクトル算出部204で、インター予測で用いる動きベクトルをL0,L1毎にそれぞれ算出する(図36のS401〜S406)。具体的には、図4の第2符号化ビット列復号部202から供給される予測ブロックサイズのインター予測モードの参照インデックスに対応した予測動きベクトル候補を導出する。復号対象ブロックの予測モードPredModeがインター予測(MODE_INTER)で、復号対象ブロックのインター予測モードがL0予測(Pred_L0)の場合、図4の第2符号化ビット列復号部202から供給されるL0の参照インデックスに対応したL0の予測動きベクトル候補で構成されるL0の予測動きベクトルリストmvpListL0を導出して、予測動きベクトルmvpL0を選択し、L0の動きベクトルmvL0を算出する。復号対象ブロックのインター予測モードがL1予測(Pred_L1)の場合、図4の第2符号化ビット列復号部202から供給されるL1の参照インデックスに対応したL1の予測動きベクトル候補で構成されるL1の予測動きベクトルリストmvpListL1を導出して、予測動きベクトルmvpL1を選択し、L1の動きベクトルmvL1を算出する。
復号対象ブロックのインター予測モードが双予測(Pred_BI)の場合、L0予測とL1予測が共に行われ、図4の第2符号化ビット列復号部202から供給されるL0の参照インデックスに対応したL0予測動きベクトル候補で構成されるL0の予測動きベクトルリストmvpListL0を導出して、L0の予測動きベクトルmvpL0を選択し、L0の動きベクトルmvL0を算出するとともに、図4の第2符号化ビット列復号部202から供給されるL1の参照インデックスに対応したL1の予測動きベクトル候補で構成されるL1の予測動きベクトルリストmvpListL1を導出して、L1の予測動きベクトルmvpL1を算出し、L1の動きベクトルmvL1をそれぞれ算出する。
LX(LXはL0またはL1)の動きベクトルmvLXを算出する場合(図36のS402のYES)、LXの予測動きベクトルの候補を算出してLXの予測動きベクトルリストmvpListLXを構築する(図36のS403)。動きベクトル算出部204の中の予測動きベクトル候補生成部241で複数の予測動きベクトルの候補を導出し、予測動きベクトル候補登録部242で予測動きベクトルリストmvpListLXに導出した予測動きベクトルの候補を登録し、予測動きベクトル冗長候補削除部243で不要な予測動きベクトルの候補を削除し、予測動きベクトル候補数制限部244で予測動きベクトルリストmvpListLXに登録されているLXの予測動きベクトル候補数numMVPCandLXが設定され、予測動きベクトルリストmvpListLXに登録されているLXの予測動きベクトル候補数numMVPCandLXを規定された2に制限することにより、予測動きベクトルリストmvpListLXを構築する。構築されたLXの予測動きベクトルリストmvpListLXは予測動きベクトル選択部245に供給される。ステップS403の詳細な処理手順については図37のフローチャートを用いて後述する。
続いて、予測動きベクトル選択部245で予測動きベクトルリストmvpListLXから第2符号化ビット列復号部202にて復号されたLXの予測動きベクトルのインデックスmvpIdxLXに対応するLXの予測動きベクトルの候補mvpListLX[mvpIdxLX]を選択されたLX予測動きベクトルmvpLXとして取り出し、動きベクトル加算部246に供給する(図36のS404)。
続いて、動きベクトル加算部246で第2符号化ビット列復号部202にて復号されて供給されるLXの差分動きベクトルmvdLXとLXの予測動きベクトルmvpLXを加算することによりLXの動きベクトルmvLXを算出し、出力する(図36の図36のS405)。
mvLX = mvpLX + mvdLX
次に、図35のステップS303、及び図36のステップS403で共通の予測動きベクトルの候補の導出及び予測動きベクトルリスト構築処理手順を図37のフローチャートを用いて詳細に説明する。
図37は動画像符号化装置の階層画像符号化部の差分動きベクトル算出部103の予測動きベクトル候補リスト構築部121及び動画像復号装置の階層画像復号部の動きベクトル算出部204の予測動きベクトル候補リスト構築部221とで共通する機能を有する予測動きベクトル候補生成部141及び241、予測動きベクトル候補登録部142及び242、ならびに予測動きベクトル冗長候補削除部143及び243、予測動きベクトル候補数制限部144及び244で実施される予測動きベクトル候補の導出処理及び予測動きベクトル候補リストの構築処理手順を表すフローチャートである。
予測動きベクトル候補生成部141及び241はL0、L1毎に、空間的な予測動きベクトルmvLXA及びmvLXB、時間的な予測動きベクトルmvLXColを導出する。また、拡張階層では、参照階層を参照する予測動きベクトルmvLXILを導出する。この予測動きベクトル候補の算出に際しては、符号化情報格納メモリ115に格納されている符号化済みの予測ブロックの予測モード、参照リスト毎の参照インデックス、参照ピクチャのPOC、動きベクトル等の符号化情報を用いる。予測動きベクトル候補生成部141及び241は左側に近接する予測ブロックグループ(符号化対象の予測ブロックと同一ピクチャ内でその予測ブロックの左側に近接する予測ブロックグループ:図5のA0,A1)から1つの予測動きベクトルの候補を導出し、左側に近接する予測ブロックの予測動きベクトル候補が利用できるかどうかを示すフラグavailableFlagLXA、及び動きベクトルmvLXAを予測動きベクトル候補登録部142及び242に供給する(図37のS501)。なお、L0のときXは0、L1のときXは1とする(以下同様)。続いて、予測動きベクトル候補生成部141及び241は上側に近接する予測ブロックグループ(符号化対象の予測ブロックと同一ピクチャ内でその予測ブロックの上側に近接する予測ブロックグループ:図5のB0,B1,B2)から1つの予測動きベクトルの候補を導出し、上側に近接する予測ブロックの予測動きベクトル候補が利用できるかどうかを示すフラグavailableFlagLXB、及び動きベクトルmvLXBを予測動きベクトル候補登録部142及び242に供給する。(図37のS502)。図37のステップS501とS502の処理は参照する近接ブロックの位置と数が異なる点以外は共通であり、予測ブロックの予測動きベクトル候補が利用できるかどうかを示すフラグavailableFlagLXN、及び動きベクトルmvLXN、参照インデックスrefIdxN、ListN(NはAまたはB、以下同様)を導出する共通の導出処理手順を図38〜図42のフローチャートを用いて後ほど詳細に説明する。
続いて、本実施の形態の動画像符号化装置の階層画像符号化部の差分動きベクトル算出部103の予測動きベクトル候補生成部141及び動画像復号装置の階層画像復号部の動きベクトル算出部204の予測動きベクトル候補生成部241では、ベース階層では、異なる時間のピクチャの符号化または復号に用いたインター予測情報を参照する時間予測動きベクトル候補を予測動きベクトル候補の1つとし、時間予測動きベクトル候補を導出するか否かをシーケンス単位、またはスライス単位で切り替える。拡張階層では、時間予測動きベクトル候補、または下位階層のピクチャの符号化または復号に用いたインター予測情報を参照する階層間予測動きベクトル候補のいずれか一方を予測動きベクトル候補の1つとし、時間予測動きベクトル候補を導出するか否かをシーケンス単位、またはスライス単位で切り替えると共に、階層間予測動きベクトル候補を導出するか否かをシーケンス単位、またはスライス単位で切り替える。
後述するスライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_temporal_mvp_enable_flagの値が1の場合、すなわち時間予測動きベクトル候補を生成する場合(図37のS503のYES)、予測動きベクトル候補生成部141及び241は異なる時間のピクチャの予測ブロックグループ(符号化対象の予測ブロックと時間的に異なるピクチャ内でその予測ブロックと同一位置あるいはその近傍の位置に存在する既に符号化済みの予測ブロックグループ:図9のT0,T1)から1つの予測動きベクトルの候補を導出し、異なる時間のピクチャの予測ブロックの予測動きベクトル候補が利用できるかどうかを示すフラグavailableFlagLXCol、及び動きベクトルmvLXColを予測動きベクトル候補登録部142及び242に供給する。(図37のS504)。このステップS504の導出処理手順を図43のフローチャートを用いて後ほど詳細に説明する。
なお、後述するスライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_temporal_mvp_enable_flagの値が1でない場合(値が0の場合)、すなわち時間予測動きベクトル候補を生成しない場合(図37のS503のNO)、フラグavailableFlagLXColの値は0とする。
一方、後述するスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_inter_layer_mvp_enable_flagの値が1の場合、すなわち拡張階層で階層間予測動きベクトル候補を生成する場合(図37のS505のYES)、予測動きベクトル候補生成部141及び241は下位階層のピクチャの予測ブロックグループ(参照階層(下位階層)のスケールされたピクチャ内で符号化または復号対象予測ブロックと同一位置あるいはその近傍の位置に存在する既に符号化済みの予測ブロックグループ:図37のL0,L1)から1つの予測動きベクトルの候補を導出し、下位階層のピクチャの予測ブロックの予測動きベクトル候補が利用できるかどうかを示すフラグavailableFlagLXIL、及び動きベクトルmvLXILを予測動きベクトル候補登録部142及び242に供給する。(図37のS506)。このステップS506の導出処理手順を図42のフローチャートを用いて後ほど詳細に説明する。
なお、ベース階層の符号化および復号の場合、またはスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_inter_layer_mvp_enable_flagの値が1でない(値が0の場合)、すなわち拡張階層で階層間予測動きベクトル候補を生成しない場合(図37のS505のNO)、フラグavailableFlagLXILの値は0とする。
続いて、予測動きベクトル候補登録部142及び242は予測動きベクトルリストmvpListLXを作成し、供給されるLXのそれぞれの空間予測動きベクトルの候補mvLXA, mvLXB, 時間予測動きベクトルの候補mvLXCol, 階層間予測動きベクトルの候補mvLXILを予測動きベクトルリストmvpListLXに登録する(図37のS507)。このステップS507の登録処理手順を図46のフローチャートを用いて後ほど詳細に説明する。
続いて、予測動きベクトル冗長候補削除部143及び243は予測動きベクトルリストmvpListLX内で、複数の動きベクトルの候補が同じ値または近い値を持っている場合に、冗長な動きベクトルの候補と判断し、最も小さい順序、即ち最も小さいインデックスiの動きベクトルの候補を除いて冗長な動きベクトルの候補を取り除く(図37のS508)。このステップS508の削除処理手順を図47のフローチャートを用いて後ほど詳細に説明する。
続いて、予測動きベクトル候補数制限部144及び244は予測動きベクトルリストmvpListLX内に追加された要素の数をカウントし、その数がLXの予測動きベクトル候補数numMVPCandLXに設定され、予測動きベクトルリストmvpListLXに登録されているLXの予測動きベクトル候補数numMVPCandLXを規定された2に制限する。
(図37のS509)。このステップS509の制限処理手順を図48のフローチャートを用いて後ほど詳細に説明する。
次に、図37のステップS501、S502の左側または上側に近接する予測ブロックから予測動きベクトルの候補をそれぞれ導出する手順について詳細に説明する。
図5、図6、図7、図8に示されるように、同一ピクチャ内の符号化ブロック内部を動き補償する為に定義される予測ブロック(図5、図6、図7、図8中の処理対象の予測ブロック)に近接する周囲の予測ブロックから予測動きベクトルの候補を導出する。
予測動きベクトルの候補は、処理対象の予測ブロックの左側に近接する予測ブロックAk(k=0,1)、すなわちA0、A1から構成される予測ブロックグループA、上に近接する予測ブロックBk(k=0,1,2)、すなわちB0、B1、B2から構成される予測ブロックグループBからそれぞれ予測動きベクトルの候補を選出する。
次に、図37のステップS501およびS502の処理手順である左側および上側に近接する予測ブロックグループNからの予測動きベクトルの候補の導出方法について説明する。図38は図37のステップS501およびS502の空間予測動きベクトル候補導出処理手順を示すフローチャートである。添え字Xには参照リストを表す0若しくは1、Nには近接する予測ブロックグループの領域を表すA(左側)またはB(上側)が入る。
左側の予測ブロックから予測動きベクトルの候補を導出するには(図37のS501)、図38でNがAとして符号化または復号対象の予測ブロックの左側に近接するA0、A1の予測ブロックから予測動きベクトルの候補を、上側の予測ブロックから予測動きベクトルの候補を導出するには(図37のS502)、図38でNがBとして上側に近接するB0、B1、B2予測ブロックから予測動きベクトルの候補を、それぞれ以下の手順で算出する。
まず、符号化または復号対象の予測ブロックに近接する予測ブロックを特定し、それぞれの予測ブロックNk(k=0,1,2、ただし2は上側の予測ブロックグループのみ)が利用できる場合は符号化情報格納メモリ115または符号化情報格納メモリ210に格納されている符号化情報を取得する。ここで取得する近接する予測ブロックNkの符号化情報は、予測モードPredMode、LXを利用するかどうかを示すフラグpredFlagLX [xNk][yNk]、LXの参照インデックスrefIdxLX [xNk][yNk]、LXの動きベクトルmvLX [xNk][yNk]である。符号化または復号対象の予測ブロックの左側に近接する予測ブロックグループ(N=A)の場合(図38のS6101のYES)、左下に近接する予測ブロックA0、左に近接する予測ブロックA1を特定して符号化情報を取得し(図38のS6102、S6103)、符号化または復号対象の予測ブロックの上側に近接する予測ブロックグループ(N=B)の場合(図38のS6101のNO)、右上に近接する予測ブロックB0、上に近接する予測ブロックB1、左上に近接する予測ブロックB2を特定して符号化情報を取得する(図38のS6104、S6105、S6106)。なお、近接する予測ブロックNkが符号化または復号対象予測ブロックを含むスライスの内側に位置する場合は利用でき、外側に位置する場合は利用できない。
次に、予測ブロックグループNから予測動きベクトルが選出されるか否かを示すフラグavailableFlagLXNを0、予測ブロックグループNを代表する動きベクトルmvLXNを(0,0)に設定する(図38のS6107)。
続いて、下記の条件判定1または条件判定2に合致する予測動きベクトル候補を導出する(図38のS6108)。
条件判定1:符号化または復号対象の予測ブロックの予測動きベクトル算出対象のLXの動きベクトルと同じ参照リストLXで、同じ参照インデックス、すなわち同じ参照ピクチャを用いた予測が近接予測ブロックでも行われている。
条件判定2:符号化または復号対象の予測ブロックの予測動きベクトル算出対象のLXの動きベクトルとは反対の参照リストLY(Y=!X:現在導出対象としている動きベクトルの参照リストがL0のとき、反対の参照リストはL1、現在動きベクトルの導出対象としている参照リストがL1のとき、反対の参照リストはL0)であるが、同じ参照ピクチャを用いた予測が近接予測ブロックで行われている。
予測ブロックグループN(NはAまたはB)の近接予測ブロックN0、N1、N2(N2は上側の近接予測ブロックグループBのみ)の中で、符号化または復号対象予測ブロックの予測動きベクトルの予測動きベクトル算出対象のLXの動きベクトルと同じ参照ピクチャの動きベクトルを持つ予測ブロックを探してその動きベクトルを予測動きベクトル候補とする。
図39は図38のステップS6108の空間予測動きベクトル候補導出処理手順を示すフローチャートである。近接する予測ブロックNk(k=0,1,2、ただし、2は上側の近接予測ブロックグループのみ)に対して、kが0,1,2の順番にそれぞれ以下の処理を行う(図39のS6201〜S6207)。Nが左側の近接予測ブロックグループを示すAの場合下から上にA0,A1の順序で、Nが上側の近接予測ブロックグループを示すBの場合、右から左にB0,B1,B2の順序で、それぞれ以下の処理を行う。
近接する予測ブロックNkが利用でき、予測ブロックNkの予測モードPredModeがイントラ(MODE_INTRA)でない場合(図39のS6202のYES)、前述の条件判定1の条件判定を行う(図39のS6203)。近接する予測ブロックNkのLXを利用するどうかを示すフラグpredFlagLX [xNk][yNk]が1、即ち近接する予測ブロックNkが算出対象と同じLXの動きベクトルを用いてインター予測されており、近接する予測ブロックNkのLXの参照インデックスrefIdxLX[xNk][yNk]と処理対象の予測ブロックのインデックスrefIdxLXが同じ、即ち近接する予測ブロックNkがLX予測で同じ参照ピクチャを用いてインター予測されている場合(図39のS6203のYES)、ステップS6204に進み、そうでない場合(図39のS6203のNO)、ステップS6205の条件判定を行う。
ステップS6203がYESの場合、フラグavailableFlagLXNが1に設定され、予測ブロックグループNの予測動きベクトルmvLXNが近接する予測ブロックNkのLXの動きベクトルmvLX[xNk][yNk]と同じ値に設定され、予測ブロックグループNの参照インデックスrefIdxNが近接する予測ブロックNkのLXの参照インデックスrefIdxLX[xNk][yNk]と同じ値に設定され、予測ブロックグループNの参照リストListNがLXに設定され(図39のS6204)、本予測動きベクトル候補算出処理を終了する。
一方、ステップS6203がNOの場合、前述の条件判定2の条件判定を行う(図39のS6205)。近接する予測ブロックNkのLYを利用するどうかを示すフラグpredFlagLYが1、即ち近接する予測ブロックNkが算出対象と異なるLYの動きベクトルを用いてインター予測されており、近接する予測ブロックNkの現在対象としている参照リストLXと反対の参照リストLYの参照ピクチャのPOCと処理対象の予測ブロックのLXの参照ピクチャのPOCが同じ、即ち近接する予測ブロックNkがLY予測で同じ参照ピクチャを用いてインター予測されている場合(図39のS6205のYES)、ステップS6206に進み、フラグavailableFlagLXNが1に設定され、予測ブロックグループNの予測動きベクトルmvLXNが近接する予測ブロックNkのLYの動きベクトルmvLY[xNk][yNk]と同じ値に設定され、予測ブロックグループNの参照インデックスrefIdxNが近接する予測ブロックNkのLYの参照インデックスrefIdxLY[xNk][yNk]と同じ値に設定され、予測ブロックグループNの参照リストListNがLYに設定され(図39のS6206)、本予測動きベクトル候補算出処理を終了する。
これらの条件に合致しない場合、即ちステップS6203のNO,またはステップS6205のNOの場合、kを1増加し、次の近接予測ブロックの処理(図39のS6201〜S6207)を行い、availableFlagLXNが1になるか、近接ブロックA1またはB2の処理が終わるまで繰り返す。
続いて、図38のフローチャートに戻り、availableFlagLXNが0のとき(図38のS6109のYES)、即ちステップS6108で予測動きベクトルの候補が算出できなかった場合、下記の条件判定3または条件判定4に合致する予測動きベクトル候補を算出する(図38のS6110)。
条件判定3:符号化または復号対象の予測ブロックの予測動きベクトル算出対象のLXの動きベクトルと同じ参照リストLXで、異なる参照ピクチャを用いた予測が近接予測ブロックで行われている。
条件判定4:符号化または復号対象の予測ブロックの予測動きベクトル算出対象のLXの動きベクトルとは異なる参照リストLYで、異なる参照ピクチャを用いた予測が近接予測ブロックで行われている。
予測ブロックグループN(NはAまたはB)の近接ブロックN0、N1、N2(N2は上側の近接予測ブロックグループBのみ)の中で、符号化または復号対象予測ブロックの予測動きベクトルの予測動きベクトル算出対象のLXの動きベクトルと異なる参照ピクチャの動きベクトルを持つ予測ブロックを探してその動きベクトルを予測動きベクトル候補とする。
図40は図38のステップS6110の空間予測動きベクトル候補導出処理手順を示すフローチャートである。近接する予測ブロックNk(k=0,1,2、ただし、2は上側の近接予測ブロックグループのみ)に対して、kが0,1,2の順番にそれぞれ以下の処理を行う(図40のS6301〜S6307)。NがAの場合下から上にA0,A1の順序で、NがBの場合、右から左にB0,B1,B2の順序で、それぞれ以下の処理を行う。
近接する予測ブロックNkが利用でき、予測ブロックNkの予測モードPredModeがイントラ(MODE_INTRA)でない場合(図40のS6302のYES)、前述の条件判定3の条件判定を行う(図40のS6303)。近接する予測ブロックNkのLXを利用するどうかを示すフラグpredFlagLX [xNk][yNk]が1、即ち近接する予測ブロックNkが算出対象と同じLXの動きベクトルを用いてインター予測されている場合、ステップS6304に進み、そうでない場合(図40のS6303のNO)、ステップS6305の条件判定を行う。
ステップS6303がYESの場合、フラグavailableFlagLXNが1に設定され、予測ブロックグループNのmvLXNが近接する予測ブロックNkのLXの動きベクトルmvLX[xNk][yNk]と同じ値に設定され、予測ブロックグループNの参照インデックスrefIdxNが近接する予測ブロックNkのLXの参照インデックスrefIdxLX[xNk][yNk]と同じ値に設定され、予測ブロックグループNの参照リストListNがLXに設定され(図40のS6304)、ステップS6308に進む。
ステップS6303がNOの場合、前述の条件判定4の条件判定を行う(図40のS6305)。近接する予測ブロックNkのLYを利用するどうかを示すフラグpredFlagLYが1、即ち近接する予測ブロックNkが算出対象と異なるLYの動きベクトルを用いてインター予測されている場合(図40のS6305のYES)、フラグavailableFlagLXNが1に設定され、予測ブロックグループNの予測動きベクトルmvLXNが近接する予測ブロックNkのLYの動きベクトルmvLY[xNk][yNk]と同じ値に設定され、予測ブロックグループNの予測動きベクトルmvLXNが近接する予測ブロックNkのLYの動きベクトルmvLY[xNk][yNk]と同じ値に設定され、予測ブロックグループNの参照インデックスrefIdxNが近接する予測ブロックNkのLYの参照インデックスrefIdxLY[xNk][yNk]と同じ値に設定され、予測ブロックグループNの参照リストListNがLYに設定され(図40のS6306)、ステップS6308に進む。
一方、これらの条件に合致しない場合(図40のS6303のNO,またはS6305のNOの場合)、kを1増加し、次の近接予測ブロックの処理(図40のS6301〜S6307)を行い、availableFlagLXNが1になるか、近接ブロックA1またはB2の処理が終わるまで繰り返し、ステップS6308に進む。
続いて、availableFlagLXNが1のとき(図40のS6308のYES)、mvLXNをスケーリングする(図40のS6309)。条件判定3または条件判定4の条件に合致した場合、該当する近接予測ブロックの動きベクトルは異なる参照ピクチャに対応するものであるので、スケーリングして予測動きベクトルの候補とする。このステップS6309の空間予測動きベクトル候補のスケーリング演算処理手順を図41及び図42を用いて説明する。
図41は図40のステップS6309の動きベクトルのスケーリング演算処理手順を示すフローチャートである。
現在の符号化または復号対象ピクチャのPOCから、近接予測ブロックのリストListNが参照する参照ピクチャのPOCを減算してピクチャ間距離tdを算出する(図40のS6401)。
なお、現在の符号化または復号対象ピクチャよりも近接予測ブロックのリストListNで参照する参照ピクチャの方が表示順序で前の場合、ピクチャ間距離tdは正の値となり、現在の符号化または復号対象ピクチャよりも近接予測ブロックの参照リストListNで参照する参照ピクチャの方が表示順序で後の場合、ピクチャ間距離tdは負の値となる。
td=現在の符号化または復号対象ピクチャのPOC−近接予測ブロックの参照リストListNで参照する参照ピクチャのPOC
現在の符号化または復号対象ピクチャのPOCから導出対象のLXの参照インデックスrefIdxLXに対応する参照ピクチャのPOCを減算してピクチャ間距離tbを算出する(図40のS6402)。ここで、導出対象の参照インデックスrefIdxLXとは符号化または復号対象の予測ブロックのLXの参照インデックスである。なお、現在の符号化または復号対象ピクチャよりも現在の符号化または復号対象ピクチャの参照リストLXで参照する参照ピクチャの方が表示順序で前の場合、ピクチャ間距離tbは正の値となり、現在の符号化または復号対象ピクチャのリストLXで参照する参照ピクチャの方が表示順序で後の場合、ピクチャ間距離tbは負の値となる。
tb=現在の符号化または復号対象ピクチャのPOC−導出対象のLXの参照インデックスに対応する参照ピクチャのPOC
続いて、次式によりmvLXNにスケーリング係数tb/tdを乗じることでスケーリング演算処理を行い(図40のS6403)、スケーリングされた動きベクトルmvLXNを得る。
mvLXN=tb/td*mvLXN
また、ステップS6403の動きベクトルのスケーリング演算処理を整数精度の演算で行う場合の例を図42に示す。図42のステップS6404〜S6406の処理が、図41のステップS6403の処理に相当する。
まず、図41のフローチャートと同様に、ピクチャ間距離tdとピクチャ間距離tbを算出する(図40のS6401、S6402)。
続いて、次式により変数txを算出する(図40のS6404)。
tx = ( 16384 + ( Abs( td ) >> 1 ) ) / td
なお、Absは括弧内の引数の値の絶対値を表す。
続いて、次式によりスケーリング係数distScaleFactorを算出する(図40のS6405)。
distScaleFactor = Clip3( -4096, 4095, ( tb * tx + 32 ) >> 6 )
なお、Clip3は規定された第1の引数の最小値および第2の引数の最大値で第3の引数の値をクリッピングすることを表す。
続いて、次式により、スケーリングされた動きベクトルmvLXNを得る(図40のS6406)。
mvLXN =Clip3( -32768, 32767, Sign2( distScaleFactor * mvLXN ) *
( (Abs( distScaleFactor * mvLXN ) + 127 ) >> 8 ) )
なお、Sign2は括弧内の引数の値が0以上のとき1となり、0未満のとき-1となることを表す。
次に、図37のS504の異なる時間のピクチャの予測ブロックからの予測動きベクトルの候補の導出方法について詳細に説明する。図43は図37のステップS504の時間予測動きベクトル候補導出処理手順を説明するフローチャートである。
まず、スライス単位でスライスヘッダに記述されるスライスタイプslice_typeと時間方向の予測動きベクトルの候補、またはマージ候補を導出する際に用いる異なる時間のピクチャcolPicが処理対象の予測ブロックが含まれるピクチャのL0の参照リスト或いはL1の参照リストのどちらに登録されている参照ピクチャを使用するかを示すフラグcollocated_from_l0_flagにより、異なる時間のピクチャcolPicを算出する(図43のS7101)。ステップS7101の詳細な処理手順については図20のフローチャートを用いて説明した手順により行う。
続いて、異なる時間の予測ブロックcolPbを算出し、符号化情報を取得する(図43のS7102)。ステップS7102の詳細な処理手順については図21のフローチャートを用いて説明した手順により行う。
続いて、符号化または復号対象の予測ブロックと同位置の他ピクチャの予測ブロックから算出されるLXの予測動きベクトルmvLXColと予測ブロックグループColの参照リストLXの符号化情報が有効か否かを示すフラグavailableFlagLXColを算出する(図43のS7103)。ステップS7103の詳細な処理手順については図22のフローチャートを用いて説明した手順により行う。
次に、図37のステップS506の階層間予測動きベクトル候補の導出方法について詳細に説明する。図44は図17のステップS102の階層間予測動きベクトル候補導出処理手順を説明するフローチャートである。
まず、参照階層のピクチャilPicを特定する(図44のS3101)。本実施の形態においては、符号化または復号対象の拡張階層の下位の階層を参照階層とする。さらに、符号化または復号対象の拡張階層のピクチャと同じPOCの値を持つ参照階層のピクチャを参照階層のピクチャilPicとする。ピクチャ単位、あるいはスライス単位で割り当てられた階層を特定するためのIDとPOCにより、参照階層のピクチャilPicを特定する。
続いて、参照階層を符号化または復号対象の拡張階層に対応するサイズ、位置にスケーリングした場合に符号化または復号対象の予測ブロックと同一位置あるいはその付近に存在する参照階層の予測ブロックilPbを導出し、予測ブロックilPbの符号化情報を取得する(図44のS3102)。ステップS3102の詳細な処理手順については図27のフローチャートを用いて詳細に説明した方法を用いる。
続いて、参照階層を符号化または復号対象の拡張階層に対応するサイズ、位置にスケーリングした場合に符号化または復号対象の予測ブロックと同一位置あるいはその付近に存在する参照階層の予測ブロックilPbから導出される階層間予測動きベクトル候補ILが有効か否かを示すフラグavailableFlagLXIL、階層間予測動きベクトル候補ILの動きベクトルmvLXILを導出し(図44のS3104)、本階層予測動きベクトル候補導出処理を終了する。ステップS3104の詳細な処理手順については図45のフローチャートを用いて後ほど詳細に説明する。
次に、図44のステップS3104の参照階層の階層間予測動きベクトル候補ILの導出処理手順について詳細に説明する。図45は図44のステップS3104の参照階層の階層間予測動きベクトル候補ILの導出処理手順を説明するフローチャートである。
参照階層の符号化情報格納メモリ115または210から参照階層の予測ブロックILの符号化情報を取得する(図45のステップS3301)。
参照階層の予測ブロックilPbが利用できないか(図45のステップS3302のNO)、または参照階層の予測ブロックilPbの予測モードPredModeがイントラ予測(MODE_INTRA)である場合(図45のステップS3303のNO)、または導出対象のLXの参照インデックスrefIdxLXが参照階層の予測ブロックilPuのLXの参照インデックスと等しくない場合(図45のステップS3321のNO)、階層間マージ候補ILのフラグavailableFlagLXILの値を0に設定し(図45のステップS3322)、階層間マージ候補ILの動きベクトルmvLXILの値を共に(0,0)に設定し(図45のステップS3323)、本階層間マージ候補の導出処理を終了する。
一方、参照階層の予測ブロックilPbが利用でき(図45のステップS3302のYES)、参照階層の予測ブロックilPbの予測モードPredModeがイントラ予測(MODE_INTRA)でなく(図45のステップS3303のYES)、導出対象のLXの参照インデックスrefIdxLXが参照階層の予測ブロックilPuのLXの参照インデックスと等しい場合(図45のステップS3321のYES)、参照階層の予測ブロックilPbのインター予測情報からLXの予測動きベクトルを導出する。階層間マージ候補ILのフラグavailableFlagNの値を1に設定し(図45のステップS3326)、階層間マージ候補ILのLXの動きベクトルmvLXILを参照階層の予測ブロックilPbのLXの動きベクトル mvLX[xIL][yIL] と同じ値に設定する(図45のステップS3327)。
続いて、階層間予測動きベクトル候補のLXの動きベクトルmvLXILをスケーリングし(図45のS3330)、本階層間予測動きベクトル候補導出処理を終了する。このLX(LXはL0またはL1)の動きベクトルmvLXILのスケーリング演算処理手順は図29及び図30を用いて説明した方法を用いる。
なお、導出処理の簡略化のために、ステップS3321の条件判断を省略して、ステップS3326に進むこともできる。
次に、図37のステップS507の予測動きベクトルの候補を予測動きベクトルリストに追加する手順について詳細に説明する。
図37のステップS501、S502、S504、およびS506にて算出されたLXのそれぞれの予測動きベクトルの候補mvLXA, mvLXB, mvLXCol, mvLXILをLXの予測動きベクトルリストmvpListLXに追加する(図37のS507)。本発明の実施の形態では、優先順位をつけて、優先順位の高いものからLXの予測動きベクトルリストmvpListLXに予測動きベクトルの候補mvLXA, mvLXB, mvLXIL, mvLXColの順序で登録することで、優先順位の高い要素を予測動きベクトルリストの前方に配置する。図37のステップS509で予測動きベクトルリストの中の要素数を制限する際に、予測動きベクトルリストの後方に配置された要素を予測動きベクトルリストから外すことで、優先順位の高い要素を残す。
予測動きベクトルリストmvpListLXはリスト構造を成し、予測動きベクトルリスト内部の所在を示すインデックスiで管理され、インデックスiに対応する予測動きベクトルの候補を要素として格納する記憶領域が設けられている。インデックスiの数字は0から開始され、予測動きベクトルリストmvpListLXの記憶領域に、予測動きベクトルの候補が格納される。以降の処理では、予測動きベクトルリストmvpListLXに登録されたインデックスiの要素である予測動きベクトルの候補は、mvpListLX[i]で表す。
次に、図37のステップS507のLXの予測動きベクトルリストmvpListLXへのLXの予測動きベクトルの候補mvLXA, mvLXB, mvLXIL, mvLXColの登録処理方法について詳細に説明する。図46は図37のステップS507の予測動きベクトル候補登録処理手順を示すフローチャートである。
まず、予測動きベクトルリストmvpListLXのインデックスiを0に設定する(図46のS9101)。availableFlagLXAが1の場合(図46のS9102のYES)、予測動きベクトルリストmvpListLXのインデックスiに対応する位置にLXの予測動きベクトル候補mvLXAを登録し(図46のS9103)、インデックスiに1を加算することで更新する(図46のS9104)。
続いて、availableFlagLXBが1の場合(図46のS9105のYES)、予測動きベクトルリストmvpListLXmvpListLXのインデックスiに対応する位置にLXの予測動きベクトル候補mvLXBを登録し(図46のS9106)、インデックスiに1を加算することで更新する(図46のS9107)。
一方、拡張階層において、階層間予測動きベクトル候補を導出する場合で、availableFlagLXILが1の場合(図46のS9108のYES)、予測動きベクトルリストmvpListLXのインデックスiに対応する位置にLXの予測動きベクトル候補mvLXILを登録し(図46のS9109)、インデックスiに1を加算することで更新する(図46のS9110)。
続いて、時間予測動きベクトル候補を導出する場合で、availableFlagLXColが1の場合(図46のS9111のYES)、予測動きベクトルリストmvpListLXのインデックスiに対応する位置にLXの予測動きベクトル候補mvLXColを登録し(図46のS9112)、インデックスiに1を加算することで更新して(図46のS9113)、予測動きベクトルリストへの登録処理を終了する。
なお、時間予測動きベクトル候補と階層間予測動きベクトル候補のいずれか一方を予測動きベクトル候補の1つとする場合は、いずれか一方だけが予測動きベクトル候補リストに登録される。したがって、時間予測動きベクトル候補登録処理を行ってから(図46のS9111〜S9113)、階層間予測動きベクトル候補登録処理を行うこともでき(図46のS9108〜S9110)、同じ結果が得られる。
次に、図37のステップS508の予測動きベクトルリスト中の冗長な予測動きベクトルの候補の削除方法について詳細に説明する。図47は図37のステップS508の予測動きベクトル冗長候補削除処理手順を示すフローチャートである。
予測動きベクトル冗長候補削除部143及び243は予測動きベクトルリストmvpListLXに登録されている予測動きベクトルの候補mvLXAとmvLXBを比較し、mvLXAとmvLXBが同一の場合に(図47のS9201のYES)、冗長な動きベクトルの候補mvLXBを取り除く(図47のS9202)。なお、冗長な動きベクトルの候補mvLXBを取り除いた場合、mvListLX[1]が空白となるので、予測動きベクトルの候補mvLXColがmvListLX[2]に格納されている場合には、mvLXColをmvListLX[1]に格納し直す。なお、本実施の形態においては、空間予測動きベクトルの候補mvLXAとmvLXBだけを比較し、階層間予測動きベクトル候補、時間予測動きベクトル候補の比較は行わない。これは、空間予測動きベクトル候補同士は互いに同じ値の動きベクトル持つ可能性が高いが、空間予測動きベクトル候補と階層間予測動きベクトル候補、時間予測動きベクトル候補は互いに同じ値の動きベクトルを持つ可能性が高くなく、比較処理量を減少させるために階層間予測動きベクトル候補、時間予測動きベクトル候補の比較処理を省略しても、符号化効率に与える影響は低いからである。
次に、図37のステップS509の予測動きベクトルリスト中の動きベクトルの候補数の制限方法について詳細に説明する。図48は図37のステップS509の予測動きベクトル候補数制限処理手順を説明するフローチャートである。
予測動きベクトル候補数制限部144及び予測動きベクトル候補数制限部244はLXの予測動きベクトルリストmvpListLXに登録されているLXの予測動きベクトル候補数numMVPCandLXを規定された2に制限する。
まず、LXの予測動きベクトルリストmvpListLXに登録されている要素数をカウントし、LXの予測動きベクトル候補数numMVPCandLXに設定する(図48のS9301)。
続いて、LXの予測動きベクトル候補数numMVPCandLXが2よりも小さい場合(図48のS9302のYES)、LXの予測動きベクトルリストmvpListLXのインデックスiが numMVPCandLXに対応する位置に(0, 0)の値を持つ動きベクトルを登録し(図48のS9303)、numMVPCandLXに1を加算する(図48のS9304)。numMVPCandLXが2の場合(図48のS9305のYES)、本制限処理を終了し、numMVPCandLXが2になるまで(図48のS9305のNO)、ステップS9303とS9304の処理を繰り返す。すなわち、LXの予測動きベクトル候補数numMVPCandLXが2に達するまで、(0, 0)の値を持つMVを登録する。
このように重複して(0, 0)の値を持つMVを登録することにより、予測動きベクトルインデックスが0以上2未満の範囲内でどのような値をとっても予測動きベクトルを確定することができる。
一方、LXの予測動きベクトル候補数numMVPCandLXが2よりも小さくない場合(図48のS9302のNO)、LXの予測動きベクトルリストmvpListLXのインデックスiが1より大きいすべての予測動きベクトル候補を削除し(図48のS9306)、numMVPCandLXに2を設定して(図48のS9307)、本予測動きベクトル候補数制限処理を終了する。
本実施の形態においては、予測動きベクトル候補数を2に規定している。なぜなら、予測動きベクトルリストに登録される予測動きベクトルの候補数が予測動きベクトルリストの構築状態に応じて変動すると、復号側では予測動きベクトルリストを構築してからでないと、予測動きベクトルインデックスをエントロピー復号することができないからである。さらに、エントロピー復号が異なる時間のピクチャの予測ブロックから導出された予測動きベクトル候補mvLXColを含む予測動きベクトルリストの構築状態に依存すると、別のピクチャの符号化ビット列の復号時にエラーが発生した際に現在のピクチャの符号化ビット列もその影響を受けて正常にエントロピー復号を続けることができない問題がある。予測動きベクトル候補数を固定した数に規定すると、予測動きベクトルリストの構築と独立して、予測動きベクトルインデックスをエントロピー復号することができるとともに、別のピクチャの符号化ビット列の復号時にエラーが発生してもその影響を受けずに現在のピクチャの符号化ビット列のエントロピー復号を続けることができる。
本実施の形態においては、動符号化装置の階層画像符号化部のインター予測情報導出部104、および動画像復号装置の階層画像復号部のインター予測情報導出部205おいて、ベース階層では、異なる時間のピクチャの符号化または復号に用いたインター予測情報を参照する時間マージ候補をマージ候補の1つとし、時間マージ候補を導出するか否かをシーケンス単位、ピクチャ単位、またはスライス単位で切り替え、拡張階層では、時間マージ候補、または参照階層(下位階層)のピクチャの符号化または復号に用いたインター予測情報を参照する階層間マージ候補のいずれか一方をマージ候補の1つとし、時間マージ候補を導出するか否かをシーケンス単位、またはスライス単位で切り替えると共に、階層間マージ候補を導出するか否かをシーケンス単位、ピクチャ単位、またはスライス単位で切り替えるものとしている。また、動符号化装置の階層画像符号化部の差分動きベクトル算出部103、および動画像復号装置の階層画像復号部の動きベクトル算出部204おいて、ベース階層では、異なる時間のピクチャの符号化または復号に用いたインター予測情報を参照して導出する時間予測動きベクトル候補を予測動きベクトル候補の1つとし、時間予測動きベクトル候補を導出するか否かをシーケンス単位、ピクチャ単位、またはスライス単位で切り替え、拡張階層では、時間予測動きベクトル候補、または参照階層(下位階層)のピクチャの符号化または復号に用いたインター予測情報を参照する階層間予測動きベクトル候補のいずれか一方を予測動きベクトル候補の1つとし、時間予測動きベクトル候補を導出するか否かをスライス単位、ピクチャ単位、またはスライス単位で切り替えると共に、階層間予測動きベクトル候補を導出するか否かをシーケンス単位、ピクチャ単位、またはスライス単位で切り替えるものとしている。
拡張階層では、シーケンス単位、ピクチャ単位、またはスライス単位で時間マージ候補及び予測動きベクトル候補と、階層間マージ候補及び予測動きベクトル候補をそれぞれマージ候補及び予測動きベクトル候補とするか否かを切り替えるフラグを用意し、これらの単位で、時間マージ候補及び予測動きベクトル候補と階層間マージ候補及び予測動きベクトル候補をそれぞれマージ候補及び予測動きベクトル候補とするか否かを切り替える。
拡張階層では、シーケンス単位、ピクチャ単位、またはスライス単位で時間マージ候補及び予測動きベクトル候補と階層間マージ候補及び予測動きベクトル候補をそれぞれマージ候補及び予測動きベクトル候補とすることが可能か否かを切り替えるフラグを用意し、これらの単位で、時間マージ候補及び予測動きベクトル候補と階層間マージ候補及び予測動きベクトル候補をそれぞれマージ候補及び予測動きベクトル候補とすることが可能か否かを切り替え、それらよりも小さい単位で、時間マージ候補及び予測動きベクトル候補と、階層間マージ候補及び予測動きベクトル候補をそれぞれマージ候補及び予測動きベクトル候補とするか否かを切り替えるフラグを用意し、これらの単位で、時間マージ候補及び予測動きベクトル候補と階層間マージ候補及び予測動きベクトル候補をそれぞれマージ候補及び予測動きベクトル候補とするか否かを切り替えることもできる。
シーケンス単位、ピクチャ単位、またはスライス単位で、拡張階層での階層間マージ候補及び予測動きベクトル候補、または時間マージ候補及び予測動きベクトル候補のいずれか一方だけをマージ候補及び予測動きベクトル候補の1つと規定する際に、符号化側において、シーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かをフラグsps_temporal_mvp_enable_flagにより切り替えるとともに、拡張階層において、階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かをフラグsps_inter_layer_mvp_enable_flagにより切り替え、ピクチャ単位またはスライス単位で、時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かをフラグslice_temporal_mvp_enable_flagにより切り替えるとともに、拡張階層において、階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かをフラグslice_inter_layer_mvp_enable_flagにより切り替え、それぞれのフラグを符号化する方法について図49のフローチャートを用いて説明する。これらのフラグは階層画像符号化部のヘッダ情報設定部117で設定し、第1符号化ビット列生成部118に供給されて、第1符号化ビット列生成部118でシーケンス単位及びスライス単位のシンタックス要素として符号化される。
まず、ヘッダ情報設定部117は、シーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能かどうかを示すフラグsps_temporal_mvp_enable_flag、およびスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能かどうかを示すフラグsps_inter_layer_mvp_enable_flag にそれぞれ値を設定する(図49のS9401)。具体的には、シーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることを可能にする場合、フラグsps_temporal_mvp_enable_flagに1を設定し、可能にしない場合、0を設定する。さらに、シーケンス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることを可能にする場合、フラグsps_inter_layer_mvp_enable_flagに1を設定し、可能にしない場合、0を設定する。
続いて、第1符号化ビット列生成部118は、シーケンス単位で、フラグsps_temporal_mvp_enable_flagをシンタックス要素として符号化する(図49のS9402)。続いて、シーケンス単位で、拡張階層での階層間マージ候補及び予測動きベクトル候補、または時間マージ候補及び予測動きベクトル候補のいずれか一方だけをマージ候補及び予測動きベクトル候補の1つと規定する際には、slice_temporal_mvp_enable_flagの値が1でない場合(図49のS9403のYES)、フラグsps_inter_layer_mvp_enable_flagをシンタックス要素として符号化する(図49のS9404)。ピクチャ単位、またはスライス単位で、拡張階層での階層間マージ候補及び予測動きベクトル候補、または時間マージ候補及び予測動きベクトル候補のいずれか一方だけをマージ候補及び予測動きベクトル候補の1つと規定する際にはステップS9403の条件判断を省略し、常にフラグsps_inter_layer_mvp_enable_flagをシンタックス要素として符号化する(図49のS9404)。
続いて、スライス単位の情報の符号化を行う(図49のS9405〜S9414)。ヘッダ情報設定部117は、スライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_temporal_mvp_enable_flag、およびスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_inter_layer_mvp_enable_flag にそれぞれ値を設定する(図49のS9406)。具体的には、ピクチャ単位、またはスライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とする場合、フラグslice_temporal_mvp_enable_flagに1を設定し、候補としない場合、0を設定する。さらに、ピクチャ単位、またはスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とする場合、フラグslice_inter_layer_mvp_enable_flagに1を設定し、候補としない場合、0を設定する。なお、シーケンス単位のフラグsps_temporal_mvp_enable_flagの値に0を設定する場合、スライス単位のフラグslice_temporal_mvp_enable_flagの値は0に規定する。同様に、拡張階層において、シーケンス単位のフラグsps_inter_layer_mvp_enable_flagの値に0を設定する場合、スライス単位のフラグslice_inter_layer_mvp_enable_flagの値は0に規定する。また、拡張階層において、シーケンス単位、ピクチャ単位、またはスライス単位で時間マージ候補及び予測動きベクトル候補、または階層間マージ候補及び予測動きベクトル候補のいずれか一方だけをマージ候補の1つにすると規定するので、フラグslice_temporal_mvp_enable_flagを1に設定する場合は、フラグslice_inter_layer_mvp_enable_flagの値を0に設定し、また、フラグslice_inter_layer_mvp_enable_flagの値に1を設定する場合は、フラグslice_temporal_mvp_enable_flagの値は0に設定する。また、図12に示す、階層画像M(0)のピクチャP12が符号化されない場合、階層画像M(1)のピクチャP22の符号化及び復号の際には、参照階層のピクチャP12を参照せずに符号化及び復号を行うので、フラグslice_inter_layer_mvp_enable_flagの値に0を設定する。
続いて、第1符号化ビット列生成部118は、フラグsps_temporal_mvp_enable_flagの値が1の場合(図49のS9407のYES)、フラグslice_temporal_mvp_enable_flagをシンタックス要素として符号化する(図49のS9408)。
続いて、第1符号化ビット列生成部118は、フラグsps_inter_layer_mvp_enable_flagの値が1で、slice_temporal_mvp_enable_flagの値が1でない場合(図49のS9410のYES、S9411のYES)、フラグslice_inter_layer_mvp_enable_flagをシンタックス要素として符号化する(図49のS9412)。一方、フラグsps_inter_layer_mvp_enable_flagの値が1でない場合(値が0の場合)(図49のS9410のNO)、あるいは、フラグsps_inter_layer_mvp_enable_flagの値が1で、slice_temporal_mvp_enable_flagの値が1の場合(図49のS9411のNO)、ステップS9412のフラグslice_inter_layer_mvp_enable_flagの符号化処理をスキップする。
以上、ステップS9406からS9412までの処理をスライス毎に繰り返す(図49のS9405〜S9414)。
なお、ベース階層の符号化においては、下位階層を参照することはないので、フラグslice_inter_layer_mvp_enable_flagの値を常に0とし、ステップS9404、及びステップS9410〜S9412の符号化処理を省略することもできる。
なお、ステップS9403の条件分岐を省略することもできる。その際には、フラグsps_temporal_mvp_enable_flagの値に関わらず、フラグsps_inter_layer_mvp_enable_flagを符号化する。さらに、ステップS9411の条件分岐を省略することもできる。その際には、フラグsps_inter_layer_mvp_enable_flagの値が1の場合、slice_temporal_mvp_enable_flagの値に関わらず、フラグslice_inter_layer_mvp_enable_flagをシンタックス要素として符号化する。その際のそれぞれのフラグを符号化する方法について図54のフローチャートを用いて説明する。
まず、ヘッダ情報設定部117は、シーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能かどうかを示すフラグsps_temporal_mvp_enable_flag、およびスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能かどうかを示すフラグsps_inter_layer_mvp_enable_flag にそれぞれ値を設定する(図54のS9401)。具体的には、シーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることを可能にする場合、フラグsps_temporal_mvp_enable_flagに1を設定し、可能にしない場合、0を設定する。さらに、シーケンス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることを可能にする場合、フラグsps_inter_layer_mvp_enable_flagに1を設定し、可能にしない場合、0を設定する。
続いて、第1符号化ビット列生成部118は、シーケンス単位で、フラグsps_temporal_mvp_enable_flagをシンタックス要素として符号化する(図54のS9402)。続いて、フラグsps_inter_layer_mvp_enable_flagをシンタックス要素として符号化する(図54のS9404)。
続いて、スライス単位の情報の符号化を行う(図54のS9405〜S9414)。ヘッダ情報設定部117は、スライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_temporal_mvp_enable_flag、およびスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_inter_layer_mvp_enable_flag にそれぞれ値を設定する(図54のS9406)。具体的には、ピクチャ単位、またはスライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とする場合、フラグslice_temporal_mvp_enable_flagに1を設定し、候補としない場合、0を設定する。さらに、ピクチャ単位、またはスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とする場合、フラグslice_inter_layer_mvp_enable_flagに1を設定し、候補としない場合、0を設定する。なお、シーケンス単位のフラグsps_temporal_mvp_enable_flagの値に0を設定する場合、スライス単位のフラグslice_temporal_mvp_enable_flagの値は0に規定する。同様に、拡張階層において、シーケンス単位のフラグsps_inter_layer_mvp_enable_flagの値に0を設定する場合、スライス単位のフラグslice_inter_layer_mvp_enable_flagの値は0に規定する。また、拡張階層において、時間マージ候補及び予測動きベクトル候補、または階層間マージ候補及び予測動きベクトル候補のいずれか一方だけをマージ候補の1つにすると規定する場合、フラグslice_temporal_mvp_enable_flagを1に設定する場合は、フラグslice_inter_layer_mvp_enable_flagの値を0に設定し、また、フラグslice_inter_layer_mvp_enable_flagの値に1を設定する場合は、フラグslice_temporal_mvp_enable_flagの値は0に設定する。また、図12に示す、階層画像M(0)のピクチャP12が符号化されない場合、階層画像M(1)のピクチャP22の符号化及び復号の際には、参照階層のピクチャP12を参照せずに符号化及び復号を行うので、フラグslice_inter_layer_mvp_enable_flagの値に0を設定する。
続いて、第1符号化ビット列生成部118は、フラグsps_temporal_mvp_enable_flagの値が1の場合(図54のS9407のYES)、フラグslice_temporal_mvp_enable_flagをシンタックス要素として符号化する(図54のS9408)。
続いて、第1符号化ビット列生成部118は、フラグsps_inter_layer_mvp_enable_flagの値が1で、slice_temporal_mvp_enable_flagの値が1でない場合(図54のS9410のYES、S9411のYES)、フラグslice_inter_layer_mvp_enable_flagをシンタックス要素として符号化する(図54のS9412)。一方、フラグsps_inter_layer_mvp_enable_flagの値が1でない場合(値が0の場合)(図54のS9410のNO)、ステップS9412のフラグslice_inter_layer_mvp_enable_flagの符号化処理をスキップする。
以上、ステップS9406からS9412までの処理をスライス毎に繰り返す(図54のS9405〜S9414)。
なお、ベース階層の符号化においては、下位階層を参照することはないので、フラグslice_inter_layer_mvp_enable_flagの値を常に0とし、ステップS9404、及びステップS9410〜S9412の符号化処理を省略することもできる。
次に、シーケンス単位、ピクチャ単位、またはスライス単位で、拡張階層での階層間マージ候補及び予測動きベクトル候補、または時間マージ候補及び予測動きベクトル候補のいずれか一方だけをマージ候補及び予測動きベクトル候補の1つと規定する際に、復号側において、シーケンス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かをフラグsps_temporal_mvp_enable_flagにより切り替えるとともに、拡張階層において、階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能か否かをフラグsps_inter_layer_mvp_enable_flagにより切り替え、ピクチャ単位またはスライス単位で、時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かをフラグslice_temporal_mvp_enable_flagにより切り替えるとともに、拡張階層において、階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするか否かをフラグslice_inter_layer_mvp_enable_flagにより切り替える際のそれぞれのフラグの復号する方法について図50のフローチャートを用いて説明する。図50は図49の符号化処理手順で符号化された符号化ビット列を復号する際の復号処理手順を示すフローチャートである。これらのフラグは階層画像復号部の第1符号化ビット列復号部212でシーケンス単位及びスライス単位のシンタックス要素として復号される。
まず、第1符号化ビット列復号部212は、シーケンス単位で、フラグsps_temporal_mvp_enable_flagを復号する(図50のS9502)。続いて、シーケンス単位で、拡張階層での階層間マージ候補及び予測動きベクトル候補、または時間マージ候補及び予測動きベクトル候補のいずれか一方だけをマージ候補及び予測動きベクトル候補の1つと規定する際には、slice_temporal_mvp_enable_flagの値が1でない場合(図50のS9503のYES)、フラグsps_inter_layer_mvp_enable_flagを復号する(図50のS9504)。ピクチャ単位、またはスライス単位で、拡張階層での階層間マージ候補及び予測動きベクトル候補、または時間マージ候補及び予測動きベクトル候補のいずれか一方だけをマージ候補及び予測動きベクトル候補の1つと規定する際にはステップS9503の条件判断を省略し、常にフラグsps_inter_layer_mvp_enable_flagを復号する(図49のS9404)。
続いて、第1符号化ビット列復号部212は、スライス単位の情報の復号を行う(図50のS9505〜S9514)。フラグsps_temporal_mvp_enable_flagの値が1の場合(図50のS9507のYES)、フラグslice_temporal_mvp_enable_flagを復号する(図50のS9508)。
一方、フラグsps_temporal_mvp_enable_flagの値が1でない場合(値が0の場合)(図50のS9507のNO)、シーケンス単位で、時間マージ候補および動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能でないので、スライス単位のフラグslice_temporal_mvp_enable_flagにも0を設定する(図50のS9509)。
続いて、第1符号化ビット列復号部212は、フラグsps_inter_layer_mvp_enable_flagの値が1で、slice_temporal_mvp_enable_flagの値が1でない場合(値が0の場合)(図50のS9510のYES、S9511のYES)、フラグslice_inter_layer_mvp_enable_flagを復号する(図50のS9512)。一方、フラグsps_inter_layer_mvp_enable_flagの値が1でない場合(値が0の場合)(図50のS9510のNO)、シーケンス単位で、階層間マージ候補および動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能でないので、スライス単位のフラグslice_inter_layer_mvp_enable_flagにも0を設定する(図50のS9513)。同様に、フラグsps_inter_layer_mvp_enable_flagの値が1で、slice_temporal_mvp_enable_flagの値が1の場合(図50のS9511のNO)、復号対象のスライスでは、時間マージ候補および動きベクトル候補をマージ候補及び予測動きベクトル候補とするので、階層間マージ候補および動きベクトル候補をマージ候補及び予測動きベクトル候補とせずに、フラグslice_inter_layer_mvp_enable_flagに0を設定する(図50のS9513)。
以上、ステップS9507からS9513までの処理をスライス毎に繰り返す(図50のS9505〜S9514)。
なお、ベース階層の符号化においては、下位階層を参照することはないので、ステップS9510〜S9513の処理を省略して、フラグslice_inter_layer_mvp_enable_flagの値を常に0とすることもできる。
なお、ステップS9503の条件分岐を省略することもできる。その際には、フラグsps_temporal_mvp_enable_flagの値に関わらず、フラグsps_inter_layer_mvp_enable_flagを復号する。さらに、ステップS9511の条件分岐を省略することもできる。その際には、フラグsps_inter_layer_mvp_enable_flagの値が1の場合、slice_temporal_mvp_enable_flagの値に関わらず、フラグslice_inter_layer_mvp_enable_flagを復号する。その際のそれぞれのフラグを復号する方法について図55のフローチャートを用いて説明する。図55は図54の符号化処理手順で符号化された符号化ビット列を復号する際の復号処理手順を示すフローチャートである。
まず、第1符号化ビット列復号部212は、シーケンス単位で、フラグsps_temporal_mvp_enable_flagを復号する(図55のS9502)。続いて、フラグsps_inter_layer_mvp_enable_flagを復号する(図55のS9504)。
続いて、第1符号化ビット列復号部212は、スライス単位の情報の復号を行う(図55のS9505〜S9514)。フラグsps_temporal_mvp_enable_flagの値が1の場合(図55のS9507のYES)、フラグslice_temporal_mvp_enable_flagを復号する(図55のS9508)。
一方、シーケンス単位のフラグsps_temporal_mvp_enable_flagの値が1でない場合(値が0の場合)(図55のS9507のNO)、シーケンス単位で、時間マージ候補および動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能でないので、スライス単位のフラグslice_temporal_mvp_enable_flagにも0を設定する(図55のS9509)。
続いて、第1符号化ビット列復号部212は、フラグsps_inter_layer_mvp_enable_flagの値が1の場合(図55のS9510のYES)、フラグslice_inter_layer_mvp_enable_flagを復号する(図55のS9512)。一方、フラグsps_inter_layer_mvp_enable_flagの値が1でない場合(値が0の場合)(図55のS9510のNO)、シーケンス単位で、階層間マージ候補および動きベクトル候補をマージ候補及び予測動きベクトル候補とすることが可能でないので、スライス単位のフラグslice_inter_layer_mvp_enable_flagにも0を設定する(図55のS9513)。
なお、拡張階層において、時間マージ候補及び予測動きベクトル候補、または階層間マージ候補及び予測動きベクトル候補のいずれか一方だけをマージ候補の1つにすると規定する場合、符号化側では、フラグslice_temporal_mvp_enable_flagを1に設定する場合は、フラグslice_inter_layer_mvp_enable_flagの値を0に設定され、また、フラグslice_inter_layer_mvp_enable_flagの値に1を設定する場合は、フラグslice_temporal_mvp_enable_flagの値は0に設定されて符号化されている。
以上、ステップS9507からS9513までの処理をスライス毎に繰り返す(図55のS9505〜S9514)。
なお、ベース階層の符号化においては、下位階層を参照することはないので、ステップS9510〜S9513の処理を省略して、フラグslice_inter_layer_mvp_enable_flagの値を常に0とすることもできる。
なお、本実施の形態においては、ベース階層の符号化および復号において、階層間マージ候補及び予測動きベクトル候補を導出しない。したがって、ベース階層の符号化においては、フラグsps_inter_layer_mvp_enable_flag、slice_inter_layer_mvp_enable_flagを符号化しなくてもよい。同様に、ベース階層の復号においては、フラグsps_inter_layer_mvp_enable_flag、slice_inter_layer_mvp_enable_flagを復号しなくてもよい。フラグsps_inter_layer_mvp_enable_flag、slice_inter_layer_mvp_enable_flagの値は共に0と規定する。
なお、拡張階層では、時間マージ候補及び予測動きベクトル候補の導出を行わず、拡張階層の導出に固定してもよい。このように規定することで、拡張階層の階層画像符号化部の時間マージ候補及び予測動きベクトル候補生成部132、及び階層画像復号部の時間マージ候補及び予測動きベクトル候補生成部232の実装を省略することができ、処理量を削減することができるとともに、階層画像符号化部の符号化情報格納メモリ115、および階層画像復号部の符号化情報格納メモリに異なる時間のピクチャの時間マージ候補及び予測動きベクトル候補導出用のインター予測情報を格納する必要がなくなり、メモリ量を削減することができる。この場合、拡張階層では、フラグsps_temporal_mvp_enable_flag及びフラグslice_temporal_mvp_enable_flagの値を0に規定する。
また、拡張階層では、シーケンス単位、ピクチャ単位、またはスライス単位で時間マージ候補及び予測動きベクトル候補と階層間マージ候補及び予測動きベクトル候補を切り替えるためのフラグを用意し、時間マージ候補及び予測動きベクトル候補と階層間マージ候補及び予測動きベクトル候補を切り替えることもできる。
また、拡張階層では、符号化ツリーブロック単位、符号化ブロック単位、予測ブロック単位で時間マージ候補及び予測動きベクトル候補と階層間マージ候補及び予測動きベクトル候補の導出を切り替えるためのフラグを用意し、このフラグに応じて切り替えることもできる。これらの場合、フラグslice_temporal_mvp_enable_flagとslice_inter_layer_mvp_enable_flagを共に1に設定することも可能とする。これらのブロック単位で適応的に切り替えることで、符号化側では処理量が増大するとともに、符号化側、復号側双方においてインター予測情報を記憶するメモリ量が増加するが、符号化効率を向上させることができる。
また、拡張階層では、時間マージ候補及び予測動きベクトル候補と階層間マージ候補及び予測動きベクトル候補をともに候補とすることもできる。その場合、フラグslice_temporal_mvp_enable_flagとslice_inter_layer_mvp_enable_flagを共に1に設定することも可能とするものとし、符号化側では、フラグsps_temporal_mvp_enable_flag、sps_inter_layer_mvp_enable_flagを共に1に設定して符号化し、(図54のS9401〜S9403)、フラグslice_temporal_mvp_enable_flag、slice_inter_layer_mvp_enable_flagを共に1に設定して符号化する(図54のS9406〜S9412)。復号側では、図55の復号処理手順により、フラグsps_temporal_mvp_enable_flag、sps_inter_layer_mvp_enable_flag、slice_temporal_mvp_enable_flag、slice_inter_layer_mvp_enable_flagを復号する。また、マージ候補をマージ候補リストに登録する際には図31の手順で行うことができる。
また、フラグslice_temporal_mvp_enable_flagとslice_inter_layer_mvp_enable_flagを共に1に設定し、階層間マージ候補が利用できるかどうかを示すフラグavailableFlagILの値が1の場合、すなわち階層間マージ候補が利用できる場合は階層間マージ候補をマージ候補リストに登録して時間マージ候補の導出及びマージ候補リストへの登録を省略し、フラグavailableFlagILの値が1でない場合(値が0の場合)、すなわち階層間マージ候補が利用できない場合は時間マージ候補を導出してマージ候補リストに登録することもできる。符号化側復号側双方において、処理量が増大するとともに、符号化側、復号側双方においてインター予測情報を記憶するメモリ量が増加するが、マージ候補の選択の幅が広がり、符号化効率を向上させることができる。また常に階層間マージ候補と時間マージ候補を共に導出する場合に比べて、処理量が少なく、符号化効率の低下を小さく抑えることができる。また、階層間マージ候補の導出と時間マージ候補の導出のスケーリング演算処理を共通化することで、スケーリング演算のハードウェアを削減することができる。
図51は本発明の実施の形態に係る動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補リストの構築部120及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補リストの構築部220とで共通する機能を有する階層間マージ候補が利用できない場合にだけ時間マージ候補を導出し、マージ候補リストに登録する場合のマージ候補マージ候補の導出処理及びマージ候補リストの構築処理の手順を説明するフローチャートである。
以下、諸過程を順を追って説明する。なお、以下の説明においては特に断りのない限りスライスタイプslice_typeがBスライスの場合について説明するが、Pスライスの場合にも適用できる。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
動画像符号化装置の階層画像符号化部のインター予測情報導出部104及び動画像復号装置の階層画像復号部のインター予測情報導出部205では、マージ候補リストmergeCandListを用意する。マージ候補リストmergeCandListはリスト構造を成し、マージ候補リスト内部の所在を示すマージインデックスと、インデックスに対応するマージ候補を要素として格納する記憶領域が設けられている。マージインデックスの数字は0から開始され、マージ候補リストmergeCandListの記憶領域に、マージ候補が格納される。以降の処理では、マージ候補リストmergeCandListに登録されたマージインデックスiのマージ候補となる予測ブロックは、mergeCandList[i]で表すこととし、マージ候補リストmergeCandListとは配列表記をすることで区別することとする。本実施の形態においては、マージ候補リストmergeCandListは少なくとも5個のマージ候補(インター予測情報)を登録することができるものとする。
また、階層間マージ候補が利用できるかどうかを示すフラグavailableFlagIL、予測ブロックA1、B1、B0、A0、B2のインター予測情報が空間マージ候補A1、B1、B0、A0、B2として利用できるかどうかを示すフラグavailableFlagA1、 availableFlagB1、availableFlagB0、availableFlagA0、availableFlagB2、時間マージ候補が利用できるかどうかを示すフラグavailableFlagColは0に初期化される。
動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補生成部131及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補生成部231では、複数のマージ候補を導出する。導出されたマージ候補は、動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補登録部134及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補登録部234にそれぞれ供給される。
動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補生成部131及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補生成部231では、動画像符号化装置および動画像復号装置の拡張階層において、前述のスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_inter_layer_mvp_enable_flagの値が1の場合、すなわち階層間マージ候補を導出する場合(図51のステップS101のYES)、参照階層の予測ブロックから階層間マージ候補を導出する(図51のステップS102)。階層間マージ候補が利用できるかどうかを示すフラグavailableFlagIL、階層間マージ候補のL0予測が行われるかどうかを示すL0予測フラグpredFlagL0ILおよびL1予測が行われるかどうかを示すL1予測フラグpredFlagL1IL、及びL0の動きベクトルmvL0IL、L1の動きベクトルmvL1ILを導出する。ステップS102の階層間マージ候補導出処理の詳細な処理手順については図26のフローチャートを用いて説明した通りである。導出された拡張マージ候補は動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補登録部134及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補登録部234にそれぞれ供給される。なお、ベース階層の符号化および復号の場合、またはスライス単位で階層間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_inter_layer_mvp_enable_flagの値が1でない場合(値が0の場合)、すなわち階層間マージ候補を導出しない場合(図51のステップS101のNO)、ステップS102の階層間マージ候補導出処理を行わずにステップS103に進む。この場合は、フラグavailableFlagILは0に設定される。
続いて、動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補生成部131及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補生成部231では、動画像符号化装置の階層画像符号化部の符号化情報格納メモリ115または動画像復号装置の階層画像復号部の符号化情報格納メモリ210に格納されている符号化情報から、符号化または復号対象ブロックに近接するそれぞれの予測ブロックA1,B1,B0,A0,B2からの空間マージ候補A1,B1,B0,A0,B2を導出する(図51のステップS103)。ここで、空間マージ候補A1,B1,B0,A0,B2,時間マージ候補Colまたは階層間マージ候補ILのいずれかを示すNを定義する。予測ブロックNのインター予測情報が空間マージ候補Nとして利用できるかどうかを示すフラグavailableFlagN、空間マージ候補NのL0の参照インデックスrefIdxL0N及びL1の参照インデックスrefIdxL1N、L0予測が行われるかどうかを示すL0予測フラグpredFlagL0NおよびL1予測が行われるかどうかを示すL1予測フラグpredFlagL1N、L0の動きベクトルmvL0N、L1の動きベクトルmvL1Nを導出する。ただし、本実施の形態においては処理対象となる予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる予測ブロックを参照せずに、マージ候補を導出するので、処理対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる空間マージ候補は導出しない。ステップS103の空間マージ候補導出処理の詳細な処理手順については図18のフローチャートを用いて説明した通りである。導出されたそれぞれの空間マージ候補は動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補登録部134及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補登録部234にそれぞれ供給される。
前述のスライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_temporal_mvp_enable_flagの値が1の場合、すなわち時間マージ候補を導出する場合でかつ(図51のステップS104のYES)、フラグavailableFlagILが0の場合(図51のステップS105のYES)、即ち階層間マージ候補が利用できない場合、動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補生成部131及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補生成部231では、異なる時間のピクチャからの時間マージ候補を導出する(図51のステップS106)。時間マージ候補が利用できるかどうかを示すフラグavailableFlagCol、時間マージ候補のL0予測が行われるかどうかを示すL0予測フラグpredFlagL0ColおよびL1予測が行われるかどうかを示すL1予測フラグpredFlagL1Col、及びL0の動きベクトル mvL0Col、L1の動きベクトルmvL1Colを導出する。ステップS106の時間マージ候補導出処理の詳細な処理手順については図19のフローチャートを用いて説明した通りである。導出された時間マージ候補は動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補登録部134及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補登録部234にそれぞれ供給される。一方、前述のスライス単位で時間マージ候補及び予測動きベクトル候補をマージ候補及び予測動きベクトル候補とするかどうかを示すフラグslice_temporal_mvp_enable_flagの値が1でない場合(値が0の場合)、すなわち時間マージ候補を導出しない場合(図51のステップS104のNO)、ステップS106の時間マージ候補導出処理をスキップしてステップS107に進む。この場合は、フラグavailableFlagColは0に設定される。さらに、フラグavailableFlagILが0の場合も(図51のステップS104のNO)、ステップS106の時間マージ候補導出処理を行わずにステップS107に進む。この場合はフラグavailableFlagColは0に設定される。
続いて、動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補登録部134及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補登録部234では、マージ候補リストmergeCandListを作成し、動画像符号化装置の階層画像符号化部のインター予測情報導出部104のマージ候補生成部131及び動画像復号装置の階層画像復号部のインター予測情報導出部205のマージ候補生成部231から供給される空間マージ候補A1,B1,B0,A0,B2、時間マージ候補Col、階層間マージ候補ILをマージ候補リストmergeCandList内に登録し、マージ候補数numMergeCandにマージ候補リストmergeCandList内のマージ候補数を設定する(図51のステップS107)。ステップS107の詳細な処理手順については図31のフローチャートを用いて説明した通りである。
続いて、動画像符号化装置の階層画像符号化部のインター予測情報導出部104の追加マージ候補生成部135及び動画像復号装置の階層画像復号部のインター予測情報導出部205の追加マージ候補生成部235では、マージ候補リストmergeCandList内に登録されているマージ候補数numMergeCandが、最大マージ候補数maxNumMergeCandより小さい場合、マージ候補リストmergeCandList内に登録されているマージ候補数numMergeCandが最大マージ候補数maxNumMergeCandを上限としてマージ候補リスト内のマージインデックスが0から(maxNumMergeCand-1)の値で指し示される範囲内で、無効なマージ候補がなくなるまで、追加マージ候補を導出して、マージ候補リストmergeCandListに登録する(図51のステップS108)。なお、最大マージ候補数maxNumMergeCandはスライス単位で符号化または復号されるシンタックス要素である。最大マージ候補数maxNumMergeCandを上限として、Pスライスでは、動きベクトルが(0,0)(水平および垂直成分がともに0)で、予測モードがL0予測(Pred_L0)のマージ候補を追加する。Bスライスでは、動きベクトルが(0,0)で、予測モードが双予測(Pred_BI)のマージ候補を追加する。ステップS108の詳細な処理手順については図32のフローチャートを用いて説明した通りである。マージ候補リストmergeCandListは動画像符号化装置の階層画像符号化部のインター予測情報導出部104のインター予測情報選択部136及び動画像復号装置の階層画像復号部のインター予測情報導出部205のインター予測情報選択部236にそれぞれ供給される。
また、図17のステップS107において、マージ候補をマージ候補リストに登録する際に、階層間マージ候補を空間マージ候補の後に登録することもできる。図52は階層間マージ候補を空間マージ候補の後に登録する場合のマージ候補リストへのマージ候補の登録処理手順を示すフローチャートである。具体的には、複雑な動きの画像において発生頻度が高いと考えられる階層間マージ候補ILを追加し、その後に、さらにマージ候補リストmergeCandListに空間マージ候補A1、B1、B0、A0、B2の順序で追加し、その後に、さらに、階層間マージ候補IL、時間マージ候補Colを追加する。
マージ候補リストmergeCandListはリスト構造を成し、マージ候補リスト内部の所在を示すマージインデックスと、インデックスに対応するマージ候補を要素として格納する記憶領域が設けられている。マージインデックスの数字は0から開始され、マージ候補リストmergeCandListの記憶領域に、マージ候補が格納される。以降の処理では、マージ候補リストmergeCandListに登録されたマージインデックスiのマージ候補となる予測ブロックは、mergeCandList[i]で表すこととし、マージ候補リストmergeCandListとは配列表記をすることで区別することとする。
まず、availableFlagA1が1の場合(図52のS4103のYES)、マージ候補リストmergeCandListの登録されたマージ候補の後にマージ候補A1を登録する(図52のS4104)。
続いて、availableFlagB1が1の場合(図52のS4105のYES)、マージ候補リストmergeCandListの直前に登録されたマージ候補の後にマージ候補B1を登録する(図52のS4106)。
続いて、availableFlagB0が1の場合(図52のS4107のYES)、マージ候補リストmergeCandListの直前に登録されたマージ候補の後にマージ候補B0を登録する(図52のS4108)。
続いて、availableFlagA0が1の場合(図52のS4109のYES)、マージ候補リストmergeCandListの直前に登録されたマージ候補の後にマージ候補A0を登録する(図52のS4110)。
続いて、availableFlagB2が1の場合(図52のS4111のYES)、マージ候補リストmergeCandListの直前に登録されたマージ候補の後にマージ候補B2を登録する(図52のS4112)。
続いて、拡張階層において、階層間マージ候補を導出する場合で、availableFlagILが1の場合(図52のS4113のYES)、マージ候補リストmergeCandListの直前に登録されたマージ候補の後にマージ候補ILを登録する(図52のS4114)。
続いて、時間マージ候補を導出する場合で、availableFlagColが1の場合(図52のS4115のYES)、マージ候補リストmergeCandListの直前に登録されたマージ候補の後にマージ候補Colを登録する(図52のS4116)。
本方式では、複雑な動きの画像においては、符号化または復号対象予測ブロックと同じ空間上の下位階層のインター予測情報は同じ動きをしている可能性が高いので階層間マージ候補を優先的にマージ候補リストの前方に登録する。
なお、時間マージ候補と階層間マージ候補のいずれか一方をマージ候補の1つとする場合は、いずれか一方だけがマージ候補リストに登録される。したがって、時間マージ候補登録処理を行ってから(図52のS4115〜S4116)、階層間マージ候補登録処理を行うこともでき(図52のS4113〜S4114)、同じ結果が得られる。
図17のステップS107においては、図31に示すマージ候補登録手順と図52に示すマージ候補登録手順をシーケンス単位、ピクチャ単位、またはスライス単位で適応的に切り替えてもよい。さらにはツリーブロック単位、符号化ブロック単位、予測ブロック単位で切り替えてもよい。
また、図26のステップS3102において、まず、参照階層のピクチャilPic内で処理対象の予測ブロックと同一位置の右下(外側)に位置する予測ブロックを参照階層の予測ブロックilPbとし、予測ブロックilPbのインター予測情報が利用できない場合に、参照階層のピクチャilPic内で処理対象の予測ブロックと同一位置の中央に位置する予測ブロックを参照階層の予測ブロックilPbとしたが、まず、参照階層のピクチャilPic内で処理対象の予測ブロックと同一位置の中央に位置する予測ブロックを参照階層の予測ブロックilPbとし、予測ブロックilPbのインター予測情報が利用できない場合に、参照階層のピクチャilPic内で処理対象の予測ブロックと同一位置の右下(外側)に位置する予測ブロックを参照階層の予測ブロックilPbとしてもよい。
図53は図26のステップS3102の参照階層のピクチャilPicの予測ブロックilPbの導出処理手順を説明するフローチャートである。まず、参照階層のピクチャilPic内で処理対象の予測ブロックと同一位置の中央に位置する予測ブロック(図14の予測ブロックL1に相当)を参照階層の予測ブロックilPbとする(図53のステップS3205)。図53のステップS3205の詳細な処理手順については図27のステップS3205で説明した方法を用いる。次に、参照階層の予測ブロックilPbの符号化情報を取得する(図53のステップS3202)。参照階層の予測ブロックilPbのPredModeが利用できないか、参照階層の予測ブロックilPbの予測モードPredModeがイントラ予測(MODE_INTRA)である場合(図53のステップS3203のYES、ステップS3204のYES)、参照階層の予測ブロックilPbのインター予測情報が利用できないので、参照階層のピクチャilPic内で処理対象の予測ブロックと同一位置の右下(外側)に位置する予測ブロック(図14の予測ブロックL0に相当)を参照階層の予測ブロックilPbとする(図53のステップS3201)。図53のステップS3201の詳細な処理手順については図27のステップS3201で説明した方法を用いる。なお、ステップS3205で導出される参照階層の予測ブロックilPbは符号化または復号対象予測ブロックに対応する予測ブロックであるため、その上位階層である符号化または復号対象予測ブロックでインター予測が行われる場合、ステップS3205で導出される参照階層の予測ブロックilPbでもインター予測が行われている可能性が高い。したがって、処理量を削減するためにステップS3202,S3203,S3204,S3201の処理を省略することもできる。
以上述べた実施の形態の動画像符号化装置が出力する動画像の符号化ストリームは、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有しており、動画像符号化装置に対応する動画像復号装置がこの特定のデータフォーマットの符号化ストリームを復号することができる。
動画像符号化装置と動画像復号装置の間で符号化ストリームをやりとりするために、有線または無線のネットワークが用いられる場合、符号化ストリームを通信路の伝送形態に適したデータ形式に変換して伝送してもよい。その場合、動画像符号化装置が出力する符号化ストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する動画像送信装置と、ネットワークから符号化データを受信して符号化ストリームに復元して動画像復号装置に供給する動画像受信装置とが設けられる。
動画像送信装置は、動画像符号化装置が出力する符号化ビット列をバッファするメモリと、符号化ビット列をパケット化するパケット処理部と、パケット化された符号化ストリームをネットワークを介して送信する送信部とを含む。動画像受信装置は、パケット化された符号化ストリームをネットワークを介して受信する受信部と、受信された符号化データをバッファするメモリと、パケット化された符号化ストリームをパケット処理して符号化ビット列を生成し、動画像復号装置に提供するパケット処理部とを含む。
以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現することができるのは勿論のこと、ROM(リード・オンリ・メモリ)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによっても実現することができる。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供することも、有線あるいは無線のネットワークを通してサーバから提供することも、地上波あるいは衛星ディジタル放送のデータ放送として提供することも可能である。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。例えば、本実施の形態の動画像符号化装置は同じ構成の階層画像符号化部を階層分だけ積み重ねた構成をとるものとして説明したが、この構成により階層ごとに並列に符号化処理を行ってもよいし、単独または階層数より少ない階層画像符号化部により下位階層のピクチャの符号化処理を行ってから上位階層のピクチャの符号化処理を行うことも可能である。同様に、動画像復号装置は同じ構成の階層画像復号部を階層分だけ積み重ねた構成をとるものとして説明したが、この構成により階層ごとに並列に復号処理を行ってもよいし、単独または階層数より少ない階層画像復号部により下位階層のピクチャの復号処理を行ってから上位階層のピクチャの復号処理を行うことも可能である。
また、動画像符号化装置の階層画像符号化部は同じ構成であるものとして説明したが、ベース階層の階層画像符号化部は下位階層の符号化情報を利用せずに符号化するので、下位階層の符号化情報を利用する階層間マージ候補導出処理、および階層間予測動きベクトル導出処理、及びそれに伴う切り替えや登録処理等を省略した構成とすることも可能である。同様に、動画像復号装置の階層画像復号部は同じ構成であるものとして説明したが、ベース階層の階層画像復号部は下位階層の符号化情報を利用せずに復号するので、下位階層の符号化情報を利用する階層間マージ候補導出処理、および階層間予測動きベクトル導出処理、及びそれに伴う切り替えや登録処理等を省略した構成とすることも可能である。