図2〜図31に基づいて、本発明の一実施形態に係る階層動画像復号装置1および階層動画像符号化装置2を説明すれば以下のとおりである。
〔概要〕
本実施の形態に係る階層動画像復号装置(画像復号装置)1は、階層動画像符号化装置(画像符号化装置)2によって階層符号化された符号化データを復号する。階層符号化とは、動画像を低品質のものから高品質のものにかけて階層的に符号化する符号化方式のことである。階層符号化は、例えば、SVCやSHVCにおいて標準化されている。なお、ここでいう動画像の品質とは、主観的および客観的な動画像の見栄えに影響する要素のことを広く意味する。動画像の品質には、例えば、“解像度”、“フレームレート”、“画質”、および、“画素の表現精度”が含まれる。よって、以下、動画像の品質が異なるといえば、例示的には、“解像度”等が異なることを指すが、これに限られない。例えば、異なる量子化ステップで量子化された動画像の場合(すなわち、異なる符号化雑音により符号化された動画像の場合)も互いに動画像の品質が異なるといえる。
また、階層符号化技術は、階層化される情報の種類の観点から、(1)空間スケーラビリティ、(2)時間スケーラビリティ、(3)SNR(Signal to Noise Ratio)スケーラビリティ、および(4)ビュースケーラビリティに分類されることもある。空間スケーラビリティとは、解像度や画像のサイズにおいて階層化する技術である。時間スケーラビリティとは、フレームレート(単位時間のフレーム数)において階層化する技術である。SNRスケーラビリティは、符号化雑音において階層化する技術である。また、ビュースケーラビリティは、各画像に対応付けられた視点位置において階層化する技術である。
本実施形態に係る階層動画像符号化装置2及び階層動画像復号装置1の詳細な説明に先立って、まず(1)階層動画像符号化装置2によって生成され、階層動画像復号装置1によって復号される階層符号化データのレイヤ構造を説明し、次いで(2)各レイヤで採用できるデータ構造の具体例について説明を行う。
〔階層符号化データのレイヤ構造〕
ここで、図2を用いて、階層符号化データの符号化および復号について説明すると次のとおりである。図2は、動画像を、下位階層L3、中位階層L2、および上位階層L1の3階層により階層的に符号化/復号する場合について模式的に表わす図である。つまり、図2(a)および(b)に示す例では、3階層のうち、上位階層L1が最上位層となり、下位階層L3が最下位層となる。
以下において、階層符号化データから復号され得る特定の品質に対応する復号画像は、特定の階層の復号画像(または、特定の階層に対応する復号画像)と称される(例えば、上位階層L1の復号画像POUT#A)。
図2(a)は、入力画像PIN#A〜PIN#Cをそれぞれ階層的に符号化して符号化データDATA#A〜DATA#Cを生成する階層動画像符号化装置2#A〜2#Cを示している。図2(b)は、階層的に符号化された符号化データDATA#A〜DATA#Cをそれぞれ復号して復号画像POUT#A〜POUT#Cを生成する階層動画像復号装置1#A〜1#Cを示している。
まず、図2(a)を用いて、符号化装置側について説明する。符号化装置側の入力となる入力画像PIN#A、PIN#B、およびPIN#Cは、原画は同じだが、画像の品質(解像度、フレームレート、および画質等)が異なる。画像の品質は、入力画像PIN#A、PIN#B、およびPIN#Cの順に低くなる。
下位階層L3の階層動画像符号化装置2#Cは、下位階層L3の入力画像PIN#Cを符号化して下位階層L3の符号化データDATA#Cを生成する。下位階層L3の復号画像POUT#Cを復号するのに必要な基本情報が含まれる(図2において“C”にて示している)。下位階層L3は、最下層の階層であるため、下位階層L3の符号化データDATA#Cは、基本符号化データとも称される。
また、中位階層L2の階層動画像符号化装置2#Bは、中位階層L2の入力画像PIN#Bを、下位階層の符号化データDATA#Cを参照しながら符号化して中位階層L2の符号化データDATA#Bを生成する。中位階層L2の符号化データDATA#Bには、符号化データDATA#Cに含まれる基本情報“C”に加えて、中位階層の復号画像POUT#Bを復号するのに必要な付加的情報(図2において“B”にて示している)が含まれる。
また、上位階層L1の階層動画像符号化装置2#Aは、上位階層L1の入力画像PIN#Aを、中位階層L2の符号化データDATA#Bを参照しながら符号化して上位階層L1の符号化データDATA#Aを生成する。上位階層L1の符号化データDATA#Aには、下位階層L3の復号画像POUT#Cを復号するのに必要な基本情報“C”および中位階層L2の復号画像POUT#Bを復号するのに必要な付加的情報“B”に加えて、上位階層の復号画像POUT#Aを復号するのに必要な付加的情報(図2において“A”にて示している)が含まれる。
このように上位階層L1の符号化データDATA#Aは、異なる複数の品質の復号画像に関する情報を含む。
次に、図2(b)を参照しながら復号装置側について説明する。復号装置側では、上位階層L1、中位階層L2、および下位階層L3それぞれの階層に応じた復号装置1#A、1#B、および1#Cが、符号化データDATA#A、DATA#B、およびDATA#Cを復号して復号画像POUT#A、POUT#B、およびPOUT#Cを出力する。
なお、上位の階層符号化データの一部の情報を抽出(ビットストリーム抽出とも呼ぶ)して、より下位の特定の復号装置において、当該抽出した情報を復号することで特定の品質の動画像を再生することもできる。
例えば、中位階層L2の階層復号装置1#Bは、上位階層L1の階層符号化データDATA#Aから、復号画像POUT#Bを復号するのに必要な情報(すなわち、階層符号化データDATA#Aに含まれる“B”および“C”)を抽出して、復号画像POUT#Bを復号してもよい。言い換えれば、復号装置側では、上位階層L1の階層符号化データDATA#Aに含まれる情報に基づいて、復号画像POUT#A、POUT#B、およびPOUT#Cを復号できる。
なお、以上の3階層の階層符号化データに限られず、階層符号化データは、2階層で階層符号化されていてもよいし、3階層よりも多い階層数にて階層符号化されていてもよい。
また、特定の階層の復号画像に関する符号化データの一部または全部を他の階層とは独立して符号化し、特定の階層の復号の際に、他の階層の情報を参照しなくても済むように階層符号化データを構成してもよい。例えば、図2(a)および(b)を用いて上述した例では、復号画像POUT#Bの復号に“C”および“B”を参照すると説明したが、これに限られない。復号画像POUT#Bが“B”だけを用いて復号できるように階層符号化データを構成することも可能である。例えば、復号画像POUT#Bの復号に、“B”だけから構成される階層符号化データと、復号画像POUT#Cを入力とする階層動画像復号装置も構成できる。
なお、SNRスケーラビリティを実現する場合、入力画像PIN#A、PIN#B、およびPIN#Cとして同一の原画を用いた上で、復号画像POUT#A、POUT#B、およびPOUT#Cが異なる画質となるよう階層符号化データを生成することもできる。その場合、下位階層の階層動画像符号化装置が、上位階層の階層動画像符号化装置に較べて、より大きい量子化幅を用いて予測残差を量子化することで階層符号化データを生成する。
本書では、説明の便宜上、次のとおり用語を定義する。以下の用語は、特に断りがなければ、下記の技術的事項のことを表わすのに用いる。
VCL NALユニット : VCL(Video Coding Layer、ビデオ符号化レイヤ) NALユニットとは、動画像(映像信号)の符号化データを含むNALユニットである。例えば、VCL NALユニットには、スライスデータ(CTUの符号化データ)、及び当該スライスの復号を通じて共通で利用されるヘッダ情報(スライスヘッダ)が含まれる。
non-VCL NALユニット : non-VCL(non-Video Coding Layer、非ビデオ符号化レイヤ、非VCL) NALユニットとは、ビデオパラメータセットVPS、シーケンスパラメータセットSPS、ピクチャパラメータセットPPS等の各シーケンスやピクチャを復号する時に利用される符号化パラメータの集合であるヘッダ情報等の符号化データを含むNALユニットである。
レイヤ識別子 : レイヤ識別子(レイヤIDとも称する)は、階層(レイヤ)を識別するためのものであり、階層と1対1に対応する。階層符号化データには特定の階層の復号画像の復号に必要な部分符号化データを選択するために用いられる識別子が含まれる。特定のレイヤに対応するレイヤ識別子に関連付けられた階層符号化データの部分集合は、レイヤ表現とも呼称される。
一般に、特定の階層の復号画像の復号には、当該階層のレイヤ表現、および/または、当該階層の下位レイヤに対応するレイヤ表現が用いられる。すなわち、対象レイヤの復号画像の復号においては、対象レイヤのレイヤ表現、および/または、対象レイヤの下位レイヤに含まれる1つ以上階層のレイヤ表現が用いられる。
レイヤ : 特定の階層(レイヤ)のレイヤ識別子の値(nuh_layer_id, nuhLayerId)をもつVCL NAL UNIT及びそのVCL NALユニットに関連付けられたnon-VCL NAL UNITの集合、あるいは、階層的な関係をもつシンタックス構造の集合の一つである。
上位レイヤ : ある階層よりも上位に位置する階層のことを、上位レイヤと称する。例えば、図2において、下位階層L3の上位レイヤは、中位階層L2および上位階層L1である。また、上位レイヤの復号画像とは、より品質の高い(例えば、解像度が高い、フレームレートが高い、画質が高い等)復号画像のことをいう。
下位レイヤ : ある階層よりも下位に位置する階層のことを、下位レイヤと称する。例えば、図2において、上位階層L1の下位レイヤは、中位階層L2および下位階層L3である。また、下位レイヤの復号画像とは、より品質の低い復号画像のことをいう。
対象レイヤ : 復号または符号化の対象となっている階層のことをいう。なお、対象レイヤに対応する復号画像を対象レイヤピクチャと呼ぶ。また、対象レイヤピクチャを構成する画素を対象レイヤ画素と呼ぶ。
参照レイヤ : 対象レイヤに対応する復号画像を復号するのに参照される特定の下位レイヤのことを参照レイヤと称する。なお、参照レイヤに対応する復号画像を参照レイヤピクチャと呼ぶ。また、参照レイヤを構成する画素を参照レイヤ画素と呼ぶ。
図2(a)および(b)に示した例では、上位階層L1の参照レイヤは、中位階層L2および下位階層L3である。しかしながら、これに限られず、特定の上記レイヤの復号において、下位レイヤのすべてを参照しなくてもよいように階層符号化データを構成することもできる。例えば、上位階層L1の参照レイヤが、中位階層L2および下位階層L3のいずれか一方となるように階層符号化データを構成することも可能である。また、参照レイヤは、対象レイヤの復号に用いられる符号化パラメータ等を予測する際に利用(参照)される、対象レイヤとは異なるレイヤであるとも表現できる。対象レイヤのレイヤ間予測で直接、参照される参照レイヤを直接参照レイヤとも呼ばれる。また、対象レイヤの直接参照レイヤAのレイヤ間予測で参照される直接参照レイヤBは、対象レイヤの間接参照レイヤとも呼ばれる。
基本レイヤ : 最下層に位置する階層のことを基本レイヤと称する。基本レイヤの復号画像は、符号化データから復号され得るもっとも低い品質の復号画像であり、基本復号画像と呼称される。別の言い方をすれば、基本復号画像は、最下層の階層に対応する復号画像のことである。基本復号画像の復号に必要な階層符号化データの部分符号化データは基本符号化データと呼称される。例えば、上位階層L1の階層符号化データDATA#Aに含まれる基本情報“C”が基本符号化データである。
拡張レイヤ : 基本レイヤの上位レイヤは、拡張レイヤと称される。
レイヤ間予測 : レイヤ間予測とは、対象レイヤのレイヤ表現と異なる階層(参照レイヤ)のレイヤ表現に含まれるシンタックス要素値、シンタックス要素値より導出される値、および復号画像に基づいて、対象レイヤのシンタックス要素値や対象レイヤの復号に用いられる符号化パラメータ等を予測することである。動き予測に関する情報を参照レイヤの情報から予測するレイヤ間予測のことをレイヤ間動き情報予測と称することもある。また、下位レイヤの復号画像から予測するレイヤ間予測のことをレイヤ間画像予測(あるいはレイヤ間テクスチャ予測)と称することもある。なお、レイヤ間予測に用いられる階層は、例示的には、対象レイヤの下位レイヤである。また、参照レイヤを用いず対象レイヤ内で予測を行うことをレイヤ内予測と称することもある。
テンポラル識別子: テンポラル識別子(テンポラルID、時間識別子、サブレイヤID、あるいはサブレイヤ識別子ともいう)は、時間スケーラビリティに関するレイヤ(以降、サブレイヤ)を識別するための識別子である。テンポラル識別子は、サブレイヤを識別するためのものであり、サブレイヤと1対1に対応する。符号化データには特定のサブレイヤの復号画像の復号に必要な部分符号化データを選択するために用いられるテンポラル識別子が含まれる。特に、最高次(最上位)のサブレイヤのテンポラル識別子を最高次(最上位)テンポラル識別子(highest TemporalId, highestTid)と称する。
サブレイヤ: サブレイヤとは、テンポラル識別子により特定される時間スケーラビリティに関するレイヤである。空間スケーラビリティ、SNRスケーラビリティ等、そのほかのスケーラビリティと区別するため、以降サブレイヤと称する(テンポラルレイヤとも称する)。また、以降では、時間スケーラビリティは、基本レイヤの符号化データ、またはあるレイヤを復号するために必要な階層符号化データ、に含まれるサブレイヤによって実現されるものとする。
レイヤセット: レイヤセットとは、1以上のレイヤからなるレイヤの集合である。
ビットストリーム抽出処理 : ビットストリーム抽出処理とは、あるビットストリーム(階層符号化データ、符号化データ)から、対象最高次テンポラル識別子(highest TemporalId, highestTid)、対象レイヤセットに含まれるレイヤを表わすレイヤIDリスト(LayerSetLayerIdList[]ともいう)によって定まる集合(ターゲットセットと呼ぶ)に含まれないNALユニットを除去(破棄)し、ターゲットセットに含まれるNALユニットから構成されるビットストリーム(サブビットストリームとも称する)を抽出する処理である。ビットストリーム抽出処理は、サブビットストリーム抽出とも呼ばれる。なお、レイヤセットに含まれるレイヤIDは、レイヤIDリストLayerSetLayerIdList[K](K=0…N-1, Nはレイヤセットに含まれるレイヤ数)の各要素に、昇順で格納されているものとする。
次に、図3、及び図4を参照して、ビットストリーム抽出処理(サブビットストリーム抽出ともいう)により、あるレイヤセットAを含む階層符号化データより、レイヤセットAのサブセットとなるレイヤセットB(ターゲットセットとも呼ぶ)を含む階層符号化データを抽出する例について説明する。
図3は、3つのレイヤ(L#0,L#1,L#2)、及び各レイヤは3つのサブレイヤ(TID1, TID2,TID3)から構成されるレイヤセットAの構成を表わす。なお、以降では、レイヤセットをを構成するレイヤ、及びサブレイヤを、{レイヤIDリスト{L#0,…,L#N}、最高次テンポラルID(HighestTid=K)}と表わす。例えば、図3のレイヤセットAは、{レイヤIDリスト{L#0, L#1, L#2}、最高次テンポラルID=3}と表現される。ここで、符号L♯Nは、あるレイヤNを示し、図3中の各ボックスは、ピクチャを表わし、ボックス内の番号は、復号順の一例を表わす。以降、ピクチャで番号Nを、P#Nと表記する(図4についても同様)。
また、各ピクチャ間の矢印は、ピクチャ間の依存方向(参照関係)を表わす。同一レイヤ内の矢印であれば、インター予測に利用される参照ピクチャであることを示す。レイヤ間の矢印であれば、レイヤ間予測に利用される参照ピクチャ(参照レイヤピクチャともいう)であることを表わす。
また、図3中のAUは、アクセスユニットを表わし、符号#Nは、アクセスユニット番号を表わす。AU#Nは、ある起点(例えば、ランダムアクセス開始点)のAUをAU#0とすれば、(N−1)番目のアクセスユニットであることを表わし、ビットストリームに含まれるAUの順番を表わす。すなわち、図3の例であれば、ビットストリーム上で、アクセスユニットは、AU#0、AU#1、AU#2、AU#3、AU#4…の順で格納されている。なお、アクセスユニットとは、特定の分類ルールにより集約されたNALユニットの集合を表わす。図3のAU#0は、ピクチャP#1、P#1、及びP#3の符号化データを含むVCL NALの集合とみることができる。なお、アクセスユニットの詳細については後述する。
図3の例では、ターゲットセット(レイヤセットB)は、レイヤIDリスト{L#0,L#1}、及び最高次テンポラルID=2であるから、レイヤセットAを含むビットストリームから、ターゲットセット(レイヤセットB)に含まれないレイヤ、及び最高次テンポラルID=2より大きいサブレイヤを、ビットストリーム抽出により破棄する。すなわち、レイヤIDリストに含まれないレイヤL#2、及びサブレイヤ(TID3)を有するNALユニットが破棄され、最終的には、図4に示すように、レイヤセットBを含むビットストリームが抽出される。図4では、点線のボックスは、破棄されたピクチャを表わし、点線の矢印は、破棄されたピクチャと参照ピクチャ間の依存方向を示す。なお、レイヤL#3、及びTID3のサブレイヤのピクチャを構成するNALユニットは破棄済のため、依存関係は既に断ち切られている。
SHVCやMV−HEVCでは、SNRスケーラビリティ、空間スケーラビリティ、時間スケーラビリティ等を実現するために、レイヤ、及びサブレイヤの概念が導入されている。図3、図4で既に説明したように、フレームレートを変更し時間スケーラビリティを実現する場合、ビットストリーム抽出処理により、まず他のピクチャから参照されないピクチャ(最高次テンポラルID(TID3))の符号化データを破棄する。図3、図4の場合、ピクチャ(10、13、11、14、12、15)の符号化データを破棄することにより、フレームレートが1/2となる符号化データが生成される。
また、SNRスケーラビリティ、空間スケーラビリティや、ビュースケーラビリティを実現する場合、ビットストリーム抽出により、ターゲットセットに含まれない、レイヤの符号化データを破棄することで、各スケーラビリティの粒度を変更することができる。(図3、図4では、3、6、9、12、15)の符号化データを破棄することで、スケーラビリティの粒度を粗くした符号化データが生成される。上記処理を繰り返すことで、段階的にレイヤ、サブレイヤの粒度を調整することができる。
なお、以上の用語は、飽くまで説明の便宜上のものであり、上記の技術的事項を別の用語にて表現してもかまわない。
〔階層符号化データのデータ構造について〕
以下、各階層の符号化データを生成する符号化方式として、HEVCおよびその拡張方式を用いる場合について例示する。しかしながら、これに限られず、各階層の符号化データを、MPEG-2や、H.264/AVCなどの符号化方式により生成してもよい。
また、下位レイヤと上位レイヤとが異なる符号化方式によって符号化されていてもよい。また、各階層の符号化データは、互いに異なる伝送路を介して階層動画像復号装置1に供給されてもよいし、同一の伝送路を介して階層動画像復号装置1に供給されてもよい。
例えば、超高精細映像(動画像、4K映像データ)を基本レイヤおよび1つの拡張レイヤによりスケーラブル符号化して伝送する場合、基本レイヤは、4K映像データをダウンスケーリングし、インタレース化した映像データをMPEG-2またはH.264/AVCにより符号化してテレビ放送網で伝送し、拡張レイヤは、4K映像(プログレッシブ)をHEVCにより符号化して、インターネットで伝送してもよい。
<階層符号化データDATAの構造>
本実施形態に係る画像符号化装置2および画像復号装置1の詳細な説明に先立って、画像符号化装置2によって生成され、画像復号装置1によって復号される階層符号化データDATAのデータ構造について説明する。
(NALユニットレイヤ)
図5は、階層符号化データDATAにおけるデータの階層構造を示す図である。階層符号化データDATAは、NAL(Network Abstraction Layer)ユニットと呼ばれる単位で符号化される。
NALは、動画像符号化処理を行う層であるVCL(Video Coding Layer)と、符号化データを伝送・蓄積する下位システムとの間における通信を抽象化するために設けられる層である。
VCLは、画像符号化処理を行う層のことであり、VCLにおいて符号化が行われる。一方、ここでいう、下位システムは、H.264/AVCおよびHEVCのファイルフォーマットや、MPEG−2システムに対応する。以下に示す例では、下位システムは、対象レイヤおよび参照レイヤにおける復号処理に対応する。なお、NALでは、VCLで生成されたビットストリームが、NALユニットという単位で区切られて、宛先となる下位システムへ伝送される。
図6(a)は、NAL(Network Abstraction Layer)ユニットのシンタックステーブルを示す。NALユニットには、VCLで符号化された符号化データ、および、当該符号化データが宛先の下位システムに適切に届けられるためのヘッダ(NALユニットヘッダ:nal_unit_header())が含まれる。NALユニットヘッダは、例えば、図6(b)に示すシンタックスで表わされる。NALユニットヘッダには、NALユニットに格納された符号化データの種類を表わす”nal_unit_type”、格納された符号化データが属するサブレイヤの識別子(テンポラル識別子)を表わす”nuh_temporal_id_plus1”や、格納された符号化データが属するレイヤの識別子(レイヤ識別子)を表わす”nuh_layer_id”(または、nuh_reserved_zero_6bits)が記述されている。一方、NALユニットデータには、後述のパラメータセット、SEI、スライスなどが含まれる。
図7は、NALユニットタイプの値とNALユニットの種別の関係を示す図である。図7に示す通り、SYNA101 で示される0から15の値のNALユニットタイプを持つNALユニットは、非RAP(ランダムアクセスピクチャ)のスライスである。SYNA102 で示される16から21の値のNALユニットタイプを持つNALユニットは、RAP(ランダムアクセスピクチャ、IRAPピクチャ)のスライスである。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ユニットに格納されることでNAL多重化されて階層動画像復号装置1に伝送される。
図7、特にNAL Unit Type Classで示されるように、各NALユニットは、NALユニットタイプに応じて、ピクチャを構成するデータ(VCLデータ)と、それ以外のデータ(non-VCL)に分類される。ピクチャは、ランダムアクセスピクチャ、リーディングピクチャ、トレイリングピクチャなどのピクチャ種別によらず、全てVCL NALユニットに分類され、ピクチャの復号に必要なデータであるパラメータセットや、ピクチャの補助情報であるSEI、シーケンスの区切りを表わすアクセスユニットデリミタ(AUD)、エンドオブシーケンス(EOS)、エンドオブビットストリーム(EOB)などは、non-VCL NALユニットに分類される。
(アクセスユニット)
特定の分類ルールにより集約されたNALユニットの集合のことをアクセスユニットと呼ぶ。レイヤ数が1の場合には、アクセスユニットは1ピクチャを構成するNALユニットの集合である。レイヤ数が1より大きい場合には、アクセスユニットは同じ時刻の複数のレイヤのピクチャを構成するNALユニットの集合である。なお、アクセスユニットの区切りを示すために、符号化データはアクセスユニットデリミタ(Access unit delimiter)と呼ばれるNALユニットを含んでも良い。アクセスユニットデリミタは、符号化データ中にあるアクセスユニットを構成するNALユニットの集合と、別のアクセスユニットを構成するNALユニットの集合の間に含まれる。
図8は、アクセスユニットに含まれるNALユニットの構成の一例を示す図である。図8に示すように、AUには、AUの先頭であることを示すアクセスユニットデリミタ(AUD)、各種パラメータセット(VPS、SPS、PPS)、各種SEI(Prefix SEI, Suffix SEI)、レイヤ数が1の場合は1ピクチャを構成するVCL(slice)、レイヤ数が1より大きい場合はレイヤ数分のピクチャを構成するVCL、シーケンスの終端を示すEOS(End of Sequence)、ビットストリームの終端を示すEOB(End of Bitstream)等のNALユニットから構成される。なお、図8において、VPS、SPS、SEI、VCLの後の符号L#K(K=Nmin…Nmax)は、レイヤIDを表わす。図8の例では、AU内に、VPSを除き、各レイヤL#Nmin〜レイヤL#NmaxのSPS、PPS、SEI、VCLが、レイヤIDの昇順で存在する。VPSは、最低次のレイヤIDでのみ送られる。なお、図8において、特定NALユニットがAU内に存在するか、または繰り返し存在するかを、矢印によって示している。例えば、特定のNALユニットがAU内に存在すれば、そのNALユニットを通過する矢印で示し、特定のNALユニットがAU内に存在しなければ、そのNALユニットをスキップする矢印で示している。例えば、AUDを通らずに、VPSへ向かう矢印は、AUDがAU内に存在しない場合を示す。また、最低次以外の上位のレイヤIDを有するVPSがAU内に含まれてもよいが、画像復号装置は、最低次以外のレイヤIDを有するVPSを無視するものとする。また、各種パラメータセット(VPS,SPS,PPS)や補助情報であるSEIは、図8のように、アクセスユニットの一部として含まれてもよいし、ビットストリームとは別の手段でデコーダに伝達されてもよい。
図9は、階層符号化データDATAにおけるデータの階層構造を示す図である。階層符号化データDATAは、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図9の(a)〜(f)は、それぞれ、シーケンスSEQを既定するシーケンスレイヤ、ピクチャPICTを規定するピクチャレイヤ、スライスSを規定するスライスレイヤ、スライスデータを規定するスライスデータレイヤ、スライスデータに含まれる符号化ツリーユニットを規定する符号化ツリーレイヤ、符号化ツリーに含まれる符号化単位(Coding Unit;CU)を規定する符号化ユニットレイヤを示す図である。
(シーケンスレイヤ)
シーケンスレイヤでは、処理対象のシーケンスSEQ(以下、対象シーケンスとも称する)を復号するために画像復号装置1が参照するデータの集合が規定されている。シーケンスSEQは、図9の(a)に示すように、ビデオパラメータセット(Video Parameter Set)シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。ここで#の後に示される値はレイヤIDを示す。図9では、#0と#1すなわちレイヤIDが0とレイヤIDが1の符号化データが存在する例を示すが、レイヤの種類およびレイヤの数はこれに限定されない。
ビデオパラメータセットVPSでは、1以上のレイヤから構成される符号化データを復号するために画像復号装置1が参照する符号化パラメータの集合が規定されている。例えば、後述のシーケンスパラメータセットや他のシンタックス要素が参照するVPSを識別するために用いるVPS識別子(video_parameter_set_id)や、符号化データに含まれるレイヤ数(vps_max_layers_minus1)、レイヤに含まれるサブレイヤ数(vps_sub_layers_minus1)、符号化データ中で表現される1以上のレイヤからなるレイヤの集合を規定するレイヤセットの数(vps_num_layer_sets_minus1)、レイヤセットを構成するレイヤの集合を規定するレイヤセット構成情報(layer_id_included_flag[i][j])や、レイヤ間の依存関係(直接依存フラグdirect_dependency_flag[i][j]、レイヤ依存タイプdirect_dependency_type[i][j])などが規定されている。VPSは符号化データ内に複数存在してもよい。その場合、対象シーケンス毎に復号に用いられるVPSが複数の候補から選択される。あるレイヤに属する特定シーケンスの復号に使用されるVPSは、アクティブVPSと呼ばれる。また、基本レイヤと拡張レイヤに適用されるVPSを区別して、基本レイヤ(レイヤID=0)に対するVPSをアクティブVPSと呼び、拡張レイヤ(レイヤID>0)に対するVPSをアクティブレイヤVPSと呼ぶこともある。以下では、特に断りがなければ、VPSは、あるレイヤに属する対象シーケンスに対するアクティブVPSを意味する。なお、レイヤID=nuhLayerIdAであるレイヤの復号で利用される、レイヤID=nuhLayerIdAであるVPSは、nuhLayerIdAよりも大きいレイヤIDであるレイヤ(nuhLayerIdB、nuhLayerIdB>nuhLayerIdA)の復号に利用されてもよい。以降、特に断りがなければ、VPSのレイヤIDは0であり(nuhLayerId=0)、テンポラルIDは0である(tId=0)とする制約(ビットストリーム制約ともいう)がデコーダとエンコーダ間であるものとする。
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために画像復号装置1が参照する符号化パラメータの集合が規定されている。例えば、対象SPSが参照するアクティブVPSを表わすアクティブVPS識別子(sps_video_parameter_set_id)、後述のピクチャパラメータセットや他のシンタックス要素が参照するSPSを識別するために用いるSPS識別子(sps_seq_parameter_set_id)や、ピクチャの幅や高さが規定される。SPSは符号化データ内に複数存在してもよい。その場合、対象シーケンス毎に復号に用いられるSPSが複数の候補から選択される。あるレイヤに属する特定シーケンスの復号に使用されるSPSは、アクティブSPSとも呼ばれる。また、基本レイヤと拡張レイヤに適用されるSPSを区別して、基本レイヤに対するSPSをアクティブSPSと呼び、拡張レイヤに対するSPSをアクティブレイヤSPSと呼ぶこともある。以下では、特に断りがなければ、SPSは、あるレイヤに属する対象シーケンスの復号に利用されるに対するアクティブSPSを意味する。なお、レイヤID=nuhLayerIdAであるレイヤに属するシーケンスの復号で利用される、レイヤID=nuhLayerIdAであるSPSは、nuhLayerIdAよりも大きいレイヤIDであるレイヤ(nuhLayerIdB、nuhLayerIdB>nuhLayerIdA)に属するシーケンスの復号に利用されてもよい。以降、特に断りがなければ、SPSのテンポラルIDは0である(tId=0)とする制約(ビットストリーム制約ともいう)がデコーダとエンコーダ間であるものとする。
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために画像復号装置1が参照する符号化パラメータの集合が規定されている。例えば、対象PPSが参照するアクティブSPSを表わすアクティブSPS識別子(pps_seq_parameter_set_id)、後述のスライスヘッダや他のシンタックス要素が参照するPPSを識別するために用いるPPS識別子(pps_pic_parameter_set_id)や、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)、スケーリングリスト(量子化マトリックス)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。あるレイヤに属する特定ピクチャの復号に使用されるPPSはアクティブPPSと呼ばれる。また、基本レイヤと拡張レイヤに適用されるPPSを区別して、基本レイヤに対するPPSをアクティブPPSと呼び、拡張レイヤに対するPPSをアクティブレイヤPPSと呼ぶこともある。以下では、特に断りがなければ、PPSは、あるレイヤに属する対象ピクチャに対するアクティブPPSを意味する。なお、レイヤID=nuhLayerIdAであるレイヤに属するピクチャの復号で利用される、レイヤID=nuhLayerIdAであるPPSは、nuhLayerIdAよりも大きいレイヤIDであるレイヤ(nuhLayerIdB、nuhLayerIdB>nuhLayerIdA)に属するピクチャの復号に利用されてもよい。
なお、アクティブSPS、及びアクティブPPSは、レイヤ毎に異なるSPSやPPSに設定してもよい。すなわち、レイヤ毎に異なるSPSやPPSを参照して復号処理を実行することができる。
(ピクチャレイヤ)
ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために階層動画像復号装置1が参照するデータの集合が規定されている。ピクチャPICTは、図9の(b)に示すように、スライスS0〜SNS-1を含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
なお、以下、スライスS0〜SNS-1のそれぞれを区別する必要が無い場合、符号の添字を省略して記述することがある。また、以下に説明する階層符号化データDATAに含まれるデータであって、添字を付している他のデータについても同様である。
(スライスレイヤ)
スライスレイヤでは、処理対象のスライスS(対象スライスとも称する)を復号するために階層動画像復号装置1が参照するデータの集合が規定されている。スライスSは、図9の(c)に示すように、スライスヘッダSH、および、スライスデータSDATAを含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために階層動画像復号装置1が参照する符号化パラメータ群が含まれる。例えば、対象スライスを復号するために参照するPPS(アクティブPPS)を指定するアクティブPPS識別子(slice_pic_parameter_set_id)が含まれる。なお、アクティブPPSが参照するSPSは、アクティブPPSに含まれるアクティブSPS識別子(pps_seq_parameter_set_id)により指定される。さらに、アクティブSPSが参照するVPS(アクティブVPS)は、アクティブSPSに含まれるアクティブVPS識別子(sps_video_parameter_set_id)により指定される。
図10を例に、本実施例におけるレイヤ間のパラメータセットの共有(共有パラメータセット)を説明する。図10は、ヘッダ情報とアクセスユニット(AU)を構成する符号化データの参照関係を表わす。図10の例では、各AU内のレイヤL#K(K=Nmin…Nmax)に属するピクチャを構成する各スライスは、参照すべきPPSを指定するアクティブPPS識別子をスライスヘッダ内に含んでおり、各スライスの復号開始時に該識別子によって復号に用いるPPS(アクティブPPS)を指定する(アクティベートするともいう)。なお、同一ピクチャ内のスライスが参照する各PPS、SPS、VPSの識別子は同一でなければならない。アクティベートされたPPSの中には、復号処理上参照すべきSPS(アクティブSPS)を指定するアクティブSPS識別子が含まれており、該識別子によって復号に用いるSPS(アクティブSPS)を指定する(アクティベートする)。同様に、アクティベートされたSPSの中には、各レイヤに属するシーケンスの復号処理上参照すべきVPS(アクティブVPS)を指定するアクティブVPS識別子が含まれており、該識別子によって復号に用いるVPS(アクティブVPS)を指定する(アクティベートする)。以上の手順により、各レイヤの符号化データの復号処理を実行するにあたって必要なパラメータセットが確定する。図10の例では、各パラメータセット(VPS、SPS、PPS)のレイヤ識別子は、あるレイヤセットに属する最低次のレイヤID=L#Nminであるとする。レイヤID=L#Nminであるスライスは、同一レイヤIDを有するパラメータセットを参照している。すなわち、図10の例では、AU#iのレイヤID=L#Nminであるスライスは、レイヤID=L#Nminであって、PPS識別子=0であるPPSを参照し、同PPSは、レイヤID=L#Nminであって、SPS識別子=0であるSPSを参照し、同SPSは、レイヤID=L#Nminであって、VPS識別子=0であるVPSを参照している。一方、AU#iのレイヤID=L#K(K>Nmin)(図10では、L#Nmax)であるスライスは、同一レイヤID(=L#K)を有するPPS、SPSを参照することも可能であるが、L#Kより下位レイヤL#M(K>M)(図10では、M=Nmin、L#Nmin)のPPS、SPSも参照することが可能である。すなわち、レイヤ間で、共通のパラメータセットを参照することにより、上位レイヤにおいて、下位レイヤと同一の符号化パラメータを有するパラメータセットを重複して送る必要がなくなるため、重複するパラメータセットに関する符号量の低減、及び復号/符号化に係る処理量を低減することが可能である。なお、各ヘッダ情報(スライスヘッダ、PPS、SPS)が参照する上位のパラメータセットの識別子は、図10の例に限定されない。VPSであれば、VPS識別子k=0…15の中から選択されてよいし、SPSであれば、SPS識別子m=0…15の中から選択されてよいし、PPSであれば、PPS識別子n=0…63の中から選択されてよい。
また、スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、または、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるBスライスなどが挙げられる。
(スライスデータレイヤ)
スライスデータレイヤでは、処理対象のスライスデータSDATAを復号するために階層動画像復号装置1が参照するデータの集合が規定されている。スライスデータSDATAは、図9の(d)に示すように、符号化ツリーブロック(CTB:Coded Tree Block)を含んでいる。CTBは、スライスを構成する固定サイズ(例えば64×64)のブロックであり、最大符号化単位(LCU:Largest Cording Unit)と呼ぶこともある。
(符号化ツリーレイヤ)
符号化ツリーレイヤは、図9の(e)に示すように、処理対象の符号化ツリーブロックを復号するために階層動画像復号装置1が参照するデータの集合が規定されている。符号化ツリーユニットは、再帰的な4分木分割により分割される。再帰的な4分木分割により得られる木構造のノードのことを符号化ツリー(coding tree)と称する。4分木の中間ノードは、符号化ツリーユニット(CTU:Coded Tree Unit)であり、符号化ツリーブロック自身も最上位のCTUとして規定される。CTUは、分割フラグ(split_flag)を含み、split_flagが1の場合には、4つの符号化ツリーユニットCTUに分割される。split_flagが0の場合には、符号化ツリーユニットCTUは4つの符号化ユニット(CU:Coded Unit)に分割される。符号化ユニットCUは符号化ツリーレイヤの末端ノードであり、このレイヤではこれ以上分割されない。符号化ユニットCUは、符号化処理の基本的な単位となる。
また、符号化ツリーユニットCTUのサイズ、および、各符号化ユニットのとり得るサイズは、シーケンスパラメータセットSPSに含まれる、最小符号化ノードのサイズ指定情報、および最大符号化ノードと最小符号化ノードの階層深度の差分に依存する。例えば、最小符号化ノードのサイズが8×8画素であって、最大符号化ノードと最小符号化ノードの階層深度の差分が3である場合、符号化ツリーユニットCTUのサイズが64×64画素であって、符号化ノードのサイズは、4種類のサイズ、すなわち、64×64画素、32×32画素、16×16画素、および、8×8画素の何れかをとり得る。
なお、符号化ツリーユニットより復号される対象ピクチャ上の部分領域を符号化ツリーブロック(CTB: Coding Tree block)と呼ぶ。対象ピクチャの輝度成分である輝度ピクチャに対応するCTBは輝度CTBと呼ばれる。換言すると、CTUから復号される輝度ピクチャ上の部分領域は輝度CTBと呼ばれる。一方、CTUから復号される色差ピクチャに対応する部分領域は色差CTBと呼ばれる。一般に、画像の色フォーマットが決まっていれば、輝度CTBサイズと色差CTBサイズは相互に変換可能である。例えば、色フォーマットが4:2:2の場合は、色差CTBサイズは輝度CTBサイズの各半分である。以下の記載では、特に断りがなければ、CTBサイズとは輝度CTBサイズを意味する。また、CTUサイズは、CTUに対応する輝度CTBサイズである。
(符号化ユニットレイヤ)
符号化ユニットレイヤは、図9の(f)に示すように、処理対象の符号化ユニットを復号するために階層動画像復号装置1が参照するデータの集合が規定されている。具体的には、符号化ユニットCU(coding unit)は、CUヘッダCUH、予測ツリー、変換ツリーから構成される。CUヘッダCUHでは、符号化ユニットが、イントラ予測を用いるユニットであるか、インター予測を用いるユニットであるかなどが規定される。符号化ユニットは、予測ツリー(prediction tree;PT)および変換ツリー(transform tree;TT)のルートとなる。なお、CUに対応するピクチャ上の領域は符号化ブロック(CB:Coding Block)と呼ばれる。輝度ピクチャ上のCBを輝度CB、色差ピクチャ上のCBを色差CBと呼ぶ。CUサイズ(符号化ノードのサイズ)とは、輝度CBサイズを意味する。
(変換ツリー)
変換ツリー(以下、TTと略称する)は、符号化ユニットCUが1または複数の変換ブロックに分割され、各変換ブロックの位置とサイズとが規定される。別の表現でいえば、変換ブロックは、符号化ユニットCUを構成する1または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1または複数の変換ブロックを含む。なお、CUに含まれる変換ツリーに関する情報、及び変換ツリーに包含される情報を、TT情報と呼ぶ。
変換ツリーにおける分割には、符号化ユニットと同一のサイズの領域を変換ブロックとして割り付けるものと、上述したツリーブロックの分割と同様、再帰的な4分木分割によるものがある。変換処理は、この変換ブロックごとに行われる。以下、変換の単位である変換ブロックのことを、変換単位(transform unit;TU)とも称する。
変換ツリーTTには、対象CUの各変換ブロックへの分割パターンを指定するTT分割情報SP_TT、及び量子化予測残差QD1〜QDNT(NTは、対象CUに含まれる変換単位TUの総数)を含んでいる。
TT分割情報SP_TTは、具体的には、対象CUに含まれる各変換ブロックの形状、および、対象CU内での位置を決定するための情報である。例えば、TT分割情報SP_TTは、対象ノードの分割を行うのか否かを示す情報(split_transform_unit_flag)と、その分割の深度を示す情報(trafoDepth)とから実現できる。例えば、CUサイズが、64×64の場合、分割により得られる各変換ブロックは、32×32画素から4×4画素までのサイズをとり得る。
各量子化予測残差QDは、階層動画像符号化装置2が以下の処理1〜3を、処理対象の変換ブロックである対象ブロックに施すことによって生成した符号化データである。
処理1:符号化対象画像から予測画像を減算した予測残差を周波数変換(例えば、DCT変換(Discrete Cosine Transform)およびDST変換(Discrete Sine Transform)等)する;
処理2:処理1にて得られた変換係数を量子化する;
処理3:処理2にて量子化された変換係数を可変長符号化する;
なお、上述した量子化パラメータqpは、階層動画像符号化装置2が変換係数を量子化する際に用いた量子化ステップQPの大きさを表わす(QP=2qp/6)。
(予測ツリー)
予測ツリー(以下、PTと略称する)は、符号化ユニットCUが1または複数の予測ブロックに分割され、各予測ブロックの位置とサイズとが規定される。別の表現でいえば、予測ブロックは、符号化ユニットCUを構成する1または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1または複数の予測ブロックを含む。なお、CUに含まれる予測ツリーに関する情報、及び予測ツリーに包含される情報を、PT情報と呼ぶ。
予測処理は、この予測ブロックごとに行われる。以下、予測の単位である予測ブロックのことを、予測単位(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などがある。なお、N=2m(mは1以上の任意の整数)を意味する。また、分割数は1、2、4のいずれかであるため、CUに含まれるPUは1個から4個である。これらのPUを順にPU0、PU1、PU2、PU3と表現する。
(予測パラメータ)
予測ユニットの予測画像は、予測ユニットに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測の予測パラメータ、もしくはインター予測の予測パラメータがある。
イントラ予測パラメータは、各イントラPUについてのイントラ予測(予測モード)を復元するためのパラメータである。予測モードを復元するためのパラメータには、MPM(Most Probable Mode、以下同様)に関するフラグであるmpm_flag、MPMを選択するためのインデクスであるmpm_idx、及び、MPM以外の予測モードを指定するためのインデクスであるrem_idxが含まれる。ここで、MPMとは、対象パーティションで選択される可能性が高い推定予測モードである。例えば、対象パーティションの周辺のパーティションに割り付けられた予測モードに基づいて推定された推定予測モードや、一般的に発生確率の高いDCモードやPlanarモードがMPMに含まれ得る。また、以下において、単に“予測モード”と表記する場合、特にことわりのない限り、輝度予測モードのことを指すものとする。色差予測モードについては、“色差予測モード”と表記し、輝度予測モードと区別する。また、予測モードを復元するパラメータには、色差予測モードを指定するためのパラメータであるchroma_modeが含まれる。
インター予測パラメータは、予測リスト利用フラグ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)の場合が単予測に対応する。
符号化データに含まれるインター予測パラメータを導出するためのシンタックス要素には、例えば、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測識別子inter_pred_idc、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXがある。なお、予測リスト利用フラグの各値は、インター予測識別子に基づいて、次のように導出される。
predFlagL0 =インター予測識別子 & 1
predFlagL1 =インター予測識別子 >> 1
ここで、“&”は論理積、“>>”は右シフトである。
(参照ピクチャリストの一例)
次に、参照ピクチャリストの一例について説明する。参照ピクチャリストとは、復号ピクチャバッファに記憶された参照ピクチャからなる列である。図11(a)は、参照ピクチャリストの一例を示す概念図である。参照ピクチャリストRPL0において、左右に一列に配列された5個の長方形は、それぞれ参照ピクチャを示す。左端から右へ順に示されている符号P1、P2、Q0、P3、P4は、それぞれの参照ピクチャを示す符号である。同様に、参照ピクチャリストRPL1において、左端から右へ順に示されている符号P4、P3、R0、P2、P1は、それぞれの参照ピクチャを示す符号である。P1等のPとは、対象レイヤPを示し、そしてQ0のQとは、対象レイヤPとは異なるレイヤQを示す。同様に、R0のRとは、対象レイヤP、及びレイヤQとは異なるレイヤRを示す。P、Q及びRの添字は、ピクチャ順序番号POCを示す。refIdxL0の真下の下向きの矢印は、参照ピクチャインデックスrefIdxL0が、復号ピクチャバッファにおいて、参照ピクチャリストRPL0より参照ピクチャQ0を参照するインデックスであることを示す。同様に、refIdxL1の真下の下向きの矢印は、参照ピクチャインデックスrefIdxL1が、復号ピクチャバッファにおいて、参照ピクチャリストRPL1より参照ピクチャP3を参照するインデックスであることを示す。
(参照ピクチャの例)
次に、ベクトルを導出する際に用いる参照ピクチャの例について説明する。図11(b)は、参照ピクチャの例を示す概念図である。図11(b)において、横軸は表示時刻を示し、縦軸はレイヤ数を示す。図示されている、縦3行、横3列(計9個)の長方形は、それぞれピクチャを示す。9個の長方形のうち、下行の左から2列目の長方形は復号対象のピクチャ(対象ピクチャ)を示し、残りの8個の長方形がそれぞれ参照ピクチャを示す。対象ピクチャから下向きの矢印で示される参照ピクチャQ2、及びR2は対象ピクチャと同じ表示時刻であってレイヤが異なるピクチャである。対象ピクチャcurPic(P2)を基準とするレイヤ間予測においては、参照ピクチャQ2、またはR2が用いられる。対象ピクチャから左向きの矢印で示される参照ピクチャP1は、対象ピクチャと同じレイヤであって、過去のピクチャである。対象ピクチャから右向きの矢印で示される参照ピクチャP3は、対象ピクチャと同じレイヤであって、未来のピクチャである。対象ピクチャを基準とする動き予測においては、参照ピクチャP1又はP3が用いられる。
(マージ予測とAMVP予測)
インター予測パラメータの復号(符号化)方法には、マージ予測(merge)モードとAMVP(Adaptive Motion Vector Prediction、適応動きベクトル予測)モードがある、マージフラグmerge_flagは、これらを識別するためのフラグである。マージ予測モードでも、AMVPモードでも、既に処理済みのブロックの予測パラメータを用いて、対象PUの予測パラメータが導出される。マージ予測モードは、予測リスト利用フラグpredFlagLX(インター予測識別子inter_pred_idc)、参照ピクチャインデックスrefIdxLX、ベクトルmvLXを符号化データに含めずに、既に導出した予測パラメータをそのまま用いるモードであり、AMVPモードは、インター予測識別子inter_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を用いて行われる。
なお、以上に説明したパラメータは、単独で符号化されていてもよいし、複数のパラメータが複合的に符号化されていてもよい。複数のパラメータが複合的に符号化される場合は、そのパラメータの値の組み合わせに対してインデックスが割り当てられ、割り当てられた当該インデックスが符号化される。また、パラメータが、別のパラメータや、復号済みの情報から導出可能であれば、当該パラメータの符号化を省略できる。
〔階層動画像復号装置〕
以下では、本実施形態に係る階層動画像復号装置1の構成について、図19〜図21を参照して説明する。
(階層動画像復号装置の構成)
本実施形態に係る階層動画像復号装置1の構成について説明する。図19は、本実施形態に係る階層動画復号装置1の構成を示す概略図である。階層動画像復号装置1は、外部より供給される階層符号化データDATAに含まれる復号対象とするレイヤセット(レイヤIDリスト)、及び復号対象とするレイヤに付随するサブレイヤを指定する最高次テンポラルレイヤ識別子に基づいて、階層動画像符号化装置2から供給される階層符号化データDATAを復号して、対象レイヤセットに含まれる各レイヤの復号画像POUT#Tを生成する。すなわち、階層動画像復号装置1は、対象レイヤセットに含まれる、最低次のレイヤIDから最高次のレイヤIDまで、昇順で、各レイヤのピクチャの符号化データを復号し、その復号画像(復号ピクチャ)を生成する。言い換えれば、対象レイヤセットのレイヤIDリストLayerSetLayerIdList[0]…LayerSetIdList[N-1](Nは対象レイヤセットに含まれるレイヤ数)の順で、各レイヤのピクチャの符号化データを復号する。
なお、以下では、対象レイヤは基本レイヤを参照レイヤとする拡張レイヤであるとして説明する。そのため、対象レイヤは、参照レイヤに対する上位レイヤでもある。逆に、参照レイヤは、対象レイヤに対する下位レイヤでもある。
図19に示すように階層動画像復号装置1は、NAL逆多重化部11、及び対象レイヤセットピクチャ復号部10を含んで構成される。さらに、対象レイヤセットピクチャ復号部10は、パラメータセット復号部12、パラメータセット管理部13、ピクチャ復号部14、および復号ピクチャ管理部15を含んで構成される。また、NAL逆多重化部11は、図示されないビットストリーム抽出部17を備える。
階層符号化データDATAには、VCLにより生成されたNALの他に、パラメータセット(VPS、SPS、PPS)やSEI等を含むNALが含まれる。それらのNALはVCL NALに対して非VCL NAL(non-VCL)と呼ばれる。
NAL逆多重化部11の備えるビットストリーム抽出部17は、外部より供給される復号対象とするレイヤセット(レイヤIDリスト)、及び最高次テンポラルレイヤ識別子に基づいて、ビットストリーム抽出処理を行い、階層符号化データDATAから、最高次テンポラル識別子(highest TemporalId, highestTid)、対象レイヤセットに含まれるレイヤを表わすレイヤIDリストによって定まる集合(ターゲットセットと呼ぶ)に含まれないNALユニットを除去(破棄)し、ターゲットセットに含まれるNALユニットから構成される対象レイヤセット符号化データDATA#Tを抽出する。
続いて、NAL逆多重化部11は、ビットストリーム抽出部17より抽出された対象レイヤセット符号化データDATA#Tを逆多重化して、NALユニットに含まれるNALユニットタイプ、レイヤ識別子(レイヤID)、テンポラル識別子(テンポラルID)を参照し、対象レイヤセットに含まれるNALユニットを、対象レイヤセットピクチャ復号部10へ供給する。
対象レイヤセットピクチャ復号部10は、供給された対象レイヤセット符号化データDATA#Tに含まれるNALのうち、非VCL NALをパラメータセット復号部12に、VCL NALをピクチャ復号部14にそれぞれ供給する。すなわち、対象レイヤセットピクチャ復号部10は、供給されたNALユニットのヘッダ(NALユニットヘッダ)を復号し、復号したNALユニットヘッダに含まれるNALユニットタイプ、レイヤ識別子、及びテンポラル識別子に基づいて、non-VCLの符号化データをパラメータセット復号部12へ、VCLの符号化データをピクチャ復号部14へ、復号したNALユニットタイプ、レイヤ識別子、及びテンポラル識別子と合わせて供給する。
パラメータセット復号部12は、入力される非VCL NALからパラメータセット、すなわち、VPS、SPS、および、PPSを復号してパラメータセット管理部13に供給する。なお、パラメータセット復号部12における本発明との関連性の高い処理の詳細について後述する。
パラメータセット管理部13は、復号されたパラメータセットを各パラメータセットの識別子毎に、パラメータセットの符号化パラメータを保持する。具体的には、VPSであれば、VPS識別子(video_parameter_set_id)毎に、VPSの符号化パラメータを保持する。SPSであれば、SPS識別子(sps_seq_parameter_set_id)毎に、SPSの符号化パラメータを保持する。PPSであれば、PPS識別子(pps_pic_parameter_set_id)毎に、PPSの符号化パラメータを保持する。
また、パラメータセット管理部13は、後述のピクチャ復号部14が、ピクチャを復号するために参照するパラメータセット(アクティブパラメータセット)の符号化パラメータを、ピクチャ復号部14へ供給する。具体的には、まず、ピクチャ復号部14で復号されたスライスヘッダSHに含まれるアクティブPPS識別子(slice_pic_parameter_set_id)により、アクティブPPSが指定される。次に、指定されたアクティブPPSに含まれるアクティブSPS識別子(pps_seq_parameter_set_id)により、アクティブSPSが指定される。最後に、アクティブSPSに含まれるアクティブVPS識別子(sps_video_parameter_set_id)により、アクティブVPSが指定される。その後、指定されたアクティブPPS、アクティブSPS、アクティブVPSの符号化パラメータを、ピクチャ復号部14へ供給する。なお、ピクチャを復号するために参照されるパラメータセットを指定することを、「パラメータセットをアクティベートする」とも呼ぶ。例えば、アクティブPPS、アクティブSPS、アクティブVPSを指定することを、それぞれ「PPSをアクティベートする」、「SPSをアクティベートする」、「VPSをアクティベートする」と呼ぶ。
ピクチャ復号部14は、入力されるVCL NAL、アクティブパラメータセット(アクティブPPS、アクティブSPS、アクティブVPS),及び参照ピクチャに基づいて復号ピクチャを生成して復号ピクチャ管理部15へ供給する。供給された復号ピクチャは、復号ピクチャ管理部15内のバッファに記録される。なお、ピクチャ復号部14の詳細な説明は後述する。
復号ピクチャ管理部15は、入力される復号ピクチャを内部の復号ピクチャバッファ(DPB: Decoded Picture Buffer)に記録するとともに、参照ピクチャリスト生成や出力ピクチャ決定を行う。また、復号ピクチャ管理部15は、DPBに記録されている復号ピクチャを、所定のタイミングで出力ピクチャPOUT#Tとして外部に出力する。
(パラメータセット復号部12)
パラメータセット復号部12は、入力される対象レイヤセット符号化データから、対象レイヤセットの復号に用いられるパラメータセット(VPS、SPS、PPS)を復号する。復号されたパラメータセットの符号化パラメータは、パラメータセット管理部13に供給され、各パラメータセットの有する識別子毎に記録される。
一般に、パラメータセットの復号は既定のシンタックス表に基づいて実行される。すなわち、シンタックス表の定める手順に従って符号化データからビット列を読み出して、シンタックス表に含まれるシンタックスのシンタックス値を復号する。また、必要に応じて、復号したシンタックス値に基づいて導出した変数を導出して、出力するパラメータセットに含めてもよい。したがって、パラメータセット復号部12から出力されるパラメータセットは、符号化データに含まれるパラメータセット(VPS、SPS、PPS)に係るシンタックスのシンタックス値、および、該シンタックス値より導出される変数の集合と表現することもできる。
以下では、パラメータセット復号部12において復号に使用されるシンタックス表のうち、本発明との関連性が高いシンタックス表を中心に説明する。
(ビデオパラメータセットVPS)
ビデオパラメータセットVPSは、複数のレイヤに共通するパラメータを規定するためのパラメータセットであり、各VPSを識別するためのVPS識別子、レイヤ情報として、最大レイヤ数情報、レイヤセット情報、及びレイヤ間依存情報が含まれている。
VPS識別子は、各VPSを識別するための識別子であり、シンタックス“video_parameter_set_id”(図12のSYNVPS01)としてVPSに含まれている。後述のSPSに含まれるアクティブVPS識別子(sps_video_parameter_set_id)により特定されるVPSが、対象レイヤセット内の対象レイヤの符号化データの復号処理時に参照される。
最大レイヤ数情報は、階層符号化データ内の最大レイヤ数を表わす情報であり、シンタックス“vps_max_layers_minus1”(図12のSYNVPS02)としてVPSに含まれている。階層符号化データ内の最大レイヤ数(以下、最大レイヤ数MaxNumLayers)は、(vps_max_layers_minus1+1)の値に設定される。なお、ここで規定される最大レイヤ数は、時間スケーラビリティを除く、その他のスケーラビリティ(SNRスケーラビリティ、空間スケーラビリティ、ビュースケーラビリティなど)に関するレイヤの最大レイヤ数である。
最大サブレイヤ数情報は、階層符号化データ内の最大サブレイヤ数を表わす情報であり、シンタックス“vps_max_sub_layers_minus1”(図12のSYNVPS03)としてVPSに含まれている。階層符号化データ内の最大サブレイヤ数(以下、最大サブレイヤ数MaxNumSubLayers)は、(vps_max_num_sub_layers_minus1+1)の値に設定される。なお、ここで規定される最大サブレイヤ数とは、時間スケーラビリティに関するレイヤの最大レイヤ数である。
最大レイヤ識別子情報は、階層符号化データ内に含まれる最高次のレイヤのレイヤ識別子(レイヤID)を表わす情報であり、シンタックス“vps_max_layer_id”(図12のSYNVPS04)として、VPSに含まれている。言い換えれば、階層符号化データ内に含まれる、NALユニットのレイヤID(nuh_layer_id)の最大値である。
レイヤセット数情報は、階層符号化データに含まれるレイヤセットの総数を表わす情報であり、シンタックス“vps_num_layer_sets_minus1” (図12のSYNVPS05)として、VPSに含まれている。階層符号化データ内のレイヤセット数(以下、レイヤセット数NumLayerSets)は、(vps_num_layer_sets_minus1+1)の値に設定される。
レイヤセット情報は、階層符号化データに含まれるレイヤセットを構成するレイヤの集合を表わすリスト(以下、レイヤIDリストLayerSetLayerIdList)であり、VPSから復号される。VPSには、レイヤ識別子の値がj(nuhLayerId=j)のレイヤが、i番目のレイヤセットに含まれるか否かを示すシンタックス“layer_id_included_flag[i][j]”(図12のSYNVPS06)が含まれており、該シンタックスの値が1であるレイヤ識別子を持つレイヤからレイヤセットが構成される。すなわち、レイヤセットiを構成するレイヤjは、レイヤIDリストLayerSetLayerIdList[i]に含まれる。
VPS拡張データ有無フラグ“vps_extension_flag”(図12のSYNVPS07)は、VPSがさらにVPS拡張データvps_extension()(図12のSYNVPS08)を含むか否かを示すフラグである。なお、本明細書中「XXであるか否かを示すフラグ」、あるいは「XXの有無フラグ」と記す場合、1をXXである場合、0をXXではない場合とし、論理否定、論理積などでは1を真、0を偽と扱う(以下同様)。但し、実際の装置や方法では真値、偽値として他の値を用いることもできる。
レイヤ間依存情報は、VPSに含まれるVPS拡張データ(vps_extension())から復号される。VPS拡張データに含まれるレイヤ間依存情報について、図13を参照して説明する。図13は、VPS拡張復号時に参照されるシンタックス表の一部であって、レイヤ間依存情報に係る部分を示す。
VPS拡張データ(vps_extension())には、レイヤ間依存情報として、直接依存フラグ“direct_dependency_flag[i][j]”(図13のSYNVPS0A)が含まれている。直接依存フラグdirect_dependency_flag[i][j]は、i番目のレイヤが、j番目のレイヤに直接的に依存しているか否かを示し、直接的に依存している場合に1の値、直接的に依存していない場合に0の値をとる。ここで、i番目のレイヤがj番目のレイヤに直接的に依存している場合、i番目のレイヤを対象レイヤとして復号処理を実行する場合に、j番目のレイヤに関するパラメータセット、復号ピクチャや関連する復号済シンタックスが、対象レイヤにより直接的に参照される可能性があることを意味する。逆に、i番目のレイヤがj番目のレイヤに直接的に依存していない場合、i番目のレイヤを対象レイヤとして復号処理を実行する場合に、j番目のレイヤに関するパラメータセット、復号ピクチャや関連する復号済シンタックスが直接的に参照されないことを意味する。言い換えると、i番目のレイヤのj番目のレイヤに対する直接依存フラグが1である場合、j番目のレイヤはi番目のレイヤの直接的な参照レイヤとなりえる。特定のレイヤに対して直接的な参照レイヤとなりえるレイヤの集合、つまり対応する直接依存フラグの値が1であるレイヤの集合を、直接依存レイヤセットと呼ぶ。なお、i=0、すなわちの0番目のレイヤ(基本レイヤ)は、j番目のレイヤ(拡張レイヤ)とは直接的な依存関係がないため、直接依存フラグ”direct_depedency_flag[i][j]”の値は0であり、図13のSYNVPS0Aを含むiのループが1から始まることに示されるように、0番目のレイヤ(基本レイヤ)に対するj番目のレイヤ(拡張レイヤ)の直接依存フラグの復号/符号化は省略可能である。
ここで、i番目のレイヤ(レイヤ識別子iNuhLId=nunLayerIdI)に対する直接参照レイヤセットを示す、参照レイヤIDリストRefLayerId[iNuhLId][]、及びi番目のレイヤの参照レイヤであるj番目のレイヤが、直接参照レイヤセットの中で、昇順で、何番目の要素であるかを示す直接参照レイヤIDXリストDirectRefLayerIdx[iNuhLId][]は、後述の式により導出される。なお、参照レイヤIDリストRefLayerId[][]は2次元の配列であり、1番目の配列の要素には、対象レイヤ(レイヤi)のレイヤ識別子が格納され、2番目の配列の要素には、直接参照レイヤセットの中で、昇順で、k番目の参照レイヤのレイヤ識別子が格納される。なお、直接参照レイヤIDXリストDirectRefLayerIdx[][]は2次元の配列であり、1番目の配列の要素には、対象レイヤ(レイヤi)のレイヤ識別子が格納され、2番目の配列の要素には、レイヤ識別子が、直接参照レイヤセットの中で、昇順で、何番目の要素であるかを示すインデクス(直接参照レイヤIDX)が格納される。
上記、参照レイヤIDリスト、及び直接参照レイヤIDXリストは以下の疑似コードで導出される。なお、i番目のレイヤのレイヤ識別子nuhLayerIdは、VPS上で“layer_id_in_nuh[i]”(図13では不図示)のシンタックスによって表わされる。以降では、i番目のレイヤのレイヤ識別子“layer_id_in_nuh[i]”の表記を短くするため、”nuhLId#i”と表記する。layer_id_in_nuh[j]であれば、”nuhLId#j”である。また、配列NumDirectRefLayers[]は、レイヤ識別子iNuhLIdのレイヤが参照する直接参照レイヤ数を表わす。
(参照レイヤIDリスト、及び直接参照レイヤIDXリストの導出)
参照レイヤIDリスト、及び直接参照レイヤIDXリストの導出は以下の疑似コードにより実行される。
for(i=0; i< vps_max_layers_minus1+1; i++){
iNuhLId = nuhLId#i;
NumDirectRefLayers[iNuhLId] = 0;
for(j=0; j<i; j++){
if( direct_dependency_flag[i][j]){
RefLayerId[iNuhLId][NumDirectRefLayers[iNuhLId]] = nuhLId#j;
NumDirectRefLayers[iNuhLId]++;
DirectRefLayerIdx[iNuhLId][ nuhLId#j]= NumDirectRefLayers[iNuhLId] - 1;
}
} // end of loop on for(j=0; j<i; i++)
} // end of loop on for(i=0; i< vps_max_layers_minus1+1; i++)
なお、上記疑似コードをステップで表わせば、次の通りである。
(SL01)i番目のレイヤに関する参照レイヤIDリスト、及び直接参照レイヤIDXリストの導出に係るループの開始点である。ループの開始前に、変数iは0に初期化される。ループ内の処理は、変数iがレイヤ数“ vps_max_layers_minus1+1”未満のときに実行され、ループ内の処理が1回実行される度に、変数iは“1”加算される。
(SL02)変数iNuhLidに、i番目のレイヤのレイヤ識別子nuhLID#iを設定する。さらに、レイヤ識別子nuhLID#iの直接参照レイヤ数NumDirectRefLyaers[iNuhLID]を0へ設定する。(SL03)j番目のレイヤを、i番目のレイヤに関する参照レイヤIDリスト、及び直接参照レイヤIDXリストへ要素追加に係るループの開始点である。ループの開始前に、変数jは0に初期化される。ループ内の処理は、変数j(j番目のレイヤ)がi番目のレイヤ未満(j<i)のときに実行され、ループ内の処理が1回実行される度に、変数jは“1”加算される。
(SL04)i番目のレイヤに対するj番目のレイヤの直接依存フラグ(direct_dependency_flag[i][j])を判定する。直接依存フラグが1であれば、ステップSL05〜SL07の処理を実行するため、ステップSL05へ遷移する。直接依存フラグが0であれば、ステップSL05〜SL07の処理を省略し、SL0Aへ遷移する。
(SL05)参照レイヤIDリストRefLayerId[iNuhLId][]のNumDirectRefLayers[iNuhLId]番目の要素へ、レイヤ識別子nuhLID#jを設定する。
すなわち、RefLayerId[iNuhLId][NumDirectRefLayers[iNuhLId]] = nuhLId#j;
(SL06)直接参照レイヤ数NumDirectRefLayers[iNuhLId]の値を“1”加算する。すなわち、NumDirectRefLayers[iNuhLId]++;
(SL07)直接参照レイヤIDXリストDirectRefLayerIdx[iNuhLid][]のnuhLId#j番目の要素へ、直接参照レイヤインデクス(直接参照レイヤIDX)として、“直接参照レイヤ数-1”の値を設定する。すなわち、
DirectRefLayerIdx[iNuhLId][ nuhLId#j]= NumDirectRefLayers[iNuhLId] - 1;
(SL0A)j番目のレイヤを、i番目のレイヤに関する参照レイヤIDリスト、及び直接参照レイヤIDXリストへ要素追加に係るループの終端である。
(SL0B)i番目のレイヤの参照レイヤIDリスト、及び直接参照レイヤIDXリストの導出に係るループの終端である。
以上、説明した、参照レイヤIDリスト、及び直接参照レイヤIDXリストを利用することで、直接参照レイヤセットで、k番目のレイヤのレイヤIDが、全レイヤの中で、何番目の要素(直接参照レイヤIDX)であるか、逆に、直接参照レイヤIDXが、直接参照レイヤセットで、何番目の要素であるかを把握することができる。なお、導出の手順は、上記ステップに限定されず、実施可能な範囲で変更してもよい。
(間接依存フラグ、依存フラグの導出)
ここで、i番目のレイヤが、j番目のレイヤに間接的に依存するか否か(j番目のレイヤは、i番目のレイヤの間接参照レイヤであるか否か)の依存関係を示す間接依存フラグ(IndirectDependencyFlag[i][j])は、直接依存フラグ(direct_dependency_flag[i][j])を参照して、後述の疑似コードにより導出することができる。同様に、i番目のレイヤが、j番目のレイヤに直接的に依存するか(直接依存フラグが1の場合、j番目のレイヤは、i番目のレイヤの直接参照レイヤともいう)、あるいは間接的に依存するか(間接依存フラグが1の場合、j番目のレイヤは、i番目のレイヤの間接参照レイヤともいう)の依存関係を示す依存フラグ(DependencyFlag[i][j])は、直接依存フラグ(direct_dependency_flag[i][j])、及び上記間接依存フラグ(IndirectDepdendencyFlag[i][j])を参照して、後述の疑似コードにより導出することができる。ここで、図31を参照しながら、間接参照レイヤについて説明する。図31では、レイヤ数が、N+1であり、j番目のレイヤ(図31上のL#j、レイヤjと呼ぶ)は、i番目のレイヤ(図31上のL#i、レイヤiと呼ぶ)より下位のレイヤである(j<i)。また、レイヤjより上位であり、レイヤiより下位であるレイヤk(図31上では、L#k)(j<k<i)があるとする。図31では、レイヤkは、レイヤjに直接的に依存し(図31上の実線の矢印、レイヤjはレイヤkの直接参照レイヤ、direct_dependency_flag[k][j]==1)、レイヤiは、レイヤkに直接的に依存する(レイヤkは、レイヤjの直接参照レイヤ、direct_dependency_flag[i][k]==1)。このとき、レイヤiは、レイヤkを介して、レイヤjに対して、間接的に依存する(図31上の点線の矢印)ため、レイヤjはレイヤiの間接参照レイヤであると呼ぶ。また、図31の例では、レイヤjは、レイヤ1(図31上のL#1)に直接的に依存し、レイヤ1は、レイヤ0(図31上のL#0、基本レイヤ)に直接的に依存している。このとき、レイヤiは、レイヤk、レイヤjを介して、レイヤ1に間接的に依存するため、レイヤ1は、レイヤiの間接参照レイヤである。また、レイヤiは、レイヤk、レイヤj、レイヤ1を介して、レイヤ0に間接的に依存するため、レイヤ0は、レイヤiの間接参照レイヤである。換言すれば、レイヤiが、1又は複数のレイヤk(i<k<j)を介して、レイヤjに対して、間接的に依存す場合、レイヤjは、レイヤiの間接参照レイヤである。
なお、間接依存フラグIndirectDependencyFlag[i][j]は、i番目のレイヤが、j番目のレイヤに間接的に依存しているか否かを示し、間接的に依存している場合に1の値、間接的に依存していない場合に0の値をとる。ここで、i番目のレイヤがj番目のレイヤに間接的に依存している場合、i番目のレイヤを対象レイヤとして復号処理を実行する場合に、j番目のレイヤに関するパラメータセット、復号ピクチャや関連する復号済シンタックスが、対象レイヤにより間接的に参照される可能性があることを意味する。逆に、i番目のレイヤがj番目のレイヤに間接的に依存していない場合、i番目のレイヤを対象レイヤとして復号処理を実行する場合に、j番目のレイヤに関するパラメータセット、復号ピクチャや関連する復号済シンタックスが間接的に参照されないことを意味する。言い換えると、i番目のレイヤのj番目のレイヤに対する間接依存フラグが1である場合、j番目のレイヤはi番目のレイヤの間接的な参照レイヤとなりえる。特定のレイヤに対して間接的な参照レイヤとなりえるレイヤの集合、つまり対応する間接依存フラグの値が1であるレイヤの集合を、間接依存レイヤセットと呼ぶ。なお、i=0、すなわちの0番目のレイヤ(基本レイヤ)は、j番目のレイヤ(拡張レイヤ)とは間接的な依存関係がないため、間接依存フラグ“IndirecctDepedencyFlag[i][j]”の値は0であり、0番目のレイヤ(基本レイヤ)に対するj番目のレイヤ(拡張レイヤ)の間接依存フラグの導出は省略可能である。
また、依存フラグDependencyFlag[i][j]は、i番目のレイヤが、j番目のレイヤに依存しているか否かを示し、依存している場合に1の値、依存していない場合に0の値をとる。なお、依存フラグDependencyFlag[i][j]に関連する、参照や依存については、特に言及しない限り、直接と間接(直接参照、間接参照、直接依存、間接依存)の両方を含むものとする。ここで、i番目のレイヤがj番目のレイヤに依存している場合、i番目のレイヤを対象レイヤとして復号処理を実行する場合に、j番目のレイヤに関するパラメータセット、復号ピクチャや関連する復号済シンタックスが、対象レイヤにより参照される可能性があることを意味する。逆に、i番目のレイヤがj番目のレイヤに依存していない場合、i番目のレイヤを対象レイヤとして復号処理を実行する場合に、j番目のレイヤに関するパラメータセット、復号ピクチャや関連する復号済シンタックスが参照されないことを意味する。言い換えると、i番目のレイヤのj番目のレイヤに対する依存フラグが1である場合、j番目のレイヤはi番目のレイヤの直接参照レイヤ、または間接参照レイヤとなりえる。特定のレイヤに対して直接参照レイヤ、または間接参照レイヤとなりえるレイヤの集合、つまり対応する依存フラグの値が1であるレイヤの集合を、依存レイヤセットと呼ぶ。なお、i=0、すなわちの0番目のレイヤ(基本レイヤ)は、j番目のレイヤ(拡張レイヤ)とは依存関係がないため、依存フラグ“DepedencyFlag[i][j]”の値は0であり、0番目のレイヤ(基本レイヤ)に対するj番目のレイヤ(拡張レイヤ)の依存フラグの導出は省略可能である。
(疑似コード)
for(i=0; i< vps_max_layers_minus1+1; i++){
for(j=0; j<i; j++){
IndirectDependencyFlag[i][j] = 0;
DependencyFlag[i][j] = 0;
for(k=j+1; k<i; k++){
if(direct_dependency_flag[k][j] &&
direct_dependency_flag[i][k] &&
!direct_dependency_flag[i][j]){
IndirectDependencyFlag[i][j] = 1;
}
}
DependencyFlag[i][j] =
(direct_dependency_flag[i][j] | IndirectDependencyFlag[i][j]);
} // end of loop on for(j=0; j<i; i++)
} // end of loop on for(i=0; i< vps_max_layers_minus1+1; i++)
なお、上記疑似コードをステップで表わせば、次の通りである。
(SN01)i番目のレイヤに関する間接依存フラグ、及び依存フラグの導出に係るループの開始点である。ループの開始前に、変数iは0に初期化される。ループ内の処理は、変数iがレイヤ数“vps_max_layers_minus1+1”未満のときに実行され、ループ内の処理が1回実行される度に、変数iは“1”加算される。
(SN02)i番目のレイヤとj番目のレイヤに関する間接依存フラグ、及び依存フラグの導出に係るループの開始点である。ループの開始前に、変数jは0に初期化される。ループ内の処理は、変数j(j番目のレイヤ)がi番目のレイヤ未満(j<i)のときに実行され、ループ内の処理が1回実行される度に、変数jは“1”加算される。
(SN03)間接依存フラグIndirectDependencyFlag[i][]のj番目の要素の値を0、依存フラグDependencyFlag[i][]のj番目の要素の値を0へ設定する。すなわち、IndirectDependencyFlag[i][j] = 0、DependencyFlag[i][j] = 0である。
(SN04)i番目のレイヤに対するj番目のレイヤが間接参照レイヤであるか否かを探索するためのループの開始点である。ループの開始前に、変数kは”j+1”に初期化される。ループ内の処理は、変数kの値が、変数i未満のときに実行され、ループ内の処理が1回実行される度に、変数kは“1”加算される。
(SN05)j番目のレイヤがi番目のレイヤの間接参照レイヤであるかを判定するため、以下の(1)〜(3)の条件を判定する。
(1)j番目のレイヤが、k番目のレイヤの直接参照レイヤであるかを判定する。具体的には、k番目のレイヤに対するj番目のレイヤの直接依存フラグ(direct_dependency_flag[k][j])が1であれば、真(直接参照レイヤである)と判定し、直接依存フラグが0(直接参照レイヤでない)であれば、偽と判定する。
(2)k番目のレイヤが、i番目のレイヤの直接参照レイヤであるかを判定する。具体的には、i番目のレイヤに対するk番目のレイヤの直接依存フラグ(direct_dependency_flag[i][k])が1であれば、真(直接参照レイヤである)と判定し、直接依存フラグが0(直接参照レイヤでない)であれば、偽と判定する。
(3)j番目のレイヤが、i番目のレイヤの直接参照レイヤでないことを判定する。具体的には、i番目のレイヤに対するj番目のレイヤの直接依存フラグ(direct_dependency_flag[i][j])が0(直接参照レイヤでない)であれば、真と判定し、直接依存フラグが1(直接参照レイヤである)であれば、偽と判定する。
上記(1)〜(3)の条件が全て真である場合(すなわち、k番目のレイヤに対するj番目のレイヤの直接依存フラグdirect_dependency_flag[k][j]が1、かつ、i番目のレイヤに対するk番目のレイヤの直接依存フラグdirect_dependency_flag[i][k]が1、かつ、i番目のレイヤに対するj番目のレイヤの直接依存フラグdirect_dependency_flag[i][j]が0)、ステップSN06へ遷移する。それ以外の場合(上記(1)〜(3)のいずれか一つでも偽である場合、すなわち、k番目のレイヤに対するj番目のレイヤの直接依存フラグdirect_dependency_flag[k][j]が0、または、i番目のレイヤに対するk番目のレイヤの直接依存フラグdirect_dependency_flag[i][k]が0、または、i番目のレイヤに対するj番目のレイヤの直接依存フラグdirect_dependency_flag[i][j]が1)であれば、ステップSN06の処理を省略し、ステップSN07へ遷移する。
(SN06)上記(1)〜(3)の条件が全て真である場合、i番目のレイヤに対するj番目のレイヤは間接参照レイヤであると判断し、間接依存フラグIndirectDependencyFlag[i][]のj番目の要素の値を1へ設定する。すなわち、IndirectDependencyFlag[i][j] = 1である。
(SN07)i番目のレイヤに対するj番目のレイヤが間接参照レイヤであるか否かを探索するためのループの終端である。
(SN08)直接依存フラグ(direct_dependency_flag[i][j])、及び間接依存フラグ(IndirectDependencyFlag[i][j])に基づいて、依存フラグ(DependencyFlag[i][j])の値を設定する。具体的には、直接依存フラグ(direct_dependency_flag[i][j])の値と、間接依存フラグ(direct_dependency_flag[i][j])の値の論理和の値を、依存フラグ(DependencyFlag[i][j])の値とする。すなわち、以下の式で導出する。直接依存フラグの値が1、または間接依存フラグの値が1であれば、依存フラグの値は1となる。それ以外の場合(直接依存フラグの値が0、かつ、間接依存フラグの値が0)は、依存フラグの値は0となる。なお、下記導出式は、一例であり、依存フラグに設定される値が同一になる範囲で変更可能である。
DependencyFlag[i][j] =
(direct_dependency_flag[i][j] | IndirectDependencyFlag[i][j]);
(SN0A))i番目のレイヤとj番目のレイヤに関する間接依存フラグ、及び依存フラグの導出に係るループの終端である。
(SN0B)i番目のレイヤに関する間接依存フラグ、及び依存フラグの導出に係るループの終端である。
以上、説明したように、i番目のレイヤが、j番目のレイヤに間接的に依存する場合の依存関係を示す間接依存フラグ(IndirectDependencyFlag[i][j])を導出することにより、j番目のレイヤが、i番目のレイヤの間接参照レイヤであるかを把握することができる。また、i番目のレイヤが、j番目のレイヤに依存する場合(直接依存フラグが1、または間接依存フラグが1の場合)の依存関係を示す依存フラグ(DependencyFlag[i][j])を導出することにより、j番目のレイヤが、i番目のレイヤの直接参照レイヤ、または間接参照レイヤであるかを把握することができる。なお、導出の手順は、上記ステップに限定されず、実施可能な範囲で変更してもよい。例えば、間接依存フラグ、依存フラグの導出は、次の疑似コードによって導出してもよい。
(疑似コード)
// derive indirect reference layers of layer i
for(i=2; i< vps_max_layers_minus1+1; i++){
for(k=1; k<i; k++){
for(j=0; j<k; j++){
if( (direct_dependency_flag[k][j] || IndirectDependencyFlag[k][j] )
direct_dependency_flag[i][k] &&
!direct_dependency_flag[i][j]){
IndirectDependencyFlag[i][j] = 1;
}
} // end of loop on for(j=0; j<k; j++)
} // end of loop on for(k=1; k<i; k++)
} // end of loop on for(i=2; i< vps_max_layers_minus1+1; i++)
// derive dependent layers (direct or indirect reference layers) of layer i
for(i=0; i< vps_max_layers_minus1+1; i++){
for(j=0; j<i; j++){
DependencyFlag[i][j] =
(direct_dependency_flag[i][j] | IndirectDependencyFlag[i][j]);
} // end of loop on for(j=0; j<i; i++)
} // end of loop on for(i=0; i< vps_max_layers_minus1+1; i++)
なお、上記疑似コードをステップで表わせば、次の通りである。なお、ステップSO01の開始前に、間接依存フラグIndirectDependencyFlag[][]、及び依存フラグDependencyFlga[][]の全ての要素の値は、0で初期化済であるものとする。
(SO01)i番目のレイヤ(レイヤi)に関する間接依存フラグの導出に係るループの開始点である。ループの開始前に、変数iは2に初期化される。ループ内の処理は、変数iがレイヤ数“vps_max_layers_minus1+1”未満のときに実行され、ループ内の処理が1回実行される度に、変数iは“1”加算される。なお、変数iを2から開始するのは、間接参照レイヤが発生するのはレイヤ数が3レイヤ以上のためである。
(SO02)i番目のレイヤ(レイヤi)の下位レイヤであって、j番目のレイヤ(レイヤj)の上位レイヤであるk番目のレイヤ(レイヤk)(j<k<i)に関するループの開始点である。ループの開始前に、変数iは1に初期化される。ループ内の処理は、変数k(レイヤk)がレイヤi未満(k<i)のときに実行され、ループ内の処理が1回実行される度に、変数kは“1”加算される。なお、変数kを1から開始するのは、間接参照レイヤが発生するのはレイヤ数が3レイヤ以上のためである。
(SO03)レイヤjがレイヤiの間接参照レイヤであるかを探索するループ開始点である。ループの開始前に、変数jは0に初期化される。ループ内の処理は、変数j(レイヤj)がレイヤk未満(j<k)のときに実行され、ループ内の処理が1回実行される度に、変数jは“1”加算される。
(SO04)レイヤjがレイヤiの間接参照レイヤであるかを判定するため、以下の(1)〜(3)の条件を判定する。
(1)レイヤjが、レイヤkの直接参照レイヤ、または間接参照レイヤであるかを判定する。具体的には、レイヤkに対するレイヤjの直接依存フラグ(direct_dependency_flag[k][j])が1、または、レイヤkに対するレイヤjの間接依存フラグ(IndirectDependencyFlag[k][j])が1であれば、真(直接参照レイヤ、または間接参照レイヤである)と判定する。また、直接依存フラグが0(直接参照レイヤでない)、かつ、間接依存フラグが0(間接参照レイヤでない)であれば、偽と判定する。
(2)レイヤkが、レイヤiの直接参照レイヤであるかを判定する。具体的には、レイヤiに対するレイヤkの直接依存フラグ(direct_dependency_flag[i][k])が1であれば、真(直接参照レイヤである)と判定し、直接依存フラグが0(直接参照レイヤでない)であれば、偽と判定する。
(3)レイヤjが、レイヤiの直接参照レイヤでないことを判定する。具体的には、レイヤiに対するレイヤjの直接依存フラグ(direct_dependency_flag[i][j])が0(直接参照レイヤでない)であれば、真と判定し、直接依存フラグが1(直接参照レイヤである)であれば、偽と判定する。
上記(1)〜(3)の条件が全て真である場合(すなわち、(レイヤkに対するレイヤjの直接依存フラグが1、あるいは間接依存フラグが1)、かつ、レイヤiに対するレイヤの直接依存フラグdirect_dependency_flag[i][k]が1、かつ、レイヤiに対するレイヤの直接依存フラグdirect_dependency_flag[i][j]が0)、ステップSN06へ遷移する。それ以外の場合(上記(1)〜(3)のいずれか一つでも偽である場合、すなわち、レイヤkに対するレイヤjの直接依存フラグが0、かつ間接依存フラグが0)、または、レイヤiに対するレイヤの直接依存フラグdirect_dependency_flag[i][k]が0、または、レイヤiに対するレイヤの直接依存フラグdirect_dependency_flag[i][j]が1)であれば、ステップSO05の処理を省略し、ステップSO06へ遷移する。
(SO05)上記(1)〜(3)の条件が全て真である場合、レイヤjは、レイヤiの間接参照レイヤであると判断し、間接依存フラグIndirectDependencyFlag[i][]のj番目の要素の値を1へ設定する。すなわち、IndirectDependencyFlag[i][j] = 1である。
(SO06)レイヤjがレイヤiの間接参照レイヤであるかを探索するループの終端である。
(SO07)レイヤiの下位レイヤであって、レイヤjの上位レイヤであるレイヤk (j<k<i)に関するループの終端である。
(SO08)レイヤiに関する間接依存フラグの導出に係るループの終端である。
(S00A)レイヤiに関する依存フラグの導出に係るループの開始点である。ループの開始前に、変数iは0に初期化される。ループ内の処理は、変数iがレイヤ数“vps_max_layers_minus1+1”未満のときに実行され、ループ内の処理が1回実行される度に、変数iは“1”加算される。
(S00B)レイヤjがレイヤiの依存レイヤ(直接参照レイヤ、または間接参照レイヤ)であるかを探索するループの開始点である。ループの開始前に、変数jは0に初期化される。ループ内の処理は、変数jが変数i未満(j<i)のときに実行され、ループ内の処理が1回実行される度に、変数jは“1”加算される。
(S00C)直接依存フラグ(direct_dependency_flag[i][j])、及び間接依存フラグ(IndirectDependencyFlag[i][j])に基づいて、依存フラグ(DependencyFlag[i][j])の値を設定する。具体的には、直接依存フラグ(direct_dependency_flag[i][j])の値と、間接依存フラグ(direct_dependency_flag[i][j])の値の論理和の値を、依存フラグ(DependencyFlag[i][j])の値とする。すなわち、以下の式で導出する。直接依存フラグの値が1、または間接依存フラグの値が1であれば、依存フラグの値は1となる。それ以外の場合(直接依存フラグの値が0、かつ、間接依存フラグの値が0)は、依存フラグの値は0となる。なお、下記導出式は、一例であり、依存フラグに設定される値が同一になる範囲で変更可能である。
DependencyFlag[i][j] =
(direct_dependency_flag[i][j] | IndirectDependencyFlag[i][j]);
(S00D)レイヤjがレイヤiの依存レイヤ(直接参照レイヤ、または間接参照レイヤ)であるかを探索するループの終端である。
(S00E)レイヤiに関する依存フラグの導出に係るループの終端である。
以上、説明したように、レイヤiが、レイヤjに間接的に依存する場合の依存関係を示す間接依存フラグ(IndirectDependencyFlag[i][j])を導出することにより、レイヤjが、レイヤiの間接参照レイヤであるかを把握することができる。また、レイヤiが、レイヤjに依存する場合(直接依存フラグが1、または間接依存フラグが1の場合)の依存関係を示す依存フラグ(DependencyFlag[i][j])を導出することにより、レイヤjが、レイヤiの依存レイヤ(直接参照レイヤ、または間接参照レイヤ)であるかを把握することができる。なお、導出の手順は、上記ステップに限定されず、実施可能な範囲で変更してもよい。
また、上記の例では、i番目のレイヤに対するj番目のレイヤが直接参照レイヤ、または間接参照レイヤであるか否かを示す依存フラグDipendecyFlag[i][j]を、全レイヤ内でのインデクスiとjに対して導出しているが、i番目のレイヤのレイヤ識別子nuhLId#i、及びj番目のレイヤのレイヤ識別子nuhLId#jとして、レイヤ識別子間の依存フラグ(レイヤ識別子間依存フラグ)LIdDipendencyFlag[][]を導出してもよい。その場合、上記ステップSN08において、レイヤ識別子間依存フラグ(LIdDependencyFlag[][])の1番目の要素を、i番目のレイヤのレイヤ識別子nuhLId#i、2番目の要素をj番目のレイヤのレイヤ識別子nuhLId#jとして、レイヤ識別子間依存フラグ(LIdDependencyFlag[nuhLId#i][nuhLId#j])の値を導出する。すなわち、以下の式に示すように、直接依存フラグの値が1、または間接依存フラグの値が1であれば、レイヤ識別子間依存フラグの値は1となる。それ以外の場合(直接依存フラグの値が0、かつ、間接依存フラグの値が0)は、レイヤ識別子間依存フラグの値は0となる。
LIdDependencyFlag[nuhLId#i][nuhLId#j] =
(direct_dependency_flag[i][j] | IndirectDependencyFlag[i][j]);
以上、説明したように、レイヤ識別子nuhLId#iであるi番目のレイヤが、レイヤ識別子nuhLId#jであるj番目のレイヤに直接的に、または間接的に依存するか示すレイヤ識別子間依存フラグ(Lid0DependencyFlag[nuhLId#i][nuhLId#j])を導出することにより、レイヤ識別子nuhLId#jであるj番目のレイヤが、レイヤ識別子nuhLId#iであるi番目のレイヤの直接参照レイヤ、または間接参照レイヤであるかを把握することができる。なお、上記手順は、これに限定されず、実施可能な範囲で変更してもよい。
また、レイヤ間依存情報には、後述のレイヤ依存タイプ(direct_dependency_type[i][j])ビット長Mを示すシンタックス“direct_dependency_len_minusN”(レイヤ依存タイプビット長)(図13のSYNVPS0C)が含まれている。ここで、Nはレイヤ依存タイプの種類の総数によって定まる値であり、少なくとも2以上の整数である。なお、ビット長Mの最大値は、例えば、32であり、N=2とすれば、direct_dependency_type[i][j]の値域は、0から(2^32 - 2)である。より一般的には、ビット長M、及びレイヤ依存タイプの総数によって定まるNで表せば、direct_dependency_type[i][j]の値域は、0から(2^M - N)である。
レイヤ間依存情報には、i番目のレイヤがとj番目のレイヤ間の参照関係を示すレイヤ依存タイプを示すシンタックス“direct_dependency_type[i][j]”(図13のSYNVPS0D)が含まれている。具体的には、直接依存フラグdirect_dependency_flag[i][j]が1である場合、レイヤ依存タイプ(DirectDepType[i][j] = direct_dependency_type[i][j] + 1)の各ビット値で、i番目のレイヤに対する参照レイヤであるj番目のレイヤのレイヤ依存タイプの種別の有無フラグを示す。例えば、レイヤ依存タイプの種別の有無フラグには、レイヤ間画像予測の有無フラグ(SamplePredEnabledFlag;レイヤ間画像予測有無フラグ)、レイヤ間動き予測の有無フラグ(MotionPredEnabledFlag;レイヤ間動き予測有無フラグ)や、non-VCLの依存の有無フラグ(NonVCLDepEnabledFlag;non-VCL依存有無フラグ)がある。なお、non-VCLの依存有無フラグは、non-VCL NALユニットに含まれるヘッダ情報(SPSやPPSなどのパラメータセット)に関するレイヤ間の依存関係の有無を示す。例えば、後述するレイヤ間でのパラメータセットの共有(共有パラメータセット)の有無や、レイヤ間でのパラメータセット内の一部のシンタックス予測(例えば、スケーリングリスト情報(量子化マトリックス)等)(パラメータセット間シンタックス予測、あるいはパラメータセット間予測ともいう)の有無が含まれる。なお、シンタックス“direct_dependency_type[i][j]”で符号化される値は、図14の例では、レイヤ依存タイプの値-1、すなわち、“DirectDepType[i][j] - 1”の値である。
ここで、本実施形態に係るレイヤ依存タイプの値(DirectDepType[i][j] = direct_dependency_type[i][j] + 1)とレイヤ依存タイプの種別の対応関係の一例を図14(a)に示す。図14(a)に示すように、レイヤ依存タイプの最下位ビット(0ビット)の値は、レイヤ間画像予測の有無を示し、最下位ビットから1ビット目の値は、レイヤ間動き予測の有無を示し、最下位ビットから(N-1)ビット目の値は、non-VCLの依存の有無を示す。なお、最下位ビットからNビット目から最上位ビット(M-1ビット目)の各ビットは、依存タイプの拡張用ビットである。
対象レイヤi(レイヤ識別子iNuhLId=nunLayerIdI)に対する参照レイヤjの各レイヤ依存タイプ別有無フラグは、次の式によって導出される。
SamplePredEnabledFlag[iNuhLId][j]=((direct_dependency_type[i][j]+1) & 1 );
MotionPredEnabledFlag[iNuhLId][j]=((direct_dependency_type[i][j]+1) & 2 )>>1;
NonVCLDepEnabledFlag [iNuhLid][j]=
((direct_dependency_type[i][j]+1) & (1<<(N-1)) ) >> (N-1);
あるいは、(direct_dependency_type[i][j]+1)の代わりに、変数DirectDepType[i][j]を用いて、次の式によっても表現できる。
SamplePredEnabledFlag[iNuhLId][j]=((DirectDepType[i][j]) & 1 );
MotionPredEnabledFlag[iNuhLId][j]=((DirectDepType[i][j]) & 2 )>>1;
NonVCLDepEnabledFlag [iNuhLid][j]=
((DirectDepType[i][j]) & (1<<(N-1)) ) >> (N-1);
なお、図14(a)の例では、(N-1)ビット目をnon-VCL依存タイプ(non-VCL依存有無フラグ)としているが、これに限定されない。例えば、N=3とし、最下位ビットから2ビット目をnon-VCLの依存タイプの有無を表わすビットとしてもよい。また、各依存タイプ別の有無フラグを示すビット位置は、実施可能な範囲で変更してもよい。なお、上記各有無フラグの導出は、前述した(参照レイヤIDリスト、及び直接参照レイヤIDXリストの導出)において、ステップSL08として実行して導出してもよい。なお、導出の手順は、上記ステップに限定されず、実施可能な範囲で変更してもよい。
また、上記non-VCL依存有無フラグに基づいて、i番目のレイヤの直接参照レイヤセットのサブセットとして、non-VCL依存レイヤセット(non-VCL依存レイヤIDリストNonVCLDepRefLayerId[iNuh][]、及び直接non-VCL依存レイヤIDXリストDirectNonVCLDepRefLayerIdX[iNuh][])を導出することもできる。ここで、non-VCL依存レイヤIDリストNonVCLDepRefLayerId[][]は2次元の配列であり、1番目の配列の要素には、対象レイヤ(レイヤi)のレイヤ識別子が格納され、2番目の配列の要素には、直接参照レイヤセットの中で、かつ、non-VCL依存有無フラグが1である、k番目の参照レイヤのレイヤ識別子が格納される。また、直接non-VCL依存レイヤIDXリストDirectNonVCLDepRefLayerId[][]は2次元の配列であり、1番目の配列の要素には、対象レイヤ(レイヤi)のレイヤ識別子が格納され、2番目の配列の要素には、non-VCL依存有無フラグが1でかつ、レイヤ識別子が、non-VCL依存レイヤセットの中で、昇順で、何番目の要素であるかを示すインデクス(直接non-VCL依存レイヤIDX)が格納される。
なお、基本的に、non-VCLのNALユニットの内、ピクチャの復号に依存性を有するnon-VCL NALユニットはパラメータセットである。つまり、non-VCLのNALユニットの内、補助情報であるSEIや、ストリームの区切りを示すAUD、EOS、EOBは、ピクチャの復号動作自体には影響を与えない。そのため、上記では、より一般的な定義のために、non-VCLに対する依存性を示すフラグを導入しているが、non-VCLに対する依存性を示すフラグの代わりに、より直接的に、パラメータセットに対する依存性を示すフラグを定義しても良い。パラメータセットに対する依存性を示すフラグとして定義する場合も、direct_dependency_type[][]への割り当ては、non-VCLに対する依存性の場合と等しく、処理も同様である(以下、同様)。なお、パラメータセットに対する依存性として定義する場合には、導出されるリスト名もNonVCLDepRefLayerIdからParameterSetDepRefLayerIdなどとしておけばよい。
(non-VCL依存レイヤIDリスト、直接non-VCL依存レイヤIDXリストの導出)
non-VCL依存レイヤIDリストの導出は以下の疑似コードにより実行される。
for(i=1; i< vps_max_layers_minus1+1; i++){
iNuhLId = nuhLId#i;
NumNonVCLDepRefLayers[iNuhLId] = 0;
for(j=0; j<i; j++){
if( NonVCLDepEnabledFlag[i][j] ){
NonVCLDepRefLayerId[iNuhLId][ NumNonVCLDepRefLayers[iNuhLId]] = nuhLId#j;
NumNonVCLDepRefLayers[iNuhLId]++;
DirectNonVCLDepRefLayerIdx[iNuhLId][ nuhLId#j ] =
NumNonVCLDepRefLayers[iNuhLId] - 1;
}
} // end of loop on for(j=0; j<i; i++)
} // end of loop on for(i=1; i< vps_max_layers_minus1+1; i++)
なお、上記疑似コードをステップで表わせば、次の通りである。
(SN01)i番目のレイヤに関するnon-VCL依存レイヤIDリスト、及び直接non-VCLレイヤIDXリストの導出に係るループの開始点である。ループの開始前に、変数iは0に初期化される。ループ内の処理は、変数iが、1以上、かつ、レイヤ数“vps_max_layers_minus1+1”未満のときに実行され、ループ内の処理が1回実行される度に、変数iは“1”加算される。変数i=0の場合、基本レイヤのため、拡張レイヤとの依存はないため、処理を省略している。
(SN02)変数iNuhLidに、i番目のレイヤのレイヤ識別子nuhLID#iを設定する。さらに、レイヤ識別子nuhLID#iの直接non-VCL依存レイヤ数NumDirectNonVCLDepRefLyaers[iNuhLID]を0へ設定する。
(SN03)j番目のレイヤを、i番目のレイヤに関するnon-VCL依存レイヤIDリスト、及び直接non-VCL依存レイヤIDXリストへ要素追加に係るループの開始点である。ループの開始前に、変数jは0に初期化される。ループ内の処理は、変数iがi番目のレイヤ - 1“i-1”未満のときに実行され、ループ内の処理が1回実行される度に、変数jは“1”加算される。(SN04)i番目のレイヤに対するj番目のレイヤのnon-VCL依存有無フラグ(NonVCLDepEnabledFlag[i][j])を判定する。non-VCL依存有無フラグが1であれば、ステップSN05〜SN0Xの処理を実行するため、ステップSN05へ遷移する。non-VCL依存フラグが0であれば、ステップSN05〜SN07の処理を省略し、SN0Aへ遷移する。
(SN05)non-VCL依存レイヤIDリストNonVCLDepRefLayerId[iNuhLId][]のNumDirectNonVCLDepRefLayers[iNuhLId]番目の要素へ、レイヤ識別子nuhLID#jを設定する。
すなわち、NonVCLDepRefLayerId[iNuhLId][NumDirectNonVCLDepRefLayers[iNuhLId]] = nuhLId#j;
(SN06)直接non-VCL依存レイヤ数NumDirectNonVCLDepRefLyaers[iNuhLId]の値を“1”加算する。すなわち、NumDirectNonVCLDepRefLayers[iNuhLId]++;
(SN07)直接non-VCL依存レイヤIDXリストDirectNonVCLDepRefLyaerIdX [iNuhLid][]のnuhLId#j番目の要素へ、直接non-VCL依存レイヤIDXとして、“直接non-VCL依存レイヤ数-1”の値を設定する。すなわち、
DirectNonVCLDepRefLayerIdX [iNuhLId][ nuhLId#j]=
NumDirectNonVCLDepRefLayers[iNuhLId] - 1;
(SN0A)j番目のレイヤを、i番目のレイヤに関するnon-VCL依存レイヤIDリスト、及び直接non-VCL依存レイヤIDXリストへ要素追加に係るループの終端である。
(SN0B)i番目のレイヤのnon-VCL依存レイヤIDリスト、及び直接non-VCL依存レイヤIDXリストの導出に係るループの終端である。
なお、変数i=0の場合、直接non-VCL依存レイヤ数NumDirectNonVCLDepRefLyaers[0]の値は0、すなわち、“NumDirectNonVCLDepRefLyaers[0]=0”である。
以上、説明した、non-VCL依存レイヤIDリスト、及び直接non-VCLレイヤIDXリストを利用することで、直接参照レイヤセットで、かつ、non-VCL依存有無フラグが1である、k番目のレイヤのレイヤIDが、全レイヤの中で、何番目の要素(直接non-VCL依存レイヤIDX)であるか、逆に、non-VCL依存有無フラグが1である、直接non-VCL依存レイヤIDXが、直接参照レイヤセットで、何番目の要素であるかを把握することができる。なお、導出の手順は、上記ステップに限定されず、実施可能な範囲で変更してもよい。
(non-VCL依存タイプの効果)
以上、本実施例では、レイヤ依存タイプとして、VCL間の依存タイプ(レイヤ間画像予測やレイヤ間動き予測)の他に、新たにnon-VCL間の依存タイプの有無を示すnon-VCL依存タイプを導入する。non-VCL間の依存には、異なるレイヤ間でのパラメータセットの共有(共有パラメータセット)や、異なるレイヤ間でのパラメータセット間のシンタックスの一部の予測(パラメータセット間シンタックス予測)が含まれる。
non-VCL依存タイプの有無(non-VCL依存タイプ)を明示的に通知することによって、デコーダは、レイヤセット内のいずれのレイヤが、対象レイヤのnon-VCLの依存レイヤ(non-VCL依存レイヤ)となるかVPS拡張データを復号することによって把握することができる効果を奏する。すなわち、レイヤ識別子の値がnuhLayerIdAであるレイヤAのnon-VCLが、nuhLayerIdAと異なるレイヤ識別子nuhLayerIdBであるレイヤBから参照されるか否かが、VPS以外のnon-VCLを復号開始する前に把握できるため、あるレイヤID(またはレイヤセット)の符号化データのみを復号もしくは抽出する場合に、どのレイヤIDのnon-VCLを復号、抽出すべきか把握することができる。すなわち、従来技術において、レイヤ識別子の値がnuhLayerIdAであるレイヤAのパラメータセットが、どのレイヤと共通で利用される(共有パラメータセットを適用する)かが、符号化データの復号開始時点において不明であるため、あるレイヤID(もしくはレイヤセット)の符号化データのみを復号もしくは抽出する場合に、どのレイヤIDのパラメータセットを復号、抽出すべきかが不明であるという課題を解消することができる。
同様に、non-VCL依存タイプに基づいて、レイヤ識別子nuhLayerIdAであるレイヤAのパラメータセットが、nuhLayerIdAと異なるレイヤ識別子nuhLayerIdBであるレイヤBから参照されるか否かを把握することができる。換言すれば、non-VCL依存タイプに基づいて、レイヤ識別子nuhLayerIdAであるレイヤAのパラメータセットが、nuhLayerIdAと異なるレイヤ識別子nuhLayerIdBであるレイヤBから共有パラメータセットとして参照されるか否かを把握することができる。同様に、レイヤ識別子nuhLayerIdAであるレイヤAのパラメータセットが、nuhLayerIdAと異なるレイヤ識別子nuhLayerIdBであるレイヤBからのパラメータセット間予測で参照されるか否かを把握することができる。
(non-VCL依存タイプに係るビットストリーム制約)
また、non-VCL間の依存タイプの有無を導入することによって、デコーダとエンコーダ間で以下のビットストリーム制約を明示的に示すことができる。ここで、ビットストリームコンフォーマンスとは、階層動画像復号装置(ここでは本発明の実施形態に係る階層動画像復号装置)が復号するビットストリームが満たす必要がある条件である。
すなわち、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CX1を満たさなければならない。
CX1:「レイヤ識別子nuhLayerIdAであるnon-VCLが、レイヤ識別子nuhLayerIdBであるレイヤで利用されるnon-VCLであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLayerIdBの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
なお、CX1の条件は、次の条件CX1’のようにも言い換えることができる。
CX1’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するnon-VCLが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤで利用(参照)されるnon-VCLであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
上記ビットストリーム制約CX1は、換言すれば、対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するnon-VCLであるということである。
「対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するnon-VCLである」ということは、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止することを意味する。
すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する異なるレイヤのnon-VCLが破棄されることはない。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、異なるレイヤのnon-VCLを参照するレイヤが復号できないという問題を解消することができる。
さらに、共有パラメータセットに関して限定すれば、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CX2を満たさなければならない。
CX2:「レイヤ識別子nuhLayerIdAであるパラメータセットが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブパラメータセットであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLayerIdBの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
なお、CX2の条件は、次の条件CX2’のようにも言い換えることができる。
CX2’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するパラメータセットが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのアクティブパラメータセットであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
さらに、上記制約条件CX2をSPSに関する共有パラメータセット、PPSに関する共有パラメータセットに限定すれば、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CX3、及びCX4をそれぞれ満たさなければならない。
CX3:「レイヤ識別子nuhLayerIdAであるSPSが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブSPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLayerIdBの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
CX4:「レイヤ識別子nuhLayerIdAであるPPSが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブPPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
なお、CX3、及びCX4はそれぞれ、次の条件CX3’、CX4’のようにも言い換えることができる。
CX3’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するPPSが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのアクティブPPSであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
CX4’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するSPSが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのアクティブSPSであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
上記ビットストリーム制約CX2〜CX4は、換言すれば、共有パラメータセットとして利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するパラメータセットであるということである。
「共有パラメータセットとして利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するパラメータセットである」ということは、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのパラメータセットを参照すること」を禁止することを意味する。
すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのパラメータセットを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する異なるレイヤのパラメータセットが破棄されることはない。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、共有パラメータセットを利用するレイヤが復号できないという問題を解消することができる。すなわち、図1で説明した従来技術において発生しえたビットストリーム抽出時の課題を解消することができる。
(シーケンスパラメータセットSPS)
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために画像復号装置1が参照する符号化パラメータの集合が規定されている。
アクティブVPS識別子は、対象SPSが参照するアクティブVPSと指定する識別子であり、シンタックス“sps_video_parameter_set_id”(図15のSYNSPS01)としてSPSに含まれている。なお、パラメータセット復号部12は、復号対象のシーケンスパラメータセットSPSに含まれるアクティブVPS識別子を復号するとともに、パラメータセット管理部13から、該アクティブVPS識別子で指定されるアクティブVPSの符号化パラメータを読み出し、以降の復号対象SPSの各シンタックスを復号する際に該アクティブVPSの符号化パラメータを参照してもよい。なお、復号対象SPSの各シンタックスが、アクティブVPSの符号化パラメータに依存しない場合は、復号対象SPSのアクティブVPS識別子復号時点での、VPSのアクティベート処理は必要ない。
SPS識別子は、各SPSを識別するための識別子であり、シンタックス“sps_seq_parameter_set_id”(図15のSYNSPS02)としてSPSに含まれている。後述のPPSに含まれるアクティブSPS識別子(pps_seq_parameter_set_id)により特定されるSPSが、対象レイヤセット内の対象レイヤの符号化データの復号処理時に参照される。
(ピクチャ情報)
SPSには、ピクチャ情報として、対象レイヤの復号ピクチャのサイズを定める情報が含まれる。例えば、ピクチャ情報は、対象レイヤの復号ピクチャの幅や高さを表わす情報を含んでいる。SPSから復号されるピクチャ情報には、復号ピクチャの幅(pic_width_in_luma_samples)と復号ピクチャの高さ(pic_height_in_luma_samples)が含まれている(図15では不図示)。シンタックス“pic_width_in_luma_samples”の値は、輝度画素単位での復号ピクチャの幅に対応する。また、シンタックス“pic_height_in_luma_samples”の値は、輝度画素単位での復号ピクチャの高さに対応する。
図15のSYNSPS04に示すシンタックス群は、対象シーケンス全体を通じて利用されるスケーリングリスト(量子化マトリックス)に関する情報(スケーリングリスト情報)である。スケーリングリスト情報の中で、“sps_infer_scaling_list_flag”(SPSスケーリングリスト推定フラグ)は、対象SPSのスケーリングリストに関する情報を、“sps_scaling_list_ref_layer_id”で特定される参照レイヤのアクティブSPSのスケーリングリスト情報から推定するか否かを示すフラグである。SPSスケーリングリスト推定フラグが1の場合、該SPSのスケーリングリスト情報は、“sps_scaling_list_ref_layer_id”で特定される参照レイヤのアクティブSPSのスケーリングリスト情報から推定される(コピーされる)。SPSスケーリングリスト推定フラグが0の場合、SPSでスケーリングリスト情報が、“sps_scaling_list_data_present_flag”に基づいて通知される。
SPS拡張データ有無フラグ“sps_extension_flag”(図15のSYNSPS05)は、SPSがさらにSPS拡張データsps_extension()(図15のSYNSPS06)を含むか否かを示すフラグである。
SPS拡張データ(sps_extension())には、レイヤ間位置対応情報が含まれている。
(レイヤ間位置対応情報)
レイヤ間位置対応情報は、概略的には、対象レイヤと参照レイヤの対応する領域の位置関係を示す。例えば、対象レイヤのピクチャと参照レイヤのピクチャにある物体(物体A)が含まれる場合、対象レイヤのピクチャ上の物体Aに対応する領域と、参照レイヤのピクチャ上の物体Aに対応する領域が、前記対象レイヤと参照レイヤの対応する領域に相当する。なお、レイヤ間位置対応情報は、必ずしも上記の対象レイヤと参照レイヤの対応する領域の位置関係を正確に示す情報でなくてもよいが、一般的には、レイヤ間予測の正確性を高めるために正確な対象レイヤと参照レイヤの対応する領域の位置関係を示している。
レイヤ間位置対応情報は、レイヤ間画素対応情報を含む。レイヤ間画素対応情報は、参照レイヤのピクチャ上の画素と、対応する対象レイヤのピクチャ上の画素との位置関係を示す情報である。
(レイヤ間画素対応情報)
レイヤ間画素対応情報は、例えば、図29 (a)に示すシンタックス表に従って復号される。図29(a)は、パラメータセット復号部12がSPS復号時に参照するシンタックス表の一部であって、レイヤ間画素対応情報に係る部分である。
レイヤ間画素対応情報には、レイヤ識別子nuhLayerIdB(nuhLayerIdB>=nuhLayerIdA)を有するレイヤに属するシーケンスの復号の際に、レイヤ識別子nuhLayerIdAを有するレイヤの該SPS(復号対象SPS)を共有パラメータセットとして参照するレイヤ数(パラメータセット参照レイヤ数NumLIdRefSharedSPS)を表わすシンタックス“num_layer_id_refering_shared_sps_minus1”(図29(a)のSYNSPS0A)が含まれる。パラメータセット参照レイヤ数NumLIdRefSharedSPSは、(num_layer_id_refering_shared_sps_minus1 + 1)の値に設定される。
レイヤ間画素対応情報には、レイヤ識別子nuhLayerIdB(nuhLayerIdB>=nuhLayerIdA)を有するレイヤに属するシーケンスの復号の際に、レイヤ識別子nuhLayerIdAを有するレイヤの該SPS(復号対象SPS)を参照するレイヤ(レイヤ識別子nuhLayerIdB=layer_id_referring_sps[k])(図29(a)のSYNSPS0B)毎に、SPS拡張データに含まれるレイヤ間画素対応情報の個数“num_scaled_ref_layer_offsets[k]”(図29(a)のSYNSPS0C)が含まれる。なお、図29(a)のSYNSPS0Bにおいて、“layer_id_referring_sps[k]”は、変数kが0の場合、該SPSと同一のレイヤ識別子nuhLayerIdAを有するレイヤであるため、“layer_id_referring_sps[k]”は復号されず、“layer_id_referring_sps[k]”の値は、該SPSのレイヤ識別子nuhLayerIdAと等しいと推定される(図29(a)では、layer_id_referring_sps[0]=nuh_layer_id)。すなわち、“layer_id_referring_sps[0]”に係る符号量を削減する効果がある。
加えて、レイヤ間画素対応情報には、上記レイヤ識別子nuhLayerIdB=layer_id_referring_sps[k]であるレイヤ毎に、該レイヤと参照レイヤ(直接参照レイヤ)に関する前記レイヤ間画素対応情報の個数分のレイヤ間画素対応オフセットが含まれる。すなわち、図29(a)に示すレイヤ間画素対応情報は、対象レイヤと直接参照レイヤ間のレイヤ画素対応情報である。レイヤ間画素対応オフセットには、スケール後参照レイヤ左オフセット(scaled_ref_layer_left_offset[k][i])、スケール後参照レイヤ上オフセット(scaled_ref_layer_top_offset[k][i])、スケール後参照レイヤ右オフセット(scaled_ref_layer_right_offset[k][i])、および、スケール後参照レイヤ下オフセット(scaled_ref_layer_bottom_offset[k][i])が含まれる。ここで、変数kは、パラメータセット参照レイヤの識別するためのインデックスであり、変数iは、該パラメータセット参照レイヤの直接参照レイヤを識別するためのインデックスであり、直接参照レイヤIDXリストDirectRefLayerIdx[ layer_id_refering_shared_sps[k] ][ ]の2番目の要素に格納されている直接参照レイヤIDXと対応する。なお、各オフセット(scaled_ref_layer_x_offset[k][],x=left, top, right, bottom))の2番の要素は、直接参照レイヤの直接参照レイヤIDXの代わり、直接参照レイヤのレイヤ識別子であってもよい。その場合には、図29(b)のSYNSPS0Dに示すように、直接参照レイヤIDXのレイヤ識別子を示す“scaled_ref_layer_id[k][i]”がオフセットに関するシンタックスの直前に配置する。
レイヤ間画素対応オフセットに含まれる各オフセットの意味を、図30を参照して説明する。図30は、対象レイヤのピクチャ、参照レイヤのピクチャ、および、レイヤ間画素対応オフセットの関係を例示する図である。各オフセットは、対象レイヤピクチャ上で、参照レイヤピクチャ全体(もしくは一部領域)に対応する対象レイヤ対象領域を示す。図30(a)は、対象レイヤ対象領域が、参照レイヤピクチャ全体に対応する場合であり、図30(b)は、参照レイヤ対象領域が、参照レイヤピクチャの一部に対応する場合である。
図30(a)は、参照レイヤのピクチャ全体が対象レイヤのピクチャの一部に対応する場合の例を示す。この場合、参照レイヤピクチャ全体に対応する対象レイヤ上の領域(対象レイヤ対応領域)は、対象レイヤピクチャの内部に含まれている。図30(b)は、参照レイヤのピクチャの一部が対象レイヤのピクチャ全体に対応する場合の例を示す。この場合、参照レイヤ対応領域の内部に対象レイヤピクチャが含まれている。
図30に示すように、スケール後参照レイヤ左オフセット(図30ではSRL左オフセット)は、参照レイヤ対象領域左辺の対象レイヤピクチャ左辺に対するオフセットを表わす。なお、SRL左オフセットが0より大きい場合、参照レイヤ対象領域左辺が対象レイヤピクチャ左辺の右側に位置することを表わす。
スケール後参照レイヤ上オフセット(図30ではSRL上オフセット)は、参照レイヤ対象領域上辺の対象レイヤピクチャ上辺に対するオフセットを表わす。なお、SRL上オフセットが0より大きい場合、参照レイヤ対象領域上辺が対象レイヤピクチャ上辺の下側に位置することを表わす。
スケール後参照レイヤ右オフセット(図30ではSRL右オフセット)は、参照レイヤ対象領域右辺の対象レイヤピクチャ右辺に対するオフセットを表わす。なお、SRL右オフセットが0より大きい場合、参照レイヤ対象領域右辺が対象レイヤピクチャ右辺の左側に位置することを表わす。
スケール後参照レイヤ下オフセット(図30ではSRL下オフセット)は、参照レイヤ対象領域下辺の対象レイヤピクチャ下辺に対するオフセットを表わす。なお、SRL下オフセットが0より大きい場合、参照レイヤ対象領域下辺が対象レイヤピクチャ下辺の上側に位置することを表わす。
従来技術に係るSPSのレイヤ間位置対応情報(図16のSYNSPS0B)では、該SPSと同一のレイヤ識別子を有するレイヤに関してのみ、該レイヤと該レイヤの参照レイヤ間のレイヤ間画素対応情報が含まれている。しかし、該SPSのレイヤ識別子より上位のレイヤ識別子を有するレイヤ(上位レイヤ)が、該SPSを共有パラメータセットとして参照する場合には、該上位レイヤと該上位レイヤの参照レイヤ間のレイヤ画素対応位置情報がないという問題がある。すなわち、該上位レイヤがレイヤ間画像予測を正確に実施するために必要なレイヤ間画素対応情報がないため、符号化効率が低下するという問題がある。また、レイヤ間画像対応情報を含まない(num_scaled_ref_layer_offsets=0)場合にしか、上位レイヤが該SPSを共有パラメータセットとして参照することができない問題がある。なお、レイヤ間画像対応情報を含まない場合とは、対象レイヤピクチャ全体と参照レイヤピクチャ全体が対応することを意味する。
一方、本実施例に係るSPSに含まれるレイヤ間位置対応情報には、レイヤ識別子nuhLayerIdB(nuhLayerIdB>=nuhLayerIdA)を有するレイヤに属するシーケンスの復号の際に、該SPS(レイヤ識別子nuhLayerIdAを有するレイヤのSPS)を、共有パラメータセットとして参照するレイヤ(パラメータセット参照レイヤ)の数が含まれる。さらに、該レイヤ間位置対応情報には、パラメータセット参照レイヤ毎に、該パラメータセット参照レイヤのレイヤ識別子を有するレイヤが、依存するレイヤ数個のレイヤ間画素対応情報が含まれる構成である。従って、従来技術において発生した上記課題を解消することができる。すなわち、該SPSのレイヤ識別子より上位のレイヤ識別子を有するレイヤ(上位レイヤ)が、該SPSを共有パラメータセットとして参照する場合には、該上位レイヤと該上位レイヤの参照レイヤ間のレイヤ画素対応位置情報がないという問題を解消する。従って、該上位レイヤがレイヤ間画像予測を正確に実施するために必要なレイヤ間画素対応情報を含むため、従来技術に対して、符号化効率の向上の効果を奏する。また、レイヤ間画像対応情報を含まない(num_scaled_ref_layer_offsets=0)場合に限定されず、上位レイヤが該SPSを共有パラメータセットとして参照することができるため、上位レイヤのパラメータセットに関する符号量を低減、及びその復号/符号化に係る処理量を低減することができる。
(ピクチャパラメータセットPPS)
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために画像復号装置1が参照する符号化パラメータの集合が規定されている。
PPS識別子は、各PPSを識別するための識別子であり、シンタックス“sps_seq_parameter_set_id”(図15のSYNSPS02)としてPPSに含まれている。後述のスライスヘッダに含まれるアクティブPPS識別子(slice_pic_parameter_set_id)により特定されるPPSが、対象レイヤセット内の対象レイヤの符号化データの復号処理時に参照される。
アクティブSPS識別子は、対象PPSが参照するアクティブSPSと指定する識別子であり、シンタックス“pps_seq_parameter_set_id”(図17のSYNSPS02)としてPPSに含まれている。なお、パラメータセット復号部12は、復号対象のピクチャパラメータセットPPSに含まれるアクティブSPS識別子を復号するとともに、パラメータセット管理部13から、該アクティブSPS識別子で指定されるアクティブSPSの符号化パラメータを読み出し、さらに、該アクティブSPSが参照するアクティブVPSの符号化パラメータを呼び出し、以降の復号対象PPSの各シンタックスを復号する際に該アクティブSPS、及び該アクティブVPSの符号化パラメータを参照してもよい。なお、復号対象PPSの各シンタックスが、アクティブSPS、及びアクティブVPSの符号化パラメータに依存しない場合は、復号対象PPSのアクティブPPS識別子復号時点での、SPS、及びVPSのアクティベート処理は必要ない。
図17のSYNPPS03に示すシンタックス群は、対象PPSを参照するピクチャの復号時に利用されるスケーリングリスト(量子化マトリックス)に関する情報(スケーリングリスト情報)である。スケーリングリスト情報の中で、“pps_infer_scaling_list_flag”(スケーリングリスト推定フラグ)は、対象PPSのスケーリングリストに関する情報を、“pps_scaling_list_ref_layer_id”で特定される参照レイヤのアクティブPPSのスケーリングリスト情報から推定するか否かを示すフラグである。PPSスケーリングリスト推定フラグが1の場合、該PPSのスケーリングリスト情報は、“sps_scaling_list_ref_layer_id”で特定される参照レイヤのアクティブPPSのスケーリングリスト情報から推定される(コピーされる)。PPSスケーリングリスト推定フラグが0の場合、PPSでスケーリングリスト情報が、“sps_scaling_list_data_present_flag”に基づいて通知される。
(ピクチャ復号部14)
ピクチャ復号部14は、入力されるVCL NALユニット、および、アクティブパラメータセットに基づいて復号ピクチャを生成して出力する。
図20を用いて、ピクチャ復号部14の概略的構成を説明する。図20は、ピクチャ復号部14の概略的構成を示した機能ブロック図である。
ピクチャ復号部14は、スライスヘッダ復号部141、CTU復号部142を備えている。CTU復号部142は、さらに、予測残差復元部1421、予測画像生成部1422、及びCTU復号画像生成部1423を含んでいる。
(スライスヘッダ復号部141)
スライスヘッダ復号部141は、入力されるVCL NALユニットとアクティブパラメータセットに基づいてスライスヘッダを復号する。復号したスライスヘッダは、入力されるVCL NALユニットと合わせてCTU復号部142に出力する。
(CTU復号部142)
CTU復号部142は、概略的には、入力されるスライスヘッダ、VCL NALユニットに含まれるスライスデータ、及びアクティブパラメータセットに基づいて、ピクチャを構成するスライスに含まれる各CTUに対応する領域の復号画像を復号することで、スライスの復号画像を生成する。ここで、CTUサイズは、アクティブパラメータセットに含まれる、対象レイヤに対するCTBサイズ(図15のSYNSPS03上のlog2_min_luma_coding_block_size_minus3、及びlog2_diff_max_min_luma_coding_block_sizeが対応するシンタックスである)が用いられる。スライスの復号画像は、入力されるスライスヘッダが示すスライス位置へ、復号ピクチャの一部として出力される。CTUの復号画像は、CTU復号部142内部の予測残差復元部1421、予測画像生成部1422、及びCTU復号画像生成部1423により生成される。
予測残差復元部1421は、入力のスライスデータに含まれる予測残差情報(TT情報)を復号して対象CTUの予測残差を生成して出力する。
予測画像生成部1422は、入力のスライスデータに含まれる予測情報(PT情報)の示す予測方法と予測パラメータに基づいて予測画像を生成して出力する。その際、必要に応じて、参照ピクチャの復号画像や符号化パラメータが利用される。例えば、インター予測、または、レイヤ間画像予測を使用する場合は、復号ピクチャ管理部15より対応する参照ピクチャを読み出す。なお、予測画像生成部1422による予測画像生成処理のうち、レイヤ間画像予測が選択された場合の予測画像生成処理の詳細は後述する。
CTU復号画像生成部1423は、入力される予測画像と予測残差を加算して対象CTUの復号画像を生成して出力する。
<レイヤ画像予測による予測画像生成処理の詳細>
前述の予測画像生成部1422による予測画像生成処理のうち、レイヤ間画像予測が選択された場合の予測画像生成処理の詳細を説明する。
レイヤ間画像予測が適用される対象CTUに含まれる対象画素の予測画素値の生成処理は次の手順で実行される。まず、参照ピクチャ位置導出処理を実行し、対応参照位置を導出する。ここで、対応参照位置とは、対象レイヤピクチャ上の対象画素に対応する参照レイヤ上の位置である。なお、対象レイヤと参照レイヤの画素は必ずしも1対1に対応しないため、対応参照位置は、参照レイヤにおける画素単位未満の精度で表現される。次に、導出した対応参照位置を入力として補間フィルタ処理を実行することで、対象画素の予測画素値が生成される。
対応参照位置導出処理では、パラメータセットに含まれるピクチャ情報、レイヤ間画素対応情報に基づいて、対応参照位置を導出する。対応参照位置導出処理の詳細手順について説明する。対応参照位置導出処理は、以下のS101〜S104の処理を順次実行することで実現される。
(S101)対象レイヤピクチャサイズ、参照レイヤピクチャサイズ、レイヤ間画素対応情報に基づいて参照レイヤ対応領域サイズと、レイヤ間サイズ比率(参照レイヤ対応領域サイズに対する参照レイヤピクチャサイズの比率)を計算する。まず、参照レイヤ対応領域の幅SRLWと高さSRLH、レイヤ間サイズ比率の水平成分scaleXと水平成分scaleYが次式により計算される。
SRLW = currPicW - SRLLeftOffset - SRLRightOffset
SRLH = currPicH - SRLTopOffset - SRLBottomOffset
scaleX = refPicW ÷ SRLW
scaleY = refPicH ÷ SRLH
ここで、currPicWとcurrPicHは対象ピクチャの高さと幅であり、対応参照位置導出処理の対象が輝度画素の場合は、対象レイヤにおけるSPSのピクチャ情報に含まれるpic_width_in_luma_samplesとpic_height_in_luma_samplesの各シンタックス値と一致する。対象が色差の場合は、色フォーマットの種類に応じて前記シンタックス値を変換した値を使用する。例えば色フォーマットが4:2:2の場合、各シンタックス値の半分の値を使用する。また、refPicWとrefPicHは参照ピクチャの高さと幅であり、対象が輝度画素の場合、参照レイヤにおけるSPSのピクチャ情報に含まれるpic_width_in_luma_samplesとpic_height_in_luma_samplesの各シンタックス値と一致する。また、SRLLeftOffset、SRLRightOffset、SRLTopOffset、SRLBottomOffsetは、図30を参照して説明したレイヤ間画素対応オフセットである。
(S102)対象画素(xP,yP)に対する対応参照位置(xRef、yRef)を、レイヤ間画素対応情報とレイヤ間サイズ比率に基づいて計算する。対象レイヤ画素に対応する参照位置の水平成分xRefと垂直成分yRefは次式により計算される。なお、xRefは参照レイヤピクチャの左上画素を基準とする水平方向の位置を、yRefは同左上画素を基準とする垂直方向の位置をそれぞれ参照レイヤピクチャの画素単位で表わす。
xRef = (xP - SRLLeftOffset) * scaleX
yRef = (yP - SRLTopOffset) * scaleY
ここで、xPとyPは対象レイヤピクチャ左上画素を基準とする対象レイヤ画素の水平成分と垂直成分をそれぞれ対象レイヤピクチャの画素単位で表わす。また、実数Xに対してFloor(X)は、Xを超えない最大の整数を意味する。
上記の式では、参照レイヤ対応領域の左上画素に対する対象画素の位置をレイヤ間サイズ比率によりスケールした値を参照位置としている。なお、上記の計算を整数表現による近似演算により計算しても構わない。例えば、scaleXとscaleYを実際の倍率の値に所定の値(例えば16)を乗算した整数として計算し、その整数値を用いてxRefやyRefを計算しても構わない。また、対象が色差の画素である場合に、輝度と色差の位相差を考慮した補正を行っても構わない。
なお、上記式では対応参照位置を画素単位で計算したが、それに限らない。例えば、対応参照位置の整数表現による16分の1画素単位の値(xRef16,yRef16)を以下の式により計算してもよい。
xRef16 = Floor ( ( (xP - SRLLeftOffset) * scaleX) * 16 ) )
yRef16 = Floor ( ( (yP - SRLTopOffset ) * scaleY) * 16 ) )
一般に、フィルタ処理の適用に好ましい単位や表現で対応参照位置を導出することが好ましい。例えば、補間フィルタが参照する最小単位と一致する精度の整数表現により対象参照位置を導出することが好ましい。
以上説明した対応参照位置導出処理により、対象レイヤピクチャ上の対象画素に対応する参照レイヤピクチャ上の位置を対応参照位置として導出できる。
補間フィルタ処理では、上記対応参照位置導出処理で導出した対応参照位置に相当する位置の画素値を、参照レイヤピクチャ上の、前記対応参照位置近傍の画素の復号画素に補間フィルタを適用することで生成する。
以上、上記階層動画像復号装置1の備える予測画像生成部1422は、前記レイヤ間位相対応情報を用いて、予測対象画素に対応する参照レイヤピクチャ上の正確な位置を導出できるため、補間処理により生成される予測画素の正確さが向上する。そのため、上記階層復号装置1は、従来より少ない符号量の符号化データを復号して、上位レイヤの復号ピクチャを出力できる。
<ピクチャ復号部14の復号プロセス>
以下、図21を参照して、ピクチャ復号部14における対象レイヤiのピクチャの復号の概略的な動作について説明する。図21は、ピクチャ復号部14における対象レイヤiのピクチャを構成するスライス単位の復号プロセスを示すフロー図である。
(SD101)復号対象スライスの先頭スライスフラグ(first_slice_segment_in_pic_flag)を復号する。先頭スライスフラグが1の場合、復号対象スライスは、ピクチャ内の復号順(以降、処理順)で先頭スライスであり、復号対象スライスの先頭CTUのピクチャ内でのラスタスキャン順での位置(以降、CTUアドレス)を0に設定する。さらに、ピクチャ内の処理済みCTU数のカウンタnumCtb(以降、処理済CTU数numCtb)を0に設定する。先頭スライスフラグが0の場合、後述のSD106で復号されるスライスアドレスに基づいて、復号対象スライスの先頭CTUアドレスを設定する。
(SD102)復号対象スライスの復号時に参照するアクティブPPSを指定するアクティブPPS識別子(slice_pic_paramter_set_id)を復号する。
(SD104)アクティブパラメータセットをパラメータセット管理部13よりフェッチする。すなわち、復号対象スライスが参照するアクティブPPS識別子(slice_pic_parameter_set_id)と同一のPPS識別子(pps_pic_parameter_set_id)を有するPPSをアクティブPPSとし、パラメータセット管理部13から、アクティブPPSの符号化パラメータをフェッチする(読み出す)。さらに、アクティブPPS内のアクティブSPS識別子(pps_seq_parameter_set_id)と同一のSPS識別子(sps_seq_parameter_set_id)を有するSPSをアクティブSPSとし、パラメータセット管理部13から、アクティブSPSの符号化パラメータをフェッチする。さらに、アクティブSPS内のアクティブVPS識別子(sps_video_parameter_set_id)と同一のVPS識別子(vps_video_parameter_set_id)を有するVPSをアクティブVPSとし、パラメータセット管理部13から、アクティブVPSの符号化パラメータをフェッチする。
(SD105)復号対象スライスが、ピクチャ内の処理順で先頭スライスであるか否かを先頭スライスフラグに基づいて判定する。先頭スライスフラグが0の場合(SD105でYes)、ステップSD106へ遷移する。それ以外の場合(SD105でNo)、ステップSD106の処理をスキップする。なお、先頭スライスフラグが1の場合、復号対象スライスのスライスアドレスは0である。
(SD106)復号対象スライスのスライスアドレス(slice_segment_address)を復号し、復号対象スライスの先頭CTUアドレスを設定する。例えば、先頭スライスCTUアドレス=slice_segment_addressである。
・・・省略・・・
(SD10A)CTU復号部142は、入力されるスライスヘッダ、アクティブパラメータセット、及びVCL NALユニットに含まれるスライスデータ内の各CTU情報(図18のSYNSD01)に基づいて、ピクチャを構成するスライスに含まれる各CTUに対応する領域のCTU復号画像を生成する。さらに、各CTU情報の後に、該CTUが復号対象スライスの終端であるかを示すスライス終端フラグ(end_of_slice_segment_flag)(図18のSYNSD2)。また、各CTUの復号後に、処理済CTU数numCtbの値を1加算する(numCtb++)。
(SD10B)該CTUが復号対象スライスの終端であるか否かをスライス終端フラグに基づいて判定する。スライス終端フラグが1の場合(SD10BでYes)、ステップSD10Cへ遷移する。それ以外の場合(SD10BでNo)、後続のCTU情報を復号するため、ステップSD10Aへ遷移する。
(SD10C)処理済CTU数numCtuが、ピクチャを構成するCTUの総数(PicSizeInCtbsY)に達したか判定する。すなわち、numCtu==PicSizeInCtbsYであるか判定する。numCtuがPicSizeInCtbsYと等しい場合(SD10CでYes)、復号対象ピクチャを構成するスライス単位の復号処理を終了する。それ以外の場合(numCtu<PicSizeInCtbsY)(SD10CでNo)、復号対象ピクチャを構成するスライス単位の復号処理を継続するため、ステップSD101へ遷移する。
以上、実施例1に係るピクチャ復号部14の動作について説明したが、上記ステップに限定されず、実施可能な範囲で、ステップを変更しても構わない。
(動画像復号装置1の効果)
以上説明した本実施形態に係る階層動画像復号装置1(階層画像復号装置)は、対象レイヤの復号に利用されるパラメータセット(SPS、PPS)として、参照レイヤの復号に利用されるパラメータセットを共有することにより、対象レイヤのパラメータセットに係る復号処理を省略することが可能である。より具体的には、本実施例では、レイヤ依存タイプとして、VCL間の依存タイプ(レイヤ間画像予測やレイヤ間動き予測)の他に、新たにnon-VCL間の依存タイプの有無を導入する。non-VCL間の依存には、異なるレイヤ間でのパラメータセットの共有(共有パラメータセット)や、異なるレイヤ間でのパラメータセット間のシンタックスの一部の予測(パラメータセット間シンタックス予測)が含まれる。
non-VCLの有無を示す依存タイプの有無を明示的に通知することによって、デコーダは、レイヤセット内のいずれのレイヤが、対象レイヤのnon-VCLの依存レイヤ(non-VCL参照レイヤ)となるかVPS拡張データを復号することによって把握することができる効果を奏する。すなわち、レイヤ識別子の値がnuhLayerIdAであるレイヤAのパラメータセットが、どのレイヤと共通で利用される(共有パラメータセットを適用する)かが、符号化データの復号開始時点において不明であるという課題を解消することができる。
(実施例1に係るビットストリーム制約)
また、non-VCL間の依存タイプの有無を導入することによって、デコーダとエンコーダ間で以下のビットストリーム制約を明示的に示すことができる。
すなわち、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CX1を満たさなければならない。
CX1:「レイヤ識別子nuhLayerIdAであるnon-VCLが、レイヤ識別子nuhLayerIdBであるレイヤで利用されるnon-VCLであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLayerIdBの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
さらに、共有パラメータセットに関して限定すれば、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CX2を満たさなければならない。
CX2:「レイヤ識別子nuhLayerIdAであるパラメータセットが、レイヤ識別子nuhLayerIdBであるレイヤjのアクティブパラメータセットであるとき、レイヤ識別子nuhLayerIdAであるレイヤiは、レイヤ識別子nuhLayerIdBの直接参照レイヤ(direct_dependency_flag[i][j]=1)であり、かつ、nuhLayerIdAとnuhLayerIdB間の依存タイプdirect_dependency_type[i][j]から導出されるnon-VCL依存有無フラグが1であること」
さらに、上記制約条件CX2をSPSに関する共有パラメータセット、PPSに関する共有パラメータセットに限定すれば、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CX3、及びCX4をそれぞれ満たさなければならない。
CX3:「レイヤ識別子nuhLayerIdAであるSPSが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブSPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLayerIdBの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
CX4:「レイヤ識別子nuhLayerIdAであるPPSが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブPPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLayerIdBの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
なお、上記条件CX1〜CX4は、(non-VCL依存タイプの効果)で説明済の条件CX1’〜CX4’へそれぞれ言い換えることもできる。
(実施例1に係るビットストリーム制約の効果)
上記ビットストリーム制約は、換言すれば、共有パラメータセットとして利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するパラメータセットであるということである。
「共有パラメータセットとして利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するパラメータセットである」ということは、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのパラメータセットを参照すること」を禁止することを意味する。
すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのパラメータセットを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する直接参照レイヤののパラメータセットが破棄されることはない。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、共有パラメータセットを利用するレイヤが復号できないという問題を解消することができる。すなわち、図1で説明した従来技術において発生しえたビットストリーム抽出時の課題を解消することができる。
(non-VCL依存タイプの変形例1)
なお、図14(a)の例では、パラメータセット間予測、共有パラメータセットなどの各non-VCLの依存タイプを区別せずに、non-VCLの依存の有無フラグにより表現しているが、これに限定されない。例えば、図14(b)に示すように、各non-VCLの依存タイプを区別し、最下位ビットから2ビット目の値を、共有パラメータセットの有無フラグ(SharedParamSetEnabledFlag)、最下位ビットから3ビット目の値を、パラメータセット間予測(ParamSetPredEnabledFlag)の有無を表わす依存タイプとしてもよい。この場合、対象レイヤi(レイヤ識別子iNuhLId=layer_id_in_nuh[i])に対する参照レイヤjの各レイヤ依存タイプ別有無フラグは、次の式によって導出される。
SamplePredEnabledFlag[iNuhLId][j]=((direct_dependency_type[i][j]+1) & 1 );
MotionPredEnabledFlag[iNuhLId][j]=((direct_dependency_type[i][j]+1) & 2 )>>1;
SharedParamSetEnabledFlag[iNuhLid][j]=
((direct_dependency_type[i][j]+1) & 4 ) >> 2;
ParamSetPredEnabledFlag[iNuhLid][j]=
((direct_dependency_type[i][j]+1) & 8 ) >> 3;
あるいは、(direct_dependency_type[i][j]+1)の代わりに、変数DirectDepType[i][j]を用いて、次の式によっても表現できる。
SamplePredEnabledFlag[iNuhLId][j]=((DirectDepType[i][j]) & 1 );
MotionPredEnabledFlag[iNuhLId][j]=((DirectDepType[i][j]) & 2 )>>1;
SharedParamSetEnabledFlag[iNuhLid][j]=
((DirectDepType[i][j]) & 4 ) >> 2;
ParamSetPredEnabledFlag[iNuhLid][j]=
((DirectDepType[i][j]) & 8 ) >> 3;
なお、各依存タイプ別の有無フラグを示すビット位置は、実施可能な範囲で変更してもよい。
(non-VCL依存タイプの変形例1の効果)
以上、本実施例では、レイヤ依存タイプとして、VCL間の依存タイプ(レイヤ間画像予測やレイヤ間動き予測)の他に、新たにnon-VCL間の依存タイプとして、異なるレイヤ間でのパラメータセットの共有(共有パラメータセット)の有無を示す共有パラメータセット有無フラグや、異なるレイヤ間でのパラメータセット間のシンタックスの一部の予測(パラメータセット間シンタックス予測)の有無を示すパラメータセット間シンタックス予測有無フラグが含まれる。
各non-VCLの依存タイプ別の有無を明示的に通知することによって、デコーダは、レイヤセット内のいずれのレイヤが、対象レイヤの共有パラメータセットの依存レイヤ、パラメータセット間予測の依存レイヤとなるかVPS拡張データを復号することによって把握することができる効果を奏する。すなわち、レイヤ識別子の値がnuhLayerIdAであるレイヤAのパラメータセットが、どのレイヤと共通で利用される(共有パラメータセットを適用する)かが、符号化データの復号開始時点において不明であるという課題を解消することができる。さらに、レイヤ識別子の値がnuhLayerIdAであるレイヤAのパラメータセットが、どのレイヤのパラメータセットのシンタックスを参照するかが、符号化データの復号開始時点において不明であるという課題を解消することができる。
(non-VCL依存タイプの変形例1に係るビットストリーム制約)
また、各non-VCLの依存タイプ別の有無を導入することによって、デコーダとエンコーダ間で以下のビットストリーム制約を明示的に示すことができる。
すなわち、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CW1、及びCW2を満たさなければならない。
CW1:「レイヤ識別子nuhLayerIdAであるパラメータセットが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブパラメータセットであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤであり、かつ、共有パラメータセット有無フラグが1であること」
CW2:「レイヤ識別子nuhLayerIdAであるパラメータセットが、レイヤ識別子nuhLayerIdBであるレイヤのパラメータセット間予測で参照されるパラメータセットであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤであり、かつ、パラメータセット間予測有無フラグが1であること」
なお、CW1、及びCW2の条件はそれぞれ、次の条件CW1’、CW2’のようにも言い換えることができる。
CW1’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するパラメータセットが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのアクティブパラメータセットであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
CW2’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するパラメータセットが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのパラメータセット間予測で参照されるパラメータセットであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
さらに、上記制約条件CW1をSPSに関する共有パラメータセット、PPSに関する共有パラメータセットに限定すれば、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CW3、及びCW4をそれぞれ満たさなければならない。
CW3:「レイヤ識別子nuhLayerIdAであるSPSが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブSPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLayerIdBの直接参照レイヤであり、かつ、共有パラメータセット有無フラグが1であること」
CW4:「レイヤ識別子nuhLayerIdAであるPPSが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブPPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤであり、かつ、共有パラメータセット有無フラグが1であること」
なお、上記CW3、及びCW4の条件はそれぞれ、次の条件CW3’、CW4’のようにも言い換えることができる。
CW3’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するSPSが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのアクティブSPSであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
CW4’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するPPSが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのアクティブPPSであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
上記ビットストリーム制約は、換言すれば、共有パラメータセットとして利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤのパラメータセットであるということである。
(non-VCL依存タイプの変形例1に係るビットストリーム制約の効果)
共有パラメータセットとして利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するパラメータセットである。すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのパラメータセットを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する直接参照レイヤのパラメータセットが破棄されることはない。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、共有パラメータセットを利用するレイヤが復号できないという問題を解消することができる。すなわち、図1で説明した従来技術において発生しえたビットストリーム抽出時の課題を解消することができる。
(non-VCL依存タイプの変形例1に係るビットストリーム制約の変形例)
また、上記制約条件CW2をSPS間のパラメータセット間予測、PPS間のパラメータセット間予測に限定すれば、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CW5、及びCW6をそれぞれ満たさなければならない。
CW5:「レイヤ識別子nuhLayerIdAであるSPSが、レイヤ識別子nuhLayerIdBであるレイヤのSPSのパラメータセット間予測で参照されるSPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤであり、かつ、パラメータセット間予測有無フラグが1であること」
CW6:「レイヤ識別子nuhLayerIdAであるPPSが、レイヤ識別子nuhLayerIdBであるレイヤのPPSのパラメータセット間予測で参照されるPPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤであり、かつ、パラメータセット間予測有無フラグが1であること」
なお、上記CW5、及びCW6の条件はそれぞれ、次の条件CW5’、CW6’のようにも言い換えることができる。
CW5’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するSPSが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのパラメータセット間予測で参照されるSPSであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
CW6’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するPPSが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのパラメータセット間予測で参照されるPPSであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
上記ビットストリーム制約は、換言すれば、パラメータセット間予測として利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤのパラメータセットであるということである。
(non-VCL依存タイプの変形例1に係るビットストリーム制約の変形例の効果)
パラメータセット間予測として利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するパラメータセットである。すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのパラメータセットを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する直接参照レイヤのパラメータセットが破棄されることはない。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、共有パラメータセットを利用するレイヤが復号できないという問題を解消することができる。すなわち、図1で説明した従来技術において発生しえたビットストリーム抽出時の課題を解消することができる。
(non-VCL依存タイプの変形例2)
なお、実施例1、及びnon-VCL依存タイプの変形例1では、パラメータセット間予測、共有パラメータセットなどの各non-VCLの依存タイプ有無フラグや、non-VCLの依存の有無フラグにより表現しているが、non-VCLの依存タイプの有無フラグを明示的にシグナルせずに、直接依存フラグによって表わしてもよい。より具体的には、直接依存フラグの値に基づいて、non-VCL依存有無フラグ(NonVCLDepEnabledFlag[i][j])を次式により導出(推定)する。すなわち、直接依存フラグが1の場合、non-VCL依存有無フラグを1へ設定し、直接依存フラグが0の場合、non-VCL依存有無フラグを0へ設定する。
NonVCLDepEnabledFlag [iNuhLid][j]= direct_dependency_type[i][j] ? 1 : 0;
または、i番目のレイヤが、j番目のレイヤに直接的に依存する場合(直接依存フラグが1の場合、j番目のレイヤは、i番目のレイヤの直接参照レイヤともいう)、あるいは間接的に依存する場合(j番目のレイヤは、i番目のレイヤの間接参照レイヤともいう)の依存関係を示す依存フラグ(DependencyFlag[i][j])の値に基づいて、non-VCL依存有無フラグ(NonVCLDepEnabledFlag[i][j])を次式により導出(推定)してもよい。すなわち、依存フラグ(DependencyFlag[i][j])が1の場合、non-VCL依存有無フラグを1へ設定し、依存フラグ(DependencyFlag[i][j])が0の場合、non-VCL依存有無フラグを0へ設定する。
NonVCLDepEnabledFlag [iNuhLid][j]= DependencyFlag[i][j] ? 1 : 0;
(non-VCL依存タイプの変形例2の効果)
以上のように、non-VCL依存タイプの変形例2では、直接依存フラグ、あるいは依存フラグに基づいて、non-VCL依存有無フラグを推定することにより、non-VCLの依存タイプの有無フラグ(non-VCL依存有無フラグ)に関する符号量、及び復号/符号化に関する処理量を低減することができる。
(non-VCL依存タイプの変形例2に係るビットストリーム制約)
non-VCL依存タイプの変形例2の場合、デコーダとエンコーダ間で以下のビットストリーム制約をさらに追加する。
すなわち、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CZ1を満たさなければならない。
CZ1:「レイヤ識別子nuhLayerIdAであるnon-VCLが、レイヤ識別子nuhLayerIdBであるレイヤで利用されるnon-VCLであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤ、または、間接参照レイヤであること」
また、CZ1の条件は、次の条件CZ1’のようにも言い換えることができる。
CZ1’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するnon-VCLが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤで利用されるnon-VCLであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤ、または、間接参照レイヤであること」
なお、上記条件において「レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤ、または、間接参照レイヤであること」の表現は、依存フラグ(DependencyFlag[i][j])を用いて、「レイヤ識別子nuhLayerIdAであるレイヤと、レイヤ識別子nuhLayerIdBであるレイヤjの依存フラグ(DependencyFlag[i][j])が1であること」とも表現できる。この言い換えは、以降の条件CZ2〜CZ4、CZ1’〜CZ4’、及び、その他同様の表現を用いる条件にも適用可能である。
(non-VCL依存タイプの変形例2に係るビットストリーム制約の変形例1)
さらに、共有パラメータセットに関して限定すれば、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CX2を満たさなければならない。
CZ2:「レイヤ識別子nuhLayerIdAであるパラメータセットが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブパラメータセットであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤ、または、直接参照レイヤ、または、間接参照レイヤであること」
なお、CZ2の条件は、次の条件CZ2’のようにも言い換えることができる。
CZ2’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するパラメータセットが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのアクティブパラメータセットであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤ、または、間接参照レイヤであること」
(non-VCL依存タイプの変形例2に係るビットストリーム制約の変形例2)
さらに、上記制約条件CZ2をSPSに関する共有パラメータセット、PPSに関する共有パラメータセットに限定すれば、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CZ3、及びCZ4をそれぞれ満たさなければならない。
CZ3:「レイヤ識別子nuhLayerIdAであるSPSが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブSPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLayerIdBの直接参照レイヤ、または、間接参照レイヤであること」
CZ4:「レイヤ識別子nuhLayerIdAであるPPSが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブPPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤ、または、間接参照レイヤであること」
なお、上記CZ3、及びCZ4はそれぞれ、次の条件CZ3’、CZ4’のようにも言い換えることができる。
CZ3’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するSPSが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのアクティブSPSであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤ、または、間接参照レイヤであること」
CZ4’:「nuhLayerIdAに等しいレイヤ識別子nuh_layer_idを有するPPSが、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idを有するレイヤのアクティブPPSであるとき、nuhLayerIdAに等しいレイヤ識別子nuh_layer_idのレイヤは、nuhLayerIdBに等しいレイヤ識別子nuh_layer_idのレイヤの直接参照レイヤ、または、間接参照レイヤであること」
(non-VCL依存タイプの変形例2、及びビットストリーム制約の効果)
以上、non-VCL依存タイプの変形例2では、直接依存フラグ、あるいは依存フラグに基づいて、non-VCL依存有無フラグを推定することにより、non-VCLの依存タイプの有無フラグ(non-VCL依存有無フラグ)に関する符号量、及び復号/符号化に関する処理量を低減することができる。
また、上記ビットストリーム制約CZ1〜CZ4(CZ1’〜CZ4’を含む)は、換言すれば、共有パラメータセットとして利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤ、または間接参照レイヤのパラメータセットであるということである。
共有パラメータセットとして利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤ、または間接参照レイヤのレイヤ識別子を有するパラメータセットである。すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのパラメータセットを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する直接参照レイヤまたは間接参照レイヤのパラメータセットが破棄されることはない。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、共有パラメータセットを利用するレイヤが復号できないという問題を解消することができる。すなわち、図1で説明した従来技術において発生しえたビットストリーム抽出時の課題を解消することができる。
(共有パラメータセットの変形例1)
(共有パラメータセットの変形例1のスライスヘッダ)
スライスヘッダには、対象レイヤiが共有パラメータセットとして参照しうる、non-VCLの直接参照レイヤ数が1の場合(NumNonVCLDepRefLayers[i]==1)、PPSがレイヤ間で参照されること示す共有PPS利用フラグ(slice_shared_pps_flag)(例えば、図27(a)上のSYNSH0X)が含まれていてもよい。すなわち、スライスヘッダ復号部141は、図27(a)の例では、アクティブPPS識別子(slice_pic_parameter_set_id)(図27(a)のSYNSH02)の直後に、対象レイヤiのレイヤ識別子nuhLayerId(nuh_layer_id)が0より大きい場合、該共有PPS利用フラグ(slice_shared_pps_flag)を復号する。共有PPS利用フラグが真の場合、対象レイヤiの符号化データには、対象レイヤiのレイヤIDを有するPPSが含まれないため、アクティブPPS識別子(slice_pic_parameter_set_id)で特定される、non-VCL依存レイヤNonVCLDepRefLayerId[i][0]のレイヤIDを有するPPSをアクティブPPSとする。スライスヘッダ復号部141は、共有PPS利用フラグが偽の場合、対象レイヤiの符号化データに、対象レイヤiのレイヤIDを有するPPSが含まるため、アクティブPPS識別子(slice_pic_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有するPPSをアクティブPPSとする。すなわち、スライスヘッダ復号部141は、アクティブPPS識別子、及び共有PPS利用フラグに基づいて特定されるPPSを、その後のシンタックス等の復号時に参照するアクティブPPSとし、該アクティブPPSの符号化パラメータをパラメータ管理部13より読み出す(フェッチする、PPSをアクティベートする)。
(共有パラメータセットの変形例1のスライスヘッダの効果)
動画像復号装置1におけるnon-VCLの依存タイプの有無の導入による同一の効果を奏すると共に、ピクチャ単位で、PPSに関する共有パラメータセットを利用するか否かを選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するPPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、slice_shared_pps_flag =0とし、対象レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのピクチャの符号化データの符号量の低減、及び対象レイヤのピクチャの符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、slice_shared_pps_flag =1とし、参照レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのレイヤIDを有するPPSの符号化を省略し、該PPSに関する符号量の低減、及び該PPSの復号/符号化に要する処理量を削減することができる。
(共有パラメータセットの変形例1のPPS)
同様に、ピクチャパラメータセットPPSには、対象レイヤiが共有パラメータとして参照しうる、non-VCLの直接参照レイヤ数が1の場合(NumNonVCLDepRefLayers[i]==1)、SPSがレイヤ間で参照されること示す共有SPS利用フラグ(pps_shared_sps_flag)(例えば、図28(a)上のSYNPPS05)が含まれていてもよい。すなわち、パラメータセット復号部12は、図28(a)の例では、PPS識別子(pps_pic_parameter_set_id)(図28(a)上のSYNPPS01)、アクティブSPS識別子(pps_seq_parameter_set_id)(図28(a)上のSYNPPS02)の直後に、対象レイヤiのレイヤ識別子nuhLayerId(nuh_layer_id)が0より大きい場合、該共有SPS利用フラグ(pps_shared_sps_flag)を復号する。共有SPS利用フラグが真の場合、対象レイヤiの符号化データには、対象レイヤiのレイヤIDを有するSPSが含まれないため、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)で特定される、non-VCL依存レイヤNonVCLDepRefLayerId[i][0]のレイヤIDを有するSPSをアクティブSPSとする。また、共有SPS利用フラグが偽の場合、対象レイヤiの符号化データに、対象レイヤiのレイヤIDを有するSPSが含まれるため、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有するSPSをアクティブSPSとする。すなわち、パラメータセット復号部12は、アクティブSPS識別子、及び共有SPS利用フラグに基づいて特定されるSPSを、その後のシンタックス等の復号時に参照するアクティブSPSとし、該アクティブSPSの符号化パラメータをパラメータ管理部13より読み出してもよい(フェッチする、SPSをアクティベートする)。なお、復号対象PPSの各シンタックスが、アクティブSPSの符号化パラメータに依存しない場合は、復号対象PPSのアクティブSPS識別子、及び共有SPS利用フラグ復号時点での、SPSのアクティベート処理は必要ない。
同様に、スライスヘッダ復号部141は、共有SPS利用フラグが真の場合、対象レイヤiの符号化データには、対象レイヤiのレイヤIDを有するSPSが含まれないため、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)で特定される、non-VCL依存レイヤNonVCLDepRefLayerIdx[i][0]のレイヤIDを有するSPSをアクティブSPSとする。スライスヘッダ復号部141は、共有SPS利用フラグが偽の場合、対象レイヤiの符号化データに、対象レイヤiのレイヤIDを有するSPSが含まれるため、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有するSPSをアクティブSPSとする。すなわち、スライスヘッダ復号部141は、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)、及び共有SPS利用フラグに基づいて特定されるSPSをアクティブSPSとし、該アクティブSPSの符号化パラメータをパラメータセット管理部13より読み出す(フェッチする、SPSをアクティベートする)。
(共有パラメータセットの変形例1のPPSの効果)
動画像復号装置1におけるnon-VCLの依存タイプの有無の導入による同一の効果を奏すると共に、ピクチャ単位で、SPSに関する共有パラメータセットを利用するか否かを選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するSPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、pps_shared_sps_flag=0とし、対象レイヤのレイヤIDを有するSPSを参照することで、対象レイヤのピクチャの符号化データの符号量の低減、及び対象レイヤのピクチャの符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、pps_shared_sps_flag=1とし、参照レイヤ(non-VCL依存レイヤ)のレイヤIDを有するSPSを参照することで、対象レイヤのレイヤIDを有するSPSの符号化を省略し、該SPSに関する符号量の低減、及び該SPSの復号/符号化に要する処理量を削減することができる。
(共有パラメータセットの変形例2)
(共有パラメータセットの変形例2のスライスヘッダ)
スライスヘッダには、対象レイヤiが共有パラメータセットとして参照しうる、non-VCLの直接参照レイヤ数が1より大きい場合(NumNonVCLDepRefLayers[i]>1)、PPSがレイヤ間で参照されること示す共有PPS利用フラグ(slice_shared_pps_flag)(例えば、図27(b)上のSYNSH0X)、及びnon-VCL依存レイヤのレイヤ識別子を指定するnon-VCL依存レイヤ指定情報(NonVCLDepRefLayerId[i][slice_non_vcl_dep_ref_layer_id]のslice_non_vcl_dep_ref_layer_id(図27(b)上のSYNSH0Y))が含まれていてもよい。
すなわち、スライスヘッダ復号部141は、図27(b)の例では、アクティブPPS識別子(slice_pic_parameter_set_id)(図27(b)のSYNSH02)の直後に、対象レイヤiのレイヤ識別子nuhLayerId(nuh_layer_id)が0より大きい場合、該共有PPS利用フラグ(slice_shared_pps_flag)を復号する。さらに、スライスヘッダ復号部141は、共有PPS利用フラグが真の場合、non-VCL依存レイヤ指定情報(slice_non_vcl_dep_ref_layer_id)を復号する。スライスヘッダ復号部141は、対象レイヤiの符号化データには、対象レイヤiのレイヤIDを有するPPSが含まれないため、アクティブPPS識別子(slice_pic_parameter_set_id)、及びnon-VCL依存レイヤ指定情報(NonVCLDepRefLayerId[i][slice_non_vcl_dep_ref_layer_id])で特定される、non-VCL依存レイヤNonVCLDepRefLayerId[i][ slice_non_vcl_dep_ref_layer_id]のレイヤIDを有するPPSをアクティブPPSとする。スライスヘッダ復号部141は、共有PPS利用フラグが偽の場合、対象レイヤiの符号化データに、対象レイヤiのレイヤIDを有するPPSが含まるため、アクティブPPS識別子(slice_pic_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有するPPSをアクティブPPSとする。すなわち、スライスヘッダ復号部141は、アクティブPPS識別子、共有PPS利用フラグ及び参照レイヤ指定情報に基づいて特定されるPPSを、その後のシンタックス等の復号時に参照するアクティブPPSとし、該アクティブPPSの符号化パラメータをパラメータ管理部13より読み出す(フェッチする、PPSをアクティベートする)。
(共有パラメータセットの変形例2のスライスヘッダの効果)
動画像復号装置1におけるnon-VCLの依存タイプの有無の導入と同一の効果、及び共有パラメータセットの変形例1と同一の効果を奏すると共に、ピクチャ単位で、PPSに関する共有パラメータセットを複数のレイヤから選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するPPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、slice_shared_pps_flag=0とし、対象レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのピクチャの符号化データの符号量の低減、及び対象レイヤのピクチャの符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、slice_shared_pps_flag=1とし、non-VCL依存レイヤ指定情報(NonVCLDepRefLayerId[i][ slice_non_vcl_dep_ref_layer_id])で特定されるnon-VCL依存レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのレイヤIDを有するPPSの符号化を省略し、該PPSに関する符号量の低減、及び該PPSの復号/符号化に要する処理量を削減することができる。
(共有パラメータセットの変形例2のPPS)
同様に、ピクチャパラメータセットPPSには、対象レイヤiが共有パラメータとして参照しうる、non-VCLの直接参照レイヤ数が1より大きい場合(NumNonVCLDepRefLayers[i]>1)、SPSがレイヤ間で参照されること示す共有SPS利用フラグ(pps_shared_sps_flag)(例えば、図28(b)上のSYNPPS05)及びnon-VCL依存レイヤのレイヤ識別子を指定するnon-VCL依存レイヤ指定情報(NonVCLDepRefLayerId[i][ pps_non_vcl_dep_ref_layer_id]のpps_non_vcl_dep_ref_layer_id(図28(b)上のSYNPPS06))が含まれていてもよい。
すなわち、パラメータセット復号部12は、図28(b)の例では、PPS識別子(pps_pic_parameter_set_id)(図28(b)上のSYNPPS01)、アクティブSPS識別子(pps_seq_parameter_set_id)(図28(b)上のSYNPPS02)の直後に、対象レイヤiのレイヤ識別子nuhLayerId(nuh_layer_id)が0より大きい場合、該共有SPS利用フラグ(pps_shared_sps_flag)を復号する。さらに、パラメータセット復号部12は、共有SPS利用フラグが真の場合、non-VCL依存レイヤ指定情報(pps_non_vcl_dep_ref_layer_id)を復号する。パラメータセット復号部12は、対象レイヤiの符号化データには、対象レイヤiのレイヤIDを有するSPSが含まれないため、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)、及びnon-VCL依存レイヤNonVCLDepRefLayerId[i][pps_non_vcl_dep_ref_layer_id]のレイヤIDを有するSPSをアクティブSPSとする。
また、パラメータセット復号部12は、共有SPS利用フラグが偽の場合、対象レイヤiの符号化データに、対象レイヤiのレイヤIDを有するSPSが含まるため、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有するSPSをアクティブSPSとする。すなわち、パラメータセット復号部12は、アクティブSPS識別子、共有SPS利用フラグ(pps_shared_sps_flag)、及びnon-VCL依存レイヤ指定情報(pps_non_vcl_dep_ref_layer_id)に基づいて特定されるSPSを、その後のシンタックス等の復号時に参照するアクティブSPSとし、該アクティブSPSの符号化パラメータをパラメータ管理部13より読み出してもよい(フェッチする、SPSをアクティベートする)。なお、復号対象PPSの各シンタックスが、アクティブSPSの符号化パラメータに依存しない場合は、復号対象PPSのアクティブSPS識別子、共有SPS利用フラグ、及びnon-VCL依存レイヤ指定情報の復号時点での、SPSのアクティベート処理は必要ない。
同様に、スライスヘッダ復号部141は、共有SPS利用フラグが真の場合、対象レイヤiの符号化データには、対象レイヤiのレイヤIDを有するSPSが含まれないため、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)、及びnon-VCL依存レイヤNonVCLDepRefLayerId[i][pps_non_vcl_dep_ref_layer_id]のレイヤIDを有するSPSをアクティブSPSとする。スライスヘッダ復号部141は、共有SPS利用フラグが偽の場合、対象レイヤiの符号化データに、対象レイヤiのレイヤIDを有するSPSが含まるため、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有するSPSをアクティブSPSとする。すなわち、スライスヘッダ復号部141は、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)、共有SPS利用フラグ、non-VCL依存レイヤ指定情報(pps_nov_vcl_dep_ref_layer_id)に基づいて特定されるSPSをアクティブSPSとし、該アクティブSPSの符号化パラメータをパラメータセット管理部13より読み出す(フェッチする、SPSをアクティベートする)。
(共有パラメータセットの変形例2のPPSの効果)
動画像復号装置1におけるnon-VCLの依存タイプの有無の導入と同一の効果、及び共有パラメータセットの変形例1と同一の効果を奏すると共に、ピクチャ単位で、SPSに関する共有パラメータセットを複数のレイヤから選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するSPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、pps_shared_sps_flag=0とし、対象レイヤのレイヤIDを有するSPSを参照することで、対象レイヤのピクチャの符号化データの符号量の低減、及び対象レイヤのピクチャの符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、pps_shared_sps_flag =1とし、NonVCLDepRefLayerId[i][ pps_nov_vcl_dep_ref_layer_id]で特定されるnon-VCL依存レイヤのレイヤIDを有するSPSを参照することで、対象レイヤのレイヤIDを有するSPSの符号化を省略し、該SPSに関する符号量の低減、及び該SPSの復号/符号化に要する処理量を削減することができる。
(付記事項)
なお、階層動画層復号装置1の備えるパラメータセット復号部12では、レイヤ間依存情報として、i番目のレイヤがとj番目のレイヤ間の参照関係を示すレイヤ依存タイプを示すシンタックス“direct_dependency_type[i][j]”(図13のSYNVPS0D)の値を、図14の例で説明した、レイヤ依存タイプの値-1、すなわち、“DirectDepType[i][j] - 1”の値として復号するとしたが、これに限定されない。代わりに、シンタックス“direct_dependency_type[i][j]”の値を、直接、レイヤ依存タイプの値、すなわち、“DirectDepType[i][j]”の値として復号してもよい。この場合、レイヤ依存タイプを示すシンタックス “direct_dependency_type[i][j]”の値に関して、以下の制約CV1を追加する。すなわち、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CV1を満たさなければならない。
CV1:「直接依存フラグ“direct_dependency_flag[i][j]”の値が1の場合、レイヤ依存タイプを示すシンタックス“direct_dependency_type[i][j]”の値は、0より大きい整数であること」。すなわち、レイヤ依存タイプ“direct_dependency_type[i][j]”の値域は、レイヤ依存タイプのビット長M、及びレイヤ依存タイプの総数によって定まるNで表せば、direct_dependency_type[i][j]の値域は、1から(2^M - N)である。
以上の場合も、(non-VCL依存タイプの効果)で説明した効果と同様の効果を奏する。さらに、シンタックス“direct_dependency_type[i][j]”の値を、直接、レイヤ依存タイプの値、すなわち、“DirectDepType[i][j]”の値とするため、“DirectDepType[i][j] -1”とする場合と比較して、加算(減算)の演算を削減することができる。すなわち、レイヤ依存タイプ“DirectDepType[i][j]”の導出処理、復号処理を簡略化することができる。また、上記変更は、階層動画像符号化装置2の備えるパラメータセット符号化部22において適用可能であり、同様の効果を奏する。
〔階層動画像符号化装置〕
以下では、本実施形態に係る階層動画像符号化装置2の構成について、図22を参照して説明する。
(階層動画像符号化装置の構成)
図22を用いて、階層動画像符号化装置2の概略構成を説明する。図22は、階層動画像符号化装置2の概略的構成を示した機能ブロック図である。階層動画像符号化装置2は、符号化対象とするレイヤセット(対象レイヤセット)に含まれる各レイヤの入力画像PIN#T(ピクチャ)を符号化して、対象レイヤセットの階層符号化データDATAを生成する。すなわち、動画像符号化装置2は、対象レイヤセットに含まれる、最低次のレイヤIDから最高次のレイヤIDまで、昇順で、各レイヤのピクチャを符号化し、その符号化データを生成する。言い換えれば、対象レイヤセットのレイヤIDリストLayerSetLayerIdList[0]…LayerSetIdList[N-1](Nは対象レイヤセットに含まれるレイヤ数)の順で、各レイヤのピクチャを符号化する。
図22に示すように階層動画像符号化装置2は、対象レイヤセットピクチャ符号化部20、及びNAL多重化部21を含んで備える。さらに、対象レイヤセットピクチャ符号化部20は、パラメータセット符号化部22、ピクチャ符号化部24、復号ピクチャ管理部15、および符号化パラメータ決定部26を含んで構成される。
復号ピクチャ管理部15は、既に説明した階層動画像復号装置1の備える復号ピクチャ管理部15と同一の構成要素である。ただし、階層動画像符号化装置2の備える復号ピクチャ管理部15では、内部のDPBに記録されたピクチャを出力ピクチャとして出力する必要はないため、当該出力は省略可能である。なお、階層動画像復号装置1の復号ピクチャ管理部15の説明において「復号」として説明した記載は「符号化」と置き換えることで、階層動画像符号化装置2の備える復号ピクチャ管理部15にも適用できる。
NAL多重化部21は、入力される対象レイヤセットの各レイヤのVCL、及びnon-VCLを、NALユニットに格納することでNAL多重化した階層動画像符号化データDATA#Tを生成し、外部へ出力する。言い換えれば、NAL多重化部21は、対象レイヤセットピクチャ符号化部20から供給されるnon-VCLの符号化データ、VCLの符号化データ、及び各non-VCL、VCLに対応するNALユニットタイプ、レイヤ識別子、テンポラル識別子を、NALユニットに格納して(符号化して)、NAL多重化した階層符号化データDATA#Tを生成する。
符号化パラメータ決定部26は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、各パラメータセット(VPS、SPS、PPS)に関連した各種パラメータや、ピクチャを符号化するための予測パラメータやこの予測パラメータに関連して生成される符号化の対象となるパラメータである。符号化パラメータ決定部26は、上記符号化パラメータの複数のセットの各々について情報量の大きさと符号化誤差を示すコスト値を算出する。コスト値は、例えば、符号量と二乗誤差に係数λを乗じた値との和である。符号量は、量子化誤差と符号化パラメータを可変長符号化して得られる対象レイヤセットの各レイヤの符号化データの情報量である。二乗誤差は、入力画像PIN#Tと予測画像との差分値の二乗値についての画素間の総和である。係数λは、予め設定されたゼロよりも大きい実数である。符号化パラメータ決定部26は、算出したコスト値が最小となる符号化パラメータのセットを選択し、選択した各符号化パラメータのセットをパラメータセット符号化部22、及びピクチャ符号化部24へ供給する。
パラメータセット符号化部22は、符号化パラメータ決定部26から入力される各パラメータセットの符号化パラメータと入力画像に基づいて、入力画像の符号化に用いるパラメータセット(VPS、SPS、およびSPS)を設定し、各パラメータセットをnon-VCL NALユニットに格納されるデータとして、NAL多重化部21へ供給する。なお、パラメータセット符号化部22で符号化されるパラメータセットには、階層動画像復号装置1の備えるパラメータセット復号部12の説明で記載したレイヤ間依存情報(直接依存フラグ、レイヤ依存タイプビット長、レイヤ依存タイプ)、及びレイヤ間位置対応情報を含んでいる。パラメータセット符号化部22は、レイヤ依存タイプの一部として、non-VCL依存有無フラグを符号化する。なお、パラメータセット符号化部22は、NAL多重化部21へnon-VCLの符号化データを供給するときに、non-VCLに対応するNALユニットタイプ、レイヤ識別子、及びテンポラル識別子も付与して出力する。
また、パラメータセット符号化部22で生成されるパラメータセットには、該パラメータセットを識別する識別子、及び各レイヤのピクチャを復号するために参照する該パラメータセットが参照するパラメータセット(アクティブパラメータセット)を指定するアクティブパラメータセット識別子が含まれる。具体的には、ビデオパラメータセットVPSであれば、該VPSを識別するVPS識別子が含まれる。シーケンスパラメータセットSPSであれば、該SPSを識別するSPS識別子(sps_seq_parameter_set_id)、及び該SPSや他のシンタックスが参照するVPSを特定するアクティブVPS識別子(sps_video_parameter_set_id)が含まれる。ピクチャパラメータセットPPSであれば、該PPSを識別するPPS識別子(pps_pic_parameter_set_id)、及び該PPSや他のシンタックスが参照するSPSを特定するアクティブSPS識別子(pps_seq_parameter_set_id)が含まれる。
ピクチャ符号化部24は、入力される各レイヤの入力画像PIN#T、符号化パラメータ決定部26より供給されるパラメータセット、および復号ピクチャ管理部部15に記録されている参照ピクチャに基づいて、ピクチャを構成するスライスに対応する各レイヤの入力画像の一部を符号化して、当該部分の符号化データを生成し、VCL NALユニットに格納されるデータとして、NAL多重化部21へ供給する。ピクチャ符号化部24の詳細な説明は後述する。なお、ピクチャ符号化部24は、NAL多重化部21へVCLの符号化データを供給するときに、VCLに対応するNALユニットタイプ、レイヤ識別子、及びテンポラル識別子も付与して出力する。
(ピクチャ符号化部24)
図23を参照して、ピクチャ符号化部24の構成の詳細を説明する。図23は、ピクチャ符号化部24の概略的構成を示した機能ブロック図である。
図23に示すように、ピクチャ符号化部24は、スライスヘッダ設定部241、及びCTU符号化部242を含んで構成される。
スライスヘッダ設定部241は、入力されるアクティブパラメータセットに基づいてスライス単位で入力される各レイヤの入力画像の符号化に用いるスライスヘッダを生成する。生成されたスライスヘッダは、スライス符号化データの一部として出力されるとともに、入力画像と共にCTU符号化部242へ供給される。なお、スライスヘッダ設定部241で生成されるスライスヘッダには、各レイヤのピクチャを復号するために参照するピクチャパラメータセットPPS(アクティブPPS)を指定するアクティブPPS識別子が含まれる。
CTU符号化部242は、入力されるアクティブパラメータセット、スライスヘッダに基づいて、入力画像(対象スライス部分)をCTU単位で符号化して、対象スライスに係るスライスデータおよび復号画像(復号ピクチャ)を生成して出力する。より具体的には、CTU符号化部242は、パラメータセットが含むCTBサイズの大きさのCTBを単位として対象スライスの入力画像を分割し、各CTBに対応する画像を一つのCTUとして符号化する。CTUの符号化は、予測残差符号化部2421、予測画像符号化部2422、CTU復号画像生成部2423により実行される。
予測残差符号化部2421は、入力される入力画像と予測画像の差分画像を、変換・量子化して得られる量子化残差情報(TT情報)を、スライス符号化データに含まれるスライスデータの一部として出力する。また、量子化残差情報に逆変換・逆量子化を適用して予測残差を復元し、復元した予測残差をCTU復号画像生成部2423に出力する。
予測画像符号化部2422は、符号化パラメータ決定部26で決定された、対象スライスに含まれる対象CTUの予測方式および予測パラメータに基づいて、予測画像を生成して予測残差符号化部2421とCTU復号画像生成部2423に出力する。なお、予測方式や予測パラメータの情報は予測情報(PT情報)として可変長符号化されて、スライス符号化データに含まれるスライスデータの一部として出力される。予測画像符号化部2422で選択可能な予測方式には、少なくともレイヤ間画像予測が含まれている。
予測画像符号化部2422は、予測方式としてレイヤ間画像予測が選択された場合、対応参照位置導出処理を実行して、予測対象画素に対応する参照レイヤ画素位置を決定し、該位置に基づく補間処理により予測画素値を決定する。対応参照位置導出処理としては、階層動画像復号装置1の予測画像生成部1422について説明した各処理が適用できる。例えば、<レイヤ画像予測による予測画像生成処理の詳細>で説明した処理が適用する。なお、インター予測、または、レイヤ間画像予測を使用する場合は、復号ピクチャ管理部15より対応する参照ピクチャを読み出す。
以上、上記階層動画像符号化装置2の備える予測画像符号化部2422は、前記レイヤ間位相対応情報を用いて、予測対象画素に対応する参照レイヤピクチャ上の正確な位置を導出できるため、補間処理により生成される予測画素の正確さが向上する。そのため、上記階層動画像符号化装置2は、従来より少ない符号量で符号化データを生成して出力することができる。
CTU復号画像生成部2423は、階層動画像復号装置1の備えるCTU復号画像制生成部1423と同一の構成要素であるため、説明を省略する。なお、対象CTUの復号画像は、復号ピクチャ管理部15へ供給され、内部のDPBに記録される。
<ピクチャ符号化部24の符号化プロセス>
以下、図24を参照して、ピクチャ符号化部24における対象レイヤiのピクチャの符号化の概略的な動作について説明する。図24は、ピクチャ符号化部24における対象レイヤiのピクチャを構成するスライス単位の符号化プロセスを示すフロー図である。
(SE101)符号化対象スライスの先頭スライスフラグ(first_slice_segment_in_pic_flag)を符号化する。すなわち、スライス単位に分割された入力画像(以降、符号化対象スライス)が、ピクチャ内の符号化順(復号順)(以降、処理順)で先頭スライスであれば、先頭スライスフラグ(first_slice_segment_in_pic_flag)が1である。符号化対象スライスが先頭スライスでなければ、先頭スライスフラグは0である。なお、先頭スライスフラグが1の場合、符号化対象スライスの先頭CTUアドレスを0に設定する。さらに、ピクチャ内の処理済みCTU数のカウンタnumCtbを0に設定する。先頭スライスフラグが0の場合、後述のSD106で符号化されるスライスアドレスに基づいて、符号化対象スライスの先頭CTUアドレスを設定する。
(SE102)符号化対象スライスの符号化時に参照するアクティブPPSを指定するアクティブPPS識別子(slice_pic_paramter_set_id)を符号化する。
(SE104)符号化パラメータ決定部26で決定されたアクティブパラメータセットをフェッチする。すなわち、符号化対象スライスが参照するアクティブPPS識別子(slice_pic_parameter_set_id)と同一のPPS識別子(pps_pic_parameter_set_id)を有するPPSをアクティブPPSとし、符号化パラメータ決定部26から、アクティブPPSの符号化パラメータをフェッチする(読み出す)。さらに、アクティブPPS内のアクティブSPS識別子(pps_seq_parameter_set_id)と同一のSPS識別子(sps_seq_parameter_set_id)を有するSPSをアクティブSPSとし、符号化パラメータ決定部26から、アクティブSPSの符号化パラメータをフェッチする。さらに、アクティブSPS内のアクティブVPS識別子(sps_video_parameter_set_id)と同一のVPS識別子(vps_video_parameter_set_id)を有するVPSをアクティブVPSとし、符号化パラメータ決定部26から、アクティブVPSの符号化パラメータをフェッチする。
(SE105)符号化対象スライスが、ピクチャ内の処理順で先頭スライスであるか否かを先頭スライスフラグに基づいて判定する。先頭スライスフラグが0の場合(SE105でYes)、ステップSE106へ遷移する。それ以外の場合(SE105でNo)、ステップSE106の処理をスキップする。なお、先頭スライスフラグが1の場合、符号化対象スライスのスライスアドレスは0である。
(SE106)符号化対象スライスのスライスアドレス(slice_segment_address)を符号化する。なお、符号化対象スライスのスライスアドレス(符号化対象スライスの先頭CUTアドレス)は、例えば、ピクチャ内の処理済CTU数のカウンタnumCtbに基づいて設定可能である。この場合、スライスアドレスslice_segment_adress=numCtbである。すなわち、符号化対象スライスの先頭CTUアドレス=numCtbでもある。なお、スライスアドレスの決定方法はこれに限定されず、実施可能な範囲で変更可能である。
・・・省略・・・
(SE10A)CTU符号化部242は、入力されるアクティブパラメータセット、スライスヘッダに基づいて、入力画像(符号化対象スライス)をCTU単位で符号化して、符号化対象スライスのスライスデータの一部として、CTU情報の符号化データ(図18のSYNSD01)を出力する。また、CTU符号化部242は、各CTUに対応する領域のCTU復号画像を生成し出力する。さらに、各CTU情報の符号化データの後に、該CTUが符号化対象スライスの終端であるかを示すスライス終端フラグ(end_of_slice_segment_flag)(図18のSYNSD2)を符号化する。該CTUが符号化対象スライスの終端である場合、スライス終端フラグを1へ設定し、それ以外の場合は0へ設定し、符号化する。また、各CTUの符号化後に、処理済CTU数numCtbの値を1加算する(numCtb++)。
(SE10B)該CTUが符号化対象スライスの終端であるか否かをスライス終端フラグに基づいて判定する。スライス終端フラグが1の場合(SE10BでYes)、ステップSE10Cへ遷移する。それ以外の場合(SE10BでNo)、後続のCTUを符号化するため、ステップSE10Aへ遷移する。
(SE10C)処理済CTU数numCtuが、ピクチャを構成するCTUの総数(PicSizeInCtbsY)に達したか判定する。すなわち、numCtu==PicSizeInCtbsYであるか判定する。numCtuがPicSizeInCtbsYと等しい場合(SE10CでYes)、符号化対象ピクチャを構成するスライス単位の符号化処理を終了する。それ以外の場合(numCtu<PicSizeInCtbsY)(SE10CでNo)、符号化対象対象ピクチャを構成するスライス単位の符号化処理を継続するため、ステップSE101へ遷移する。
以上、実施例1に係るピクチャ符号化部24の動作について説明したが、上記ステップに限定されず、実施可能な範囲で、ステップを変更しても構わない。
(動画像符号化装置2の効果)
以上説明した本実施形態に係る階層動画像符号化装置2は、対象レイヤの符号化に利用されるパラメータセット(SPS、PPS)ととして、参照レイヤの符号化に利用されるパラメータセットを共有することにより、対象レイヤのパラメータセットに係る符号量を削減することが可能である。より具体的には、本実施例では、レイヤ依存タイプとして、VCL間の依存タイプ(レイヤ間画像予測やレイヤ間動き予測)の他に、新たにnon-VCL間の依存タイプの有無を導入する。non-VCL間の依存には、異なるレイヤ間でのパラメータセットの共有(共有パラメータセット)や、異なるレイヤ間でのパラメータセット間のシンタックスの一部の予測(パラメータセット間シンタックス予測)が含まれる。
non-VCLの有無を示す依存タイプの有無を明示的に通知することによって、デコーダは、レイヤセット内のいずれのレイヤが、対象レイヤのnon-VCLの依存レイヤ(non-VCL参照レイヤ)となるかVPS拡張データを復号することによって把握することができる効果を奏する。すなわち、レイヤ識別子の値がnuhLayerIdAであるレイヤAのパラメータセットが、どのレイヤと共通で利用される(共有パラメータセットを適用する)かが、符号化データの復号開始時点において不明であるという課題を解消することができる。
また、non-VCL間の依存タイプの有無を導入することによって、デコーダとエンコーダ間で以下のビットストリーム制約を明示的に示すことができる。
すなわち、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CX1を満たさなければならない。
CX1:「レイヤ識別子nuhLayerIdAであるnon-VCLが、レイヤ識別子nuhLayerIdBであるレイヤで利用されるnon-VCLであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
さらに、共有パラメータセットに関して限定すれば、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CX2を満たさなければならない。
CX2:「レイヤ識別子nuhLayerIdAであるパラメータセットが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブパラメータセットであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
さらに、上記制約条件CX2をSPSに関する共有パラメータセット、PPSに関する共有パラメータセットに限定すれば、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CX3、及びCX4をそれぞれ満たさなければならない。
CX3:「レイヤ識別子nuhLayerIdAであるSPSが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブSPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLayerIdBの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
CX4:「レイヤ識別子nuhLayerIdAであるPPSが、レイヤ識別子nuhLayerIdBであるレイヤのアクティブPPSであるとき、レイヤ識別子nuhLayerIdAであるレイヤは、レイヤ識別子nuhLyaerIdBの直接参照レイヤであり、かつ、non-VCL依存有無フラグが1であること」
上記ビットストリーム制約は、換言すれば、共有パラメータセットとして利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤのパラメータセットであるということである。
共有パラメータセットとして利用可能なパラメータセットは、対象レイヤに対する直接参照レイヤのパラメータセットであるということは、レイヤセットAのサブセットであるレイヤセットB内では、レイヤセットAに含まれるが、レイヤセットBに含まれないレイヤからの参照を禁止する。
すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、レイヤセットBに含まれないレイヤを参照するパラメータセットの共有を禁止できるため、レイヤセットBのあるレイヤが参照する直接参照レイヤのレイヤIDを有するパラメータセットが破棄されることはない。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、共有パラメータセットを利用するレイヤが復号できないという問題を解消することができる。すなわち、図1で説明した従来技術において発生しえたビットストリーム抽出時の課題を解消することができる。
(non-VCL依存タイプの変形例1)
動画符号化装置1におけるnon-VCL依存タイプの変形例1は、動画像復号装置1におけるnon-VCL依存タイプの変形例1と対応し、同一の内容であるため、説明を省略する。また、動画像復号装置1におけるnon-VCL依存タイプの変形例1と同様の効果を奏する。
(non-VCL依存タイプの変形例2)
動画符号化装置1におけるnon-VCL依存タイプの変形例2は、動画像復号装置1におけるnon-VCL依存タイプの変形例2と対応し、同一の内容であるため、説明を省略する。また、動画像復号装置1におけるnon-VCL依存タイプの変形例2と同様の効果を奏する。
(共有パラメータセットの変形例1)
動画像符号化装置2における共有パラメータセットの変形例1は、動画像復号装置1における共有パラメータセットの変形例1に対応する逆処理である。
(共有パラメータセットの変形例1に係るスライスヘッダ)
スライスヘッダには、対象レイヤiが共有パラメータセットとして参照しうる、non-VCLの直接参照レイヤ数が1の場合(NumNonVCLDepRefLayers[i]==1)、PPSがレイヤ間で参照されること示す共有PPS利用フラグ(slice_shared_pps_flag)(例えば、図27(a)上のSYNSH0X)が含まれていてもよい。すなわち、スライスヘッダ設定部241は、図27(a)の例では、アクティブPPS識別子(slice_pic_parameter_set_id)(図27(a)のSYNSH02)の直後に、対象レイヤiのレイヤ識別子nuhLayerId(nuh_layer_id)が0より大きい場合、該共有PPS利用フラグ(slice_shared_pps_flag)を符号化する。スライスヘッダ設定部241は、該共有PPS利用フラグが真の場合、対象レイヤiの符号化データの一部として、パラメータセット符号部22において対象レイヤiのレイヤIDを有するPPSの符号化は省略され、アクティブPPS識別子(slice_pic_parameter_set_id)で特定される、non-VCL依存レイヤNonVCLDepRefLayerId[i][0]のレイヤIDを有する符号化済PPSをアクティブPPSとする。スライスヘッダ設定部241は、共有PPS利用フラグが偽の場合、対象レイヤiの符号化データの一部として、パラメータセット符号部22において対象レイヤiのレイヤIDを有するPPSは符号化済であるため、アクティブPPS識別子(slice_pic_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有する符号化済PPSをアクティブPPSとする。すなわち、スライスヘッダ設定部241は、アクティブPPS識別子、及び共有PPS利用フラグに基づいて特定されるPPSを、その後のシンタックス等の符号化号時に参照するアクティブPPSとし、該アクティブPPSの符号化パラメータを符号化パラメータ決定部26より読み出す(フェッチする、PPSをアクティベートする)。
(共有パラメータセットの変形例1に係るスライスヘッダの効果)
動画像復号装置1におけるnon-VCLの依存タイプの有無の導入による同一の効果を奏すると共に、ピクチャ単位で、PPSに関する共有パラメータセットを利用するか否かを選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するPPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、slice_shared_pps_flag =0とし、対象レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのピクチャの符号化データの符号量の低減、及び対象レイヤのピクチャの符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、slice_shared_pps_flag =1とし、参照レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのレイヤIDを有するPPSの符号化を省略し、該PPSに関する符号量の低減、及び該PPSの復号/符号化に要する処理量を削減することができる。
(共有パラメータセットの変形例1に係るPPS)
同様に、ピクチャパラメータセットPPSには、対象レイヤiが共有パラメータとして参照しうる、non-VCLの直接参照レイヤ数が1の場合(NumNonVCLDepRefLayers[i]==1)、SPSがレイヤ間で参照されること示す共有SPS利用フラグ(pps_shared_pps_flag)が含まれていてもよい。すなわち、パラメータセット符号化部22は、図28(a)の例では、PPS識別子(pps_pic_parameter_set_id)(図28(a)上のSYNPPS01)、アクティブSPS識別子(pps_seq_parameter_set_id)(図28(a)上のSYNPPS02)の直後に、対象レイヤiのレイヤ識別子nuhLayerId(nuh_layer_id)が0より大きい場合、該共有SPS利用フラグ(pps_shared_sps_flag)を符号化する。パラメータセット符号化部22は、該共有SPS利用フラグ(pps_shared_sps_flag)が真の場合、対象レイヤiの符号化データの一部として、対象レイヤiのレイヤIDを有するSPSの符号化を省略し、アクティブSPS識別子(pps_seq_parameter_set_id)で特定される、non-VCL依存レイヤNonVCLDepRefLayerId[i][0]のレイヤIDを有する符号化済SPSをアクティブSPSとする。また、パラメータセット符号化部22は、該共有SPS利用フラグが偽の場合、対象レイヤiの符号化データの一部として、アクティブSPS識別子(pps_seq_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有するSPSを符号化し、該アクティブSPS識別子(pps_seq_parameter_set_id)で特定されるSPSをアクティブSPSとする。すなわち、パラメータセット符号化部22は、アクティブSPS識別子、及び共有SPS利用フラグに基づいて特定されるSPSを、その後のシンタックス等の符号化時に参照するアクティブSPSとし、該アクティブSPSの符号化パラメータを符号化パラメータ決定部26より読み出してもよい(フェッチする、SPSをアクティベートする)。なお、符号化対象PPSの各シンタックスが、アクティブSPSの符号化パラメータに依存しない場合は、符号化対象PPSの符号化開始時点での、SPSのアクティベート処理は必要ない。
同様に、スライスヘッダ設定部241は、共有SPS利用フラグが真の場合、対象レイヤiの符号化データの一部として、パラメータセット符号部22において対象レイヤiのレイヤIDを有するSPSの符号化は省略され、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)で特定される、non-VCL依存レイヤNonVCLDepRefLayerId[i][0]のレイヤIDを有する符号化済SPSをアクティブSPSとする。スライスヘッダ設定部241は、共有SPS利用フラグが偽の場合、対象レイヤiの符号化データの一部として、パラメータセット符号部22において対象レイヤiのレイヤIDを有するSPSは符号化済みであるため、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有する符号化済SPSをアクティブSPSとする。なわち、スライスヘッダ設定部241は、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)、共有SPS利用フラグに基づいて特定されるSPSを、その後のシンタックス等の符号化号時に参照するアクティブSPSとし、該アクティブSPSの符号化パラメータを符号化パラメータ決定部26より読み出す(フェッチする、SPSをアクティベートする)。
(共有パラメータセットの変形例1に係るPPSの効果)
動画像復号装置1におけるnon-VCLの依存タイプの有無の導入による同一の効果を奏すると共に、ピクチャ単位で、SPSに関する共有パラメータセットを利用するか否かを選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するSPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、pps_shared_sps_flag=0とし、対象レイヤのレイヤIDを有するSPSを参照することで、対象レイヤのピクチャの符号化データの符号量の低減、及び対象レイヤのピクチャの符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、pps_shared_sps_flag=1とし、参照レイヤのレイヤIDを有するSPSを参照することで、対象レイヤのレイヤIDを有するSPSの符号化を省略し、該SPSに関する符号量の低減、及び該SPSの復号/符号化に要する処理量を削減することができる。
(共有パラメータセットの変形例2)
動画像符号化装置2における共有パラメータセットの変形例2は、動画像復号装置1における共有パラメータセットの変形例2に対応する逆処理である。
(共有パラメータセットの変形例2に係るスライスヘッダ)
スライスヘッダには、対象レイヤiが共有パラメータセットとして参照しうる、non-VCLの直接参照レイヤ数が1より大きい場合(NumNonVCLDepRefLayers[i]>1)、PPSがレイヤ間で参照されること示す共有PPS利用フラグ(slice_shared_pps_flag) (例えば、図27(b)上のSYNSH0X)、及びnon-VCL依存レイヤを指定するnon-VCL依存レイヤ指定情報(NonVCLDepRefLayerId[i][slice_non_vcl_dep_ref_layer_id]のslice_non_vcl_dep_ref_layer_id(図27(b)上のSYNSH0Y))が含まれていてもよい。
すなわち、スライスヘッダ設定部241は、図27(b)の例では、アクティブPPS識別子(slice_pic_parameter_set_id)の直後に、対象レイヤiのレイヤ識別子nuhLayerId(nuh_layer_id)が0より大きい場合、該共有PPS利用フラグ(slice_shared_pps_flag)を符号化する。さらに、スライスヘッダ設定部241は、共有PPS利用フラグが真の場合、対象レイヤiの符号化データの一部として、パラメータセット符号部22において対象レイヤiのレイヤIDを有するPPSの符号化は省略され、アクティブPPS識別子(slice_pic_parameter_set_id)、及びnon-VCL依存レイヤ指定情報(NonVCLDepRefLayerId[i][slice_non_vcl_dep_ref_layer_id]のslice_non_vcl_dep_ref_layer_id)で特定される、non-VCL依存レイヤNonVCLDepRefLayerId[i][ slice_non_vcl_dep_ref_layer_id]のレイヤIDを有す符号化済PPSをアクティブPPSとする。スライスヘッダ設定部241は、共有PPS利用フラグが偽の場合、対象レイヤiの符号化データの一部として、パラメータセット符号化部22において対象レイヤiのレイヤIDを有するPPSは符号化済みため、アクティブPPS識別子(slice_pic_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有する符号化済PPSをアクティブPPSとする。
(共有パラメータセットの変形例2に係るスライスヘッダの効果)
動画像復号装置1におけるnon-VCLの依存タイプの有無の導入と同一の効果、及び共有パラメータセットの変形例1と同一の効果を奏すると共に、ピクチャ単位で、PPSに関する共有パラメータセットを複数のレイヤから選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するPPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、slice_shared_pps_flag=0とし、対象レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのピクチャの符号化データの符号量の低減、及び対象レイヤのピクチャの符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、slice_shared_pps_flag=1とし、NonVCLDepRefLayerId[i][slice_non_vcl_dep_ref_layer_id]で特定されるnon-VCL依存レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのレイヤIDを有するPPSの符号化を省略し、該PPSに関する符号量の低減、及び該PPSの復号/符号化に要する処理量を削減することができる。
(共有パラメータセットの変形例2に係るPPS)
同様に、ピクチャパラメータセットPPSには、対象レイヤiが共有パラメータとして参照しうる、non-VCLの直接参照レイヤ数が1より大きい場合(NumNonVCLDepRefLayers[i]>1)、SPSがレイヤ間で参照されること示す共有SPS利用フラグ(pps_shared_sps_flag)(例えば、図28(b)上のSYNPPS05)及びnon-VCL依存レイヤを指定するnon-VCL依存レイヤ指定情報(NonVCLDepRefLayerId[i][pps_non_vcl_dep_ref_layer_id]のpps_non_vcl_dep_ref_layer_id(図28(b)上のSYNPPS06))が含まれていてもよい。
すなわち、パラメータセット符号化部22は、図28(b)の例では、PPS識別子 (pps_pic_parameter_set_id)(図28(b)上のSYNPPS01)、アクティブSPS識別子(pps_seq_parameter_set_id)(図28(b)上のSYNPPS02)の直後に、対象レイヤiのレイヤ識別子nuhLayerId(nuh_layer_id)が0より大きい場合、該共有SPS利用フラグ(pps_shared_sps_flag)を符号化する。さらに、パラメータセット符号化部22は、共有SPS利用フラグが真の場合、non-VCL依存レイヤ指定情報(pps_non_vcl_dep_ref_layer_id)を符号化する。パラメータセット符号化部22は、対象レイヤiの符号化データの一部として、対象レイヤiのレイヤIDを有するSPSの符号化を省略し、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)、及びnon-VCL依存レイヤNonVCLDepRefLayerId[i][pps_non_vcl_dep_ref_layer_id]のレイヤIDを有する符号化済SPSをアクティブSPSとする。また、パラメータセット符号化部22は、該共有SPS利用フラグが偽の場合、対象レイヤiの符号化データの一部として、アクティブSPS識別子(pps_seq_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有するSPSを符号化し、該アクティブSPS識別子(pps_seq_parameter_set_id)で特定されるSPSをアクティブSPSとする。すなわち、パラメータセット符号化部22は、アクティブSPS識別子、共有SPS利用フラグ(pps_shared_pps_flag)、及びnon-VCL依存レイヤ指定情報(pps_non_vcl_dep_ref_layer_id)に基づいて特定されるSPSを、その後のシンタックス等の符号化時に参照するアクティブSPSとし、該アクティブSPSの符号化パラメータを符号化パラメータ決定部26より読み出してもよい(フェッチする、SPSをアクティベートする)。なお、符号化対象PPSの各シンタックスが、アクティブSPSの符号化パラメータに依存しない場合は、符号化対象PPSの符号化開始時点での、SPSのアクティベート処理は必要ない。
同様に、スライスヘッダ設定部241は、共有SPS利用フラグが真の場合、対象レイヤiの符号化データの一部として、パラメータセット符号化部22において対象レイヤiのレイヤIDを有するSPSの符号化は省略され、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)で特定される、non-VCL依存レイヤNonVCLDepRefLayerId[i][pps_non_vcl_ref_layer_id]のレイヤIDを有する符号化済SPSをアクティブSPSとする。スライスヘッダ設定部241は、共有SPS利用フラグが偽の場合、対象レイヤiの符号化データの一部として、パラメータセット符号化部22において対象レイヤiのレイヤIDを有するSPSは符号化済のため、アクティブPPSの有するアクティブSPS識別子(pps_seq_parameter_set_id)で特定される、対象レイヤiのレイヤIDを有する符号化済SPSをアクティブSPSとする。すなわち、スライスヘッダ設定部241は、アクティブPPSの有するアクティブSPS識別子、共有SPS利用フラグ(pps_shared_sps_flag)、及びnon-VCL依存レイヤ指定情報(pps_non_vcl_ref_layer_id)に基づいて特定されるSPSを、その後のシンタックス等の符号化号時に参照するアクティブSPSとし、該アクティブSPSの符号化パラメータを符号化パラメータ決定部26より読み出す(フェッチする、SPSをアクティベートする)。
(共有パラメータセットの変形例2に係るPPSの効果)
動画像復号装置1におけるnon-VCLの依存タイプの有無の導入と同一の効果、及び共有パラメータセットの変形例1と同一の効果を奏すると共に、ピクチャ単位で、SPSに関する共有パラメータセットを複数のレイヤから選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するSPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、pps_shared_sps_flag=0とし、対象レイヤのレイヤIDを有するSPSを参照することで、対象レイヤのピクチャの符号化データの符号量の低減、及び対象レイヤのピクチャの符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、pps_shared_sps_flag =1とし、NonVCLDepRefLayerId[i][pps_non_vcl_dep_ref_layer_id]で特定されるnon-VCL依存レイヤのレイヤIDを有するSPSを参照することで、対象レイヤのレイヤIDを有するSPSの符号化を省略し、該SPSに関する符号量の低減、及び該SPSの復号/符号化に要する処理量を削減することができる。
(付記事項)
なお、階層動画層符号化装置2の備えるパラメータセット符号化部22では、レイヤ間依存情報として、i番目のレイヤがとj番目のレイヤ間の参照関係を示すレイヤ依存タイプを示すシンタックス“direct_dependency_type[i][j]”(図13のSYNVPS0D)の値を、図14の例で説明した、レイヤ依存タイプの値-1、すなわち、”DirectDepType[i][j] - 1”の値を符号化するとしたが、これに限定されない。代わりに、シンタックス“direct_dependency_type[i][j]”の値を、直接、レイヤ依存タイプの値、すなわち、”DirectDepType[i][j]”の値として符号化してもよい。この場合、レイヤ依存タイプを示すシンタックス“direct_dependency_type[i][j]”の値に関して、以下の制約CV1を追加する。すなわち、ビットストリームコンフォーマンスとして、ビットストリームは、以下の条件CV1を満たさなければならない。
CV1:「直接依存フラグ“direct_dependency_flag[i][j]”の値が1の場合、レイヤ依存タイプを示すシンタックス“direct_dependency_type[i][j]”の値は、0より大きい整数であること」。すなわち、レイヤ依存タイプ“direct_dependency_type[i][j]”の値域は、レイヤ依存タイプのビット長M、及びレイヤ依存タイプの総数によって定まるNで表せば、direct_dependency_type[i][j]の値域は、1から(2^M - N)である。以上の場合でも、(non-VCL依存タイプの効果)で説明した効果と同様の効果を奏する。さらに、シンタックス“direct_dependency_type[i][j]”の値を、直接、レイヤ依存タイプの値、すなわち、”DirectDepType[i][j]”の値とするため、”DirectDepType[i][j] - 1”とする場合と比較して、加算(減算)の演算を削減することができる。すなわち、レイヤ依存タイプ”DirectDepType[i][j]”の導出処理、符号化処理を簡略化することができる。なお、上記変更は、階層動画像復号装置1で説明した(付記事項)と対応する逆処理である。
(他の階層動画像符号化/復号システムへの適用例)
上述した階層動画像符号化装置2及び階層動画像復号装置1は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用できる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
図25に基づいて、上述した階層動画像符号化装置2および階層動画像復号装置1を、動画像の送信および受信に利用できることを説明する。図25の(a)は、階層動画像符号化装置2を搭載した送信装置PROD_Aの構成を示したブロック図である。
図25の(a)に示すように、送信装置PROD_Aは、動画像を符号化することによって符号化データを得る符号化部PROD_A1と、符号化部PROD_A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部PROD_A2と、変調部PROD_A2が得た変調信号を送信する送信部PROD_A3とを備えている。上述した階層動画像符号化装置2は、この符号化部PROD_A1として利用される。
送信装置PROD_Aは、符号化部PROD_A1に入力する動画像の供給源として、動画像を撮像するカメラPROD_A4、動画像を記録した記録媒体PROD_A5、動画像を外部から入力するための入力端子PROD_A6、及び、画像を生成または加工する画像処理部A7を更に備えていてもよい。図25の(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
図25の(b)は、階層動画像復号装置1を搭載した受信装置PROD_Bの構成を示したブロック図である。図25の(b)に示すように、受信装置PROD_Bは、変調信号を受信する受信部PROD_B1と、受信部PROD_B1が受信した変調信号を復調することによって符号化データを得る復調部PROD_B2と、復調部PROD_B2が得た符号化データを復号することによって動画像を得る復号部PROD_B3とを備えている。上述した階層動画像復号装置1は、この復号部PROD_B3として利用される。
受信装置PROD_Bは、復号部PROD_B3が出力する動画像の供給先として、動画像を表示するディスプレイPROD_B4、動画像を記録するための記録媒体PROD_B5、及び、動画像を外部に出力するための出力端子PROD_B6を更に備えていてもよい。図25の(b)においては、これら全てを受信装置PROD_Bが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_B5は、符号化されていない動画像を記録するためのものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部PROD_B3と記録媒体PROD_B5との間に、復号部PROD_B3から取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送(ここでは、送信先が予め特定されていない送信態様を指す)であってもよいし、通信(ここでは、送信先が予め特定されている送信態様を指す)であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、及び有線通信の何れによって実現してもよい。
例えば、地上デジタル放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を無線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。また、ケーブルテレビ放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を有線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。
また、インターネットを用いたVOD(Video On Demand)サービスや動画共有サービスなどのサーバ(ワークステーションなど)/クライアント(テレビジョン受像機、パーソナルコンピュータ、スマートフォンなど)は、変調信号を通信で送受信する送信装置PROD_A/受信装置PROD_Bの一例である(通常、LANにおいては伝送媒体として無線又は有線の何れかが用いられ、WANにおいては伝送媒体として有線が用いられる)。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、及びタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアントは、送信装置PROD_A及び受信装置PROD_Bの双方として機能する。
図26に基づいて、上述した階層動画像符号化装置2および階層動画像復号装置1を、動画像の記録および再生に利用できることを説明する。図26の(a)は、上述した階層動画像符号化装置2を搭載した記録装置PROD_Cの構成を示したブロック図である。
図26の(a)に示すように、記録装置PROD_Cは、動画像を符号化することによって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した階層動画像符号化装置2は、この符号化部PROD_C1として利用される。
なお、記録媒体PROD_Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)等のように、記録装置PROD_Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリ等のように、記録装置PROD_Cに接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc)やBD(Blu-ray Disc:登録商標)等のように、記録装置PROD_Cに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、記録装置PROD_Cは、符号化部PROD_C1に入力する動画像の供給源として、動画像を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、動画像を受信するための受信部PROD_C5、及び、画像を生成または加工する画像処理部C6を更に備えていてもよい。図26の(a)においては、これら全てを記録装置PROD_Cが備えた構成を例示しているが、一部を省略しても構わない。
なお、受信部PROD_C5は、符号化されていない動画像を受信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部PROD_C5と符号化部PROD_C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
このような記録装置PROD_Cとしては、例えば、DVDレコーダ、BDレコーダ、HDD(Hard Disk Drive)レコーダなどが挙げられる(この場合、入力端子PROD_C4又は受信部PROD_C5が動画像の主な供給源となる)。また、カムコーダ(この場合、カメラPROD_C3が動画像の主な供給源となる)、パーソナルコンピュータ(この場合、受信部PROD_C5又は画像処理部C6が動画像の主な供給源となる)、スマートフォン(この場合、カメラPROD_C3又は受信部PROD_C5が動画像の主な供給源となる)なども、このような記録装置PROD_Cの一例である。
図26の(b)は、上述した階層動画像復号装置1を搭載した再生装置PROD_Dの構成を示したブロックである。図26の(b)に示すように、再生装置PROD_Dは、記録媒体PROD_Mに書き込まれた符号化データを読み出す読出部PROD_D1と、読出部PROD_D1が読み出した符号化データを復号することによって動画像を得る復号部PROD_D2と、を備えている。上述した階層動画像復号装置1は、この復号部PROD_D2として利用される。
なお、記録媒体PROD_Mは、(1)HDDやSSDなどのように、再生装置PROD_Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリなどのように、再生装置PROD_Dに接続されるタイプのものであってもよいし、(3)DVDやBDなどのように、再生装置PROD_Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、再生装置PROD_Dは、復号部PROD_D2が出力する動画像の供給先として、動画像を表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。図26の(b)においては、これら全てを再生装置PROD_Dが備えた構成を例示しているが、一部を省略しても構わない。
なお、送信部PROD_D5は、符号化されていない動画像を送信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部PROD_D2と送信部PROD_D5との間に、動画像を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
このような再生装置PROD_Dとしては、例えば、DVDプレイヤ、BDプレイヤ、HDDプレイヤなどが挙げられる(この場合、テレビジョン受像機等が接続される出力端子PROD_D4が動画像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイPROD_D3が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称され、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子PROD_D4又は送信部PROD_D5が動画像の主な供給先となる)、ラップトップ型又はタブレット型PC(この場合、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)なども、このような再生装置PROD_Dの一例である。
(ハードウェア的実現およびソフトウェア的実現について)
最後に、階層動画像復号装置1、階層動画像符号化装置2の各ブロックは、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェア的に実現してもよい。
後者の場合、上記各装置は、各機能を実現する制御プログラムの命令を実行するCPU、上記プログラムを格納したROM(Read Only Memory)、上記プログラムを展開するRAM(Random Access Memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである上記各装置の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記各装置に供給し、そのコンピュータ(またはCPUやMPU(Micro Processing Unit))が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM(Compact Disc Read-Only Memory)/MO(Magneto-Optical)/MD(Mini Disc)/DVD(Digital Versatile Disk)/CD−R(CD Recordable)等の光ディスクを含むディスク類、ICカード(メモリカードを含む)/光カード等のカード類、マスクROM/EPROM(Erasable Programmable Read-only Memory)/EEPROM(登録商標)(ElectricallyErasable and Programmable Read-only Memory)/フラッシュROM等の半導体メモリ類、あるいはPLD(Programmable Logic Device)やFPGA(Field Programmable Gate
Array)等の論理回路類などを用いることができる。
また、上記各装置を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、LAN(Local Area Network)、ISDN(Integrated Services Digital Network)、VAN(Value-Added Network)、CATV(Community Antenna Television)通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成または種類のものに限定されない。例えば、IEEE(Institute of Electrical and Electronic Engineers)1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(Asymmetric DigitalSubscriber Line)回線等の有線でも、IrDA(Infrared Data Association)やリモコンのような赤外線、Bluetooth(登録商標)、IEEE802.11無線、HDR(High Data Rate)、NFC(Near Field Communication)、DLNA(登録商標)(Digital Living Network Alliance)、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
〔まとめ〕
本発明の態様1に係る画像復号装置は、レイヤ識別子を復号するレイヤ識別子復号手段と、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグを復号するレイヤ依存フラグ復号手段と、non-VCLを復号するnon-VCL復号手段を備える画像復号装置であって、前記画像復号装置は、ある対象レイヤから参照されるnon-VCLのレイヤ識別子は、前記対象レイヤと同じレイヤ識別子もしくは、前記対象レイヤから、直接参照されるレイヤのレイヤ識別子である、というコンフォーマンス条件を満たす画像符号化データを復号することを特徴とする。
以上の画像復号装置によれば、「ある対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するnon-VCLである」ことを満たす画像符号化データを復号する。「ある対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するnon-VCLである」ということは、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止することを意味する。
すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する直接参照レイヤのnon-VCLが破棄されることはない。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様2に係る画像復号装置は、上記態様1において、上記参照されるnon-VCLのレイヤ識別子は、さらに、前記対象レイヤから、間接参照されるレイヤ識別子である、というコンフォーマンス条件を満たす画像符号化データを復号することを特徴とする。
以上の画像復号装置によれば、ある対象レイヤが参照可能な参照レイヤのnon-VCLは、対象レイヤに対する直接参照レイヤ、または間接参照レイヤのnon-VCLである画像符号化データを復号する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、直接参照レイヤまたは間接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤまたは間接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様3に係る画像復号装置は、上記態様1または態様2において、さらに、前記参照レイヤは、前記レイヤ依存フラグによって指定されることを特徴とする画像符号化データを復号することを特徴とする。
以上の画像符号化データによれば、「前記直接参照レイヤあるいは間接参照レイヤは、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグによって指定される参照レイヤであること」へ制限する。すなわち、「対象レイヤが参照可能な参照レイヤのnon-VCLは、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグによって指定される参照レイヤ」へ制限されている。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、レイヤ依存フラグによって指定された直接参照レイヤまたは間接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤまたは間接参照レイヤを参照するレイヤのnon-VCLを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様4に係る画像復号装置は、上記態様1において、さらに、レイヤ依存タイプを復号するレイヤ依存タイプ復号手段を備え、前記レイヤ依存タイプは、前記対象レイヤのnon-VCLと前記参照レイヤのnon-VCL間の依存の有無を示すnon-VCL依存タイプを含むことを特徴とする。
以上の画像復号装置によれば、「前記直接参照レイヤは、前記non-VCL依存タイプがnon-VCL間の依存があることを示す参照レイヤであること」へ制限された画像符号化データを復号する。すなわち、「対象レイヤが参照可能な参照レイヤは、前記対象レイヤと前記直接参照レイヤのnon-VCL間の依存がある直接参照レイヤ」へ制限する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤのnon-VCL間の依存がある直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様5に係る画像復号装置は、上記態様4において、さらに、前記参照レイヤのレイヤ識別子nuhLayerIdAに等しいnuh_layer_idを有するnon-VCLが、nuhLayerIdBに等しいnuh_layer_idを有する対象レイヤで利用されるnon-VCLである場合には、nuhLayerIdAに等しいnuh_layer_idのレイヤは、nuhLayerIdBに等しいnuh_layer_idを有するレイヤの直接参照レイヤである、というコンフォーマンス条件を満たす画像復号データを復号することを特徴とする。
以上の画像復号装置によれば、「前記参照レイヤのレイヤ識別子nuhLayerIdAに等しいnuh_layer_idを有するnon-VCLが、nuhLayerIdBに等しいnuh_layer_idを有する対象レイヤで利用されるnon-VCLである場合には、nuhLayerIdAに等しいnuh_layer_idのレイヤは、nuhLayerIdBに等しいnuh_layer_idを有するレイヤの直接参照レイヤであること」へ制限された画像符号化データを復号する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、nuhLayerIdAに等しいnuh_layer_idを有する直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するnuhLayerIdBと等しいnuh_layer_idを有するレイヤが復号できないという問題を解消することができる。
本発明の態様6に係る画像復号装置は、上記態様4または態様5において、さらに、前記non-VCL依存タイプは、共有パラメータセットの依存の有無を含む画像符号化データを復号することを特徴とする。
以上の画像復号装置によれば、「対象レイヤが共有パラメータセットとして参照可能なパラメータセットは、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプが共有パラメータセットの依存があることを示す直接参照レイヤのパラメータセットであること」へ制限された画像符号化データを復号する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプが共有パラメータセットの依存があることを示す直接参照レイヤのパラメータセットが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様7に係る画像復号装置は、上記態様4または態様5において、さらに、前記non-VCL依存タイプは、パラメータセット間予測の依存の有無を含む画像符号化データを復号することを特徴とする。
以上の画像復号装置によれば、「対象レイヤがパラメータセット間予測として参照可能なパラメータセットは、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプがパラメータセット間予測の依存があることを示す直接参照レイヤのパラメータセットであること」へ制限された画像符号化データを復号する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプがパラメータセット間予測の依存があることを示す直接参照レイヤのパラメータセットが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様8に係る画像復号装置は、上記態様1から態様7において、さらに、前記non-VCLはパラメータセットを含む画像符号化データを復号することを特徴とする。
以上の画像復号装置によれば、non-VCLとして、パラメータセットを復号する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記参照レイヤのパラメータセットが破棄され、前記参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様9に係る画像符号化データは、ある対象レイヤから参照される参照レイヤのnon-VCLのレイヤ識別子は、前記対象レイヤと同じレイヤ識別子もしくは、前記対象レイヤの直接参照レイヤのレイヤ識別子である、というコンフォーマンス条件を満たす画像符号化データであることを特徴とする。
以上の画像符号化データによれば、「ある対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのnon-VCLである」ことへ制限する。「ある対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するnon-VCLであると」ということは、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止することを意味する。
すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する直接参照レイヤのnon-VCLが破棄されることはない。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様10に係る画像符号化データは、上記態様9において、さらに、前記対象レイヤから参照される参照レイヤのnon-VCLのレイヤ識別子は、前記対象レイヤの間接参照レイヤのレイヤ識別子である、というコンフォーマンス条件を満たす画像符号化データであることを特徴とする。
以上の画像符号化データによれば、「ある対象レイヤが参照可能な参照レイヤのnon-VCLは、対象レイヤに対する直接参照レイヤ、または間接参照レイヤのnon-VCLである」ことへ制限する。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、直接参照レイヤまたは間接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤまたは間接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様11に係る画像符号化データは、上記態様9また態様10において、さらに、前記対象レイヤと前記参照レイヤの参照関係を示すレイヤ依存フラグを含み、前記参照レイヤは、前記レイヤ依存フラグによって指定されることを特徴とする。
以上の画像符号化データによれば、「前記直接参照レイヤあるいは間接参照レイヤは、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグによって指定される参照レイヤであること」へ制限された画像符号化データを復号する。すなわち、「対象レイヤが参照可能な参照レイヤのnon-VCLは、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグによって指定される参照レイヤ」へ制限されている。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、レイヤ依存フラグによって指定された直接参照レイヤまたは間接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤまたは間接参照レイヤを参照するレイヤのnon-VCLを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様12に係る画像符号化データは、上記態様9において、さらに前記対象レイヤと前記参照レイヤの参照関係の種類を示すレイヤ依存タイプを含み、前記レイヤ依存タイプは、前記対象レイヤのnon-VCLと前記参照レイヤのnon-VCL間の依non-VCL存タイプを含むことを特徴とする。
以上の画像符号化データによれば、「前記直接参照レイヤは、前記non-VCL依存タイプがnon-VCL間の依存があることを示す参照レイヤであること」へ制限する。すなわち、「対象レイヤが参照可能な参照レイヤは、前記対象レイヤと前記直接参照レイヤのnon-VCL間の依存がある直接参照レイヤ」へ制限する。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤのnon-VCL間の依存がある直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様13に係る画像符号化データは、上記態様12において、さらに、前記参照レイヤのレイヤ識別子nuhLayerIdAに等しいnuh_layer_idを有するnon-VCLが、nuhLayerIdBに等しいnuh_layer_idを有する対象レイヤで利用されるnon-VCLである場合には、nuhLayerIdAに等しいnuh_layer_idのレイヤは、nuhLayerIdBに等しいnuh_layer_idを有するレイヤの直接参照レイヤであることを特徴とする。
以上の画像符号化データによれば、「前記参照レイヤのレイヤ識別子nuhLayerIdAに等しいnuh_layer_idを有するnon-VCLが、nuhLayerIdBに等しいnuh_layer_idを有する対象レイヤで利用されるnon-VCLである場合には、nuhLayerIdAに等しいnuh_layer_idのレイヤは、nuhLayerIdBに等しいnuh_layer_idを有するレイヤの直接参照レイヤであること」へ制限する。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、nuhLayerIdAに等しいnuh_layer_idを有する直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するnuhLayerIdBと等しいnuh_layer_idを有するレイヤが復号できないという問題を解消することができる。
本発明の態様14に係る画像符号化データは、上記態様9また態様10において、さらに前記non-VCL依存タイプは、共有パラメータセットの依存の有無を含むことを特徴とする。
以上の画像符号化データによれば、「対象レイヤが共有パラメータセットとして参照可能なパラメータセットは、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプが共有パラメータセットの依存があることを示す直接参照レイヤのパラメータセットであること」へ制限する。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプが共有パラメータセットの依存があることを示す直接参照レイヤのパラメータセットが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様15に係る画像符号化データは、上記態様12または態様13において、さらに、前記non-VCL依存タイプは、パラメータセット間予測の依存の有無を含むことを特徴とする。
以上の画像符号化データによれば、「対象レイヤがパラメータセット間予測として参照可能なパラメータセットは、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプがパラメータセット間予測の依存があることを示す直接参照レイヤのパラメータセットであること」へ制限する。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプがパラメータセット間予測の依存があることを示す直接参照レイヤのパラメータセットが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様16に係る画像符号化データは、上記態様9から態様15において、さらに前記non-VCLはパラメータセットを含むことを特徴とする。
以上の画像符号化データによれば、non-VCLとして、パラメータセットを含む画像符号化データである。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記参照レイヤのパラメータセットが破棄され、前記参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様17に係る画像符号化データは、上記態様16において、さらに、前記パラメータセットは、シーケンスパラメータセットを含むことを特徴とする。
以上の画像符号化データによれば、パラメータセットとして、シーケンスパラメータセットを含む画像符号化データである。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記参照レイヤのシーケンスパラメータセットが破棄され、前記参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様18に係る画像符号化データは、上記態様16において、さらに、前記パラメータセットは、ピクチャパラメータセットを含むことを特徴とする。
以上の画像符号化データによれば、パラメータセットとして、ピクチャパラメータセットを含む画像符号化データである。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記参照レイヤのピクチャパラメータセットが破棄され、前記参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
本発明の態様19に係る画像符号化データは、上記態様18において、さらに、前記ピクチャパラメータセットは、前記non-VCL依存レイヤのシーケンスパラメータセットを共有パラメータセットとして参照するか否かを示す共有SPS利用フラグを含み、
前記共有SPS利用フラグが真である場合、前記non-VCL依存レイヤのシーケンスパラメータセットを共有パラメータセットとして参照することを示し、
前記共有SPS利用フラグが偽である場合前記non-VCL依存レイヤのシーケンスパラメータセットを共有パラメータセットとして参照しないことを示すことを特徴とする。
以上の画像符号化データによれば、ピクチャ単位で、SPSに関する共有パラメータセットを利用するか否かを選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するSPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、pps_shared_sps_flag=0とし、対象レイヤのレイヤIDを有するSPSを参照することで、より少ない符号量で、対象レイヤのピクチャの符号化データを生成することができる。従って、上記画像符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、pps_shared_sps_flag=1とし、参照レイヤ(non-VCL依存レイヤ)のレイヤIDを有するSPSを参照することで、対象レイヤのレイヤIDを有するSPSの符号化を省略し、該SPSに関する符号量の低減、及び該SPSの復号/符号化に要する処理量を削減することができる。
本発明の態様20に係る画像符号化データは、上記態様19において、さらに、前記対象レイヤのピクチャを構成するスライスを含み、前記スライスに含まれるスライスヘッダは、さらに、前記non-VCL依存レイヤのピクチャパラメータセットを共有パラメータセットとして参照するか否かを示す共有PPS利用フラグを含み、前記共有PPS利用フラグが真である場合、前記non-VCL依存レイヤのピクチャパラメータセットを共有パラメータセットとして参照することを示し、前記共有PPS利用フラグが偽である場合、前記non-VCL依存レイヤのピクチャパラメータセットを共有パラメータセットとして参照しないことを示すことを特徴とする。
以上の画像符号化データによれば、ピクチャ単位で、PPSに関する共有パラメータセットを利用するか否かを選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するPPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、slice_shared_pps_flag =0とし、対象レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのピクチャの符号化データの符号量の低減、及び対象レイヤのピクチャの符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、slice_shared_pps_flag =1とし、参照レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのレイヤIDを有するPPSの符号化を省略し、該PPSに関する符号量の低減、及び該PPSの復号/符号化に要する処理量を削減することができる。
本発明の態様21に係る画像符号化データは、上記態様17において、さらに、前記シーケンスパラメータセットは、レイヤ識別子nuhLayerIdAを有するレイヤの前記シーケンスパラメータセットを参照するレイヤ識別子nuhLayerIdB(nuhLayerIdB>=nuhLayerIdA)を有するレイヤ毎に、前記レイヤ識別子nuhLayerIdBを有するレイヤと前記レイヤ識別子nuhLayerIdBに対する直接参照レイヤとのレイヤ間画素対応情報を含むことを特徴する。
以上の画像符号化データによれば、前記シーケンスパラメータセットに含まれるレイヤ間位置対応情報には、レイヤ識別子nuhLayerIdB(nuhLayerIdB>=nuhLayerIdA)を有するレイヤに属するシーケンスの復号の際に、該SPS(レイヤ識別子nuhLayerIdAを有するレイヤのSPS)を、共有パラメータセットとして参照するレイヤ(パラメータセット参照レイヤ)の数が含まれる。さらに、該レイヤ間位置対応情報には、パラメータセット参照レイヤ毎に、該パラメータセット参照レイヤのレイヤ識別子を有するレイヤが、依存するレイヤ数個のレイヤ間画素対応情報が含まれる構成である。従って、従来技術において発生した上記課題を解消することができる。すなわち、該SPSのレイヤ識別子より上位のレイヤ識別子を有するレイヤ(上位レイヤ)が、該SPSを共有パラメータセットとして参照する場合には、該上位レイヤと該上位レイヤの参照レイヤ間のレイヤ画素対応位置情報がないという問題を解消する。従って、該上位レイヤがレイヤ間画像予測を正確に実施するために必要なレイヤ間画素対応情報を含むため、従来技術に対して、符号化効率の向上の効果を奏する。また、レイヤ間画像対応情報を含まない(num_scaled_ref_layer_offsets=0)場合に限定されず、上位レイヤが該SPSを共有パラメータセットとして参照することができるため、上位レイヤのパラメータセットに関する符号量を低減、及びその復号/符号化に係る処理量を低減することができる。
本発明の態様22に係る画像符号化装置は、レイヤ識別子を符号化するレイヤ識別子符号化手段と、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグを符号化するレイヤ依存フラグ符号化手段と、non-VCLを符号化するnon-VCL符号化手段を備える画像符号化装置であって、前記画像符号化装置は、ある対象レイヤから参照されるnon-VCLのレイヤ識別子は、前記対象レイヤと同じレイヤ識別子もしくは、前記対象レイヤから、直接参照されるレイヤのレイヤ識別子である、というコンフォーマンス条件を満たす符号化データを生成することを特徴とする。
以上の画像符号化装置によれば、ある対象レイヤが参照可能な参照レイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのnon-VCLである符号化データを生成する。「ある対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するnon-VCLである」ということは、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止することを意味する。
すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する直接参照レイヤのnon-VCLが破棄されることはない。したがって、上記画像符号化装置によって生成された画像符号化データから、ビットストリーム抽出によって生成されたサブビットストリームにおいて、直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。すなわち、図1で説明した従来技術において発生しえたビットストリーム抽出時の課題を解消することができる。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
〔付記事項〕
なお、本発明は以下のようにも表現できる。
上記の課題を解決するために、本発明の態様1に係る画像復号装置は、レイヤ識別子を復号するレイヤ識別子復号手段と、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグを復号するレイヤ依存フラグ復号手段と、non-VCLを復号するnon-VCL復号手段を備える画像復号装置であって、前記画像復号装置は、ある対象レイヤから参照されるnon-VCLのレイヤ識別子は、前記対象レイヤと同じレイヤ識別子もしくは、前記対象レイヤから、直接参照されるレイヤのレイヤ識別子である、というコンフォーマンス条件を満たす画像符号化データを復号することを特徴とする。
以上の画像復号装置によれば、「ある対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するnon-VCLである」ことを満たす画像符号化データを復号する。「ある対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するnon-VCLである」ということは、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止することを意味する。
すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する直接参照レイヤのnon-VCLが破棄されることはない。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様2に係る画像復号装置は、上記態様1において、上記参照されるnon-VCLのレイヤ識別子は、さらに、前記対象レイヤから、間接参照されるレイヤ識別子である、というコンフォーマンス条件を満たす画像符号化データを復号することを特徴とする。
以上の画像復号装置によれば、ある対象レイヤが参照可能な参照レイヤのnon-VCLは、対象レイヤに対する直接参照レイヤ、または間接参照レイヤのnon-VCLである画像符号化データを復号する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、直接参照レイヤまたは間接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤまたは間接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様3に係る画像復号装置は、上記態様1または態様2において、さらに、前記参照レイヤは、前記レイヤ依存フラグによって指定されることを特徴とする画像符号化データを復号することを特徴とする。
以上の画像符号化データによれば、「前記直接参照レイヤあるいは間接参照レイヤは、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグによって指定される参照レイヤであること」へ制限する。すなわち、「対象レイヤが参照可能な参照レイヤのnon-VCLは、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグによって指定される参照レイヤ」へ制限されている。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、レイヤ依存フラグによって指定された直接参照レイヤまたは間接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤまたは間接参照レイヤを参照するレイヤのnon-VCLを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様4に係る画像復号装置は、上記態様1において、さらに、レイヤ依存タイプを復号するレイヤ依存タイプ復号手段を備え、前記レイヤ依存タイプは、前記対象レイヤのnon-VCLと前記参照レイヤのnon-VCL間の依存の有無を示すnon-VCL依存タイプを含むことを特徴とする。
以上の画像復号装置によれば、「前記直接参照レイヤは、前記non-VCL依存タイプがnon-VCL間の依存があることを示す参照レイヤであること」へ制限された画像符号化データを復号する。すなわち、「対象レイヤが参照可能な参照レイヤは、前記対象レイヤと前記直接参照レイヤのnon-VCL間の依存がある直接参照レイヤ」へ制限する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤのnon-VCL間の依存がある直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様5に係る画像復号装置は、上記態様4において、さらに、前記参照レイヤのレイヤ識別子nuhLayerIdAに等しいnuh_layer_idを有するnon-VCLが、nuhLayerIdBに等しいnuh_layer_idを有する対象レイヤで利用されるnon-VCLである場合には、nuhLayerIdAに等しいnuh_layer_idのレイヤは、nuhLayerIdBに等しいnuh_layer_idを有するレイヤの直接参照レイヤである、というコンフォーマンス条件を満たす画像復号データを復号することを特徴とする。
以上の画像復号装置によれば、「前記参照レイヤのレイヤ識別子nuhLayerIdAに等しいnuh_layer_idを有するnon-VCLが、nuhLayerIdBに等しいnuh_layer_idを有する対象レイヤで利用されるnon-VCLである場合には、nuhLayerIdAに等しいnuh_layer_idのレイヤは、nuhLayerIdBに等しいnuh_layer_idを有するレイヤの直接参照レイヤであること」へ制限された画像符号化データを復号する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、nuhLayerIdAに等しいnuh_layer_idを有する直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するnuhLayerIdBと等しいnuh_layer_idを有するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様6に係る画像復号装置は、上記態様4または態様5において、さらに、前記non-VCL依存タイプは、共有パラメータセットの依存の有無を含む画像符号化データを復号することを特徴とする。
以上の画像復号装置によれば、「対象レイヤが共有パラメータセットとして参照可能なパラメータセットは、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプが共有パラメータセットの依存があることを示す直接参照レイヤのパラメータセットであること」へ制限された画像符号化データを復号する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプが共有パラメータセットの依存があることを示す直接参照レイヤのパラメータセットが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様7に係る画像復号装置は、上記態様4または態様5において、さらに、前記non-VCL依存タイプは、パラメータセット間予測の依存の有無を含む画像符号化データを復号することを特徴とする。
以上の画像復号装置によれば、「対象レイヤがパラメータセット間予測として参照可能なパラメータセットは、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプがパラメータセット間予測の依存があることを示す直接参照レイヤのパラメータセットであること」へ制限された画像符号化データを復号する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプがパラメータセット間予測の依存があることを示す直接参照レイヤのパラメータセットが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様8に係る画像復号装置は、上記態様1から態様7において、さらに、前記non-VCLはパラメータセットを含む画像符号化データを復号することを特徴とする。
以上の画像復号装置によれば、non-VCLとして、パラメータセットを復号する。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記参照レイヤのパラメータセットが破棄され、前記参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様9に係る画像符号化データは、ある対象レイヤから参照される参照レイヤのnon-VCLのレイヤ識別子は、前記対象レイヤと同じレイヤ識別子もしくは、前記対象レイヤの直接参照レイヤのレイヤ識別子である、というコンフォーマンス条件を満たす画像符号化データであることを特徴とする。
以上の画像符号化データによれば、「ある対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのnon-VCLである」ことへ制限する。「ある対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するnon-VCLであると」ということは、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止することを意味する。
すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する直接参照レイヤのnon-VCLが破棄されることはない。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様10に係る画像符号化データは、上記態様9において、さらに、前記対象レイヤから参照される参照レイヤのnon-VCLのレイヤ識別子は、前記対象レイヤの間接参照レイヤのレイヤ識別子である、というコンフォーマンス条件を満たす画像符号化データであることを特徴とする。
以上の画像符号化データによれば、「ある対象レイヤが参照可能な参照レイヤのnon-VCLは、対象レイヤに対する直接参照レイヤ、または間接参照レイヤのnon-VCLである」ことへ制限する。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、直接参照レイヤまたは間接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤまたは間接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様11に係る画像符号化データは、上記態様9また態様10において、さらに、前記対象レイヤと前記参照レイヤの参照関係を示すレイヤ依存フラグを含み、前記参照レイヤは、前記レイヤ依存フラグによって指定されることを特徴とする。
以上の画像符号化データによれば、「前記直接参照レイヤあるいは間接参照レイヤは、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグによって指定される参照レイヤであること」へ制限された画像符号化データを復号する。すなわち、「対象レイヤが参照可能な参照レイヤのnon-VCLは、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグによって指定される参照レイヤ」へ制限されている。したがって、ビットストリーム抽出によって生成されたサブビットストリームにおいて、レイヤ依存フラグによって指定された直接参照レイヤまたは間接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤまたは間接参照レイヤを参照するレイヤのnon-VCLを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様12に係る画像符号化データは、上記態様9において、さらに前記対象レイヤと前記参照レイヤの参照関係の種類を示すレイヤ依存タイプを含み、前記レイヤ依存タイプは、前記対象レイヤのnon-VCLと前記参照レイヤのnon-VCL間の依non-VCL存タイプを含むことを特徴とする。
以上の画像符号化データによれば、「前記直接参照レイヤは、前記non-VCL依存タイプがnon-VCL間の依存があることを示す参照レイヤであること」へ制限する。すなわち、「対象レイヤが参照可能な参照レイヤは、前記対象レイヤと前記直接参照レイヤのnon-VCL間の依存がある直接参照レイヤ」へ制限する。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤのnon-VCL間の依存がある直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様13に係る画像符号化データは、上記態様12において、さらに、前記参照レイヤのレイヤ識別子nuhLayerIdAに等しいnuh_layer_idを有するnon-VCLが、nuhLayerIdBに等しいnuh_layer_idを有する対象レイヤで利用されるnon-VCLである場合には、nuhLayerIdAに等しいnuh_layer_idのレイヤは、nuhLayerIdBに等しいnuh_layer_idを有するレイヤの直接参照レイヤであることを特徴とする。
以上の画像符号化データによれば、「前記参照レイヤのレイヤ識別子nuhLayerIdAに等しいnuh_layer_idを有するnon-VCLが、nuhLayerIdBに等しいnuh_layer_idを有する対象レイヤで利用されるnon-VCLである場合には、nuhLayerIdAに等しいnuh_layer_idのレイヤは、nuhLayerIdBに等しいnuh_layer_idを有するレイヤの直接参照レイヤであること」へ制限する。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、nuhLayerIdAに等しいnuh_layer_idを有する直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するnuhLayerIdBと等しいnuh_layer_idを有するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様14に係る画像符号化データは、上記態様9また態様10において、さらに前記non-VCL依存タイプは、共有パラメータセットの依存の有無を含むことを特徴とする。
以上の画像符号化データによれば、「対象レイヤが共有パラメータセットとして参照可能なパラメータセットは、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプが共有パラメータセットの依存があることを示す直接参照レイヤのパラメータセットであること」へ制限する。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプが共有パラメータセットの依存があることを示す直接参照レイヤのパラメータセットが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様15に係る画像符号化データは、上記態様12または態様13において、さらに、前記non-VCL依存タイプは、パラメータセット間予測の依存の有無を含むことを特徴とする。
以上の画像符号化データによれば、「対象レイヤがパラメータセット間予測として参照可能なパラメータセットは、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプがパラメータセット間予測の依存があることを示す直接参照レイヤのパラメータセットであること」へ制限する。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記対象レイヤと前記直接参照レイヤの前記non-VCL依存タイプがパラメータセット間予測の依存があることを示す直接参照レイヤのパラメータセットが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様16に係る画像符号化データは、上記態様9から態様15において、さらに前記non-VCLはパラメータセットを含むことを特徴とする。
以上の画像符号化データによれば、non-VCLとして、パラメータセットを含む画像符号化データである。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記参照レイヤのパラメータセットが破棄され、前記参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様17に係る画像符号化データは、上記態様16において、さらに、前記パラメータセットは、シーケンスパラメータセットを含むことを特徴とする。
以上の画像符号化データによれば、パラメータセットとして、シーケンスパラメータセットを含む画像符号化データである。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記参照レイヤのシーケンスパラメータセットが破棄され、前記参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様18に係る画像符号化データは、上記態様16において、さらに、前記パラメータセットは、ピクチャパラメータセットを含むことを特徴とする。
以上の画像符号化データによれば、パラメータセットとして、ピクチャパラメータセットを含む画像符号化データである。したがって、上記画像符号化データより、ビットストリーム抽出によって生成されたサブビットストリームにおいて、前記参照レイヤのピクチャパラメータセットが破棄され、前記参照レイヤを参照するレイヤが復号できないという問題を解消することができる。
上記の課題を解決するために、本発明の態様19に係る画像符号化データは、上記態様18において、さらに、前記ピクチャパラメータセットは、前記non-VCL依存レイヤのシーケンスパラメータセットを共有パラメータセットとして参照するか否かを示す共有SPS利用フラグを含み、
前記共有SPS利用フラグが真である場合、前記non-VCL依存レイヤのシーケンスパラメータセットを共有パラメータセットとして参照することを示し、
前記共有SPS利用フラグが偽である場合前記non-VCL依存レイヤのシーケンスパラメータセットを共有パラメータセットとして参照しないことを示すことを特徴とする。
以上の画像符号化データによれば、ピクチャ単位で、SPSに関する共有パラメータセットを利用するか否かを選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するSPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、pps_shared_sps_flag=0とし、対象レイヤのレイヤIDを有するSPSを参照することで、より少ない符号量で、対象レイヤのピクチャの符号化データを生成することができる。従って、上記画像符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、pps_shared_sps_flag=1とし、参照レイヤ(non-VCL依存レイヤ)のレイヤIDを有するSPSを参照することで、対象レイヤのレイヤIDを有するSPSの符号化を省略し、該SPSに関する符号量の低減、及び該SPSの復号/符号化に要する処理量を削減することができる。
上記の課題を解決するために、本発明の態様20に係る画像符号化データは、上記態様19において、さらに、前記対象レイヤのピクチャを構成するスライスを含み、前記スライスに含まれるスライスヘッダは、さらに、前記non-VCL依存レイヤのピクチャパラメータセットを共有パラメータセットとして参照するか否かを示す共有PPS利用フラグを含み、前記共有PPS利用フラグが真である場合、前記non-VCL依存レイヤのピクチャパラメータセットを共有パラメータセットとして参照することを示し、前記共有PPS利用フラグが偽である場合、前記non-VCL依存レイヤのピクチャパラメータセットを共有パラメータセットとして参照しないことを示すことを特徴とする。
以上の画像符号化データによれば、ピクチャ単位で、PPSに関する共有パラメータセットを利用するか否かを選択することができる。例えば、レイヤ間で、ピクチャの符号化に利用するPPSの最適なパラメータが参照レイヤのパラメータと異なる場合には、対象レイヤにおいて、slice_shared_pps_flag =0とし、対象レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのピクチャの符号化データの符号量の低減、及び対象レイヤのピクチャの符号化データの復号/符号化に係る処理量を削減することができる。また、対象レイヤにおいて、slice_shared_pps_flag =1とし、参照レイヤのレイヤIDを有するPPSを参照することで、対象レイヤのレイヤIDを有するPPSの符号化を省略し、該PPSに関する符号量の低減、及び該PPSの復号/符号化に要する処理量を削減することができる。
上記の課題を解決するために、本発明の態様21に係る画像符号化データは、上記態様17において、さらに、前記シーケンスパラメータセットは、レイヤ識別子nuhLayerIdAを有するレイヤの前記シーケンスパラメータセットを参照するレイヤ識別子nuhLayerIdB(nuhLayerIdB>=nuhLayerIdA)を有するレイヤ毎に、前記レイヤ識別子nuhLayerIdBを有するレイヤと前記レイヤ識別子nuhLayerIdBに対する直接参照レイヤとのレイヤ間画素対応情報を含むことを特徴する。
以上の画像符号化データによれば、前記シーケンスパラメータセットに含まれるレイヤ間位置対応情報には、レイヤ識別子nuhLayerIdB(nuhLayerIdB>=nuhLayerIdA)を有するレイヤに属するシーケンスの復号の際に、該SPS(レイヤ識別子nuhLayerIdAを有するレイヤのSPS)を、共有パラメータセットとして参照するレイヤ(パラメータセット参照レイヤ)の数が含まれる。さらに、該レイヤ間位置対応情報には、パラメータセット参照レイヤ毎に、該パラメータセット参照レイヤのレイヤ識別子を有するレイヤが、依存するレイヤ数個のレイヤ間画素対応情報が含まれる構成である。従って、従来技術において発生した上記課題を解消することができる。すなわち、該SPSのレイヤ識別子より上位のレイヤ識別子を有するレイヤ(上位レイヤ)が、該SPSを共有パラメータセットとして参照する場合には、該上位レイヤと該上位レイヤの参照レイヤ間のレイヤ画素対応位置情報がないという問題を解消する。従って、該上位レイヤがレイヤ間画像予測を正確に実施するために必要なレイヤ間画素対応情報を含むため、従来技術に対して、符号化効率の向上の効果を奏する。また、レイヤ間画像対応情報を含まない(num_scaled_ref_layer_offsets=0)場合に限定されず、上位レイヤが該SPSを共有パラメータセットとして参照することができるため、上位レイヤのパラメータセットに関する符号量を低減、及びその復号/符号化に係る処理量を低減することができる。
上記の課題を解決するために、本発明の態様22に係る画像符号化装置は、レイヤ識別子を符号化するレイヤ識別子符号化手段と、対象レイヤと参照レイヤの参照関係を示すレイヤ依存フラグを符号化するレイヤ依存フラグ符号化手段と、non-VCLを符号化するnon-VCL符号化手段を備える画像符号化装置であって、前記画像符号化装置は、ある対象レイヤから参照されるnon-VCLのレイヤ識別子は、前記対象レイヤと同じレイヤ識別子もしくは、前記対象レイヤから、直接参照されるレイヤのレイヤ識別子である、というコンフォーマンス条件を満たす符号化データを生成することを特徴とする。
以上の画像符号化装置によれば、ある対象レイヤが参照可能な参照レイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのnon-VCLである符号化データを生成する。「ある対象レイヤが参照可能なレイヤのnon-VCLは、対象レイヤに対する直接参照レイヤのレイヤ識別子を有するnon-VCLである」ということは、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止することを意味する。
すなわち、レイヤセットAからサブセットであるレイヤセットBをビットストリーム抽出するときに、「レイヤセットAのサブセットであるレイヤセットB内のレイヤが、“レイヤセットAに含まれるが、レイヤセットBに含まれない”レイヤのnon-VCLを参照すること」を禁止できるため、レイヤセットBに含まれるレイヤが参照する直接参照レイヤのnon-VCLが破棄されることはない。したがって、上記画像符号化装置によって生成された画像符号化データから、ビットストリーム抽出によって生成されたサブビットストリームにおいて、直接参照レイヤのnon-VCLが破棄され、前記直接参照レイヤを参照するレイヤが復号できないという問題を解消することができる。すなわち、図1で説明した従来技術において発生しえたビットストリーム抽出時の課題を解消することができる。