〔第1の実施形態〕
以下、図面を参照しながら本発明の実施形態について説明する。
まず、図2を用いて、本実施形態に係る画像伝送システム1の概略的構成について説明する。図2は、本実施形態に係る画像伝送システム1の構成を示す概略図である。
画像伝送システム1は、複数のレイヤ画像を符号化した符号を伝送し、伝送された符号を復号した画像を表示するシステムである。画像伝送システム1は、画像符号化装置11、ネットワーク21、画像復号装置31及び画像表示装置41を含んで構成される。
画像符号化装置11には、複数のレイヤ画像(テクスチャ画像ともいう)を示す信号Tが入力される。レイヤ画像とは、ある解像度及びある視点で視認もしくは撮影される画像である。複数のレイヤ画像を用いて3次元画像を符号化するビュースケーラブル符号化を行う場合、複数のレイヤ画像のそれぞれは、視点画像と呼ばれる。ここで、視点は撮影装置の位置又は観測点に相当する。例えば、複数の視点画像は、被写体に向かって左右の撮影装置のそれぞれが撮影した画像である。画像符号化装置11は、この信号のそれぞれを符号化して符号化ストリームTe(符号化データ)を生成する。符号化ストリームTeの詳細については、後述する。視点画像とは、ある視点において観測される2次元画像(平面画像)である。視点画像は、例えば2次元平面内に配置された画素毎の輝度値、又は色信号値で示される。以下では、1枚の視点画像又は、その視点画像を示す信号をピクチャ(picture)と呼ぶ。また、複数のレイヤ画像を用いて空間スケーラブル符号化を行う場合、その複数のレイヤ画像は、解像度の低いベースレイヤ画像と、解像度の高い拡張レイヤ画像からなる。複数のレイヤ画像を用いてSNRスケーラブル符号化を行う場合、その複数のレイヤ画像は、画質の低いベースレイヤ画像と、画質の高い拡張レイヤ画像からなる。なお、ビュースケーラブル符号化、空間スケーラブル符号化、SNRスケーラブル符号化を任意に組み合わせて行っても良い。本実施形態では、複数のレイヤ画像として、少なくともベースレイヤ画像と、ベースレイヤ画像以外の画像(拡張レイヤ画像)を含む画像の符号化および復号を扱う。複数のレイヤのうち、画像もしくは符号化パラメータにおいて参照関係(依存関係)にある2つのレイヤについて、参照される側の画像を、第1レイヤ画像、参照する側の画像を第2レイヤ画像と呼ぶ。例えば、ベースレイヤを参照して符号化される(ベースレイヤ以外の)エンハンスレイヤ画像がある場合、ベースレイヤ画像を第1レイヤ画像、エンハンスレイヤ画像を第2レイヤ画像として扱う。なお、エンハンスレイヤ画像の例としては、ベースビュー以外の視点の画像、デプス(depth)の画像などがある。
ネットワーク21は、画像符号化装置11が生成した符号化ストリームTeを画像復号装置31に伝送する。ネットワーク21は、例えば、インターネット(internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)又はこれらの組み合わせによって構成することができる。ネットワーク21は、必ずしも双方向の通信網に限らず、地上波ディジタル放送、衛星放送等の放送波を伝送する一方向又は双方向の通信網であっても良い。また、ネットワーク21は、DVD(Digital Versatile Disc)、BD(Blue-ray Disc)等の符号化ストリームTeを記録した記憶媒体で代替されても良い。
画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、それぞれ復号した複数の復号レイヤ画像Td(復号視点画像Td)を生成する。
画像表示装置41は、画像復号装置31が生成した複数の復号レイヤ画像Tdの全部又は一部を表示する。例えば、ビュースケーラブル符号化においては、全部の場合、3次元画像(立体画像)や自由視点画像が表示され、一部の場合、2次元画像が表示される。画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。また、空間スケーラブル符号化、SNRスケーラブル符号化では、画像復号装置31、画像表示装置41が高い処理能力を有する場合には、画質の高い拡張レイヤ画像を表示し、より低い処理能力しか有しない場合には、拡張レイヤほど高い処理能力、表示能力を必要としないベースレイヤ画像を表示する。
本実施形態に係る画像符号化装置11および画像復号装置31の詳細な説明に先立って、画像符号化装置11によって生成され、画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
図3は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリームTeは、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図3の(a)〜(f)は、それぞれ、シーケンスSEQを既定するシーケンスレイヤ、ピクチャPICTを規定するピクチャレイヤ、スライスSを規定するスライスレイヤ、スライスデータを規定するスライスデータレイヤ、スライスデータに含まれる符号化ツリーユニットを規定する符号化ツリーレイヤ、符号化ツリーに含まれる符号化単位(Coding Unit;CU)を規定する符号化ユニットレイヤを示す図である。
(シーケンスレイヤ) シーケンスレイヤでは、処理対象のシーケンスSEQ(以下、対象シーケンスとも称する)を復号するために画像復号装置31が参照するデータの集合が規定されている。シーケンスSEQは、図3の(a)に示すように、ビデオパラメータセットVPS(Video Parameter Set)シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。ここで#の後に示される値はレイヤIDを示す。図3では、#0と#1すなわちレイヤ0とレイヤ1の符号化データが存在する例を示すが、レイヤの種類およびレイヤの数はこれによらない。
ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複数の動画像に共通する符号化パラメータの集合および動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
(ピクチャレイヤ) ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、図3の(b)に示すように、スライスS0〜SNS−1を含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
なお、以下、スライスS0〜SNS−1のそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
(スライスレイヤ) スライスレイヤでは、処理対象のスライスS(対象スライスとも称する)を復号するために画像復号装置31が参照するデータの集合が規定されている。スライスSは、図3の(c)に示すように、スライスヘッダSH、および、スライスデータSDATAを含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、または、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるBスライスなどが挙げられる。
なお、スライスヘッダSHには、上記シーケンスレイヤに含まれる、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいても良い。
(スライスデータレイヤ) スライスデータレイヤでは、処理対象のスライスデータSDATAを復号するために画像復号装置31が参照するデータの集合が規定されている。スライスデータSDATAは、図3の(d)に示すように、符号化ツリーブロック(CTB:Coded Tree Block)(符号化ツリーユニットCTU)を含んでいる。CTBは、スライスを構成する固定サイズ(例えば64×64)のブロックであり、最大符号化単位(LCU:Largest Cording Unit)と呼ぶこともある。
(符号化ツリーレイヤ) 符号化ツリーレイヤは、図2の(e)に示すように、処理対象の符号化ツリーブロックを復号するために画像復号装置31が参照するデータの集合が規定されている。符号化ツリーユニットは、再帰的な4分木分割により分割される。再帰的な4分木分割により得られる木構造のノードのことを符号化ツリー(coding tree)と称する。4分木の中間ノードは、符号化4分木ツリー(CQT:Coded Quad Tree)であり、CTUは、最上位のCQTを含むものとして規定される。CQTは、分割フラグ(split_flag)を含み、split_flagが1の場合には、4つのCQTに分割される(4つのCQTを含む)。split_flagが0の場合には、CQTは末端ノードである符号化ユニット(CU:Coded Unit)を含む。符号化ユニットCUは、符号化処理の基本的な単位となる。
(符号化ユニットレイヤ) 符号化ユニットレイヤは、図3の(f)に示すように、処理対象の符号化ユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。具体的には、符号化ユニットは、CUヘッダCUH、予測ツリー、変換ツリー、CUヘッダCUHから構成される。CUヘッダCUHでは、符号化ユニットが、イントラ予測を用いるユニットであるか、インター予測を用いるユニットであるかなどが規定される。符号化ユニットは、予測ツリー(prediction tree;PT)および変換ツリー(transform tree;TT)のルートとなる。CUヘッダCUHは、予測ツリーと変換ツリーの間、もしくは、変換ツリーの後に含まれる。
予測ツリーは、符号化ユニットが1または複数の予測ブロックに分割され、各予測ブロックの位置とサイズとが規定される。別の表現でいえば、予測ブロックは、符号化ユニットを構成する1または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1または複数の予測ブロックを含む。
予測処理は、この予測ブロックごとに行われる。以下、予測の単位である予測ブロックのことを、予測単位(prediction unit;PU、予測ユニット)とも称する。
予測ツリーにおける分割の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。イントラ予測とは、同一ピクチャ内の予測であり、インター予測とは、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
イントラ予測の場合、分割方法は、2N×2N(符号化ユニットと同一サイズ)と、N×Nとがある。
また、インター予測の場合、分割方法は、符号化データのpart_modeにより符号化され、2N×2N(符号化ユニットと同一サイズ)、2N×N、2N×nU、2N×nD、N×2N、nL×2N、nR×2N、および、N×Nなどがある。なお、2N×nUは、2N×2Nの符号化ユニットを上から順に2N×0.5Nと2N×1.5Nの2領域に分割することを示す。2N×nDは、2N×2Nの符号化ユニットを上から順に2N×1.5Nと2N×0.5Nの2領域に分割することを示す。nL×2Nは、2N×2Nの符号化ユニットを左から順に0.5N×2Nと1.5N×2Nの2領域に分割することを示す。nR×2Nは、2N×2Nの符号化ユニットを左から順に1.5N×2Nと0.5N×1.5Nの2領域に分割することを示す。分割数は1、2、4のいずれかであるため、CUに含まれるPUは1個から4個である。これらのPUを順にPU0、PU1、PU2、PU3と表現する。
また、変換ツリーにおいては、符号化ユニットが1または複数の変換ブロックに分割され、各変換ブロックの位置とサイズとが規定される。別の表現でいえば、変換ブロックは、符号化ユニットを構成する1または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1または複数の変換ブロックを含む。
変換ツリーにおける分割には、符号化ユニットと同一のサイズの領域を変換ブロックとして割り付けるものと、上述したツリーブロックの分割と同様、再帰的な4分木分割によるものがある。
変換処理は、この変換ブロックごとに行われる。以下、変換の単位である変換ブロックのことを、変換単位(transform unit;TU)とも称する。
(予測パラメータ) 予測ユニットの予測画像は、予測ユニットに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測の予測パラメータもしくはインター予測の予測パラメータがある。以下、インター予測の予測パラメータ(インター予測パラメータ)について説明する。インター予測パラメータは、予測リスト利用フラグpredFlagL0、predFlagL1と、参照ピクチャインデックスrefIdxL0、refIdxL1と、ベクトルmvL0、mvL1から構成される。予測リスト利用フラグpredFlagL0、predFlagL1は、各々L0リスト、L1リストと呼ばれる参照ピクチャリストが用いられるか否かを示すフラグであり、値が1の場合に対応する参照ピクチャリストが用いられる。なお、本明細書中「XXであるか否かを示すフラグ」と記す場合、1をXXである場合、0をXXではない場合とし、論理否定、論理積などでは1を真、0を偽と扱う(以下同様)。但し、実際の装置や方法では真値、偽値として他の値を用いることもできる。2つの参照ピクチャリストが用いられる場合、つまり、predFlagL0=1, predFlagL1=1の場合が、双予測に対応し、1つの参照ピクチャリストを用いる場合、すなわち(predFlagL0, predFlagL1) = (1, 0)もしくは(predFlagL0, predFlagL1) = (0, 1)の場合が単予測に対応する。なお、予測リスト利用フラグの情報は、後述のインター予測フラグinter_pred_idcで表現することもできる。通常、後述の予測画像生成部、予測パラメータメモリでは、予測リスト利用フラグが用いれ、符号化データから、どの参照ピクチャリストが用いられるか否かの情報を復号する場合にはインター予測フラグinter_pred_idcが用いられる。
符号化データに含まれるインター予測パラメータを導出するためのシンタックス要素には、例えば、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXがある。
(参照ピクチャリストの一例) 次に、参照ピクチャリストの一例について説明する。参照ピクチャリストとは、復号ピクチャ管理部306のDPB3061(図9:詳細は後述)に記憶された参照ピクチャからなる列である。図4の(a)は、参照ピクチャリストの一例を示す概念図である。参照ピクチャリスト601において、左右に一列に配列された5個の長方形は、それぞれ参照ピクチャを示す。左端から右へ順に示されている符号、P1、P2、Q0、P3、P4は、それぞれの参照ピクチャを示す符号である。P1等のPとは、視点Pを示し、そしてQ0のQとは、視点Pとは異なる視点Qを示す。P及びQの添字は、ピクチャ順序番号POCを示す。refIdxLXの真下の下向きの矢印は、参照ピクチャインデックスrefIdxLXが、復号ピクチャ管理部306のDPB3061に記憶された参照ピクチャQ0を参照するインデックスであることを示す。
(参照ピクチャの例) 次に、ベクトルを導出する際に用いる参照ピクチャの例について説明する。図5は、参照ピクチャの例を示す概念図である。図5において、横軸は表示時刻を示し、縦軸は視点を示す。図5に示されている、縦2行、横3列(計6個)の長方形は、それぞれピクチャを示す。6個の長方形のうち、下行の左から2列目の長方形は復号対象のピクチャ(対象ピクチャ)を示し、残りの5個の長方形がそれぞれ参照ピクチャを示す。対象ピクチャから上向きの矢印で示される参照ピクチャQ0は対象ピクチャと同表示時刻であって視点が異なるピクチャである。対象ピクチャを基準とする変位予測においては、参照ピクチャQ0が用いられる。対象ピクチャから左向きの矢印で示される参照ピクチャP1は、対象ピクチャと同じ視点であって、過去のピクチャである。対象ピクチャから右向きの矢印で示される参照ピクチャP2は、対象ピクチャと同じ視点であって、未来のピクチャである。対象ピクチャを基準とする動き予測においては、参照ピクチャP1又はP2が用いられる。
(インター予測フラグと予測リスト利用フラグ) インター予測フラグと、予測リスト利用フラグpredFlagL0、predFlagL1の関係は以下のように相互に変換可能である。そのため、インター予測パラメータとしては、予測リスト利用フラグを用いても良いし、インター予測フラグを用いてもよい。また、以下、予測リスト利用フラグを用いた判定は、インター予測フラグに置き替えても可能である。逆に、インター予測フラグを用いた判定は、予測リスト利用フラグに置き替えても可能である。
インター予測フラグ = (predFlagL1<<1) + predFlagL0
predFlagL0 =インター予測フラグ & 1
predFlagL1 =インター予測フラグ >> 1
ここで、>>は右シフト、<<は左シフトである。
(マージ予測とAMVP予測) 予測パラメータの復号(符号化)方法には、マージ予測(merge)モードとAMVP(Adaptive Motion Vector Prediction、適応動きベクトル予測)モードがある、マージフラグmerge_flagは、これらを識別するためのフラグである。マージ予測モードでも、AMVPモードでも、既に処理済みのブロックの予測パラメータを用いて、対象PUの予測パラメータが導出される。マージ予測モードは、予測リスト利用フラグpredFlagLX(インター予測フラグinter_pred_idcinter_pred_idc)、参照ピクチャインデックスrefIdxLX、ベクトルmvLXを符号化データに含めずに、既に導出した予測パラメータをそのまま用いるモードであり、AMVPモードは、インター予測フラグinter_pred_idcinter_pred_idc、参照ピクチャインデックスrefIdxLX、ベクトルmvLXを符号化データに含めるモードである。なおベクトルmvLXは、予測ベクトルを示す予測ベクトルインデックスmvp_LX_idxと差分ベクトル(mvdLX)として符号化される。
インター予測フラグinter_pred_idcは、参照ピクチャの種類および数を示すデータであり、Pred_L0、Pred_L1、Pred_Biの何れかの値をとる。Pred_L0、Pred_L1は、各々L0リスト、L1リストと呼ばれる参照ピクチャリストに記憶された参照ピクチャが用いられることを示し、共に1枚の参照ピクチャを用いること(単予測)を示す。L0リスト、L1リストを用いた予測を各々L0予測、L1予測と呼ぶ。Pred_Biは2枚の参照ピクチャを用いること(双予測)を示し、L0リストとL1リストに記憶された参照ピクチャの2つを用いることを示す。予測ベクトルインデックスmvp_LX_idxは予測ベクトルを示すインデックスであり、参照ピクチャインデックスrefIdxLXは、参照ピクチャリストに記憶された参照ピクチャを示すインデックスである。なお、LXは、L0予測とL1予測を区別しない場合に用いられる記述方法であり、LXをL0、L1に置き換えることでL0リストに対するパラメータとL1リストに対するパラメータを区別するする。例えば、refIdxL0はL0予測に用いる参照ピクチャインデックス、refIdxL1はL1予測に用いる参照ピクチャインデックス、refIdx(refIdxLX)は、refIdxL0とrefIdxL1を区別しない場合に用いられる表記である。
マージインデックスmerge_idxは、処理が完了したブロックから導出される予測パラメータ候補(マージ候補)のうち、いずれかの予測パラメータを復号対象ブロックの予測パラメータとして用いるかを示すインデックスである。
(動きベクトルと変位ベクトル) ベクトルmvLXには、動きベクトルと変位ベクトル(disparity vector、視差ベクトル)がある。動きベクトルとは、あるレイヤのある表示時刻でのピクチャにおけるブロックの位置と、異なる表示時刻(例えば、隣接する離散時刻)における同一のレイヤのピクチャにおける対応するブロックの位置との間の位置のずれを示すベクトルである。変位ベクトルとは、あるレイヤのある表示時刻でのピクチャにおけるブロックの位置と、同一の表示時刻における異なるレイヤのピクチャにおける対応するブロックの位置との間の位置のずれを示すベクトルである。異なるレイヤのピクチャとしては、異なる視点のピクチャである場合、もしくは、異なる解像度のピクチャである場合などがある。特に、異なる視点のピクチャに対応する変位ベクトルを視差ベクトルと呼ぶ。以下の説明では、動きベクトルと変位ベクトルを区別しない場合には、単にベクトルmvLXと呼ぶ。ベクトルmvLXに関する予測ベクトル、差分ベクトルを、それぞれ予測ベクトルmvpLX、差分ベクトルmvdLXと呼ぶ。ベクトルmvLXおよび差分ベクトルmvdLXが、動きベクトルであるか、変位ベクトルであるかは、ベクトルに付随する参照ピクチャインデックスrefIdxLXを用いて判別される。
次に、本実施形態に係る画像復号装置31の構成について説明する。図6は、本実施形態に係る画像復号装置31の構成を示す概略図である。画像復号装置31は、エントロピー復号部301、予測パラメータ復号部302、復号ピクチャ管理部(参照画像記憶部、フレームメモリ)306、予測画像生成部308、逆量子化・逆DCT部311、及び加算部312、残差格納部313(残差記録部)を含んで構成される。
また、予測パラメータ復号部302は、インター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
エントロピー復号部301は、外部から入力された符号化ストリームTeに対してエントロピー復号を行って、個々の符号(シンタックス要素)を分離し復号する。分離された符号には、予測画像を生成するための予測情報および、差分画像を生成するための残差情報などがある。
エントロピー復号部301は、分離した符号の一部を予測パラメータ復号部302に出力する。分離した符号の一部とは、例えば、予測モードPredMode、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idcinter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックmvp_LX_idx、差分ベクトルmvdLX、残差予測フラグiv_res_pred_weight_idxである。どの符号を復号するか否かの制御は、予測パラメータ復号部302の指示に基づいて行われる。エントロピー復号部301は、量子化係数を逆量子化・逆DCT部311に出力する。この量子化係数は、符号化処理において、残差信号に対してDCT(Discrete Cosine Transform、離散コサイン変換)を行い量子化して得られる係数である。
インター予測パラメータ復号部303は、エントロピー復号部301から入力された符号に基づいて、復号ピクチャ管理部306の予測パラメータメモリ3067に記憶された予測パラメータを参照してインター予測パラメータを復号する。
インター予測パラメータ復号部303は、復号したインター予測パラメータを予測画像生成部308に出力し、また復号ピクチャ管理部306の予測パラメータメモリ3067に記憶する。インター予測パラメータ復号部303の詳細については後述する。
イントラ予測パラメータ復号部304は、エントロピー復号部301から入力された符号に基づいて、復号ピクチャ管理部306の予測パラメータメモリ3067に記憶された予測パラメータを参照してイントラ予測パラメータを復号する。イントラ予測パラメータとは、ピクチャブロックを1つのピクチャ内で予測する処理で用いるパラメータ、例えば、イントラ予測モードIntraPredModeである。イントラ予測パラメータ復号部304は、復号したイントラ予測パラメータを予測画像生成部308に出力し、また復号ピクチャ管理部306の予測パラメータメモリ3067に記憶する。
イントラ予測パラメータ復号部304は、輝度と色差で異なるイントラ予測モードを導出しても良い。この場合、イントラ予測パラメータ復号部304は、輝度の予測パラメータとして輝度予測モードIntraPredModeY、色差の予測パラメータとして、色差予測モードIntraPredModeCを復号する。輝度予測モードIntraPredModeYは、35モードであり、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)が対応する。色差予測モードIntraPredModeCは、プレーナ予測(0)、DC予測(1)、方向予測(2、3、4)、LMモード(5)の何れかを用いるもの。
復号ピクチャ管理部306は、加算部312が生成した参照ピクチャのブロック(参照ピクチャブロック)を、DPB3061において、復号対象のピクチャ及びブロック毎に予め定めた位置に記憶するとともに、所定のタイミングで参照ピクチャブロックをピクチャ毎に統合した復号視点画像Tdを外部に出力する。
また、復号ピクチャ管理部306は、予測パラメータを、予測パラメータメモリ3067において、復号対象のピクチャ及びブロック毎に予め定めた位置に記憶する。復号ピクチャ管理部306の詳細については、図9を用いて後に説明する。
予測画像生成部308には、エントロピー復号部301から入力された予測モードpredModeが入力され、また予測パラメータ復号部302から予測パラメータが入力される。また、予測画像生成部308は、復号ピクチャ管理部306のDPB3061から参照ピクチャを読み出す。予測画像生成部308は、予測モードpredModeが示す予測モードで、入力された予測パラメータと読み出した参照ピクチャを用いて予測ピクチャブロックP(予測画像)を生成する。
ここで、予測モードpredModeがインター予測モードを示す場合、インター予測画像生成部309は、インター予測パラメータ復号部303から入力されたインター予測パラメータと読み出した参照ピクチャを用いてインター予測により予測ピクチャブロックPを生成する。予測ピクチャブロックPは予測単位PUに対応する。PUは、上述したように予測処理を行う単位となる複数の画素からなるピクチャの一部分、つまり1度に予測処理が行われる復号対象ブロックに相当する。
インター予測画像生成部309は、予測リスト利用フラグpredFlagLXが1である参照ピクチャリスト(RPS:Reference Picture List)(L0リスト、もしくはL1リスト)に対し、参照ピクチャインデックスrefIdxLXで示される参照ピクチャから、復号対象ブロックを基準としてベクトルmvLXが示す位置にある参照ピクチャブロックを復号ピクチャ管理部306のDPB3061から読み出す。インター予測画像生成部309は、読み出した参照ピクチャブロックについて予測を行って予測ピクチャブロックPを生成する。インター予測画像生成部309は、生成した予測ピクチャブロックPを加算部312に出力する。
予測モードpredModeがイントラ予測モードを示す場合、イントラ予測画像生成部310は、イントラ予測パラメータ復号部304から入力されたイントラ予測パラメータと読み出した参照ピクチャを用いてイントラ予測を行う。具体的には、イントラ予測画像生成部310は、復号対象のピクチャであって、既に復号されたブロックのうち復号対象ブロックから予め定めた範囲にある参照ピクチャブロックを復号ピクチャ管理部306のDPB3061から読み出す。予め定めた範囲とは、復号対象ブロックがいわゆるラスタースキャンの順序で順次移動する場合、例えば、左、左上、上、右上の隣接ブロックのうちのいずれかであり、イントラ予測モードによって異なる。ラスタースキャンの順序とは、各ピクチャにおいて、上端から下端まで各行について、順次左端から右端まで移動させる順序である。
イントラ予測画像生成部310は、読み出した参照ピクチャブロックについてイントラ予測モードIntraPredModeが示す予測モードで予測を行って予測ピクチャブロックを生成する。イントラ予測画像生成部310は、生成した予測ピクチャブロックPを加算部312に出力する。
イントラ予測パラメータ復号部304において、輝度と色差で異なるイントラ予測モードを導出する場合、イントラ予測画像生成部310は、輝度予測モードIntraPredModeYに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)の何れかによって輝度の予測ピクチャブロックを生成し、色差予測モードIntraPredModeCに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2、3、4)、LMモード(5)の何れかによって色差の予測ピクチャブロックを生成する。
逆量子化・逆DCT部311は、エントロピー復号部301から入力された量子化係数を逆量子化してDCT係数を求める。逆量子化・逆DCT部311は、求めたDCT係数について逆DCT(Inverse Discrete Cosine Transform、逆離散コサイン変換)を行い、復号残差信号を算出する。逆量子化・逆DCT部311は、算出した復号残差信号を加算部312および残差格納部313に出力する。
加算部312は、インター予測画像生成部309及びイントラ予測画像生成部310から入力された予測ピクチャブロックPと逆量子化・逆DCT部311から入力された復号残差信号の信号値を画素毎に加算して、参照ピクチャブロックを生成する。加算部312は、生成した参照ピクチャブロック(すなわち復号ピクチャ)を復号ピクチャ管理部306のDPB3061に記憶する。
[インター予測パラメータ復号部の構成] 次に、インター予測パラメータ復号部303の構成について説明する。図7は、本実施形態に係るインター予測パラメータ復号部303の構成を示す概略図である。インター予測パラメータ復号部303は、インター予測パラメータ復号制御部3031、AMVP予測パラメータ導出部3032、加算部3035及びマージ予測パラメータ導出部3036を含んで構成される。
[[インター予測パラメータ復号制御部]] インター予測パラメータ復号制御部3031は、インター予測に関連する符号(シンタックス要素)の復号をエントロピー復号部301に指示し、符号化データに含まれる符号(シンタックス要素)を例えば、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idcinter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX、残差予測フラグiv_res_pred_weight_idxを抽出する。
インター予測パラメータ復号制御部3031は、まず、符号化データからマージフラグを抽出する。インター予測パラメータ復号制御部3031が、あるシンタックス要素を抽出すると表現する場合は、あるシンタックス要素の復号をエントロピー復号部301に指示し、該当のシンタックス要素を符号化データから読み出すことを意味する。ここで、マージフラグが示す値が1、すなわち、マージ予測モードを示す場合、インター予測パラメータ復号制御部3031は、マージ予測に係る予測パラメータとして、マージインデックスmerge_idxを抽出する。インター予測パラメータ復号制御部3031は、抽出したマージインデックスmerge_idxをマージ予測パラメータ導出部3036に出力する。
マージフラグmerge_flagが0、すなわち、AMVP予測モードを示す場合、インター予測パラメータ復号制御部3031は、エントロピー復号部301を用いて符号化データからAMVP予測パラメータを抽出する。AMVP予測パラメータとして、例えば、インター予測フラグinter_pred_idc、参照ピクチャインデックスrefIdxLX、ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXがある。インター予測パラメータ復号制御部3031は、抽出したインター予測フラグinter_pred_idcinter_pred_idcから導出した予測リスト利用フラグpredFlagLXと、参照ピクチャインデックスrefIdxLXをAMVP予測パラメータ導出部3032及び予測画像生成部308(図6)に出力し、また復号ピクチャ管理部306のDPB3061(図9)に記憶する。インター予測パラメータ復号制御部3031は、抽出したベクトルインデックスmvp_LX_idxをAMVP予測パラメータ導出部3032に出力する。インター予測パラメータ復号制御部3031は、抽出した差分ベクトルmvdLXを加算部3035に出力する。
[[マージ予測パラメータ導出部]] 図23は、本実施形態に係るマージ予測パラメータ導出部3036の構成を示す概略図である。マージ予測パラメータ導出部3036は、マージ候補導出部30361とマージ候補選択部30362を備える。マージ候補導出部30361は、マージ候補格納部303611と、拡張マージ候補導出部303612と基本マージ候補導出部303613を含んで構成される。
マージ候補格納部303611は、拡張マージ候補導出部303612及び基本マージ候補導出部303613から入力されたマージ候補を格納する。なお、マージ候補は、予測リスト利用フラグpredFlagLX、ベクトルmvLX、参照ピクチャインデックスrefIdxLXを含んで構成されている。マージ候補格納部303611において、格納されたマージ候補には、所定の規則に従ってインデックスが割り当てられる。例えば、拡張マージ候補導出部303612から入力されたマージ候補には、インデックスとして「0」を割り当てる。
拡張マージ候補導出部303612は、変位ベクトル取得部3036122と、レイヤ間マージ候補導出部3036121と変位マージ候補導出部3036123、図示しないBVSPマージ候補導出部3036124を含んで構成される。
変位ベクトル取得部3036122は、まず、復号対象ブロックに隣接する複数の候補ブロック(例えば、左、上、右上に隣接するブロック)から順に変位ベクトルを取得する。具体的には、変位ベクトル取得部3036122は、候補ブロックの一つを選択し、選択した候補ブロックのベクトルが変位ベクトルであるか動きベクトルであるかを、候補ブロックの参照ピクチャインデックスrefIdxLXを用いてリファレンスレイヤ判定機能(後述)を用いて判定し変位ベクトルが有る場合には、それを変位ベクトルとする。候補ブロックに変位ベクトルがない場合には、次の候補ブロックを順に走査する。隣接するブロックに変位ベクトルがない場合、変位ベクトル取得部3036122は、時間的に別の表示順の参照ピクチャに含まれるブロックの対象ブロックに対応する位置のブロックの変位ベクトルの取得を試みる。変位ベクトルが取得できなかった場合には、変位ベクトル取得部3036122は、変位ベクトルとしてゼロベクトルを設定する。変位ベクトル取得部3036122は、変位ベクトルをレイヤ間マージ候補導出部3036121及び変位マージ候補導出部に出力する。
レイヤ間マージ候補導出部3036121は、変位ベクトル取得部3036122から変位ベクトルを入力される。レイヤ間マージ候補導出部3036121は、別レイヤ(例えばベースレイヤ、ベースビュー)の復号対象ピクチャと同一POCを持つピクチャ内から、変位ベクトル取得部3036122から入力された変位ベクトルだけが示すブロックを選択し、該ブロックが有する動きベクトルである予測パラメータを予測パラメータメモリ307から読み出す。より具体的には、レイヤ間マージ候補導出部3036121が読みだす予測パラメータは、対象ブロックの中心点を起点にしたときに、起点の座標に変位ベクトルを加算した座標を含むブロックの予測パラメータである。
参照ブロックの座標(xRef、yRef)は、対象ブロックの座標が(xP、yP)、変位ベクトルが(mvDisp[0]、mvDisp[1])、対象ブロックの幅と高さがnPSW、nPSHの場合に以下の式により導出する。
xRef = Clip3( 0, PicWidthInSamplesL - 1, xP + ( ( nPSW - 1 ) >> 1 ) + ( ( mvDisp[0] + 2 ) >> 2 ) )
yRef = Clip3( 0, PicHeightInSamplesL - 1, yP + ( ( nPSH - 1 ) >> 1 ) + ( ( mvDisp[1] + 2 ) >> 2 ))
なお、レイヤ間マージ候補導出部3036121は、予測パラメータが動きベクトルか否かを、インター予測パラメータ復号制御部3031に含まれる後述するリファレンスレイヤ判定機能による判定方法において偽(変位ベクトルではない)と判定した方法により判定する。レイヤ間マージ候補導出部3036121は、読みだした予測パラメータをマージ候補としてマージ候補格納部303611に出力する。また、レイヤ間マージ候補導出部3036121は、予測パラメータを導出出来なかった際には、その旨を変位マージ候補導出部に出力する。本マージ候補は、動き予測のインターレイヤ候補(インタービュー候補)でありレイヤ間マージ候補(動き予測)とも記載する。
変位マージ候補導出部3036123は、変位ベクトル取得部3036122から変位ベクトルを入力される。変位マージ候補導出部3036123は、入力された変位ベクトルと、変位ベクトルが指す先のレイヤ画像の参照ピクチャインデックスrefIdxLX(例えば、復号対象ピクチャと同一POCを持つベースレイヤ画像のインデックス)をマージ候補としてマージ候補格納部303611に出力する。本マージ候補は、変位予測のインターレイヤ候補(インタービュー候補)でありレイヤ間マージ候補(変位予測)とも記載する。
BVSPマージ候補導出部3036124は、ブロック視点合成予測(Block View Synthesis Prediction)マージ候補を導出する。BVSPマージ候補は、別の視点画像から予測画像を生成する変位マージ候補の一種であるが、PU内をさらに小さいブロックに分割して、予測画像生成処理を行うマージ候補である。
基本マージ候補導出部303613は、空間マージ候補導出部3036131と時間マージ候補導出部3036132と結合マージ候補導出部3036133とゼロマージ候補導出部3036134を含んで構成される。
空間マージ候補導出部3036131は、所定の規則に従って、予測パラメータメモリ307が記憶している予測パラメータ(予測リスト利用フラグpredFlagLX、ベクトルmvLX、参照ピクチャインデックスrefIdxLX)を読み出し、読み出した予測パラメータをマージ候補として導出する。読み出される予測パラメータは、復号対象ブロックから予め定めた範囲内にあるブロック(例えば、復号対象ブロックの左下端、左上端、右上端にそれぞれ接するブロックの全部又は一部)のそれぞれに係る予測パラメータである。導出されたマージ候補はマージ候補格納部303611に格納される。
時間マージ候補導出部3036132は、復号対象ブロックの右下の座標を含む参照画像中のブロックの予測パラメータを予測パラメータメモリ307から読みだしマージ候補とする。参照画像の指定方法は、例えば、スライスヘッダに置いて指定された参照ピクチャインデックスrefIdxLXでも良いし、復号対象ブロックに隣接するブロックの参照ピクチャインデックスrefIdxLXのうち最小のものを用いて指定しても良い。導出されたマージ候補はマージ候補格納部303611に格納される。
結合マージ候補導出部3036133は、既に導出されマージ候補格納部303611に格納された2つの異なる導出済マージ候補のベクトルと参照ピクチャインデックスを、それぞれL0、L1のベクトルとして組み合わせることで結合マージ候補を導出する。導出されたマージ候補はマージ候補格納部303611に格納される。
ゼロマージ候補導出部3036134は、参照ピクチャインデックスrefIdxLXが0であり、ベクトルmvLXのX成分、Y成分が共に0であるマージ候補を導出する。導出されたマージ候補はマージ候補格納部303611に格納される。
図8は、マージ候補導出部30361が導出するマージ候補の例を示すものである。2つのマージ候補が同じ予測パラメータである場合に順番を詰める処理を除くと、マージインデックス順に、レイヤ間マージ候補、空間マージ候補(左下)、空間マージ候補(右上)、空間マージ候補(右上)、変位マージ候補、BVSPマージ候補、空間マージ候補(左下)、空間マージ候補(左上)、時間マージ候補の順になる。また、それ以降に、結合マージ候補、ゼロマージ候補があるが、図8では省略している。
マージ候補選択部30362は、マージ候補格納部303611に格納されているマージ候補のうち、インター予測パラメータ復号制御部3031から入力されたマージインデックスmerge_idxに対応するインデックスが割り当てられたマージ候補を、対象PUのインター予測パラメータとして選択する。マージ候補選択部30362は選択したマージ候補を復号ピクチャ管理部306の予測パラメータメモリ3067(図9)に記憶するとともに、予測画像生成部308(図6)に出力する。
[[[変位ベクトル取得部について]]] 以下において、変位ベクトル取得部3036122の詳細について説明する。変位ベクトル取得部3036122は、対象PUに隣接するブロックが変位ベクトルを持つ場合には、その変位ベクトルを復号ピクチャ管理部306の予測パラメータメモリ3067から抽出し、当該予測パラメータメモリ3067を参照し、対象PUに隣接するブロックの予測フラグpredFlagLX、参照ピクチャインデックスrefIdxLXとベクトルmvLXを読み出す。変位ベクトル取得部3036122は、参照レイヤ判定機能を有している。変位ベクトル取得部3036122は、対象PUに隣接するブロックの予測パラメータを順に読み出し、参照レイヤ判定機能によって、隣接ブロックの参照ピクチャインデックスから隣接ブロックが変位ベクトルを備えるか否かを判定する。隣接ブロックが変位ベクトルを備える場合、変位ベクトル取得部3036122は、その変位ベクトルを出力する。隣接ブロックの予測パラメータに変位ベクトルが無い場合にはゼロベクトルを変位ベクトルとして出力する。
(参照レイヤ判定機能) 変位ベクトル取得部3036122が有する参照レイヤ判定機能は、入力された参照ピクチャインデックスrefIdxLXに基づいて、参照ピクチャインデックスrefIdxLXが指す参照ピクチャと、対象ピクチャの関係を示すリファレンスレイヤ情報reference_layer_infoを定めるというものである。リファレンスレイヤ情報reference_layer_infoは、参照ピクチャへのベクトルmvLXが変位ベクトルであるか動きベクトルであるかを示す情報である。
対象ピクチャのレイヤと参照ピクチャのレイヤが同じレイヤである場合の予測を、同一レイヤ予測と呼び、この場合に得られるベクトルは動きベクトルである。対象ピクチャのレイヤと、参照ピクチャのレイヤが異なるレイヤである場合の予測をレイヤ間予測と呼び、この場合に得られるベクトルは変位ベクトルである。
[[AMVP予測パラメータ導出部]] AMVP予測パラメータ導出部3032は、参照ピクチャインデックスrefIdxに基づいて復号ピクチャ管理部306の予測パラメータメモリ3067(図9)に記憶されているベクトル(動きベクトル又は変位ベクトル)をベクトル候補mvpLXとして読み出す。AMVP予測パラメータ導出部3032が読み出すベクトルは、復号対象ブロックから予め定めた範囲内にあるブロック(例えば、復号対象ブロックの左下端、左上端、右上端にそれぞれ接するブロックの全部又は一部)のそれぞれに係るベクトルである。
AMVP予測パラメータ導出部3032は、読み出したベクトル候補のうち、インター予測パラメータ復号制御部3031から入力されたベクトルインデックスmvp_LX_idxが示すベクトル候補を予測ベクトルmvpLXとして選択する。AMVP予測パラメータ導出部3032は、選択した予測ベクトルmvpLXを加算部3035に出力する。
図4の(b)は、ベクトル候補の一例を示す概念図である。図4の(b)に示す予測ベクトルリスト602は、AMVP予測パラメータ導出部3032において導出される複数のベクトル候補からなるリストである。予測ベクトルリスト602において、左右に一列に配列された5個の長方形は、それぞれ予測ベクトルを示す領域を示す。左端から2番目のmvp_LX_idxの真下の下向きの矢印とその下のmvpLXは、ベクトルインデックスmvp_LX_idxが、復号ピクチャ管理部306の予測パラメータメモリ3067においてベクトルmvpLXを参照するインデックスであることを示す。
候補ベクトルは、復号処理が完了したブロックであって、復号対象ブロックから予め定めた範囲のブロック(例えば、隣接ブロック)を参照し、参照したブロックに係るベクトルに基づいて生成される。なお、隣接ブロックには、対象ブロックに空間的に隣接するブロック、例えば、左ブロック、上ブロックの他、対象ブロックに時間的に隣接するブロック、例えば、対象ブロックと同じ位置で、表示時刻が異なるブロックから得られたブロックを含む。
加算部3035は、予測ベクトル選択部3034から入力された予測ベクトルmvpLXとインター予測パラメータ復号制御部から入力された差分ベクトルmvdLXを加算してベクトルmvLXを算出する。加算部3035は、算出したベクトルmvLXを予測画像生成部308(図6)に出力する。
[復号ピクチャ管理部] 図9を用いて、復号ピクチャ管理部306の詳細構成を説明する。図9は復号ピクチャ管理部306の構成を例示した機能ブロック図である。
図9に示すように、復号ピクチャ管理部306は、DPB3061、RPS導出部3062、参照ピクチャ制御部3063、参照レイヤピクチャ制御部3064、RPL導出部3065、出力制御部3066、予測パラメータメモリ3067を備える。
[[DPB3061]] DPB3061は、復号ピクチャバッファ(Decoded Picture Buffer)とも呼ばれ、加算部312から出力される対象レイヤの各ピクチャの復号ピクチャを記録する。DPBには、対象レイヤの各ピクチャに対応する復号ピクチャが出力順(POC: Picture Order Count)に関連付けて記録されている。加えて、DPBの各ピクチャに対しては、参照マークおよび出力マークを設定できる。
参照マークは、DPB上のピクチャが対象ピクチャ以降の復号処理における予測画像生成処理(例えば、インター予測やレイヤ間画像予測)への利用可否を示す情報である。参照マークは、具体的には、「短期参照使用」(「used for short-term reference」)、「長期参照使用」(「used for long-term reference」)、「参照不使用」(「not usedfor reference」)のいずれかの値を取る。
なお、参照マークの取り得る値を上記とするがそれに限らない。例えば、「レイヤ間参照使用」(「used for inter-layer reference」)の値に参照マークを設定できてもよい。また、「短期参照使用」と「長期参照使用」の区別をせず、両者の和集合を「参照使用」(「used for reference」)と定義してもよい。
出力マークは、DPB上のピクチャを外部へ出力する必要性の有無を示す情報である。出力マークは、具体的には、「出力要」(「needed for output」)、「出力不要」(「not needed for output」)のいずれかの値を取る。なお、参照マークや出力マークは復号処理や符号化処理の特定のタイミングで明示的に設定されていなくてもよく、その場合、参照マークまたは出力マークは「未定義」と判定する。
[[RPS導出部3062]] RPS導出部3062は、入力されるシンタックス値に基づいて対象ピクチャの復号処理に用いるRPS(Reference Picture Set;参照ピクチャセット)を導出してベース参照ピクチャ制御部144、参照ピクチャ制御部143、およびRPL導出部3065に出力する。
RPSは、概略的には、対象ピクチャの復号処理、または、復号順で対象ピクチャに後続するピクチャの復号処理において利用されうる参照ピクチャの集合を表わす。
(サブRPSの定義) RPSは、参照ピクチャの性質に基づいて複数のサブRPSに分割できる。本実施形態では、RPSは以下の5種類のサブRPSから構成される。
(1)前方短期RPS:対象ピクチャを基準とする表示順の相対位置により指定される参照ピクチャであって、対象ピクチャと同一レイヤに属し、かつ、表示順が対象ピクチャより前の参照ピクチャを含むサブRPS。
(2)後方短期RPS:対象ピクチャを基準とする表示順の相対位置により指定される参照ピクチャであって、対象ピクチャと同一レイヤに属し、かつ、表示順が対象ピクチャより後の参照ピクチャを含むサブRPS。
(3)長期RPS:表示順の絶対位置により指定される参照ピクチャであって、対象ピクチャと同一レイヤに属する参照ピクチャを含むサブRPS。
(4)レイヤ間画素RPS:対象ピクチャと異なるレイヤに属し、かつ、レイヤ間予測で画素値が参照される参照ピクチャを含むサブRPS。
(5)レイヤ間動き限定RPS:対象ピクチャと異なるレイヤに属し、かつ、レイヤ間予測で動き情報が参照されて画素値が参照されない参照ピクチャを含むサブRPS。
なお、以下では、前方短期RPSと後方短期RPSの和集合を短期RPSとも称する。つまり、短期RPSは、対象ピクチャを基準とする表示順の相対位置により指定される参照ピクチャであって、対象ピクチャと同一レイヤに属するピクチャを含む。また、レイヤ間画素RPSとレイヤ間動き限定RPSの和集合をレイヤ間RPSとも称する。つまり、レイヤ間RPSは、対象ピクチャと異なるレイヤに属する参照ピクチャ(レイヤ間参照ピクチャ)を含む。
(サブRPSの導出) RPS導出部3062におけるRPS導出はサブRPS毎に実行される。以下では、前述のサブRPS毎に関連シンタックスを説明するとともに、当該シンタックスからサブRPSを導出する処理を説明する。
(短期RPS) 短期RPS(前方短期RPSと後方短期RPS)に係るシンタックスに、SPSに含まれる短期参照ピクチャセット情報であるSPS短期RPS情報と、スライスヘッダに含まれる短期参照ピクチャセット情報であるSH短期RPS情報がある。
(SPS短期RPS情報) SPS短期RPS情報は、SPSを参照する各ピクチャにおいて短期SPSとして選択され得る複数の短期RPS候補の情報を含む。なお、短期RPSは、対象ピクチャに対する相対的な位置(例えば対象ピクチャとのPOC差分)により指定される参照ピクチャ(短期参照ピクチャ)となり得るピクチャの集合である。
SPS短期RPS情報を、図16を参照して説明する。図16は、SPS復号時に利用されるSPSシンタックス表の一部を例示している。図16の(A)の部分がSPS短期RPS情報に相当する。SPS短期RPS情報には、SPSに含まれる短期RPS数(num_short_term_ref_pic_sets)、および、各短期RPSの定義(short_term_ref_pic_set(i))が含まれる。
短期RPS情報について、図17の(a)を参照して説明する。図17の(a)は、SPS復号時、および、スライスヘッダ復号時に利用される短期RPSのシンタックス表を例示している。
短期RPS情報には、対象ピクチャより表示順が早い短期参照ピクチャ数(num_negative_pics)、および、対象ピクチャより表示順が遅い短期参照ピクチャ数(num_positive_pics)が含まれる。なお、以下では、対象ピクチャより表示順が早い短期参照ピクチャを前方短期参照ピクチャ、対象ピクチャより表示順が遅い短期参照ピクチャを後方短期参照ピクチャと呼ぶ。
また、短期RPS情報には、各前方短期参照ピクチャに対して、対象ピクチャに対するPOC差分の絶対値(delta_poc_s0_minus1[i])、および、対象ピクチャの参照ピクチャとして使用される可能性の有無(used_by_curr_pic_s0_flag[i])が含まれる。加えて、各後方短期参照ピクチャに対して、対象ピクチャに対するPOC差分の絶対値(delta_poc_s1_minus1[i])、および、対象ピクチャの参照ピクチャとして使用される可能性の有無(used_by_curr_pic_s1_flag[i])が含まれる。
(SH短期RPS情報) SH短期RPS情報は、スライスヘッダを参照するピクチャから利用され得る単一の短期RPSの情報を含む。
SH短期RPS情報の復号について、図17の(b)を参照して説明する。図17の(b)は、スライスヘッダ復号時に利用されるスライスヘッダシンタックス表の一部を例示している。図17の(b)の(A)の部分がSH短期RPS情報に相当する。SH短期RPS情報は、短期RPSをSPSで復号済みの短期RPS候補の中から選択するか、スライスヘッダに明示的に含めるかを示すフラグ(short_term_ref_pic_set_sps_flag)を含む。短期RPS候補から選択する場合、何れか一つの短期RPS候補を選択する識別子(short_term_ref_pic_set_idx)が含まれる。スライスヘッダに明示的に含める場合は、前述の図17の(a)を参照して説明したシンタックス表(short_term_ref_pic_set(idx))に相当する情報が、SPS短期RPS情報に含まれる。
(短期RPS導出処理) 短期RPS情報から短期RPS、すなわち、前方短期RPSと後方短期RPSが導出される。また、後続参照短期RPSも導出される。
・前方短期RPS:SPS短期RPS情報またはSH短期RPS情報により指定される現ピクチャ参照可能ピクチャであって、表示順が対象ピクチャより早いピクチャを含む。
・後方短期RPS:SPS短期RPS情報またはSH短期RPS情報により指定される現ピクチャ参照可能ピクチャであって、表示順が対象ピクチャより遅いピクチャを含む。
・後続参照短期RPS:現ピクチャでは参照されないが、復号順で現ピクチャに後続するピクチャにおいて参照されえるピクチャを含む。
前方短期RPS(ListStCurrBefore)、後方短期RPS(ListStCurrAfter)、後続参照短期RPS(ListStFoll)を以下の手順で導出する。なお、前方短期RPS、後方短期RPS、および、後続参照短期RPSは、以下の処理の開始前に空に設定されている。
(S101)SPS短期RPS情報、および、SH短期RPS情報に基づいて、対象ピクチャの復号に用いる短期RPS情報を特定する。具体的には、SH短期RPS情報に含まれるshort_term_ref_pic_set_spsの値が0である場合、SH短期RPS情報に含まれるスライスヘッダで明示的に伝送された短期RPSを選択する。それ以外(short_term_ref_pic_set_spsの値が1の場合、SH短期RPS情報に含まれるshort_term_ref_pic_set_idxが示す短期RPSを、SPS短期RPS情報に含まれる複数の短期RPS候補から選択する。
(S102)選択された短期RPSに含まれる参照ピクチャ各々のPOCを導出する。参照ピクチャのPOCは、参照ピクチャが前方短期RPSに属する場合、対象ピクチャのPOCから「delta_poc_s0_minus1[i]+1」の値を減算して導出する。一方、参照ピクチャが後方短期RPSに属する場合、対象ピクチャのPOCに「delta_poc_s1_minus1[i]+1」の値を加算して導出する。
(S103)短期RPSに含まれる前方参照ピクチャを伝送された順に確認し、関連付けられているused_by_curr_pic_s0_flag[i]の値が1である場合、当該前方参照ピクチャをListStCurrBeforeに追加する。それ以外(used_by_curr_pic_s0_flag[i]の値が0)の場合、当該前方参照ピクチャをListStFollに追加する。
(S104)短期RPSに含まれる後方参照ピクチャを伝送された順に確認し、関連付けられているused_by_curr_pic_s1_flag[i]の値が1である場合、当該後方参照ピクチャをListStCurrAfterに追加する。それ以外(used_by_curr_pic_s1_flag[i]の値が0)の場合、当該後方参照ピクチャをListStFollに追加する。
(長期RPS) 長期RPSに係るシンタックスに、SPSに含まれる長期参照ピクチャ情報であるSPS長期RPS情報と、スライスヘッダに含まれる長期参照ピクチャ情報であるSH長期RPS情報がある。
(SPS長期RPS情報) SPS長期RPS情報は、SPSを参照する各ピクチャから利用され得る複数の長期参照ピクチャの情報を含む。なお、長期参照ピクチャとは、シーケンス内の絶対的な位置(例えばPOC)により指定される参照ピクチャである。
SPS長期RPS情報の復号について、図16を再び参照して説明する。図16の(B)の部分がSPS長期RPS情報に相当する。SPS長期RPS情報には、SPSでの長期参照ピクチャ伝送有無を示すフラグ(long_term_ref_pics_present_flag)、SPSで伝送される長期参照ピクチャ数(num_long_term_ref_pics_sps)、および、各長期参照ピクチャの情報が含まれる。長期参照ピクチャの情報には、参照ピクチャのPOC(lt_ref_pic_poc_lsb_sps[i])、および、長期参照ピクチャが対象ピクチャにおいて参照される可能性の有無(used_by_curr_pic_lt_sps_flag[i])が含まれる。
なお、上記参照ピクチャのPOCは、参照ピクチャに関連付けられたPOCの値自体であってもよいし、POCのLSB(Least Significant Bit)、すなわち、POCを既定の2の冪乗の数で割った余りの値を用いてもよい。
(SH長期RPS情報) SH長期RPS情報は、スライスヘッダを参照するピクチャから利用され得る長期参照ピクチャの情報を含む。
SH長期RPS情報の復号について、図17の(b)を再び参照して説明する。図17の(b)の(B)の部分がSH長期RPS情報に相当する。SH長期RPS情報は、長期参照ピクチャを利用することがフラグ(long_term_ref_pic_present_flag)で示されている場合にスライスヘッダに含まれる。SPS長期RPS情報が1以上の長期参照ピクチャを含む場合(num_long_term_ref_pics_sps>0)、SPSで復号済の長期参照ピクチャの中で対象ピクチャで参照され得る参照ピクチャの数(num_long_term_sps)がSH長期RPS情報に含まれる。また、スライスヘッダで明示的に伝送される長期参照ピクチャ数(num_long_term_pics)がSH長期RPS情報に含まれる。加えて、上記num_long_term_spsの数の長期参照ピクチャをSPS長期RPS情報に含まれる長期参照ピクチャから選択する情報(lt_idx_sps[i])がSH長期RPS情報に含まれる。さらに、スライスヘッダに明示的に含める長期参照ピクチャの情報として、上記num_long_term_picsの数だけ、参照ピクチャのPOC(poc_lsb_lt [i])、および、対象ピクチャの参照ピクチャとして使用される可能性の有無(used_by_curr_pic_lt_flag[i])が含まれる。
(長期RPS導出処理) 長期RPS情報から長期RPSが導出される。また、後続参照長期RPSも導出される。
・長期RPS:SPS長期RPS情報またはSH長期RPS情報により指定される現ピクチャ参照可能ピクチャを含む。
・後続参照長期RPS:現ピクチャでは参照されないが、復号順で現ピクチャに後続するピクチャにおいて参照されえる参照ピクチャを含む。
長期RPS(ListLtCurr)、後続参照長期RPS(ListLtFoll)を以下の手順で導出する。なお、長期RPS、および、後続参照長期RPSは、以下の処理の開始前に空に設定されている。(S201) SPS長期RPS情報、および、SH長期RP情報に基づいて、対象ピクチャの復号に用いる長期参照ピクチャを特定する。具体的には、num_long_term_spsの数の参照ピクチャをSPS長期RPS情報に含まれる参照ピクチャの中から選択して、長期RPSに追加すする。選択される参照ピクチャは、lt_idx_sps[i]の示す参照ピクチャである。
(S202)続いて、num_long_term_picsの数のSH長期RPS情報に含まれる参照ピクチャを順に長期RPSに追加する。
(S203)長期RPSに含まれる参照ピクチャ各々のPOCを導出する。長期参照ピクチャのPOCは、関連付けて復号されたpoc_lst_lt[i]、または、lt_ref_pic_poc_lsb_sps[i]の値から直接導出される。
(S204)長期RPSに含まれる参照ピクチャを順に確認し、関連付けられているused_by_curr_pic_lt_flag[i]、または、used_by_curr_pic_lt_sps_flag[i]の値が1である場合、当該長期参照ピクチャをListLtCurrに追加する。それ以外(used_by_curr_pic_lt_flag[i]、または、used_by_curr_pic_lt_sps_flag[i]の値が0)の場合、当該長期参照ピクチャを後続参照長期RPS(ListLtFoll)に追加する。
(レイヤ間RPS) レイヤ間画素RPSとレイヤ間動き限定RPSに係るシンタックスに、IL-RPS情報(レイヤ間RPS情報、レイヤ間参照ピクチャセット情報)がある。
(IL-RPS情報) IL-RPS情報は、スライスヘッダを含むピクチャからレイヤ間予測で参照され得るレイヤ間参照ピクチャの情報を含む。
IL-RPS情報について、図18の(a)と図18の(b)を参照して説明する。
図18の(a)はVPSに含まれるVPS拡張(vps_extension)の復号時に参照されるシンタックス表の一部であって、IL-RPS情報に相当する部分である。図18の(a)に示すように、VPSには、IL-RPS情報に含まれるシンタックスであるmax_one_active_ref_layer_flag、direct_dep_type_len_minus2、direct_dependency_type[i][j]が含まれる。
シンタックスmax_one_active_ref_layer_flagは、任意レイヤの任意ピクチャの復号時に参照されるレイヤの最大値が1以下であるかを示すフラグである。最大値が1以下の場合に当該フラグの値に1、それ以外(最大値が2以上)の場合に当該フラグの値に0が設定される。
シンタックスdirect_dep_type_len_minus2は、シンタックスdirect_dependency_type[i][j]のビット数を表わす値である。direct_dependency_type[i][j]のビット数は(direct_dep_type_len_minus2+2)となる。
シンタックスdirect_dependency_type[i][j]は、“i”で示されるレイヤから“j”で示されるレイヤを参照する際に使用可能なレイヤ間予測の種類を示す値である。以降の説明では、direct_dependency_type[i][j]のことを、対象レイヤ(レイヤi)から参照レイヤ(レイヤj)参照時の依存タイプ、とも称する。また、レイヤiとレイヤjを省略して、依存タイプ(direct_dependency_type)とも称する。
レイヤ間予測の種類にレイヤ間画像予測とレイヤ間動き予測がある場合の依存タイプと各レイヤ間予測の使用可否の関係を図19の(a)に示す。依存タイプが「0」の場合、画素依存であり、かつ、動き依存である。依存タイプが「1」の場合、画素依存であり、かつ、動き依存ではない。依存タイプが「2」の場合、動き依存であり、かつ、画素依存ではない。
ここで、依存タイプが画素依存を示す場合には、対象レイヤiは、参照レイヤjの画素を予測に用いることができる。例えば、レイヤ間画像予測に用いることができる。依存タイプが動き依存を示す場合には、対象レイヤiは、参照レイヤjの動き情報(動きベクトルおよび参照ピクチャインデックス)を予測に用いることができる。例えば、レイヤ間動き予測に用いることができる。レイヤ間画像予測は、参照レイヤの復号画像の画素値を用いて対象ピクチャの予測画像を生成する処理である。また、レイヤ間動き予測は、参照レイヤの動き情報(動きベクトル、参照ピクチャインデックス、インター予測タイプ)を直接または間接的に用いて対象ピクチャの予測画像を生成する処理である。
したがって、依存タイプが「0」の場合は、参照レイヤの復号画素(復号画像の画素値)と動き情報のいずれも対象ピクチャの復号処理で利用される可能性があることを意味する。依存タイプが「1」の場合は、参照レイヤの復号画素は利用される可能性があるが、動き情報は利用される可能性がないことを意味する。依存タイプが「2」の場合は、参照レイヤの動き情報は利用される可能性があるが、復号画素は利用される可能性がないことを意味する。
依存タイプが参照レイヤの復号画素を参照することを示す場合(上記の定義でいえば、依存タイプが「0」または「1」)の場合、依存タイプが画素依存を示すと表現できる。一方、依存タイプが参照レイヤの復号画素を参照しないことを示す場合(上記の定義でいえば、依存タイプが「2」)の場合、依存タイプが画素非依存を示すと表現できる。
同様に、依存タイプが参照レイヤの動き情報を参照することを示す場合(上記の定義でいえば、依存タイプが「0」または「2」)の場合、依存タイプが動き依存を示すと表現できる。一方、依存タイプが参照レイヤの復号画素を参照しないことを示す場合(上記の定義でいえば、依存タイプが「2」)の場合、依存タイプが動き非依存を示すと表現できる。
例えば、対象レイヤiが参照レイヤjの復号画素を用いるか否か(画素依存)を示す画素依存フラグSampleEnableFlag[i][j]、対象レイヤiが参照レイヤjの動き情報を用いるか否か(動き依存)を示す動き依存フラグMotionEnableFlag[i][j]は、以下の式において導出することができる。
SampleEnableFlag[i][j] = (3 - direct_dependency_type[i][j]) & 2) >> 1
MotionEnableFlag[i][j] = (3 - direct_dependency_type[i][j]) & 1)
なお、依存タイプの値の意味は必ずしも上記に限らない。例えば、依存タイプが「0」の場合に画素依存かつ動き非依存を示し、依存タイプが「1」の場合に動き依存かつ画素非依存を示し、依存タイプが「2」の場合に画素依存かつ動き依存を示していてもよい。
この例では、上記、画素依存フラグSampleEnableFlag[i][j]、動き依存フラグMotionEnableFlag[i][j]は以下の式から導出される。
SampleEnableFlag[i][j] = (direct_dependency_type[i][j] + 1) & 1)
MotionEnableFlag[i][j] = (direct_dependency_type[i][j] + 1) & 2) >> 1
また、対象レイヤが、参照レイヤの復号画素および動き情報以外を参照することを示すために、依存タイプによって、画素依存および動き依存以外の依存の種類を示しても良い。例えば、依存の種類には、ブロック分割情報、変換係数情報(変換係数の有無など)、ループフィルタ情報などが可能である。この場合も、画素依存フラグ、動き依存フラグは、上述の式などにより、導出することが可能であり、追加の依存があるか否かを示すフラグ(例えば、XXX依存フラグXXXEnableFlag、XXXは、ブロック分割情報、変換係数情報、ループフィルタ情報など)は以下の式により導出することができる。
XXXEnableFlag[i][j] = (direct_dependency_type[i][j] + 1) & 4) >> 2
図18の(b)はスライスヘッダ復号時に参照されるシンタックス表の一部であって、IL-RPS情報に相当する部分である。
IL-RPS情報は、レイヤ間予測有効フラグ(inter_layer_pred_enabled_flag)を含む。さらに、レイヤ間予測有効フラグが1であり(レイヤ間予測が有効であり)、かつ、対象ピクチャから参照可能な参照レイヤ数(NumDirectRefLayers[nuh_layer_id])が1より大きい場合、レイヤ間参照ピクチャ数を表すシンタックス(num_inter_layr_ref_pics_minus1)がIL-RPS情報に含まれる。アクティブレイヤ間参照ピクチャ数(NumActiveRefLayerPics)は“num_inter_layer_ref_pics_minus1 + 1”の値に設定される。アクティブレイヤ間参照ピクチャ数は、対象ピクチャにおいてレイヤ間予測により参照可能なレイヤ間参照ピクチャ数に相当する。加えて、各レイヤ間参照ピクチャの属するレイヤを示すレイヤ識別子(inter_layer_pred_layer_idc[i])がIL-RPS情報に含まれる。
なお、IL-RPS情報に含まれる上記の各シンタックスは、自明である場合は省略されてもよい。例えば、1つのピクチャから参照可能なレイヤ間参照ピクチャ数が1枚に制限されている場合、レイヤ間参照ピクチャ数に係るシンタックスは不要である。
(レイヤ間RPS導出処理) IL-RPS情報からレイヤ間RPS、すなわちレイヤ間画素RPSとレイヤ間動き限定RPSが導出される。
導出処理の説明に先立って、本実施形態のRPS導出部3062により導出されるレイヤ間画素RPSとレイヤ間動き限定RPSと依存タイプの関係について図19の(b)を用いて説明する。図19の(b)はレイヤ間RPSに含まれるサブRPS(レイヤ間画素RPSとレイヤ間動き限定RPS)と依存タイプの関係を例示する図である。
図19の(b)に示すように、レイヤ間RPSはレイヤ間画素RPSとレイヤ間動き限定RPSの2つのサブRPSを含む。以下、レイヤ識別子がx、依存タイプがyであるレイヤ間参照ピクチャを「LID=x,DT=y」と表記する。図19の(b)の例では、レイヤ間RPSは3枚のレイヤ間参照ピクチャ(「LID=0,DT=0」、「LID=1,DT=1」、「LID=3,DT=0」)を含む。レイヤ間動き限定RPSは2枚のレイヤ間参照ピクチャ(「LID=2,DT=2」、「LID=4,DT=2」)を含む。
すなわち、レイヤ間画素RPSは依存タイプが「0」の参照ピクチャと依存タイプが「1」のレイヤ間参照ピクチャを含む。一方、レイヤ間動き限定RPSは依存タイプが「2」のレイヤ間参照ピクチャを含む。換言すると、レイヤ間画素RPSは、復号画素が参照される可能性のあるレイヤ間参照ピクチャを含む。一方、レイヤ間動き限定RPSは、復号画素が参照される可能性のあるレイヤ間参照ピクチャを含まず、動き情報が参照される可能性のあるレイヤ間参照ピクチャを含む。
レイヤ間画素RPS(IL-RPS0)、レイヤ間動き限定RPS(IL-RPS1)の導出手順を図20を用いて説明する。図20は、レイヤ間RPSに含まれるサブRPS(レイヤ間画素RPSとレイヤ間動き限定RPS)の導出処理を表わすフロー図である。
(S301)レイヤ間画素RPSを表わすリストIL-RPS0、および、レイヤ間動き限定RPSを表わすリストIL-RPS1をそれぞれ空に設定する。
(S302)変数iを「0」に設定する。S303に進む。
(S303)i番目のアクティブレイヤ間参照ピクチャの依存タイプが「0」または「1」の場合(YESの場合)、S304に進む。それ以外の場合(NOの場合)、S305に進む。
(S304)i番目のアクティブレイヤ間参照ピクチャをIL-RPS0(レイヤ間画素RPS)の末尾に追加して、S307に進む。
(S305)i番目のアクティブレイヤ間参照ピクチャの依存タイプが「2」の場合(YESの場合)、S306に進む。それ以外の場合(NOの場合)、S307に進む。
(S306)i番目のアクティブレイヤ間参照ピクチャをIL-RPS1(レイヤ間動き限定RPS)の末尾に追加して、S307に進む。
(S307)iの値がアクティブレイヤ間参照ピクチャ数(NumActiveRefLayerPics)より小さい場合(YESの場合)、S308に進む。それ以外の場合(NOの場合)、処理を終了する。
(S308)変数iの値を1加算して、S303に進む。
以上の処理により、図19の(b)を用いて説明した性質を持つレイヤ間画素RPSとレイヤ間動き限定RPSをIL-RPS情報に基づいて導出できる。
なお、S303とS305の判定は、より一般的には次のように表現できる。
(S303r1)i番目のアクティブレイヤ間参照ピクチャの依存タイプが、レイヤ間参照ピクチャの復号画素が参照される可能性のあることを示す場合(i番目のアクティブレイヤ間参照ピクチャに対応する参照ピクチャのSampleEnableFlagが1の場合)、S304に進む。それ以外の場合、S305に進む。
(S305r1)i番目のアクティブレイヤ間参照ピクチャの依存タイプが、レイヤ間参照ピクチャの動き情報が参照される可能性のあることを示す場合(i番目のアクティブレイヤ間参照ピクチャに対応する参照ピクチャのSampleEnableFlagが0かつMotionEnableFlagが1の場合)、S306に進む。それ以外の場合、S307に進む。
上記の図20を用いて説明したレイヤ間画素RPSとレイヤ間動き限定RPSの導出方法はあくまで一例である。レイヤ間画素RPSとレイヤ間動き限定RPSが特定の性質、すなわち、レイヤ間画素RPSは復号画素が参照される可能性のあるレイヤ間参照ピクチャを含み、また、レイヤ間動き限定RPSは復号画素が参照される可能性のあるレイヤ間参照ピクチャを含まず、動き情報が参照される可能性のあるレイヤ間参照ピクチャを含む、という性質を満たす限りにおいては、異なる方法で導出しても構わない。なお、上記では、レイヤ間画素RPSとレイヤ間動き限定RPSのサブRPSを導出したが、レイヤ間画素RPSとレイヤ間画素非依存RPSのサブRPSを導出しても良い。この場合、S303とS305の判定を、各々、以下の判定S303r2とS305r2に置き換える。
(S303r2)i番目のアクティブレイヤ間参照ピクチャの依存タイプが、レイヤ間参照ピクチャの復号画素が参照される可能性のあることを示す場合(i番目のアクティブレイヤ間参照ピクチャに対応する参照ピクチャのSampleEnableFlagが1の場合)、S304に進む。それ以外の場合、S305に進む。
(S305r2)i番目のアクティブレイヤ間参照ピクチャの依存タイプが、レイヤ間参照ピクチャの復号画素が参照されることを示さない場合(i番目のアクティブレイヤ間参照ピクチャに対応する参照ピクチャのSampleEnableFlagが0の場合)、S306に進む。それ以外の場合、S307に進む。なお、依存タイプの種類が、画素依存と動き依存の2つのみの場合は、レイヤ間動き限定RPSとレイヤ間画素非依存RPSは等しくなる。
[[参照ピクチャ制御部3063]] 参照ピクチャ制御部3063は、入力されるRPSに基づいて、DPB3061を更新する。概略的には、参照ピクチャ制御部3063は、入力されたRPSにおいて 対象ピクチャ(現ピクチャ)のインター予測で参照可能と示されているピクチャの参照マークを「参照使用」(「短期参照使用」または「長期参照使用」)に設定する。加えて、DPBに記録されている対象レイヤの復号ピクチャであって、前記の処理で「参照使用」とマークされないピクチャを「参照不使用」に設定する。なお、DPB上のレイヤ間参照ピクチャの参照マークは参照ピクチャ制御部3063では変更しない。言い換えると、ベース復号ピクチャに由来するDPB上のピクチャの参照マークの変更は参照ピクチャ制御部3063では行わず、後述の参照レイヤピクチャ制御部3064で行う。
[[参照レイヤピクチャ制御部3064]] 参照レイヤピクチャ制御部3064は、入力される参照レイヤの復号ピクチャとRPSに基づいて、DPB3061を更新する。概略的には、参照レイヤピクチャ制御部3064は、入力されたRPSにおいて 対象ピクチャ(現ピクチャ)のレイヤ間インター予測で参照可能と示されているピクチャに対応する参照レイヤの復号ピクチャをDPBに記録する。加えて、DPB上で当該ピクチャの参照マークを「参照使用」(「短期参照使用」または「長期参照使用」に設定する。加えて、DPB上で当該ピクチャの出力マークを「出力不要」に設定する。なお、参照レイヤの復号ピクチャを記録する際に、必要に応じてスケーリングやフィルタリングを適用した後に前記ピクチャバッファに記録してもよい。特に、参照レイヤと対象レイヤの出力ピクチャの解像度が異なる場合(空間スケーラビリティの場合)、参照レイヤの復号ピクチャを、対象レイヤの出力ピクチャの解像度に合わせてスケーリングする必要がある。
[[RPL導出部3065]] RPL導出部3065は、入力RPS、および、入力シンタックス値に含まれるRPL情報に基づいて対象ピクチャの対象スライスのインター予測またはレイヤ間予測で利用する参照ピクチャリストを導出して出力する。
RPL情報は、参照ピクチャリストRPLを構築するためにSPSまたはスライスヘッダより復号されるシンタックス値である。RPL情報は、SPSリスト修正情報、および、SHリスト修正情報から構成される。
SPSリスト修正情報はSPSに含まれる情報であり、参照ピクチャリスト修正の制約に係る情報である。SPSリスト修正情報について、図16を再び参照して説明する。図16の(C)の部分がSPSリスト修正情報に相当する。SPSリスト修正情報には、ピクチャに含まれる前スライスで参照ピクチャリストが共通か否かを示すフラグ(restricted_ref_pic_lists_flag)、および、スライスヘッダ内にリスト並べ替えに関する情報が存在するか否かを示すフラグ(lists_modification_present_flag)が含まれる。
SHリスト修正情報はスライスヘッダに含まれる情報であり、対象ピクチャに適用される参照ピクチャリストの長さ(参照リスト長)の更新情報、および、参照ピクチャリストの並べ替え情報(参照リスト並べ替え情報)が含まれる。SHリスト修正情報について、図21の(a)を参照して説明する。図21の(a)はスライスヘッダ復号時に利用されるスライスヘッダシンタックス表の一部を例示している。図21の(a)の(C)の部分がSHリスト修正情報に相当する。
参照リスト長更新情報として、リスト長の更新有無を示すフラグ(num_ref_idx_active_override_flag)が含まれる。加えて、L0参照リストの変更後の参照リスト長を表す情報(num_ref_idx_l0_active_minus1)、および、L1参照リストの変更後の参照リスト長を表す情報(num_ref_idx_l1_active_minus1)が含まれる。
参照リスト並べ替え情報としてスライスヘッダに含まれる情報について、図21の(b)を参照して説明する。図21の(b)はスライスヘッダ復号時に利用される参照リスト並べ替え情報のシンタックス表を例示している。
参照リスト並べ替え情報には、L0参照リスト並べ替え有無フラグ(ref_pic_list_modification_flag_l0)が含まれる。前記フラグの値が1(L0参照リストの並べ替えが有る場合)、かつ、NumPocTotalCurrが2より大きい場合、L0参照リスト並べ替え順序(list_entry_l0[i])が参照リスト並べ替え情報に含まれる。ここで、NumPocTotalCurrは、現ピクチャにおいて利用可能な参照ピクチャの数を表す変数である。したがって、L0参照リストの並べ替えが有る場合であって、かつ、現ピクチャにおいて利用可能な参照ピクチャ数が2より大きい場合にのみ、L0参照リスト並べ替え順序がスライスヘッダに含まれる。
同様に、参照ピクチャがBスライスである場合、つまり、対象ピクチャにおいてL1参照リストが利用可能である場合、L1参照リスト並べ替え有無フラグ(ref_pic_list_modification_flag_l1)が参照リスト並べ替え情報に含まれる。前記フラグの値が1、かつ、NumPocTotalCurrが2より大きい場合、L1参照リスト並べ替え順序(list_entry_l1[i])が参照リスト並べ替え情報に含まれる。言い換えると、L1参照リストの並べ替えが有る場合であって、かつ、現ピクチャにおいて利用可能な参照ピクチャ数が2より大きい場合にのみ、L1参照リスト並べ替え順序がスライスヘッダに含まれる。
(RPL導出処理) 参照ピクチャリスト導出処理(RPL導出処理)の詳細を説明する。参照ピクチャリスト導出部は、参照ピクチャセットRPSと、RPL修正情報に基づいて、対象ピクチャの復号に用いる参照ピクチャリストRPLを生成する。
参照ピクチャリストにはL0参照リストとL1参照リストの2つのリストがある。各参照ピクチャリスト導出の説明に先立って、導出処理の過程で生成される暫定L0参照リストと暫定L1参照リストの特徴を図22を用いて説明しておく。図22は、RPL導出部3065におけるL0参照リストとL1参照リスト導出の中間過程で生成される暫定L0参照リストと暫定L1参照リストの概略を示す図である。
図22(a)に示すように、暫定L0参照リストは、リストの先頭から順に(優先度の高い順に)前方短期RPS(図中でStBef)、レイヤ間画素RPS(図中でILSample)、後方短期RPS(図中でStAft)、長期RPS(図中でLt)、レイヤ間動き限定RPS(図中でILMotion)の順にサブRPSを含む。
図22(b)に示すように、暫定L1参照リストは、リストの先頭から順に(優先度の高い順に)後方短期RPS(図中でStAft)、前方短期RPS(図中でStBef)、長期RPS(図中でLt)、レイヤ間画素RPS(図中でILSample)、レイヤ間動き限定RPS(図中でILMotion)の順にサブRPSを含む。
つまり、RPL導出部3065にて生成される暫定参照リスト(暫定参照L0参照リストおよび暫定L1参照リスト)は、レイヤ間画素RPSを、レイヤ間動き限定RPSに較べて、よりリストの先頭に近い位置に含んでいる。換言すると、暫定参照リストは、レイヤ間画素RPSを、レイヤ間動き限定RPSに較べてより高い優先度に対応する位置に含んでいる。
続いて、L0参照リストとL1参照リストの導出手順を説明する。L0参照リストは、以下のS401〜S409に示す手順で構築される。
(S401)暫定L0参照リストを生成して、空のリストに初期化する。
(S402)暫定L0参照リストに対し、前方短期RPSに含まれる参照ピクチャを順に追加する。
(S403)暫定L0参照リストに対し、レイヤ間画素RPSに含まれる参照ピクチャを順に追加する。
(S404)暫定L0参照リストに対し、後方短期RPSに含まれる参照ピクチャを順に追加する。
(S405)暫定L0参照リストに対し、長期RPSに含まれる参照ピクチャを順に追加する。
(S406)暫定L0参照リストに対し、レイヤ間動き限定RPSに含まれる参照ピクチャを順に追加する。
(S407)参照ピクチャリストが修正される場合(RPL修正情報に含まれるlists_modification_present_flagの値が1の場合)、以下のS408に進む。それ以外の場合(lists_modification_present_flagの値が0の場合)、S409に進む。
(S408)参照リスト並べ替え順序list_entry_l0[i]の値に基づいて、暫定L0参照リストの要素を並べ換えて、L0参照リストとする。参照ピクチャインデックスrIdxに対応するL0参照リストの要素RefPicList0[rIdx]は、次式により導出される。ここで、RefListTemp0[i]は、暫定L0参照リストのi番目の要素を表す。
RefPicList0[ rIdx ] = RefPicListTemp0[ list_entry_l0[ rIdx ] ]
上記の式によれば、参照リスト並べ替え順序list_entry_l0[i]において、参照ピクチャインデックスrIdxの示す位置に記録されている値を参照し、暫定L0参照リストにおいて前記値の位置に記録されている参照ピクチャを、L0参照リストのrIdxの位置の参照ピクチャとして格納する。
(S409)暫定L0参照リストをL0参照リストとする。
次にL1参照リストの構築手順を説明する。L1参照リストの構築は、以下のS501〜S509に記載の手順で実行される。
(S501)暫定L1参照リストを生成して、空のリストに初期化する。
(S502)暫定L1参照リストに対し、後方短期RPSに含まれる参照ピクチャを順に追加する。
(S503)暫定L1参照リストに対し、前方短期RPSに含まれる参照ピクチャを順に追加する。
(S504)暫定L1参照リストに対し、長期RPSに含まれる参照ピクチャを順に追加する。
(S505)暫定L1参照リストに対し、レイヤ間画素RPSに含まれる参照ピクチャを順に追加する。
(S506)暫定L1参照リストに対し、レイヤ間動き限定RPSに含まれる参照ピクチャを順に追加する。
(S507)参照ピクチャリストが修正される場合(RPL修正情報に含まれるlists_modification_present_flagの値が1の場合)、以下のS508に進む。それ以外の場合(lists_modification_present_flagの値が0の場合)、S509に進む。
(S508)参照リスト並べ替え順序list_entry_l1 [i]の値に基づいて、暫定L1参照リストの要素を並べ換えて、L1参照リストとする。参照ピクチャインデックスrIdxに対応するL1参照リストの要素RefPicList1[rIdx]は、次式により導出される。ここで、RefListTemp1[i]は、暫定L1参照リストのi番目の要素を表す。
RefPicList1[ rIdx ] = RefPicListTemp1[ list_entry_l1[ rIdx ] ]
上記の式によれば、参照リスト並べ替え順序list_entry_l1[i]において、参照ピクチャインデックスrIdxの示す位置に記録されている値を参照し、暫定L1参照リストにおいて前記値の位置に記録されている参照ピクチャを、L1参照リストのrIdxの位置の参照ピクチャとして格納する。
(S509)暫定L1参照リストをL1参照リストとする。
上記の参照ピクチャリスト導出手順によれば、参照ピクチャリスト(参照リストL0と参照リストL1)が、対応する暫定参照リスト(暫定参照リストL0と暫定参照リストL1)をRPL修正情報に基づいて選択および並べ替えることにより生成される。その際、暫定参照リストは、レイヤ間画素RPSを、レイヤ間動き限定RPSに較べてより高い優先度に対応する位置に含んでいる。言い換えると、暫定参照リストは、レイヤ間画素RPSを、レイヤ間動き限定RPSに較べてよりリストの先頭に近い位置に含んでいる。
RPL修正情報が並べ替えを行わないことを示す場合、レイヤ間画素RPSに含まれるレイヤ間参照ピクチャが、レイヤ間動き限定RPSに含まれるレイヤ間参照ピクチャ較べて参照ピクチャリストの先頭に近い位置(より小さい参照ピクチャインデックスに対応する位置)に関連付けられる。したがって、レイヤ間画素RPSに含まれるレイヤ間参照ピクチャを、レイヤ間動き限定RPSに含まれるレイヤ間参照ピクチャ較べてより小さい値の参照ピクチャインデックスで指定できる。レイヤ間画素RPSに含まれるレイヤ間参照ピクチャは、レイヤ間画素予測に使われる可能性のあるレイヤ間参照ピクチャである。一方、レイヤ間動き限定RPSに含まれるレイヤ間参照ピクチャは、レイヤ間画素予測に使われる可能性はなく、レイヤ間動き予測に使われる可能性のあるレイヤ間参照ピクチャである。一般に、レイヤ間画像予測に用いる参照ピクチャを指定するための参照ピクチャインデックスの方が、レイヤ間動き予測に用いる参照ピクチャを指定するための参照ピクチャインデックスに較べてより多数含まれている。例えば、前者は予測単位毎に含まれるのに対し、後者はスライス毎に含まれる。したがって、レイヤ間画素RPSに含まれるレイヤ間参照ピクチャを、レイヤ間動き限定RPSに含まれるレイヤ間参照ピクチャに較べて小さい参照ピクチャインデックスを割り当てて、より少ない符号量で指定できるようにすることで、符号化データ全体の符号量を低減できる。
RPL修正情報が並べ変えを行うことを示す場合、参照リスト並べ替え情報(list_entry_l0、list_entry_l1)により暫定参照リスト中の位置を指定することで、暫定参照リストを並べ替えて参照リストを生成する。この場合、参照ピクチャリストの先頭に並べ替えられる可能性の高い参照ピクチャを、より小さい値の参照リスト並べ替え情報で指定できるようにすることで、RPL修正情報の符号量を削減できる。暫定参照リストでは、レイヤ間画素RPSに含まれるレイヤ間参照ピクチャが、参照ピクチャリストの先頭に並べ替えられる可能性のより低いレイヤ間動き限定RPSに含まれるレイヤ間参照ピクチャに較べて、暫定参照リストの先頭に近い位置にあるため、より小さい値の参照リスト並べ替え情報で指定できる。したがって、上記手順で導出した暫定参照リストを用いることで、RPL修正情報の符号量を低減できる。
加えて、上記の暫定参照リストは、動き限定RPSを暫定参照リストの末尾に含んでいる。また、上記の暫定参照リストは、動き限定RPSを短期RPSよりもリストの後方に近い位置に含んでいる。動き限定参照リストに含まれるレイヤ間参照ピクチャは、同一レイヤ内のインター予測に係るサブRPSである短期RPSや長期RPSに含まれる参照ピクチャよりも選択頻度が低いため、上記のように暫定参照リストを構成することで、参照ピクチャの選択に係る情報をより少ない符号量で復号できる。
なお、レイヤ間画素RPSとレイヤ間動き限定RPSのサブRPSの代わりに、レイヤ間画素RPSとレイヤ間画素非依存RPSのサブRPSを導出する場合には、上記、参照ピクチャリスト導出処理(RPL導出処理)において、レイヤ間動き限定RPSを、レイヤ間画素非依存RPSに読み替えて処理する。より具体的には、S406とS506の処理を以下の処理に置き換える。
(S406r2)暫定L0参照リストに対し、レイヤ間画素非依存RPSに含まれる参照ピクチャを順に追加する。
(S506r2)暫定L1参照リストに対し、レイヤ間画素非依存RPSに含まれる参照ピクチャを順に追加する。
これにより、暫定参照リストは、レイヤ間画素RPSを、レイヤ間画素非依存RPSに較べてより高い優先度に対応する位置に含んでいる。言い換えると、暫定参照リストは、レイヤ間画素RPSを、レイヤ間画素非依存RPSに較べてよりリストの先頭に近い位置に含んでいる。また、上記の暫定参照リストは、画素非依存限定RPSを暫定参照リストの末尾に含んでいる。また、上記の暫定参照リストは、画素非依存RPSを短期RPSよりもリストの後方に近い位置に含んでいる。
上述のように、レイヤ間画像予測に用いる参照ピクチャを指定するための参照ピクチャインデックスは予測単位毎に含まれるため、一般の場合においても、レイヤ間画像予測以外の予測(例えば、動き情報依存の場合のレイヤ間動き予測)の場合に、参照ピクチャを指定するための参照ピクチャインデックスよりも、多数含まれると考えられる。従って、レイヤ間画素RPSに含まれるレイヤ間参照ピクチャを、レイヤ間画素非依存RPSに含まれるレイヤ間参照ピクチャに較べて小さい参照ピクチャインデックスを割り当てて、より少ない符号量で指定できるようにすることで、符号化データ全体の符号量を低減できる。
[[出力制御部3066]] 出力制御部3066は、概略的には、所定のタイミングでDPB3061のピクチャを外部に出力するとともに出力マークを更新する。具体的には、出力制御部3066によるピクチャ出力処理は次の手順で実行される。
まず、DPB上のピクチャであって、出力マークが「出力要」であるピクチャのうちPOCが最小であるピクチャを出力する。次に、出力されたピクチャの出力マークを「出力不要」に設定する。最後に、DPB上のピクチャの中から、参照マークが「参照不使用」であり、かつ、出力マークが「出力不要」であるピクチャを選択して、当該ピクチャをDPBから削除する。
[[予測パラメータメモリ3067]] 予測パラメータメモリ3067には、インター予測パラメータ復号部303が復号したインター予測パラメータ、イントラ予測パラメータ復号部304が復号したイントラ予測パラメータ及びエントロピー復号部301が分離した予測モードpredModeが記憶される。予測パラメータメモリ3067に記憶されるインター予測パラメータには、例えば、予測リスト利用フラグpredFlagLX(インター予測フラグinter_pred_idcinter_pred_idc)、参照ピクチャインデックスrefIdxLX、ベクトルmvLXがある。
[インター予測画像生成部309] 図10は、本実施形態に係るインター予測画像生成部309の構成を示す概略図である。インター予測画像生成部309は、動き変位補償部3091、残差予測部3092、照度補償部3093、重み予測部3094、参照画像判定部3095を含んで構成される。
動き変位補償部3091は、インター予測パラメータ復号部303から入力された、予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXに基づいて、復号ピクチャ管理部306のDPB3061から、参照ピクチャインデックスrefIdxLXで指定された参照ピクチャの対象ブロックの位置を起点として、ベクトルmvLXだけずれた位置にあるブロックを読み出すことによって動き変位補償画像を生成する。ここで、ベクトルmvLXが整数ベクトルでない場合には、動き補償フィルタ(もしくは変位補償フィルタ)と呼ばれる小数位置の画素を生成するためのフィルタを施して、動き変位補償画像を生成する。一般に、ベクトルmvLXが動きベクトルの場合、上記処理を動き補償と呼び、変位ベクトルの場合は変位補償と呼ぶ。ここでは総称して動き変位補償と表現する。以下、L0予測の動き変位補償画像をpredSamplesL0、L1予測の動き変位補償画像をpredSamplesL1と呼ぶ。両者を区別しない場合predSamplesLXと呼ぶ。以下、動き変位補償部3091で得られた動き変位補償画像predSamplesLXに、さらに残差予測および照度補償が行われる例を説明するが、これらの出力画像もまた、動き変位補償画像predSamplesLXと呼ぶ。なお、以下の残差予測および照度補償において、入力画像と出力画像を区別する場合には、入力画像をpredSamplesLX、出力画像をpredSamplesLX´と表現する。
参照画像判定部3095は、残差予測を行うために用いられる、参照レイヤ(参照ビュー)における参照ピクチャ(復号画像)(refIvRefPic)(以下、説明の便宜のため“参照レイヤ参照ピクチャrefIvRefPic”にて参照する)が利用可能か否かを判定する。参照画像判定部3095は、参照レイヤ参照ピクチャrefIvRefPicが利用可能な場合、参照レイヤ参照ピクチャ利用フラグrefIvRefPicAvailable(refIvRefPicAvailable2)に1を設定する。一方、参照画像判定部3095は、参照レイヤ参照ピクチャrefIvRefPicが利用不可能な場合、参照レイヤ参照ピクチャ利用フラグrefIvRefPicAvailable(refIvRefPicAvailable2)に0を設定する。参照画像判定部3095は、このようにして設定した参照レイヤ参照ピクチャ利用フラグrefIvRefPicAvailable(refIvRefPicAvailable2)を残差予測部3092に出力する。
参照画像判定部3095は、参照ピクチャの利用可否を以下のとおり判定してもよい。なお、以下では、対象レイヤにおける参照ピクチャをARP参照ピクチャarpRefPicと称する。ARP参照ピクチャarpRefPicは、上記対象ピクチャのピクチャ順序と異なるピクチャ順序を有する。また、参照ピクチャリストRefPicListX(X=0,1)のインデックスarpRefIdxLXで参照されるピクチャ(RefPicListX[arpRefIdxLX ])がARP参照ピクチャarpRefPicであるものとする。また、ビュー識別子を示すインデックスをViewIdx、対象ブロックの座標を(xP、yP)における参照レイヤ(ビュー)のビュー識別子をrefViewIdx[xP][yP]と記述する。また、PicOrderCnt(X)は、ピクチャXのピクチャ順序番号POCを示す。インデックスarpRefIdxLXは、0を設定しても良いし、後述する第4の実施形態のオプションY5に示す方法を用いても良い。
(オプション1):参照ピクチャがRPSに存在するか否かを判定する
以下の(1−1)および(1−2)を満たす参照ピクチャPicが存在する場合、参照レイヤ参照ピクチャrefIvRefPicに参照ピクチャPicを設定し、参照レイヤ参照ピクチャ利用フラグrefIvRefPicAvailableに1を設定する。そうでなければ、参照レイヤ参照ピクチャ利用フラグrefIvRefPicAvailableに0を設定する。
(1−1)PicOrderCnt(Pic)が、PicOrderCnt(arpRefPic)であり、かつ、PicのViewIdxが refViewIdx[xP][yP]となる。
(1−2)上記(1−1)の条件を満たす参照ピクチャPicが、対象ピクチャと同じPOCであり、かつ、ViewIdxが refViewIdx[xP][yP]である参照レイヤ上のピクチャのRPSに存在する。
RPSは、あるピクチャに含まれる複数のスライス間で不変であり、スライスタイプがIスライスの場合にも存在することから、RPSによる判定は適当である。
(オプション2):参照ピクチャがRPLに存在するか否かを判定する
上記(1−1)および下記(2−2)を満たす参照ピクチャPicが存在する場合、参照レイヤ参照ピクチャrefIvRefPicとして参照ピクチャPicを採用し、参照レイヤ参照ピクチャ利用フラグrefIvRefPicAvailableに1を設定する。そうでなければ、参照レイヤ参照ピクチャ利用フラグrefIvRefPicAvailableに0を設定する。
(2−2)上記(1−1)の条件を満たす参照ピクチャPicが、対象ピクチャと同じPOCであり、かつ、ViewIdxが refViewIdx[xP][yP]である、参照レイヤ上の、スライスタイプ(slice_type)がIスライスでないピクチャの参照レイヤリストRPL(RefPicListX)に存在する。
RPLは多くの場合、簡単に導出することができる。なお、RPLの長さ、および/または、内容は、スライス毎に異なるため、以上に説明したように、判定には第1番目のスライスのRefPicListX[]を用いることができる。しかしながら、これに限られず、対象ピクチャに含まれるスライスのうち、所定番目のスライスのRefPicListX[]を、対象ピクチャに含まれるスライス間で用いるように構成することもできる。例えば、最後のスライスを用いることも可能である。上記判定において、参照ピクチャリストに存在するとは、参照ピクチャリストの特定の順番の要素に存在するのではなく、順序によらず存在すれば良い。また、参照ピクチャリストとしてL0リストRefPicList0[]とL1リストRefPicList1[]が有る場合には、何れかのリストの要素として存在すれば良い。
(オプション3a):参照ピクチャがDPBに存在するか否かを判定する
上記(1−1)および下記(3−1)を満たす参照ピクチャPicが存在する場合、参照レイヤ参照ピクチャrefIvRefPicとして参照ピクチャPicを採用し、参照レイヤ参照ピクチャ利用フラグrefIvRefPicAvailableに1を設定する。そうでなければ、参照レイヤ参照ピクチャ利用フラグrefIvRefPicAvailableに0を設定する。
(3−1)上記(1−1)の条件を満たす参照ピクチャPicが、対象ピクチャと同じPOCであり、かつ、ViewIdxが refViewIdx[xP][yP]である、デコードピクチャバッファ(DPB)に存在する。
DPB3061は、利用可能なピクチャを記憶しているため、以上のようにDPBを判定に用いてもよい。
(オプション3b):参照ピクチャがDPBに存在し、さらに、参照使用(used for reference)にマークされているか否かを判定する
上記(1−1)および以下の(3b−2)を満たす参照ピクチャPicが存在する場合、参照レイヤ参照ピクチャrefIvRefPicとして参照ピクチャPicを採用し、参照レイヤ参照レイヤ参照ピクチャ利用フラグrefIvRefPicAvailableに1を設定する。そうでなければ、参照レイヤ参照レイヤ参照ピクチャ利用フラグrefIvRefPicAvailableに0を設定する。
(3b−2)上記(1−1)の条件を満たす参照ピクチャPicが、対象ピクチャと同じPOCであり、かつ、ViewIdxが refViewIdx[xP][yP]である、かつ、参照使用(used forreference)とマークされているピクチャが、デコードピクチャバッファ(DPB)に存在する。
DPBの動作はデコーダ依存であるため、DPBにおけるピクチャの記憶状態が信頼できない場合がある。具体的には、DPBは出力必要(need for output)とマークされておらず、参照使用とマークされているピクチャを破棄するが、出力するタイミングは、デコーダ依存である場合があるため、あるデコーダではピクチャが破棄されているが、他のデコーダではピクチャが破棄されていないということがおきうる。この場合、(ARPに利用される)ある参照ピクチャがDPBに存在するか否かの判定がデコーダにより異なる可能性がある。参照使用のマークは、明示的に復号されるRPSに応じて設定されるため、デコーダ間で異なることがない。このため、以上に示したように、参照ピクチャの参照マークが「参照使用」であるか否かを判定することが好ましい。
なお、上記オプション1からオプション3bにおいて、(1−1)の設定の代わりに、以下の(1−1b)を用いても良い。
(1−1b)PicOrderCnt(Pic)が、PicOrderCnt(arpRefPic)であり、かつ、PicのViewIdxが refViewIdx[xP][yP]、かつ、PicのDepthFlagが0である。
(1−1b)によれば、参照ピクチャが、デプスピクチャである場合(DepthFlagが1である場合)に、目的とする参照ピクチャPicであるとして設定することがない。ARPは、テクスチャピクチャ(DepthFlag=0)を参照ピクチャとして使用されることで機能し、デプスピクチャ(DepthFlag=1)を参照ピクチャとして使用する場合には機能しない(残差予測により適当な予測画像が生成できない)ことから、上記、(1−1b)の判定は、残差予測の効果を生じさせる効果を奏する。つまり、RPS(オプション1の場合)、RPL(オプション2の場合)、DPB(オプション3a、オプション3b)の場合で、それらから参照ピクチャPicを設定する場合に、誤ってデプスピクチャを設定して残差予測の効果が得られない課題を防ぐ効果を奏する。
残差予測部3092は、残差予測実施フラグresPredFlagが1の場合に、入力された動き変位補償画像predSamplesLXに対して、残差予測(ARP:Advanced Residual Prediction)を行う。残差予測実施フラグresPredFlagが0の場合には、入力された動き変位補償画像predSamplesLXをそのまま出力する。
残差予測は、予測画像生成の対象とする対象レイヤ(第2のレイヤ画像)とは異なる参照レイヤ(第1のレイヤ画像)の残差を、対象レイヤの参照ピクチャから予測した画像(動き補償画像)である動き変位補償画像predSamplesLXに加えることにより行われる。これを、第1の残差予測と呼ぶ。また、残差予測は、予測画像生成の対象とする対象レイヤ(第2のレイヤ画像)と参照レイヤ(第1のレイヤ画像)間の対象ピクチャとは異なる時刻(POC)における残差を、参照レイヤの参照ピクチャから予測した画像(変位補償画像)である動き変位補償画像predSamplesLXに加えることにより行うこともできる。これを第2の残差予測と呼ぶ。
第1の残差予測では、参照レイヤと同様の残差が対象レイヤにも生じると仮定して、既に導出された参照レイヤの対象ピクチャと異なる時刻(POC)のピクチャrefIvRefPicと、参照レイヤの対象ピクチャと同じ時刻(POC)のピクチャcurrIvRefPic間の残差を対象レイヤの対象ピクチャと異なる時刻(POC)のピクチャ(例えばarpRefPic)からの動き補償予測における残差の推定値として用いる。
第2の残差予測では、既に導出された対象ピクチャと異なる時刻(POC)のピクチャにおける参照レイヤのピクチャrefIvRefPicと、対象ピクチャのピクチャ間arpRefPicの残差を、対象ピクチャと同じ時刻(POC)における、参照レイヤのピクチャcurrIvRefPicからの変位補償予測における残差の推定値として用いる。
以下の実施形態では、第1の残差予測と第2の残差予測の両方を用いるが、簡略化のために第1の残差予測と第2の残差予測の一方のみを用いる構成でも構わない。
図1は残差予測部3092の構成を示すブロック図である。残差予測部3092は、残差予測実施フラグ導出部30921と、参照画像取得部30922と、残差合成部30923から構成される。
残差予測実施フラグ導出部30921は、(1)残差予測フラグiv_res_pred_weight_idxが0ではなく、かつ、(2)参照ピクチャ利用フラグが、“1”である場合に、残差予測実施フラグresPredFlagに残差予測を実行することを示す1を設定する。一方、残差予測フラグiv_res_pred_weight_idxが0である、または、参照ピクチャ利用フラグが、“1”でない場合(視差補償である場合)に、残差予測実施フラグresPredFlagに0を設定する。
すなわち、残差予測実施フラグ導出部30921は、以下の条件式(R−1)により、残差予測実施フラグresPredFlagを導出してもよい。
resPredFlag = ( iv_res_pred_weight_idx != 0 ) && refIvRefPicAvailable ・・・(R−1)
ここで、PicOrderCntValは、対象ピクチャのピクチャ順序番号POCである。
なお、動き予測の場合に限定する場合には、残差予測実施フラグ導出部30921は、上記(1)および(2)に加えて、(3)対象ブロックが動き補償であるか否かを判定してもよい( PicOrderCnt( RefPicListX[ refIdxLX ] ) != PicOrderCntVal )。すなわち、以下の条件式(R−2)により、残差予測実施フラグresPredFlagを導出してもよい。
resPredFlag = ( iv_res_pred_weight_idx != 0 )
( PicOrderCnt( RefPicListX[ refIdxLX ] ) != PicOrderCntVal ) && refIvRefPicAvail ・・・ (R−2)
参照画像取得部30922は、残差予測実施フラグresPredFlagが1の場合には、インター予測パラメータ復号部303から入力された動きベクトルmvLXと残差予測変位ベクトルmvDisp、及び復号ピクチャ管理部306に格納された対応ブロックcurrIvSamplesLXと対応ブロックの参照ブロックrefIvSamplesLXを読み出す。
図11の(a)は、対応ブロックcurrIvSamplesLXを説明するための図である。図11の(a)に示すように、対象レイヤ上の対象ブロックTar1に対応する対応ブロックCor1は、参照レイヤ上の画像の対象ブロックTar1´の位置を起点として、参照レイヤと対象レイヤの位置関係を示すベクトルである変位ベクトルmvDispだけずれた位置になるブロックに位置する。
具体的には、参照画像取得部30922は、対象ブロックの画素の座標(x,y)を、対象ブロックの変位ベクトルmvDispだけずらした位置の画素を導出する。変位ベクトルmvDispが1/4ペルの小数精度であることを考慮し、残差生成部30922は、対象ブロックの画素の座標が(xP、yP)である場合に対応する整数精度の画素R0のX座標xIntとY座標yInt、及び変位ベクトルmvDispのX成分の小数部分xFracとY成分の小数部分yFracを
xInt = xPb + ( mvLX[ 0 ] >> 2 )
yInt = yPb + ( mvLX[ 1 ] >> 2 )
xFrac = mvLX[ 0 ] & 3
yFrac = mvLX[ 1 ] & 3
の式により導出する。ここで、X & 3は、Xの下位2ビットのみを取り出す数式である。
次に、参照画像取得部30922は、変位ベクトルmvDispが1/4ペルの小数精度であることを考慮し、補間画素predPartLX[ x ][ y ]を生成する。まず、整数画素A(xA,yB)、B(xB,yB)、C(xC,yC)及びD(xD,yD)の座標を
xA = Clip3( 0, picWidthInSamples - 1, xInt )
xB = Clip3( 0, picWidthInSamples - 1, xInt + 1 )
xC = Clip3( 0, picWidthInSamples - 1, xInt )
xD = Clip3( 0, picWidthInSamples - 1, xInt + 1 )
yA = Clip3( 0, picHeightInSamples - 1, yInt )
yB = Clip3( 0, picHeightInSamples - 1, yInt )
yC = Clip3( 0, picHeightInSamples - 1, yInt + 1 )
yD = Clip3( 0, picHeightInSamples - 1, yInt + 1 )
の式により導出する。ここで、整数画素Aは画素R0に対応した画素であり、整数画素B,C,Dはそれぞれ整数画素Aの右、下、右下に隣接する整数精度の画素であり、Clip3(x, y, z)は、zをx以上、y以下に制限(クリップ)する関数である。参照画像取得部30922は、各整数画素A、B、C、及びDに対応する参照画素refPicLX[ xA ][ yA ]、refPicLX[ xB ][ yB ]、refPicLX[ xC ][ yC ]、及びrefPicLX[ xD ][ yD ]を復号ピクチャ管理部306のDPB3061から読み出す。
そして、参照画像取得部30922は、参照画素refPicLX[ xA ][ yA ]、refPicLX[ xB][ yB ]、refPicLX[ xC ][ yC ]、refPicLX[ xD ][ yD ]と変位ベクトルmvDispのX成分の小数部分xFracとY成分の小数部分yFracを用いて、画素R0から変位ベクトルmvDispの小数部分だけずらした位置の画素である補間画素predPartLX[ x ][ y ]を導出する。具体的には、
predPartLX[ x ][ y ] = (refPicLX[ xA ][ yA ] * ( 8 - xFrac ) * ( 8 - yFrac )
+ refPicLX[ xB ][ yB ] * ( 8 - yFrac ) * xFrac
+ refPicLX[ xC ][ yC ] * ( 8 - xFrac ) * yFrac
+ refPicLX[ xD ][ yD ] * xFrac * yFrac ) >> 6
の式により導出する。
参照画像取得部30922は、上記の補間画素導出処理を、対象ブロック内の各画素に対して行い、補間画素の集合を補間ブロックpredPartLXとする。参照画像取得部30922は、導出した補間ブロックpredPartLXを、対応ブロックcurrIvSamplesLXとして、残差合成部30923に出力する。
図11の(b)は、参照ブロックrefIvSamplesLXを説明するための図である。図11の(b)に示すように、参照レイヤ上の対応ブロックに対応する参照ブロックは、参照レイヤ上の参照画像の対応ブロックの位置を起点として、対象ブロックの動きベクトルmvLXだけずれた位置になるブロックに位置する。
参照画像取得部30922は、対応ブロックcurrIvSamplesLXを導出した処理と、変位ベクトルmvDispをベクトル(mvDisp[ 0 ] + mvLX [ 0 ]、mvDisp[ 1 ] + mvLX [ 1 ])に置き換えている点を除いて、同様の処理を行うことで、対応ブロックrefIvSamplesLXを導出する。参照画像取得部30922は、対応ブロックrefIvSamplesLXを残差合成部30923に出力する。
残差合成部30923は、残差予測実施フラグresPredFlagが1の場合には、動き変位補償画像predSamplesLX、対応ブロックcurrIvSamplesLX、参照ブロックrefIvSamplesLX及び残差予測フラグiv_res_pred_weight_idxから、補正動き変位補償画像predSamplesLX´を導出する。補正動き変位補償画像predSamplesLX´は、
predSamplesLX´ = predSamplesLX + ((currIvSamplesLX - refIvSamplesLX) >> (iv_res_pred_weight_idx - 1))
の式を用いて求める。残差合成部30923は、残差予測実施フラグresPredFlagが0の場合には、動き変位補償画像predSamplesLXをそのまま出力する。
照度補償部3093は、照度補償フラグic_enable_flagが1の場合に、入力された動き変位補償画像predSamplesLXに対して、照度補償を行う。照度補償フラグic_enable_flagが0の場合には、入力された動き変位補償画像predSamplesLXをそのまま出力する。照度補償部3093に入力される動き変位補償画像predSamplesLXは、残差予測がオフの場合には、動き変位補償部3091の出力画像であり、残差予測がオンの場合には、残差予測部3092の出力画像である。
重み予測部3094は、入力される動き変位画像predSamplesLXに重み係数を乗算することにより予測ピクチャブロックP(予測画像)を生成する。入力される動き変位画像predSamplesLXは、残差予測、照度補償が行われる場合には、それらが施された画像である。参照リスト利用フラグの一方(predFlagL0もしくはpredFlagL1)が1の場合(単予測の場合)で、重み予測を用いない場合には入力された動き変位画像predSamplesLX(LXはL0もしくはL1)を画素ビット数に合わせる以下の式の処理を行う。
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesLX[ x ][ y ] + offset1 ) >> shift1 )
ここで、shift1=14-bitDepth、offset1=1<<(shift1-1)である。
また、参照リスト利用フラグの両者(predFlagL0もしくはpredFlagL1)が1の場合(双予測の場合)で、重み予測を用いない場合には、入力された動き変位画像predSamplesL0、predSamplesL1を平均し画素ビット数に合わせる以下の式の処理を行う。
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesL0[ x ][ y ] + predSamplesL1[ x ][ y ] + offset2 ) >> shift2 )
ここで、shift2=15-bitDepth、offset2=1<<(shift2-1)である。
さらに、単予測の場合で、重み予測を行う場合には、重み予測部3094は、重み予測係数w0とオフセットo0を導出し、以下の式の処理を行う。
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( (predSamplesLX[ x ][ y ] * w0 + 2log2WD - 1) >> log2WD ) + o0 )
ここで、log2WDは所定のシフト量を示す変数である。
さらに、双予測の場合で、重み予測を行う場合には、重み予測部3094は、重み予測係数w0、w1、o0、o1を導出し、以下の式の処理を行う。
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesL0 [ x ][ y ] * w0 + predSamplesL1[ x ][ y ] * w1 + ((o0 + o1 + 1) << log2WD) ) >> (log2WD + 1) )
(変形例1) 上記(参照画像判定)では、動き補償レベルの条件(resPredFlag)を用いて、参照レイヤ参照ピクチャrefIvRefPicの利用可否を判定することについて説明した。しかしながら、これに限られず、パース段階の条件を用いてもよい。
すなわち、参照画像判定部3095は、パース段階においてARP参照ピクチャarpRefPicの利用可否を判定し、当該判定結果arpRefPicAvailableをインター予測パラメータ復号制御部3031に供給してもよい。以下、パース段階におけるARP参照ピクチャarpRefPicの利用可否を示すフラグをarpRefPicAvailable、動き補償段階におけるARP参照ピクチャarpRefPicの利用可否を示すフラグをrefIvRefPicAvailableとして区別する。
図14を用いて、より具体的に説明すると次のとおりである。図14のSYN11およびSYN12に示すように、CUレベルの残差予測フラグ(ARPフラグ)iv_res_pred_weight_idxの導出の際、参照画像判定部3095は、ARP参照ピクチャarpRefPicの利用可否を判定してもよい。
そして、CUレベルのパラメータ復号において、インタービュー残差予測が利用可能なレイヤであって(iv_res_pred_flag[nuh_layer_id]が0でない)、かつARP参照ピクチャarpRefPicが利用可能である(arpRefPicAvailableが0でない)場合、インター予測パラメータ復号制御部3031は、iv_res_pred_weight_idxを復号してもよい。
これにより、残差予測処理において、参照ピクチャが利用可能でない事態が発生することを抑制することができる。
次に、本実施形態に係る画像符号化装置11の構成について説明する。図12は、本実施形態に係る画像符号化装置11の構成を示すブロック図である。画像符号化装置11は、予測画像生成部101、減算部102、DCT・量子化部103、エントロピー符号化部104、逆量子化・逆DCT部105、加算部106、復号ピクチャ管理部(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、予測パラメータ符号化部111、残差格納部313(残差記録部)を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。
予測画像生成部101は、外部から入力されたレイヤ画像Tの視点毎の各ピクチャについて、そのピクチャを分割した領域であるブロック毎に予測ピクチャブロックPを生成する。ここで、予測画像生成部101は、予測パラメータ符号化部111から入力された予測パラメータに基づいて復号ピクチャ管理部109から参照ピクチャブロックを読み出す。予測パラメータ符号化部111から入力された予測パラメータとは、例えば、動きベクトル又は変位ベクトルである。予測画像生成部101は、符号化対象ブロックを起点として予測された動きベクトル又は変位ベクトルが示す位置にあるブロックの参照ピクチャブロックを読み出す。予測画像生成部101は、読み出した参照ピクチャブロックについて複数の予測方式のうちの1つの予測方式を用いて予測ピクチャブロックPを生成する。予測画像生成部101は、生成した予測ピクチャブロックPを減算部102に出力する。なお、予測画像生成部101は、既に説明した予測画像生成部308と同じ動作であるため予測ピクチャブロックPの生成の詳細は省略する。
予測画像生成部101は、予測方式を選択するために、例えば、レイヤ画像に含まれるブロックの画素毎の信号値と予測ピクチャブロックPの対応する画素毎の信号値との差分に基づく誤差値を最小にする予測方式を選択する。予測方式を選択する方法は、これには限られない。
符号化対象のピクチャがベースビューピクチャである場合には、複数の予測方式とは、イントラ予測、動き予測及びマージ予測である。動き予測とは、上述のインター予測のうち、表示時刻間の予測である。マージ予測とは、既に符号化されたブロックであって、符号化対象ブロックから予め定めた範囲内にあるブロックと同一の参照ピクチャブロック及び予測パラメータを用いる予測である。符号化対象のピクチャがノンベースビューピクチャである場合には、複数の予測方式とは、イントラ予測、動き予測、マージ予測、及び変位予測である。変位予測(視差予測)とは、上述のインター予測のうち、別レイヤ画像(別視点画像)間の予測である。さらに、動き予測、マージ予測、及び変位予測である。変位予測(視差予測)に対して、追加予測(残差予測および照度補償)を行う場合と行わない場合の予測がある。
予測画像生成部101は、イントラ予測を選択した場合、予測ピクチャブロックPを生成する際に用いたイントラ予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
予測画像生成部101は、動き予測を選択した場合、予測ピクチャブロックPを生成する際に用いた動きベクトルmvLXを復号ピクチャ管理部109に記憶し、インター予測パラメータ符号化部112に出力する。動きベクトルmvLXは、符号化対象ブロックの位置から予測ピクチャブロックPを生成する際の参照ピクチャブロックの位置までのベクトルを示す。動きベクトルmvLXを示す情報には、参照ピクチャを示す情報(例えば、参照ピクチャインデックスrefIdxLX、ピクチャ順序番号POC)を含み、予測パラメータを表すものであっても良い。また、予測画像生成部101は、インター予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
予測画像生成部101は、変位予測を選択した場合、予測ピクチャブロックPを生成する際に用いた変位ベクトルを復号ピクチャ管理部109に記憶し、インター予測パラメータ符号化部112に出力する。変位ベクトルdvLXは、符号化対象ブロックの位置から予測ピクチャブロックPを生成する際の参照ピクチャブロックの位置までのベクトルを示す。変位ベクトルdvLXを示す情報には、参照ピクチャを示す情報(例えば、参照ピクチャインデックスrefIdxLX、ビューIDview_id)を含み、予測パラメータを表すものであっても良い。また、予測画像生成部101は、インター予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
予測画像生成部101は、マージ予測を選択した場合、選択した参照ピクチャブロックを示すマージインデックスmerge_idxをインター予測パラメータ符号化部112に出力する。また、予測画像生成部101は、マージ予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
上記の、動き予測、変位予測、マージ予測において、予測画像生成部101は、残差予測実施フラグresPredFlagが残差予測を行うことを示す場合には、既に説明したように予測画像生成部101に含まれる残差予測部3092において残差予測を行う。
減算部102は、予測画像生成部101から入力された予測ピクチャブロックPの信号値を、外部から入力されたレイヤ画像Tの対応するブロックの信号値から画素毎に減算して、残差信号を生成する。減算部102は、生成した残差信号をDCT・量子化部103と符号化パラメータ決定部110に出力する。
DCT・量子化部103は、減算部102から入力された残差信号についてDCTを行い、DCT係数を算出する。DCT・量子化部103は、算出したDCT係数を量子化して量子化係数を求める。DCT・量子化部103は、求めた量子化係数をエントロピー符号化部104及び逆量子化・逆DCT部105に出力する。
エントロピー符号化部104には、DCT・量子化部103から量子化係数が入力され、符号化パラメータ決定部110から符号化パラメータが入力される。入力される符号化パラメータには、例えば、参照ピクチャインデックスrefIdxLX、ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX、予測モードpredMode、残差予測フラグiv_res_pred_weight_idx、及びマージインデックスmerge_idx等の符号がある。
エントロピー符号化部104は、入力された量子化係数と符号化パラメータをエントロピー符号化して符号化ストリームTeを生成し、生成した符号化ストリームTeを外部に出力する。
逆量子化・逆DCT部105は、DCT・量子化部103から入力された量子化係数を逆量子化してDCT係数を求める。逆量子化・逆DCT部105は、求めたDCT係数について逆DCTを行い、復号残差信号を算出する。逆量子化・逆DCT部105は、算出した復号残差信号を加算部106に出力する。
加算部106は、予測画像生成部101から入力された予測ピクチャブロックPの信号値と逆量子化・逆DCT部105から入力された復号残差信号の信号値を画素毎に加算して、参照ピクチャブロックを生成する。加算部106は、生成した参照ピクチャブロックを復号ピクチャ管理部109に記憶する。
復号ピクチャ管理部109は、画像復号装置31の復号ピクチャ管理部306と同様、予測パラメータメモリ(不図示)を有しており、当該予測パラメータメモリにおいて、予測パラメータ符号化部111が生成した予測パラメータを、符号化対象のピクチャ及びブロック毎に予め定めた位置に記憶する。
また、復号ピクチャ管理部109は、画像復号装置31の復号ピクチャ管理部306と同様、DPB(不図示)を有しており、当該DPBにおいて、加算部106が生成した参照ピクチャブロックを、符号化対象のピクチャ及びブロック毎に予め定めた位置に記憶する。
なお、復号ピクチャ管理部109の詳細については、画像復号装置31の復号ピクチャ管理部306について説明したものと同様であるので、ここではその説明は省略する。
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、上述した予測パラメータやこの予測パラメータに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータのセットの各々を用いて予測ピクチャブロックPを生成する。
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化誤差を示すコスト値を算出する。コスト値は、例えば、符号量と二乗誤差に係数λを乗じた値との和である。符号量は、量子化誤差と符号化パラメータをエントロピー符号化して得られる符号化ストリームTeの情報量である。二乗誤差は、減算部102において算出された残差信号の残差値の二乗値についての画素間の総和である。係数λは、予め設定されたゼロよりも大きい実数である。符号化パラメータ決定部110は、算出したコスト値が最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化ストリームTeとして外部に出力し、選択されなかった符号化パラメータのセットを出力しない。
予測パラメータ符号化部111は、予測画像生成部101から入力されたパラメータに基づいて予測ピクチャを生成する際に用いる予測パラメータを導出し、導出した予測パラメータを符号化して符号化パラメータのセットを生成する。予測パラメータ符号化部111は、生成した符号化パラメータのセットをエントロピー符号化部104に出力する。
予測パラメータ符号化部111は、生成した符号化パラメータのセットのうち符号化パラメータ決定部110が選択したものに対応する予測パラメータを復号ピクチャ管理部109に記憶する。
予測パラメータ符号化部111は、予測画像生成部101から入力された予測モードpredModeがインター予測モードを示す場合、インター予測パラメータ符号化部112を動作させる。予測パラメータ符号化部111は、予測モードpredModeがイントラ予測モードを示す場合、イントラ予測パラメータ符号化部113を動作させる。
インター予測パラメータ符号化部112は、符号化パラメータ決定部110から入力された予測パラメータに基づいてインター予測パラメータを導出する。インター予測パラメータ符号化部112は、インター予測パラメータを導出する構成として、インター予測パラメータ復号部303(図6等、参照)がインター予測パラメータを導出する構成と同一の構成を含む。インター予測パラメータ符号化部112の構成については、後述する。
イントラ予測パラメータ符号化部113は、符号化パラメータ決定部110から入力された予測モードpredModeが示すイントラ予測モードIntraPredModeをインター予測パラメータのセットとして定める。
次に、インター予測パラメータ符号化部112の構成について説明する。インター予測パラメータ符号化部112は、インター予測パラメータ復号部303に対応する手段である。
図13は、本実施形態に係るインター予測パラメータ符号化部112の構成を示す概略図である。
インター予測パラメータ符号化部112は、インター予測パラメータ符号化制御部1031、マージ予測パラメータ導出部1121、AMVP予測パラメータ導出部1122、減算部1123、及び予測パラメータ統合部1126を含んで構成される。
マージ予測パラメータ導出部1121は、上述のマージ予測パラメータ導出部3036(図7参照)と同様な構成を有する。
インター予測パラメータ符号化制御部1031は、インター予測に関連する符号(シンタックス要素の復号をエントロピー符号化部104に指示し、符号化データに含まれる符号(シンタックス要素)を例えば、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idcinter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXを符号化する。
インター予測パラメータ符号化制御部1031は、追加予測フラグ符号化部10311、マージインデックス符号化部10312、ベクトル候補インデックス符号化部10313、及び図示しない、分割モード符号化部、マージフラグ符号化部、インター予測フラグ符号化部、参照ピクチャインデックス符号化部、ベクトル差分符号化部を含んで構成される。分割モード符号化部、マージフラグ符号化部、マージインデックス符号化部、インター予測フラグ符号化部、参照ピクチャインデックス符号化部、ベクトル候補インデックス符号化部10313、ベクトル差分符号化部は各々、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idcinter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXを符号化する。
追加予測フラグ符号化部1031は、追加予測が行われるか否かを示すために、照度補償フラグic_enable_flag、残差予測フラグiv_res_pred_weight_flsgを符号化する。
マージ予測パラメータ導出部1121には、予測画像生成部101から入力された予測モードpredModeがマージ予測モードを示す場合、符号化パラメータ決定部110からマージインデックスmerge_idxが入力される。マージインデックスmerge_idxは、予測パラメータ統合部1126に出力される。マージ予測パラメータ導出部1121は、マージ候補のうちマージインデックスmerge_idxが示す参照ブロックの参照ピクチャインデックスrefIdxLX、ベクトルmvLXを復号ピクチャ管理部109から読み出す。マージ候補とは、符号化対象となる符号化対象ブロックから予め定めた範囲にある参照ブロック(例えば、符号化対象ブロックの左下端、左上端、右上端に接する参照ブロックのうち)であって、符号化処理が完了した参照ブロックである。
AMVP予測パラメータ導出部1122は、上述のAMVP予測パラメータ導出部3032(図7参照)と同様な構成を有する。
AMVP予測パラメータ導出部1122には、予測画像生成部101から入力された予測モードpredModeがインター予測モードを示す場合、符号化パラメータ決定部110からベクトルmvLXが入力される。AMVP予測パラメータ導出部1122は、入力されたベクトルmvLXに基づいて予測ベクトルmvpLXを導出する。AMVP予測パラメータ導出部1122は、導出した予測ベクトルmvpLXを減算部1123に出力する。なお、参照ピクチャインデックスrefIdx及びベクトルインデックスmvp_LX_idxは、予測パラメータ統合部1126に出力される。
減算部1123は、符号化パラメータ決定部110から入力されたベクトルmvLXからAMVP予測パラメータ導出部1122から入力された予測ベクトルmvpLXを減算して差分ベクトルmvdLXを生成する。差分ベクトルmvdLXは予測パラメータ統合部1126に出力する。
予測画像生成部101から入力された予測モードpredModeがマージ予測モードを示す場合には、予測パラメータ統合部1126は、符号化パラメータ決定部110から入力されたマージインデックスmerge_idxをエントロピー符号化部104に出力する。
予測画像生成部101から入力された予測モードpredModeがインター予測モードを示す場合には、予測パラメータ統合部1126は、次の処理を行う。
予測パラメータ統合部1126は、符号化パラメータ決定部110から入力された参照ピクチャインデックスrefIdxLX及びベクトルインデックスmvp_LX_idx、減算部1123から入力された差分ベクトルmvdLXを統合する。予測パラメータ統合部1126は、統合した符号をエントロピー符号化部104に出力する。
〔第2の実施形態〕
以下、図面を参照しながら本発明の第2の実施形態について説明する。第2の実施形態では、参照レイヤ参照ピクチャrefIvRefPicの利用可否が判定できるようビットストリームに制約を課す例について説明する。以下では、ビットストリームが課されるべき制約のことをビットストリームコンフォーマンスと称する。
(オプションB1):RPS制約によるビットストリームコンフォーマンス
画像符号化装置11の予測パラメータ符号化部111は、スライスレベルでARPのオン/オフフラグを符号化してもよい。また、画像符号化装置11は、インター予測処理が実行されるとき、以下の条件(B1−1)および(B1−2)を満たすことをビットストリームコンフォーマンスとする。
(B1−1)対象ピクチャのRPS において、ViewIdx = refViewIdx[xP][yP]となる参照ピクチャPicが存在する。
(B1−2)PicOrderCnt(Pic)が、PicOrderCnt(arpRefPic)であり、かつ、ViewIdxが refViewIdx[xP][yP]となる。
画像復号装置31は、上記をビットストリームコンフォーマンスとする符号化データを復号する。画像復号装置31の復号対象とするビットストリームとして、ARP参照ピクチャに関する制約を課すことによって、ARP参照ピクチャが参照できないことにより復号処理が失敗することを防ぐことができる。
また、画像復号装置31は、次のように構成しても良い。すなわち、画像復号装置31は、上記ビットストリームコンフォーマンスに従って生成された、符号化ストリームを受信し、スライスレベル(スライスヘッダ/セグメントヘッダ)で符号化されたARPのオン/オフフラグをインター予測パラメータ復号部303において復号する。また、復号したARPのオン/オフフラグに応じて、残差予測部3092において残差予測処理を実行する。スライスヘッダ単位でARPのオンオフを符号化することで、参照レイヤの参照ピクチャリストの構成において、上記ビットストリームコンフォーマンスを遵守できない場合には、ARPをオフとすることができる。
(オプションB2):RPL制約によるビットストリームコンフォーマンス
画像符号化装置11の予測パラメータ符号化部111は、スライスレベルでARPのオン/オフフラグを符号化してもよい。また、画像符号化装置11は、インター予測処理が実行されるとき、以下の(B2−1)および(B2−2)を満たすことをビットストリームコンフォーマンスとする。
(B2−1)参照ピクチャPicが、ViewIdx = refViewIdx[xP][yP]であり、かつスライスタイプ(slice_type)が対象ピクチャのIスライスでない第1番目のスライスのRefPicListX[0]に存在する。
(B2−2)PicOrderCnt(Pic)が、PicOrderCnt(arpRefPic)であり、かつ、ViewIdxが refViewIdx[xP][yP]となる。
画像復号装置31は、上記をビットストリームコンフォーマンスとする符号化データを復号する。画像復号装置31の復号対象とするビットストリームとして、ARP参照ピクチャに関する制約を課すことによって、ARP参照ピクチャが参照できないことにより復号処理が失敗することを防ぐことができる。
また、画像復号装置31は、次のように構成しても良い。すなわち、画像復号装置31は、上記ビットストリームコンフォーマンスに従って生成された、符号化ストリームを受信し、スライスレベルで符号化されたARPのオン/オフフラグをインター予測パラメータ復号部303において復号する。また、復号したARPのオン/オフフラグに応じて、残差予測部3092において残差予測処理を実行する。
なお、上記に限られず、(B2−1)では、対象ピクチャのIスライスでないスライスのうち、所定番目のスライスのRefPicListX[0]を用いるように構成することもできる。例えば、最後のスライスのRefPicListX[0]を用いることも可能である。また、上記判定では、参照ピクチャリストの0番目だけでなく、所定番目の位置の参照ピクチャを対象としてもよい。
(オプションB3):参照ピクチャがDPBに存在するか否かを判定する
画像符号化装置11の予測パラメータ符号化部111は、スライスレベルでARPのオン/オフフラグを符号化する。また、画像符号化装置11は、インター予測処理が実行されるとき、以下の(B3−1)および(B3−2)を満たすことをビットストリームコンフォーマンスとする。
(B3−1)参照ピクチャPicが、ViewIdx = refViewIdx[xP][yP]であり、PicOrderCnt(Pic)が、PicOrderCnt(arpRefPic)であり、かつ、DPBに存在する。
(B3−2)参照ピクチャPicの参照マークは「参照使用」である。
画像復号装置31は、上記をビットストリームコンフォーマンスとする符号化データを復号する。画像復号装置31の復号対象とするビットストリームとして、ARP参照ピクチャに関する制約を課すことによって、ARP参照ピクチャが参照できないことにより復号処理が失敗することを防ぐことができる。
また、画像復号装置31は、次のように構成しても良い。すなわち、画像復号装置31は、上記ビットストリームコンフォーマンスに従って生成された、符号化ストリームを受信し、スライスレベルで符号化されたARPのオン/オフフラグをインター予測パラメータ復号部303において復号する。また、復号したARPのオン/オフフラグに応じて、残差予測部3092において残差予測処理を実行する。
〔第3の実施形態〕
以下、第3の実施形態について説明する。ARP参照ピクチャarpRefPicが参照ピクチャリストRefPicListXのarpRefIdxLXの参照ピクチャRefPicListX[arpRefIdxLX]である場合において、参照ピクチャリストは、ピクチャによって異なる。第3の実施形態では、対象レイヤにおける参照ピクチャarpRefPicの参照ピクチャリストにおける位置が、スライス単位で変わるのを防ぐための構成について説明する。なお、arpRefIdxLX(X=0 or 1)は、ARP参照ピクチャarpRefPicを特定するためのインデックスである。
ARP参照ピクチャに用いられる参照ピクチャ(arpRefPicおよび対応curIvRefPic)は、対象ピクチャに含まれるスライス間において同じになるように、以下の(オプションX1)または(オプションX1´)のようなビットストリームコンフォーマンスを導入することが好ましい。
(オプションX1)
画像符号化装置11は、符号化されるピクチャのARPフラグ(残差予測フラグ)が、“ARP残差予測が可能である”ことを示す場合、以下の(X1−1)および(X1−2)を満たすことをビットストリームコンフォーマンスとする。
(X1−1) 符号化されるピクチャにおいて、L0の参照画像を用いてARPを行う場合にarpRefPicL0によって参照される参照ピクチャを、スライスタイプ(slice_type)が“P”である全スライスについて、同じものに統一する。
(X1−2) 符号化されるピクチャにおいて、L1の参照画像を用いてARPを行う場合にarpRefPicL1によって参照される参照ピクチャを、スライスタイプ(slice_type)が“P”である全スライスについて、同じものに統一する。
画像復号装置31は、上記をビットストリームコンフォーマンスとする符号化データを復号する。画像復号装置31の復号対象とするビットストリームとして、ARP参照ピクチャに関する制約を課すことによって、ARP参照ピクチャがピクチャ内で変化することに伴うデータ転送上の処理量の増加(キャッシュが当たらない等)を防ぐことができる。
また、画像復号装置31は、次のように構成してもよい。すなわち、画像復号装置31は、上記ビットストリームコンフォーマンスに従って生成された、符号化ストリームを受信し、スライスレベルで符号化されたARPフラグをインター予測パラメータ復号部303において復号する。また、復号したARPフラグに応じて、残差予測部3092において残差予測処理を実行する。
(オプションX1´)
画像符号化装置11は、符号化されるピクチャのARPフラグ(残差予測フラグ)が、“ARP残差予測が可能である”ことを示す場合、以下の(X1−1´)および(X1−2´)を満たすことをビットストリームコンフォーマンスとする。
(X1−1´) 符号化されるピクチャにおいて、RefPicList0[arpRefIdxL0]によって参照される参照ピクチャを、スライスタイプ(slice_type)が“P”である全スライスについて、同じものに統一する。
(X1−2´) 符号化されるピクチャにおいて、RefPicList1[arpRefIdxL1]によって参照される参照ピクチャを、スライスタイプ(slice_type)が“B”である全スライスについて、同じものに統一する。
画像復号装置31は、上記をビットストリームコンフォーマンスとする符号化データを復号する。画像復号装置31の復号対象とするビットストリームとして、ARP参照ピクチャに関する制約を課すことによって、ARP参照ピクチャがピクチャ内で変化することに伴うデータ転送上の処理量の増加(キャッシュが当たらない等)を防ぐことができる。
また、画像復号装置31は、次のように構成しても良い。すなわち、画像復号装置31は、上記ビットストリームコンフォーマンスに従って生成された、符号化ストリームを受信し、スライスレベルで符号化されたARPフラグをインター予測パラメータ復号部303において復号する。また、復号したARPフラグに応じて、残差予測部3092において残差予測処理を実行する。
なお、ARP参照ピクチャarpRefPicが参照ピクチャリストRefPicListXの先頭の要素として導出される場合には、上記のビットストリームコンフォーマンスにおいてarpRefIdxL0=0、arpRefIdxL1=0とすれば良い。
(オプションX2)
ARP参照ピクチャarpRefPicを、ピクチャにおける、スライスタイプ(slice_type)が“I”でない第1番目のスライスのRefPicListX[0]に限定する。
例えば、残差予測時に、参照画像取得部30922において、ピクチャにおける、スライスタイプ(slice_type)が“I”でない第1番目のスライスのRefPicListX[0]からARP参照ピクチャarpRefPicを取得するようにすればよい。
なお、上記に限られず、対象ピクチャのIスライスでないスライスのうち、所定番目のスライスを用いるように構成することもできる。例えば、対象ピクチャに含まれるスライスの間で、最後のスライスのRefPicListX[0]を用いることも可能である。また、上記判定では、参照ピクチャリストの0番目だけでなく、所定番目の位置(arpRefIdxLX)の参照ピクチャ(すなわち、RefPicListX[arpRefIdxLX])を対象としてもよい。
〔第4の実施形態〕
以下、第4の実施形態について説明する。ARPでは対象ピクチャのPOCである対象ピクチャ順序とは異なるPOCである参照ピクチャ順序の参照ピクチャを利用して残差を予測する。この参照ピクチャ順序を、参照ピクチャリスト中の特定の参照ピクチャのPOC(例えば参照ピクチャリストRefPicListX[]の先頭の参照ピクチャRefPicListX[0]のPOC)として導出する場合、参照ピクチャ順序が、対象ピクチャと等しくなることがある。この場合には、ARPを利用することができない。第4の実施形態では、ARPにおいて、対象ピクチャと同じPOCを有するレイヤ間ピクチャが、対象ピクチャと異なるPOCを有する参照ピクチャとして、参照されることを防ぐために、ARPに使用するための参照ピクチャを特定する手法について説明する。
(オプションY1):
オプションY1では、ARPに用いられる参照ピクチャに関するビットストリームコンフォーマンスについて説明する。ARP参照ピクチャarpRefPicが参照ピクチャリストRefPicListXのarpRefIdxLXの参照ピクチャRefPicListX[arpRefIdxLX]である場合において、画像符号化装置11は、以下の(Y1−1)および(Y1−2)を満たすことをビットストリームコンフォーマンスとする。
(Y1−1) ARPが適用されるピクチャでは、DiffPicOrderCnt(RefPicList0[arpRefIdxL0], currPic)が0でなく、スライスタイプ(slice_type)がIでない。
(Y1−2) ARPが適用されるピクチャでは、DiffPicOrderCnt(RefPicList1[arpRefIdxL1], currPic)が0でなく、スライスタイプ(slice_type)がBである。
なお、上記において「DiffPicOrderCnt(PicA、currPic)が0ではない」の式は、「PicOrderCnt(PicA) != PicOrderCntVal」に置き替え可能である(以下同様)。
画像復号装置31は、上記ビットストリームコンフォーマンスに従って生成された、符号化ストリームを受信し、残差予測処理を実行する。
画像復号装置31は、上記をビットストリームコンフォーマンスとする符号化データを復号する。画像復号装置31の復号対象とするビットストリームとして、ARP参照ピクチャに関する制約を課すことによって、ARP参照ピクチャが参照できないことにより復号処理が失敗することを防ぐことができる。
なお、ARP参照ピクチャarpRefPicが参照ピクチャリストRefPicListXの先頭の要素として導出される場合には、上記のビットストリームコンフォーマンスにおいてarpRefIdxL0=0、arpRefIdxL1=0とすれば良い。
(オプションY2):
インター予測パラメータ復号部303およびエントロピー復号部301のいずれかが、参照画像判定部3095を備える構成であってもよい。
そして、図15に示すように、パース段階(CUレベル)で、参照画像判定部3095がARP参照ピクチャ利用フラグarpRefPicAvailableフラグを導出してもよい。また、図15のSYN21およびSYN22に示すように、パース段階で、つまり、インター予測パラメータ復号部303およびエントロピー復号部301のいずれかにおいて、参照画像判定部3095が、ARP参照ピクチャの利用可否(ARP参照ピクチャ利用フラグarpRefPicAvailable)に応じて残差予測フラグ(ARPフラグ)iv_res_pred_weight_idxを復号してもよい。すなわち、パース段階のパラメータ復号において、インタービュー残差予測が利用可能なレイヤであって(iv_res_pred_flag[nuh_layer_id]が0でない)、かつARP参照ピクチャarpRefPicが利用可能である(arpRefPicAvailableが0でない)場合、iv_res_pred_weight_idxを復号してもよい。
なお、参照画像判定部3095は、パース段階では、arpRefPicAvailableを、以下の式(Y2−1)に従って導出する。
arpRefPicAvailable = !(DiffPicOrderCnt(RefPicList0[arpRefIdxL0], currPic) == 0)
&& !(DiffPicOrderCnt(RefPicList1[arpRefIdxL1] , currPic) == 0) && slice_type == B)・・・ (Y2−1)
式(Y2−1)では、以下の(Y2.1)および(Y2.2)を満たす場合、arpRefPicAvailableに対して真(1)が設定される。
(Y2.1) L0参照ピクチャリストのインデックスarpRefIdxL0の参照ピクチャのPOCと、対象ピクチャcurrPicのPOC(PicOrderCntVal)との差分が0でない。
(Y2.2) L1参照ピクチャリストのインデックスarpRefIdxL1の参照ピクチャのPOCと、対象ピクチャcurrPicのPOC(PicOrderCntVal)との差分が0でなく、かつ、スライスタイプ(slice_type)がBである。
すなわち、L0リストの参照ピクチャarpRefPicL0(上記式ではRefPicList0[arpRefIdxL0])のPOCと、L1リストの参照ピクチャarpRefPicL1(上記式ではRefPicList1[arpRefIdxL1])のPOCの何れかが、対象ピクチャcurrPicのPOCと等しくなければ上記式(Y4−1)は真となる。スライスタイプslice_typeが双方向予測可能を示すBの場合のみ、L1リストが用いられるため、上記式では、slice_type == Bの場合のみ、L1リストに関する条件が可否に利用されるようにしている。(Y2−1)は、変形すれば、(Y2−1´)とも記載できる。
arpRefPicAvailable = !( PicOrderCnt (RefPicListL0[arpRefPicL0]) == PicOrderCntVal) || !( PicOrderCnt (RefPicListL1[arpRefPicL1]) == PicOrderCntVal) && slice_type == B) ・・・ (Y2−1´)
ここで、PicOrderCnt(Pic)はPicのPOCを導出する関数である。
なお、ARP参照ピクチャarpRefPicが参照ピクチャリストRefPicListXの先頭の要素として導出される場合には、上記の式(Y2−1)においてarpRefIdxL0=0、arpRefIdxL1=0とした以下の式(Y2−1´´)を用いてarpRefPicAvailableを導出すれば良い。
arpRefPicAvailable = !( PicOrderCnt (RefPicListL0]) == PicOrderCntVal) || !( PicOrderCnt (RefPicListL1[0]) == PicOrderCntVal) && slice_type == B) ・・・ (Y2−1´´)
オプションY2の参照画像判定部3095およびエントロピー復号部301(インター予測パラメータ復号部303)によれば、ARP参照ピクチャarpRefPicが対象ピクチャcurrPicのPOCと等しいかに応じて、残差予測フラグ(ARPフラグ)iv_res_pred_weight_idxを復号する。ARPを行うことができない場合、つまり、ARP参照ピクチャarpRefPicが対象ピクチャcurrPicのPOCと等しい場合に無駄なフラグとなるiv_res_pred_weight_idxを復号しないため、符号量低減の効果を奏する。
(オプションY3)
また、オプション3では、インター予測画像生成部309において、動き補償段階における判定を行う。以下では、参照ピクチャリストのインデックスarpRefIdxLXのピクチャ(RefPicListX[arpRefIdxLX])をARP参照ピクチャarpRefPicと称する。
まず、インター予測画像生成部309において、参照画像判定部3095は、参照ピクチャarpRefPicについて、arpRefPicのピクチャ順序(POC (arpRefPic))が、対象ピクチャcurrPicのピクチャ順序PicOrderCntValと等しいか否かに応じて参照レイヤ参照ピクチャ利用フラグ(refIvRefPicAvailable2)を設定する。具体的には、DiffPicOrderCnt(arpRefPic, currPic)が0でなければ、refIvRefPicAvailable2を1に設定する一方で、それ以外の場合は、refIvRefPicAvailable2を0に設定する。
参照画像判定部3095は、参照ピクチャarpRefPicについて、arpRefPicのピクチャ順序(PicOrderCnt (arpRefPic))が、対象ピクチャcurrPicのピクチャ順序PicOrderCntValと等しいか否かに応じて参照レイヤ参照ピクチャ利用フラグ(refIvRefPicAvailable2)を設定する。具体的には、DiffPicOrderCnt(arpRefPic, currPic)が0でなければ、refIvRefPicAvailable2を非0に設定する一方で、それ以外の場合は、refIvRefPicAvailable2を0に設定する。
refIvRefPicAvailable2=!DiffPicOrderCnt(arpRefPic, currPic) (Y3−1)
ここで、式(Y3−1)は、以下の式(Y3−1´)と表現することも可能である。
refIvRefPicAvailable2=PicOrderCnt(arpRefPic) != PicOrderCntVal (Y3−1´)
なお、参照ピクチャarpRefPicが、参照ピクチャリストRefPicListX[]の参照インデックスarpRefIdxLXの要素RefPicListX[arpRefIdxLX]から導出される場合には、以下の式(Y3−2)で導出する。
refIvRefPicAvailable2=!DiffPicOrderCnt(RefPicListX[arpRefIdxLX], currPic) (Y3―2)
ここでは、LX(X=0, 1)リストから導出される動き補償画像に残差予測を実施する場合に、そのリストLXの参照ピクチャインデックスであるarpRefIdxLXが0以上であるか(LXリストに有効な参照ピクチャarpRefPicが存在するかを判定している。式(Y3−2)は、以下の式(Y3−2´)と表現することも可能である。
refIvRefPicAvailable2=PicOrderCnt(RefPicListX[arpRefIdxLX]) != PicOrderCntVal
(Y3−2´)
残差予測実施フラグ導出部30921は、導出したrefIvRefPicAvailable2が非0である場合のみ、実施フラグresPredFlagが非0となるように、以下の式(C3−1)に従ってresPredFlagを導出する。
resPredFlag = (iv_res_pred_weight_idx != 0) && arpRefPicAvailable2 ・・・ 式(C3−1)
なお、残差予測を、動き予測の場合に限定する場合には、式(Y3−1)の変形例である以下の式(C3−2)を用いてresPredFlagを導出しても良い(以降の実施形態も同様)
resPredFlag = (iv_res_pred_weight_idx != 0) &&
(PicOrderCnt(RefPicListX[refIdxLX]) != PicOrderCntVal) && arpRefPicAvailable2
・・・(C3−2)
残差予測実施フラグ導出部30921は、実施形態1で導出したrefIvRefPicAvailableを併用して、実施フラグresPredFlagを導出しても良い。具体的には、実施形態1の式(R−1)と、式(Y3−1)をあわせて以下の式を用いても良い。
resPredFlag = ( iv_res_pred_weight_idx != 0 ) && refIvRefPicAvailable && refIvRefPicAvailable2 ・・・(C3−3)
なお、残差予測を、動き予測の場合に限定する場合には、式(Y3−3)の変形例である以下の式(C3−4)を用いてresPredFlagを導出しても良い(以降の実施形態も同様)
resPredFlag = (iv_res_pred_weight_idx != 0) &&
(PicOrderCnt(RefPicListX[refIdxLX]) != PicOrderCntVal) && arpRefPicAvailable1 && arpRefPicAvailable2 ・・・(C3−4)
オプションY3の参照画像判定部3095および残差予測実施フラグ導出部30921(インター予測画像生成部309)によれば、ARP参照ピクチャarpRefPicが対象ピクチャcurrPicのPOCと等しいかに応じて、動き補償画像に残差予測を行うかどうか(resPredFlag)を決定する。ARPを行うことができない場合、つまり、ARP参照ピクチャarpRefPicが対象ピクチャcurrPicのPOCと等しい場合にARPの動作を行わないことによって、無効な動作を避ける効果を奏する。
(オプションY4)
オプションY4では、インター予測パラメータ復号部303およびエントロピー復号部301のいずれかが、参照画像判定部3095を備える構成とする。
また、オプションY4では、インター予測パラメータ復号部303およびエントロピー復号部301におけるパース段階での判定とインター予測画像生成部309における動き補償段階における判定を併用する。
パース段階では、インター予測パラメータ復号部303およびエントロピー復号部301のいずれかにおいて、参照画像判定部3095は、上述の式(Y2−1)およびその変形例に従って、図15に示したarpRefPicAvailableを導出してもよい。
また、インター予測パラメータ復号部303およびエントロピー復号部301では、ARP参照ピクチャ利用フラグarpRefPicAvailableフラグに応じて、残差予測フラグ(ARPフラグ)iv_res_pred_weight_idxを復号してもよい。すなわち図16に示すように、arpRefPicAvailableフラグが真の場合のみiv_res_pred_weight_idxを復号してもよい。
一方、動き補償段階では、以下のとおり判定を行うよう参照画像判定部3095を変形する。
参照画像判定部3095は、上述の式(Y3−1)およびその変形例に従って、refIvRefPicAvailable2を導出する。
また、残差予測実施フラグ導出部30921は、実施形態3において説明した式(Y3−1)およびその変形例に従ってresPredFlagを導出する。
オプションY4の参照画像判定部3095およびエントロピー復号部301(インター予測パラメータ復号部303)によれば、オプションY2と同様、ARP参照ピクチャarpRefPicが対象ピクチャcurrPicのPOCと等しい場合に無駄なフラグとなるiv_res_pred_weight_idxを復号しないため、符号量低減の効果を奏する。
オプションY4の参照画像判定部3095および残差予測実施フラグ導出部30921(インター予測画像生成部309)によれば、オプションY3と同様、ARPを行うことができない場合、つまり、ARP参照ピクチャarpRefPicが対象ピクチャcurrPicのPOCと等しい場合にARPの動作を行わないことによって、無効な動作を避ける効果を奏する。
(オプションY5)
オプション5では、ARP参照ピクチャarpRefPicが参照ピクチャリストRefPicListXのarpRefIdxLXの参照ピクチャRefPicListX[arpRefIdxLX]である場合において、arpRefPicがレイヤ間ピクチャとはならないよう、つまり、可能であれば、対象ピクチャのPOCであるPictureOrderCntValと異なるPOCを有するarpRefPicを設定するように、arpRefIdxLXを選択する。
本実施例の参照画像判定部3095は、参照ピクチャarpRefPicの導出も行う。
参照画像判定部3095は、以下の疑似コードに従い、X = 0 or 1について、インターレイヤピクチャではないという条件を満たす参照ピクチャリストRefPicListX[]の要素を検索し、ARP参照ピクチャのインデックスarpRefIdxLXと、arpRefPicAvailableとを導出してもよい。
なお、以下の疑似コードにおいて、X = 0 or 1である。また、以下の疑似コードの実行前の初期化処理として、arpRefIdxL0およびarpRefIdxL1は、参照ピクチャインデックスとしては、無効な値である負値(ここでは−1)に設定するとともに、arpRefPicAvailableは偽を示す0に設定する。
================================================================================for(i = 0; i <= num_ref_idx_lX_active_minus1; i++) {
if(DiffPicOrderCnt(RefPicListX[i], currPic)) {
arpRefIdxLX = i
arpRefPicAvailable = 1
}
}
================================================================================
上記疑似コードでは、参照ピクチャリストRefPicListX[]中の0からnum_ref_idx_lX_active_minus1までのインデックスiの参照ピクチャRefPicListX[i]を順に走査し、参照ピクチャRefPicListX[i]のPOCと、対象ピクチャcurrPicのPOC(PicOrderCntVal)との差が0ではない条件を満たす参照ピクチャarpRefPicLXを検索している。上記疑似コードによって得られたarpRefIdxLXに関し、参照画像判定部3095は、RefPIcListX[arpRefIdxLX]を、ARP参照ピクチャarpRefPicとして採用してもよい。
なお、上記処理は、以下の擬似コードを用いても処理できる。
arpRefIdxL0 = -1
for(i = 0; i <= num_ref_idx_l0_active_minus1 && arpRefIdxL0 < 0; i++)
if (PicOrderCnt(RefPicList0[i]) != PicOrderCntVal)
arpRefIdxL0 = i
arpRefIdxL1 = -1
if (slice_type != B)
for(i = 0; i <= num_ref_idx_l1_active_minus1 && arpRefIdxL1 < 0; i++)
if (PicOrderCnt(RefPicList1[i]) != PicOrderCntVal)
arpRefIdxL1 = i
上記、擬似コードにおいては、X=0、X=1の各々の参照ピクチャリストLXについて、参照ピクチャインデックスarpRefIdxLXとして0未満の値(ここでは-1)で初期化した上で、参照ピクチャリストRefPicListX[]中の0からnum_ref_idx_lX_active_minus1までのインデックスiの参照ピクチャRefPicListX[i]を順に走査し、参照ピクチャRefPicListX[i]のPOCと、対象ピクチャのPOC(PicOrderCntVal)が異なる条件を満たす参照ピクチャ(レイヤ間ピクチャ以外の参照ピクチャ)を検索し、条件を満たす参照ピクチャの参照ピクチャインデックスiをarpRefIdxLXとして保持する。初期状態では、参照ピクチャインデックスarpRefIdxLXとして、負の値(ここでは-1)を与え、上記検索を行う。条件を満たす参照ピクチャが得られた場合でarpRefIdxLXは0以上の値が設定される。なお、上記検索は、条件を満たす参照ピクチャが得られた時点、つまり、arpRefIdxLXが0以上になった時点で終了する。
オプションY5も、オプションY2、オプションY4と同様、インター予測パラメータ復号部303およびエントロピー復号部301におけるパース段階での判定を行っても良い。この場合、インター予測パラメータ復号部303およびエントロピー復号部301のいずれかが、参照画像判定部3095を備える構成とする。
パース段階では、インター予測パラメータ復号部303およびエントロピー復号部301のいずれかにおいて、参照画像判定部3095は、既に説明したように上述の式(Y2−1)および変形例(Y2−1´)に従って、図15に示したarpRefPicAvailableを導出することも可能だが、以下の式(Y5−1)において導出することも可能である。
arpRefPicAvailable = arpRefIdxL0 >= 0 || arpRefIdxL1 >= 0
ここでは、参照画像判定部3095は、パース段階においては、L0の参照ピクチャインデックスであるarpRefIdxL0が有効である値(0以上)もしくはL1の参照ピクチャインデックスであるarpRefIdxL1が有効である値(0以上)の場合に、arpRefPicAvailableに真(0以外の値)を設定する。すなわち、L0の参照ピクチャリストもしくはL1の参照ピクチャリストのいずれかでレイヤ間ピクチャ以外のピクチャが見つかった場合には、arpRefPicAvailableに真(非0)を設定する。
また、オプションY5も、オプションY3、オプションY4と同様、インター予測画像生成部309における動き補償段階における判定を行うことも可能である。
動き補償段階では、インター予測画像生成部309において、参照画像判定部3095は、既に説明したように上述の式(Y3−1)およびその変形例に従って、refIvRefPicAvailable2を導出することも可能だが、以下の式(Y5−2)において導出することも可能である。
refIvRefPicAvailable2 = arpRefIdxLX >= 0 式(Y5−2)
ここでは、動き補償段階において、LX(X=0, 1)リストから導出される動き補償画像に残差予測を実施する場合に、そのリストLXの参照ピクチャインデックスであるarpRefIdxLXが0以上であるか(LXリストに有効な参照ピクチャarpRefPicが存在するか)により判定を行っている。
また、残差予測実施フラグ導出部30921は、オプションY3において説明した式(C3−1)およびその変形例に従ってresPredFlagを導出する。
オプションY5の参照画像判定部3095によれば、対象ピクチャのPOCであるPictureOrderCntValと異なるPOCを有するarpRefPicを設定するように、arpRefIdxLXを選択するため、arpRefPicのPOCが対象ピクチャのPOCであるPictureOrderCntValと等しいためにARPが動作しないという課題を解消する効果を奏する。
さらに、パース段階の判定を行う場合には、オプションY5の参照画像判定部3095およびエントロピー復号部301(インター予測パラメータ復号部303)によれば、オプションY2と同様、ARP参照ピクチャarpRefPicが対象ピクチャcurrPicのPOCと等しい場合に無駄なフラグとなるiv_res_pred_weight_idxを復号しないため、符号量低減の効果を奏する。
さらに、動き補償段階の判定を行う場合には、オプションY5の参照画像判定部3095および残差予測実施フラグ導出部30921(インター予測画像生成部309)によれば、オプションY3と同様、ARPを行うことができない場合、つまり、ARP参照ピクチャarpRefPicが対象ピクチャcurrPicのPOCと等しい場合にARPの動作を行わないことによって、無効な動作を避ける効果を奏する。
(オプションY5の変形例)
以下、オプションY5の変形例を説明する。オプションY5の変形例も、対象ピクチャのPOCであるPictureOrderCntValと異なるPOCを有するarpRefPicを設定するように参照ピクチャを定める。
参照画像判定部3095は、ARP参照ピクチャarpRecPicを、参照ピクチャリストRefPicListXに含まれる参照ピクチャから、以下に示す疑似コードに従って導出してもよい。なお、以下の疑似コードの実行前に初期化処理として、POCの差分の暫定的な最小値を示すminiDiffPOCを、十分に大きい所定の値(ここでは、例えば216)に設定するとともに、ARP参照ピクチャの利用可否を示すフラグであるarpRefPicAvailableを、0(偽)に設定する。
================================================================================for (rIdx = 0; rIdx <= num_ref_idx_lX_active_minus1; rIdx++) {
if (isNearerPOC(rIdx, minDiffPOC)) {
minDiffPOC = abs(DiffPicOrderCnt(RefPicListX[rIdx], currPic)
rIdxSel = rIdx
arpRefPicAvailable = 1 }
}
================================================================================
上記疑似コードでは、forループの処理が参照ピクチャリストに含まれる各参照ピクチャに対して実行される。
ここで、isNearerPOC(rIdx, minDiffPOC)は、参照ピクチャリストのrIdx番目の参照ピクチャが、対象ピクチャのRPSに含まれ、ViewIdx = RefViewIdx[xP][yP]であり、POCが以下の条件式C(1−1)を満たすような参照ピクチャが存在するか否かを判定する関数である。
(参照ピクチャがRefPicListX[rIdx]に格納されている参照ピクチャと同じPOCを有する) && minDiffPOC > abs(DiffPicOrderCnt(RefPicListX[rIdx], currPic))・・・(C1−1)
条件式(C1−1)において、DiffPicOrderCnt(PicA, PicB)は、ピクチャPicAのPOCからピクチャPicBのPOCを差し引いた値を求める関数である。(以下の構成においても同様)。対象ピクチャcurrPicのPOCはPicOrderCntValであるから、DiffPicOrderCnt(picA, currPic)をPOC(picA) - PicOrderCntValとしても良い。条件式C(1−1)では、RefPicListX[rIdx]に格納されている参照ピクチャと同じPOCを有する参照ピクチャが存在し、かつ、rIdx番目の参照ピクチャのPOCと、対象ピクチャcurrPicのPOC(PicOrderCntVal)との差分の絶対値が、minDiffPOC未満である場合、“真”となる。
条件式(C1−1)が“真”である場合、minDiffPOCが、abs(DiffPicOrderCnt(RefPicListX[rIdx], currPic)によって更新され、rIdxが、暫定的なARP参照ピクチャの候補となる(rIdxSel)。また、このとき、arpRefPicAvailableは、1に設定される。
このようにして、各参照ピクチャについて、forループが実行されることで、最も参照ピクチャのPOCと近いPOCを有する参照ピクチャが、ARP参照ピクチャを示すインデックスとして(rIdxSel)導出される。
すなわち、参照画像判定部3095は、このようにして得られたrIdxSelに関し、ARP参照ピクチャarpRefPiを、が参照ピクチャリストRefPicListX[]のインデックスrIdxSelの参照ピクチャRefPicListX[rIdxSel]として導出する。
オプションY5の変形例の参照画像判定部3095によれば、対象ピクチャのPOCであるPictureOrderCntValと異なるPOCを有するarpRefPicを設定するように、arpRefIdxLXを選択するため、arpRefPicのPOCが対象ピクチャのPOCであるPictureOrderCntValと等しいためにARPが動作しないという課題を解消する効果を奏する。
さらに、オプションY5同様にパース段階の判定を行っても良い。この場合には、オプションY5の参照画像判定部3095およびエントロピー復号部301(インター予測パラメータ復号部303)によれば、オプションY2と同様、ARP参照ピクチャarpRefPicが対象ピクチャcurrPicのPOCと等しい場合に無駄なフラグとなるiv_res_pred_weight_idxを復号しないため、符号量低減の効果を奏する。
さらに、オプションY5同様に動き補償段階の判定を行っても良い。この場合には、オプションY5の参照画像判定部3095および残差予測実施フラグ導出部30921(インター予測画像生成部309)によれば、オプションY3と同様、ARPを行うことができない場合、つまり、ARP参照ピクチャarpRefPicが対象ピクチャcurrPicのPOCと等しい場合にARPの動作を行わないことによって、無効な動作を避ける効果を奏する。
なお、上述した実施形態における画像符号化装置11、画像復号装置31の各部をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、画像符号化装置11、画像復号装置31に内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
また、上述した実施形態における画像符号化装置11、画像復号装置31の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現しても良い。画像符号化装置11、画像復号装置31の各機能ブロックは個別にプロセッサ化しても良いし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
〔まとめ〕
本発明の態様1に係る画像復号装置は、動き補償画像に対象ピクチャとは異なるレイヤの参照レイヤを用いた残差予測を適用することで対象ピクチャの予測画像を生成する画像復号装置において、上記対象ピクチャのピクチャ順序と異なるピクチャ順序を有する上記参照レイヤの参照ピクチャが利用可能であるか否かを判定する参照ピクチャ判定部(参照画像判定部3095)と、少なくとも上記判定結果に応じて、上記参照レイヤの参照ピクチャと、対象ピクチャのピクチャ順序と同一のピクチャ順序を有する参照レイヤの復号済ピクチャとに基づく上記残差予測を、上記動き補償画像に適用する残差予測適用部(残差合成部30923)と、を備える。
対象ピクチャとは復号の対象となるピクチャである。参照レイヤとは、対象ピクチャが属するレイヤである対象レイヤと異なるレイヤのことである。参照レイヤにおける残差予測を行う場合、参照レイヤに属する参照ピクチャを参照する。
上記残差予測は、参照レイヤにおける残差を、対象レイヤにおける残差として推定するという技術である。上記残差予測は、対象ピクチャのピクチャ順序と異なるピクチャ順序を有する参照レイヤの参照ピクチャと、対象ピクチャのピクチャ順序と同一のピクチャ順序を有する参照レイヤの復号済ピクチャとに基づいて行われる。
上記構成によれば、上記参照レイヤの参照ピクチャが利用可能であるか否かに応じて、上記動き補償画像に上記残差予測を適用することができる。
よって、対象ピクチャについての残差予測時に、上記参照レイヤの復号ピクチャが利用できないという事態を回避することができるという効果を奏する。
本発明の態様2に係る画像復号装置では、上記態様1において、上記参照ピクチャ判定部は、上記参照レイヤの復号済ピクチャの復号時に参照されるピクチャを示す参照ピクチャセットにおいて、上記参照レイヤの参照ピクチャが存在するか否かに応じて、上記判定を行ってもよい。
参照ピクチャセットは、ピクチャ単位に導出される。よって、対象ピクチャに含まれるスライスの復号において共通して用いられる。
上記構成のように、参照ピクチャセットに基づいて上記参照レイヤの上記参照ピクチャの存否を判定することで、スライス間で共通の基準に基づいて上記参照レイヤの上記参照ピクチャの存否を判定することができる。
本発明の態様3に係る画像復号装置では、上記態様1において、上記参照ピクチャ判定部は、上記対象ピクチャの所定番目のIスライスでないスライスの参照ピクチャリストの所定の位置において、上記参照レイヤの参照ピクチャが存在するか否かに応じて、上記判定を行ってもよい。
上記構成によれば、対象ピクチャに含まれるスライスの間において、上記対象ピクチャの所定番目のIスライスでないスライスの参照ピクチャリストの所定の位置を判定に用いるため、判定処理を共通化することができる。
本発明の態様4に係る画像復号装置では、上記態様1において、上記参照ピクチャ判定部は、上記参照レイヤの参照ピクチャがDPB(Decoded Picture Buffer)において格納されているか否かに応じて、上記判定を行ってもよい。
このように、復号済みのピクチャが保持されるDPBに上記参照レイヤの参照ピクチャが定義されているか否かに応じて判定を行うことも可能である。
本発明の態様5に係る画像復号装置では、上記態様4において、上記参照ピクチャ判定部は、上記参照レイヤの参照ピクチャのDPB(Decoded Picture Buffer)における参照マークが、「参照使用」であるか否かに応じて、上記判定を行ってもよい。
デコーダによっては、HRD(Hypothetical Reference Decoder)で規定されるようなDPB処理をサポートしていないものもあるため、DPBの状態は不正確な場合がある。よって、上記参照レイヤの参照ピクチャのDPB(Decoded Picture Buffer)における参照マークを確認することにより、上記参照レイヤの参照ピクチャが利用可能か否かの上記判定をより正確に行うことができる。
すなわち、参照マークが、「参照使用」である場合、上記参照レイヤの参照ピクチャが存在すると判定すればよい。
本発明の態様6に係る画像復号装置は、動き補償画像に対象ピクチャとは異なるレイヤの参照レイヤを用いた残差予測を適用することで対象ピクチャの予測画像を生成する画像復号装置において、上記対象ピクチャの所定番目のIスライスでないスライスの参照ピクチャリストの所定の位置から、上記対象ピクチャが属する対象レイヤに属しており、上記対象ピクチャのピクチャ順序と異なるピクチャ順序を有する参照ピクチャを取得する参照ピクチャ取得部(参照画像取得部30922)と、上記取得した参照ピクチャのピクチャ順序と同一のピクチャ順序を有する上記参照レイヤの参照ピクチャと、上記対象ピクチャのピクチャ順序と同一のピクチャ順序を有する参照レイヤの復号済ピクチャとに基づく上記残差予測を、上記動き補償画像に適用する残差予測適用部(残差合成部30923)と、を備える。
上記構成によれば、上記対象ピクチャが属する対象レイヤに属しており、上記対象ピクチャのピクチャ順序と異なるピクチャ順序を有する参照ピクチャ(いわゆるARP参照ピクチャ)を、上記対象ピクチャの所定番目のIスライスでないスライスの参照ピクチャリストの所定の位置から取得する。
上記対象ピクチャの所定番目のIスライスでないスライスは、対象ピクチャの第1番目のIスライスでないスライスであることが好ましい。また、参照ピクチャリストの所定の位置は、参照ピクチャリストの第0番目の位置(先頭)であってもよい。対象ピクチャに含まれるスライス間で共通であれば、スライスの番号、参照ピクチャリストの位置は、任意である。
上記構成によれば、対象ピクチャに含まれるスライス間で、ARP参照ピクチャの判定を共通化することができる。
本発明の態様7に係る画像復号装置は、動き補償画像に対象ピクチャとは異なるレイヤの参照レイヤを用いた残差予測を適用することで対象ピクチャの予測画像を生成する画像復号装置において、上記残差予測を実行することを指示する残差予測実行フラグを復号するフラグ復号部(インター予測パラメータ復号部303)と、上記対象ピクチャのピクチャ順序と異なるピクチャ順序を有する上記参照レイヤの参照ピクチャが利用可能となっているビットストリームを受信する受信部と、上記残差予測実行フラグに従って、上記残差予測を実行する残差予測実行部(残差予測部3092)と、を備える。
本発明の態様8に係る画像符号化装置は、動き補償画像に対象ピクチャとは異なるレイヤの参照レイヤを用いた残差予測を適用することで対象ピクチャの予測画像を生成する画像符号化装置において、上記残差予測を実行することを指示する残差予測実行フラグを符号化するフラグ符号化部(予測パラメータ符号化部111)と、上記対象ピクチャのピクチャ順序と異なるピクチャ順序を有する上記参照レイヤの参照ピクチャが利用可能となっているビットストリームを生成するビットストリーム生成部(予測パラメータ符号化部111)と、上記生成したビットストリームを画像復号装置に対して送信するビットストリーム送信部(エントロピー符号化部104)と、を備える。
上記態様7に係る画像復号装置または上記態様8に係る画像符号化装置は、上記態様1に係る画像復号装置に対応する特徴点を含む。よって、上記態様7に係る画像復号装置または上記態様8に係る画像符号化装置によっても、上記態様1に係る画像復号装置と同様の効果を得ることができる。
本発明の態様9に係る画像復号装置は、動き補償画像に対象ピクチャとは異なるレイヤの参照レイヤを用いた残差予測を適用することで対象ピクチャの予測画像を生成する画像復号装置において、参照ピクチャリストに含まれる参照ピクチャのうち、上記対象ピクチャが属する対象レイヤに属しており、上記対象ピクチャのピクチャ順序と異なるピクチャ順序を有する参照ピクチャを選択する参照ピクチャ選択部と、上記選択された参照ピクチャのピクチャ順序と同一のピクチャ順序を有する上記参照レイヤの参照ピクチャと、上記対象ピクチャのピクチャ順序と同一のピクチャ順序を有する参照レイヤの復号済ピクチャとに基づく上記残差予測を、上記動き補償画像に適用する残差予測適用部と、を備えることを特徴とする。
上記構成によれば、arpRefpicのPOCが現ピクチャのPOCと異なることを保障することができる。すなわち、選択された参照ピクチャのピクチャ順序と同一のピクチャ順序を有する上記参照レイヤの参照ピクチャのピクチャ順序と、上記対象ピクチャのピクチャ順序と同一のピクチャ順序を有する参照レイヤの復号済ピクチャのピクチャ順序とが異なることを保障することができる。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。さらに、各実施形態にそれぞれ開示された技術的手段を組み合わせることにより、新しい技術的特徴を形成することができる。