本実施の形態では、動画像の符号化に関し、特にピクチャを任意のサイズ、形状の矩形ブロックに分割し、ピクチャ間でブロック単位に動き補償を行う動画像符号化における符号化効率を向上させる為に、符号化対象ブロックに近接するブロックまたは符号化済みのピクチャのブロックの動きベクトルから複数の予測動きベクトルを導出し、符号化対象のブロックの動きベクトルと選択された予測動きベクトルとの差分ベクトルを算出して符号化することによって符号量を削減する。あるいは、符号化対象ブロックに近接するブロックまたは符号化済みのピクチャのブロックの符号化情報を利用することにより、符号化対象ブロックの符号化情報を導出することによって符号量を削減する。また、動画像の復号の場合は、復号対象ブロックに近接するブロックまたは復号済みのピクチャのブロックの動きベクトルから複数の予測動きベクトルを算出し、符号化ストリームから復号された差分ベクトルと選択された予測動きベクトルとから復号対象のブロックの動きベクトルを算出して復号する。あるいは、復号対象ブロックに近接するブロックまたは復号済みのピクチャのブロックの符号化情報を利用することにより、復号対象ブロックの符号化情報を導出する。
まず、本実施の形態において使用する技術、及び技術用語を定義する。
(ツリーブロック、符号化ブロックについて)
実施の形態では、図3に示されるように、ピクチャ内を任意の同一サイズの正方の矩形の単位にて均等分割する。この単位をツリーブロックと定義し、ピクチャ内での符号化または復号対象ブロック(符号化処理においては符号化対象ブロック、復号処理においては復号対象ブロックのことである。以下、断りのない限り、この意味で用いる。)を特定するためのアドレス管理の基本単位とする。モノクロを除きツリーブロックは1つの輝度信号と2つの色差信号で構成される。ツリーブロックのサイズはピクチャサイズやピクチャ内のテクスチャに応じて、2のべき乗のサイズで自由に設定することができる。ツリーブロックはピクチャ内のテクスチャに応じて、符号化処理を最適にすべく、必要に応じてツリーブロック内の輝度信号、及び色差信号を階層的に4分割(縦横に2分割ずつ)して、ブロックサイズの小さいブロックにすることができる。このブロックをそれぞれ符号化ブロックと定義し、符号化及び復号を行う際の処理の基本単位とする。モノクロを除き符号化ブロックも1つの輝度信号と2つの色差信号で構成される。符号化ブロックの最大サイズはツリーブロックのサイズと同一である。符号化ブロックの最小のサイズとなる符号化ブロックを最小符号化ブロックと呼び、2のべき乗のサイズで自由に設定することができる。
図3においては、符号化ブロック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)と定義する。さらに、この分割されたブロックを予測ブロックと定義する。図4に示すように、符号化ブロックの輝度信号の分割方法に応じて8種類の分割モード(PartMode)を定義する。
図4(a)に示す符号化ブロックの輝度信号を分割せず1つの予測ブロックとみなした分割モード(PartMode)を2N×2N分割(PART_2Nx2N)と定義する。図4(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の比率で分割した分割モードである。図4(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の比率で分割した分割モードである。図4(h)に示す符号化ブロックの輝度信号を上下左右に4分割して、4つの予測ブロックとした分割モード(PartMode)をN×N分割(PART_NxN)とそれぞれ定義する。
なお、各分割モード(PartMode)毎に輝度信号の縦横の分割比率と同様に色差信号も分割する。
符号化ブロック内部において、各予測ブロックを特定する為に、0から開始する番号を、符号化順序で、符号化ブロック内部に存在する予測ブロックに対して割り当てる。この番号を分割インデックスPartIdxと定義する。図4の符号化ブロックの各予測ブロックの中に記述された数字は、その予測ブロックの分割インデックスPartIdxを表す。図4(b)、(c)、(d)に示す2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)では上の予測ブロックの分割インデックスPartIdxを0とし、下の予測ブロックの分割インデックスPartIdxを1とする。図4(e)、(f)、(g)に示すN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)では左の予測ブロックの分割インデックスPartIdxを0とし、右の予測ブロックの分割インデックスPartIdxを1とする。図4(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ごとに処理が行われることを前提とする。
(マージモード、マージ候補)
マージモードとは、符号化または復号対象の予測ブロックの予測モード、参照インデックス、動きベクトル等のインター予測情報を符号化または復号するのではなく、符号化または復号対象の予測ブロックと同一ピクチャ内でその符号化または復号対象の予測ブロックに近接する予測ブロック、あるいは符号化または復号対象の予測ブロックと時間的に異なる復号済みのピクチャの符号化または復号対象の予測ブロックと同一位置あるいはその付近(近傍の位置)に存在する予測ブロックのインター予測情報から符号化または復号対象の予測ブロックのインター予測情報を導出することによりインター予測を行うモードである。符号化または復号対象の予測ブロックと同一ピクチャ内でその符号化または復号対象の予測ブロックに近接する予測ブロック及びその予測ブロックのインター予測情報を空間マージ候補、符号化または復号対象の予測ブロックと時間的に異なる符号化または復号済みのピクチャの符号化または復号対象の予測ブロックと同一位置あるいはその付近(近傍の位置)に存在する予測ブロック及びその予測ブロックのインター予測情報から導出されるインター予測情報を時間マージ候補とする。それぞれのマージ候補はマージ候補リストに登録され、マージインデックスによりインター予測で用いるマージ候補を特定する。
(近接する予測ブロックについて)
図5、図6、図7及び図8は空間マージ候補の導出、および時間マージ候補の参照インデックスの導出の際に参照する符号化または復号対象の予測ブロックと同一ピクチャ内でその符号化または復号対象の予測ブロックに近接する予測ブロックを説明する図である。図9は時間マージ候補の参照インデックスの導出の際に参照する符号化または復号対象の予測ブロックと時間的に異なる符号化または復号済みのピクチャにおいて、符号化または復号対象の予測ブロックと同一位置あるいはその付近に存在する既に符号化または復号済みの予測ブロックを説明する図である。図5、図6、図7、図8及び図9を用いて符号化または復号対象の予測ブロックの空間方向に近接する予測ブロック、及び異なる時間の同一位置の予測ブロックについて説明する。
図5に示すように、符号化または復号対象の予測ブロックと同一ピクチャ内でその符号化または復号対象の予測ブロックの左側の辺に近接する予測ブロックA、上側の辺に近接する予測ブロックB、右上の頂点に近接する予測ブロックC、左下の頂点に近接する予測ブロックD、および左上の頂点に近接する予測ブロックEを空間方向に近接する予測ブロックと定義する。
なお、図6に示すように、符号化または復号対象の予測ブロックの左側の辺に近接する予測ブロックのサイズが符号化または復号対象の予測ブロックより小さく、複数存在する場合には、本実施の形態においては左側の辺に近接する予測ブロックの中で最も下の予測ブロックA10を左側の辺に近接する予測ブロックAとする。
同様に、符号化または復号対象の予測ブロックの上側の辺に近接する予測ブロックのサイズが符号化または復号対象の予測ブロックより小さく、複数存在する場合には、本実施の形態においては左側の辺に近接する予測ブロックの中で最も右の予測ブロックB10を上側の辺に近接する予測ブロックB1とする。
なお、図7に示すように、符号化または復号対象の予測ブロックの左側に近接する予測ブロックFのサイズが符号化または復号対象の予測ブロックより大きい場合にも、前記条件に従い、左側に近接する予測ブロックAがその符号化または復号対象の予測ブロックの左側の辺に近接していれば予測ブロックAとし、符号化または復号対象の予測ブロックの左下の頂点に近接していれば予測ブロックDとし、符号化または復号対象の予測ブロックの左上の頂点に近接していれば予測ブロックEとする。図6の例では、予測ブロックA、予測ブロックE及び予測ブロックEは同一の予測ブロックとなる。
なお、図8に示すように、符号化または復号対象の予測ブロックの上側に近接する予測ブロックGのサイズが符号化または復号対象の予測ブロックより大きい場合にも、前記条件に従い、上側に近接する予測ブロックGがその符号化または復号対象の予測ブロックの上側の辺に近接していれば予測ブロックBとし、符号化または復号対象の予測ブロックの右上の頂点に近接していれば予測ブロックCとし、符号化または復号対象の予測ブロックの左上の頂点に近接していれば予測ブロックEとする。図8の例では、予測ブロックB、予測ブロックC及び予測ブロックEは同一の予測ブロックとなる。
図9に示すように、符号化または復号対象の予測ブロックと時間的に異なる復号済みのピクチャにおいて、符号化または復号対象の予測ブロックと同一位置あるいはその付近に存在する既に符号化または復号済みの予測ブロックT0およびT1を異なる時間の同一位置の予測ブロックと定義する。
(POCについて)
POCは符号化されるピクチャに関連付けられる変数とし、ピクチャの出力順序で1ずつ増加する値が設定される。POCの値によって、同じピクチャであるかを判別したり、出力順序でのピクチャ間の前後関係を判別したり、ピクチャ間の距離を導出したりすることができる。例えば、2つのピクチャのPOCが同じ値を持つ場合、同一のピクチャであると判断できる。2つのピクチャのPOCが違う値を持つ場合、POCの値が小さいピクチャのほうが、先に出力されるピクチャであると判断でき、2つのピクチャのPOCの差が時間軸方向でのピクチャ間距離を示す。
以下、図面と共に本発明の実施の形態を説明する。図1は本発明の実施の形態に係る動画像符号化装置の構成を示すブロック図である。実施の形態の動画像符号化装置は、画像メモリ101、動きベクトル検出部102、差分動きベクトル算出部103、インター予測情報導出部104、動き補償予測部105、イントラ予測部106、予測方法決定部107、残差信号生成部108、直交変換・量子化部109、第1の符号化ビット列生成部110、第2の符号化ビット列生成部111、多重化部112、逆量子化・逆直交変換部113、復号画像信号重畳部114、符号化情報格納メモリ115、および復号画像メモリ116を備える。
画像メモリ101は、撮影/表示時間順に供給された符号化対象のピクチャの画像信号を一時格納する。画像メモリ101は、格納された符号化対象のピクチャの画像信号を、所定の画素ブロック単位で、動きベクトル検出部102、予測方法決定部107、および残差信号生成部108に供給する。その際、撮影/表示時間順に格納されたピクチャの画像信号は、符号化順序に並べ替えられて、画素ブロック単位で、画像メモリ101から出力される。
動きベクトル検出部102は、画像メモリ101から供給される画像信号と復号画像メモリ116から供給される参照ピクチャ間でブロックマッチング等により各予測ブロックサイズ、各予測モードのそれぞれの動きベクトルを各予測ブロック単位で検出し、検出された動きベクトルを動き補償予測部105、差分動きベクトル算出部103、および予測方法決定部107に供給する。
差分動きベクトル算出部103は、符号化情報格納メモリ115に記憶されている既に符号化された画像信号の符号化情報を用いて、複数の予測動きベクトルの候補を算出して予測動きベクトルリストに登録し、予測動きベクトルリストに登録された複数の予測動きベクトルの候補の中から最適な予測動きベクトルを選択し、動きベクトル検出部102が検出した動きベクトルと予測動きベクトルから差分動きベクトルを算出し、算出された差分動きベクトルを予測方法決定部107に供給する。さらに、予測動きベクトルリストに登録された予測動きベクトルの候補から選択された予測動きベクトルを特定する予測動きベクトルインデックスを予測方法決定部107に供給する。
インター予測情報導出部104は、マージモードでのマージ候補を導出する。符号化情報格納メモリ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は、各イントラ予測モードについてイントラ予測を行う。復号画像メモリ211に格納されている復号済みの画像信号からイントラ予測により予測画像信号を生成し、複数のイントラ予測モードの中から適したイントラ予測モードを選択し、選択されたイントラ予測モード、及び選択されたイントラ予測モードに応じた予測画像信号を予測方法決定部107に供給する。
予測方法決定部107はそれぞれの予測方法毎に符号化情報及び残差信号の符号量、予測画像信号と画像信号との間の歪量等を評価することにより、複数の予測方法の中から、最適な符号化ブロック単位でインター予測(PRED_INTER)かイントラ予測(PRED_INTRA)かを判別する予測モードPredMode、分割モードPartModeを決定し、インター予測(PRED_INTER)では予測ブロック単位でマージモードか否かを決定し、マージモードの場合はマージインデックス、マージモードでない場合はインター予測モード、予測動きベクトルインデックス、L0、L1の参照インデックス、差分動きベクトル等を決定して、決定に応じた符号化情報を第1の符号化ビット列生成部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は、残差信号に対して量子化パラメータに応じて直交変換及び量子化を行い直交変換・量子化された残差信号を生成し、第2の符号化ビット列生成部111と逆量子化・逆直交変換部113に供給する。さらに、直交変換・量子化部109は、量子化パラメータを符号化情報格納メモリ115に格納する。
第1の符号化ビット列生成部110は、シーケンス、ピクチャ、スライス、符号化ブロック単位の情報に加えて、符号化ブロック及び予測ブロック毎に予測方法決定部107によって決定された予測方法に応じた符号化情報を符号化する。具体的には、符号化ブロック毎の予測モードPredMode、分割モードPartMode、インター予測(PRED_INTER)の場合、マージモードかどうかを判別するフラグ、マージモードの場合はマージインデックス、マージモードでない場合はインター予測モード、予測動きベクトルインデックス、差分動きベクトルに関する情報等の符号化情報を後述する規定のシンタックス規則に従って符号化して第1の符号化ビット列を生成し、多重化部112に供給する。
第2の符号化ビット列生成部111は、直交変換及び量子化された残差信号を規定のシンタックス規則に従ってエントロピー符号化して第2の符号化ビット列を生成し、多重化部112に供給する。多重化部112で、第1の符号化ビット列と第2の符号化ビット列を規定のシンタックス規則に従って多重化し、ビットストリームを出力する。
逆量子化・逆直交変換部113は、直交変換・量子化部109から供給された直交変換・量子化された残差信号を逆量子化及び逆直交変換して残差信号を算出し、復号画像信号重畳部114に供給する。復号画像信号重畳部114は、予測方法決定部107による決定に応じた予測画像信号と逆量子化・逆直交変換部113で逆量子化及び逆直交変換された残差信号を重畳して復号画像を生成し、復号画像メモリ116に格納する。なお、復号画像に対して符号化によるブロック歪等の歪を減少させるフィルタリング処理を施して、復号画像メモリ116に格納されることもある。
図2は図1の動画像符号化装置に対応した本発明の実施の形態に係る動画像復号装置の構成を示すブロックである。実施の形態の動画像復号装置は、分離部201、第1符号化ビット列復号部202、第2符号化ビット列復号部203、動きベクトル算出部204、インター予測情報導出部205、動き補償予測部206、イントラ予測部207、逆量子化・逆直交変換部208、復号画像信号重畳部209、符号化情報格納メモリ210、および復号画像メモリ211を備える。
図2の動画像復号装置の復号処理は、図1の動画像符号化装置の内部に設けられている復号処理に対応するものであるから、図2の動き補償予測部206、逆量子化・逆直交変換部208、復号画像信号重畳部209、符号化情報格納メモリ210、および復号画像メモリ211の各構成は、図1の動画像符号化装置の動き補償予測部105、逆量子化・逆直交変換部113、復号画像信号重畳部114、符号化情報格納メモリ115、および復号画像メモリ116の各構成とそれぞれ対応する機能を有する。
分離部201に供給されるビットストリームは規定のシンタックスの規則に従って分離し、分離された第1の符号化ビット列が第1符号化ビット列復号部202に供給され、第2の符号化ビット列が第2符号化ビット列復号部203に供給される。
第1符号化ビット列復号部202は、供給された符号化ビット列を復号して、シーケンス、ピクチャ、スライス、符号化ブロック単位の情報、及び、予測ブロック単位の符号化情報を得る。具体的には、符号化ブロック単位でインター予測(PRED_INTER)かイントラ予測(PRED_INTRA)かを判別する予測モードPredMode、分割モードPartMode、インター予測(PRED_INTER)の場合、マージモードかどうかを判別するフラグ、マージモードの場合はマージインデックス、マージモードでない場合はインター予測モード、予測動きベクトルインデックス、差分動きベクトル等に関する符号化情報を後述する規定のシンタックス規則に従って復号し、符号化情報を動きベクトル算出部204、インター予測情報導出部205またはイントラ予測部207に供給する。
第2符号化ビット列復号部203は、供給された符号化ビット列を復号して直交変換・量子化された残差信号を算出し、直交変換・量子化された残差信号を逆量子化・逆直交変換部208に供給する。
動きベクトル算出部204は、復号対象の予測ブロックの予測モードPredModeがインター予測(PRED_INTER)でマージモードでない時に、符号化情報格納メモリ210に記憶されている既に復号された画像信号の符号化情報を用いて、複数の予測動きベクトルの候補を導出して後述する予測動きベクトルリストに登録し、予測動きベクトルリストに登録された複数の予測動きベクトルの候補の中から、第1符号化ビット列復号部202で復号され供給される予測動きベクトルインデックスに応じた予測動きベクトルを選択し、第1符号化ビット列復号部202で復号された差分ベクトルと選択された予測動きベクトルから動きベクトルを算出し、他の符号化情報とともに動き補償予測部206に供給するとともに、符号化情報格納メモリ210に格納する。ここで供給・格納する予測ブロックの符号化情報は、予測モード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_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である。
インター予測情報導出部205は、復号対象の予測ブロックの予測モードPredModeがインター予測(PRED_INTER)でマージモードの時に、マージ候補を導出する。符号化情報格納メモリ115に記憶されている既に復号された予測ブロックの符号化情報を用いて、複数のマージの候補を導出して後述するマージ候補リストに登録し、マージ候補リストに登録された複数のマージ候補の中から第1符号化ビット列復号部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)の時に、イントラ予測を行う。第1符号化ビット列復号部で復号された符号化情報にはイントラ予測モードが含まれており、イントラ予測モードに応じて、復号画像メモリ211に格納されている復号済みの画像信号からイントラ予測により予測画像信号を生成し、予測画像信号を復号画像信号重畳部209に供給する。L0予測、及びL1予測を利用するかどうかを示すフラグpredFlagL0[xP][yP], predFlagL1[xP][yP]を共に0に設定し、符号化情報格納メモリ210に格納する。ここで、xP、yPはピクチャ内での予測ブロックの左上の画素の位置を示すインデックスである。
逆量子化・逆直交変換部208は、第1符号化ビット列復号部202で復号された直交変換・量子化された残差信号に対して逆直交変換及び逆量子化を行い、逆直交変換・逆量子化された残差信号を得る。
復号画像信号重畳部209は、動き補償予測部206でインター予測された予測画像信号、またはイントラ予測部207でイントラ予測された予測画像信号と、逆量子化・逆直交変換部208により逆直交変換・逆量子化された残差信号とを重畳することにより、復号画像信号を復号し、復号画像メモリ211に格納する。復号画像メモリ211に格納する際には、復号画像に対して符号化によるブロック歪等を減少させるフィルタリング処理を施して、復号画像メモリ211に格納されることもある。
(シンタックスについて)
次に、本実施の形態に係る動きベクトルの予測方法を備える動画像符号化装置により符号化され、復号装置により復号される動画像のビットストリームの符号化および復号の共通規則であるシンタックスについて説明する。
図10は本実施の形態により生成されるビットストリームのスライス単位でスライスヘッダーに記述される第1のシンタックス構造を示す。ただし、本実施の形態に関係のあるシンタックス要素のみを示している。スライスタイプがBスライスの場合は、時間方向の予測動きベクトルの候補、またはマージ候補を導出する際に用いる異なる時間のピクチャcolPicが処理対象の予測ブロックが含まれるピクチャのL0の参照リスト或いはL1の参照リストのどちらに登録されている参照ピクチャを使用するかを示すフラグcollocated_from_l0_flagが設置される。フラグcollocated_from_l0_flagの詳細については後述する。
なお、以上のシンタックス要素はピクチャ単位で設定されるシンタックス要素を記述するピクチャ・パラメータ・セットに設置してもよい。
図11は予測ブロック単位に記述されるシンタックスパターンを示す。予測ブロックの予測モードPredModeの値がインター予測(MODE_INTER)の場合、マージモードかどうかを示すmerge_flag[x0][y0]が設置される。ここで、x0、y0は輝度信号のピクチャ内での予測ブロックの左上の画素の位置を示すインデックスであり、merge_flag[x0][y0]はピクチャ内の(x0, y0)に位置する予測ブロックのマージモードかどうかを示すフラグである。
次に、merge_flag[x0][y0]が1の場合、マージモードであることを示し、参照するマージ候補のリストであるマージリストのインデックスのシンタックス要素merge_idx[x0][y0]が設置される。ここで、x0、y0はピクチャ内での予測ブロックの左上の画素の位置を示すインデックスであり、merge_idx[x0][y0]はピクチャ内の(x0, y0)に位置する予測ブロックのマージインデックスである。図12はマージインデックスのシンタックス要素merge_idx[x0][y0]のエントロピー符号の一例である。本発明の本実施の形態においてはマージの候補数を5と設定する。マージインデックスが0, 1, 2, 3, 4の時、マージインデックスのシンタックス要素merge_idx[x0][y0]の符号はそれぞれ'0'、'10'、'110'、'1110'、'1111'となる。
一方、merge_flag[x0][y0]が0の場合、マージモードでないことを示し、スライスタイプがBスライスの場合、インター予測モードを識別するシンタックス要素inter_pred_flag[x0][y0]が設置され、このシンタックス要素でL0予測(Pred_L0)、L1予測(Pred_L1)、双予測(Pred_BI)を識別する。L0、L1ごとに、参照ピクチャを特定するための参照インデックスのシンタックス要素ref_idx_l0[x0][y0]、ref_idx_l1[x0][y0]、動きベクトル検出にて求められた予測ブロックの動きベクトルと予測動きベクトルとの差分である差分動きベクトルのシンタックス要素mvd_l0[x0][y0][j]、mvd_l1[x0][y0][j]が設置される。ここで、x0、y0はピクチャ内での予測ブロックの左上の画素の位置を示すインデックスであり、ref_idx_l0[x0][y0]、mvd_l0[x0][y0][j]はそれぞれピクチャ内の(x0, y0)に位置する予測ブロックのL0の参照インデックス、及び差分動きベクトルであり、ref_idx_l1[x0][y0]、mvd_l1[x0][y0][j]はそれぞれピクチャ内の(x0, y0)に位置する予測ブロックのL1の参照インデックス、及び差分動きベクトルである。また、jは差分動きベクトルの成分を表し、jが0はx成分を、jが1はy成分を表す。次に、参照する予測動きベクトルの候補のリストである予測動きベクトルリストのインデックスのシンタックス要素mvp_idx_l0[x0][y0]、mvp_idx_l1[x0][y0]が設置される。ここで、x0、y0はピクチャ内での予測ブロックの左上の画素の位置を示すインデックスであり、mvp_idx_l0[x0][y0]、mvp_idx_l1[x0][y0]はピクチャ内の(x0, y0)に位置する予測ブロックのL0、L1の予測動きベクトルインデックスである。本発明の本実施の形態においてはこれらの候補数の値を2と設定する。
実施の形態に係るインター予測情報導出方法は、図1の動画像符号化装置のインター予測情報導出部104及び図2の動画像復号装置のインター予測情報導出部205において実施される。
次に、実施の形態に係るインター予測情報導出方法を図面を用いて説明する。インター予測情報導出方法は、符号化ブロックを構成する予測ブロック単位に、符号化及び復号の処理の何れでも実施される。予測ブロックの予測モードPredModeがインター予測(MODE_INTER)で、マージモードの場合に、符号化の場合、符号化済みの予測ブロックの予測モード、参照インデックス、動きベクトルを利用して符号化対象の予測ブロックの予測モード、参照インデックス、動きベクトルを導出する際、復号の場合、復号済みの予測ブロックの予測モード、参照インデックス、動きベクトルを利用して復号対象の予測ブロックの予測モード、参照インデックス、動きベクトルを導出する際に実施される。
マージモードは図5、図6、図7及び図8を用いて説明した左に近接する予測ブロックA、上に近接する予測ブロックB、右上に近接する予測ブロックC、左下に近接する予測ブロックD、左上に近接する予測ブロックEの5つの予測ブロックに加えて、図9を用いて説明した異なる時間の同一位置あるいはその付近に存在する予測ブロックCol(T0、T1のいずれか)の予測ブロックからマージ候補を導出する。動画像符号化装置のインター予測情報導出部104、及び動画像復号装置のインター予測情報導出部205はそれらのマージ候補を符号化側と復号側で共通の規定の順序でマージ候補リストに登録し、動画像符号化装置のインター予測情報導出部104がマージ候補リストの要素を特定するマージインデックスを決定して第1の符号化ビット列生成部を経由して符号化し、動画像復号装置のインター予測情報導出部205は第1符号化ビット列復号部202で復号されたマージインデックスが供給されて、そのマージインデックスに応じた予測ブロックをマージ候補リストから選択し、その選択されたマージ候補の予測モード、参照インデックス、動きベクトル等のインター予測情報を用いて、動き補償予測を行う。
図13は、図1の動画像符号化装置のインター予測情報導出部104の詳細な構成を示す図である。また、図14は、図2の動画像復号装置のインター予測情報導出部205の詳細な構成を示す図である。
図13及び図14の太枠線で囲まれる部分はそれぞれ、動画像符号化装置のインター予測情報導出部104及び動画像復号装置のインター予測情報導出部205を示している。
更に、それらの内部の太点線で囲まれる部分はそれぞれのマージ候補を導出してマージ候補リストを構築する動画像符号化装置のマージ候補リストの構築部120及び動画像復号装置のマージ候補リストの構築部220を示しており、実施の形態の動画像符号化装置と対応する動画像復号装置にも同様に設置され、符号化と復号で矛盾しない同一の導出結果を得られるようにしている。
実施の形態に係るインター予測情報導出方法においては、動画像符号化装置のマージ候補リストの構築部120及び動画像復号装置のマージ候補リストの構築部220でのマージ候補導出及びマージ候補リスト構築処理において、処理対象となる予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる予測ブロックを参照せずに、処理対象の予測ブロックのマージ候補導出及びマージ候補リスト構築処理を行うものとする。この様にすることで、符号化ブロックの分割モード(PartMode)が、2N×2N分割(PART_2Nx2N)でない場合、すなわち、符号化ブロック内に複数の予測ブロックが存在する場合に、符号化側で符号化ブロック内でそれぞれの予測ブロックのマージ候補導出及びマージ候補リストの構築処理を並列に処理することが可能となる。
符号化ブロック内でのそれぞれの予測ブロックのマージ候補リストの構築の並列処理について、図15を用いて分割モード(PartMode)毎に説明する。図15は処理対象の符号化ブロックの分割モード(PartMode)毎に処理対象の予測ブロックに近接する予測ブロックを説明する図である。図15において、A0、B0、C0、D0、E0は分割インデックスPartIdxが0の処理対象の予測ブロックのそれぞれ左側の辺に近接する予測ブロックA、上側の辺に近接する予測ブロックB、右上の頂点に近接する予測ブロックC、左下の頂点に近接する予測ブロックD、および左上の頂点に近接する予測ブロックEを示し、A1、B1、C1、D1、E1は分割インデックスPartIdxが1の処理対象の予測ブロックのそれぞれ左側の辺に近接する予測ブロックA、上側の辺に近接する予測ブロックB、右上の頂点に近接する予測ブロックC、左下の頂点に近接する予測ブロックD、および左上の頂点に近接する予測ブロックEを示し、A2、B2、C2、D2、E2は分割インデックスPartIdxが2の処理対象の予測ブロックのそれぞれ左側の辺に近接する予測ブロックA、上側の辺に近接する予測ブロックB、右上の頂点に近接する予測ブロックC、左下の頂点に近接する予測ブロックD、および左上の頂点に近接する予測ブロックEを示し、A3、B3、C3、D3、E3は分割インデックスPartIdxが3の処理対象の予測ブロックのそれぞれ左側の辺に近接する予測ブロックA、上側の辺に近接する予測ブロックB、右上の頂点に近接する予測ブロックC、左下の頂点に近接する予測ブロックD、および左上の頂点に近接する予測ブロックEを示す。
図15(b)、(c)、(d)は処理対象の符号化ブロックを上下に並ぶ2つの予測ブロックに分割する分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)での近接する予測ブロックを示す図である。PartIdxが1の処理対象の予測ブロックに近接する予測ブロックB1はPartIdxが0の予測ブロックである。したがって、予測ブロックB1を参照して、PartIdxが1の予測ブロックのマージ候補導出及びマージ候補リスト構築処理を行うには、予測ブロックB1である同じ符号化ブロックに属するPartIdxが0の予測ブロックのマージ候補導出及びマージ候補リスト構築処理が完了し、利用するマージ候補を特定した後でないと、処理を行うことができない。したがって、実施の形態に係るインター予測情報導出方法においては、分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)で、処理対象の予測ブロックのPartIdxが1では、処理対象の予測ブロックの上辺に近接し、処理対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれるPartIdxが0の予測ブロックである予測ブロックB1の符号化情報を参照せずに、処理対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれない予測ブロックA1、C1、D1またはE1の符号化情報を参照してPartIdxが1の予測ブロックのマージ候補導出及びマージ候補リストの構築処理を行うことにより、符号化ブロック内の2つの予測ブロックのマージ候補導出及びマージ候補リストの構築処理を並列に処理することが可能となる。
図15(e)、(f)、(g)は処理対象の符号化ブロックを左右に並ぶ2つの予測ブロックに分割するモードを示す分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)での近接する予測ブロックを示す図である。PartIdxが1の処理対象の予測ブロックに近接する予測ブロックA1はPartIdxが0の予測ブロックである。したがって、予測ブロックA1を参照して、PartIdxが1の予測ブロックのマージ候補導出及びマージ候補リスト構築処理を行うには、予測ブロックA1である同じ符号化ブロックに属するPartIdxが0の予測ブロックのマージ候補導出及びマージ候補リスト構築処理が完了し、利用するマージ候補を特定した後でないと、処理を行うことができない。したがって、実施の形態に係るインター予測情報導出方法においては、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)で、処理対象の予測ブロックのPartIdxが1では、処理対象の予測ブロックの左辺に近接し、処理対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれるPartIdxが0の予測ブロックである予測ブロックA1の符号化情報を参照せずに、処理対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれない予測ブロックB1、C1、D1またはE1の符号化情報を参照してPartIdxが1の予測ブロックのマージ候補導出及びマージ候補リストの構築処理を行うことにより、符号化ブロック内のそれぞれの予測ブロックのマージ候補導出及びマージ候補リストの構築処理を並列に処理することが可能となる。
ここで、マージ候補導出及びマージ候補リストの構築処理の並列処理について説明する。図16は順次処理によるマージ候補導出及びマージ候補リストの構築処理を説明するフローチャートであり、図17は並列処理によるマージ候補導出及びマージ候補リストの構築処理を説明するフローチャートである。
図16に示すマージ候補導出及びマージ候補リストの構築処理の順次処理において、処理対象となる符号化ブロックの分割インデックスPartIdxが0の予測ブロックのマージ候補の導出、及びマージ候補リストを構築する(ステップS101)。続いて、分割モード(PartMode)が2N×2N分割(PART_2Nx2N)である場合(ステップS102のNO)、本マージ候補導出及びマージ候補リストの構築処理を終了する。分割モード(PartMode)が2N×2N分割(PART_2Nx2N)でない場合(ステップS102のNO)、すなわち、分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)、N×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)の場合、処理対象となる符号化ブロックの分割インデックスPartIdxが1の予測ブロックのマージ候補の導出、及びマージ候補リストを構築し(ステップS103)、本マージ候補導出及びマージ候補リストの構築処理を終了する。
図17に示すマージ候補導出及びマージ候補リストの構築処理の並列処理において、処理対象となる符号化ブロックの分割インデックスPartIdxが0の予測ブロックのマージ候補の導出、及びマージ候補リストを構築する(ステップS101)。ステップS101と並行して、分割モード(PartMode)が2N×2N分割(PART_2Nx2N)でない場合(ステップS102のNO)、すなわち、分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)、N×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)の場合、処理対象となる符号化ブロックの分割インデックスPartIdxが1の予測ブロックのマージ候補の導出、及びマージ候補リストを構築する(ステップS103)。
図17に示すマージ候補導出及びマージ候補リストの構築処理の並列処理においては、分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)、N×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)またはnR×2N分割(PART_nRx2N)の場合、同一符号化ブロック内のPartIdxが0の予測ブロックを参照せずに、PartIdxが1の予測ブロックのマージ候補導出及びマージ候補リストの構築処理を行うことにより、分割インデックスPartIdxが0と1の2つの予測ブロックのマージ候補導出及びマージ候補リストの構築処理を同時に開始することが可能となる。
図16に示すマージ候補導出及びマージ候補リストの構築処理の順次処理においても、PartIdxが0の予測ブロックを参照せずに、PartIdxが1の予測ブロックのマージ候補導出及びマージ候補リストの構築処理を行うことが可能である。
また、本実施の形態においては、分割モード(PartMode)がN×N分割(PART_NxN)を定義しないものとしているが、N×N分割(PART_NxN)を定義することもできる。図15(h)は処理対象の符号化ブロックの輝度信号を上下左右に4分割して4つの予測ブロックとした分割モード(PartMode)がN×N分割(PART_NxN)での近接する予測ブロックを示す図である。PartIdxが1の処理対象の予測ブロックに近接する予測ブロックA1はPartIdxが0の予測ブロックである。したがって、予測ブロックA1を参照してPartIdxが1の予測ブロックのマージ候補導出及びマージ候補リスト構築処理を行うには、予測ブロックA1である同じ符号化ブロックに属するPartIdxが0の予測ブロックのマージ候補導出及びマージ候補リスト構築処理が完了し、利用するマージ候補を特定した後でないと、処理を行うことができない。したがって、実施の形態に係るインター予測情報導出方法においては、分割モード(PartMode)がN×N分割(PART_NxN)で、処理対象の予測ブロックのPartIdxが1では、PartIdxが0の予測ブロックである予測ブロックA1を参照せずに、PartIdxが1の予測ブロックのマージ候補導出及びマージ候補リストの構築処理を行うことにより、符号化ブロック内のそれぞれの予測ブロックのマージ候補導出及びマージ候補リストの構築処理を並列に処理することが可能となる。PartIdxが2の処理対象の予測ブロックに近接する予測ブロックB2はPartIdxが0の予測ブロックであり、予測ブロックC2はPartIdxが1の予測ブロックである。したがって、予測ブロックB2及びC2を参照してPartIdxが2の予測ブロックのマージ候補導出及びマージ候補リスト構築処理を行うには、予測ブロックB2及びC2である同じ符号化ブロックに属するPartIdxが0及び1の予測ブロックのマージ候補導出及びマージ候補リスト構築処理が完了し、利用するマージ候補を特定した後でないと、処理を行うことができない。したがって、実施の形態に係るインター予測情報導出方法においては、分割モード(PartMode)がN×N分割(PART_NxN)で、処理対象の予測ブロックのPartIdxが2では、PartIdxが0及び1の予測ブロックである予測ブロックB2及びC2を参照せずに、PartIdxが2の予測ブロックのマージ候補導出及びマージ候補リストの構築処理を行うことにより、符号化ブロック内のそれぞれの予測ブロックのマージ候補導出及びマージ候補リストの構築処理を並列に処理することが可能となる。PartIdxが3の処理対象の予測ブロックに近接する予測ブロックE3はPartIdxが0の予測ブロックであり、予測ブロックB3はPartIdxが1の予測ブロックであり、予測ブロックA3はPartIdxが2の予測ブロックである。したがって、予測ブロックE3、B3及びA3を参照してPartIdxが3の予測ブロックのマージ候補導出及びマージ候補リスト構築処理を行うには、予測ブロックE3、B3及びA3である同じ符号化ブロックに属するPartIdxが0、1及び2の予測ブロックのマージ候補導出及びマージ候補リスト構築処理が完了し、利用するマージ候補を特定した後でないと、処理を行うことができない。したがって、実施の形態に係るインター予測情報導出方法においては、分割モード(PartMode)がN×N分割(PART_NxN)で、処理対象の予測ブロックのPartIdxが3では、PartIdxが0、1及び2の予測ブロックである予測ブロックE3、B3及びA3を参照せずに、PartIdxが3の予測ブロックのマージ候補導出及びマージ候補リストの構築処理を行うことにより、符号化ブロック内のそれぞれの予測ブロックのマージ候補導出及びマージ候補リストの構築処理を並列に処理することが可能となる。
図13の動画像符号化装置のインター予測情報導出部104は、空間マージ候補生成部130、時間マージ候補の参照インデックス導出部131、時間マージ候補生成部132、マージ候補登録部133、マージ候補同一判定部134、マージ候補補充部135、および符号化情報選択部136を含む。
図14の動画像復号装置のインター予測情報導出部205は、空間マージ候補生成部230、時間マージ候補の参照インデックス導出部231、時間マージ候補生成部232、マージ候補登録部233、マージ候補同一判定部234、マージ候補補充部235、および符号化情報選択部236を含む。
図18は本発明の実施の形態による動画像符号化装置のインター予測情報導出部104及び動画像復号装置のインター予測情報導出部205とで共通する機能を有するマージ候補の導出処理及びマージ候補リストの構築処理の手順を説明するフローチャートである。以下、諸過程を順を追って説明する。なお、以下の説明においては特に断りのない限りスライスタイプslice_typeがBスライスの場合について説明するが、Pスライスの場合にも適用できる。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
動画像符号化装置のインター予測情報導出部104の空間マージ候補生成部130及び動画像復号装置のインター予測情報導出部205の空間マージ候補生成部230では、符号化または復号対象ブロックに近接するそれぞれの予測ブロックA,B,C,D,Eからの空間マージ候補A,B,C,D,Eを導出し、出力する。ここで、A,B,C,D,Eまたは時間マージ候補Colのいずれかを示すNを定義する。予測ブロックNのインター予測情報が空間マージ候補Nとして利用できるかどうかを示すフラグavailableFlagN、空間マージ候補NのL0の参照インデックスrefIdxL0N及びL1の参照インデックスrefIdxL1N、L0予測が行われるかどうかを示すL0予測フラグpredFlagL0NおよびL1予測が行われるかどうかを示すL1予測フラグpredFlagL1N、L0の動きベクトルmvL0N、L1の動きベクトルmvL1Nを出力する(ステップS201)。ただし、本実施の形態においては処理対象となる予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる予測ブロックを参照せずに、マージ候補を導出するので、処理対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる空間マージ候補は導出しない。ステップS201の詳細な処理手順については図19のフローチャートを用いて後ほど詳細に説明する。
続いて、動画像符号化装置のインター予測情報導出部104の時間マージ候補の参照インデックス導出部131及び動画像復号装置のインター予測情報導出部205の時間マージ候補の参照インデックス導出部231では、符号化または復号対象ブロックに近接する予測ブロックから時間マージ候補の参照インデックスを導出して出力する(ステップS202)。ただし、本実施の形態においては処理対象となる予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる予測ブロックを参照せずに、時間マージ候補の参照インデックスを導出する。スライスタイプslice_typeがPスライスで時間マージ候補のインター予測情報を用いてインター予測を行う場合は、L0予測(Pred_L0)を行うために、L0の参照インデックスだけを導出し、スライスタイプslice_typeがBスライスで時間マージ候補のインター予測情報を用いてインター予測を行う場合は、双予測(Pred_BI)を行うために、L0とL1のそれぞれの参照インデックスを導出する。ステップS202の詳細な処理手順については図21、図23、図25、図27、図29、図30、図32のフローチャートを用いて後ほど詳細に説明する。
続いて、動画像符号化装置のインター予測情報導出部104の時間マージ候補生成部132及び動画像復号装置のインター予測情報導出部205の時間マージ候補生成部232では、異なる時間のピクチャからの時間マージ候補を導出し、時間マージ候補を出力する。時間マージ候補が利用できるかどうかを示すフラグavailableFlagCol、時間マージ候補のL0予測が行われるかどうかを示すL0予測フラグpredFlagL0ColおよびL1予測が行われるかどうかを示すL1予測フラグpredFlagL1Col、及びL0の動きベクトルmvL0N、L1の動きベクトルmvL1Nを出力する(ステップS203)。ステップS203の詳細な処理手順については図34のフローチャートを用いて後ほど詳細に説明する。
続いて、動画像符号化装置のインター予測情報導出部104のマージ候補登録部133及び動画像復号装置のインター予測情報導出部205のマージ候補登録部233では、マージ候補リストmergeCandListを作成し、マージ候補リストmergeCandListに空間マージ候補A,B,C,D,E,および時間マージ候補Colを追加することで、マージ候補リストmergeCandListを構築し、マージ候補リストmergeCandListを出力する(ステップS204)。ステップS204の詳細な処理手順については図41のフローチャートを用いて後ほど詳細に説明する。
続いて、動画像符号化装置のインター予測情報導出部104のマージ候補同一判定部134及び動画像復号装置のインター予測情報導出部205のマージ候補同一判定部234では、マージ候補リストmergeCandList内で、マージ候補が同じ参照インデックスの動きベクトルが同じ値を持っている場合に、最も小さい順番のマージ候補を除いてそのマージ候補を取り除き、マージ候補リストmergeCandListを出力する(ステップS205)。
続いて、動画像符号化装置のインター予測情報導出部104のマージ候補補充部135及び動画像復号装置のインター予測情報導出部205のマージ候補補充部235では、マージ候補リストmergeCandList内に登録されているマージ候補の数が規定数となるようにマージ候補を補充し、マージ候補リストmergeCandListを出力する(ステップS206)。なお、本実施の形態ではマージ候補の数を5と規定する。マージ候補リストmergeCandList内に登録されるマージ候補の数が5を上限として、すでに登録されているマージ候補同士のL0予測とL1予測の組み合わせを変更した予測モードが双予測(Pred_BI)のマージ候補や異なる参照インデックスで動きベクトルが(0,0)の値を持つ予測モードが双予測(Pred_BI)のマージ候補を追加する。
次に、図18のステップS201の処理手順である符号化または復号対象ブロックに近接する予測ブロックNからのマージ候補Nの導出方法について詳細に説明する。図19は図18のステップS201の空間マージ候補導出処理手順を説明するフローチャートである。
Nには近接する予測ブロックの領域を表すA(左側)、B(上側)、C(右上)、D(左下)またはE(左上)が入る。なお、本実施の形態においては、近接する5つの予測ブロックから最大4つの空間マージ候補を導出する。
図18で、変数NをAとして符号化または復号対象の予測ブロックの左側に近接する予測ブロックAの符号化情報を調べてマージ候補Aを導出し、変数NをBとして上側に近接する予測ブロックBの符号化情報を調べてマージ候補Bを導出し、変数NをCとして右上側に近接する予測ブロックCの符号化情報を調べてマージ候補Cを導出し、変数NをDとして左下側に近接する予測ブロックDの符号化情報を調べてマージ候補Dを導出し、変数NをEとして左上側に近接する予測ブロックEの符号化情報を調べてマージ候補Eを導出する(ステップS1101〜ステップS1114)。
まず、変数NがEで、フラグavailableFlagA, availableFlagB, availableFlagC, availableFlagDの値を加算して合計が4の場合(ステップS1102のYES)、すなわち4つの空間マージ候補が導出された場合、マージ候補EのフラグavailableFlagEを0に設定し(ステップS1107)、マージ候補Eの動きベクトルmvL0E, mvL1Eの値を共に(0,0)に設定し(ステップS1108)、マージ候補EのフラグpredFlagL0E、predFlagL1Eの値を共に0に設定し(ステップS1109)、本空間マージ候補導出処理を終了する。本実施の形態においては、近接する予測ブロックから4つのマージ候補を導出するので、既に4つの空間マージ候補が導出された場合はそれ以上の空間マージ候補の導出処理を行う必要がない。
一方、変数NがEでないか、フラグavailableFlagA, availableFlagB, availableFlagC, availableFlagDの値を加算して合計が4でない場合(ステップS1102のNO)、ステップS1103に進む。近接する予測ブロックNが導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる場合(ステップS1103のYES)、マージ候補NのフラグavailableFlagNの値を0に設定し(ステップS1107)、マージ候補Nの動きベクトルmvL0N, mvL1Nの値を共に(0,0)に設定し(ステップS1108)、マージ候補NのフラグpredFlagL0N、predFlagL1Nの値を共に0に設定する(ステップS1109)。近接する予測ブロックNが導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる場合(ステップS1103のYES)、近接する予測ブロックNの符号化情報を参照せず、マージ候補NのフラグavailableFlagNの値を0に設定して空間マージ候補としないことで、同じ符号化ブロック内のそれぞれの予測ブロックのマージ候補導出及びマージ候補リストの構築処理の並列処理を可能とする。
具体的には、分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)または2N×nD分割(PART_2NxnD)で、処理対象の予測ブロックのPartIdxが1で、導出対象の予測ブロックの上辺に近接する予測ブロックBの場合が、近接する予測ブロックNが導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる場合である。この場合、導出対象の予測ブロックの上辺に近接する予測ブロックBは導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれるPartIdxが0の予測ブロックであるので、近接する予測ブロックBの符号化情報を参照せず、マージ候補BのフラグavailableFlagBの値を0に設定して空間マージ候補としないことで、同じ符号化ブロック内のそれぞれの予測ブロックのマージ候補導出及びマージ候補リストの構築処理の並列処理を可能とする。
さらに、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)またはnR×2N分割(PART_nRx2N)で、処理対象の予測ブロックのPartIdxが1で、導出対象の予測ブロックの左辺に近接する予測ブロックAの場合も、近接する予測ブロックNが導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれる場合である。この場合も、導出対象の予測ブロックの左辺に近接する予測ブロックAは導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれるPartIdxが0の予測ブロックであるので、近接する予測ブロックAの符号化情報を参照せず、マージ候補AのフラグavailableFlagAの値を0に設定して空間マージ候補としないことで、同じ符号化ブロック内のそれぞれの予測ブロックのマージ候補導出及びマージ候補リストの構築処理の並列処理を可能とする。
さらに、本実施の形態では定義しないが、分割モード(PartMode)がN×N分割(PART_NxN)で、処理対象の予測ブロックのPartIdxが1、2または3の場合も、近接する予測ブロックNが導出対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれることがある。
一方、近接する予測ブロックNが処理対象の予測ブロックを含む符号化ブロックと同じ符号化ブロックに含まれない場合(ステップS1103のNO)、符号化または復号対象の予測ブロックに近接する予測ブロックNを特定し、それぞれの予測ブロックNが利用できる場合は符号化情報格納メモリ115または210から予測ブロックNの符号化情報を取得する(ステップS1104)。
近接する予測ブロックNが利用できないか(ステップS1105のNO)、予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)である場合(ステップS1106のNO)、マージ候補NのフラグavailableFlagNの値を0に設定し(ステップS1107)、マージ候補Nの動きベクトルmvL0N, mvL1Nの値を共に(0,0)に設定し(ステップS1108)、マージ候補NのフラグpredFlagL0N、predFlagL1Nの値を共に0に設定する(ステップS1109)。ここで、近接する予測ブロックNが利用できない場合とは、具体的には近接する予測ブロックNが符号化または復号対象スライスの外に位置する場合や、まだ符号化または復号処理順序で後のため、符号化または復号処理が完了していない場合等が該当する。
一方、近接する予測ブロックNが導出対象の予測ブロックの符号化ブロックと同じ符号化ブロック外か(ステップS1104のYES)、近接する予測ブロックNが利用でき(ステップS1105のYES)、予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)でない場合(ステップS1106のYES)、予測ブロックNのインター予測情報をマージ候補Nのインター予測情報とする。マージ候補NのフラグavailableFlagNの値を1に設定し(ステップS1110)、マージ候補Nの動きベクトルmvL0N, mvL1Nをそれぞれ予測ブロックNの動きベクトルmvL0N[xN][yN], mvL1N[xN][yN]と同じ値に設定し(ステップS1111)、マージ候補Nの参照インデックスrefIdxL0N, refIdxL1Nをそれぞれ予測ブロックNの参照インデックスrefIdxL0[xN][yN], refIdxL1[xN][yN]と同じ値に設定し(ステップS1112)、マージ候補NのフラグpredFlagL0N, predFlagL1Nをそれぞれ予測ブロックNのフラグpredFlagL0[xN][yN], predFlagL1[xN][yN]に設定する(ステップS1113)。ここで、xN、yNはピクチャ内での予測ブロックNの左上の画素の位置を示すインデックスである。
以上のステップS1102〜ステップS1113の処理をN=A,B,C,D,Eについてそれぞれ繰り返す(ステップS1101〜ステップS1114)。
次に、図18のS202の時間マージ候補の参照インデックスを導出する方法について詳細に説明する。時間マージ候補のL0とL1のそれぞれの参照インデックスを導出する。
本実施の形態においては、空間マージ候補の参照インデックス、即ち符号化または復号対象ブロックに近接する予測ブロックで利用された参照インデックスを利用して時間マージ候補の参照インデックスを導出する。これは、時間マージ候補が選択される場合において、符号化または復号対象の予測ブロックの参照インデックスは空間マージ候補となる符号化または復号対象ブロックに近接する予測ブロックの参照インデックスと高い相関を持つからである。特に、本実施の形態においては、後述する実施例6および実施例7を除いて、導出対象の予測ブロックの左の辺に近接する予測ブロックA、または上の辺に近接する予測ブロックBの参照インデックスだけを利用する。なぜなら、空間マージ候補でもある近接する予測ブロックA,B,C,D,Eの中でも符号化または復号対象の予測ブロックの辺に接している予測ブロックA,Bは、符号化または復号対象の予測ブロックの頂点のみに接している予測ブロックC,D,Eよりも相関が高いからである。相対的に相関の低い予測ブロックC,D,Eを利用せずに、利用する予測ブロックを予測ブロックA,Bに限定することで、時間マージ候補の参照インデックスの導出による符号化効率の改善効果を得るとともに、時間マージ候補の参照インデックス導出処理に関する演算量及びメモリアクセス量を削減する。
実施例1
以下、本実施の形態をいくつかの実施例に分けて説明する。まず、本実施の形態の実施例1について説明する。図20は本実施の形態の実施例1における時間マージ候補の参照インデックスの導出処理において参照する近接ブロックを示す図である。本実施の形態の実施例1では、分割モード(PartMode)に応じて、導出対象の予測ブロックの左辺に近接する予測ブロックまたは上辺に近接する予測ブロックのどちらを参照するかを切り替える。符号化ブロック外となる辺に近接する予測ブロックを参照する。分割モード(PartMode)が2N×2N分割(PART_2Nx2N)では、図20(a)に示すように、導出対象の予測ブロックの左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。
処理対象の符号化ブロックを上下に並ぶ2つの予測ブロックに分割する分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)では、図20(b)、(c)、(d)に示すように、導出対象の予測ブロックの左辺に近接する予測ブロックを参照し、それぞれの時間マージ候補のLXの参照インデックスをそれぞれの導出対象の予測ブロックの左辺に近接する予測ブロックのLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが0の予測ブロックでは左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1の予測ブロックでは左に近接する予測ブロックA1を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA1のLXの参照インデックスの値に設定する。参照する予測ブロックA0、A1が共に符号化ブロック外にあるので、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
処理対象の符号化ブロックを左右に並ぶ2つの予測ブロックに分割する分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)では、図20(e)、(f)、(g)に示すように、導出対象の予測ブロックの上辺に近接する予測ブロックを参照し、それぞれの時間マージ候補のLXの参照インデックスをそれぞれの導出対象の予測ブロックの上辺に近接する予測ブロックのLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが0の予測ブロックでは上に近接する予測ブロックB0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックB0、B1のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1の予測ブロックでは上に近接する予測ブロックB1を参照し、時間マージ候補のLXの参照インデックスを予測ブロックB1のLXの参照インデックスの値に設定する。参照する予測ブロックB0、B1が共に符号化ブロック外にあるので、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
ただし、近接する予測ブロックA、予測ブロックBがLX予測を行わない場合は時間マージ候補のLXの参照インデックスの値をデフォルト値の0とする。近接する予測ブロックA、予測ブロックBがLX予測を行わない場合に時間マージ候補のLXの参照インデックスのデフォルト値を0とする理由は、インター予測において参照インデックスの値が0に対応する参照ピクチャが最も選択される確率が高いからである。ただし、これに限定されず、参照インデックスのデフォルト値を0以外の値(1、2など)としても良いし、シーケンスレベル、ピクチャレベル、またはスライスレベルで符号化ストリーム内に参照インデックスのデフォルト値を示すシンタックス要素を設置し伝送できるようにして、符号化側で選択できるようにしても良い。
図21は本実施の形態の実施例1の方法による図18のステップS202の時間マージ候補の参照インデックスの導出処理手順を説明するフローチャートである。まず、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)でない場合(ステップS2101のNO)、即ち2N×2N分割(PART_2Nx2N)、2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)である場合、符号化情報格納メモリ115または210から左に近接する予測ブロックAの符号化情報を取得する(ステップS2111)。
続くステップS2113からステップS2115までの処理をL0、L1それぞれにおいて行う(ステップS2112〜S2116)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0でない場合(ステップS2113のYES)、時間マージ候補のLXの参照インデックスrefIdxLXColを予測ブロックAのLXの参照インデックスrefIdxLX[xA][yA]の値と同じ値に設定する(ステップS2114)。ここで、xA、yAはピクチャ内での予測ブロックAの左上の画素の位置を示すインデックスである。
なお、本実施の形態においては、予測ブロックN(N=A,B)において、予測ブロックNが符号化または復号対象のスライス外で利用できない場合や予測ブロックNが符号化または復号順序で符号化または復号対象の予測ブロックよりも後のために符号化または復号されておらず利用できない場合や予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、予測ブロックNのL1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に0である。ここで、xN、yNはピクチャ内での予測ブロックNの左上の画素の位置を示すインデックスである。予測ブロックNの予測モードPredModeがインター予測(MODE_INTER)で、インター予測モードがL0予測(Pred_L0)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は1, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は0である。予測ブロックNのインター予測モードがL1予測(Pred_L1)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は0, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は1である。予測ブロックNのインター予測モードが双予測(Pred_BI)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に1である。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0である場合(ステップS2113のNO)、時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2115)。
L0、L1それぞれにおいてステップS2113からステップS2115までの処理を行い(ステップS2112〜S2116)、本参照インデックス導出処理を終了する。
一方、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)の場合(ステップS2101のYES)、符号化情報格納メモリ115または210から導出対象の予測ブロックの上に近接する予測ブロックBの符号化情報を取得する(ステップS2117)。
続くステップS2119からステップS2121までの処理をL0、L1それぞれにおいて行う(ステップS2118〜S2122)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
予測ブロックBのLX予測を行うかどうかを示すフラグpredFlagLX[xB][yB]が0でない場合(ステップS2119のYES)、時間マージ候補のLXの参照インデックスrefIdxLXColを予測ブロックBのLXの参照インデックスrefIdxLX[xB][yB]の値と同じ値に設定する(ステップS2120)。ここで、xB、yBはピクチャ内での予測ブロックBの左上の画素の位置を示すインデックスである。
予測ブロックBのLX予測を行うかどうかを示すフラグpredFlagLX[xB][yB]が0である場合(ステップS2119のNO)、時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2121)。
L0、L1それぞれにおいてステップS2119からステップS2121までの処理を行い(ステップS2118〜S2122)、本参照インデックス導出処理を終了する。
実施例2
次に、本実施の形態の実施例2について説明する。図22は本実施の形態の実施例2における時間マージ候補の参照インデックスの導出処理において参照する近接ブロックを示す図である。本実施の形態の実施例2では、符号化ブロックの分割モード(PartMode)と予測ブロックの分割インデックスPartIdxに応じて、導出対象の予測ブロックの左辺に近接する予測ブロックまたは上辺に近接する予測ブロックのどちらを参照するかを切り替える。符号化ブロック外となる辺に近接する予測ブロックを参照する。分割モード(PartMode)が2N×2N分割(PART_2Nx2N)では、図22(a)に示すように、導出対象の予測ブロックの左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。
処理対象の符号化ブロックを上下に並ぶ2つの予測ブロックに分割する分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)では、図22(b)、(c)、(d)に示すように、導出対象の予測ブロックの左辺に近接する予測ブロックを参照し、それぞれの時間マージ候補のLXの参照インデックスをそれぞれの導出対象の予測ブロックの左辺に近接する予測ブロックのLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが0の予測ブロックでは左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1の予測ブロックでは左に近接する予測ブロックA1を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA1のLXの参照インデックスの値に設定する。参照する予測ブロックA0、A1が共に符号化ブロック外にあるので、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
処理対象の符号化ブロックを左右に並ぶ2つの予測ブロックに分割する分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)では、図22(e)、(f)、(g)に示すように、導出対象の分割インデックスPartIdxが0の予測ブロックでは左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1の予測ブロックでは上に近接する予測ブロックB1を参照し、時間マージ候補のLXの参照インデックスを予測ブロックB1のLXの参照インデックスの値に設定する。参照する予測ブロックA0、B1が共に符号化ブロック外にあるので、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
ただし、近接する予測ブロックA、予測ブロックBがLX予測を行わない場合は時間マージ候補のLXの参照インデックスの値をデフォルト値の0とする。近接する予測ブロックA、予測ブロックBがLX予測を行わない場合に時間マージ候補のLXの参照インデックスのデフォルト値を0とする理由は、インター予測において参照インデックスの値が0に対応する参照ピクチャが最も選択される確率が高いからである。ただし、これに限定されず、参照インデックスのデフォルト値を0以外の値(1、2など)としても良いし、シーケンスレベル、ピクチャレベル、またはスライスレベルで符号化ストリーム内に参照インデックスのデフォルト値を示すシンタックス要素を設置し伝送できるようにして、符号化側で選択できるようにしても良い。
図23は本実施の形態の実施例2の方法による図18のステップS202の時間マージ候補の参照インデックスの導出処理手順を説明するフローチャートである。まず、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)で分割インデックスPartIdxが1でない場合(ステップS2102のNO)、即ち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)で分割インデックスPartIdxが0である場合、符号化情報格納メモリ115または210から導出対象の予測ブロックの左に近接する予測ブロックAの符号化情報を取得する(ステップS2111)。
続くステップS2113からステップS2115までの処理をL0、L1それぞれにおいて行う(ステップS2112〜S2116)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0でない場合(ステップS2113のYES)、時間マージ候補のLXの参照インデックスrefIdxLXColを予測ブロックAのLXの参照インデックスrefIdxLX[xA][yA]の値と同じ値に設定する(ステップS2114)。ここで、xA、yAはピクチャ内での予測ブロックAの左上の画素の位置を示すインデックスである。
なお、本実施の形態においては、予測ブロックN(N=A,B)において、予測ブロックNが符号化または復号対象のスライス外で利用できない場合や予測ブロックNが符号化または復号順序で符号化または復号対象の予測ブロックよりも後のために符号化または復号されておらず利用できない場合や予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、予測ブロックNのL1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に0である。ここで、xN、yNはピクチャ内での予測ブロックNの左上の画素の位置を示すインデックスである。予測ブロックNの予測モードPredModeがインター予測(MODE_INTER)で、インター予測モードがL0予測(Pred_L0)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は1, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は0である。予測ブロックNのインター予測モードがL1予測(Pred_L1)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は0, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は1である。予測ブロックNのインター予測モードが双予測(Pred_BI)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に1である。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0である場合(ステップS2113のNO)、時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2115)。
L0、L1それぞれにおいてステップS2113からステップS2115までの処理を行い(ステップS2112〜S2116)、本参照インデックス導出処理を終了する。
一方、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)で分割インデックスPartIdxが1である場合(ステップS2102のYES)、符号化情報格納メモリ115または210から導出対象の予測ブロックの上に近接する予測ブロックBの符号化情報を取得する(ステップS2117)。
続くステップS2119からステップS2121までの処理をL0、L1それぞれにおいて行う(ステップS2118〜S2122)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
予測ブロックBのLX予測を行うかどうかを示すフラグpredFlagLX[xB][yB]が0でない場合(ステップS2119のYES)、時間マージ候補のLXの参照インデックスrefIdxLXColを予測ブロックBのLXの参照インデックスrefIdxLX[xB][yB]の値と同じ値に設定する(ステップS2120)。ここで、xB、yBはピクチャ内での予測ブロックBの左上の画素の位置を示すインデックスである。
予測ブロックBのLX予測を行うかどうかを示すフラグpredFlagLX[xB][yB]が0である場合(ステップS2119のNO)、時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2121)。
L0、L1それぞれにおいてステップS2119からステップS2121までの処理を行い(ステップS2118〜S2122)、本参照インデックス導出処理を終了する。
実施例3
次に、本実施の形態の実施例3について説明する。図24は本実施の形態の実施例3における時間マージ候補の参照インデックスの導出処理において参照する近接ブロックを示す図である。本実施の形態の実施例3では、符号化ブロックの分割モード(PartMode)と予測ブロックの分割インデックスPartIdxに応じて、導出対象の予測ブロックの左辺に近接する予測ブロックまたは上辺に近接する予測ブロックのどちらを参照するかを切り替える。分割インデックスPartIdxが0の予測ブロックでは、より高い相関を持つ長い辺に近接する予測ブロックを参照し、分割インデックスPartIdxが1の予測ブロックでは、符号化ブロック外となる辺に近接する予測ブロックを参照する。分割モード(PartMode)が2N×2N分割(PART_2Nx2N)では、図24(a)に示すように、導出対象の予測ブロックの左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。
処理対象の符号化ブロックを上下に並ぶ2つの予測ブロックに分割する分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)では、図24(b)、(c)、(d)に示すように、導出対象の分割インデックスPartIdxが0の予測ブロックでは長い辺である上辺に近接する予測ブロックB0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックB0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1の予測ブロックでは符号化ブロック外となる左辺に近接する予測ブロックA1を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA1のLXの参照インデックスの値に設定する。参照する予測ブロックB0、A1が共に符号化ブロック外にあるので、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
処理対象の符号化ブロックを左右に並ぶ2つの予測ブロックに分割する分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)では、図24(e)、(f)、(g)に示すように、導出対象の分割インデックスPartIdxが0の予測ブロックでは長い辺である左辺に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1の予測ブロックでは符号化ブロック外となる上辺に近接する予測ブロックB1を参照し、時間マージ候補のLXの参照インデックスを予測ブロックB1のLXの参照インデックスの値に設定する。参照する予測ブロックA0、B1が共に符号化ブロック外にあるので、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
ただし、近接する予測ブロックA、予測ブロックBがLX予測を行わない場合は時間マージ候補のLXの参照インデックスの値をデフォルト値の0とする。近接する予測ブロックA、予測ブロックBがLX予測を行わない場合に時間マージ候補のLXの参照インデックスのデフォルト値を0とする理由は、インター予測において参照インデックスの値が0に対応する参照ピクチャが最も選択される確率が高いからである。ただし、これに限定されず、参照インデックスのデフォルト値を0以外の値(1、2など)としても良いし、シーケンスレベル、ピクチャレベル、またはスライスレベルで符号化ストリーム内に参照インデックスのデフォルト値を示すシンタックス要素を設置し伝送できるようにして、符号化側で選択できるようにしても良い。
図25は本実施の形態の実施例3の方法による図18のステップS202の時間マージ候補の参照インデックスの導出処理手順を説明するフローチャートである。まず、分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)で分割インデックスPartIdxが0でなく、N×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)で分割インデックスPartIdxが1でない場合(ステップS2103のNO)、即ち2N×2N分割(PART_2Nx2N)であるか、2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)で分割インデックスPartIdxが0であるか、N×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)で分割インデックスPartIdxが0である場合、符号化情報格納メモリ115または210から導出対象の予測ブロックの左に近接する予測ブロックAの符号化情報を取得する(ステップS2111)。
続くステップS2113からステップS2115までの処理をL0、L1それぞれにおいて行う(ステップS2112〜S2116)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0でない場合(ステップS2113のYES)、時間マージ候補のLXの参照インデックスrefIdxLXColを予測ブロックAのLXの参照インデックスrefIdxLX[xA][yA]の値と同じ値に設定する(ステップS2114)。ここで、xA、yAはピクチャ内での予測ブロックAの左上の画素の位置を示すインデックスである。
なお、本実施の形態においては、予測ブロックN(N=A,B)において、予測ブロックNが符号化または復号対象のスライス外で利用できない場合や予測ブロックNが符号化または復号順序で符号化または復号対象の予測ブロックよりも後のために符号化または復号されておらず利用できない場合や予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、予測ブロックNのL1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に0である。ここで、xN、yNはピクチャ内での予測ブロックNの左上の画素の位置を示すインデックスである。予測ブロックNの予測モードPredModeがインター予測(MODE_INTER)で、インター予測モードがL0予測(Pred_L0)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は1, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は0である。予測ブロックNのインター予測モードがL1予測(Pred_L1)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は0, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は1である。予測ブロックNのインター予測モードが双予測(Pred_BI)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に1である。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0である場合(ステップS2113のNO)、時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2115)。
L0、L1それぞれにおいてステップS2113からステップS2115までの処理を行い(ステップS2112〜S2116)、本参照インデックス導出処理を終了する。
一方、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)で分割インデックスPartIdxが1である場合(ステップS2102のYES)、符号化情報格納メモリ115または210から導出対象の予測ブロックの上に近接する予測ブロックBの符号化情報を取得する(ステップS2117)。
続くステップS2119からステップS2121までの処理をL0、L1それぞれにおいて行う(ステップS2118〜S2122)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
予測ブロックBのLX予測を行うかどうかを示すフラグpredFlagLX[xB][yB]が0でない場合(ステップS2119のYES)、時間マージ候補のLXの参照インデックスrefIdxLXColを予測ブロックBのLXの参照インデックスrefIdxLX[xB][yB]の値と同じ値に設定する(ステップS2120)。ここで、xB、yBはピクチャ内での予測ブロックBの左上の画素の位置を示すインデックスである。
予測ブロックBのLX予測を行うかどうかを示すフラグpredFlagLX[xB][yB]が0である場合(ステップS2119のNO)、時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2121)。
L0、L1それぞれにおいてステップS2119からステップS2121までの処理を行い(ステップS2118〜S2122)、本参照インデックス導出処理を終了する。
実施例4
次に、本実施の形態の実施例4について説明する。図26は本実施の形態の実施例4における時間マージ候補の参照インデックスの導出処理において参照する近接ブロックを示す図である。本実施の形態の実施例4では、符号化ブロックの分割モード(PartMode)と予測ブロックの分割インデックスPartIdxに応じて、導出対象の予測ブロックの左辺に近接する予測ブロックを参照するかどうかを切り替える。左辺に近接する予測ブロックが符号化ブロック外となる場合に参照し、符号化ブロック内となる場合には参照せずデフォルト値とする。分割モード(PartMode)が2N×2N分割(PART_2Nx2N)では、図26(a)に示すように、導出対象の予測ブロックの左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。
処理対象の符号化ブロックを上下に並ぶ2つの予測ブロックに分割する分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)では、図26(b)、(c)、(d)に示すように、導出対象の分割インデックスPartIdxが0の予測ブロックでは左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1の予測ブロックでは左に近接する予測ブロックA1を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA1のLXの参照インデックスの値に設定する。参照する予測ブロックA0、A1が共に符号化ブロック外にあるので、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
処理対象の符号化ブロックを左右に並ぶ2つの予測ブロックに分割する分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)では、図26(e)、(f)、(g)に示すように、導出対象の分割インデックスPartIdxが0の予測ブロックでは左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1の予測ブロックでは近接する予測ブロックを参照せず、時間マージ候補のLXの参照インデックスをデフォルト値の0に設定する。参照する予測ブロックA0が符号化ブロック外にあるので、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
ただし、近接する予測ブロックAがLX予測を行わない場合は時間マージ候補のLXの参照インデックスの値をデフォルト値の0とする。近接する予測ブロックAがLX予測を行わない場合や導出対象の予測ブロックの分割インデックスPartIdxが1の場合に、時間マージ候補のLXの参照インデックスのデフォルト値を0とする理由は、インター予測において参照インデックスの値が0に対応する参照ピクチャが最も選択される確率が高いからである。ただし、これに限定されず、参照インデックスのデフォルト値を0以外の値(1、2など)としても良いし、シーケンスレベル、ピクチャレベル、またはスライスレベルで符号化ストリーム内に参照インデックスのデフォルト値を示すシンタックス要素を設置し伝送できるようにして、符号化側で選択できるようにしても良い。
図27は本実施の形態の実施例4の方法による図18のステップS202の時間マージ候補の参照インデックスの導出処理手順を説明するフローチャートである。まず、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)で分割インデックスPartIdxが1でない場合(ステップS2102のNO)、即ち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)で分割インデックスPartIdxが0である場合、符号化情報格納メモリ115または210から導出対象の予測ブロックの左に近接する予測ブロックAの符号化情報を取得する(ステップS2111)。
続くステップS2113からステップS2115までの処理をL0、L1それぞれにおいて行う(ステップS2112〜S2116)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0でない場合(ステップS2113のYES)、時間マージ候補のLXの参照インデックスrefIdxLXColを予測ブロックAのLXの参照インデックスrefIdxLX[xA][yA]の値と同じ値に設定する(ステップS2114)。ここで、xA、yAはピクチャ内での予測ブロックAの左上の画素の位置を示すインデックスである。
なお、本実施の形態においては、予測ブロックN(N=A,B)において、予測ブロックNが符号化または復号対象のスライス外で利用できない場合や予測ブロックNが符号化または復号順序で符号化または復号対象の予測ブロックよりも後のために符号化または復号されておらず利用できない場合や予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、予測ブロックNのL1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に0である。ここで、xN、yNはピクチャ内での予測ブロックNの左上の画素の位置を示すインデックスである。予測ブロックNの予測モードPredModeがインター予測(MODE_INTER)で、インター予測モードがL0予測(Pred_L0)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は1, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は0である。予測ブロックNのインター予測モードがL1予測(Pred_L1)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は0, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は1である。予測ブロックNのインター予測モードが双予測(Pred_BI)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に1である。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0である場合(ステップS2113のNO)、時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2115)。
L0、L1それぞれにおいてステップS2113からステップS2115までの処理を行い(ステップS2112〜S2116)、本参照インデックス導出処理を終了する。
一方、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)で分割インデックスPartIdxが1である場合(ステップS2102のYES)、続くステップS2121の処理をL0、L1それぞれにおいて行う(ステップS2118〜S2122)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2121)。
L0、L1それぞれにおいてステップS2121までの処理を行い(ステップS2118〜S2122)、本参照インデックス導出処理を終了する。
実施例5
次に、本実施の形態の実施例5について説明する。図28は本実施の形態の実施例5における時間マージ候補の参照インデックスの導出処理において参照する近接ブロックを示す図である。本実施の形態の実施例5では、分割モード(PartMode)に応じて、導出対象の予測ブロックの左辺に近接する予測ブロックを参照するかどうかを切り替える。符号化ブロック外となる辺に近接する予測ブロックを参照する。左辺に近接する予測ブロックが符号化ブロック外となる場合に参照し、符号化ブロック内となる場合には参照せずデフォルト値とする。分割モード(PartMode)が2N×2N分割(PART_2Nx2N)では、図28(a)に示すように、導出対象の予測ブロックの左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。
処理対象の符号化ブロックを上下に並ぶ2つの予測ブロックに分割する分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)では、図28(b)、(c)、(d)に示すように、導出対象の分割インデックスPartIdxが0の予測ブロックでは左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1の予測ブロックでは左に近接する予測ブロックA1を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA1のLXの参照インデックスの値に設定する。参照する予測ブロックA0、A1が共に符号化ブロック外にあるので、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
処理対象の符号化ブロックを左右に並ぶ2つの予測ブロックに分割する分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)では、導出対象の分割インデックスPartIdxが0および1の予測ブロックでは共に近接する予測ブロックを参照せず、時間マージ候補のLXの参照インデックスをデフォルト値の0に設定する。処理対象の予測ブロックに近接する予測ブロックを参照しないので、符号化ブロック内の予測ブロックを参照することも無く、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
ただし、近接する予測ブロックAがLX予測を行わない場合は時間マージ候補のLXの参照インデックスの値をデフォルト値の0とする。近接する予測ブロックAがLX予測を行わない場合や導出対象の予測ブロックを含む符号化ブロックの分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)の場合に、時間マージ候補のLXの参照インデックスのデフォルト値を0とする理由は、インター予測において参照インデックスの値が0に対応する参照ピクチャが最も選択される確率が高いからである。ただし、これに限定されず、参照インデックスのデフォルト値を0以外の値(1、2など)としても良いし、シーケンスレベル、ピクチャレベル、またはスライスレベルで符号化ストリーム内に参照インデックスのデフォルト値を示すシンタックス要素を設置し伝送できるようにして、符号化側で選択できるようにしても良い。
図29は本実施の形態の実施例5の方法による図18のステップS202の時間マージ候補の参照インデックスの導出処理手順を説明するフローチャートである。まず、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)でない場合(ステップS2101のNO)、即ち2N×2N分割(PART_2Nx2N)、2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)である場合、符号化情報格納メモリ115または210から導出対象の予測ブロックの左に近接する予測ブロックAの符号化情報を取得する(ステップS2111)。
続くステップS2113からステップS2115までの処理をL0、L1それぞれにおいて行う(ステップS2112〜S2116)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0でない場合(ステップS2113のYES)、時間マージ候補のLXの参照インデックスrefIdxLXColを予測ブロックAのLXの参照インデックスrefIdxLX[xA][yA]の値と同じ値に設定する(ステップS2114)。ここで、xA、yAはピクチャ内での予測ブロックAの左上の画素の位置を示すインデックスである。
なお、本実施の形態においては、予測ブロックN(N=A,B)において、予測ブロックNが符号化または復号対象のスライス外で利用できない場合や予測ブロックNが符号化または復号順序で符号化または復号対象の予測ブロックよりも後のために符号化または復号されておらず利用できない場合や予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、予測ブロックNのL1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に0である。ここで、xN、yNはピクチャ内での予測ブロックNの左上の画素の位置を示すインデックスである。予測ブロックNの予測モードPredModeがインター予測(MODE_INTER)で、インター予測モードがL0予測(Pred_L0)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は1, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は0である。予測ブロックNのインター予測モードがL1予測(Pred_L1)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は0, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は1である。予測ブロックNのインター予測モードが双予測(Pred_BI)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に1である。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0である場合(ステップS2113のNO)、時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2115)。
L0、L1それぞれにおいてステップS2113からステップS2115までの処理を行い(ステップS2112〜S2116)、本参照インデックス導出処理を終了する。
一方、分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)である場合(ステップS2101のYES)、続くステップS2121の処理をL0、L1それぞれにおいて行う(ステップS2118〜S2122)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2121)。
L0、L1それぞれにおいてステップS2121までの処理を行い(ステップS2118〜S2122)、本参照インデックス導出処理を終了する。
実施例6
次に、本実施の形態の実施例6について説明する。本実施の形態の実施例6では、導出対象の予測モードを含む符号化ブロック(処理対象の符号化ブロック)の分割モード(PartMode)や導出対象の予測モードの分割インデックスPartIdxの値に関わらず、近接する予測ブロックを参照せず、時間マージ候補のLXの参照インデックスをデフォルト値の0に設定する。処理対象の予測ブロックに近接する予測ブロックを参照しないので、符号化ブロック内の予測ブロックを参照することも無く、同じ符号化ブロックに含まれる分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補をそれぞれ並列に導出することができる。
時間マージ候補のLXの参照インデックスのデフォルト値を0とする理由は、インター予測において参照インデックスの値が0に対応する参照ピクチャが最も選択される確率が高いからである。ただし、これに限定されず、参照インデックスのデフォルト値を0以外の値(1、2など)としても良いし、シーケンスレベル、ピクチャレベル、またはスライスレベルで符号化ストリーム内に参照インデックスのデフォルト値を示すシンタックス要素を設置し伝送できるようにして、符号化側で選択できるようにしても良い。
さらに、実施例6は近接ブロックを参照せずに、時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定するので、実施例1、2、3、4、5および後述する実施例7に比べて、導出処理を簡略化することができる。
図30は本実施の形態の実施例6の方法による図18のステップS202の時間マージ候補の参照インデックスの導出処理手順を説明するフローチャートである。
ステップS2115の処理をL0、L1それぞれにおいて行う(ステップS2112〜S2116)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2115)。
L0、L1それぞれにおいてステップS2115の処理を行い(ステップS2112〜S2116)、本参照インデックス導出処理を終了する。
実施例7
次に、本実施の形態の実施例7について説明する。図31は本実施の形態の実施例7における時間マージ候補の参照インデックスの導出処理において参照する近接ブロックを示す図である。本実施の形態の実施例7では、導出対象の予測モードを含む符号化ブロック(処理対象の符号化ブロック)の分割モード(PartMode)や導出対象の予測モードの分割インデックスPartIdxの値に関わらず、図31(a)〜(g)に示すように、処理対象の符号化ブロックの左に近接する予測ブロックAを参照し、時間マージ候補のLXの参照インデックスを予測ブロックAのLXの参照インデックスの値に設定する。参照する予測ブロックAが符号化ブロック外にあるので、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
ただし、近接する予測ブロックAがLX予測を行わない場合は時間マージ候補のLXの参照インデックスの値をデフォルト値の0とする。近接する予測ブロックAがLX予測を行わない場合に、時間マージ候補のLXの参照インデックスのデフォルト値を0とする理由は、インター予測において参照インデックスの値が0に対応する参照ピクチャが最も選択される確率が高いからである。ただし、これに限定されず、参照インデックスのデフォルト値を0以外の値(1、2など)としても良いし、シーケンスレベル、ピクチャレベル、またはスライスレベルで符号化ストリーム内に参照インデックスのデフォルト値を示すシンタックス要素を設置し伝送できるようにして、符号化側で選択できるようにしても良い。
実施例7は符号化ブロック内のそれぞれの予測ブロックの時間マージ候補の参照インデックスが共通の値に設定されるので、符号化ブロック内のそれぞれの予測ブロック毎に時間マージ候補の参照インデックスを導出する必要が無く、導出処理を簡略化することができる。
図32は本実施の形態の実施例7の方法による図18のステップS202の時間マージ候補の参照インデックスの導出処理手順を説明するフローチャートである。まず、符号化情報格納メモリ115または210から処理対象の符号化ブロックの左に近接する予測ブロックAの符号化情報を取得する(ステップS2131)。
続くステップS2133からステップS2135までの処理をL0、L1それぞれにおいて行う(ステップS2132〜S2136)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
処理対象の符号化ブロックの左に近接する予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0でない場合(ステップS2133のYES)、時間マージ候補のLXの参照インデックスrefIdxLXColを予測ブロックAのLXの参照インデックスrefIdxLX[xA][yA]の値と同じ値に設定する(ステップS2134)。ここで、xA、yAはピクチャ内での処理対象の符号化ブロックの左に近接する予測ブロックAの左上の画素の位置を示すインデックスである。
なお、本実施の形態においては、予測ブロックN(N=A,B)において、予測ブロックNが符号化または復号対象のスライス外で利用できない場合や予測ブロックNが符号化または復号順序で符号化または復号対象の予測ブロックよりも後のために符号化または復号されておらず利用できない場合や予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、予測ブロックNのL1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に0である。ここで、xN、yNはピクチャ内での予測ブロックNの左上の画素の位置を示すインデックスである。予測ブロックNの予測モードPredModeがインター予測(MODE_INTER)で、インター予測モードがL0予測(Pred_L0)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は1, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は0である。予測ブロックNのインター予測モードがL1予測(Pred_L1)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は0, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は1である。予測ブロックNのインター予測モードが双予測(Pred_BI)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に1である。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0である場合(ステップS2133のNO)、時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2135)。
L0、L1それぞれにおいてステップS2133からステップS2135までの処理を行い(ステップS2132〜S2136)、本参照インデックス導出処理を終了する。
なお、実施例7においては導出対象の予測ブロックを含む符号化ブロックの左辺に近接する予測ブロックを参照するかどうかを切り替えたが、左辺に近接する予測ブロックの代わりに上辺に近接する予測ブロックを参照するかどうかを切り替えてもよい。
実施例8
次に、本実施の形態の実施例8について説明する。図43は本実施の形態の実施例8における時間マージ候補の参照インデックスの導出処理において参照する近接ブロックを示す図である。本実施の形態の実施例8では、符号化ブロックの分割モード(PartMode)に関わらず、予測ブロックの分割インデックスPartIdxに応じて、導出対象の予測ブロックの左辺に近接する予測ブロックを参照するかどうかを切り替える。予測ブロックの分割インデックスPartIdxが0の場合は左辺に近接する予測ブロックを参照し、分割インデックスPartIdxが0以外の場合は近接する予測ブロックを参照せずデフォルト値とする。予測ブロックの分割インデックスPartIdxが0の場合はどの分割モード(PartMode)においても左辺に近接する予測ブロックは必ず符号化ブロック外となるが、予測ブロックの分割インデックスPartIdxが0以外の場合は分割モード(PartMode)よっては符号化ブロック内となる。図43(a)に示すように、導出対象の予測ブロックの左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。
処理対象の符号化ブロックを上下に並ぶ2つの予測ブロックに分割する分割モード(PartMode)が2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)、および処理対象の符号化ブロックを左右に並ぶ2つの予測ブロックに分割する分割モード(PartMode)がN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)では、図43(b)、(c)、(d)、(e)、(f)、(g)に示すように、導出対象の分割インデックスPartIdxが0の予測ブロックでは左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1の予測ブロックでは近接する予測ブロックを参照せず、時間マージ候補のLXの参照インデックスをデフォルト値の0に設定する。参照する予測ブロックA0が符号化ブロック外にあるので、分割インデックスPartIdxが0と1の2つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
ただし、近接する予測ブロックAがLX予測を行わない場合は時間マージ候補のLXの参照インデックスの値をデフォルト値の0とする。近接する予測ブロックAがLX予測を行わない場合や導出対象の予測ブロックの分割インデックスPartIdxが1の場合に、時間マージ候補のLXの参照インデックスのデフォルト値を0とする理由は、インター予測において参照インデックスの値が0に対応する参照ピクチャが最も選択される確率が高いからである。ただし、これに限定されず、参照インデックスのデフォルト値を0以外の値(1、2など)としても良いし、シーケンスレベル、ピクチャレベル、またはスライスレベルで符号化ストリーム内に参照インデックスのデフォルト値を示すシンタックス要素を設置し伝送できるようにして、符号化側で選択できるようにしても良い。
図44は本実施の形態の実施例8の方法による図18のステップS202の時間マージ候補の参照インデックスの導出処理手順を説明するフローチャートである。まず、分割インデックスPartIdxが0である場合(ステップS2104のYES)、符号化情報格納メモリ115または210から導出対象の予測ブロックの左に近接する予測ブロックAの符号化情報を取得する(ステップS2111)。
続くステップS2113からステップS2115までの処理をL0、L1それぞれにおいて行う(ステップS2112〜S2116)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0でない場合(ステップS2113のYES)、時間マージ候補のLXの参照インデックスrefIdxLXColを予測ブロックAのLXの参照インデックスrefIdxLX[xA][yA]の値と同じ値に設定する(ステップS2114)。ここで、xA、yAはピクチャ内での予測ブロックAの左上の画素の位置を示すインデックスである。
なお、本実施の形態においては、予測ブロックN(N=A,B)において、予測ブロックNが符号化または復号対象のスライス外で利用できない場合や予測ブロックNが符号化または復号順序で符号化または復号対象の予測ブロックよりも後のために符号化または復号されておらず利用できない場合や予測ブロックNの予測モードPredModeがイントラ予測(MODE_INTRA)の場合、L0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、予測ブロックNのL1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に0である。ここで、xN、yNはピクチャ内での予測ブロックNの左上の画素の位置を示すインデックスである。予測ブロックNの予測モードPredModeがインター予測(MODE_INTER)で、インター予測モードがL0予測(Pred_L0)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は1, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は0である。予測ブロックNのインター予測モードがL1予測(Pred_L1)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]は0, L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は1である。予測ブロックNのインター予測モードが双予測(Pred_BI)の場合、予測ブロックNのL0予測を利用するかどうかを示すフラグpredFlagL0[xN][yN]、L1予測を利用するかどうかを示すフラグpredFlagL1[xN][yN]は共に1である。
予測ブロックAのLX予測を行うかどうかを示すフラグpredFlagLX[xA][yA]が0である場合(ステップS2113のNO)、時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2115)。
L0、L1それぞれにおいてステップS2113からステップS2115までの処理を行い(ステップS2112〜S2116)、本参照インデックス導出処理を終了する。
一方、分割インデックスPartIdxが0でない場合(ステップS2104のNO)、続くステップS2121の処理をL0、L1それぞれにおいて行う(ステップS2118〜S2122)。なお、時間マージ候補のL0の参照インデックスを導出する際にはLXはL0に設定され、L1の参照インデックスを導出する際にはLXはL1に設定される。ただし、スライスタイプslice_typeがPスライスの場合、インター予測モードとしてL0予測(Pred_L0)だけがあり、L1予測(Pred_L1)、双予測(Pred_BI)がないので、L1に纏わる処理を省略することができる。
時間マージ候補のLXの参照インデックスrefIdxLXColをデフォルト値の0に設定する(ステップS2121)。
L0、L1それぞれにおいてステップS2121までの処理を行い(ステップS2118〜S2122)、本参照インデックス導出処理を終了する。
なお、実施例8においては導出対象の予測ブロックの左辺に近接する予測ブロックを参照するかどうかを切り替えたが、左辺に近接する予測ブロックの代わりに上辺に近接する予測ブロックを参照するかどうかを切り替えてもよい。
また、本実施の形態においては、符号化ブロックの分割モード(PartMode)がN×N分割(PART_NxN)を定義しないものとしているが、N×N分割(PART_NxN)を定義することもできる。符号化ブロックの分割モード(PartMode)がN×N分割(PART_NxN)においても、処理対象の符号化ブロックに含まれる予測ブロックの時間マージ候補の参照インデックスを導出する際には、処理対象の予測ブロックに含まれる符号化ブロックと同じ符号化ブロックに含まれる近接する予測ブロックを参照せずに導出することで、分割インデックスPartIdxが0、1、2、3の4つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
例えば、N×N分割(PART_NxN)では、近接する予測ブロックを参照せず、時間マージ候補のLXの参照インデックスをデフォルト値の0に設定する。導出対象の予測ブロックに近接する予測ブロックを参照しないので、分割インデックスPartIdxが0、1、2、3の4つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
または、近接ブロックの参照インデックスを参照して、時間マージ候補の参照インデックスを導出することもできる。図33はN×N分割(PART_NxN)の符号化ブロックの時間マージ候補の参照インデックスの導出処理において参照する近接ブロックを説明する図である。
図33(a)に示すように、導出対象の分割インデックスPartIdxが0の予測ブロックでは左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1の予測ブロックでは上に近接する予測ブロックB1を参照し、時間マージ候補のLXの参照インデックスを予測ブロックB1のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが2の予測ブロックでは左に近接する予測ブロックA2を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA2のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが3の予測ブロックでは近接する予測ブロックを参照せず、時間マージ候補のLXの参照インデックスをデフォルト値の0に設定する。処理対象の予測ブロックの左に近接する予測ブロックA0、A2、上に近接する予測ブロックB1が共に符号化ブロック外にあるので、分割インデックスPartIdxが0、1、2、3の4つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
または、図33(b)に示すように、導出対象の分割インデックスPartIdxが0の予測ブロックでは左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが2の予測ブロックでは左に近接する予測ブロックA2を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA2のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが1または3の予測ブロックでは近接する予測ブロックを参照せず、時間マージ候補のLXの参照インデックスをデフォルト値の0に設定する。処理対象の予測ブロックの左に近接する予測ブロックA0、A2が共に符号化ブロック外にあるので、分割インデックスPartIdxが0、1、2、3の4つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
または、図33(c)に示すように、処理対象の符号化ブロックの左に近接する予測ブロックAを参照し、時間マージ候補のLXの参照インデックスを予測ブロックAのLXの参照インデックスの値に設定する。処理対象の符号化ブロックの左に近接する予測ブロックAが符号化ブロック外にあるので、分割インデックスPartIdxが0、1、2、3の4つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
または、図33(d)に示すように、導出対象の分割インデックスPartIdxが0の予測ブロックでは左に近接する予測ブロックA0を参照し、時間マージ候補のLXの参照インデックスを予測ブロックA0のLXの参照インデックスの値に設定する。導出対象の分割インデックスPartIdxが0以外(PartIdxが1,2または3)の予測ブロックでは近接する予測ブロックを参照せず、時間マージ候補のLXの参照インデックスをデフォルト値の0に設定する。処理対象の予測ブロックの左に近接する予測ブロックA0符号化ブロック外にあるので、分割インデックスPartIdxが0、1、2、3の4つの予測ブロックの時間マージ候補の参照インデックスをそれぞれ並列に導出することができる。
次に、図18のステップS203の異なる時間のピクチャのインター予測情報を用いるマージ候補の導出方法について詳細に説明する。図34は図18のステップS203の時間マージ候補導出処理手順を説明するフローチャートである。
まず、スライスタイプslice_typeと前述のフラグcollocated_from_l0_flagにより、異なる時間のピクチャcolPicを導出する(ステップS3101)。
図35は図34のステップS3101の異なる時間のピクチャcolPicの導出処理手順を説明するフローチャートである。スライスタイプslice_typeがBスライスで、前述のフラグcollocated_from_l0_flagが0の場合(ステップS3201のYES、ステップS3202のYES)、RefPicList1[0]、すなわち参照リストL1の参照インデックスが0のピクチャが異なる時間のピクチャcolPicとなる(ステップS3203)。そうでない場合、すなわちスライスタイプslice_typeがBスライスで前述のフラグcollocated_from_l0_flagが1の場合(ステップS3201のYES、ステップS3202のNO)、またはスライスタイプslice_typeがPスライスの場合(ステップS3201のNO、S3204のYES)、RefPicList0[0]、すなわち参照リストL0の参照インデックスが0のピクチャが異なる時間のピクチャcolPicとなる(ステップS3205)。
次に、図34のフローチャートに戻り、異なる時間の予測ブロックcolPUを導出し、符号化情報を取得する(ステップS3102)。
図36は図34のステップS3102の異なる時間のピクチャcolPicの予測ブロックcolPUの導出処理手順を説明するフローチャートである。
まず、異なる時間のピクチャcolPic内で処理対象の予測ブロックと同一位置の右下(外側)に位置する予測ブロックを異なる時間の予測ブロックcolPUとする(ステップS3301)。この予測ブロックは図9の予測ブロックT0に相当する。
次に、異なる時間の予測ブロックcolPUの符号化情報を取得する(ステップS3302)。異なる時間の予測ブロックcolPUのPredModeが利用できないか、異なる時間の予測ブロックcolPUの予測モードPredModeがイントラ予測(MODE_INTRA)である場合(ステップS3303のYES、ステップS3304のYES)、異なる時間のピクチャcolPic内で処理対象の予測ブロックと同一位置の中央左上に位置する予測ブロックを異なる時間の予測ブロックcolPUとする(ステップS3305)。この予測ブロックは図9の予測ブロックT1に相当する。
次に、図34のフローチャートに戻り、符号化または復号対象の予測ブロックと同位置の他ピクチャの予測ブロックから導出されるL0の予測動きベクトルmvL0Colと時間マージ候補Colが有効か否かを示すフラグavailableFlagL0Colを導出するとともに(ステップS3103)、L1の予測動きベクトルmvL1Colと時間マージ候補Colが有効か否かを示すフラグavailableFlagL1Colを導出する。さらに、フラグavailableFlagL0Col またはフラグavailableFlagL1Colが1の場合に、時間マージ候補Colが有効か否かを示すフラグavailableFlagColを1に設定する。
図37は図34のステップS3103、ステップS3104の時間マージ候補のインター予測情報の導出処理手順を説明するフローチャートである。L0またはL1で、時間マージ候補の導出対象のリストをLXとし、LXを用いた予測をLX予測とする。以下、断りのない限り、この意味で用いる。時間マージ候補のL0の導出処理であるステップS3103として呼び出される際には、LXがL0となり、時間マージ候補のL1の導出処理であるステップS3104として呼び出される際には、LXがL1となる。
異なる時間の予測ブロックcolPUの予測モードPredModeがイントラ予測(MODE_INTRA)か、利用できない場合(ステップS3401のNO、ステップS3402のNO)、フラグavailableFlagLXColとフラグpredFlagLXColを共に0とし(ステップS3403)、動きベクトルmvLXColを(0,0)として(ステップS3404)、本時間マージ候補のインター予測情報の導出処理を終了する。
予測ブロックcolPUが利用できて予測モードPredModeがイントラ予測(MODE_INTRA)でない場合(ステップS3401のYES、ステップS3402のYES)、以下の手順でmvColとrefIdxColとavailableFlagColを導出する。
予測ブロックcolPUのL0予測が利用されているかどうかを示すフラグPredFlagL0[xPCol][yPCol]が0の場合(ステップS3405のYES)、予測ブロックcolPUの予測モードはPred_L1であるので、動きベクトルmvColが予測ブロックcolPUのL1の動きベクトルであるMvL1[xPCol][yPCol]と同じ値に設定され(ステップS3406)、参照インデックスrefIdxColがL1の参照インデックスRefIdxL1[xPCol][yPCol]と同じ値に設定され(ステップS3407)、リストListColがL1に設定される(ステップS3408)。ここで、xPCol、yPColは異なる時間のピクチャcolPic内での予測ブロックcolPUの左上の画素の位置を示すインデックスである。
一方、予測ブロックcolPUのL0予測フラグPredFlagL0[xPCol][yPCol]が0でない場合(図37のステップS3405のNO)、予測ブロックcolPUのL1予測フラグPredFlagL1[xPCol][yPCol]が0かどうかを判定する。予測ブロックcolPUのL1予測フラグPredFlagL1[xPCol][yPCol]が0の場合(ステップS3409のYES)、動きベクトルmvColが予測ブロックcolPUのL0の動きベクトルであるMvL0[xPCol][yPCol]と同じ値に設定され(ステップS3410)、参照インデックスrefIdxColがL0の参照インデックスRefIdxL0[xPCol][yPCol]と同じ値に設定され(ステップS3411)、リストListColがL0に設定される(ステップS3412)。
予測ブロックcolPUのL0予測フラグPredFlagL0[xPCol][yPCol]と予測ブロックcolPUのL1予測フラグPredFlagL1[xPCol][yPCol]が共に0でない場合(ステップS3405のNO、ステップS3409のNO)、予測ブロックcolPUのインター予測モードは双予測(Pred_BI)であるので、L0、L1の2つの動きベクトルから、一方を選択する(ステップS3413)。
図38は予測ブロックcolPUのインター予測モードが双予測(Pred_BI)のときの時間マージ候補のインター予測情報の導出処理手順を示すフローチャートである。
まず、すべての参照リストに登録されているすべてのピクチャのPOCが現在の符号化または復号対象ピクチャのPOCより小さいかどうかを判定し(ステップS3501)、予測ブロックcolPUのすべての参照リストであるL0及びL1に登録されているすべてのピクチャのPOCが現在の符号化または復号対象ピクチャのPOCより小さい場合で(ステップS3501のYES)、LXがL0、即ち符号化または復号対象ピクチャのL0の動きベクトルの予測ベクトル候補を導出している場合(ステップS3502のYES)、予測ブロックcolPUのL0の方のインター予測情報を選択し、LXがL1、即ち符号化または復号対象ピクチャのL1の動きベクトルの予測ベクトル候補を導出している場合(ステップS3502のNO)、予測ブロックcolPUのL1の方のインター予測情報を選択する。一方、予測ブロックcolPUのすべての参照リストL0及びL1に登録されているピクチャのPOCの少なくとも1つが現在の符号化または復号対象ピクチャのPOCより大きい場合で(ステップS3501のNO)、フラグcollocated_from_l0_flagが0の場合(ステップS3503のYES)、予測ブロックcolPUのL0の方のインター予測情報を選択し、フラグcollocated_from_l0_flagが1の場合(ステップS3503のNO)、予測ブロックcolPUのL1の方のインター予測情報を選択する。
予測ブロックcolPUのL0の方のインター予測情報を選択する場合(ステップのYES、ステップS3503のYES)、動きベクトルmvColがMvL0[xPCol][yPCol]と同じ値に設定され(ステップS3504)、参照インデックスrefIdxColがRefIdxL0[xPCol][yPCol]と同じ値に設定され(ステップS3505)、リストListColがL0に設定される(ステップS3506)。
予測ブロックcolPUのL1の方のインター予測情報を選択する場合(ステップS2502のNO、ステップS3503のNO)、動きベクトルmvColがMvL1[xPCol][yPCol]と同じ値に設定され(ステップS3507)、参照インデックスrefIdxColがRefIdxL1[xPCol][yPCol]と同じ値に設定され(ステップS3508)、リストListColがL1に設定される(ステップS3509)。
図37に戻り、予測ブロックcolPUからインター予測情報が取得できたらフラグavailableFlagLXColとフラグpredFlagLXColを共に1とする(ステップS3414)。
続いて、動きベクトルmvColをスケーリングして時間マージ候補のLXの動きベクトルmvLXColとする(ステップS3415)。この動きベクトルのスケーリング演算処理手順を図39及び図40を用いて説明する。
図39は図34のステップS3105の動きベクトルのスケーリング演算処理手順を示すフローチャートである。
異なる時間のピクチャcolPicのPOCから、予測ブロックcolPUのリストListColで参照する参照インデックスrefIdxColに対応する参照ピクチャのPOCを減算してピクチャ間距離tdを導出する(ステップS3601)。なお、異なる時間のピクチャcolPicよりも予測ブロックcolPUのリストListColで参照する参照ピクチャのPOCの方が表示順序で前の場合、ピクチャ間距離tdは正の値となり、異なる時間のピクチャcolPicよりも予測ブロックcolPUのリストListColで参照する参照ピクチャのPOCの方が表示順序で後の場合、ピクチャ間距離tdは負の値となる。
td=異なる時間のピクチャcolPicのPOC−予測ブロックcolPUのリストListColで参照する参照ピクチャのPOC
現在の符号化または復号対象ピクチャのPOCから図18のステップS202で導出された時間マージ候補のLXの参照インデックスに対応する参照ピクチャのPOCを減算してピクチャ間距離tbを導出する(ステップS3602)。なお、現在の符号化または復号対象ピクチャよりも現在の符号化または復号対象ピクチャのリストLXで参照する参照ピクチャの方が表示順序で前の場合、ピクチャ間距離tbは正の値となり、現在の符号化または復号対象ピクチャのリストLXで参照する参照ピクチャの方が表示順序で後の場合、ピクチャ間距離tbは負の値となる。
tb=現在の符号化または復号対象ピクチャのPOC−時間マージ候補のLXの参照インデックスに対応する参照ピクチャのPOC
続いて、ピクチャ間距離tdとtbを比較し(ステップS3603)、ピクチャ間距離tdとtbが等しい場合(ステップS3603のYES)、時間マージ候補のLXの動きベクトルmvLXColを動きベクトルmvColと同じ値に設定して(ステップS3604)、本スケーリング演算処理を終了する。
mvLXCol=mvCol
一方、ピクチャ間距離tdとtbが等しくない場合(ステップS3603のNO)、次式によりmvColにスケール係数tbまたはtdを乗じることでスケーリング演算処理を行い(ステップS3605)、スケーリングされた時間マージ候補のLXの動きベクトルmvLXColを得る。
mvLXCol=tb または td * mvCol
また、ステップS3605のスケーリング演算を整数精度の演算で行う場合の例を図40に示す。図40のステップS3606〜ステップS3608の処理が、図39のステップS3605の処理に相当する。
まず、図39のフローチャートと同様に、ピクチャ間距離tdとピクチャ間距離tbを導出する(ステップS3601、ステップS3602)。
続いて、ピクチャ間距離tdとtbを比較し(ステップS3603)、ピクチャ間距離tdとtbが等しい場合(ステップS3603のYES)、図39のフローチャートと同様に、時間マージ候補のLXの動きベクトルmvLXColを動きベクトルmvColと同じ値に設定して(ステップS3604)、本スケーリング演算処理を終了する。
mvLXCol=mvCol
一方、ピクチャ間距離tdとtbが等しくない場合(ステップS3603のNO)、次式により変数txを導出する(ステップS3606)。
tx = ( 16384 + Abs( td または 2 ) ) または td
続いて、次式によりスケール係数DistScaleFactorを導出する(ステップS3607)。
DistScaleFactor = ( tb * tx + 32 ) >> 6
続いて、次式により、スケーリングされた時間マージ候補のLXの動きベクトルmvLXColを得る(ステップS3608)。
mvLXCol = ClipMv( Sign( DistScaleFactor * mvCol ) * ( (Abs( DistScaleFactor * mvCol ) + 127 ) >> 8 ) )
次に、図18のステップS204のマージ候補をマージ候補リストに登録し、マージ候補リストを構築する方法について詳細に説明する。図41はマージ候補リストの構築処理手順を示すフローチャートである。本方式では、優先順位をつけて、優先順位の高いものからマージ候補リストmergeCandListにマージ候補を登録することで、マージインデックスmerge_idx[x0][y0]の符号量を削減する。優先順位の高い要素をマージ候補リストの前方に配置することで、符号量を削減する。例えば、マージ候補リストmergeCandListの要素が5個の場合、マージ候補リストのインデックス0を「0」、インデックス1を「10」、インデックス2を「110」、インデックス3を「1110」、インデックス4を「11110」とすることで、インデックス0を表す符号量が1ビットとなり、インデックス0に発生頻度が高いと考えられる要素を登録することで、符号量を削減する。
マージ候補リストmergeCandListはリスト構造を成し、マージ候補リスト内部の所在を示すマージインデックスと、インデックスに対応するマージ候補を要素として格納する記憶領域が設けられている。マージインデックスの数字は0から開始され、マージ候補リストmergeCandListの記憶領域に、マージ候補が格納される。以降の処理では、マージ候補リストmergeCandListに登録されたマージインデックスiのマージ候補となる予測ブロックは、mergeCandList[i]で表すこととし、マージ候補リストmergeCandListとは配列表記をすることで区別することとする。
まず、availableFlagAが1の場合(ステップS4101のYES)、マージ候補リストmergeCandListの先頭にマージ候補Aを登録する(ステップS4102)。
続いて、availableFlagBが1の場合(ステップS4103のYES)、マージ候補リストmergeCandListの最後にマージ候補Bを登録する(ステップS4104)。
続いて、availableFlagCが1の場合(ステップS4105のYES)、マージ候補リストmergeCandListの最後にマージ候補Cを登録する(ステップS4106)。
続いて、availableFlagDが1の場合(ステップS4107のYES)、マージ候補リストmergeCandListの最後にマージ候補Dを登録する(ステップS4108)。
続いて、availableFlagEが1の場合(ステップS4109のYES)、マージ候補リストmergeCandListの最後にマージ候補Eを登録する(ステップS4110)。
続いて、availableFlagColが1の場合(ステップS4109のYES)、マージ候補リストmergeCandListの最後にマージ候補Colを登録する(ステップS4110)。
なお、マージモードにおいて、左に近接する予測ブロックA及び上に近接する予測ブロックBは符号化または復号対象の予測ブロックと一体となる動きになることが多いので、予測ブロックA、Bのインター予測情報が取得できる場合には、マージ候補A、Bを他のマージ候補C,D,E,Colよりも優先的にマージ候補リストの前方に登録する。
図13において、動画像符号化装置のインター予測情報導出部104の符号化情報選択部136では、マージ候補リストに登録されているマージ候補の中から、マージ候補を選択し、マージインデックスおよびマージインデックスに対応するマージ候補のインター予測情報を動き補償予測部105に供給する。
マージ候補の選択においては、予測方法決定部107と同様の方法を用いることができる。それぞれのマージ候補ごとに符号化情報及び残差信号の符号量と予測画像信号と画像信号との間の符号化歪を導出し、最も少ない発生符号量と符号化歪となるマージ候補が決定される。それぞれのマージ候補毎にマージモードの符号化情報であるマージインデックスのシンタックス要素merge_idxのエントロピー符号化を行い、符号化情報の符号量を算出する。さらに、それぞれのマージ候補毎に動き補償予測部105と同様の方法で各マージ候補のインター予測情報に応じて動き補償した予測画像信号と、画像メモリ101から供給される符号化対象の画像信号との予測残差信号を符号化した予測残差信号の符号量を算出する。符号化情報、即ちマージインデックスの符号量と予測残差信号の符号量とが加算された総発生符号量を算出し評価値とする。
また、こうした予測残差信号を符号化後に、歪量評価の為に復号し、符号化により生じる元の画像信号との誤差を表す比率として符号化歪が算出される。これら総発生符号量と符号化歪とをマージ候補毎に比較することで、少ない発生符号量と符号化歪となる符号化情報が決定される。決定された符号化情報に対応するマージインデックスが、予測ブロック単位の第2のシンタックスパターンで表されるフラグmerge_idxとして符号化される。
尚、ここで算出される発生符号量は、符号化過程をシミュレートしたものであることが望ましいが、簡便に近似したり、概算することも可能である。
一方、図14において、動画像符号化装置のインター予測情報導出部205の符号化情報選択部236では、マージ候補リストに登録されているマージ候補の中から、供給されたマージインデックスに対応するマージ候補を選択し、マージ候補のインター予測情報を動き補償予測部206に供給するとともに、符号化情報格納メモリ210に格納する。
以上述べた実施の形態の動画像符号化装置が出力する動画像の符号化ストリームは、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有しており、動画像符号化装置に対応する動画像復号装置がこの特定のデータフォーマットの符号化ストリームを復号することができる。
動画像符号化装置と動画像復号装置の間で符号化ストリームをやりとりするために、有線または無線のネットワークが用いられる場合、符号化ストリームを通信路の伝送形態に適したデータ形式に変換して伝送してもよい。その場合、動画像符号化装置が出力する符号化ストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する動画像送信装置と、ネットワークから符号化データを受信して符号化ストリームに復元して動画像復号装置に供給する動画像受信装置とが設けられる。
動画像送信装置は、動画像符号化装置が出力する符号化ストリームをバッファするメモリと、符号化ストリームをパケット化するパケット処理部と、パケット化された符号化データをネットワークを介して送信する送信部とを含む。動画像受信装置は、パケット化された符号化データをネットワークを介して受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理して符号化ストリームを生成し、動画像復号装置に提供するパケット処理部とを含む。
以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現することができるのは勿論のこと、ROM(リード・オンリ・メモリ)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによっても実現することができる。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供することも、有線あるいは無線のネットワークを通してサーバから提供することも、地上波あるいは衛星ディジタル放送のデータ放送として提供することも可能である。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。