(第1の実施形態)
以下、図面を参照しながら本発明の実施形態について説明する。
図1は、本実施形態に係る画像伝送システム5の構成を示す概略図である。
画像伝送システム5は、複数のレイヤ画像を符号化した符号を伝送し、伝送された符号を復号した画像を表示するシステムである。画像伝送システム5は、画像符号化装置2、ネットワーク3、画像復号装置1及び画像表示装置4を含んで構成される。
画像符号化装置2には、複数のレイヤ画像(テクスチャ画像ともいう)を示す信号T(入力画像#10)が入力される。レイヤ画像とは、ある解像度及びある視点で視認もしくは撮影される画像である。複数のレイヤ画像を用いて3次元画像を符号化するビュースケーラブル符号化を行う場合、複数のレイヤ画像のそれぞれは、視点画像と呼ばれる。ここで、視点は撮影装置の位置又は観測点に相当する。例えば、複数の視点画像は、被写体に向かって左右の撮影装置のそれぞれが撮影した画像である。画像符号化装置2は、この信号のそれぞれを符号化して符号化データ#1(符号化データ)を生成する。符号化データ#1の詳細については、後述する。視点画像とは、ある視点において観測される2次元画像(平面画像)である。視点画像は、例えば2次元平面内に配置された画素毎の輝度値、又は色信号値で示される。以下では、1枚の視点画像又は、その視点画像を示す信号をピクチャ(picture)と呼ぶ。また、複数のレイヤ画像を用いて空間スケーラブル符号化を行う場合、その複数のレイヤ画像は、解像度の低いベースレイヤ画像と、解像度の高い拡張レイヤ画像からなる。複数のレイヤ画像を用いてSNRスケーラブル符号化を行う場合、その複数のレイヤ画像は、画質の低いベースレイヤ画像と、画質の高い拡張レイヤ画像からなる。なお、ビュースケーラブル符号化、空間スケーラブル符号化、SNRスケーラブル符号化を任意に組み合わせて行っても良い。
ネットワーク3は、画像符号化装置2が生成した符号化データ#1を画像復号装置1に伝送する。ネットワーク3は、インターネット(internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)又はこれらの組み合わせである。ネットワーク3は、必ずしも双方向の通信網に限らず、地上波ディジタル放送、衛星放送等の放送波を伝送する一方向又は双方向の通信網であっても良い。また、ネットワーク3は、DVD(Digital Versatile Disc)、BD(Blue−ray Disc)等の符号化データ#1を記録した記憶媒体で代替されても良い。
画像復号装置1は、ネットワーク3が伝送した符号化データ#1のそれぞれを復号し、それぞれ復号した複数の復号レイヤ画像Td(復号視点画像Td、復号画像#2)を生成する。
画像表示装置4は、画像復号装置1が生成した複数の復号レイヤ画像Td(復号画像#2)の全部又は一部を表示する。例えば、ビュースケーラブル符号化においては、全部の場合、3次元画像(立体画像)や自由視点画像が表示され、一部の場合、2次元画像が表示される。画像表示装置4は、例えば、液晶ディスプレイ、有機EL(Electro−luminescence)ディスプレイ等の表示デバイスを備える。また、空間スケーラブル符号化、SNRスケーラブル符号化では、画像復号装置1、画像表示装置4が高い処理能力を有する場合には、画質の高い拡張レイヤ画像を表示し、より低い処理能力しか有しない場合には、拡張レイヤほど高い処理能力、表示能力を必要としないベースレイヤ画像を表示する。
<符号化データ#1の構造>
本実施形態に係る画像符号化装置2および画像復号装置1の詳細な説明に先立って、画像符号化装置2によって生成され、画像復号装置1によって復号される符号化データ#1のデータ構造について説明する。
(NALユニットレイヤ)
図11は、符号化データ#1におけるデータの階層構造を示す図である。符号化データ#1は、NAL(Network Abstraction Layer)ユニットと呼ばれる単位で符号化される。
NALは、動画像符号化処理を行う層であるVCL(Video Coding Layer)と、符号化データを伝送・蓄積する下位システムとの間における通信を抽象化するために設けられる層である。
VCLは、画像符号化処理を行う層のことであり、VCLにおいて符号化が行われる。一方、ここでいう、下位システムは、H.264/AVCおよびHEVCのファイルフォーマットや、MPEG−2システムに対応する。以下に示す例では、下位システムは、対象レイヤおよび参照レイヤにおける復号処理に対応する。なお、NALでは、VCLで生成されたビットストリームが、NALユニットという単位で区切られて、宛先となる下位システムへ伝送される。
図12(a)は、NAL(Network Abstraction Layer)ユニットのシンタックステーブルを示す。NALユニットには、VCLで符号化された符号化データ、および、当該符号化データが宛先の下位システムに適切に届けられるためのヘッダ(NALユニットヘッダ:nal_unit_header())が含まれる。なお、NALユニットヘッダは、例えば、図12(b)に示すシンタックスで表わされる。NALユニットヘッダには、NALユニットに格納された符号化データの種類を表わす”nal_unit_type”、格納された符号化データが属するサブレイヤの識別子(テンポラル識別子)を表わす”nuh_temporal_id_plus1”や、格納された符号化データが属するレイヤの識別子(レイヤ識別子)を表わす”nuh_layer_id”(または、nuh_reserved_zero_6bits)が記述されている。
NALユニットデータには、後述のパラメータセット、SEI、スライスなどが含まれる。
図13は、NALユニットタイプの値とNALユニットの種別の関係を示す図である。図13に示す通り、SYNA101 で示される0から15の値のNALユニットタイプを持つNALユニットは、非RAP(ランダムアクセスピクチャ)のスライスである。SYNA102 で示される16から21の値のNALユニットタイプを持つNALユニットは、RAP(ランダムアクセスピクチャ)のスライスである。RAPピクチャには、大きく分けて、BLAピクチャ、IDRピクチャ、CRAピクチャがあり、BLAピクチャは、さらに、BLA_W_LP、BLA_W_DLP、BLA_N_LPに分類される。IDRピクチャは、さらに、IDR_W_DLP、IDR_N_LPに分類される。RAPピクチャ以外のピクチャには後述のLPピクチャ、TSAピクチャ、STSAピクチャ、TRAILピクチャなどがある。
(アクセスユニット)
特定の分類ルールにより集約されたNALユニットの集合のことをアクセスユニットと呼ぶ。レイヤ数が1の場合には、アクセスユニットは1ピクチャを構成するNALユニットの集合である。レイヤ数が1より大きい場合には、アクセスユニットは同じ時刻(output time)の複数のレイヤのピクチャを構成するNALユニットの集合である。なお、アクセスユニットの区切りを示すために、符号化データはアクセスユニットデリミタ(Accessunit delimiter)と呼ばれるNALユニットを含んでも良い。アクセスユニットデリミタは、符号化データ中にあるアクセスユニットを構成するNALユニットの集合と、別のアクセスユニットを構成するNALユニットの集合の間に含まれる。アクセスユニットデリミタのNALユニットタイプの値(AUD_NUT)には例えば35を用いる。
(アクセスユニットのPOC制限)
従来技術においては、ビットストリームに対する制限(コンフォーマンス条件)として、同じアクセスユニットに含まれる全てのピクチャのピクチャ順序番号POC(picture order count、PicOrderCntVal)は同一であるという制限がある。
本実施形態では、ビットストリームに対する制限(コンフォーマンス条件)を緩和する。具体的には、コンフォーマンス条件を、同じアクセスユニットに含まれる全ての独立ではないレイヤのピクチャのピクチャ順序番号POCは同一であるという制限を用いる。すなわち、以下のCS制限X1を用いる。
(CS制限X1)レイヤAとレイヤBの間に、依存関係がある場合(direct_dependency_flag[レイヤAのレイヤID][レイヤBのレイヤID]!=0の場合)、同じアクセスユニットに含まれるレイヤAとレイヤBについて、ピクチャのPOCは同一でなくてはならない。
CS制限X1では、逆にあるレイヤAとあるレイヤBの間に依存関係がない場合、同じアクセスユニットに含まれるレイヤAとレイヤBのPOCは異なっていても良い。なお、レイヤ間で同じ時刻(output time)のピクチャが同じPOCを有することを、「POCがレイヤ間でアライメントされている」と呼ぶ。また、レイヤ間のPOCアライメントを行うために、IDR以外のピクチャでも、POCを0に初期化することを可能とするPOCリセットフラグの処理と、IDRピクチャでもスライスヘッダにPOC下位ビットを含める、IDRピクチャにおいても0以外のPOCを備えることを可能とする処理が行われる。
コンフォーマンス条件としては、CS制限X1に加えてさらにCS制限X2を用いても良い。
(CS制限X2)レイヤAとレイヤBが依存関係を有するレイヤを持つ場合(NumDirectRefLayers[レイヤAのレイヤID]>0、NumDirectRefLayers[レイヤBのレイヤID]>0の場合)には、アクセスユニットに含まれるレイヤAとレイヤBについて、ピクチャのPOCは同一でなくてはならない。
CS制限X1、CS制限X2は、同じ意味を有する限り、他の表現でも構わない。例えば、CS制限X1、X2は、各々、以下のように表現することができる。
(CS制限X1´)同じアクセスユニットに含まれる参照レイヤのピクチャと被参照レイヤのピクチャのPOCは同一でなくてはならない。
(CS制限X2´)依存関係を有するレイヤ(NumDirectRefLayers[レイヤID]>0)のピクチャは、同じアクセスユニットにおいて同一のPOCを有していなくてはならない。
CS制限X1、X2を合わせてCS制限X3のように表現することができる。
(CS制限X3)参照レイヤにも被参照レイヤにもなり得るレイヤであるとレイヤ依存情報(direct_dependency_type)において定義されたレイヤに属する全てのピクチャは、同じアクセスユニットにおいて同一のPOCを有していなくてはならない。
なお、CS制限X1、CS制限X2に示される依存関係は、後述のようにVPSのレイヤ依存情報(direct_dependency_type)で示される依存関係である。独立レイヤは、後述のように依存レイヤ数NumDirectRefLayers[]、独立レイヤフラグIndependentLayerFlag[]で示される。
図46は、CS制限X1を説明するための図である。図中、アクセスユニットはピクチャのセットを含む点線で示し、ピクチャ中の数字は、当該ピクチャのPOCを示す。図に示すように、依存関係にあるレイヤ0とレイヤ1(direct_dependency_flag[1][0]!=0)、レイヤ2とレイヤ3(direct_dependency_flag[3][2]!=0)は、同じアクセスユニットに含まれるピクチャにおいて同じPOCを有する。それに対し独立レイヤであるレイヤ4(NumDirectRefLayers[4]==0、IndependentLayerFlag[4]!=0)は、レイヤ0〜レイヤ3とは異なるPOCを有することができる。
図47は、CS制限X1+CS制限X2(CS制限X3)を説明するための図である。図に示すように、独立レイヤではないレイヤ1、レイヤ3は、同じアクセスユニットに含まれるピクチャにおいて同じPOCを有する。すなわち、互いに依存関係にないレイヤ0とレイヤ1のレイヤ群と、レイヤ2とレイヤ3のレイヤ群は、同じアクセスユニットのピクチャにおいて同じPOCを有する。また、CS制限X1により依存関係にあるピクチャは互いに同じPOCを有することから、結局、レイヤ0〜レイヤ3は同じアクセスユニットにおいて同じPOCを有する。それに対し独立レイヤであるレイヤ4は、レイヤ0〜レイヤ3とは異なるPOCを有することができる。
本実施形態の示す(CS制限X1)もしくは(CS制限X1+CS制限X2)のビットストリーム制限によれば、独立レイヤにおいては、POCに関する制限を課すことがない。そのため、レイヤ間のPOCのアライメントを保つために、スライスヘッダにPOC情報(POC下位ビット)を符号化する必要が無い。従って、独立レイヤにおいては、IDRのNALユニットタイプを有するピクチャにおいても、POC下位ビットを含めるようなシンタックス変更(レイヤID=0の符号化データのシンタックス構造からの変更)を必要としないという効果を奏する。この場合、レイヤIDが0の場合のシンタックスの構造の符号化データを復号することが可能な非スケーラブルデコーダを用いて、独立レイヤを復号することが可能となる。
なお、対象レイヤが独立レイヤではない場合には、対象ピクチャが参照するピクチャをDPB(復号ピクチャバッファ12)内のピクチャ群から特定する処理において、図15の(S205)、(S206)で後述するように、対象ピクチャのPOCと等しいPOCを持つ参照ピクチャを選択するPOCによる判定が必要である。そのため、対象レイヤが独立レイヤではない場合には(少なくとも、対象レイヤと参照レイヤの間には)、レイヤ間のPOCアライメントが必要である。上述のCS制限X1を満たす場合には、対象ピクチャと参照レイヤのレイヤ間ピクチャは、レイヤ間のPOCアライメントが守られるため、上記レイヤ間ピクチャ特定処理は問題なく動作する。さらに、CS制限X1+CS制限X2を満たす場合には、独立レイヤ以外のピクチャは全て同じアクセスユニットにおいて同一のPOCを有するため、同じ時刻のピクチャの特定が容易になるというさらなる効果を奏する。
(アクセスユニットのPOC制限とアクセスユニットデリミタ)
アクセスユニット内のPOCに関するコンフォーマンス条件を緩和する場合、すなわち、同じアクセスユニットにおいて、POCが等しくない場合を許容する場合、符号化データからの画像復号においては問題は生じないが、復号した画像を表示する場合において、レイヤ間で同じ表示時刻(output time)のピクチャの特定にPOCを用いることができず、同期した再生が困難になる場合がある。実際、符号化データをさらにMPEG2TSやMP4などのコンテナに収める場合には、各ピクチャ単位でコンテナの方で時刻情報を付加するために問題にはならないが、コンテナに格納しない場合には、POCで表示の同期を取れないことは問題となり得る。従って、このような場合には、以下のアクセスユニットに関するコンフォーマンス条件を設けることが適当である。
(CS制限AUD1)同じアクセスユニットに属する全てのピクチャは同じPOCを有する。もしくは、アクセスユニットの区切りとしてアクセスユニットデリミタを有する。
CS制限AUD1は、同じ意味を有する異なる表現を用いることもできる。例えば、以下のCS制限AUD2でも良い。
(CS制限AUD2)同じアクセスユニットに属する全てのピクチャは同じPOCを有する。もしくは、同じアクセスユニットに属する全てのピクチャが同じPOCを有しない可能性がある場合には、そのアクセスユニットの前にアクセスユニットデリミタを有する。
なお、CS制限AUD2においては、符号化データ(coded video stream、CVS)の中断および終端を示すend of streamを示すNALユニット(EOS_NUT)、もしくは、end of bitstreamを示すNALユニット(EOB_NUT)の直前では、同じアクセスユニットに属する全てのピクチャは同じPOCを有しない場合の後にはアクセスユニットデリミタが無くても良い。
また、さらにアクセスユニットの区切りを明確にするために、以下のCS制限AUD3でも良い。
(CS制限AUD3)同じアクセスユニットに属する全てのピクチャは同じPOCを有する。もしくは、同じアクセスユニットに属する全てのピクチャが同じPOCを有しない可能性がある場合には、そのアクセスユニットの前後にアクセスユニットデリミタを有する。
なお、上記課題は、コンテナに含めずとも利用されることを想定したフォーマットであるバイトストリームフォーマット(HEVCのAnnexBで説明されるスタートコードプリフィックスと追加のパディングを含むフォーマット)において特に課題となるため、バイトストリームフォーマットにおいてのみ、上記、アクセスユニットの関するコンフォーマンス条件を加えても構わない。
図48は、本実施形態のアクセスユニットの関するコンフォーマンス条件を説明するための図である。図48(a)は、同じアクセスユニットに属する全てのピクチャは同じPOCを有する場合であり、図中のAUD(アクセスユニットデリミタ)が破線で示されているように、AUDは必須ではない。図48(b)は、同じアクセスユニットに属するピクチャにおいて異なるPOCを有する場合であり、AUD(アクセスユニットデリミタ)は必須となる。図48(c)は、同じアクセスユニットに属するピクチャにおいて異なるPOCを有する場合であり、かつEOSで符号化データが中断する場合であり、(CS制限AUD2)においては、同じアクセスユニットに属するピクチャにおいて異なるPOCを有する場合の前にはAUDが必須であるが、EOSの前にはAUD(アクセスユニットデリミタ)は不要となる。
なお、連続するアクセスユニットから構成されるある符号化データ(CVS)内に属するアクセスユニットにおいて、一つでも同じアクセス内において異なるPOCのピクチャが存在するピクチャが有る可能性がある場合には、全てのアクセスユニットにおいて付随するAUD(通常、アクセスユニットの直前のAUD)を有することが好ましい。つまり、図48(d)に示すように、CVS内に複数のアクセスユニット(ここでは、アクセスユニット0とアクセスユニット1)が存在する場合に、あるアクセスユニット(アクセスユニット1)ではレイヤ間のPOCアライメントが保たれており、あるアクセスユニット(アクセスユニット0)ではレイヤ間のPOCアライメントが保たれていない場合には、レイヤ間のPOCアライメントが保たれているアクセスユニットにおいても、AUDを付加する。この条件は、コンフォーマンス制限として、以下のCS制限AUD4で行われる。
(CS制限AUD4)あるCVS内において、同じアクセスユニットに属する全てのピクチャは同じPOCを有する。もしくは、あるCVS内において、同じアクセスユニットに属する全てのピクチャは同じPOCを有しない場合が存在し得る場合には、そのCVS内のアクセスユニットの前にアクセスユニットデリミタを有する。
ここで、CVSとは、符号化データの単位であり、複数のアクセスユニットを備える。また、CVSは、IRAPピクチャから開始するNALユニットから構成される。なお、IRAPピクチャとはIDR、CRA、BLAの何れか種類に属するNALユニットタイプを有するピクチャである。
(ビデオパラメータセット)
図14は、本発明の実施形態に係るVPS(Video Parameter Set)の符号化データの構成を示す図である。一部シンタック要素について意味を示すと、次の通りである。VPSは、複数のレイヤに共通するパラメータを規定するためのパラメータセットである。パラメータセットは、ピクチャを圧縮データである符号化データからID(video_parameter_set_id)を用いて参照される。
・video_parameter_set_id(図14のSYNA401)は、各VPSを識別するための識別子である。
・vps_temporal_id_nesting_flag(図14のSYNA402)は、当該VPSを参照するピクチャにおけるインター予測に関して、追加の制約をするか否かを表わすフラグである。
・vps_max_num_sub_layers_minus1(図14のSYNA403)は、少なくとも基本レイヤを含む階層符号化データに関して、時間スケーラビリティを除く、その他のスケーラビリティに関するレイヤの数の上限値MaxNumLayersを算出するために用いるシンタックスである。なお、レイヤ数の上限値MaxNumLayersは、MaxNumLayers = vps_max_num_sub_layers_minus1 + 1によって表わされる。階層符号化データが基本レイヤのみで構成される場合は、vps_max_num_sub_layers_minus1 = 0となる。
・vps_extension_flag(図14のSYNA404)は、VPSがさらにVPS拡張を含むか否かを示すフラグである。
・vps_extension_data_flag(図14のSYNA405)は、VPS拡張本体であり、具体的には図15で説明する。
なお、本明細書中「XXであるか否かを示すフラグ」と記す場合、1をXXである場合、0をXXではない場合とし、論理否定、論理積などでは1を真、0を偽と扱う(以下同様)。但し、実際の装置や方法では真値、偽値として他の値を用いることもできる。
図15は、本発明の実施形態に係るVPS拡張の符号化データの構成を示す図である。一部シンタックス要素について意味を示すと、次の通りである。
・dimension_id_len_minus1(図15のSYNA501)は、スケーラブルの種別ごとに含まれる次元IDdimention_idの数num_dimensionsを示す。num_dimensions=dimension_id_len_minus1[1]+1である。例えば、num_dimensionsは、スケーラブルの種別がデプスの場合2、ビューの場合には視点数が復号される。
・次元IDdimention_id(図15のSYNA502)は、スケーラブルの種別ごとのピクチャの種別を示す情報である。
・依存レイヤ情報direct_dependency_flag[i][j](図15のSYNA503)は、対象レイヤiと参照レイヤjの間に依存性が有るか否かを示すフラグである。
・図15のSYNA504で、「・・・」として示される部分は、プロファイルもしくはスケーラブルの種別ごとに異なる情報である(詳細は後述する)。
図2は、符号化データ#1におけるデータの階層構造を示す図である。符号化データ#1は、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図2の(a)〜(f)は、それぞれ、シーケンスSEQを既定するシーケンスレイヤ、ピクチャPICTを規定するピクチャレイヤ、スライスSを規定するスライスレイヤ、スライスデータを規定するスライスデータレイヤ、スライスデータに含まれる符号化ツリーユニットを規定する符号化ツリーレイヤ、符号化ツリーに含まれる符号化単位(Coding Unit;CU)を規定する符号化ユニットレイヤを示す図である。
(シーケンスレイヤ)
シーケンスレイヤでは、処理対象のシーケンスSEQ(以下、対象シーケンスとも称する)を復号するために画像復号装置1が参照するデータの集合が規定されている。シーケンスSEQは、図2の(a)に示すように、ビデオパラメータセット(Video Parameter Set)シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。ここで#の後に示される値はレイヤIDを示す。図2では、#0と#1すなわちレイヤIDが0とレイヤIDが1の符号化データが存在する例を示すが、レイヤの種類およびレイヤの数はこれによらない。
ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複数の動画像に共通する符号化パラメータの集合および動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために画像復号装置1が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために画像復号装置1が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)、スケーリングリスト(量子化マトリックス)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
(ピクチャレイヤ)
ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために画像復号装置1が参照するデータの集合が規定されている。ピクチャPICTは、図2の(b)に示すように、スライスS0〜SNS-1を含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
なお、以下、スライスS0〜SNS-1のそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化データ#1に含まれるデータであって、添え字を付している他のデータについても同様である。
(スライスレイヤ)
スライスレイヤでは、処理対象のスライスS(対象スライスとも称する)を復号するために画像復号装置1が参照するデータの集合が規定されている。スライスSは、図2の(c)に示すように、スライスヘッダSH(スライスセグメントヘッダSH)、および、スライスデータSDATAを含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために画像復号装置1が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、または、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるBスライスなどが挙げられる。
なお、スライスヘッダSHには、上記シーケンスレイヤに含まれる、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいても良い。
(スライスデータレイヤ)
スライスデータレイヤでは、処理対象のスライスデータSDATAを復号するために画像復号装置1が参照するデータの集合が規定されている。スライスデータSDATAは、図2の(d)に示すように、符号化ツリーブロック(CTB:Coded Tree Block)(符号化ツリーユニットCTU)を含んでいる。CTBは、スライスを構成する固定サイズ(例えば64×64)のブロックであり、最大符号化単位(LCU:Largest Cording Unit)と呼ぶこともある。
(符号化ツリーレイヤ)
符号化ツリーレイヤは、図2の(e)に示すように、処理対象の符号化ツリーブロックを復号するために画像復号装置1が参照するデータの集合が規定されている。符号化ツリーユニットは、再帰的な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は、符号化処理の基本的な単位となる。
(符号化ユニットレイヤ)
符号化ユニットレイヤは、図2の(f)に示すように、処理対象の符号化ユニットを復号するために画像復号装置1が参照するデータの集合が規定されている。具体的には、符号化ユニットは、CUヘッダCUH、予測ツリー、変換ツリー、CUヘッダCUFから構成される。CUヘッダCUHでは、符号化ユニットが、イントラ予測を用いるユニットであるか、インター予測を用いるユニットであるかなどが規定される。符号化ユニットは、予測ツリー(prediction tree;PT)および変換ツリー(transform tree;TT)のルートとなる。CUヘッダCUFは、予測ツリーと変換ツリーの間、もしくは、変換ツリーの後に含まれる。
予測ツリーは、符号化ユニットが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の場合に対応する参照ピクチャリストが用いられる。2つの参照ピクチャリストが用いられる場合、つまり、predFlagL0=1, predFlagL1=1の場合が、双予測に対応し、1つの参照ピクチャリストを用いる場合、すなわち(predFlagL0, predFlagL1) = (1, 0)もしくは(predFlagL0, predFlagL1) = (0, 1)の場合が単予測に対応する。なお、予測リスト利用フラグの情報は、後述のインター予測フラグinter_pred_idxで表現することもできる。通常、後述の予測画像生成部、予測パラメータメモリでは、予測リスト利用フラグが用いれ、符号化データから、どの参照ピクチャリストが用いられるか否かの情報を復号する場合にはインター予測フラグinter_pred_idxが用いられる。
符号化データに含まれるインター予測パラメータを導出するためのシンタックス要素には、例えば、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXがある。
(参照ピクチャリストの一例)
次に、参照ピクチャリストの一例について説明する。参照ピクチャリストとは、復号ピクチャバッファ12に記憶された参照ピクチャからなる列である。図3は、参照ピクチャリストの一例を示す概念図である。参照ピクチャリスト601において、左右に一列に配列された5個の長方形は、それぞれ参照ピクチャを示す。左端から右へ順に示されている符号、P1、P2、Q0、P3、P4は、それぞれの参照ピクチャを示す符号である。P1等のPとは、視点Pを示し、そしてQ0のQとは、視点Pとは異なる視点Qを示す。P及びQの添字は、ピクチャ順序番号POCを示す。refIdxLXの真下の下向きの矢印は、参照ピクチャインデックスrefIdxLXが、復号ピクチャバッファ12において参照ピクチャQ0を参照するインデックスであることを示す。
(参照ピクチャの例)
次に、ベクトルを導出する際に用いる参照ピクチャの例について説明する。図4は、参照ピクチャの例を示す概念図である。図4において、横軸は表示時刻を示し、縦軸は視点を示す。図4に示されている、縦2行、横3列(計6個)の長方形は、それぞれピクチャを示す。6個の長方形のうち、下行の左から2列目の長方形は復号対象のピクチャ(対象ピクチャ)を示し、残りの5個の長方形がそれぞれ参照ピクチャを示す。対象ピクチャから上向きの矢印で示される参照ピクチャQ0は対象ピクチャと同表示時刻であって視点が異なるピクチャである。対象ピクチャを基準とする変位予測においては、参照ピクチャQ0が用いられる。対象ピクチャから左向きの矢印で示される参照ピクチャP1は、対象ピクチャと同じ視点であって、過去のピクチャである。対象ピクチャから右向きの矢印で示される参照ピクチャP2は、対象ピクチャと同じ視点であって、未来のピクチャである。対象ピクチャを基準とする動き予測においては、参照ピクチャP1又はP2が用いられる。
(ランダムアクセスピクチャ)
本実施例で扱うランダムアクセスピクチャ(RAP)の構成について説明する。図17は、ランダムアクセスピクチャの構成を説明する図である。RAPには、IDR(Instantaneous Decoding Refresh)、CRA(Clean Random Access)、BLA(Broken Link Access)の3種類がある。あるNALユニットが、RAPピクチャのスライスを含むNALユニットであるか否かは、NALユニットタイプにより識別される。IDR_W_LP、IDR_N_LP、CRA、BLA_W_LP、BLA_W_DLP、BLA_N_LPのNALユニットタイプは、各々、後述のIDR_W_LPピクチャ、IDR_N_LPピクチャ、CRAピクチャ、BLA_W_LPピクチャ、BLA_W_DLPピクチャ、BLA_N_LPピクチャに対応する。すなわち、上記ピクチャのスライスを含むNALユニットは、上述のNALユニットタイプを有する。
図17(a)は、RAPピクチャが先頭ピクチャ以外にない場合である。ボックス中の英字はピクチャの名前、数字はPOCを示す(以下同様)。図中左から右に表示順が並ぶ。IDR0、A1、A2、B4、B5、B6が、IDR0、B4、A1、A2、B6、B5の順で復号される。以下、図17(a)のB4で示されるピクチャがRAPピクチャに変更される場合を、図17(b)から図17(g)に示す。
図17(b)は、IDRピクチャ(特にIDR_W_LPピクチャ)が挿入される例である。本例では、IDR0、IDR´0、A1、A2、B2、B1の順で復号される。2つのIDRピクチャを区別するために時刻が先(復号順も先)のピクチャをIDR0、時刻が後のピクチャをIDR´0ピクチャと呼ぶ。本例のIDRピクチャを含め全てのRAPピクチャは、他のピクチャの参照は禁止される。他のピクチャの参照は、RAPピクチャのスライスを後述のようにイントラI_SLICEに制限することで行われる(この制限は、後述の実施例では、レイヤIDが0以外のレイヤに関して緩和される)。よって、RAPピクチャ自身は、他のピクチャの復号によらず独立して復号が可能である。さらに、IDRピクチャの復号時点で、後述のリファレンスピクチャセット(RPS)が初期化される。そのため、IDRピクチャ以前に復号されたピクチャを用いた予測、例えば、B2からIDR0への予測は禁止される。ピクチャA3は、RAP(ここではIDR´0)の表示時刻POCより前の表示時刻POCを有するが、RAPピクチャよりも後に復号される。このようなRAPピクチャよりも後に復号されるが、RAPピクチャよりも前に再生されるピクチャをLeadingピクチャ(LPピクチャ)と呼ぶ。RAPピクチャ、LPピクチャ以外のピクチャは、RAPピクチャよりも後に復号され、再生されるピクチャであり一般にTRAILピクチャと呼ばれる。IDR_W_LPは、Instantaneous Decoding Refresh With Leading Pictureの略であり、ピクチャA3のようなLPピクチャが含まれていても良い。ピクチャA2は、図17(a)の例では、IDR0とPOC4のピクチャを参照していたが、IDRピクチャの場合には、IDR´0を復号した時点で、RPSが初期化されるため、A2からIDR´0への参照は禁止される。またIDRピクチャを復号した時点で、POCは初期化される。
以上をまとめると、IDRピクチャは以下の制約を有するピクチャである。
・ピクチャ復号時点でPOCは初期化される
・ピクチャ復号時点でRPSは初期化される
・他のピクチャの参照の禁止
・復号順でIDRより後のピクチャから、復号順でIDRより前のピクチャの参照の禁止
・RASLピクチャ(後述)の禁止
・RADLピクチャ(後述)を持つことができる(IDR_W_LPピクチャの場合)
・RADLピクチャ(後述)を持つことができる(BLA_W_LP、BLA_W_DLPピクチャの場合)。
図17(c)は、IDRピクチャ(特にIDR_N_LPピクチャ)が挿入される例である。IDR_N_LPは、Instantaneous Decoding Refresh No Leading Pictureの略であり、LPピクチャの存在が禁止される。従って、図17(b)のA3ピクチャの存在が禁止される。よって、A3ピクチャは、IDR´0ピクチャの代わりに、IDR0ピクチャを参照することで、IDR´0ピクチャより前に復号される必要がある。
図17(d)は、CRAピクチャが挿入される例である。本例では、IDR0、CRA4、A1、A2、B6、B5の順で復号される。CRAピクチャでは、IDRピクチャと異なり、RPSの初期化は行われない。従って、復号順でRAP(ここではCRA)より後のピクチャから、復号順でRAP(ここではCRA)より前のピクチャの参照の禁止(A2からCRA4への参照禁止)は、必要とされない。しかしながら、RAPピクチャであるCRAピクチャから復号を開始する場合には、CRAより表示順が後のピクチャは復号可能であることが必要なため、表示順でRAP(CRA)より後のピクチャから、復号順でRAP(CRA)より前のピクチャの参照の禁止(B6からIDR0への参照禁止)は必要とされる。なお、CRAではPOCは初期化されない。
以上をまとめると、CRAピクチャは以下の制約を有するピクチャである。
・ピクチャ復号時点でPOCは初期化されない
・ピクチャ復号時点でRPSは初期化されない
・他のピクチャの参照の禁止
・表示順でCRAより後のピクチャから、復号順でCRAより前のピクチャの参照の禁止
・RADLピクチャとRASLピクチャを持つことできる。
図17(e)から(g)は、BLAピクチャの例である。BLAピクチャはCRAピクチャを含む符号化データの編集などにより、CRAピクチャを先頭としてシーケンスを再構成した場合に利用されるRAPピクチャであり、以下の制限を有する。
・ピクチャ復号時点でPOCは初期化される
・他のピクチャの参照の禁止
・表示順でBLAより後のピクチャから、復号順でBLAより前のピクチャの参照の禁止
・RASLピクチャ(後述)を持つことができる(BLA_W_LPの場合)
・RADLピクチャ(後述)を持つことができる(BLA_W_LP、BLA_W_DLPピクチャの場合)。
例えば、図6(d)のCRA4ピクチャの位置からシーケンスの復号を開始する場合を例に説明する。
図17(e)は、BLAピクチャ(特にBLA_W_LPピクチャ)を用いる例である。BLA_W_LPは、Broken Link Access With Leading Pictureの略であり、LPピクチャの存在が許容される。CRA4ピクチャをBLA_W_LPピクチャに置き換えた場合、BLAピクチャのLPピクチャであるA2ピクチャ、A3ピクチャは符号化データ中に存在しても良い。しかしながら、A2ピクチャは、BLA_W_LPピクチャよりも前に復号されるピクチャであるから、BLA_W_LPピクチャを先頭ピクチャとして編集した符号化データでは符号化データ中に存在しない。BLA_W_LPピクチャではそのような復号不可能なLPピクチャをRASL(random access skipped leading)ピクチャとして扱い、復号、表示しないことで対応する。なお、A3ピクチャは、復号可能なLPピクチャであり、このようなピクチャはRADL(random access decodable leading)ピクチャと呼ばれる。上記RASLピクチャ、RADLピクチャはRASL_NUT、RADL_NUTのNALユニットタイプにより識別される。
図17(f)は、BLAピクチャ(特にBLA_W_DLPピクチャ)を用いる例である。BLA_W_DLPは、Broken Link Access With Decorable Leading Pictureの略であり、復号可能なLPピクチャの存在が許容される。よって、BLA_W_DLPピクチャでは、図17(e)と異なり、復号不可能なLPピクチャ(RASL)であるA2ピクチャは、符号化データ中に存在を許されない。復号可能なLPピクチャ(RADL)であるA3ピクチャは符号化データ中に存在が許される。
図17(g)は、BLAピクチャ(特にBLA_N_LPピクチャ)を用いる例である。BLA_N_LPは、Broken Link Access No Leading Pictureの略であり、LPピクチャの存在が許容されない。よって、BLA_N_DLPピクチャでは、図17(e)、図17(f)と異なり、A2ピクチャ(RASL)だけでなく、A3ピクチャ(RADL)も符号化データ中に存在を許されない。
(インター予測フラグと予測リスト利用フラグ)
インター予測フラグと、予測リスト利用フラグpredFlagL0、predFlagL1の関係は以下のように相互に変換可能である。そのため、インター予測パラメータとしては、予測リスト利用フラグを用いても良いし、インター予測フラグを用いてもよい。また、以下、予測リスト利用フラグを用いた判定は、インター予測フラグに置き替えても可能である。逆に、インター予測フラグを用いた判定は、予測リスト利用フラグに置き替えても可能である。
インター予測フラグ = (predFlagL1<<1) + predFlagL0
predFlagL0 =インター予測フラグ & 1
predFlagL1 =インター予測フラグ >> 1
ここで、>>は右シフト、<<は左シフトである。
(マージ予測とAMVP予測)
予測パラメータの復号(符号化)方法には、マージ予測(merge)モードとAMVP(Adaptive Motion Vector Prediction、適応動きベクトル予測)モードがある、マージフラグmerge_flagは、これらを識別するためのフラグである。マージ予測モードでも、AMVPモードでも、既に処理済みのブロックの予測パラメータを用いて、対象PUの予測パラメータが導出される。マージ予測モードは、予測リスト利用フラグpredFlagLX(インター予測フラグinter_pred_idx)、参照ピクチャインデックスrefIdxLX、ベクトルmvLXを符号化データに含めずに、既に導出した予測パラメータをそのまま用いるモードであり、AMVPモードは、インター予測フラグinter_pred_idx、参照ピクチャインデックス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を用いて行われる。
(符号化データ構造についての付記事項)
独立レイヤ以外のレイヤのNALユニットに限り、レイヤIDが0か否かに応じてNALユニットに含まれるシンタックスの構造を変更してもよい。これにより、独立レイヤのNALユニットに含まれるシンタックスの構造は、レイヤIDが0の場合とレイヤIDが0以外の場合とで同じになるため、データの書き換えを全くまたはほとんど必要とすることなく、レイヤIDが0の場合のシンタックスの構造の符号化データをそのまま復号することが可能な非スケーラブルデコーダを用いて独立レイヤを復号することが可能となる。また、非スケーラブルデコーダで復号可能なデータを抽出する処理が容易になる、という効果を奏する。なお、厳密には、非スケーラブルデコーダで復号可能とするには、独立レイヤのレイヤIDを0に書き換える処理が必要となるが、符号化データ上の位置が明確なNALユニットヘッダにおいて固定長符号化されたレイヤIDを書き換えることは容易であるため、他のシンタックスを変更する場合に比べると、当該処理の処理量は無視できる程度である。
また、レイヤIDのチェックを無視する非スケーラブルデコーダであれば、レイヤIDを0に書き換える処理なしでそのまま符号化データを復号できる。なお、レイヤIDは0以上の数であるであるから、レイヤIDが0以外かの判定(分岐)は、レイヤIDが0より大きいか否かの判定(分岐)としても良い(以下、同様)。
なお、スライスヘッダ(スライスセグメントヘッダ)の変更に比べ、SPS、PPSの書き替えは比較的容易であるから、スライスヘッダにおいて、独立レイヤの場合のシンタックス構造を、レイヤIDが0の場合のシンタックスの構造と同じにし、SPSおよびPPSのシンタックス構造は、独立レイヤにおいても、レイヤIDが0の場合のシンタックスの構造とは異なる構成としても良い。この場合、非スケーラブルデコーダで復号可能とするには、独立レイヤのSPS、PPSについては書き換え処理が必要となるが、独立レイヤのピクチャ(のスライスヘッダ)については書き換え処理が不要となるため、この構成も効果的である。なお、後述の変形例においても同様に、スライスヘッダのみにおいて独立レイヤに基づく符号化データ構造およびその復号と符号化を用いても良い。
(画像復号装置の構成)
本実施形態に係る画像復号装置1の構成について説明する。図18は、本実施形態に係る画像復号装置1の構成を示す概略図である。画像復号装置1は、ヘッダ復号部10、ピクチャ復号部11、復号ピクチャバッファ12、参照ピクチャ管理部13を含んで構成される。画像復号装置1は、複数のレイヤを含む画像において特定の時刻のピクチャから復号を開始する後述するランダムアクセス復号処理が可能である。
[ヘッダ復号部10]
ヘッダ復号部10は、画像符号化装置2より供給される符号化データ#1から、NALユニット単位、シーケンス単位、ピクチャ単位、またはスライス単位で復号に利用される情報を復号する。復号された情報は、ピクチャ復号部11及び参照ピクチャ管理部13に出力される。
ヘッダ復号部10は、符号化データ#1に含まれるVPS、SPS、および、PPSを既定のシンタックス定義に基づいてパースして、シーケンス単位で復号に利用される情報を復号する。例えば、レイヤ数に関する情報をVPSから復号する。また、レプリゼンテーション情報がVPSに存在する場合には、復号画像の画像サイズに関連する情報をVPSから復号し、レプリゼンテーション情報がSPSに存在する場合には、復号画像の画像サイズに関連する情報をSPSから復号する。
また、ヘッダ復号部10は、符号化データ#1に含まれるスライスヘッダを既定のシンタックス定義に基づいてパースして、スライス単位で復号に利用される情報を復号する。例えば、スライスタイプがスライスヘッダから復号される。
図19に示すようにヘッダ復号部10は、NALユニットヘッダ復号部211、依存レイヤ情報復号部2101、プロファイルレベル情報復号部2102、レプリゼンテーション情報復号部2103、スケーリングリスト復号部2104、POC情報復号部2105、および、参照ピクチャ情報復号部218を備えている。
なお、依存レイヤ情報、プロファイルレベル情報、レプリゼンテーション情報、スケーリングリストなどの各種ヘッダ情報について触れたが、ヘッダ復号部を、ヘッダの種別毎に当該種別のヘッダを復号する復号部が内部に設けられるような構成にすることも可能である。この場合には、図21に示すように、ヘッダ復号部を、NALユニットヘッダ復号部211、VPS復号部212、SPS復号部213、PPS復号部214、および、スライスヘッダ復号部215を備えるヘッダ復号部10’としてもよい。
そして、VPS復号部212、SPS復号部213、PPS復号部214、および、スライスヘッダ復号部215の各復号部は、図22に示すような構成にしてもよい。
すなわち、VPS復号部212は、依存レイヤ情報復号部2101、プロファイルレベル情報復号部2102、レプリゼンテーション情報復号部2103を備え、SPS復号部213は、プロファイルレベル情報復号部2102、レプリゼンテーション情報復号部2103、スケーリングリスト復号部2104を備え、PPS復号部214は、スケーリングリスト復号部2104を備え、スライスヘッダ復号部215は、POC情報復号部2105を備えてもよい。また、スケーリングリスト復号部2104は、例えば、図23に示すような構成としてもよい。
なお、この場合、複数のヘッダ復号部(例えば、VPS復号部212およびSPS復号部213)が同じ手段X(例えば、プロファイルレベル情報復号部2102)を有することになるが、一方のヘッダ復号部が内部に手段Xを有し、他のヘッダ復号部がその手段Xを用いてもよい。また、手段Xを、各ヘッダ復号部の外部に備え、各ヘッダ復号部は、その手段Xを用いても良い。また、VPS復号部212およびSPS復号部213がプロファイルレベル情報復号部2102を備えるものとしたが、VPS復号部212およびSPS復号部213の一方の内部にプロファイルレベル情報復号部2102を設け、他方の内部にはプロファイルレベル情報復号部2102を設けないようにしてもよい。また、プロファイルレベル情報復号部2102をVPS復号部212およびSPS復号部213の外部に備え、VPS復号部212およびSPS復号部213がそのプロファイルレベル情報復号部2102を用いる構成としても良い。
[NALユニットヘッダ復号部211]
図20は、NALユニットヘッダ復号部211の概略的構成について示した機能ブロック図である。図20に示すように、NALユニットヘッダ復号部211はレイヤID復号部2111とNALユニットタイプ復号部2112を含んで構成される。
レイヤID復号部2111は、符号化データからレイヤID(NALユニットヘッダに含まれているレイヤID)を復号する。NALユニットタイプ復号部2112は、符号化データからNALユニットタイプを復号する。レイヤIDは、例えば0から63の6ビットの情報であり、レイヤIDが0の場合、ベースレイヤを示す。スケーラブル符号化された符号化データの一部は、非スケーラブルデコーダでも復号可能にするという後方互換性をサポートするために、ベースレイヤは、非スケーラブルデコーダで復号可能である。NALユニットタイプは、例えば0から63の6ビットの情報であり、NALユニットに含まれるデータの種別を示す。後述するようにデータの種別には、例えば、VPS、SPS、PPSなどのパラメータセット、IDRピクチャ、CRAピクチャ、BLAピクチャなどのRPSピクチャ、LPピクチャなどの非RAPピクチャ、SEIなどがNALユニットタイプから識別される。
[依存レイヤ情報復号部2101]
依存レイヤ情報復号部2101は、符号化データに含まれるVPSおよびVPS拡張から規定のシンタックス定義に基づいて、依存レイヤ情報を復号する。例えば、VPSからは図14に示すシンタックスを復号し、VPS拡張からは図15に示すシンタックスを復号する。VPS拡張は、フラグvps_extension_flagが1の場合に復号される。本明細書では、符号化データの構成(シンタックステーブル)と、符号化データ構成が含むシンタックス要素の意味や制限(セマンティクス)を、符号化データ構造と呼ぶ。符号化データ構造は、画像復号装置において符号化データを復号する場合のランダムアクセス性やメモリサイズ、異なる画像復号装置間で同じ動作を補償することに関連すると共に、符号化データの符号化効率にも影響を与える重要な技術要素である。
依存レイヤ情報復号部2101は、符号化データから、各レイヤの依存レイヤ情報(direct_dependency_flag[][])を復号する。依存レイヤ情報復号部2101は、各レイヤの独立レイヤフラグIndependentLayerFlag[]を導出する。
依存レイヤ情報復号部2101は、対象レイヤiと参照レイヤj(0<=j<i)の間に依存性が有るか否かを示すフラグdirect_dependency_flag[i][j]を用いて、対象レイヤiの依存レイヤ数NumDirectRefLayers[i]を導出する。具体的には、対象レイヤiに対する0からi-1までのインデックスjの参照レイヤにおいて、direct_dependency_flag[i][j]が0以外であるレイヤの数を導出する。さらに、依存レイヤ情報復号部2101は、対象レイヤiに依存レイヤが無い場合(つまり、依存レイヤ数NumDirectRefLayers[i] == 0が真である場合)にはIndependentLayerFlag[i]=1とし、対象レイヤに依存レイヤが有る場合(つまり、NumDirectRefLayers[i] == 0が偽である場合)には、IndependentLayerFlag[i]=0とする。また、IndependentLayerFlag[i]が存在しない場合には、IndependentLayerFlag[i]には、独立であることを示す1を導出する。
さらに、依存レイヤ情報復号部2101は、導出した当該レイヤの依存レイヤ情報(IndependentLayerFlag[])に基づいてnuh_layer_idのレイヤで示される当該レイヤが独立レイヤであるか否か(IndependentLayerFlag[nuh_layer_id]!=0)を判定する。なお、あるレイヤiが独立レイヤであるか否かを示すフラグIndependentLayerFlag[i]の代わりに、あるレイヤiが依存レイヤであるか否かを示すフラグDependentLayerFlag[i]を用いても良い。この場合、「レイヤが独立レイヤであるか否か(IndependentLayerFlag[nuh_layer_id]!=0)」の判定(分岐)は、全て、「レイヤが依存レイヤでないか否か(DependentLayerFlag[nuh_layer_id]==0)」の判定(分岐)に置き換える。
なお、スケーラブル符号化では、多くの場合、レイヤ間の依存性を利用したツール拡張を行い、レイヤ内の依存性についてはツールを拡張していない。すなわち、レイヤ間の依存性を利用しない独立レイヤ(レイヤ内の依存性のみを利用する独立レイヤ)は、非スケーラブルデコーダでも利用可能なツールのみを用いて生成されている。そのため、独立レイヤは、ベースレイヤとシンタックス構造が同じであれば、非スケーラブルデコーダでも復号可能である。
[プロファイルレベル復号部2102]
プロファイルレベル復号部2102は、VPSから各レイヤのプロファイルレベル情報を復号する。
また、プロファイルレベル復号部2102は、SPSを復号する場合において、SPSのレイヤID(nuh_layer_id)が表すレイヤが独立レイヤである(例えば、IndependentLayerFlag[nuh_layer_id]の値が真である)か、もしくは、SPSのレイヤIDが0の場合には、SPSからもプロファイルレベル情報を復号する(図16の(a)を参照)。具体的には、NALユニットヘッダ復号部211から、NALユニットタイプがSPSであるようなNALユニットヘッダに含まれているレイヤIDの入力を受けると、VPSから復号された依存レイヤ情報によって当該レイヤIDが示すレイヤが独立レイヤであることが示されている場合、又は、当該レイヤIDが0の場合に、SPSからもプロファイルレベル情報を復号する。この処理により、SPSシェアリング(SPS sharing)が(例えば、解像度の違いにより)使用できない場合にSPSのビット長が増加するのを防ぐことができる。
[レプリゼンテーション情報復号部2103]
レプリゼンテーション情報復号部2103は、図28(a)のシンタックスをVPSから復号し、図28(b)のシンタックスをSPSから復号する。具体的には、レプリゼンテーション情報復号部2103は、VPSに含まれるrep_format()を復号し、chroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、bit_depth_chroma_minus8などのレプリゼンテーション情報を復号する。レプリゼンテーション情報復号部2103は、さらに、SPSのレイヤID(nuh_layer_id)が表すレイヤが独立レイヤではない(例えば、IndependentLayerFlag[nuh_layer_id]の値が偽である)場合には、レプリゼンテーション情報更新フラグupdate_rep_format_flagがSPSに含まれ、そのフラグをSPSから復号する。update_rep_format_flagがSPSに含まれない場合には、update_rep_format_flagを0と導出(infer)する。update_rep_format_flagが1の場合には、レプリゼンテーション情報復号部2103はさらにchroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、bit_depth_chroma_minus8などのレプリゼンテーション情報を復号する。update_rep_format_flagが0の場合には、VPSのrep_format()において既に復号されたレプリゼンテーション情報を対象レイヤに対するレプリゼンテーション情報として用いる。
上記の「レイヤIDが表すレイヤが独立レイヤ以外のレイヤであるか」の判定は、「レイヤIDが表すレイヤが独立レイヤ以外のレイヤであり、かつ、レイヤIDが0より大きい(レイヤIDが0以外の場合)か」の判定に置き換えることもできる。レイヤIDが0のレイヤは一般に独立レイヤであるから、前者の真偽値が真の場合(レイヤIDが表すレイヤが独立レイヤ以外のレイヤである場合)には、レイヤIDも0よりも大きい。よって、後者の真偽値判定は必須ではないが、ベースレイヤ(レイヤID=0)の場合にはレプリゼンテーション情報更新フラグupdate_rep_format_flagが含まれないことを明確にするために、独立レイヤに関する判定に加え、レイヤIDに関する判定を行っても良い(以下、同様)。
[スケーリングリスト復号部2104]
スケーリングリスト復号部2104は、レイヤIDが表すレイヤが独立レイヤ以外のレイヤである(例えば、IndependentLayerFlag[nuh_layer_id]の値が0である、つまり!IndependentLayerFlag[nuh_layer_id]が真である)場合には、SPSからスケーリングリスト予測フラグsps_infer_scaling_list_flagを復号する(図16の(a)を参照)。sps_infer_scaling_list_flagが0以外の場合には、さらに、sps_scaling_list_ref_layer_idを復号する。sps_infer_scaling_list_flagが0の場合には、sps_scaling_list_data_present_flagと、scaling_list_data()を復号しスケーリングリストを復号する。
また、スケーリングリスト復号部2104は、レイヤIDが表すレイヤが独立レイヤ以外のレイヤである場合には、PPSからpps_infer_scaling_list_flagを復号する(図16の(b)を参照)。pps_infer_scaling_list_flagが0以外の場合には、さらに、pps_scaling_list_ref_layer_idを復号する。pps_infer_scaling_list_flagが0の場合には、pps_scaling_list_data_present_flagと、scaling_list_data()を復号しスケーリングリストを復号する。
具体的には、スケーリングリスト復号部2104は、SPS、PPSを復号する場合、NALユニットヘッダ復号部211から、SPS、PPSのNALユニットヘッダに含まれているレイヤIDの入力を受けると、VPSから復号された依存レイヤ情報によって当該レイヤIDが示すレイヤが独立レイヤ以外であることが示されているときに、スケーリングリストを予測するかどうかを示すフラグsps_infer_scaling_list_flag、pps_infer_scaling_list_flagを復号する。
この処理により、SPS/PPSシェアリング(SPS/PPS sharing)が使用できない場合にSPSおよびPPSのビット長が増加するのを防ぐことができる。
[POC情報復号部2105]
図29は、POC情報復号部2105(POC導出部)の概略的構成について示した機能ブロック図である。図29に示すように、POC情報復号部2105はPOC下位ビット最大値復号部21051、POC下位ビット復号部21052、POC上位ビット導出部21053、POC加算部21054、POCリセット部21055を含んで構成される。POC情報復号部2105は、POCの上位ビットPicOrderCntMsbとPOCの下位ビットpic_order_cnt_lsbを復号することにより、POCを導出し、ピクチャ復号部11と参照ピクチャ管理部13に出力する。
POC下位ビット最大値復号部21051は、符号化データから対象ピクチャのPOC下位ビット最大値MaxPicOrderCntLsbを復号する。具体的には、POC下位ビット最大値MaxPicOrderCntLsbの対数から定数4を引いた値として符号化されるシンタックス要素log2_max_pic_order_cnt_lsb_minus4を対象ピクチャのパラメータを規定するPPSの符号化データから復号し、以下の式により、POC下位ビット最大値MaxPicOrderCntLsbを導出する。
MaxPicOrderCntLsb=2(log2_max_pic_order_cnt_lsb_minus4 + 4)
なお、MaxPicOrderCntLsbは、POCの上位ビットPicOrderCntMsbと下位ビットpic_order_cnt_lsbの区切りを示す。例えば、MaxPicOrderCntLsbが16(log2_max_pic_order_cnt_lsb_minus4=0)の場合には、0〜15までの下位4ビットがpic_order_cnt_lsbで示され、それより上の上位ビットがPicOrderCntMsbで示される。
POC下位ビット復号部21052は、a)ピクチャのレイヤIDが表すレイヤが独立レイヤ以外のレイヤ(例えば、IndependentLayerFlag[nuh_layer_id]の値が0である)、または、b)ピクチャのNALユニットタイプがIDR以外(IDR_W_RADLおよびIDR_N_LP以外の場合)には、符号化データから、対象ピクチャのPOCの下位ビットであるPOC下位ビットpic_order_cnt_lsbを復号する。具体的には、対象ピクチャのスライスヘッダに含まれるpic_order_cnt_lsbを復号する。
POC上位ビット導出部21053は、対象ピクチャのPOCの上位ビットであるPOC上位ビットPicOrderCntMsbを導出する。具体的には、NALユニットヘッダ復号部211から入力された対象ピクチャのNALユニットタイプが、POCの初期化が必要なRAPピクチャであることを示す場合(BLAもしくはIDRの場合)に、以下の式によりPOC上位ビットPicOrderCntMsbを0に初期化する。
PicOrderCntMsb=0
初期化のタイミングは、対象ピクチャの先頭スライス(スライスヘッダに含まれるスライスアドレスが0のスライス、もしくは、対象ピクチャに入力されるスライスの内、画像復号装置に入力される最初のスライス)を復号する時点とする。
それ以外のNALユニットタイプの場合には、POC下位ビット最大値復号部21051で復号されたPOC下位ビット最大値MaxPicOrderCntLsb、後述の一時変数prevPicOrderCntLsb、prevPicOrderCntMsbを用いて、以下の式によりPOC上位ビットPicOrderCntMsbを導出する。
if( ( pic_order_cnt_lsb < prevPicOrderCntLsb ) &&
( ( prevPicOrderCntLsb - pic_order_cnt_lsb ) >= ( MaxPicOrderCntLsb / 2 ) ) )
PicOrderCntMsb = prevPicOrderCntMsb + MaxPicOrderCntLsb
else if( (pic_order_cnt_lsb > prevPicOrderCntLsb ) &&
( ( pic_order_cnt_lsb - prevPicOrderCntLsb ) > ( MaxPicOrderCntLsb / 2 ) ) )
PicOrderCntMsb = prevPicOrderCntMsb - MaxPicOrderCntLsb
else
PicOrderCntMsb = prevPicOrderCntMsb
すなわち、pic_order_cnt_lsbがprevPicOrderCntLsbよりも小さく、かつ、prevPicOrderCntLsbとpic_order_cnt_lsbの差が、MaxPicOrderCntLsbの半分以上の場合には、PicOrderCntMsbとして、prevPicOrderCntMsbにMaxPicOrderCntLsbを加えた数を設定する。それ以外で、pic_order_cnt_lsbがprevPicOrderCntLsbよりも大きく、prevPicOrderCntLsbとpic_order_cnt_lsbの差が、MaxPicOrderCntLsbの半分よりも大きい場合には、PicOrderCntMsbとして、prevPicOrderCntMsbからMaxPicOrderCntLsbを引いた数を設定する。それ以外の場合には、PicOrderCntMsbにprevPicOrderCntMsbを設定する。
なお、一時変数prevPicOrderCntLsb、prevPicOrderCntMsbは、POC上位ビット導出部21053において、以下の手順により導出する。復号順で直前のTemporalIdが0の参照ピクチャをprevTid0Picとした場合、ピクチャprevTid0PicのPOC(PicOrderCntVal)を、prevPicOrderCntとし、prevPicOrderCntMsb、prevPicOrderCntMsbを下記の式によって導出する。
prevPicOrderCntMsb=prevPicOrderCnt & ( MaxPicOrderCntLsb - 1 )
prevPicOrderCntMsb=prevPicOrderCnt - prevPicOrderCntLsb
図30は、POC情報復号部2105の動作を示す図である。図30に示すように、MaxPicOrderCntLsb=16の場合においてPOC=15、18、24、11、32のピクチャが、図の左から右の順に復号される例を示す。ここで、右端のピクチャ(POC=32のピクチャ)を対象ピクチャとする場合、対象ピクチャを復号する時点で、復号順で直前のTemporalID=0のピクチャはPOC=24のピクチャであるからPOC情報復号部2105は、ピクチャprevTid0PicとしてPOC=24のピクチャを設定する。ピクチャprevTid0PicのPOC下位ビット、POC上位ビットよりprevPicOrderCntLsb、prevPicOrderCntMsbを、各々8、16と導出する。対象ピクチャのpic_order_cnt_lsbは0、導出されたprevPicOrderCntLsbは8、MaxPicOrderCntLsbの半分が8であるから、上述の判定pic_order_cnt_lsbがprevPicOrderCntLsbよりも小さく、かつ、prevPicOrderCntLsbとpic_order_cnt_lsbの差が、MaxPicOrderCntLsbの半分以上の場合が成立し、POC情報復号部2105は、PicOrderCntMsbとして、prevPicOrderCntMsbにMaxPicOrderCntLsbを加えた数を設定する。すなわち、対象ピクチャのPicOrderCntMsbが32(=16+16)と導出される。
POC加算部21054は、POC下位ビット復号部21052で復号されたPOC下位ビットpic_order_cnt_lsbとPOC上位ビット導出部21053で導出されたPOC上位ビットを加算し、以下の式により、POC(PicOrderCntVal)を導出する。
PicOrderCntVal = PicOrderCntMsb + pic_order_cnt_lsb
図30の例では、PicOrderCntMsb=32、pic_order_cnt_lsb=0であるから、対象ピクチャのPOCであるPicOrderCntValが32と導出される。
POCリセット部21055は、poc_reset_flagが1の場合には、DPBに格納されている同じアクセスユニットの各参照ピクチャのPicOrderCntValを、POC加算部21054により導出されるPicOrderCntValだけ減算し、対象ピクチャのPicOrderCntValを0に設定する。
上記POC情報復号部2105は、a)ピクチャのレイヤIDが表すレイヤが独立レイヤ以外のレイヤの場合、または、b)ピクチャのNALユニットタイプがIDR以外の場合(IDR_W_RADLおよびIDR_N_LP以外の場合)には、スライスヘッダからslice_pic_order_cnt_lsbを復号する(図16の(c)を参照)。この処理により、NALユニットタイプがIDRの場合にも、当該レイヤIDが表すレイヤが独立レイヤ以外のレイヤであるときには、slice_pic_order_cnt_lsbを定めることが可能であり、POCのアライメントに問題が生じるのを防ぐことができる。
[参照ピクチャ情報復号部218]
参照ピクチャ情報復号部218は、ヘッダ復号部10の構成要素であり、参照ピクチャに関する情報を符号化データ#1から復号する。参照ピクチャに関する情報には、参照ピクチャセット情報(以下、RPS情報)と、参照ピクチャリスト修正情報(以下、RPL修正情報)が含まれる。
参照ピクチャセット(RPS: Reference Picture Set)は、対象ピクチャ、または、復号順で対象ピクチャに後続するピクチャにおいて、参照ピクチャとして利用される可能性のあるピクチャの集合を表す。RPS情報は、SPSやスライスヘッダから復号される情報であり、各ピクチャの復号時に設定される参照ピクチャセットの導出に用いられる情報である。
参照ピクチャリスト(RPL: Reference Picture List)は、動き補償予測を行う際に参照すべき参照ピクチャの候補リストである。参照ピクチャリストは2以上存在してもよい。本実施形態では、L0参照ピクチャリスト(L0参照リスト)とL1参照ピクチャリスト(L1参照リスト)を用いるとする。RPL修正情報は、SPSやスライスヘッダから復号される情報であり、参照ピクチャリスト内の参照ピクチャの順序を示す。
動き補償予測では、参照画像リスト上で参照画像インデックス(refIdx)の位置に記録されている参照ピクチャを利用する。例えば、refIdxの値が0の場合は、参照画像リストの0の位置、すなわち参照画像リストの先頭の参照ピクチャが動き補償予測に用いられる。
なお、参照ピクチャ情報復号部218によるRPS情報およびRPL修正情報の復号処理は、本実施形態における重要な処理であるため、後ほど詳しく説明する。
ここで、参照ピクチャセットと参照ピクチャリストの例を、図32を参照して説明しておく。図32(a)は、動画像を構成するピクチャを表示順に並べて示したものであり、図中の数字は各ピクチャに対応するPOCを表している。POCは、復号ピクチャバッファの説明で後述するように、出力順で昇順となるよう各ピクチャに割り当てられている。“curr”と示されたPOCが9のピクチャが、現在の復号の対象ピクチャである。
図32(b)は、対象ピクチャに適用されるRPS情報の例を示す。対象ピクチャにおける参照ピクチャセット(現RPS)は、当該RPS情報に基づいて導出される。RPS情報には、長期RPS情報と短期RPS情報とが含まれる。長期RPS情報として、現RPSに含めるピクチャのPOCが直接示されている。図32(b)に示す例では、長期RPS情報は、POC=1のピクチャを現RPSに含めることを示している。短期RPS情報には、現RPSに含めるピクチャが、対象ピクチャのPOCに対する差分で記録されている。図中の「Before, dPOC=1」と示された短期RPS情報は、対象ピクチャのPOCに対して1小さいPOCのピクチャを現RPSに含めることを示している。同様に、図中の「Before, dPOC=4」は4小さいPOCのピクチャを示し、「After, dPOC=1」は1大きいPOCのピクチャを現RPSに含めることを示す。なお、「Before」は、対象ピクチャの前方、つまり、対象ピクチャより表示順の早いピクチャを示す。また、「After」は、対象ピクチャの後方、つまり、対象ピクチャより表示順の遅いピクチャを示す。
図32(c)は、対象ピクチャのPOCが0の場合に、図32(b)で例示したRPS情報を適用したときに導出される現RPSの例を示す。長期RPS情報で示されたPOC=1のピクチャが含まれている。また、短期RPS情報で示された、対象ピクチャ(POC=9)より1小さいPOCを有するピクチャ、すなわちPOC=8のピクチャが含まれている。同様に、短期RPS情報で示された、POC=5とPOC=10のピクチャが含まれている。
図32(d)および(e)は、現RPSに含まれる参照ピクチャから生成される参照ピクチャリストの例を示す。参照ピクチャリストの各要素にはインデックス(参照ピクチャインデックス)が付与されている(図中ではidxと記載)。図32(d)は、L0参照リストの例を示す。L0参照リストには、5、8、10、1のPOCを持つ現RPSに含まれる参照ピクチャが、この順で含まれている。図32(e)は、L1参照リストの例を示す。L1参照リストには、10、5、8のPOCを持つ現RPSに含まれる参照ピクチャが、この順で含まれている。なお、L1参照リストの例で示した通り、参照ピクチャリストには、現RPSに含まれる全ての参照ピクチャ(参照可能ピクチャ)を含める必要はない。しかし、参照ピクチャリストの要素数は、最大でも現RPSに含まれる参照ピクチャの数となる。言い換えると、参照ピクチャリストの長さは、現ピクチャで参照可能なピクチャ数以下である。
次に、参照ピクチャリスト修正の例を、図33を参照して説明しておく。図33は、特定の参照ピクチャリストに(図33(a))に対して、RPL修正情報(図33(b))を適用した場合に得られる修正後の参照ピクチャリスト(図33(c))を例示している。図33(a)に示す修正前L0参照リストは、図32(d)で説明したL0参照リストと同一である。図33(b)に示すRPL修正情報は参照ピクチャインデックスの値を要素とするリストになっており、先頭から順に0、2、1、3の値が格納されている。このRPL修正情報は、修正前参照リストに含まれる0、2、1、3の参照ピクチャインデックスで示される参照ピクチャを、この順で修正後L0参照リストの参照ピクチャとすることを示す。図33(c)は修正後L0参照リストを示し、POCが5、10、8、1のピクチャがこの順で含まれている。
(動画像復号処理手順)
画像復号装置1が、入力符号化データ#1から復号画像#2を生成する手順は次のとおりである。
(S11)ヘッダ復号部10は、符号化データ#1からVPS、SPSを復号する。
(S12)ヘッダ復号部10は、符号化データ#1からPPSを復号する。
(S13)符号化データ#1の示すピクチャを順次対象ピクチャに設定する。各対象ピクチャに対して、S14〜S17の処理を実行する。
(S14)ヘッダ復号部10は、符号化データ#1から対象ピクチャに含まれる各スライスのスライスヘッダを復号する。ヘッダ復号部10に含まれる参照ピクチャ情報復号部218は、スライスヘッダからRPS情報を復号して参照ピクチャ管理部13に含まれる参照ピクチャセット設定部131に出力する。また、参照ピクチャ情報復号部218は、スライスヘッダからRPL修正情報を復号して参照ピクチャリスト導出部132に出力する。(S15)参照ピクチャセット設定部131は、RPS情報と、復号ピクチャバッファ12に記録されている局所復号画像のPOCとメモリ上の位置情報の組み合わせに基づいて、対象ピクチャに適用する参照ピクチャセットRPSを生成して、参照ピクチャリスト導出部132に出力する。
(S16)参照ピクチャリスト導出部132は、参照ピクチャセットRPSと、RPL修正情報に基づいて参照ピクチャリストRPLを生成してピクチャ復号部11に出力する。(S17)ピクチャ復号部11は、符号化データ#1から対象ピクチャに含まれる各スライスのスライスデータと、参照ピクチャリストRPLに基づいて対象ピクチャの局所復号画像を作成して、対象ピクチャのPOCと関連付けて復号ピクチャバッファに記録する。復号ピクチャバッファに記録された局所復号画像は、POCに基づき決定される適切なタイミングで、外部に復号画像#2として出力される。
[復号ピクチャバッファ12]
復号ピクチャバッファ12には、ピクチャ復号部で復号された各ピクチャの局所復号画像が、レイヤID、当該ピクチャのPOC(Picture Order Count、ピクチャ順序情報)と関連付けられて記録されている。復号ピクチャバッファ12は、所定の出力タイミングで、出力対象のPOCを決定する。その後、当該POCに対応する局所復号画像を、復号画像#2を構成するピクチャの一つとして外部に出力する。
図24は、復号ピクチャメモリの構成を示す概念図である。図中内部に数字を記したボックスが局所復号画像を示す。数字はPOCを示す。図24の図の通り、複数のレイヤの局所復号画像が、そのレイヤID、POC、局所復号画像に関連づけられて記録される。さらに、レイヤIDに対応するビューIDview_id、デプスフラグdepth_flagも局所復号画像に関連づけられて記録される。
[参照ピクチャ管理部13]
図31は、本実施形態に係る参照ピクチャ管理部13の構成を示す概略図である。参照ピクチャ管理部13は、参照ピクチャセット設定部131と、参照ピクチャリスト導出部132を含んで構成される。
参照ピクチャセット設定部131は、参照ピクチャ情報復号部218で復号されたRPS情報、および、復号ピクチャバッファ12に記録されている局所復号画像とレイヤID、POCの情報に基づいて、参照ピクチャセットRPSを構築して参照ピクチャリスト導出部132に出力する。なお、参照ピクチャセット設定部131の詳細は後述する。
参照ピクチャリスト導出部132は、参照ピクチャ情報復号部218で復号されたRPL修正情報、および、参照ピクチャセット設定部131から入力された参照ピクチャセットRPSに基づいて参照ピクチャリストRPLを生成して、ピクチャ復号部11に出力する。なお、参照ピクチャリスト導出部132の詳細は後述する。
(参照ピクチャ情報復号処理の詳細)
上記復号手順におけるS14の処理のうち、RPS情報およびRPL修正情報の復号処理について詳細を説明する。
(RPS情報復号処理)
RPS情報は、参照ピクチャセットを構築するためにSPSまたはスライスヘッダより復号される情報である。RPS情報には以下を含む。
1.SPS短期RPS情報:SPSに含まれる短期参照ピクチャセット情報
2.SPS長期RP情報:SPSに含まれる長期参照ピクチャ情報
3.SH短期RPS情報:スライスヘッダに含まれる短期参照ピクチャセット情報
4.SH長期RP情報:スライスヘッダに含まれる長期参照ピクチャ情報
(1.SPS短期RPS情報)
SPS短期RPS情報は、SPSを参照する各ピクチャから利用され得る複数の短期参照ピクチャセットの情報を含む。なお、短期参照ピクチャセットとは、対象ピクチャに対する相対的な位置(例えば対象ピクチャとのPOC差分)により指定される参照ピクチャ(短期参照ピクチャ)となり得るピクチャの集合である。
SPS短期RPS情報の復号について、図34を参照して説明する。図34は、ヘッダ復号部10および参照ピクチャ情報復号部218においてSPS復号時に利用されるSPSシンタックス表の一部を例示している。図34の(A)の部分がSPS短期RPS情報に相当する。SPS短期RPS情報には、SPSに含まれる短期参照ピクチャセットの数(num_short_term_ref_pic_sets)、および、各短期参照ピクチャセットの情報(short_term_ref_pic_set(i))が含まれる。
短期参照ピクチャセット情報について、図35を参照して説明する。図35は、ヘッダ復号部10および参照ピクチャ情報復号部218においてSPS復号時、および、スライスヘッダ復号時に利用される短期参照ピクチャセットのシンタックス表を例示している。
短期参照ピクチャセット情報には、対象ピクチャより表示順が早い短期参照ピクチャ数(num_negative_pics)、および、対象ピクチャより表示順が遅い短期参照ピクチャ数(num_positive_pics)が含まれる。なお、以下では、対象ピクチャより表示順が早い短期参照ピクチャを前方短期参照ピクチャ、対象ピクチャより表示順が遅い短期参照ピクチャを後方短期参照ピクチャと呼ぶ。
また、短期参照ピクチャセット情報には、各前方短期参照ピクチャに対して、対象ピクチャに対する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])が含まれる。
(2.SPS長期RP情報)
SPS長期RP情報は、SPSを参照する各ピクチャから利用され得る複数の長期参照ピクチャの情報を含む。なお、長期参照ピクチャとは、シーケンス内の絶対的な位置(例えばPOC)により指定されるピクチャである。
SPS長期RP情報の復号について、図34を再び参照して説明する。図34の(B)の部分がSPS長期RP情報に相当する。SPS長期RP情報には、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の冪乗の数で割った余りの値を用いてもよい。
(3.SH短期RPS情報)
SH短期RPS情報は、スライスヘッダを参照するピクチャから利用され得る単一の短期参照ピクチャセットの情報を含む。
SPS短期RPS情報の復号について、図36を参照して説明する。図36は、ヘッダ復号部10および参照ピクチャ情報復号部218においてスライスヘッダ復号時に利用されるスライスヘッダシンタックス表の一部を例示している。図36の(A)の部分がSH短期RPS情報に相当する。SH短期RPS情報は、短期参照ピクチャセットをSPSで復号済みの短期参照ピクチャセットの中から選択するか、スライスヘッダに明示的に含めるかを示すフラグ(short_term_ref_pic_set_sps_flag)を含む。SPSで復号済の中から選択する場合、復号済の短期参照ピクチャセットを一つ選択する識別子(short_term_ref_pic_set_idx)が含まれる。スライスヘッダに明示的に含める場合は、前述の図7を参照して説明したシンタックス表(short_term_ref_pic_set(idx))に相当する情報が、SPS短期RPS情報に含まれる。
(4.SH長期RP情報)
SH長期RP情報は、スライスヘッダを参照するピクチャから利用され得る長期参照ピクチャの情報を含む。
SH長期RP情報の復号について、図36を再び参照して説明する。図36の(B)の部分がSH長期RP情報に相当する。SH長期RP情報は、対象ピクチャで長期参照ピクチャが利用可能(long_term_ref_pic_present_flag)である場合のみスライスヘッダに含まれる。SPSで1以上の長期参照ピクチャを復号済である場合(num_long_term_ref_pics_sps>0)、SPSで復号済の長期参照ピクチャの中で対象ピクチャで参照され得る参照ピクチャの数(num_long_term_sps)がSH長期RP情報に含まれる。また、スライスヘッダで明示的に伝送される長期参照ピクチャ数(num_long_term_pics)がSH長期RP情報に含まれる。加えて、上記num_long_term_spsの数の長期参照ピクチャをSPSで伝送済の長期参照ピクチャの中から選択する情報(lt_idx_sps[i])がSH長期RP情報に含まれる。さらに、スライスヘッダに明示的に含める長期参照ピクチャの情報として、上記num_long_term_picsの数だけ、参照ピクチャのPOC(poc_lsb_lt [i])、および、対象ピクチャの参照ピクチャとして使用される可能性の有無(used_by_curr_pic_lt_flag[i])が含まれる。
(RPL修正情報復号処理)
RPL修正情報は、参照ピクチャリストRPLを構築するためにSPSまたはスライスヘッダより復号される情報である。RPL修正情報には、SPSリスト修正情報、および、SHリスト修正情報が含まれる。
(SPSリスト修正情報)
SPSリスト修正情報はSPSに含まれる情報であり、参照ピクチャリスト修正の制約に係る情報である。SPSリスト修正情報について、図34を再び参照して説明する。図34の(C)の部分がSPSリスト修正情報に相当する。SPSリスト修正情報には、ピクチャに含まれる前スライスで参照ピクチャリストが共通か否かを示すフラグ(restricted_ref_pic_lists_flag)、および、スライスヘッダ内にリスト並べ替えに関する情報が存在するか否かを示すフラグ(lists_modification_present_flag)が含まれる。
(SHリスト修正情報)
SHリスト修正情報はスライスヘッダに含まれる情報であり、対象ピクチャに適用される参照ピクチャリストの長さ(参照リスト長)の更新情報、および、参照ピクチャリストの並べ替え情報(参照リスト並べ替え情報)が含まれる。SHリスト修正情報について、図37を参照して説明する。図37はヘッダ復号部10および参照ピクチャ情報復号部218においてスライスヘッダ復号時に利用されるスライスヘッダシンタックス表の一部を例示している。図37の(C)の部分がSHリスト修正情報に相当する。
参照リスト長更新情報として、リスト長の更新有無を示すフラグ(num_ref_idx_active_override_flag)が含まれる。加えて、L0参照リストの変更後の参照リスト長を表す情報(num_ref_idx_l0_active_minus1)、および、L1参照リストの変更後の参照リスト長を表す情報(num_ref_idx_l1_active_minus1)が含まれる。
参照リスト並べ替え情報としてスライスヘッダに含まれる情報について、図38を参照して説明する。図38はヘッダ復号部10および参照ピクチャ情報復号部218においてスライスヘッダ復号時に利用される参照リスト並べ替え情報のシンタックス表を例示している。
参照リスト並べ替え情報には、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参照リスト並べ替え順序がスライスヘッダに含まれる。
(参照ピクチャセット導出処理の詳細)
前述の動画像復号手順におけるS15の処理、すなわち、参照ピクチャセット設定部による参照ピクチャセット導出処理の詳細を説明する。
既に説明したとおり、参照ピクチャセット設定部131は、RPS情報と、復号ピクチャバッファ12に記録されている情報に基づいて、対象ピクチャの復号に用いる参照ピクチャセットRPSを生成する。
参照ピクチャセットRPSは、対象ピクチャ、または、対象ピクチャに復号順で後続のピクチャにおいて、復号時に参照画像として利用可能なピクチャ(参照可能ピクチャ)の集合である。参照ピクチャセットは、参照可能ピクチャの種類に応じて次の2つのサブセットに分けられる。
・現ピクチャ参照可能リストListCurr:復号ピクチャバッファ上のピクチャのうち、対象ピクチャにおける参照可能ピクチャのリスト
・後続ピクチャ参照可能リストListFoll:対象ピクチャでは参照されないが、対象ピクチャに復号順で後続のピクチャで参照可能な復号ピクチャバッファ上のピクチャのリスト
なお、現ピクチャ参照可能リストに含まれるピクチャの数を、現ピクチャ参照可能ピクチャ数NumCurrListと呼ぶ。なお、前述の図38を参照して説明したNumPocTotalCurrは、NumCurrListと同一である。
現ピクチャ参照可能リストは、さらに3つの部分リストから構成される。
・現ピクチャ長期参照可能リストListLtCurr:SPS長期RP情報またはSH長期RP情報により指定される現ピクチャ参照可能ピクチャ
・現ピクチャ短期前方参照可能リストListStCurrBefore:SPS短期RPS情報またはSH短期RPS情報により指定される現ピクチャ参照可能ピクチャであって、表示順が対象ピクチャより早いもの
・現ピクチャ短期後方参照可能リストListStCurrAfter:SPS短期RPS情報またはSH短期RPS情報により指定される現ピクチャ参照可能ピクチャであって、表示順が対象ピクチャより早いもの
後続ピクチャ参照可能リストは、さらに2つの部分リストから構成される。
・後続ピクチャ長期参照可能リストListLtFoll:SPS長期RP情報またはSH長期RP情報により指定される後続ピクチャ参照可能ピクチャ
・後続ピクチャ短期参照可能リストListStFoll:SPS短期RPS情報またはSH短期RPS情報により指定される現ピクチャ参照可能ピクチャ
参照ピクチャセット設定部131は、NALユニットタイプがIDR以外の場合に、参照ピクチャセットRPS、すなわち、現ピクチャ短期前方参照可能リストListStCurrBefore、現ピクチャ短期後方参照可能リストListStCurrAfter、現ピクチャ長期参照可能リストListLtCurr、後続ピクチャ短期参照可能リストListStFoll、および、後続ピクチャ長期参照可能リストListLtFollを次の手順で生成する。加えて、現ピクチャ参照可能ピクチャ数を表す変数NumPocTotalCurrを導出する。なお、前記各参照可能リストは、以下の処理の開始前に空に設定されているとする。参照ピクチャセット設定部131は、NALユニットタイプがIDRの場合は、参照ピクチャセットRPSを空として導出する。
(S201)SPS短期RPS情報、および、SH短期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の中から選択する。
(S202)選択された短期RPSに含まれる参照ピクチャ各々のPOCの値を導出し、復号ピクチャバッファ12上に当該POC値と関連付けられて記録されている局所復号画像の位置を検出して、参照ピクチャの復号ピクチャバッファ上の記録位置として導出する。
参照ピクチャのPOC値は、参照ピクチャが前方短期参照ピクチャの場合、対象ピクチャのPOCの値から「delta_poc_s0_minus1[i]+1」の値を減算して導出する。一方、参照ピクチャが後方短期参照ピクチャの場合、対象ピクチャのPOCの値に「delta_poc_s1_minus1[i]+1」の値を加算して導出する。
(S203)短期RPSに含まれる前方参照ピクチャを伝送された順に確認し、関連付けられているused_by_curr_pic_s0_flag[i]の値が1である場合、当該前方参照ピクチャを現ピクチャ短期前方参照可能リストListStCurrBeforeに追加する。それ以外(used_by_curr_pic_s0_flag[i]の値が0)の場合、当該前方参照ピクチャを後続ピクチャ短期参照可能リストListStFollに追加する。
(S204)短期RPSに含まれる後方参照ピクチャを伝送された順に確認し、関連付けられているused_by_curr_pic_s1_flag[i]の値が1である場合、当該後方参照ピクチャを現ピクチャ短期後方参照可能リストListStCurrAfterに追加する。それ以外(used_by_curr_pic_s1_flag[i]の値が0の場合、当該前方参照ピクチャを後続ピクチャ短期参照可能リストListStFollに追加する。
(S205) SPS長期RP情報、および、SH長期RP情報に基づいて、対象ピクチャの復号に用いる長期参照ピクチャセットを特定する。具体的には、num_long_term_spsの数の参照ピクチャを、SPS長期RP情報に含まれ、かつ、対象ピクチャとレイヤIDが等しい参照ピクチャの中から選択して、順に長期参照ピクチャセットに追加する。選択される参照ピクチャは、lt_idx_sps[i]の示す参照ピクチャである。続いて、num_long_term_picsの数の参照ピクチャをSH長期RP情報に含まれる参照ピクチャを順に長期参照ピクチャセットに追加する。対象ピクチャのレイヤIDが0以外の場合には、対象ピクチャとレイヤIDが異なるピクチャの中から、対象ピクチャのPOCと等しいPOCを持つ参照ピクチャをさらに長期参照ピクチャセットに追加する。
(S206)長期参照ピクチャセットに含まれる参照ピクチャ各々のPOCの値を導出し、復号ピクチャバッファ12上で対象ピクチャとレイヤIDが等しい参照ピクチャの中から当該POC値と関連付けられて記録されている局所復号画像の位置を検出して、参照ピクチャの復号ピクチャバッファ上の記録位置として導出する。また、対象ピクチャとレイヤIDが異なる参照ピクチャについては、レイヤIDと対象ピクチャのPOCと関連付けられて記録されている局所復号画像の位置を検出して、参照ピクチャの復号ピクチャバッファ上の記録位置として導出する。
長期参照ピクチャのPOCは、対象ピクチャとレイヤIDが等しい参照ピクチャについては、関連付けて復号されたpoc_lst_lt[i]、または、lt_ref_pic_poc_lsb_sps[i]の値から直接導出される。対象ピクチャとレイヤIDが異なる参照ピクチャについては、対象ピクチャのPOCが設定される。
(S207)長期参照ピクチャセットに含まれる参照ピクチャを順に確認し、関連付けられている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)の場合、当該長期参照ピクチャを後続ピクチャ長期参照可能リストListLtFollに追加する。
(S208)変数NumPocTotalCurrの値を、現ピクチャから参照可能な参照ピクチャの和に設定する。すなわち、変数NumPocTotalCurrの値を、現ピクチャ短期前方参照可能リストListStCurrBefore、現ピクチャ短期後方参照可能リストListStCurrAfter、および、現ピクチャ長期参照可能リストListLtCurrの3つのリストの各要素数の和に設定する。
(参照ピクチャリスト構築処理の詳細)
上記復号手順におけるS16の処理、すなわち、参照ピクチャリスト構築処理の詳細を図1を参照して説明する。既に説明したとおり、参照ピクチャリスト導出部132は、参照ピクチャセットRPSと、RPL修正情報に基づいて参照ピクチャリストRPLを生成する。
参照ピクチャリストはL0参照リストとL1参照リストの2つのリストから構成される。始めに、L0参照リストの構築手順を説明する。L0参照リストは、以下のS301〜S307に示す手順で構築される。
(S301)暫定L0参照リストを生成して、空のリストに初期化する。
(S302)暫定L0参照リストに対し、現ピクチャ短期前方参照可能リストに含まれる参照ピクチャを順に追加する。
(S303)暫定L0参照リストに対し、現ピクチャ短期後方参照可能リストに含まれる参照ピクチャを順に追加する。
(S304)暫定L0参照リストに対し、現ピクチャ長期参照可能リストに含まれる参照ピクチャを順に追加する。
(S305)参照ピクチャリストが修正される場合(RPL修正情報に含まれるlists_modification_present_flagの値が1の場合)、以下のS306a〜S306bの処理を実行する。そうでない場合(lists_modification_present_flagの値が0の場合)、S307の処理を実行する。
(S306a)L0参照ピクチャの修正が有効な場合(RPL修正情報に含まれるref_pic_list_modification_flag_l0の値が1の場合)であって、かつ、現ピクチャ参照可能ピクチャ数NumCurrListが2に等しい場合、S306bを実行する。そうでない場合、S306cを実行する。
(S306b)RPL修正情報に含まれるリスト並べ替え順序list_entry_l0[i]の値を下記の式により設定し、その後、S306cを実行する。
list_entry_l0[0] = 1
list_entry_l0[1] = 0
(S306c)参照リスト並べ替え順序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の位置の参照ピクチャとして格納する。
(S307)暫定L0参照リストをL0参照リストとする。
次にL1参照リストを構築する。なお、L1参照リストも、上記L0参照リストと同様の手順で構築できる。上記L0参照リストの構築手順(S301〜S307)において、L0参照ピクチャ、L0参照リスト、暫定L0参照リスト、list_entry_l0をそれぞれ、L1参照ピクチャ、L1参照リスト、暫定L1参照リスト、list_entry_l1と置き換えればよい。
上記では、図38において、現ピクチャ参照可能ピクチャ数が2の場合にRPL修正情報を省略する例を記載したが、それに限らない。現ピクチャ参照可能ピクチャ数が1の場合にRPL修正情報を省略してもよい。具体的には、参照ピクチャ情報復号部218におけるSHリスト修正情報の復号処理において、参照リスト並べ替え情報を図39に示すシンタックス表に基づいてパースする。図39は、スライスヘッダ復号時に利用される参照リスト並べ替え情報のシンタックス表を例示している。
[ピクチャ復号部11]
ピクチャ復号部11は、符号化データ#1、ヘッダ復号部10より入力されるヘッダ情報、復号ピクチャバッファ12に記録されている参照ピクチャ、および、参照ピクチャリスト導出部132より入力される参照ピクチャリストに基づいて、各ピクチャの局所復号画像を生成して復号ピクチャバッファ12に記録する。
図5は、本実施形態に係るピクチャ復号部11の構成を示す概略図である。ピクチャ復号部11は、エントロピー復号部301、予測パラメータ復号部302、予測パラメータメモリ(予測パラメータ記憶部)307、予測画像生成部308、逆量子化・逆DCT部311、及び加算部312を含んで構成される。
また、予測パラメータ復号部302は、インター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
エントロピー復号部301は、外部から入力された符号化データ#1に対してエントロピー復号を行って、個々の符号(シンタックス要素)を分離し復号する。分離された符号には、予測画像を生成するための予測情報および、差分画像を生成するための残差情報などがある。
エントロピー復号部301は、分離した符号の一部を予測パラメータ復号部302に出力する。分離した符号の一部とは、例えば、予測モードPredMode、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXである。どの符号を復号するか否かの制御は、予測パラメータ復号部302の指示に基づいて行われる。エントロピー復号部301は、量子化係数を逆量子化・逆DCT部311に出力する。この量子化係数は、符号化処理において、残差信号に対してDCT(Discrete Cosine Transform、離散コサイン変換)を行い量子化して得られる係数である。
インター予測パラメータ復号部303は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してインター予測パラメータを復号する。
インター予測パラメータ復号部303は、復号したインター予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。インター予測パラメータ復号部303の詳細については後述する。
イントラ予測パラメータ復号部304は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してイントラ予測パラメータを生成する。イントラ予測パラメータとは、復号対象ブロックの予測画像をイントラ予測を用いて生成する際に必要な情報であり、例えば、イントラ予測モードIntraPredModeである。
イントラ予測パラメータ復号部304は、入力された符号から、デプスイントラ予測モードdmm_modeを復号する。イントラ予測パラメータ復号部304は、デプスイントラ予測モードdmm_modeを用いて、イントラ予測モードIntraPredModeを以下の式から生成する。
IntraPredMode = dmm_mode + 35
デプスイントラ予測モードdmm_modeが0または1、即ち、MODE_DMM_WFULLまたはMODE_DMM_WFULLDELTAを示している場合には、イントラ予測パラメータ復号部304は、入力された符号から、ウェッジレットパターンインデックスwedge_full_tab_idxを復号する。
デプスイントラ予測モードdmm_modeが、MODE_DMM_WFULLDELTAまたはMODE_DMM_CPREDTEXDELTAである場合には、イントラ予測パラメータ復号部304は、入力された符号から、DC1絶対値、DC1符号、DC2絶対値、DC2符号を復号する。デプスイントラ予測モードdmm_modeは、DC1絶対値、DC1符号、DC2絶対値、DC2符号から量子化オフセットDC1DmmQuantOffsetDC1、量子化オフセットDC2DmmQuantOffsetDC2を以下の式より生成する。
DmmQuantOffsetDC1 = (1 - 2*dmm_dc_1_sign_flag) * dmm_dc_1_abs
DmmQuantOffsetDC2 = (1 - 2*dmm_dc_2_sign_flag) * dmm_dc_2_abs
イントラ予測パラメータ復号部304は、生成したイントラ予測モードIntraPredMode、デルタエンド、量子化オフセットDC1DmmQuantOffsetDC1、量子化オフセットDC2DmmQuantOffsetDC2と復号したウェッジレットパターンインデックスwedge_full_tab_idxを予測パラメータとする。
イントラ予測パラメータ復号部304は、イントラ予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。
予測パラメータメモリ307は、予測パラメータを、復号対象のピクチャ及びブロック毎に予め定めた位置に記憶する。具体的には、予測パラメータメモリ307は、インター予測パラメータ復号部303が復号したインター予測パラメータ、イントラ予測パラメータ復号部304が復号したイントラ予測パラメータ及びエントロピー復号部301が分離した予測モードpredModeを記憶する。記憶されるインター予測パラメータには、例えば、予測リスト利用フラグpredFlagLX(インター予測フラグinter_pred_idx)、参照ピクチャインデックスrefIdxLX、ベクトルmvLXがある。
予測画像生成部308には、エントロピー復号部301から入力された予測モードpredModeが入力され、また予測パラメータ復号部302から予測パラメータが入力される。また、予測画像生成部308は、復号ピクチャバッファ12から参照ピクチャを読み出す。予測画像生成部308は、予測モードpredModeが示す予測モードで、入力された予測パラメータと読み出した参照ピクチャを用いて予測ピクチャブロックP(予測画像)を生成する。
ここで、予測モードpredModeがインター予測モードを示す場合、インター予測画像生成部309は、インター予測パラメータ復号部303から入力されたインター予測パラメータと読み出した参照ピクチャを用いてインター予測により予測ピクチャブロックPを生成する。予測ピクチャブロックPはPUに対応する。PUは、上述したように予測処理を行う単位となる複数の画素からなるピクチャの一部分、つまり1度に予測処理が行われる復号対象ブロックに相当する。
インター予測画像生成部309は、予測リスト利用フラグpredFlagLXが1である参照ピクチャリスト(L0参照リスト、もしくはL1参照リスト)に対し、参照ピクチャインデックスrefIdxLXで示される参照ピクチャから、復号対象ブロックを基準としてベクトルmvLXが示す位置にある参照ピクチャブロックを復号ピクチャバッファ12から読み出す。インター予測画像生成部309は、読み出した参照ピクチャブロックについて予測を行って予測ピクチャブロックPを生成する。インター予測画像生成部309は、生成した予測ピクチャブロックPを加算部312に出力する。
予測モードpredModeがイントラ予測モードを示す場合、イントラ予測画像生成部310は、イントラ予測パラメータ復号部304から入力されたイントラ予測パラメータと読み出した参照ピクチャを用いてイントラ予測を行う。具体的には、イントラ予測画像生成部310は、復号対象のピクチャであって、既に復号されたブロックのうち復号対象ブロックから予め定めた範囲にある参照ピクチャブロックを復号ピクチャバッファ12から読み出す。予め定めた範囲とは、復号対象ブロックがいわゆるラスタースキャンの順序で順次移動する場合、例えば、左、左上、上、右上の隣接ブロックのうちのいずれかであり、イントラ予測モードによって異なる。ラスタースキャンの順序とは、各ピクチャにおいて、上端から下端まで各行について、順次左端から右端まで移動させる順序である。
イントラ予測画像生成部310は、読み出した参照ピクチャブロックと、入力された予測パラメータを用いて予測ピクチャブロックを生成する。
イントラ予測画像生成部310は、生成した予測ピクチャブロックPを加算部312に出力する。
逆量子化・逆DCT部311は、エントロピー復号部301から入力された量子化係数を逆量子化してDCT係数を求める。逆量子化・逆DCT部311は、求めたDCT係数について逆DCT(Inverse Discrete Cosine Transform、逆離散コサイン変換)を行い、復号残差信号を算出する。逆量子化・逆DCT部311は、算出した復号残差信号を加算部312に出力する。
加算部312は、インター予測画像生成部309及びイントラ予測画像生成部310から入力された予測ピクチャブロックPと逆量子化・逆DCT部311から入力された復号残差信号の信号値を画素毎に加算して、参照ピクチャブロックを生成する。加算部312は、生成した参照ピクチャブロックを参照ピクチャバッファ12に記憶し、生成した参照ピクチャブロックをピクチャ毎に統合した復号レイヤ画像Tdを外部に出力する。
(インター予測パラメータ復号部の構成)
次に、インター予測パラメータ復号部303の構成について説明する。
図6は、本実施形態に係るインター予測パラメータ復号部303の構成を示す概略図である。インター予測パラメータ復号部303は、インター予測パラメータ復号制御部3031、AMVP予測パラメータ導出部3032、加算部3035及びマージ予測パラメータ導出部3036を含んで構成される。
インター予測パラメータ復号制御部3031は、インター予測に関連する符号(シンタックス要素の復号をエントロピー復号部301に指示し、符号化データに含まれる符号(シンタックス要素)を例えば、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXを抽出する。
インター予測パラメータ復号制御部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_idxから導出した予測リスト利用フラグpredFlagLXと、参照ピクチャインデックスrefIdxLXをAMVP予測パラメータ導出部3032及び予測画像生成部308(図5)に出力し、また予測パラメータメモリ307(図5)に記憶する。インター予測パラメータ復号制御部3031は、抽出したベクトルインデックスmvp_LX_idxをAMVP予測パラメータ導出部3032に出力する。インター予測パラメータ復号制御部3031は、抽出した差分ベクトルmvdLXを加算部3035に出力する。
図7は、本実施形態に係るマージ予測パラメータ導出部3036の構成を示す概略図である。マージ予測パラメータ導出部3036は、マージ候補導出部30361とマージ候補選択部30362を備える。マージ候補導出部30361は、マージ候補格納部303611と、拡張マージ候補導出部303612と、基本マージ候補導出部303613とMPI候補導出部303614を含んで構成される。
マージ候補格納部303611は、拡張マージ候補導出部303612及び基本マージ候補導出部303613から入力されたマージ候補を格納する。なお、マージ候補は、予測リスト利用フラグpredFlagLX、ベクトルmvLX、参照ピクチャインデックスrefIdxLXを含んで構成されている。マージ候補格納部303611において、格納されたマージ候補には、所定の規則に従ってインデックスが割り当てられる。例えば、拡張マージ候補導出部303612またはMPI候補導出部303614から入力されたマージ候補には、インデックスとして「0」を割り当てる。
MPI候補導出部303614は、対象ブロックのレイヤがデプスレイヤであり、なお且つ、動きパラメータ継承を用いることが可能であれば、即ち、デプスフラグdepth_flag及び動きパラメータ継承フラグuse_mpi_flagが共に1の場合に、対象レイヤとは異なるレイヤの動き補償パラメータを用いて、マージ候補を導出する。対象レイヤとは異なるレイヤとしては、例えば、対象のデプスピクチャと同一ビューIDview_id、同一POCを持つテクスチャレイヤのピクチャである。
MPI候補導出部303614は、対象レイヤとは異なるレイヤのピクチャ中の、対象ブロックと同一座標のブロック(対応ブロックとも呼ぶ)の予測パラメータを予測パラメータメモリ307から読みだす。
対応ブロックのサイズが対象ブロックよりも小さい場合には、MPI候補導出部303614は、対応するテクスチャピクチャ中の対象ブロックと同一座標のCTUの分割フラグsplit_flagと、該CTUに含まれる複数のブロックの予測パラメータを読み出す。
対応ブロックのサイズが対象ブロックよりも大きい場合には、MPI候補導出部303614は、対応ブロックの予測パラメータを読み出す。
MPI候補導出部303614は、読みだした予測パラメータをマージ候補としてマージ候補格納部303611に出力する。なお、CTUの分割フラグsplit_flagも読みだした場合には、該分割情報もマージ候補に含める。
拡張マージ候補導出部303612は、変位ベクトル取得部3036122と、インターレイヤマージ候補導出部3036121とインターレイヤ変位マージ候補導出部3036123を含んで構成される。
拡張マージ候補導出部303612は、対象ブロックのレイヤがデプスレイヤでない、又は、動きパラメータ継承を用いることが不可能であれば、即ち、デプスフラグdepth_flagまたは動きパラメータ継承フラグuse_mpi_flagのどちらかが0の場合に、マージ候補を導出する。なお、拡張マージ候補導出部303612は、デプスフラグdepth_flag及び動きパラメータ継承フラグuse_mpi_flagが共に1である場合に、マージ候補を導出してもよい。この場合には、マージ候補格納部303611は、拡張マージ候補導出部303612とMPI候補導出部303614が導出するマージ候補に異なるインデックスを割り当てる。
変位ベクトル取得部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 ))
インターレイヤ変位マージ候補導出部3036123は、変位ベクトル取得部3036122から変位ベクトルを入力される。インターレイヤ変位マージ候補導出部3036123は、入力された変位ベクトルと、変位ベクトルが指す先のレイヤ画像の参照ピクチャインデックスrefIdxLX(例えば、復号対象ピクチャと同一POCを持つベースレイヤ画像のインデックス)をマージ候補としてマージ候補格納部303611に出力する。本マージ候補は、変位予測のインターレイヤ候補(インタービュー候補)でありインターレイヤマージ候補(変位予測)とも記載する。
基本マージ候補導出部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に格納される。
マージ候補選択部30362は、マージ候補格納部303611に格納されているマージ候補のうち、インター予測パラメータ復号制御部3031から入力されたマージインデックスmerge_idxに対応するインデックスが割り当てられたマージ候補を、対象PUのインター予測パラメータとして選択する。マージ候補選択部30362は選択したマージ候補を予測パラメータメモリ307(図5)に記憶するとともに、予測画像生成部308(図5)に出力する。なお、マージ候補選択部30362が、MPI候補導出部303614が導出したマージ候補を選択し、なお且つ、該マージ候補が分割フラグsplit_flagを含んでいる場合には、分割フラグsplit_flagによって分割されたブロックそれぞれに対応する複数の予測パラメータが予測パラメータメモリ307に記憶され、予測画像生成部308に出力される。
図8は、本実施形態に係るAMVP予測パラメータ導出部3032の構成を示す概略図である。AMVP予測パラメータ導出部3032は、ベクトル候補導出部3033と予測ベクトル選択部3034を備える。ベクトル候補導出部3033は、参照ピクチャインデックスrefIdxに基づいて予測パラメータメモリ307(図5)が記憶するベクトル(動きベクトル又は変位ベクトル)をベクトル候補として読み出す。読み出されるベクトルは、復号対象ブロックから予め定めた範囲内にあるブロック(例えば、復号対象ブロックの左下端、左上端、右上端にそれぞれ接するブロックの全部又は一部)のそれぞれに係るベクトルである。
予測ベクトル選択部3034は、ベクトル候補導出部3033が読み出したベクトル候補のうち、インター予測パラメータ復号制御部3031から入力されたベクトルインデックスmvp_LX_idxが示すベクトル候補を予測ベクトルmvpLXとして選択する。予測ベクトル選択部3034は、選択した予測ベクトルmvpLXを加算部3035に出力する。
図9は、ベクトル候補の一例を示す概念図である。図9に示す予測ベクトルリスト602は、ベクトル候補導出部3033において導出される複数のベクトル候補からなるリストである。予測ベクトルリスト602において、左右に一列に配列された5個の長方形は、それぞれ予測ベクトルを示す領域を示す。左端から2番目のmvp_LX_idxの真下の下向きの矢印とその下のmvpLXは、ベクトルインデックスmvp_LX_idxが、予測パラメータメモリ307においてベクトルmvpLXを参照するインデックスであることを示す。
候補ベクトルは、復号処理が完了したブロックであって、復号対象ブロックから予め定めた範囲のブロック(例えば、隣接ブロック)を参照し、参照したブロックに係るベクトルに基づいて生成される。なお、隣接ブロックには、対象ブロックに空間的に隣接するブロック、例えば、左ブロック、上ブロックの他、対象ブロックに時間的に隣接するブロック、例えば、対象ブロックと同じ位置で、表示時刻が異なるブロックから得られたブロックを含む。
加算部3035は、予測ベクトル選択部3034から入力された予測ベクトルmvpLXとインター予測パラメータ復号制御部から入力された差分ベクトルmvdLXを加算してベクトルmvLXを算出する。加算部3035は、算出したベクトルmvLXを予測画像生成部308(図5)に出力する。
(インター予測パラメータ復号制御部の構成)
次に、インター予測パラメータ復号制御部3031の構成について説明する。インター予測パラメータ復号制御部3031は、図10に示すように、マージインデックス復号部30312、ベクトル候補インデックス復号部30313、及び図示しない、分割モード復号部、マージフラグ復号部、インター予測フラグ復号部、参照ピクチャインデックス復号部、ベクトル差分復号部を含んで構成される。分割モード復号部、マージフラグ復号部、マージインデックス復号部、インター予測フラグ復号部、参照ピクチャインデックス復号部、ベクトル候補インデックス復号部30313、ベクトル差分復号部は各々、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXを復号する。
追加予測フラグ復号部30311は、内部に、追加予測フラグ判定部30314を備える。追加予測フラグ判定部30314は、追加予測フラグxpred_flagを符号化データに含まれるか否か(符号化データから読み出して復号するか否か)を判定する。追加予測フラグ判定部30314において、追加予測フラグを符号化データに符号化データに含めると判定された場合には、追加予測フラグ復号部30311は、エントロピー復号部301に、追加予測フラグの復号を通知し、エントロピー復号部301を通じて符号化データから、追加予測フラグに対応するシンタックス要素を抽出する。逆に、追加予測フラグ判定部30314において、符号化データに含めないと判定した場合には、追加予測フラグに、追加予測を示す値(ここでは1)を導出(infer)する。追加予測フラグ判定部30314については後述する。
(変位ベクトル取得部)
変位ベクトル取得部は、対象PUに隣接するブロックが変位ベクトルを持つ場合には、その変位ベクトルを予測パラメータメモリ307から抽出し、予測パラメータメモリ307を参照し、対象PUに隣接するブロックの予測フラグpredFlagLX、参照ピクチャインデックスrefIdxLXとベクトルmvLXを読み出す。変位ベクトル取得部は、対象PUに隣接するブロックの予測パラメータを順に読み出し、隣接ブロックの参照ピクチャインデックスから隣接ブロックが変位ベクトルを備えるか否かを判定する。隣接ブロックが変位ベクトルを備える場合には、その変位ベクトルを出力する。隣接ブロックの予測パラメータに変位ベクトルが無い場合にはゼロベクトルを変位ベクトルとして出力する。
(インター予測画像生成部309)
図10は、本実施形態に係るインター予測画像生成部309の構成を示す概略図である。インター予測画像生成部309は、動き変位補償部3091、残差予測部3092、照度補償部3093、重み予測部3094を含んで構成される。
(動き変位補償)
動き変位補償部3091は、インター予測パラメータ復号部303から入力された、予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXに基づいて、参照ピクチャメモリ306から、参照ピクチャインデックスrefIdxLXで指定された参照ピクチャの対象ブロックの位置を起点として、ベクトルmvLXだけずれた位置にあるブロックを読み出すことによって動き変位補償画像を生成する。ここで、ベクトルmvLXが整数ベクトルでない場合には、動き補償フィルタ(もしくは変位補償フィルタ)と呼ばれる小数位置の画素を生成するためのフィルタを施して、動き変位補償画像を生成する。一般に、ベクトルmvLXが動きベクトルの場合、上記処理を動き補償と呼び、変位ベクトルの場合は変位補償と呼ぶ。ここでは総称して動き変位補償と表現する。以下、L0予測の動き変位補償画像をpredSamplesL0、L1予測の動き変位補償画像をpredSamplesL1と呼ぶ。両者を区別しない場合predSamplesLXと呼ぶ。以下、動き変位補償部3091で得られた動き変位補償画像predSamplesLXに、さらに残差予測および照度補償が行われる例を説明するが、これらの出力画像もまた、動き変位補償画像predSamplesLXと呼ぶ。なお、以下の残差予測および照度補償において、入力画像と出力画像を区別する場合には、入力画像をpredSamplesLX、出力画像をpredSamplesLX´と表現する。
(残差予測)
残差予測部3092は、残差予測実施フラグresPredFlagが1の場合に、入力された動き変位補償画像predSamplesLXに対して、残差予測を行う。残差予測実施フラグresPredFlagが0の場合には、入力された動き変位補償画像predSamplesLXをそのまま出力する。refResSamples残差予測は、予測画像生成の対象とする対象レイヤ(第2のレイヤ画像)とは異なる参照レイヤ(第1のレイヤ画像)の残差を、対象レイヤの予測した画像である動き変位補償画像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) )
〔画像符号化装置〕
以下において、本実施形態に係る画像符号化装置2について、図25を参照して説明する。
(画像符号化装置の概要)
画像符号化装置2は、概略的に言えば、入力画像#10を符号化することによって符号化データ#1を生成し、出力する装置である。
(画像符号化装置の構成)
本実施形態に係る画像符号化装置2の構成例について説明する。図25は、本実施形態に係る画像符号化装置2の構成を示す概略図である。画像符号化装置2は、ヘッダ符号化部10E、ピクチャ符号化部21、復号ピクチャバッファ12、参照ピクチャ決定部13Eを含んで構成される。画像符号化装置2は、複数のレイヤを含む画像において特定の時刻のピクチャから復号を開始する後述するランダムアクセス復号処理が可能である。
[ヘッダ符号化部10E]
ヘッダ符号化部10Eは、入力画像#10に基づいて、NALユニットヘッダ、SPS、PPS、および、スライスヘッダなどをの、NALユニット単位、シーケンス単位、ピクチャ単位、またはスライス単位で復号に利用される情報を生成し、符号化して出力する。
ヘッダ符号化部10Eは、符号化データ#1に含まれるVPSおよびSPSを既定のシンタックス定義に基づいてパースして、シーケンス単位で復号に利用される情報を符号化する。例えば、レイヤ数に関する情報がVPSに符号化され、復号画像の画像サイズに関連する情報がSPSに符号化される。
また、ヘッダ符号化部10Eは、符号化データ#1に含まれるスライスヘッダを既定のシンタックス定義に基づいてパースして、スライス単位で復号に利用される情報を符号化する。例えば、スライスタイプがスライスヘッダから符号化される。
ヘッダ符号化部10Eは、レイヤIDが表すレイヤが独立レイヤではない場合には、シンタックスを変更し、変更後のシンタックスを符号化する。
なお、ヘッダ符号化部10Eは、シンタックスを変更する代わりに、追加のシンタックスを符号化してもよい。
あるいは、ヘッダ符号化部10Eは、シンタックスを変更する代わりに、シンタックスの符号化をスキップしてもよい。すなわち、レイヤIDが表すレイヤが独立レイヤであるか、または、レイヤIDが0である場合に限って、シンタックスを符号化してもよい。
ヘッダ符号化部10Eは、NALユニットヘッダ符号化部211E、依存レイヤ情報符号化部、プロファイルレベル情報符号化部、レプリゼンテーション情報符号化部、スケーリングリスト符号化部、POC情報符号化部2105E、および、参照ピクチャ情報符号化部218Eを備えている。
[NALユニットヘッダ符号化部211E]
NALユニットヘッダ符号化部211EはレイヤID符号化部とNALユニットタイプ符号化部を含んで構成される。
レイヤID符号化部はレイヤIDを符号化し、NALユニットタイプ符号化部は、NALユニットタイプを符号化する。
[依存レイヤ情報符号化部]
依存レイヤ情報符号化部は、VPSおよびVPS拡張から規定のシンタックス定義に基づいて、各レイヤの依存レイヤ情報を符号化するとともに、各レイヤのレプリゼンテーション情報を符号化する。
[プロファイルレベル情報符号化部]
プロファイルレベル情報符号化部は、各レイヤのプロファイルレベル情報を符号化してVPSに含める。また、プロファイルレベル情報符号化部は、独立レイヤ、および、SPSのレイヤIDが0であるレイヤのプロファイルレベル情報を符号化してSPSに含める。
[レプリゼンテーション情報符号化部]
レプリゼンテーション情報符号化部は、図28(a)のシンタックスを符号化してVPSに含めるとともに、図28(b)のシンタックスを符号化してSPSに含める。
具体的には、レプリゼンテーション情報符号化部は、rep_format()を符号化してVPSに含めるとともに、chroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、bit_depth_chroma_minus8などのレプリゼンテーション情報を符号化してVPSに含める。
また、レプリゼンテーション情報符号化部は、SPSのレイヤID(nuh_layer_id)が表すレイヤが独立レイヤではない場合に、レプリゼンテーション情報更新フラグupdate_rep_format_flagを符号化して当該SPSに含める。さらに、符号化されるレプリゼンテーション情報更新フラグupdate_rep_format_flagが1である場合には、chroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、bit_depth_chroma_minus8などのレプリゼンテーション情報を符号化してSPSに含める。
[スケーリングリスト符号化部]
スケーリングリスト符号化部は、SPSのレイヤID(nuh_layer_id)が表すレイヤが独立レイヤではない場合には、sps_infer_scaling_list_flagを符号化し、sps_infer_scaling_list_flagが0以外の場合には、sps_scaling_list_ref_layer_idを符号化してSPSに含める。sps_infer_scaling_list_flagが0の場合には、sps_scaling_list_data_present_flag、および、scaling_list_data()を符号化してSPSに含める。また、同様に、スケーリングリスト符号化部は、PPSのレイヤID(nuh_layer_id)が表すレイヤが独立レイヤではない場合には、pps_infer_scaling_list_flagを符号化し、pps_infer_scaling_list_flagが0以外の場合には、sps_scaling_list_ref_layer_idを符号化してPPSに含める。pps_infer_scaling_list_flagが0の場合には、pps_scaling_list_data_present_flag 、および、scaling_list_data()を符号化してPPSに含める。
[参照ピクチャ決定部13E]
参照ピクチャ決定部13Eは、参照ピクチャ情報符号化部218Eと参照ピクチャセット決定部24と参照ピクチャリスト決定部25を内部に備える。
参照ピクチャセット決定部24は、入力画像#10と復号ピクチャバッファ12に記録されている局所復号画像に基づいて、符号化対象ピクチャの符号化及び局所復号に用いる参照ピクチャセットRPSを決定して出力する。
参照ピクチャリスト決定部25は、入力画像#10と参照ピクチャセットに基づいて、符号化対象ピクチャの符号化及び局所復号に用いる参照ピクチャリストRPLを決定して出力する。
[参照ピクチャ情報符号化部218E]
参照ピクチャ情報符号化部218Eは、ヘッダ符号化部10Eに含まれており、参照ピクチャセットRPSおよび参照ピクチャリストRPLに基づいて、参照ピクチャ情報符号化処理を行い、SPSおよびスライスヘッダに含める、RPS情報およびRPL修正情報を生成する。
(画像復号装置との対応関係)
画像符号化装置2は、画像復号装置1の各構成と対応する構成を含む。ここで、対応とは、同様の処理、または、逆の処理を行う関係にあるということである。
例えば、画像復号装置1が備える参照ピクチャ情報復号部218の参照ピクチャ情報復号処理と、画像符号化装置2が備える参照ピクチャ情報符号化部218Eの参照ピクチャ情報符号化処理とは、同様である。より詳細には、参照ピクチャ情報復号部218は、SPSやスライスヘッダから復号されるシンタックス値としてRPS情報や修正RPL情報を生成する。それに対し、参照ピクチャ情報符号化部218Eは、入力されたRPS情報や修正RPL情報を、SPSやスライスヘッダのシンタックス値として符号化する。
例えば、画像復号装置1において、ビット列から、シンタックス値を復号する処理は、画像符号化装置2において、シンタックス値から、ビット列を符号化する処理と逆の処理としての対応となっている。
(処理の流れ)
画像符号化装置2が、入力画像#10から出力符号化データ#1を生成する手順は次のとおりである。
(S21)入力画像#10を構成する各ピクチャ(対象ピクチャ)に対して、以下のS22〜S29の処理を実行する。
(S22)参照ピクチャセット決定部24は入力画像#10内の対象ピクチャと復号ピクチャバッファ12に記録されている局所復号画像に基づいて参照ピクチャセットRPSを決定して、参照ピクチャリスト決定部25に出力する。また、参照ピクチャセットRPSの生成に必要なRPS情報を導出して、参照ピクチャ情報符号化部218Eに出力する。
(S23)参照ピクチャリスト決定部25は入力画像#10内の対象ピクチャと入力された参照ピクチャセットRPSに基づいて参照ピクチャリストRPLを導出し、ピクチャ符号化部21、および、ピクチャ復号部11に出力する。また、参照ピクチャリストRPLの生成に必要なRPL修正情報を導出して、参照ピクチャ情報符号化部218Eに出力する。
(S24)参照ピクチャ情報符号化部218Eは、参照ピクチャセットRPSおよび参照ピクチャリストRPLに基づいて、SPS、または、スライスヘッダに含めるためのRPS情報およびRPL修正情報を生成する。
(S25)ヘッダ符号化部10Eは、入力画像#10、および、参照ピクチャ決定部13Eで生成されたRPS情報およびRPL修正情報に基づいて、対象ピクチャに適用するSPSを生成して出力する。
(S26)ヘッダ符号化部10Eは、入力画像#10に基づいて、対象ピクチャに適用するPPSを生成して出力する。
(S27)ヘッダ符号化部10Eは、入力画像#10、および、参照ピクチャ決定部13Eで生成されたRPS情報およびRPL修正情報に基づいて、対象ピクチャを構成する各スライスのスライスヘッダを符号化して、符号化データ#1の一部として外部に出力するとともに、ピクチャ復号部11に出力する。
(S28)ピクチャ符号化部21は、入力画像#10に基づいて、対象ピクチャを構成する各スライスのスライスデータを生成して、符号化データ#1の一部として外部に出力する。
(S29)ピクチャ符号化部21は、対象ピクチャの局所復号画像を生成し、対象ピクチャのレイヤIDとPOCに関連付けて復号ピクチャバッファに記録する。
[POC情報符号化部2105E]
図40は、POC情報符号化部2105Eの概略的構成について示した機能ブロック図である。図40に示すように、POC情報符号化部2105Eは、POC設定部21056、POC下位ビット最大値符号化部21051E、POC下位ビット符号化部21052Eを含んで構成される。POC情報符号化部2105Eは、POCの上位ビットPicOrderCntMsbとPOCの下位ビットpic_order_cnt_lsbに分離して符号化される。
POC設定部21056は、同じ時刻の全てのレイヤのピクチャに対して、共通の時刻TIMEを設定する。さらに、POC設定部21056は、対象ピクチャの時刻TIME(共通時刻TIME)に基づいて、対象ピクチャのPOCを設定する。具体的には、対象レイヤのピクチャがPOCを符号化するRAPピクチャである場合(BLAもしくはIDR)において、POCを0に設定し、このときのTIMEを変数TIME_BASEに設定する。TIME_BASEは、POC設定部21056で記録する。
対象レイヤのピクチャがPOCを符号化するRAPピクチャでない場合にはTIMEからTIME_BASEを引いた値をPOCに設定する。
POC下位ビット最大値符号化部21051Eは、全てのレイヤにおいて共通のPOC下位ビット最大値MaxPicOrderCntLsbを設定する。符号化データ#1に設定されたPOC下位ビット最大値MaxPicOrderCntLsbを符号化する。具体的には、POC下位ビット最大値MaxPicOrderCntLsbの対数から定数4を引いた値をlog2_max_pic_order_cnt_lsb_minus4として符号化する。
同じ時刻(output time)を有する複数のレイヤのピクチャに対して、表示時刻POC(POC上位ビット)の更新を同じタイミングで行うことにより、同じ時刻を有する複数のレイヤのピクチャ間で表示時刻POCを有することができる。これにより、参照ピクチャリストにおける、対象レイヤとは異なるレイヤのピクチャを参照ピクチャとして用いる場合の参照ピクチャ管理、および、3次元画像再生のような、複数のレイヤを同期して再生させる場合に、表示タイミングをピクチャの時刻を用いて管理する場合などにおいて、同じ時刻のピクチャであることをPOCを用いて管理することが可能となり、参照ピクチャの探索および同期が容易になるという効果を奏する。
POC下位ビット符号化部21052Eは、POC設定部21056から入力された対象ピクチャのPOCから、対象ピクチャのPOC下位ビットpic_order_cnt_lsbを符号化する。具体的には、入力されたPOCのPOC下位ビット最大値MaxPicOrderCntLsbによる剰余、POC%MaxPicOrderCntLsb(もしくはPOC&(MaxPicOrderCntLsb−1))により、POC下位ビットpic_order_cnt_lsbを求める。POC下位ビット符号化部21052Eは、a)レイヤIDが表すレイヤが独立レイヤ以外のレイヤ、または、b)NALユニットタイプがIDR以外(IDR_W_RADLおよびIDR_N_LP以外の場合)には、対象ピクチャのスライスヘッダにpic_order_cnt_lsbを符号化する。
上記POC設定部21056を備える符号化装置によれば、同じ時刻の全てのレイヤのピクチャに対して、共通の時刻TIMEを設定し、POC下位ビット最大値符号化部21051Eにおいて、全てのレイヤにおいて共通のPOC下位ビット最大値MaxPicOrderCntLsbを設定することにより、既に説明したPOC下位ビットpic_order_cnt_lsbを有する符号化データを生成することができる。
(ピクチャ符号化部21の構成)
次に、本実施形態に係るピクチャ符号化部21の構成について説明する。図26は、本実施形態に係るピクチャ符号化部21の構成を示すブロック図である。ピクチャ符号化部21は、予測画像生成部101、減算部102、DCT・量子化部103、エントロピー符号化部104、逆量子化・逆DCT部105、加算部106、予測パラメータメモリ108、符号化パラメータ決定部110、予測パラメータ符号化部111を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。
予測画像生成部101は、外部から入力されたレイヤ画像Tの視点毎の各ピクチャについて、そのピクチャを分割した領域であるブロック毎に予測ピクチャブロックPを生成する。ここで、予測画像生成部101は、予測パラメータ符号化部111から入力された予測パラメータに基づいて復号ピクチャバッファ12から参照ピクチャブロックを読み出す。予測パラメータ符号化部111から入力された予測パラメータとは、例えば、動きベクトル又は変位ベクトルである。予測画像生成部101は、符号化対象ブロックを起点として予測された動きベクトル又は変位ベクトルが示す位置にあるブロックの参照ピクチャブロックを読み出す。予測画像生成部101は、読み出した参照ピクチャブロックについて複数の予測方式のうちの1つの予測方式を用いて予測ピクチャブロックPを生成する。予測画像生成部101は、生成した予測ピクチャブロックPを減算部102に出力する。なお、予測画像生成部101は、既に説明した予測画像生成部308と同じ動作であるため予測ピクチャブロックPの生成の詳細は省略する。
予測画像生成部101は、予測方式を選択するために、例えば、レイヤ画像に含まれるブロックの画素毎の信号値と予測ピクチャブロックPの対応する画素毎の信号値との差分に基づく誤差値を最小にする予測方式を選択する。予測方式を選択する方法は、これには限られない。
符号化対象のピクチャがベースビューピクチャである場合には、複数の予測方式とは、イントラ予測、動き予測及びマージ予測である。動き予測とは、上述のインター予測のうち、表示時刻間の予測である。マージ予測とは、既に符号化されたブロックであって、符号化対象ブロックから予め定めた範囲内にあるブロックと同一の参照ピクチャブロック及び予測パラメータを用いる予測である。符号化対象のピクチャがノンベースビューピクチャである場合には、複数の予測方式とは、イントラ予測、動き予測、マージ予測、及び変位予測である。変位予測(視差予測)とは、上述のインター予測のうち、別レイヤ画像(別視点画像)間の予測である。さらに、動き予測、マージ予測、及び変位予測である。変位予測(視差予測)に対して、追加予測(残差予測および照度補償)を行う場合と行わない場合の予測がある。
予測画像生成部101は、イントラ予測を選択した場合、予測ピクチャブロックPを生成する際に用いたイントラ予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
予測画像生成部101は、動き予測を選択した場合、予測ピクチャブロックPを生成する際に用いた動きベクトルmvLXを予測パラメータメモリ108に記憶し、インター予測パラメータ符号化部112に出力する。動きベクトルmvLXは、符号化対象ブロックの位置から予測ピクチャブロックPを生成する際の参照ピクチャブロックの位置までのベクトルを示す。動きベクトルmvLXを示す情報には、参照ピクチャを示す情報(例えば、参照ピクチャインデックスrefIdxLX、ピクチャ順序番号POC)を含み、予測パラメータを表すものであっても良い。また、予測画像生成部101は、インター予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
予測画像生成部101は、変位予測を選択した場合、予測ピクチャブロックPを生成する際に用いた変位ベクトルを予測パラメータメモリ108に記憶し、インター予測パラメータ符号化部112に出力する。変位ベクトルdvLXは、符号化対象ブロックの位置から予測ピクチャブロックPを生成する際の参照ピクチャブロックの位置までのベクトルを示す。変位ベクトルdvLXを示す情報には、参照ピクチャを示す情報(例えば、参照ピクチャインデックスrefIdxLX、ビューIDview_id)を含み、予測パラメータを表すものであっても良い。また、予測画像生成部101は、インター予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
予測画像生成部101は、マージ予測を選択した場合、選択した参照ピクチャブロックを示すマージインデックスmerge_idxをインター予測パラメータ符号化部112に出力する。また、予測画像生成部101は、マージ予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
上記の、動き予測、変位予測、マージ予測において、予測画像生成部101は、追加予測として残差予測を行う場合には、既に説明したように予測画像生成部101に含まれる残差予測部3092において残差予測を行い、追加予測として照度補償を行う場合には、既に説明したように予測画像生成部101に含まれる照度補償部3093において照度補償予測を行う。
減算部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、及びマージインデックスmerge_idx等の符号がある。
エントロピー符号化部104は、入力された量子化係数と符号化パラメータをエントロピー符号化して符号化データ#1を生成し、生成した符号化データ#1を外部に出力する。
逆量子化・逆DCT部105は、DCT・量子化部103から入力された量子化係数を逆量子化してDCT係数を求める。逆量子化・逆DCT部105は、求めたDCT係数について逆DCTを行い、符号化残差信号を算出する。逆量子化・逆DCT部105は、算出した符号化残差信号を加算部106に出力する。
加算部106は、予測画像生成部101から入力された予測ピクチャブロックPの信号値と逆量子化・逆DCT部105から入力された符号化残差信号の信号値を画素毎に加算して、参照ピクチャブロックを生成する。加算部106は、生成した参照ピクチャブロックを復号ピクチャバッファ12に記憶する。
予測パラメータメモリ108は、予測パラメータ符号化部111が生成した予測パラメータを、符号化対象のピクチャ及びブロック毎に予め定めた位置に記憶する。
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、上述した予測パラメータやこの予測パラメータに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータのセットの各々を用いて予測ピクチャブロックPを生成する。
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化誤差を示すコスト値を算出する。コスト値は、例えば、符号量と二乗誤差に係数λを乗じた値との和である。符号量は、量子化誤差と符号化パラメータをエントロピー符号化して得られる符号化データ#1の情報量である。二乗誤差は、減算部102において算出された残差信号の残差値の二乗値についての画素間の総和である。係数λは、予め設定されたゼロよりも大きい実数である。符号化パラメータ決定部110は、算出したコスト値が最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化データ#1として外部に出力し、選択されなかった符号化パラメータのセットを出力しない。
予測パラメータ符号化部111は、予測画像生成部101から入力されたパラメータに基づいて予測ピクチャを生成する際に用いる予測パラメータを導出し、導出した予測パラメータを符号化して符号化パラメータのセットを生成する。予測パラメータ符号化部111は、生成した符号化パラメータのセットをエントロピー符号化部104に出力する。
予測パラメータ符号化部111は、生成した符号化パラメータのセットのうち符号化パラメータ決定部110が選択したものに対応する予測パラメータを予測パラメータメモリ108に記憶する。
予測パラメータ符号化部111は、予測画像生成部101から入力された予測モードpredModeがインター予測モードを示す場合、インター予測パラメータ符号化部112を動作させる。予測パラメータ符号化部111は、予測モードpredModeがイントラ予測モードを示す場合、イントラ予測パラメータ符号化部113を動作させる。
インター予測パラメータ符号化部112は、符号化パラメータ決定部110から入力された予測パラメータに基づいてインター予測パラメータを導出する。インター予測パラメータ符号化部112は、インター予測パラメータを導出する構成として、インター予測パラメータ復号部303(図5等、参照)がインター予測パラメータを導出する構成と同一の構成を含む。インター予測パラメータ符号化部112の構成については、後述する。
イントラ予測パラメータ符号化部113は、符号化パラメータ決定部110から入力された予測モードpredModeが示すイントラ予測モードIntraPredModeをインター予測パラメータのセットとして定める。
(インター予測パラメータ符号化部の構成)
次に、インター予測パラメータ符号化部112の構成について説明する。インター予測パラメータ符号化部112は、インター予測パラメータ復号部303に対応する手段である。
図27は、本実施形態に係るインター予測パラメータ符号化部112の構成を示す概略図である。
インター予測パラメータ符号化部112は、インター予測パラメータ符号化制御部1031、マージ予測パラメータ導出部1121、AMVP予測パラメータ導出部1122、減算部1123、及び予測パラメータ統合部1126を含んで構成される。
マージ予測パラメータ導出部1121は、上述のマージ予測パラメータ導出部3036(図7参照)と同様な構成を有する。
インター予測パラメータ符号化制御部1031は、インター予測に関連する符号(シンタックス要素の符号化をエントロピー符号化部104に指示し、符号化データ#1に含まれる符号(シンタックス要素)を例えば、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXを符号化する。
マージ予測パラメータ導出部1121には、予測画像生成部101から入力された予測モードpredModeがマージ予測モードを示す場合、符号化パラメータ決定部110からマージインデックスmerge_idxが入力される。マージインデックスmerge_idxは、予測パラメータ統合部1126に出力される。マージ予測パラメータ導出部1121は、マージ候補のうちマージインデックスmerge_idxが示す参照ブロックの参照ピクチャインデックスrefIdxLX、ベクトルmvLXを予測パラメータメモリ108から読み出す。マージ候補とは、符号化対象となる符号化対象ブロックから予め定めた範囲にある参照ブロック(例えば、符号化対象ブロックの左下端、左上端、右上端に接する参照ブロックのうち)であって、符号化処理が完了した参照ブロックである。
AMVP予測パラメータ導出部1122は、上述のAMVP予測パラメータ導出部3032(図8参照)と同様な構成を有する。
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に出力する。
(復号装置1および符号化装置2の変形例1)
符号化装置2は、シンタックス構成を変更してもよいか否かを示すフラグvps_syntax_change_by_layer_id_flagを符号化し、符号化されたフラグをVPSに含めてもよい。また、符号化装置2は、vps_syntax_change_by_layer_id_flagが1かつレイヤIDが0より大きい場合のみ、独立レイヤのシンタックス構成を変更してもよい。また、符号化装置2は、レイヤ毎に、レイヤiのシンタックス構成を変更してもよいか否かを示すフラグvps_syntax_change_by_layer_id_flag[]を符号化しても良い。このとき、独立レイヤフラグIndependentLayerFlag[i]が独立であることを示す場合(NumDirectRefLayers[i]が0より大きい場合)のみ、フラグvps_syntax_change_by_layer_id_flag[i]を復号しても良い。
この場合、復号装置1のヘッダ復号部10は、シンタックス構成を変更してもよいか否かを示すフラグvps_syntax_change_by_layer_id_flagをVPS等から復号する。なお、レイヤ毎にフラグvps_syntax_change_by_layer_id_flagを符号化する場合には、復号装置1は、レイヤiのフラグvps_syntax_change_by_layer_id_flag[i]を順に復号する。独立レイヤフラグIndependentLayerFlag[i]が独立であることを示す場合(NumDirectRefLayers[i]が0の場合)のみ、フラグvps_syntax_change_by_layer_id_flag[i]を復号しても良い。また、復号装置1のヘッダ復号部10の内部に設ける、プロファイルレベル復号部2102、レプリゼンテーション情報復号部2103、および、スケーリングリスト復号部2104は、以下に示す処理を実行するように構成されることになる。
[プロファイルレベル復号部2102]
プロファイルレベル復号部2102は、VPSから各レイヤのプロファイルレベル情報を復号する。また、プロファイルレベル復号部2102は、SPSを復号する場合において、フラグvps_syntax_change_by_layer_id_flagが0であるか、もしくは、SPSのレイヤIDが0のときには、レイヤIDが示すレイヤが独立レイヤであるか否かに関わらず、SPSからもプロファイルレベル情報を復号する(図41の(b)を参照)。
[レプリゼンテーション情報復号部2103]
レプリゼンテーション情報復号部2103は、図41(a)のシンタックスをVPSから復号し、図28(b)のシンタックスをSPSから復号する。
レプリゼンテーション情報復号部2103は、フラグvps_syntax_change_by_layer_id_flagが0以外であり、尚且つ、SPSのレイヤIDが0より大きい場合には、レプリゼンテーション情報更新フラグupdate_rep_format_flagがSPSに含まれ、そのフラグをSPSから復号する。update_rep_format_flagがSPSに含まれない場合には、update_rep_format_flagを0と導出(infer)する。update_rep_format_flagが1の場合には、レプリゼンテーション情報復号部2103はさらにchroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、bit_depth_chroma_minus8などのレプリゼンテーション情報を復号する。update_rep_format_flagが0の場合には、VPSのrep_format()において既に復号されたレプリゼンテーション情報を対象レイヤに対するレプリゼンテーション情報として用いる。
[スケーリングリスト復号部2104]
スケーリングリスト復号部2104は、フラグvps_syntax_change_by_layer_id_flagが0以外であり、かつ、レイヤIDが0より大きい場合(レイヤIDが0以外の場合)には、SPSからsps_infer_scaling_list_flagを復号する(図41の(b)を参照)。sps_infer_scaling_list_flagが0以外の場合には、さらに、sps_scaling_list_ref_layer_idを復号する。sps_infer_scaling_list_flagが0の場合には、sps_scaling_list_data_present_flagと、scaling_list_data()を復号しスケーリングリストを復号する。
スケーリングリスト復号部2104は、フラグvps_syntax_change_by_layer_id_flagが0以外であり、かつ、レイヤIDが0より大きい場合(レイヤIDが0以外の場合)には、PPSからpps_infer_scaling_list_flagを復号する(図42の(a)を参照)。pps_infer_scaling_list_flagが0以外の場合には、さらに、pps_scaling_list_ref_layer_idを復号する。pps_infer_scaling_list_flagが0の場合には、pps_scaling_list_data_present_flagと、scaling_list_data()を復号しスケーリングリストを復号する。
[POC情報復号部2105]
POC情報復号部2105は、a)フラグvps_syntax_change_by_layer_id_flagが0以外であり、尚且つ、レイヤIDが0より大きい場合(レイヤIDが0以外の場合)、または、b)NALユニットタイプがIDRピクチャを示していない場合(NAL_UNIT_TYPEがIDR_W_RADLでもIDR_N_LPでもない場合)には、スライスヘッダからslice_pic_order_cnt_lsbを復号する(図42の(b)を参照)。
[レプリゼンテーション情報符号化部]
また、レプリゼンテーション情報符号化部は、フラグvps_syntax_change_by_layer_id_flagが0以外であり、かつ、SPSのレイヤIDが0より大きい場合に、レプリゼンテーション情報更新フラグupdate_rep_format_flagを符号化して当該SPSに含める。さらに、符号化されるレプリゼンテーション情報更新フラグupdate_rep_format_flagが1である場合には、chroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、bit_depth_chroma_minus8などのレプリゼンテーション情報を符号化してSPSに含める。
[スケーリングリスト符号化部]
スケーリングリスト符号化部は、フラグvps_syntax_change_by_layer_id_flagが0以外であり、かつ、レイヤIDが0より大きい場合(レイヤIDが0以外の場合)には、sps_infer_scaling_list_flagを符号化し、そのsps_infer_scaling_list_flagが0以外の場合には、sps_scaling_list_ref_layer_idを符号化してSPSに含める。sps_infer_scaling_list_flagが0の場合には、sps_scaling_list_data_present_flag、および、scaling_list_data()を符号化してSPSに含める。また、同様に、スケーリングリスト符号化部は、フラグvps_syntax_change_by_layer_id_flagが0以外であり、かつ、レイヤIDが0より大きい場合(レイヤIDが0以外の場合)には、pps_infer_scaling_list_flagを符号化し、そのpps_infer_scaling_list_flagが0以外の場合には、sps_scaling_list_ref_layer_idを符号化してPPSに含める。pps_infer_scaling_list_flagが0の場合には、pps_scaling_list_data_present_flag 、および、scaling_list_data()を符号化してPPSに含める。
[POC情報符号化部2105E]
POC情報符号化部2105Eは、a)フラグvps_syntax_change_by_layer_id_flagが0以外であり、尚且つ、レイヤIDが0より大きい場合(レイヤIDが0以外の場合)、または、b)NALユニットタイプがIDRピクチャを示していない場合(NAL_UNIT_TYPEがIDR_W_RADLでもIDR_N_LPでもない場合)には、スライスヘッダにおいてslice_pic_order_cnt_lsbを符号化する。
なお、レイヤ毎にシンタックス構成を変更してもよいか否かを示すフラグのリストvps_syntax_change_by_layer_id_flag[]を符号化する場合には、SPS、PPS、スライスヘッダの復号において、各SPS、PPS、スライスヘッダのレイヤID(nuh_layer_id)に対応するフラグvps_syntax_change_by_layer_id[nuh_layer_id]に応じて、各情報を復号するか否かを決定するための上記判定を実行する。なお、この場合、vps_syntax_change_by_layer_id[nuh_layer_id]が既にレイヤ単位の情報を備えているため、上記までの説明において、フラグvps_syntax_change_by_layer_id_flagが0以外であり、尚且つ、レイヤIDが0より大きい場合(レイヤIDが0以外の場合)の判定は、vps_syntax_change_by_layer_id[nuh_layer_id]が0以外の判定に置き換える。
なお、シンタックス構成を変更しても良いかを示す所定のフラグの名称はvps_syntax_change_by_layer_id_flagに限らない。例えば、syntax_change_enable_flag等の名称を用いても良い。また、所定のフラグは真偽が逆のフラグでも良い。つまり、シンタックス変更を許可することを示すフラグではなく、シンタックス変更を許可しないことを示すフラグ(例えば、syntax_change_disable_flag)としても良い。この場合、「フラグvps_syntax_change_by_layer_id_flagが0以外であるか否か」の判定は、「フラグが0であるかか否か」の判定に置き換え、「フラグvps_syntax_change_by_layer_id_flagが0であるか否か」の判定は、「フラグが0以外であるか否か」の判定に置き換える。
(変形例1に関する付記事項)
符号化装置2は、各レイヤのvps_syntax_change_by_layer_id_flagを、VPSを通じて復号装置1にシグナリングしてもよい。
(復号装置1および符号化装置2の変形例2)
動画像を構成する複数のレイヤを、シンタックス変更を許可するレイヤとシンタックス変更を許可しないレイヤとに分けてもよい。
例えば、レイヤIDが規定の値(例えば、LAYER_ID_FOR_SYNTAX_CHANGEの値)よりも小さいレイヤ(すなわち、レイヤIDが0を示すレイヤ、または、レイヤIDが特定の範囲内の値(1以上LAYER_ID_FOR_SYNTAX_CHANGE未満の値を示すようなレイヤ)をシンタックス変更が許可されるレイヤとし、レイヤIDが規定の値以上であるレイヤをシンタックス変更が許可されないレイヤとしてもよい。
この場合、符号化装置2は、レイヤIDが規定の閾値(例えば、LAYER_ID_FOR_SYNTAX_CHANGEの値)よりも小さい各レイヤのシンタックス構成を変更してもよい。そして、符号化装置2は、LAYER_ID_FOR_SYNTAX_CHANGEの値を符号化してSPSおよび/またはPPSに含めてもよい。
この場合、復号装置1のヘッダ復号部10の内部に設ける、プロファイルレベル復号部2102、および、スケーリングリスト復号部2104は、以下に示す処理を実行するように構成されることになる。
[プロファイルレベル復号部2102]
プロファイルレベル復号部2102は、VPSから各レイヤのプロファイルレベル情報を復号する。また、プロファイルレベル復号部2102は、SPSを復号する場合において、SPSのレイヤID(NALユニットタイプがSPSであるようなNALユニットヘッダに含まれているnuh_layer_id)がLAYER_ID_FOR_SYNTAX_CHANGEの値以上であるか、もしくは、SPSのレイヤIDが0のときには、レイヤIDが示すレイヤが独立レイヤであるか否かに関わらず、SPSからもプロファイルレベル情報を復号する(図43の(a)を参照)。
[レプリゼンテーション情報復号部2103]
レプリゼンテーション情報復号部2103は、SPSのレイヤID(nuh_layer_id)がLAYER_ID_FOR_SYNTAX_CHANGEの値より小さく、かつ、SPSのレイヤIDが0より大きい場合には、レプリゼンテーション情報更新フラグupdate_rep_format_flagがSPSに含まれ、そのフラグをSPSから復号する。update_rep_format_flagがSPSに含まれない場合には、update_rep_format_flagを0と導出(infer)する。update_rep_format_flagが1の場合には、レプリゼンテーション情報復号部2103はさらにchroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、bit_depth_chroma_minus8などのレプリゼンテーション情報を復号する。update_rep_format_flagが0の場合には、VPSのrep_format()において既に復号されたレプリゼンテーション情報を対象レイヤに対するレプリゼンテーション情報として用いる。
[スケーリングリスト復号部2104]
スケーリングリスト復号部2104は、SPSのレイヤID(nuh_layer_id)がLAYER_ID_FOR_SYNTAX_CHANGEの値より小さく、かつ、レイヤIDが0より大きい場合には、SPSからsps_infer_scaling_list_flagを復号する(図41の(b)を参照)。sps_infer_scaling_list_flagが0以外の場合には、さらに、sps_scaling_list_ref_layer_idを復号する。sps_infer_scaling_list_flagが0の場合には、sps_scaling_list_data_present_flagと、scaling_list_data()を復号しスケーリングリストを復号する。
スケーリングリスト復号部2104は、PPSのレイヤID(nuh_layer_id)がLAYER_ID_FOR_SYNTAX_CHANGEの値より小さく、レイヤIDが0より大きい場合(レイヤIDが0以外の場合)には、PPSからpps_infer_scaling_list_flagを復号する(図42の(a)を参照)。pps_infer_scaling_list_flagが0以外の場合には、さらに、pps_scaling_list_ref_layer_idを復号する。pps_infer_scaling_list_flagが0の場合には、pps_scaling_list_data_present_flagと、scaling_list_data()を復号しスケーリングリストを復号する。
[POC情報復号部2105]
POC情報復号部2105は、a)スライスヘッダのレイヤID(nuh_layer_id)がLAYER_ID_FOR_SYNTAX_CHANGEの値より小さく、かつ、レイヤIDが0より大きい場合(レイヤIDが0以外の場合)、または、b)NALユニットタイプがIDRピクチャを示していない場合(NAL_UNIT_TYPEがIDR_W_RADLでもIDR_N_LPでもない場合)には、スライスヘッダからslice_pic_order_cnt_lsbを復号する(図42の(b)を参照)。
[レプリゼンテーション情報符号化部]
また、レプリゼンテーション情報符号化部は、フラグvps_syntax_change_by_layer_id_flagが0以外であり、かつ、SPSのレイヤIDが0より大きい場合に、レプリゼンテーション情報更新フラグupdate_rep_format_flagを符号化して当該SPSに含める。さらに、符号化されるレプリゼンテーション情報更新フラグupdate_rep_format_flagが1である場合には、chroma_format_idc、separate_colour_plane_flag、pic_width_in_luma_samples、pic_height_in_luma_samples、bit_depth_luma_minus8、bit_depth_chroma_minus8などのレプリゼンテーション情報を符号化してSPSに含める。
[スケーリングリスト符号化部]
スケーリングリスト符号化部は、SPSのレイヤID(nuh_layer_id)がLAYER_ID_FOR_SYNTAX_CHANGEの値より小さく、かつ、SPSのレイヤIDが0より大きい場合(レイヤIDが0以外の場合)には、sps_infer_scaling_list_flagを符号化し、sps_infer_scaling_list_flagが0以外の場合には、sps_scaling_list_ref_layer_idを符号化してSPSに含める。sps_infer_scaling_list_flagが0の場合には、sps_scaling_list_data_present_flag、および、scaling_list_data()を符号化してSPSに含める。また、同様に、スケーリングリスト符号化部は、PPSのレイヤID(nuh_layer_id)がLAYER_ID_FOR_SYNTAX_CHANGEの値より小さく、かつ、PPSのレイヤIDが0より大きい場合(レイヤIDが0以外の場合)には、pps_infer_scaling_list_flagを符号化し、pps_infer_scaling_list_flagが0以外の場合には、sps_scaling_list_ref_layer_idを符号化してPPSに含める。pps_infer_scaling_list_flagが0の場合には、pps_scaling_list_data_present_flag 、および、scaling_list_data()を符号化してPPSに含める。
[POC情報符号化部2105E]
POC情報符号化部2105Eは、a)ピクチャのレイヤID(nuh_layer_id)がLAYER_ID_FOR_SYNTAX_CHANGEの値より小さく、かつ、ピクチャのレイヤIDが0より大きい場合(レイヤIDが0以外の場合)、または、b)ピクチャのNALユニットタイプがIDRピクチャを示していない場合(NAL_UNIT_TYPEがIDR_W_RADLでもIDR_N_LPでもない場合)には、スライスヘッダにおいてslice_pic_order_cnt_lsbを符号化する。
なお、上述した実施形態における画像符号化装置2、画像復号装置1の一部、例えば、エントロピー復号部301、予測パラメータ復号部302、予測画像生成部101、DCT・量子化部103、エントロピー符号化部104、逆量子化・逆DCT部105、符号化パラメータ決定部110、予測パラメータ符号化部111、エントロピー復号部301、予測パラメータ復号部302、予測画像生成部308、逆量子化・逆DCT部311をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、画像符号化装置2、画像復号装置1のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
また、上述した実施形態における画像符号化装置2、画像復号装置1の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現しても良い。画像符号化装置2、画像復号装置1の各機能ブロックは個別にプロセッサ化しても良いし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
(まとめ)
本発明の態様1に係る画像復号装置は、スケーラブル符号化された画像を復号する画像復号装置(画像復号装置1)であって、NALユニットヘッダに含まれているレイヤIDを復号するレイヤID復号部(レイヤID復号部2111)と、レイヤ間の依存関係の有無を示す依存レイヤ情報を復号するとともに、上記依存レイヤ情報に基づいて、上記レイヤIDによって示されるレイヤが上記依存関係のない独立レイヤであるか否かを判定する依存レイヤ情報復号部(依存レイヤ情報復号部2101)と、ビデオパラメータセットからプロファイルレベル情報を復号するプロファイルレベル情報復号部(プロファイルレベル情報復号部2102)と、を備え、上記プロファイルレベル情報復号部は、上記レイヤIDによって示されるレイヤが上記独立レイヤであると判定された場合、シーケンスパラメータセットからもプロファイルレベル情報を復号する。
上記の構成によれば、上記画像復号装置は、シンタックスの書き換えなしに独立レイヤを抽出し、非スケーラブルデコーダに再生させることを可能にする、という効果を奏する。
本発明の態様2に係る画像復号装置は、上記態様1において、上記プロファイルレベル情報復号部が、上記レイヤIDによって示されるレイヤが上記独立レイヤであると判定された場合、上記レイヤIDが0であるか、または、シンタックス変更に関する特定のフラグ(フラグvps_syntax_change_by_layer_id_flag)の値が0であるときに限り、上記シーケンスパラメータセットからもプロファイルレベル情報を復号してもよい。
本発明の態様3に係る画像復号装置は、上記態様1において、上記プロファイルレベル情報復号部が、上記レイヤIDによって示されるレイヤが上記独立レイヤであると判定された場合、上記レイヤIDが0であるか、または、上記レイヤIDが特定の範囲内の値であるときに限り、上記シーケンスパラメータセットからもプロファイルレベル情報を復号してもよい。
本発明の態様4に係る画像符号化装置は、スケーラブル符号化された画像を符号化する画像符号化装置(画像符号化装置2)であって、NALユニットヘッダに含めるレイヤIDを符号化するレイヤID符号化部と、レイヤ間の依存関係の有無を示す依存レイヤ情報を符号化する依存レイヤ情報符号化部と、ビデオパラメータセットおよびシーケンスパラメータセットの各パラメータセットについて、該パラメータセットに含めるプロファイルレベル情報を符号化するプロファイルレベル情報符号化部とを備え、上記プロファイルレベル情報符号化部は、上記レイヤIDによって示されるレイヤが上記独立レイヤであると判定された場合に、シーケンスパラメータセットに含めるプロファイルレベル情報を符号化する。
本発明の態様5に係る符号化データは、NALユニットヘッダとNALユニットデータとから構成されるNALユニットを1つ以上含んでいる符号化データであって、上記符号化データに含まれる1つ以上の上記NALユニットヘッダの各々には、レイヤIDと、該NALユニットヘッダを含むNALユニットの種類を規定するNALユニットタイプとが含まれており、上記NALユニットタイプがビデオパラメータセットであるNALユニットには、プロファイルレベル情報とレイヤ間の依存関係の有無を示す依存レイヤ情報が含まれており、上記NALユニットタイプがシーケンスパラメータセットであるNALユニットであって、上記レイヤIDによって示されるレイヤが独立レイヤであるようなNALユニットにはプロファイルレベル情報が含まれている、符号化データである。
本発明の態様6に係る画像復号装置は、スケーラブル符号化された画像を復号する画像復号装置であって、NALユニットヘッダに含まれているレイヤIDを復号するレイヤID復号部と、レイヤ間の依存関係の有無を示す依存レイヤ情報を復号するとともに、上記依存レイヤ情報に基づいて、上記レイヤIDによって示されるレイヤが上記依存関係のない独立レイヤであるか否かを判定する依存レイヤ情報復号部と、スライスヘッダからPOC情報を復号するPOC情報復号部と、を備え、上記POC情報復号部は、NALユニットタイプがIDRピクチャを示していない場合に上記POC情報を復号するように構成され、上記POC情報復号部は、上記レイヤIDによって示されるレイヤが上記独立レイヤ以外のレイヤであると判定された場合にも、上記POC情報を復号する。
上記の構成によれば、上記画像復号装置は、シンタックスの書き換えなしに独立レイヤを抽出し、非スケーラブルデコーダに再生させることを可能にする、という効果を奏する。
本発明の態様7に係る画像復号装置は、上記態様6において、上記POC情報復号部は、上記NALユニットタイプがIDRピクチャを示している場合には、上記レイヤIDに関する特定のフラグ(例えば、vps_syntax_change_by_layer_idフラグ)の値が0でないときに限り、上記POC情報を復号してもよい。
本発明の態様8に係る画像復号装置は、上記態様6において、上記POC情報復号部は、上記NALユニットタイプがIDRピクチャを示している場合には、上記レイヤIDが特定の範囲内の値(例えば、1以上LAYER_ID_FOR_SYNTAX_CHANGE未満の値)であるときに限り、上記シーケンスパラメータセットからもプロファイルレベル情報を復号してもよい。
本発明の態様9に係る画像符号化装置は、スケーラブル符号化された画像を符号化する画像符号化装置であって、NALユニットヘッダに含めるレイヤIDを符号化するレイヤID符号化部と、レイヤ間の依存関係の有無を示す依存レイヤ情報を符号化する依存レイヤ情報符号化部と、NALユニットタイプがIDRピクチャ以外である場合、もしくは、レイヤIDによって示されるレイヤが上記独立レイヤ以外のレイヤであると判定された場合、スライスヘッダにPOC情報を符号化するPOC情報符号化部と、を備えている。
本発明の態様10に係る符号化データは、NALユニットヘッダとNALユニットデータとから構成されるNALユニットを1つ以上含んでいる符号化データであって、上記符号化データに含まれる1つ以上の上記NALユニットヘッダの各々には、レイヤIDと、該NALユニットヘッダを含むNALユニットの種類を規定するNALユニットタイプとが含まれており、NALユニットタイプがIDRピクチャ以外である場合、もしくは、レイヤIDによって示されるレイヤが上記独立レイヤ以外のレイヤである場合に限り、スライスヘッダにPOC情報が含まれている、符号化データである。
本発明の態様11に係る画像復号装置は、スケーラブル符号化された画像を復号する画像復号装置であって、NALユニットヘッダに含まれているレイヤIDを復号するレイヤID復号部と、レイヤ間の依存関係の有無を示す依存レイヤ情報を復号するとともに、上記依存レイヤ情報に基づいて、上記レイヤIDによって示されるレイヤが上記依存関係のない独立レイヤであるか否かを判定する依存レイヤ情報復号部と、ビデオパラメータセットからレプリゼンテーション情報を復号するレプリゼンテーション情報復号部と、を備え、上記レプリゼンテーション情報復号部は、上記レイヤIDによって示されるレイヤが上記独立レイヤではないと判定された場合に、シーケンスパラメータセットからレプリゼンテーション情報更新フラグを復号し、レプリゼンテーション情報更新フラグが0以外の場合にレプリゼンテーション情報を復号する。
上記の構成によれば、上記画像復号装置は、シンタックスの書き換えなしに独立レイヤを抽出し、非スケーラブルデコーダに再生させることを可能にする、という効果を奏する。
本発明の態様12に係る画像復号装置は、上記態様11において、上記レプリゼンテーション情報復号部は、上記レイヤIDに関する特定のフラグ(例えば、vps_syntax_change_by_layer_idフラグ)の値が0でないときに限り、シーケンスパラメータセットからレプリゼンテーション情報更新フラグを復号してもよい。
本発明の態様13に係る画像復号装置は、上記態様11において、上記レプリゼンテーション情報復号部は、上記レイヤIDが特定の範囲内の値(例えば、1以上LAYER_ID_FOR_SYNTAX_CHANGE未満の値)であるときに限り、シーケンスパラメータセットからレプリゼンテーション情報更新フラグを復号してもよい。
本発明の態様14に係る画像符号化装置は、スケーラブル符号化された画像を符号化する画像符号化装置であって、NALユニットヘッダに含めるレイヤIDを符号化するレイヤID符号化部と、レイヤ間の依存関係の有無を示す依存レイヤ情報を符号化する依存レイヤ情報符号化部と、ビデオパラメータセットに含めるレプリゼンテーション情報を符号化するレプリゼンテーション情報符号化部とを備え、上記レプリゼンテーション情報符号化部は、上記レイヤIDによって示されるレイヤが上記独立レイヤではないと判定された場合に、シーケンスパラメータセットに含めるレプリゼンテーション情報更新フラグを符号化する。
本発明の態様15に係る符号化データは、NALユニットヘッダとNALユニットデータとから構成されるNALユニットを1つ以上含んでいる符号化データであって、上記符号化データに含まれる1つ以上の上記NALユニットヘッダの各々には、レイヤIDと、該NALユニットヘッダを含むNALユニットの種類を規定するNALユニットタイプとが含まれており、上記NALユニットタイプがビデオパラメータセットであるNALユニットにはレプリゼンテーション情報が含まれており、上記NALユニットタイプがシーケンスパラメータセットであるNALユニットであって、上記レイヤIDによって示されるレイヤが独立レイヤでないようなNALユニットには、レプリゼンテーション情報更新フラグが含まれている、符号化データである。
本発明の態様16に係る画像復号装置は、スケーラブル符号化された画像を復号する画像復号装置であって、NALユニットタイプがシーケンスパラメータセットであるNALユニットヘッダに含まれているレイヤIDを復号するレイヤID復号部と、レイヤ間の依存関係の有無を示す依存レイヤ情報を復号するとともに、上記依存レイヤ情報に基づいて、上記レイヤIDによって示されるレイヤが上記依存関係のない独立レイヤであるか否かを判定する依存レイヤ情報復号部と、スケーリングリストを復号するスケーリングリスト復号部と、を備え、上記スケーリングリスト復号部は、上記レイヤIDによって示されるレイヤが上記独立レイヤ以外であると判定された場合に、シーケンスパラメータセットおよびピクチャパラメータセットからスケーリングリスト予測フラグを復号し、スケーリングリスト予測フラグが0の場合にはスケーリングリストを復号する。
上記の構成によれば、上記画像復号装置は、シンタックスの書き換えなしに独立レイヤを抽出し、非スケーラブルデコーダに再生させることを可能にする、という効果を奏する。
本発明の態様17に係る画像復号装置は、上記態様16において、上記スケーリングリスト復号部は、上記レイヤIDに関する特定のフラグ(例えば、vps_syntax_change_by_layer_idフラグ)の値が0でないときに限り、上記シーケンスパラメータセットおよび上記ピクチャパラメータセットからスケーリングリスト予測フラグを復号してもよい。
本発明の態様18に係る画像復号装置は、上記態様16において、上記スケーリングリスト復号部は、上記レイヤIDが特定の範囲内の値(例えば、1以上LAYER_ID_FOR_SYNTAX_CHANGE未満の値)であるときに限り、上記シーケンスパラメータセットから上記スケーリングリスト予測フラグを復号してもよい。
本発明の態様19に係る画像符号化装置は、スケーラブル符号化された画像を符号化する画像符号化装置であって、NALユニットヘッダに含めるレイヤIDを符号化するレイヤID符号化部と、レイヤ間の依存関係の有無を示す依存レイヤ情報を符号化する依存レイヤ情報符号化部と、スケーリングリストを符号化するスケーリングリスト符号化部と、を備え、上記スケーリングリスト符号化部は、上記レイヤIDによって示されるレイヤが上記独立レイヤ以外である判定された場合に、シーケンスパラメータセットおよびピクチャパラメータセットにスケーリングリスト予測フラグを符号化する。
本発明の態様20に係る符号化データは、NALユニットヘッダとNALユニットデータとから構成されるNALユニットを1つ以上含んでいる符号化データであって、上記符号化データに含まれる1つ以上の上記NALユニットヘッダの各々には、レイヤIDと、該NALユニットヘッダを含むNALユニットの種類を規定するNALユニットタイプとが含まれており、上記NALユニットタイプがシーケンスパラメータセットであるNALユニットであって、上記レイヤIDによって示されるレイヤが独立レイヤでないようなNALユニット、および、上記NALユニットタイプがピクチャパラメータセットであるNALユニットであって、上記レイヤIDによって示されるレイヤが独立レイヤでないようなNALユニットに、スケーリングリスト予測フラグが含まれている、符号化データである。
本発明の態様21に係る符号化データは、NALユニットヘッダとNALユニットデータとから構成されるNALユニットを1つ以上含んでいるアクセスユニットから構成される符号化データであって、上記符号化データに含まれる1つ以上の上記NALユニットヘッダの各々には、レイヤIDと、該NALユニットヘッダを含むNALユニットの種類を規定するNALユニットタイプとが含まれており、上記NALユニットタイプがビデオパラメータセットであるNALユニットにはレイヤ間の依存関係の有無を示す依存レイヤ情報が含まれており、上記NALユニットタイプがピクチャであるNALユニットにはスライスヘッダにおいて、POC情報が含まれており、上記アクセスユニット内に含まれる、上記依存レイヤ情報において参照レイヤとなるレイヤおよび被参照レイヤとなると定義されたレイヤに属する全てのピクチャは同じPOCを有することを特徴とする。
本発明の態様22に係る符号化データは、NALユニットヘッダとNALユニットデータとから構成されるNALユニットを1つ以上含んでいるアクセスユニットから構成される符号化データであって、上記符号化データに含まれる1つ以上の上記NALユニットヘッダの各々には、レイヤIDと、該NALユニットヘッダを含むNALユニットの種類を規定するNALユニットタイプとが含まれており、上記NALユニットタイプがビデオパラメータセットであるNALユニットにはレイヤ間の依存関係の有無を示す依存レイヤ情報が含まれており、上記NALユニットタイプがピクチャであるNALユニットにはスライスヘッダにおいてPOC情報が含まれており、上記アクセスユニット内に含まれる属するピクチャにおいて異なるPOCを有する可能性がある場合には、アクセスユニットの前に、アクセスユニットの区切りを表すアクセスユニットデリミタを有していることを特徴とする。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。