図1〜30に基づいて、本発明の一実施の形態に係る階層動画像復号装置1および階層動画像符号化装置2について説明すれば以下の通りである。
〔概要〕
〔階層符号化の概要〕
本実施の形態に係る階層動画像復号装置(画像復号装置)1は、階層動画像符号化装置(画像符号化装置)2によってスケーラブル映像符号化(SVC;Scalable Video Coding)された符号化データを復号する。スケーラブル映像符号化とは、動画像を低品質のものから高品質のものにかけて階層的に符号化する符号化方式のことである。スケーラブル映像符号化は、例えば、H.264/AVC Annex G SVCにおいて標準化されている。なお、ここでいう動画像の品質とは、主観的および客観的な動画像の見栄えに影響する要素のことを広く意味する。動画像の品質には、例えば、“解像度”、“フレームレート”“画質”、および“画素の表現精度”が含まれる。よって、以下、動画像の品質が異なるといえば、例示的には、“解像度”等が異なることを指すが、これに限られない。例えば、異なる量子化ステップで量子化された動画像の場合(すなわち、異なる符号化雑音により符号化された動画像の場合)も互いに動画像の品質が異なるといえる。
また、SVCは、階層化される情報の種類の観点から、(1)空間スケーラビリティ、(2)時間スケーラビリティ、および(3)SNR(Signal to Noise Ratio)スケーラビリティに分類されることもある。空間スケーラビリティとは、解像度や画像のサイズにおいて階層化する技術である。時間スケーラビリティとは、フレーム・レート(単位時間のフレーム数)において階層化する技術である。また、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、1B、および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”だけを用いて復号できるように階層符号化データを構成することも可能である。
なお、SNRスケーラビリティを実現する場合、入力画像PIN#A、PIN#B、およびPIN#Cとして同一の原画を用いた上で、復号画像POUT#A、POUT#B、およびPOUT#Cが異なる画質となるよう階層符号化データを生成することもできる。その場合、下位階層の階層動画像符号化装置が、上位階層の階層動画像符号化装置に較べて、より大きい量子化幅を用いて予測残差を量子化することで階層符号化データを生成する。
本書では、説明の便宜上、次のとおり用語を定義する。以下の用語は、特に断りがなければ、下記の技術的事項のことを表わすのに用いる。
上位レイヤ : ある階層よりも上位に位置する階層のことを、上位レイヤと称する。例えば、図2において、下位階層L3の上位レイヤは、中位階層L2および上位階層L1である。また、上位レイヤの復号画像とは、より品質の高い(例えば、解像度が高い、フレームレートが高い、画質が高い等)復号画像のことをいう。
下位レイヤ : ある階層よりも下位に位置する階層のことを、下位レイヤと称する。例えば、図2において、上位階層L1の下位レイヤは、中位階層L2および下位階層L3である。また、下位レイヤの復号画像とは、より品質の低い復号画像のことをいう。
対象レイヤ : 復号または符号化の対象となっている階層のことをいう。
参照レイヤ(reference layer) : 対象レイヤに対応する復号画像を復号するのに参照される特定の下位レイヤのことを参照レイヤと称する。
図2(a)および(b)に示した例では、上位階層L1の参照レイヤは、中位階層L2および下位階層L3である。しかしながら、これに限られず、特定の上記レイヤの復号において、下位レイヤのすべてを参照しなくてもよいように階層符号化データを構成することもできる。例えば、上位階層L1の参照レイヤが、中位階層L2および下位階層L3のいずれか一方となるように階層符号化データを構成することも可能である。
基本レイヤ(base layer) : 最下層に位置する階層のことを基本レイヤと称する。基本レイヤの復号画像は、符号化データから復号され得るもっとも低い品質の復号画像であり、基本(base)復号画像と呼称される。別の言い方をすれば、基本復号画像は、最下層の階層に対応する復号画像のことである。基本復号画像の復号に必要な階層符号化データの部分符号化データは基本符号化データと呼称される。例えば、上位階層L1の階層符号化データDATA#Aに含まれる基本情報“C”が基本符号化データである。
拡張レイヤ : 基本レイヤの上位レイヤは、拡張レイヤと称される。
レイヤ識別子 : レイヤ識別子は、階層を識別するためのものであり、階層と1対1に対応する。階層符号化データには特定の階層の復号画像の復号に必要な部分符号化データを選択するために用いられる階層識別子が含まれる。特定のレイヤに対応するレイヤ識別子に関連付けられた階層符号化データの部分集合は、レイヤ表現とも呼称される。
一般に、特定の階層の復号画像の復号には、当該階層のレイヤ表現、および/または、当該階層の下位レイヤに対応するレイヤ表現が用いられる。すなわち、対象レイヤの復号画像の復号においては、対象レイヤのレイヤ表現、および/または、対象レイヤの下位レイヤに含まれる1つ以上階層のレイヤ表現が用いられる。
レイヤ間予測 : レイヤ間予測とは、対象レイヤのレイヤ表現と異なる階層(参照レイヤ)のレイヤ表現に含まれるシンタックス要素値、シンタックス要素値より導出される値、および復号画像に基づいて、対象レイヤのシンタックス要素値や対象レイヤの復号に用いられる符号化パラメータ等を予測することである。動き予測に関する情報を(同時刻の)参照レイヤの情報から予測するレイヤ間予測のことを動き情報予測と称することもある。また、(同時刻の)下位レイヤの復号画像をアップサンプリングした画像から予測するレイヤ間予測のことをテクスチャ予測と称することもある。なお、レイヤ間予測に用いられる階層は、例示的には、対象レイヤの下位レイヤである。また、参照レイヤを用いず対象レイヤ内で予測を行うことをレイヤ内予測と称することもある。
なお、以上の用語は、飽くまで説明の便宜上のものであり、上記の技術的事項を別の用語にて表現してもかまわない。
〔階層符号化データのデータ構造について〕
以下、各階層の符号化データを生成する符号化方式として、HEVCおよびその拡張方式を用いる場合について例示する。しかしながら、これに限られず、各階層の符号化データを、MPEG−2や、H.264/AVCなどの符号化方式により生成してもよい。
また、下位レイヤと上位レイヤとが異なる符号化方式によって符号化されていてもよい。また、階層の符号化データは、互いに異なる伝送路を介して階層動画像復号装置1’に供給されるものであってもよいし、同一の伝送路を介して階層動画像復号装置1’に供給されるものであってもよい。
例えば、超高精細映像(動画像、4K映像データ)を基本レイヤおよび1つの拡張レイヤによりスケーラブル符号化して伝送する場合、基本レイヤは、4K映像データをダウンスケーリングし、インタレース化した映像データをMPEG−2またはH.264/AVCにより符号化してテレビ放送網で伝送し、拡張レイヤは、4K映像(プログレッシブ)をHEVCにより符号化して、インターネットで伝送してもよい。
(基本レイヤ)
図3は、基本レイヤにおいて採用することができる符号化データ(図2の例でいえば、階層符号化データDATA#C)のデータ構造について例示する図である。階層符号化データDATA#Cは、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。
階層符号化データDATA#Cにおけるデータの階層構造を図3に示す。図3の(a)〜(e)は、それぞれ、シーケンスSEQを規定するシーケンスレイヤ、ピクチャPICTを規定するピクチャレイヤ、スライスSを規定するスライスレイヤ、ツリーブロック(Tree block)TBLKを規定するツリーブロックレイヤ、ツリーブロックTBLKに含まれる符号化単位(Coding Unit;CU)を規定するCUレイヤを示す図である。
(シーケンスレイヤ)
シーケンスレイヤでは、処理対象のシーケンスSEQ(以下、対象シーケンスとも称する)を復号するために階層動画像復号装置1が参照するデータの集合が規定されている。シーケンスSEQは、図3の(a)に示すように、ビデオパラメータセット(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、適応パラメータセットAPS(Adaptation Parameter Set)、ピクチャPICT#N1〜PICT#NNP(NPはシーケンスSEQに含まれるピクチャの総数)、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。ここで#の後に示される値NはレイヤIDを示す。図2では、#0と#1すなわちレイヤ0とレイヤ1の符号化データが存在する例を示すが、レイヤの種類およびレイヤの数はこれによらない。
ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複数の動画像に共通する符号化パラメータの集合および動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために階層動画像復号装置1が参照する符号化パラメータの集合が規定されている。
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために階層動画像復号装置1が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
適応パラメータセットAPSは、対象シーケンス内の各スライスを復号するために階層動画像復号装置1が参照する符号化パラメータの集合が規定されている。APSは複数存在してもよい。その場合、対象シーケンス内の各スライスから複数のAPSの何れかを選択する。
(ピクチャレイヤ)
ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために階層動画像復号装置1が参照するデータの集合が規定されている。ピクチャPICTは、図3の(b)に示すように、ピクチャヘッダPH、及び、スライスS1〜SNSを含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
なお、以下、スライスS1〜SNSのそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する階層符号化データDATA#Cに含まれるデータであって、添え字を付している他のデータについても同様である。
ピクチャヘッダPHには、対象ピクチャの復号方法を決定するために階層動画像復号装置1が参照する符号化パラメータ群が含まれている。なお、符号化パラメータ群は、必ずしもピクチャヘッダPH内に直接含んでいる必要はなく、例えばピクチャパラメータセットPPSへの参照を含むことで、間接的に含めても良い。
(スライスレイヤ)
スライスレイヤでは、処理対象のスライスS(対象スライスとも称する)を復号するために階層動画像復号装置1が参照するデータの集合が規定されている。スライスSは、図3の(c)に示すように、スライスヘッダSH、及び、ツリーブロックTBLK1〜TBLKNC(NCはスライスSに含まれるツリーブロックの総数)のシーケンスを含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために階層動画像復号装置1が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、又は、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、又は、イントラ予測を用いるBスライスなどが挙げられる。
なお、スライスヘッダSHには、上記シーケンスレイヤに含まれる、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)、適応パラメータセットAPSへの参照(aps_id)を含んでいても良い。
(ツリーブロックレイヤ)
ツリーブロックレイヤでは、処理対象のツリーブロックTBLK(以下、対象ツリーブロックとも称する)を復号するために階層動画像復号装置1が参照するデータの集合が規定されている。なお、ツリーブロックのことを符号化ツリーブロック(CTB:Coding Tree block)、または、最大符号化単位(LCU:Largest Cording Unit)と呼ぶこともある。
ツリーブロックTBLKは、ツリーブロックヘッダTBLKHと、符号化単位情報CU1〜CUNL(NLはツリーブロックTBLKに含まれる符号化単位情報の総数)とを含む。ここで、まず、ツリーブロックTBLKと、符号化単位情報CUとの関係について説明すると次のとおりである。
ツリーブロックTBLKは、イントラ予測またはインター予測、および、変換の各処理ためのブロックサイズを特定するためのパーティションに分割される。
ツリーブロックTBLKの上記パーティションは、再帰的な4分木分割により分割されている。この再帰的な4分木分割により得られる木構造のことを以下、符号化ツリー(coding tree)と称する。
以下、符号化ツリーの末端のノードであるリーフ(leaf)に対応するパーティションを、符号化ノード(coding node)として参照する。また、符号化ノードは、符号化処理の基本的な単位となるため、以下、符号化ノードのことを、符号化単位(CU)とも称する。なお、符号化ノードは、符号化ブロック(CB: Coding Block)と呼ぶこともある。
つまり、符号化単位情報(以下、CU情報と称する)CU1〜CUNLは、ツリーブロックTBLKを再帰的に4分木分割して得られる各符号化ノード(符号化単位)に対応する情報である。
また、符号化ツリーのルート(root)は、ツリーブロックTBLKに対応付けられる。換言すれば、ツリーブロックTBLKは、複数の符号化ノードを再帰的に含む4分木分割の木構造の最上位ノードに対応付けられる。
なお、各符号化ノードのサイズは、当該符号化ノードが直接に属する符号化ノード(すなわち、当該符号化ノードの1階層上位のノードのパーティション)のサイズの縦横とも半分である。
また、ツリーブロックTBLKのサイズ、および、各符号化ノードのとり得るサイズは、階層符号化データDATA#CのシーケンスパラメータセットSPSに含まれる、最小符号化ノードのサイズ指定情報、および最大符号化ノードと最小符号化ノードの階層深度の差分に依存する。例えば、最小符号化ノードのサイズが8×8画素であって、最大符号化ノードと最小符号化ノードの階層深度の差分が3である場合、ツリーブロックTBLKのサイズが64×64画素であって、符号化ノードのサイズは、4種類のサイズ、すなわち、64×64画素、32×32画素、16×16画素、および、8×8画素の何れかをとり得る。
(ツリーブロックヘッダ)
ツリーブロックヘッダTBLKHには、対象ツリーブロックの復号方法を決定するために階層動画像復号装置1が参照する符号化パラメータが含まれる。具体的には、図3の(d)に示すように、対象ツリーブロックの各CUへの分割パターンを指定するツリーブロック分割情報SP_TBLK、および、量子化ステップの大きさを指定する量子化パラメータ差分Δqp(qp_delta)が含まれる。
ツリーブロック分割情報SP_TBLKは、ツリーブロックを分割するための符号化ツリーを表す情報であり、具体的には、対象ツリーブロックに含まれる各CUの形状、サイズ、および、対象ツリーブロック内での位置を指定する情報である。
なお、ツリーブロック分割情報SP_TBLKは、CUの形状やサイズを明示的に含んでいなくてもよい。例えばツリーブロック分割情報SP_TBLKは、対象ツリーブロック全体またはツリーブロックの部分領域を四分割するか否かを示すフラグの集合であってもよい。その場合、ツリーブロックの形状やサイズを併用することで各CUの形状やサイズを特定できる。
また、量子化パラメータ差分Δqpは、対象ツリーブロックにおける量子化パラメータqpと、当該対象ツリーブロックの直前に符号化されたツリーブロックにおける量子化パラメータqp’との差分qp−qp’である。
(CUレイヤ)
CUレイヤでは、処理対象のCU(以下、対象CUとも称する)を復号するために階層動画像復号装置1’が参照するデータの集合が規定されている。
ここで、CU情報CUに含まれるデータの具体的な内容の説明をする前に、CUに含まれるデータの木構造について説明する。符号化ノードは、予測ツリー(prediction tree;PT)および変換ツリー(transform tree;TT)のルートのノードとなる。予測ツリーおよび変換ツリーについて説明すると次のとおりである。
予測ツリーにおいては、符号化ノードが1または複数の予測ブロックに分割され、各予測ブロックの位置とサイズとが規定される。別の表現でいえば、予測ブロックは、符号化ノードを構成する1または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1または複数の予測ブロックを含む。
予測処理は、この予測ブロックごとに行われる。以下、予測の単位である予測ブロックのことを、予測単位(prediction unit;PU)とも称する。
予測ツリーにおける分割(以下、PU分割と略称する)の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。
イントラ予測の場合、分割方法は、2N×2N(符号化ノードと同一サイズ)と、N×Nとがある。
また、インター予測の場合、分割方法は、2N×2N(符号化ノードと同一サイズ)、2N×N、2N×nU、2N×nD、N×2N、nL×2N、nR×2N、および、N×Nなどがある。PU分割の種類については、後に図面を用いて説明する。
また、変換ツリーにおいては、符号化ノードが1または複数の変換ブロックに分割され、各変換ブロックの位置とサイズとが規定される。別の表現でいえば、変換ブロックは、符号化ノードを構成する1または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1または複数の変換ブロックを含む。
変換ツリーにおける分割には、符号化ノードと同一のサイズの領域を変換ブロックとして割り付けるものと、上述したツリーブロックの分割と同様、再帰的な4分木分割によるものがある。
変換処理は、この変換ブロックごとに行われる。以下、変換の単位である変換ブロックのことを、変換単位(transform unit;TU)とも称する。
(CU情報のデータ構造)
続いて、図3(e)を参照しながらCU情報CUに含まれるデータの具体的な内容について説明する。図3(e)に示すように、CU情報CUは、具体的には、スキップフラグSKIP、予測ツリー情報(以下、PT情報と略称する)PTI、および、変換ツリー情報(以下、TT情報と略称する)TTIを含む。
スキップフラグSKIPは、対象のPUについて、スキップモードが適用されているか否かを示すフラグであり、スキップフラグSKIPの値が1の場合、すなわち、対象CUにスキップモードが適用されている場合、そのCU情報CUにおけるPT情報PTIの一部、および、TT情報TTIは省略される。なお、スキップフラグSKIPは、Iスライスでは省略される。
[PT情報]
PT情報PTIは、CUに含まれる予測ツリー(以下、PTと略称する)に関する情報である。言い換えれば、PT情報PTIは、PTに含まれる1または複数のPUそれぞれに関する情報の集合であり、階層動画像復号装置1’により予測画像を生成する際に参照される。PT情報PTIは、図3(e)に示すように、予測タイプ情報PType、および、予測情報PInfoを含んでいる。
予測タイプ情報PTypeは、対象PUについての予測画像生成方法として、イントラ予測を用いるのか、または、インター予測を用いるのかを指定する情報である。
予測情報PInfoは、予測タイプ情報PTypeが何れの予測方法を指定するのかに応じて、イントラ予測情報PP_Intra、または、インター予測情報PP_Interを含む。以下では、イントラ予測が適用されるPUをイントラPUとも呼称し、インター予測が適用されるPUをインターPUとも呼称する。
インター予測情報PP_Interは、階層動画像復号装置1が、インター予測によってインター予測画像を生成する際に参照される符号化パラメータを含む。より具体的には、インター予測情報PP_Interは、対象CUの各インターPUへの分割パターンを指定するインターPU分割情報、および、各インターPUについてのインター予測パラメータを含む。
イントラ予測情報PP_Intraは、階層動画像復号装置1が、イントラ予測によってイントラ予測画像を生成する際に参照される符号化パラメータを含む。より具体的には、イントラ予測情報PP_Intraには、対象CUの各イントラPUへの分割パターンを指定するイントラPU分割情報、および、各イントラPUについてのイントラ予測パラメータが含まれる。イントラ予測パラメータは、各イントラPUについてのイントラ予測方法(予測モード)を指定するためのパラメータである。
また、PU分割情報には、対象PUの形状、サイズ、および、位置を指定する情報が含まれていてもよい。PU分割情報の詳細については後述する。
[TT情報]
TT情報TTIは、CUに含まれる変換ツリー(以下、TTと略称する)に関する情報である。言い換えれば、TT情報TTIは、TTに含まれる1または複数のTUそれぞれに関する情報の集合であり、階層動画像復号装置1により残差データを復号する際に参照される。なお、以下、TUのことをブロックと称することもある。
TT情報TTIは、図3(e)に示すように、対象CUの各変換ブロックへの分割パターンを指定するTT分割情報SP_TT、および、量子化予測残差QD1〜QDNT(NTは、対象CUに含まれるブロックの総数)を含んでいる。
TT分割情報SP_TTは、具体的には、対象CUに含まれる各TUの形状、サイズ、および、対象CU内での位置を決定するための情報である。例えば、TT分割情報SP_TTは、対象となるノードの分割を行うのか否かを示す情報(split_transform_unit_flag)と、その分割の深度を示す情報(trafoDepth)とから実現することができる。
また、例えば、CUのサイズが、64×64の場合、分割により得られる各TUは、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)。
(予測パラメータ)
インター予測およびイントラ予測における予測パラメータの詳細について説明する。上述のとおり、予測情報PInfoには、インター予測パラメータまたはイントラ予測パラメータが含まれる。
インター予測パラメータとしては、例えば、マージフラグ(merge_flag)、マージインデックス(merge_idx)、推定動きベクトルインデックス(mvp_idx)、参照画像インデックス(ref_idx)、インター予測識別子(inter_pred_idc)、および動きベクトル残差(mvd)が挙げられる。なお、マージフラグ(merge_flag)が1の場合、マージモードとも呼ぶ。
一方、イントラ予測パラメータとしては、例えば、推定予測モードフラグ、推定予測モードインデックス、および、残余予測モードインデックスが挙げられる。
(PU分割情報)
PU分割情報によって指定されるPU分割タイプには、対象CUのサイズを2N×2N画素とすると、次の合計8種類のパターンがある。すなわち、2N×2N画素、2N×N画素、N×2N画素、およびN×N画素の4つの対称的分割(symmetric splittings)、並びに、2N×nU画素、2N×nD画素、nL×2N画素、およびnR×2N画素の4つの非対称的分割(asymmetric splittings)である。なお、N=2m(mは1以上の任意の整数)を意味している。以下、対象CUを分割して得られる領域のことをパーティションとも称する。
図4(a)〜(h)に、それぞれの分割タイプについて、CUにおけるPU分割の境界の位置を具体的に図示している。
図4(a)は、CUの分割を行わない2N×2NのPU分割タイプを示している。また、図4(b)、(c)、および(d)は、それぞれ、PU分割タイプが、2N×N、2N×nU、および、2N×nDである場合のパーティションの形状について示している。また、図4(e)、(f)、および(g)は、それぞれ、PU分割タイプが、N×2N、nL×2N、および、nR×2Nである場合のパーティションの形状について示している。また、図4(h)は、PU分割タイプが、N×Nである場合のパーティションの形状を示している。
図4(a)および(h)のPU分割タイプのことを、そのパーティションの形状に基づいて、正方形分割とも称する。また、図4(b)〜(g)のPU分割タイプのことは、非正方形分割とも称する。
また、図4(a)〜(h)において、各領域に付した番号は、領域の識別番号を示しており、この識別番号順に、領域に対して処理が行われる。すなわち、当該識別番号は、領域のスキャン順を表している。
[インター予測の場合の分割タイプ]
インターPUでは、上記8種類の分割タイプのうち、N×N(図4(h))以外の7種類が定義されている。なお、上記6つの非対称的分割は、AMP(Asymmetric Motion Partition)と呼ばれることもある。
また、Nの具体的な値は、当該PUが属するCUのサイズによって規定され、nU、nD、nL、および、nRの具体的な値は、Nの値に応じて定められる。例えば、128×128画素のインターCUは、128×128画素、128×64画素、64×128画素、64×64画素、128×32画素、128×96画素、32×128画素、および、96×128画素のインターPUへ分割することが可能である。
[イントラ予測の場合の分割タイプ]
イントラPUでは、次の2種類の分割パターンが定義されている。対象CUを分割しない、すなわち対象CU自身が1つのPUとして取り扱われる分割パターン2N×2Nと、対象CUを、4つのPUへと対称的に分割するパターンN×Nと、である。
したがって、イントラPUでは、図4に示した例でいえば、(a)および(h)の分割パターンを取ることができる。
例えば、128×128画素のイントラCUは、128×128画素、および、64×64画素のイントラPUへ分割することが可能である。
(拡張レイヤ)
拡張レイヤの符号化データについても、例えば、図3に示すデータ構造とほぼ同様のデータ構造を採用することができる。ただし、拡張レイヤの符号化データでは、以下のとおり、付加的な情報を追加したり、パラメータを省略したりすることができる。
VPS、SPSには階層符号化を示す情報が符号化されていてもよい。
また、スライスレイヤでは、空間スケーラビリティ、時間スケーラビリティ、および、SNRスケーラビリティの階層の識別情報(それぞれ、dependency_id、temporal_id、および、quality_id)が符号化されていてもよい。
また、スライスヘッダSHには、階層動画像復号装置の備える残差予測部において参照される残差予測有効フラグ(res_pred_enable_flag)が含まれている。残差予測有効フラグは、値が0の場合、残差予測は常に実施されないことを表わし、値が1の場合は、所定単位毎に、残差予測を実施するか否かを示す残差予測フラグ(res_pred_flag)を符号化/復号することを表わす。なお、上記残差予測有効フラグは、スライスヘッダSHに限定されず、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、適応パラメータセット(APS)などでも符号化/復号されうる。
残差予測フラグ(res_pred_flag)は、値が0の場合、所定単位に含まれる予測単位(PU)毎に、残差予測を実施しないことを表わし、値が1の場合には、所定単位に含まれる予測単位毎に、残差予測を実施することを表わす。なお、残差予測フラグは、CTB単位、CU単位、PU単位で符号化/復号されうる。
また、残差予測フラグ(res_pred_flag)の値が1の場合には、さらに残差予測により生成された推定残差を予測画像へ合成する際の重み係数を表わすインデクス(res_pred_weight_idx;残差予測重み係数インデクス)を符号化/復号されてもよい。例えば、res_pred_weight_idxが0の場合は、重み係数0.5を表わし、res_pred_weight_idxが1の場合は、重み係数1.0を表わしてもよい。なお、上記重み係数は、0.5、1.0に限定されず、0.25、0.5、0.75、1.0となるようにインデクスと対応付けてもよい。また、残差予測時に選択可能な重み係数を予め1つの値に設定しておき、明示的に重み係数インデクスを符号化/復号しない構成としてもよい。所定の値には、例えば、0.5、または1.0と設定しておくことが好ましい。以降、残差予測フラグ(res_pred_flag)、残差予測重み係数インデクス(res_pred_weight_idx)を含めて残差予測情報とも総称する。なお、上記のように、残差予測の重み係数を複数選択できるように符号化パラメータに含めることで、残差予測により生成される推定残差の予測精度を向上させる効果を奏する。従って、拡張レイヤにおいて、推定残差により補正された予測画像の精度が向上し、拡張レイヤの符号量を削減することができるので、符号化効率が向上する。
また、CU情報CUでは、スキップフラグ(skip_flag)、ベースモードフラグ(base_mode_flag)および予測モードフラグ(pred_mode_flag)が符号化されていてもよい。なお、ベースモードフラグは、テクスチャレファレンスレイヤフラグ(texture_rl_flag)とも呼ばれる。ベースモードの場合は、参照レイヤの復号済みピクチャの画像を利用してレイヤ間テクスチャ予測を行うCU(インターレイヤCU)と定義されてもよい。
また、これらのフラグにより対象CUのCUタイプが、イントラCU、インターCU、スキップCUおよびベーススキップCUのいずれであるかが指定されていてもよい。
イントラCUおよびスキップCUは、上述のHEVC方式の場合と同様に定義できる。例えば、スキップCUでは、スキップフラグに“1”が設定される。スキップCUでない場合、スキップフラグに“0”が設定される。また、イントラCUでは、予測モードフラグに“0”が設定される。
また、インターCUは、非スキップかつ動き補償(MC;Motion Compensation)を適用するCUと定義されていてもよい。インターCUでは、例えば、スキップフラグに“0”が設定され、予測モードフラグに“1”が設定される。
ベーススキップCUは、CUまたはPUの情報を参照レイヤから推定するCUタイプである。また、ベーススキップCUでは、例えば、スキップフラグに“1”が設定され、ベースモードフラグに“1”が設定される。
また、PT情報PTIでは、対象PUのPUタイプが、イントラPU、インターPU、マージPU、およびベースマージPUのいずれであるかが指定されていてもよい。
イントラPU、インターPU、マージPUは、上述のHEVC方式の場合と同様に定義できる。
ベースマージPUは、PUの情報を参照レイヤから推定するPUタイプである。また、例えば、PT情報PTIにおいて、マージフラグおよびベースモードフラグを符号化しておき、これらのフラグを用いて、対象PUがベースマージを行うPUであるか否かを判定してもよい。すなわち、ベースマージPUでは、マージフラグに“1”が設定され、ベースモードフラグに“1”が設定される。
なお、拡張レイヤに含まれる動きベクトル情報のうち、下位レイヤに含まれる動きベクトル情報から導出可能な動きベクトル情報については、拡張レイヤから省略する構成とすることができる。このような構成とすることによって、拡張レイヤの符号量を削減することができるので、符号化効率が向上する。
また、上述のとおり拡張レイヤの符号化データを、下位レイヤの符号化方式と異なる符号化方式により生成しても構わない。すなわち、拡張レイヤの符号化・復号処理は、下位レイヤのコーデックの種類に依存しない。
下位レイヤが、例えば、MPEG−2や、H.264/AVC方式によって符号化されていてもよい。
対象レイヤと参照レイヤとが異なる符号化方式によって符号化されている場合、参照レイヤのパラメータを、対象レイヤの対応するパラメータ、または、類似のパラメータに変換することでレイヤ間における相応の互換性を保つことができる。例えば、MPEG−2や、H.264/AVC方式におけるマクロブロックは、HEVCにおけるCTBに読み替えて解釈することが可能である。
なお、以上に説明したパラメータは、単独で符号化されていてもよいし、複数のパラメータが複合的に符号化されていてもよい。複数のパラメータが複合的に符号化される場合は、そのパラメータの値の組み合わせに対してインデックスが割り当てられ、割り当てられた当該インデックスが符号化される。また、パラメータが、別のパラメータや、復号済みの情報から導出可能であれば、当該パラメータの符号化を省略することができる。
〔階層動画像復号装置〕
以下では、本実施形態に係る階層動画像復号装置1の構成について、図1、5〜9を参照して説明する。
(階層動画像復号装置の構成)
図1を用いて、階層動画像復号装置1の概略的構成について説明すると次のとおりである。図1は、階層動画像復号装置1の概略的構成について示した機能ブロック図である。階層動画像復号装置1は、階層動画像符号化装置2から供給される階層符号化データDATAを、HEVC方式により復号して、対象レイヤの復号画像POUT#Tを生成する。
図1に示すように階層動画像復号装置1は、NAL逆多重化部11、可変長復号部12、予測パラメータ復元部14、テクスチャ復元部15、ベース復号部13、およびフィルタパラメータ復元部16を備える。
NAL逆多重化部11は、NAL(Network Abstraction Layer)におけるNALユニット単位で伝送される階層符号化データDATAを逆多重化する。
NALは、VCL(Video Coding Layer)と、符号化データを伝送・蓄積する下位システムとの間における通信を抽象化するために設けられる層である。
VCLは、動画像符号化処理を行う層のことであり、VCLにおいて符号化が行われる。一方、ここでいう、下位システムは、H.264/AVCおよびHEVCのファイルフォーマットや、MPEG−2システムに対応する。以下に示す例では、下位システムは、対象レイヤおよび参照レイヤにおける復号処理に対応する。
なお、NALでは、VCLで生成されたビットストリームが、NALユニットという単位で区切られて、宛先となる下位システムへ伝送される。NALユニットには、VCLで符号化された符号化データ、および、当該符号化データが宛先の下位システムに適切に届けられるためのヘッダが含まれる。また、各階層における符号化データは、NALユニットに格納されることでNAL多重化されて階層動画像復号装置1’に伝送される。
NAL逆多重化部11は、階層符号化データDATAを逆多重化して、対象レイヤ符号化データDATA#Tおよび参照レイヤ符号化データDATA#Rを取り出す。また、NAL逆多重化部11は、対象レイヤ符号化データDATA#Tを可変長復号部12に供給するとともに、参照レイヤ符号化データDATA#Rをベース復号部13に供給する。
可変長復号部12は、対象レイヤ符号化データDATA#Tに含まれるバイナリから各種のシンタックス値を復号するための情報の復号処理を行う。
具体的には、可変長復号部12は、以下のように、予測情報、符号化情報、変換係数情報、およびフィルタパラメータ情報を符号化データDATA#Tから復号する。
すなわち、可変長復号部12は、各CUまたはPUに関する予測情報を、符号化データDATA#Tから復号する。予測情報には、例えば、CUタイプまたはPUタイプの指定が含まれる。
CUがインターCUである場合、可変長復号部12はPU分割情報を符号化DATA#Tから復号する。加えて、各PUにおいて、可変長復号部12は、さらに、予測情報として、参照画像インデックスRI、推定動きベクトルインデックスPMVI、及び、動きベクトル残差MVD等の動き情報、モード情報、残差予測情報(残差予測フラグ、残差予測重み係数インデクス)を符号化データDATA#Tから復号する。
一方、CUがイントラCUである場合、可変長復号部12は、さらに、予測情報として、(1)予測単位のサイズを指定するサイズ指定情報、および、(2)予測インデックスを指定する予測インデックス指定情報を含むイントラ予測情報を符号化データDATA#Tから復号する。
また、可変長復号部12は、符号化情報を符号化データDATA#Tから復号する。符号化情報には、CUの形状、サイズ、位置を特定するための情報が含まれる。より具体的には、符号化情報には、対象ツリーブロックの各CUへの分割パターンを指定するツリーブロック分割情報、すなわち、対象ツリーブロックに含まれる各CUの形状、サイズ、および、対象ツリーブロック内での位置を指定する情報が含まれる。
可変長復号部12は、復号した予測情報および符号化情報を予測パラメータ復元部14に供給する。
また、可変長復号部12は、各ブロックに関する量子化予測残差QD、及び、そのブロックを含むツリーブロックに関する量子化パラメータ差分Δqpを符号化データDATA#Tから復号する。可変長復号部12は、復号した量子化予測残差QDおよび量子化パラメータ差分Δqpを変換係数情報としてテクスチャ復元部15に供給する。
ベース復号部13は、参照レイヤ符号化データDATA#Rから、対象レイヤに対応する復号画像を復号する際に参照される参照レイヤに関する情報であるベース復号情報を復号する。ベース復号情報には、ベース予測パラメータ、ベース変換係数、ベース復号画像が含まれる。ベース復号部13は、復号したベース復号情報を予測パラメータ復元部14、テクスチャ復元部15に供給する。
予測パラメータ復元部14は、予測情報およびベース復号情報を用いて、予測パラメータを復元する。予測パラメータ復元部14は、復元した予測パラメータを、テクスチャ復元部15に供給する。なお、予測パラメータ復元部14は、予測パラメータを復元する際に、テクスチャ復元部15が備えるフレームメモリ155に格納された動き情報を参照することができる。
テクスチャ復元部15は、変換係数情報、ベース復号情報、および予測パラメータを用いて、復号画像POUT#Tを生成し、外部に出力する。なお、テクスチャ復元部15では、復元された復号画像に関する情報が、内部に備えるフレームメモリ155に格納される。
以下において、ベース復号部13、予測パラメータ復元部14、およびテクスチャ復元部15それぞれの詳細について説明する。
(予測パラメータ復元部)
図5を用いて、予測パラメータ復元部14の詳細構成について説明する。図5は、予測パラメータ復元部14の構成について例示した機能ブロック図である。
図5に示すように、予測パラメータ復元部14は、予測タイプ選択部141、スイッチ142、イントラ予測モード復元部143、動きベクトル候補導出部144、動き情報復元部145、マージ候補導出部146、マージ情報復元部147、および残差予測情報復元部148を備える。
予測タイプ選択部141は、CUタイプまたはPUタイプに応じてスイッチ142に切り替え指示を送り予測パラメータの導出処理を制御する。具体的には以下のとおりである。
イントラCUまたはイントラPUが指定されている場合、予測タイプ選択部141はイントラ予測モード復元部143を用いて予測パラメータを導出できるようスイッチ142を制御する。
インターCU(マージなし)およびインターPU(マージなし)のいずれかが指定されている場合、予測タイプ選択部141は動き情報復元部145を用いて予測パラメータを導出できるようスイッチ142を制御する。
ベーススキップCU、ベースマージCU、スキップCU、およびマージPUのいずれかが指定されている場合、予測タイプ選択部141はマージ情報復元部147を用いて予測パラメータを導出できるようスイッチ142を制御する。
また、インターCU(マージなし)、インターPU(マージなし)、ベーススキップCU、ベースマージCU、スキップCU、およびマージPUのいずれかが指定されている場合、予測タイプ選択部141は、残差予測情報復元部148を用いて、さらに残差予測情報を予測パラメータの一部として導出できるようスイッチ142を制御する。
スイッチ142は、予測タイプ選択部141の指示に応じて、予測情報を、イントラ予測モード復元部143、動き情報復元部145、およびマージ情報復元部147のいずれかに供給する。また、スイッチ142は、予測タイプ選択部141の指示に応じて、さらに残差予測情報復元部148へ予測情報を供給する。予測情報の供給先において予測パラメータが導出される。
イントラ予測モード復元部143は、予測情報から予測モードを導出する。すなわち、イントラ予測モード復元部143が予測パラメータとして復元するのは予測モードである。
ここで、図6を用いて、予測モードの定義について説明する。図6は、予測モードの定義を示している。同図に示すように、36種類の予測モードが定義されており、それぞれの予測モードは、「0」〜「35」の番号(イントラ予測モードインデックス)によって特定される。また、図7に示すように、各予測モードには次のような名称が割り当てられている。すなわち、「0」は、“Intra_Planar(プラナー予測モード、平面予測モード)”であり、「1」は、“Intra DC(イントラDC予測モード)”であり、「2」〜「34」は、“Intra Angular(方向予測)”であり、「35」は、“Intra From Luma”である。「35」は、色差予測モード固有のものであり、輝度の予測に基づいて色差の予測を行うモードである。言い換えれば、色差予測モード「35」は、輝度画素値と色差画素値との相関を利用した予測モードである。色差予測モード「35」はLMモードとも称する。予測モード数(intraPredModeNum)は、対象ブロックのサイズによらず「35」である。
動きベクトル候補導出部144は、ベース復号情報を用いて、レイヤ内動き推定処理、またはレイヤ間動き推定処理により推定動きベクトルの候補を導出する。動きベクトル候補導出部144は、導出した動きベクトルの候補を動き情報復元部145に供給する。
動き情報復元部145は、マージを行わない各インターPUに関する動き情報を復元する。すなわち、動き情報復元部145が予測パラメータとして復元するのは動き情報である。
動き情報復元部145は、対象PUがインターCUおよびインターPUである場合、予測情報から、動き情報を復元する。より具体的には、動き情報復元部145は、動きベクトル残差(mvd)、推定動きベクトルインデックス(mvp_idx)、インター予測識別子(inter_pred_idc)および、参照画像インデックス(refIdx)を取得する。そして、インター予測識別子の値に基づいて、参照画像リストL0と参照画像リストL1各々について参照画像リスト利用フラグpredFlagLX(X=0,1)を決定する。具体的には、参照画像リスト利用フラグは以下のように導出される。
predFlagL0 = (inter_pred_idc == Pred_L0 || inter_pred_idc == Pred_BI)
predFlagL1 = (inter_pred_idc == Pred_L1 || itner_pred_idc == Pred_BI)
ここで、”||”は論理和を表わす。また、Pred_L0はL0予測を表わし、Pred_L1はL1予測を表わし、Pred_BIは、双予測を表わす。参照画像リスト利用フラグpredFlagLX(X=0,1)の値が、0の場合は、参照画像リストLXを利用したLX予測をしないことを表わし、1の場合は、参照画像リストLXを利用したLX予測をすることを表わす。また、predFlagL0、predFlagL1が共に1の場合は、双予測を行うことを表わす。
続いて、対応する参照画像リスト利用フラグが、当該参照画像を利用することを示している場合、動き情報復元部145は、推定動きベクトルインデックスの値に基づいて、推定動きベクトルを導出するとともに、動きベクトル残差と推定動きベクトルとに基づいて動きベクトルを導出する。動き情報復元部145は、導出した動きベクトルと、参照画像リスト利用フラグ、および、参照画像インデックスと合わせて動き情報(動き補償パラメータ)として出力する。
マージ候補導出部146は、フレームメモリ155から供給される復号済みの動き情報および/またはベース復号部13から供給されるベース復号情報等を用いて、各種のマージ候補を導出する。マージ候補導出部146は、導出したマージ候補をマージ情報復元部147に供給する。
マージ情報復元部147は、レイヤ内またはレイヤ間でマージを行う各PUに関する動き情報を復元する。すなわち、動き情報復元部145が予測パラメータとして復元するのは動き情報である。
具体的には、マージ情報復元部147は、対象CU(PU)がマージを行うスキップCU(マージPU)である場合、マージ候補導出部146がマージ候補リストから、予測情報に含まれるマージインデックス(merge_idx)に対応する動き補償パラメータ(動きベクトルと、インター予測識別子、参照画像リスト利用フラグ、および、参照画像インデックス)を導出することにより、動き情報を復元する。
残差予測情報復元部148は、各PUに関する残差予測情報を復元する。可変長復号部12より復号された残差予測に関するシンタックス値に基づいて、残差予測情報として、各PU単位での残差予測の適用の有無を表わす残差予測フラグres_pred_flag、および残差予測を適用する場合(res_pred_flag==1)には、さらに、残差予測重み係数インデックスres_pred_weight_idxを復元する。なお、残差予測時に選択可能な重み係数を予め1つの値に設定しておき、明示的に重み係数インデクスを復元しない構成としてもよい。例えば、残差予測を適用する場合には、残差予測重み係数を、0.5、または1.0と設定してもよい。
(テクスチャ復元部)
図8を用いて、テクスチャ復元部15の詳細構成について説明する。図8は、テクスチャ復元部15の構成について例示した機能ブロック図である。
図8に示すように、テクスチャ復元部15は、逆直交変換・逆量子化部151、テクスチャ予測部152、加算器153、ループフィルタ部154、およびフレームメモリ155を備える。
逆直交変換・逆量子化部151は、(1)可変長復号部12から供給される変換係数情報に含まれる量子化予測残差QDを逆量子化し、(2)逆量子化によって得られたDCT係数を逆直交変換(例えば、DCT(Discrete Cosine Transform)変換)し、(3)逆直交変換によって得られた予測残差Dを加算器153に供給する。なお、量子化予測残差QDを逆量子化する際に、逆直交変換・逆量子化部151は、変換係数情報に含まれる量子化パラメータ差分Δqpから量子化ステップQPを導出する。量子化パラメータqpは、直前に逆量子化/逆直交変換したツリーブロックに関する量子化パラメータqp’に量子化パラメータ差分Δqpを加算することによって導出でき、量子化ステップQPは、量子化パラメータqpからQP=2qp/6によって導出できる。また、逆直交変換・逆量子化部151による予測残差Dの生成は、ブロック(変換単位)を単位として行われる。
テクスチャ予測部152は、予測パラメータに応じて、ベース復号情報に含まれるベース復号画像またはフレームメモリに格納されている復号済みの復号画像を参照し、予測画像を生成する。
テクスチャ予測部152は、より詳細には、インター予測部152A、イントラ予測部152Bを備える。
インター予測部152Aは、各インター予測パーティションに関する予測画像をインター予測により生成する。具体的には、インター予測部152Aは、動き情報復元部145またはマージ情報復元部147から予測パラメータとして供給される動き情報を用いて、参照画像から予測画像を生成する。また、インター予測部152Aは、残差予測情報復元部148から予測パラメータとして供給される残差予測情報と、動きベクトル復元部145、またはマージ情報復元部147から予測パラメータとして供給される動き情報を用いて、参照レイヤから、各インター予測パーティションに対応する推定残差を生成し、上記予測画像へ推定残差を合成し、予測画像を補正する。
イントラ予測部152Bは、各イントラ予測パーティションに関する予測画像をイントラ予測により生成する。具体的には、イントラ予測部152Bは、イントラ予測モード復元部143から予測パラメータとして供給される予測モードを用いて、対象パーティションにおいて復号済みの復号画像もしくはベース復号画像から予測画像を生成する。
テクスチャ予測部152は、インター予測部152A、イントラ予測部152Bが生成した予測画像を加算器153に供給する。
加算器153は、テクスチャ予測部152が生成した予測画像と、逆直交変換・逆量子化部151から供給された予測残差Dとを加算することによって復号画像を生成する。
ループフィルタ部154は、加算器153から供給される復号画像に対し、デブロッキング処理や、適応オフセットフィルタ、適応ループフィルタによるフィルタ処理を施すものである。
フレームメモリ155は、ループフィルタ部154によるフィルタ済み復号画像を格納する。
(ベース復号部)
図9を用いて、ベース復号部13の詳細構成について説明する。図9は、ベース復号部13の構成について例示した機能ブロック図である。
図9に示すように、ベース復号部13は、可変長復号部131、ベース予測パラメータ復元部132、ベース変換係数復元部133、ベーステクスチャ復元部134を備える。
可変長復号部131は、参照レイヤ符号化データDATA#Rに含まれるバイナリから各種のシンタックス値を復号するための情報の復号処理を行う。
具体的には、可変長復号部131は、予測情報および変換係数情報を符号化データDATA#Rから復号する。可変長復号部131が復号する予測情報および変換係数のシンタックスは、可変長復号部12と同様であるのでここではその詳細な説明を省略する。
可変長復号部131は、復号した予測情報をベース予測パラメータ復元部132に供給し、復号した変換係数情報をベース変換係数復元部133に供給する。
ベース予測パラメータ復元部132は、可変長復号部131から供給される予測情報に基づいて、ベース予測パラメータを復元する。ベース予測パラメータ復元部132が、ベース予測パラメータを復元する方法については、予測パラメータ復元部14と同様であるので、ここではその詳細な説明を省略する。ベース予測パラメータ復元部132は、復元したベース予測パラメータを、ベーステクスチャ復元部134に供給するとともに、外部に出力する。
ベース変換係数復元部133は、可変長復号部131から供給される変換係数情報に基づいて、変換係数を復元する。ベース変換係数復元部133が変換係数を復元する方法については、逆直交変換・逆量子化部151と同様であるので、ここではその詳細な説明を省略する。ベース変換係数復元部133は、復元したベース変換係数を、ベーステクスチャ復元部134に供給するとともに、外部に出力する。
ベーステクスチャ復元部134は、ベース予測パラメータ復元部132から供給されるベース予測パラメータと、ベース変換係数復元部133から供給されるベース変換係数とを用いて、復号画像を生成する。具体的には、ベーステクスチャ復元部134は、ベース予測パラメータに基づき、テクスチャ予測部152と同様のテクスチャ予測を行って、予測画像を生成する。また、ベーステクスチャ復元部134は、ベース変換係数に基づいて予測残差を生成し、生成した予測残差と、テクスチャ予測により生成した予測画像とを加算することでベース復号画像を生成する。
なお、ベーステクスチャ復元部134は、ベース復号画像に対して、ループフィルタ部154と同様のフィルタ処理を施してもよい。また、ベーステクスチャ復元部134は、復号済みのベース復号画像を格納するためのフレームメモリを備えていてもよく、テクスチャ予測においてフレームメモリに格納されている復号済みのベース復号画像を参照してもよい。
<インター予測部152Aの詳細>
次に、インター予測部152Aにおいて行われる処理について図10〜24を参照して説明する。
図10は、インター予測部152Aの構成を示す図である。インター予測部152Aは、動き補償部1521、残差予測部1522、重み予測部1523から構成される。インター予測部152Aには、予測情報PInfo(動き補償パラメータ)と残差予測情報が入力される。動き補償パラメータは、対象PUの左上座標(xP、yP)、PUのサイズであるPUの幅と高さ、nPSW、nPSH、参照画像リストL0に係る参照画像に関わる参照画像リスト利用フラグpredFlagL0、参照画像リスト中の参照画像を特定するためのインデックスである参照画像インデックスRefIdxL0、動きベクトルMvL0[]、と、参照画像リストL1に係る参照画像に関わる参照画像リスト利用フラグpredFlagL1、参照画像リスト中の参照画像を特定するためのインデックスである参照画像インデックスRefIdxL1、動きベクトルMvL1[]から構成される。
(動き補償)
動き補償部1521は、インター予測部152Aに入力される対象レイヤ画像と動き補償パラメータに基づいて、対象レイヤ画像の動き補償を行い、動き補償画像を生成する。具体的には、参照画像リストL0とL1に対して各々、参照画像リスト利用フラグpredFlagLXが予測リストを利用することを示す場合、すなわち、-1以外の場合に、参照画像インデックスRefIdxLXで指定される参照画像RefPicLXELをフレームメモリ155から読み出す。続いて、PUの左上座標(xP、yP)を起点として、動きベクトルMvLX[]だけずらした位置から、PUサイズにより定まる動き補償フィルタに必要な画像を参照画像RefPicLXELより抽出し、動きベクトルMvLX[]に従った整数位置もしくは小数位置の画像を生成するためにフィルタ処理を行い動き補償画像を生成する。なお、動きベクトルMvLX[0]は、水平方向の動きベクトルを表わし、動きベクトルMvLX[1]は、垂直方向の動きベクトルである。フィルタ処理は、例えば、輝度には、図11(a)に示す水平8タップ、垂直8タップの分離フィルタ、色差には、図11(b)に示す水平4タップ、垂直4タップの分離フィルタが用いられる。参照画像リスト利用フラグpredFlagL0、predFlagL1の一方が有効であり他が無効である場合には、1つの参照画像から予測画像を生成するような単予測であり動き補償画像は1つだけ生成される。参照画像リスト利用フラグpredFlagL0、predFlagL1の両者が有効の場合は、2つの参照画像から予測画像を生成するような双予測であり、動き補償画像は2つ生成される。以下、L0予測の動き補償画像(L0予測画像ともいう)をpredSamplesL0、L1予測の動き補償画像(L1予測画像ともいう)をpredSamplesL1と呼ぶ。両者を区別しない場合、predSamplesLXとも呼ぶ。以下、動き補償部1521で得られた動き補償画像(LX予測画像)predSamplesLXに、さらに残差予測が行われる例を説明するが、これらの出力画像を補正動き補償画像(補正LX予測画像ともいう)predSamplesLX’と呼ぶ。なお、以下の残差予測において、入力画像と出力画像を区別する場合には、入力画像をpredSamplesLX、出力画像をpredSamplesLX´と表現する。
(残差予測)
残差予測部1522は、残差予測フラグres_pred_flagが0の場合には、対象PUのLX予測画像predSampleLXをそのまま出力する。また、残差予測フラグres_pred_flagが1の場合に、対象PUのLX予測画像predSamplesLXに対して、残差予測を行う。残差予測は、予測画像生成の対象とする対象レイヤ(第2のレイヤ画像)とは異なる参照レイヤ(第1のレイヤ画像)の残差を、対象レイヤの予測した画像であるLX予測画像predSamplesLXに加えることにより行われる。
図12は、残差予測部1522の概略構成図を示す機能ブロック図である。図12に示すように、残差予測部1522は、スケーリング部15221、残差生成部15223、動き補償部15222、および残差合成部15224により構成される。
まず、残差予測部1522は、対象レイヤの現ピクチャCurPicEL上の対象PUと対応する同時刻の参照レイヤのピクチャCurPicBLの参照領域CurPicBLReg、および対象レイヤの参照画像インデックスRefIdxLX及び参照画像リストLXで指定される参照画像RefPicLXELの参照領域RefPicLXELRegと対応する同時刻のピクチャRefPicLXBLの参照領域RefPicLXBLRegを設定する。ここで、参照領域CurPicBlReg、及び参照領域RefPicLXBLRegについて、図13を用いて説明する。
図13に示すように、対象レイヤ上の現ピクチャCurPicELの高さおよび幅を、それぞれhPicおよびwPicとする。また、対象PUの高さおよび幅を、それぞれhPU、wPUとし、左上画素の位置の現ピクチャCurPicELのける座標表現を、(xPU,yPU)とする。また、参照レイヤ上の現ピクチャCurPicBLの高さおよび幅を、それぞれhRefPicおよびwRefPicとする。
対象PU(tgtPU)に対応する参照領域CurPicBLRegは、次のように設定される。以下の計算により、参照領域CurPicBLRegの座標(xCurPicBLReg, yCurPicBLReg)、及び幅wBLReg、高さwBLRegが導出される。なお、以下のscaleX・scaleYは、対象レイヤの現ピクチャの幅・高さの参照レイヤの現ピクチャの幅・高さに対する比である。
xCurPicBLReg = xPu / scaleX
yCurPicBLReg = yPu / scaleY
wBLReg = wPu / scaleX
hBLReg = hPu / scaleY
scaleX = wPic / wRefPic
scaleY = hPic / hRefPic
同様に、対象レイヤ上の参照ピクチャRefPicLXELの参照領域RefPicLXELRegと対応する参照レイヤ上の同時刻の参照ピクチャRefPicLXBL上の参照領域RefPicLXBLRegの座標(xRefPicLXELReg, yRefPicLXELReg)、及び幅wBLReg、高さwBLRegは次のように導出される。
xRefPicLXBLReg = (xPu + mvX) / scaleX
yRefPicLXBLReg = (yPu + mvY) / scaleY
wBLReg = wPu / scaleX
hBLReg = hPu / scaleY
ここで、mvX、およびmvYは、それぞれ、対象レイヤの動き補償に用いた動きベクトルのx成分、y成分である。
スケーリング部15221は、設定された参照領域CurPicBLRegの局所復号画像CurPicBLRegSamples、および参照領域RefPicLXBLRegの局所復号画像RefPicLXBLRegSamplesを参照レイヤのフレームメモリより読み出し、所定のアップサンプリングフィルタによりx方向へscaleX、y方向へscaleYだけスケーリングし、参照領域CurPicBLRegのアップサンプル画像CurPicBLRegScaledSamplesおよび、参照領域RefPicLXBLRegのアップサンプル画像RefPicLXBLRegScaledSamplesを生成する。生成された参照領域CurPicBLRegのアップサンプル画像CurPicBLRegScaledSamplesは、残差生成部15223へ出力される。また、生成された参照領域RefPicLXBLRegのアップサンプル画像RefPicLXBLRegScaledSamplesは、動き補償部15222へ出力される。なお、アップサンプル画像が生成されるのは、対象レイヤのスケーラビリティが空間スケーラビリティの場合のみである。対象レイヤのスケーラビリティがSNRスケーラビリティの場合、つまり、scaleX=scaleY=1の場合は、参照レイヤのフレームメモリより読み出した参照領域CurPicBLRegの局所復号画像CurPicBLRegSamples、および参照領域RefPicLXBLRegの局所復号画像RefPicLXBLRegSamplesをそれぞれ、アップサンプル画像CurPicBLRegScaledSamples、RefPicLXBLRegScaledSampelsとして出力するものとする。なお、残差予測フラグres_pred_flag=1の場合は、参照領域CurPicBLRegのアップサンプル画像CurPicBLRegScaledSamplesおよび、参照領域RefPicLXBLRegのアップサンプル画像RefPicLXBLRegScaledSamplesの生成処理をし、残差予測フラグres_pred_flag=0の場合は、参照領域CurPicBLRegのアップサンプル画像CurPicBLRegScaledSamplesおよび、参照領域RefPicLXBLRegのアップサンプル画像RefPicLXBLRegScaledSamplesの生成処理を省略する。
動き補償部15222は、対象レイヤの参照画像RefPicLXELと対応する参照レイヤの画像RefPicLXBLのアップサンプル画像RefPicLXBLScaledSamplesと、対象レイヤの参照画像RefPIcLXELから動き補償画像(LX予測画像)predSamplesLXを生成するのに用いた動きベクトルMvLX[]に基づいて、整数位置もしくは小数点位置の画像を生成するためにフィルタ処理を行い、参照レイヤの動き補償画像predSamlesLXBLを生成する。なお、動き補償部15222では、所定条件に基づいて、参照レイヤの動き補償画像predSamplesLXBLを生成するために用いる動き補償フィルタが選択される。なお、残差予測フラグres_pred_flag=1の場合は、参照レイヤの動き補償画像predSamlesLXBLの生成処理をし、残差予測フラグres_pred_flag=0の場合は、参照レイヤの動き補償画像predSamlesLXBLの生成処理を省略する。
<動き補償フィルタの選択の第1例>
動き補償フィルタの選択例について、図14を用いて説明する。図14は、動き補償部15222において、動き補償フィルタを選択する一例を示すフローチャートである。
(S201)動き補償部15222は、対象レイヤのスケーラビリティが空間スケーラビリティであるか否かを判定する。対象レイヤのスケーラビリティが空間スケーラビリティである場合(S201でYes)、S202へ遷移する。それ以外(例えば、SNRスケーラビリティである)の場合(S201でNo)、S203へ遷移する。
(S202)動き補償部15222は、水平N1horタップの動き補償フィルタ、垂直N1verタップの動き補償フィルタを選択する。
(S203)動き補償部15222は、水平N2horタップの動き補償フィルタ、垂直N2verタップの動き補償フィルタを選択する。
ここで、変数N1Horの値は、変数N2Horの値以下であり、変数N2Verの値は、変数N2Verの値以下である。さらに、変数N1Verの値は、変数N1Horの値以下であり、変数N2Verの値は、変数N2Verの値以下であることが好ましい。
例えば、動き補償フィルタの組み合わせの一例を図15(a)に示す。図15(a)では、空間スケーラビリティの場合、輝度には、水平、垂直共に図16(a)に示す2タップの分離フィルタ(N1Hor=N1Ver=2)を選択し、色差には、水平、垂直共に図17(a)に示す2タップ(N1Hor=N1Ver=2)の分離フィルタを選択する。SNRスケーラビリティの場合、輝度には、水平、垂直共に、図16(b)に示す4タップ(N2Hor=N2Ver)の分離フィルタを選択し、色差には、水平、垂直共に、図A16(b)に示す4タップ(N2Hor=N2Ver=4)の分離フィルタを選択する。なお、動き補償に用いるフィルタの組み合わせは図15(a)に限定されず、図15(b)に示すように、色差に関して、スケーラビリティによらず、水平、垂直共に図15(a)に示す2タップの分離フィルタを選択してもよい。また、図15(c)に示すように、空間スケーラビリティ時に,垂直方向のフィルタタップ数が、水平方向のフィルタタップ数より小さいフィルタを用いてもよい。また、図15(d)に示すように、空間スケーラビリティ時のみ、輝度は、水平、垂直共に図16(a)に示す2タップの分離フィルタを用い、色差には、水平、垂直共に図17(a)に示す2タップの分離フィルタを用いてもよい。
以上、SNRスケーラビリティの場合は、参照レイヤと対象レイヤの画像サイズが同じである。そこで、動き補償部1521において対象レイヤの動き補償画像の生成に用いるフィルタよりも、簡易なフィルタを用いることで、残差予測に用いる参照レイヤの予測画像を生成するために必要な処理量を削減することが可能である。また、空間スケーラビリティの場合、残差予測に用いる参照レイヤの画像をアップサンプルする必要があり、SNRスケーラビリティの場合に比べて処理量が多い。そこで、残差予測に必要な参照レイヤの動き補償にさらに簡易なフィルタを用いることで、参照レイヤの予測画像を生成するために必要な処理量を削減することが可能である。なお、発明者らは、実験により、参照レイヤの動き補償画像の生成に用いるフィルタを、輝度の場合、図11(a)示す8タップの分離フィルタの代わりに、図16(a)に示す2タップの分離フィルタ(線形補間フィルタ)、または、図16(b)に示す4タップの分離フィルタを適用しても符号化効率が低下しないことを確認している。また、色差に関しても、図11(b)に示す4タップの分離フィルタの代わりに、図17(a)に示す2タップの分離フィルタを用いても符号化効率が低下しないことを確認している。
<動き補償フィルタの選択の第2例>
動き補償フィルタの選択例の別例について、図18を用いて説明する。図18は、動き補償部15222において、動き補償フィルタを選択する別の一例を示すフローチャートである。
(S201’)動き補償部15222は、対象レイヤ上の予測単位のインター予測識別子inter_pred_idcが双予測であるか(inter_pred_idc==Pred_BI?)否かを判定する。双予測である場合(S201’でYes)、S202’へ遷移する。それ以外(L0予測、L1予測の場合)の場合(S201’でNo)、S203’へ遷移する。
(S202’)動き補償部15222は、水平N1horタップの動き補償フィルタ、垂直N1verタップの動き補償フィルタを選択する。
(S203’)動き補償部15222は、水平N2horタップの動き補償フィルタ、垂直N2verタップの動き補償フィルタを選択する。
ここで、変数N1Horの値は、変数N2Horの値以下であり、変数N2Verの値は、変数N2Verの値以下である。さらに、変数N1Verの値は、変数N1Horの値以下であり、変数N2Verの値は、変数N2Verの値以下であることが好ましい。
例えば、動き補償フィルタの組み合わせの一例を図19(a)に示す。図19(a)では、双予測の場合、輝度には、水平、垂直共に図16(a)に示す2タップの分離フィルタ(N1Hor=N1Ver=2)を選択し、色差には、水平、垂直共に図17(a)に示す2タップ(N1Hor=N1Ver=2)の分離フィルタを選択する。単予測の場合、輝度には、水平、垂直共に、図16(b)に示す4タップ(N2Hor=N2Ver)の分離フィルタを選択し、色差には、水平、垂直共に、図17(b)に示す4タップ(N2Hor=N2Ver=4)の分離フィルタを選択する。なお、動き補償に用いるフィルタの組み合わせは図19(a)に限定されず、図19(b)に示すように、色差に関して、双予測、単予測共に、水平、垂直共に図15(a)に示す2タップの分離フィルタを選択してもよい。また、図15(c)に示すように、双予測時に,垂直方向のフィルタタップ数が、水平方向のフィルタタップ数より小さいフィルタを用いてもよい。また、図19(d)に示すように、双予測時に、輝度は、水平、垂直共に図16(a)に示す2タップの分離フィルタを用い、色差には、水平、垂直共に図17(a)に示す2タップの分離フィルタを用いてもよい。
以上、双予測の場合は、L0予測画像とL1予測画像の両方を生成する必要があるため、LX予測(単予測)に比べて、処理量が多い。そこで、双予測の場合は、単予測に用いるフィルタよりも、簡易なフィルタを用いることで、残差予測に用いる参照レイヤの予測画像を生成するために必要な処理量を削減することが可能である。また、単予測に関しても、動き補償部1521において対象レイヤの動き補償画像の生成に用いるフィルタよりも、簡易なフィルタを用いることで、残差予測に用いる参照レイヤの予測画像を生成するために必要な処理量を削減することが可能である。
<動き補償フィルタの選択の第3例>
動き補償フィルタの選択例の別例について、図20を用いて説明する。図20は、動き補償部15222において、動き補償フィルタを選択する別の一例を示すフローチャートである。
(S201’’)動き補償部15222は、対象レイヤ上の予測単位を含むスライスのスライスタイプがBスライスであるか否かを判定する。Bスライスである場合(S201’’でYes)、S202’’へ遷移する。それ以外(Pスライスの場合)の場合(S201’’でNo)、S203’’へ遷移する。
(S202’’)動き補償部15222は、水平N1horタップの動き補償フィルタ、垂直N1verタップの動き補償フィルタを選択する。
(S203’’)動き補償部15222は、水平N2horタップの動き補償フィルタ、垂直N2verタップの動き補償フィルタを選択する。
ここで、変数N1Horの値は、変数N2Horの値以下であり、変数N2Verの値は、変数N2Verの値以下である。さらに、変数N1Verの値は、変数N1Horの値以下であり、変数N2Verの値は、変数N2Verの値以下であることが好ましい。
例えば、動き補償フィルタの組み合わせの一例を図21(a)に示す。図21(a)では、Bスライスの場合、輝度には、水平、垂直共に図16(a)に示す2タップの分離フィルタ(N1Hor=N1Ver=2)を選択し、色差には、水平、垂直共に図17(a)に示す2タップ(N1Hor=N1Ver=2)の分離フィルタを選択する。Pスライスの場合、輝度には、水平、垂直共に、図16(b)に示す4タップ(N2Hor=N2Ver)の分離フィルタを選択し、色差には、水平、垂直共に、図17(b)に示す4タップ(N2Hor=N2Ver=4)の分離フィルタを選択する。なお、動き補償に用いるフィルタの組み合わせは図21(a)に限定されず、図21(b)に示すように、色差に関して、Bスライス、Pスライス共に、水平、垂直共に図16(a)に示す2タップの分離フィルタを選択してもよい。また、図21(c)に示すように、Bスライス時に,垂直方向のフィルタタップ数が、水平方向のフィルタタップ数より小さいフィルタを用いてもよい。また、図21(d)に示すように、Bスライス時に、輝度は、水平、垂直共に図16(a)に示す2タップの分離フィルタを用い、色差には、水平、垂直共に図17(a)に示す2タップの分離フィルタを用いてもよい。
以上、Bスライスの場合は、L0予測、L1予測、双予測の3通りの予測方法があり、Pスライスに比べて、処理量が多い。そこで、Bスライスの場合は、Pスライスに用いるフィルタよりも、簡易なフィルタを用いることで、残差予測に用いる参照レイヤの予測画像を生成するために必要な処理量を削減することが可能である。また、Pスライスに関しても、動き補償部1521において対象レイヤの動き補償画像の生成に用いるフィルタよりも、簡易なフィルタを用いることで、残差予測に用いる参照レイヤの予測画像を生成するために必要な処理量を削減することが可能である。
残差生成部15223は、入力された対象レイヤの現ピクチャのPUに対応する参照レイヤの現ピクチャのアップサンプル画像CurPicBLScaledSamplesと、動き補償部15222で生成された、対象レイヤの参照画像RefPicLXELと対応する参照レイヤの画像RefPicLXBLのアップサンプル画像RefPicLXBLScaledSamplesの動き補償画像predSamplesLXBLとの差分を計算し、残差画像resSamplesLXを生成する。すなわち、座標(x、y)の残差resSamplesLX’[x, y]は、以下の式により導出される。
resSamplesLX[x, y] = CurPicBLRegScaledSamples[x, y] - predSamplesLXBL[x, y]
その後、残差画像resSamplesLXを残差合成部15224へ出力する。なお、残差予測フラグres_pred_flag=1の場合は、残差画像resSamplesLXの生成処理をし、残差予測フラグres_pred_flag=0の場合は、残差画像resSamplesLXの生成処理を省略する。
残差合成部15224は、残差予測フラグres_pred_flagが0の場合には、対象PUのLX予測画像predSampleLXをそのまま出力する。残差予測フラグres_pred_flagが1の場合には、残差予測重み係数インデックスres_pred_weight_idxで指定される重み係数res_pred_weightを残差画像resSampleLXへ乗算し、対象PUのLX予測画像predSamlesLXと合成し、合成した補正LX予測画像predSamplesLX’を出力する。すなわち、座標(x、y)の補正LX予測画素値は、以下の式により導出される。なお、残差予測重み係数インデックスで指定される残差予測重み係数の代わりに、所定条件に基づいて導出された残差予測重み係数res_pred_weightを用いてもよい。
predVal = predSamplesLX[x, y] + (res_pred_weight * resSamplesLX[x, y])
predSamplesLX’[x, y] = predVal
なお、残差画像resSamplesLXと重み係数res_pred_weightの乗算をシフト演算と整数精度の乗算との組み合わせによって実現してもよい。
例えば、res_pred_weight = 0.25の場合、以下の式により導出する。
predVal = predSamplesLX[x, y] + ( resSamplesLX[x, y]>>2 )
また、res_pred_weight = 0.5の場合、以下の式により導出する。
predVal = predSamplesLX[x, y] + ( resSamplesLX[x, y]>>1 )
また、res_pred_weight = 0.75の場合、以下の式により導出する。
predVal = predSamplesLX[x, y] + ( 3*resSamplesLX[x, y]>>2 )
また、res_pred_weight = 1.0の場合、以下の式により導出する。
predVal = predSamplesLX[x, y] + resSamplesLX[x, y]
以上、上記残差予測部1522によれば、残差予測フラグres_pred_flagが0の場合には、対象PUのLX予測画像predSampleLXをそのまま出力する。また、残差予測フラグres_pred_flagが1の場合に、対象PUのLX予測画像predSamplesLXに対して、残差予測を行う。残差予測は、予測画像生成の対象とする対象レイヤ(第2のレイヤ画像)とは異なる参照レイヤ(第1のレイヤ画像)の残差resSamplesを、残差予測重み係数インデクスres_weight_indexが示す重み係数res_weightだけ乗算し、対象レイヤのLX予測画像predSamplesLXに加算することで、LX予測画像を補正することができるため、予測画像の精度が増し、符号化効率を改善する効果を奏する。
(重み予測)
重み予測部1523は、残差予測部1522より入力されたLX予測画像predSamplesLXに重み係数を乗算することにより予測画像を生成する。入力されるLX予測画像predSamplesLXは、残差予測が行われる場合には、それらが施された画像である。参照リスト利用フラグの一方(predFlagL0もしくはpredFlagL1)が1の場合(単予測の場合)で、重み予測を用いない場合には入力されたLX予測画像predSamplesLX(LXはL0もしくはL1)を画素ビット数に合わせる以下の式の処理を行う。
predSamples[x, y] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesLX[x, y] + offset1 ) >> shift1 )
ここで、shift1=14-bitDepth、offset1=1<<(shift1-1)である。
また、参照リスト利用フラグの両者(predFlagL0もしくはpredFlagL1)が1の場合(双予測の場合)で、重み予測を用いない場合には、入力されたLX予測画像predSamplesL0、predSamplesL1を平均し画素ビット数に合わせる以下の式の処理を行う。
predSamples[x, y] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesL0[x, y] + predSamplesL1[x, y] + offset2 ) >> shift2 )
ここで、shift2=15-bitDepth、offset2=1<<(shift2-1)である。
さらに、単予測の場合で、重み予測を行う場合には、重み予測部1523は、重み予測係数w0とオフセットo0を導出し、以下の式の処理を行う。
predSamples[x, y] = Clip3( 0, ( 1 << bitDepth ) - 1, ( (predSamplesLX[x, y] * w0 + 2log2WD - 1) >> log2WD ) + o0 )
ここで、log2WDは所定のシフト量を示す変数である。
さらに、双予測の場合で、重み予測を行う場合には、重み予測部1523は、重み予測係数w0、w1、o0、o1を導出し、以下の式の処理を行う。
predSamples[x, y] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesL0 [x, y] * w0 + predSamplesL1[x, y] * w1 + ((o0 + o1 + 1) << log2WD) ) >> (log2WD + 1) )
<残差予測部1522の変形例1>
以下では、残差予測部1522の変形例1に係る残差予測部1522aについて説明する。
図49は、残差予測部1522aの概略構成図を示す機能ブロック図である。図49に示すように、残差予測部1522aは、LX残差予測制限判定部15226、推定残差生成部15230、および残差合成部15224aにより構成される。また、推定残差生成部15230は、さらに、スケーリング部15221、残差生成部15223、および動き補償部15222によって構成される。なお、残差予測部1522と同一の機能ブロックには、同一の符号を付し、説明を省略する。以下では、LX残差予測制限判定部15226、推定残差生成部15230、残差合成部15224aについて説明する。
まず、残差予測部1522aは、対象レイヤの現ピクチャCurPicEL上の対象PUと対応する同時刻の参照レイヤのピクチャCurPicBLの参照領域CurPicBLReg、および対象レイヤの参照画像インデックスRefIdxLX及び参照画像リストLXで指定される参照画像RefPicLXELの参照領域RefPicLXELRegと対応する同時刻のピクチャRefPicLXBLの参照領域RefPicLXBLRegを設定する。ここで、参照領域CurPicBlReg、及び参照領域RefPicLXBLRegについては、残差予測部1522において説明済のため、省略する。
LX残差予測制限判定部15226は、入力された対象レイヤの当該PUの動き補償パラメータに基づいて、当該PUのLX予測画像と対応する参照レイヤの推定残差を生成するか否かを判定する。具体的には、次の式に基づいて、L0予測画像、またはL1予測画像のいずれか一方に対応する参照レイヤの推定残差の生成を制限するか否かを示すLX残差予測制限フラグNoResPredLXFlagを導出し、残差合成部15224aへ出力する。
NoResPredLXFlag = (inter_pred_idc==Pred_BI) ? 1 : 0;
すなわち、当該PUの予測モードが双予測である場合(inter_pred_idc==Pred_BI)、LX残差予測制限フラグNoResPredLXFlagを1へ設定し、単予測である場合(inter_pred_idc==Pred_L0 || inter_pred_idc==Pred_L1)は、0へ設定する。
ここで、LX残差予測制限フラグNoResPredLXFlagは1の場合、LX予測画像に対応する推定残差の生成を実施しないことを示し、0の場合はLX予測画像に対応する推定残差の生成を実施することを示す。例えば、双予測の場合、L0予測画像に対応する推定残差の生成を関して制限してもよいし、L1予測画像に対応する推定残差の生成を関して制限してもよい。予め制限するLX予測画像をL0予測画像、またはL1予測画像のいずれか一方へ定めるものとする。L0予測画像に対応する推定残差の生成を制限する場合は、NoResPredL0Flag=1、NoResPredL1Flag=0が推定残差生成部15230、残差合成部15224aへ出力され、L1予測画像に対応する推定残差の生成を制限する場合は、NoResPredL0Flag=0、NoResPredL1Flag=1が推定残差生成部15230、残差合成部15224aへ出力される。
推定残差生成部15230は、入力された残差予測フラグres_pred_flag、およびLX残差予測制限フラグNoResPredLXFlagに基づいて、LX予測画像に対応する残差画像resSamplesLXを生成する。すなわち、残差予測フラグres_pred_flag=1、かつ、LX残差予測制限フラグNoResPredLXFlag=0の場合、推定残差生成部15230を構成する各スケーリング部15221、動き補償部15222、および残差生成部15223の処理を通して、LX予測画像predSamplesLXに対応する残差画像resSamplesLXを生成し、残差合成部15224aへ出力する。それ以外の場合、すなわち、残差予測フラグres_pred_flag=0、または、残差予測フラグres_pred_flag=1、かつ、LX残差予測制限フラグNoResPredLXFlag=1の場合、LX予測画像predSamplesLXに対応する残差画像resSamplesLXの生成を省略する。
残差合成部15224aは、残差予測フラグres_pred_flag、およびLX残差予測制限フラグNoResPredLXFlagに基づいて、補正LX予測画像predSamplesLX’を生成し、出力する。すなわち、予測残差フラグres_pred_flag=1、かつ、LX残差予測制限フラグNoResPredLXLFlag=0の場合には、残差予測重み係数インデックスres_pred_weight_idxで指定される重み係数res_pred_weightを残差画像resSamplesLXへ乗算し、対象PUのLX予測画像predSamlesLXと合成し、合成した補正LX予測画像predSamplesLX’を出力する。また、それ以外の場合、すなわち、残差予測フラグres_pred_flag=0、または、残差予測フラグres_pred_flag=1、かつ、LX残差予測制限フラグNoResPredLXFlag=1の場合、対象PUのLX予測画像predSampleLXをそのまま出力する。その他の残差画像resPredSmaplesとLX予測画像predSamplesLXの合成処理は、残差合成部15224と同じであるため説明を省略する。
以上、上記残差予測部1522aによれば、残差予測フラグres_pred_flagが1、かつ、LX残差予測制限フラグNoResPredLXFlagが0の場合には、対象PUのLX予測画像predSamplesLXに対して残差予測を行い、それ以外の場合、すなわち、残差予測フラグres_pred_flag=0、または、残差予測フラグres_pred_flag=1、かつ、LX残差予測制限フラグNoResPredLXFlag=1の場合、対象PUのLX予測画像predSampleLXをそのまま出力する構成である。すなわち、対象PUの予測モードが双予測である場合には、L0予測画像、または、L1予測画像のいずれか一方に対応する推定残差の生成を省略する構成である。従って、単予測の場合、L0予測画像、L1予測画像に関して、双予測の場合、L0予測画像、またはL1予測画像の何れか一方に関して、対象レイヤ(第2のレイヤ画像)とは異なる参照レイヤ(第1のレイヤ画像)の残差resSamplesを、残差予測重み係数res_pred_weightだけ乗算し、対象レイヤのLX予測画像predSamplesLXに加算することで、LX予測画像を補正することができるため、予測画像の精度が増し、符号化効率を改善する効果を奏する。また、双予測の場合、L0予測画像、またはL1予測画像の何れか一方に対応する推定残差に係る処理量を削減する効果を奏する。
<残差予測部1522の変形例2>
以下では、残差予測部1522の変形例1に係る残差予測部1522aについて説明する。
図50は、残差予測部1522bの概略構成図を示す機能ブロック図である。図50に示すように、残差予測部1522bは、垂直動きベクトルラウンド部15227、推定残差生成部15230b、および残差合成部15224により構成される。また、推定残差生成部15230bは、さらに、スケーリング部15221、残差生成部15223、および動き補償部15222によって構成される。なお、残差予測部1522aと同一の機能ブロックには、同一の符号を付し、説明を省略する。以下では、LX垂直動きベクトルラウンド部15227について説明する。
まず、残差予測部1522bは、対象レイヤの現ピクチャCurPicEL上の対象PUと対応する同時刻の参照レイヤのピクチャCurPicBLの参照領域CurPicBLReg、および対象レイヤの参照画像インデックスRefIdxLX及び参照画像リストLXで指定される参照画像RefPicLXELの参照領域RefPicLXELRegと対応する同時刻のピクチャRefPicLXBLの参照領域RefPicLXBLRegを設定する。ここで、参照領域CurPicBlReg、及び参照領域RefPicLXBLRegについては、残差予測部1522において説明済のため、省略する。
垂直動きベクトルラウンド部15227は、入力された対象レイヤの当該PUの動き補償パラメータのうち、垂直成分の動きベクトルMvLX[1]に関して、整数精度へラウンドする。すなわち、以下の式により、垂直成分の動きベクトルMvLX[1]を整数精度へラウンドする。
MvLX[1] = sign3(MvLX[1]) * (Abs(MvLX[1]) >> bitShiftToInt ) << bitShiftToInt;
ここで、sign3(X)は、入力変数Xに関する正負の符号を返す関数であり、入力変数Xが正の場合1を返し、負の場合−1を返し、0の場合は0を返す。また、変数bitShfitToIntは、動きベクトルの精度により定まる変数であり、例えば、1/2^N[Pel]精度の動きベクトルの場合、分母の値2^Nの2を底とする対数値NをbitShiftToIntへ設定する。すなわち、
bitShiftToInt = N;
例えば、1/4[Pel]精度の動きベクトルであれば、bitShiftToIntの値は2となり、1/8[Pel]精度の動きベクトルであれば、bitShiftToIntの値は3となる。
推定残差生成部15230bは、入力された残差予測フラグres_pred_flagに基づいて、LX予測画像に対応する残差画像resSamplesLXを生成する。すなわち、残差予測フラグres_pred_flag=1の場合、推定残差生成部15230を構成する各スケーリング部15221、動き補償部15222、および残差生成部15223の処理を通して、LX予測画像predSamplesLXに対応する残差画像resSamplesLXを生成し、残差合成部15224へ出力する。それ以外の場合、すなわち、残差予測フラグres_pred_flag=0の場合、LX予測画像predSamplesLXに対応する残差画像resSamplesLXの生成を省略する。
以上、上記残差予測部1522bによれば、動き補償部15222では、入力される動きベクトルMvLX[]のうち、垂直方向の成分に関して、垂直動きベクトルラウンド部15227において、整数精度へラウンドされているため、水平方向に関してのみ動き補償フィルタの処理を実施することになる。従って、垂直方向の動き補償フィルタの処理が省略されるため、LX予測画像に対応する推定残差に係る動き補償の処理量を削減することが可能である。一般的に、メモリ上で、水平方向と垂直方向へ画素をアクセスする場合を比較すると、垂直方向へ画素をアクセスする方がより処理が重いため、垂直方向の動きベクトルの精度をラウンドする方がメモリアクセスの処理を低減することが可能である。また、一般的に、動画像では、水平方向の動きベクトルの発生頻度が大きく、垂直方向の動きベクトルの発生頻度は少ない。そのため、垂直方向の動きベクトルの精度をラウンドしても、残差予測の改善幅の低下が少ない。すなわち、符号化効率を維持しつつ、残差予測の処理量を削減することが可能である。
<残差予測部1522の変形例3>
以下では、残差予測部1522の変形例3に係る残差予測部1522cについて説明する。
図51は、残差予測部1522cの概略構成図を示す機能ブロック図である。図51に示すように、残差予測部1522cは、推定残差生成部15230c、および残差合成部15224により構成される。また、推定残差生成部15230cは、さらに、動き補償部15222c、残差生成部15223c、およびスケーリング部15221cによって構成される。なお、残差予測部1522と同一の機能ブロックには、同一の符号を付し、説明を省略する。以下では、推定残差生成部15230c、動き補償部15222c、残差生成部15223c、およびスケーリング部15221cについて説明する。
残差予測部1522cは、対象レイヤの現ピクチャCurPicEL上の対象PUと対応する同時刻の参照レイヤのピクチャCurPicBLの参照領域CurPicBLReg、および対象レイヤの参照画像インデックスRefIdxLX及び参照画像リストLXで指定される参照画像RefPicLXELの参照領域RefPicLXELRegと対応する同時刻のピクチャRefPicLXBLの参照領域RefPicLXBLRegを設定する。具体的には、対象レイヤ上の現ピクチャCurPicELの高さおよび幅を、それぞれhPicおよびwPicとする。また、対象PUの高さおよび幅を、それぞれhPU、wPUとし、左上画素の位置の現ピクチャCurPicELのける座標表現を、(xPU,yPU)とする。また、参照レイヤ上の現ピクチャCurPicBLの高さおよび幅を、それぞれhRefPicおよびwRefPicとする。
対象PU(tgtPU)に対応する参照領域CurPicBLRegは、次のように設定される。以下の計算により、参照領域CurPicBLRegの座標(xCurPicBLReg, yCurPicBLReg)、及び幅wBLReg、高さwBLRegが導出される。なお、以下のscaleX・scaleYは、対象レイヤの現ピクチャの幅・高さの参照レイヤの現ピクチャの幅・高さに対する比である。
xCurPicBLReg = xPu / scaleX
yCurPicBLReg = yPu / scaleY
wBLReg = wPu / scaleX
hBLReg = hPu / scaleY
scaleX = wPic / wRefPic
scaleY = hPic / hRefPic
同様に、対象レイヤ上の参照ピクチャRefPicLXELの参照領域RefPicLXELRegと対応する参照レイヤ上の同時刻の参照ピクチャRefPicLXBL上の参照領域RefPicLXBLRegの座標(xRefPicLXELReg, yRefPicLXELReg)、及び幅wBLReg、高さwBLRegは次のように導出される。
xRefPicLXBLReg = (xPu + mvX) / scaleX
yRefPicLXBLReg = (yPu + mvY) / scaleY
wBLReg = wPu / scaleX
hBLReg = hPu / scaleY
ここで、mvX、およびmvYは、それぞれ、対象レイヤの動き補償に用いた動きベクトルのx成分、y成分である。
動き補償部15222cは、設定された参照レイヤの参照画像RefPicLXBLの参照領域RefPicLXBLRegの局所復号画像RefPicLXBLRegSamplesを参照レイヤのピクチャバッファより読み出し、局所復号画像RefPicLXBLRegSamplesと、対象レイヤの参照画像RefPIcLXELから動き補償画像(LX予測画像)predSamplesLXを生成するのに用いた1/2^N[pel]精度の動きベクトルMvLXEL[]に基づいて、整数位置もしくは小数点位置の画像を生成するためにフィルタ処理を行い、参照レイヤの動き補償画像predSamlesLXBLを生成する。なお、動き補償に利用する1/2^N [pel]精度の動きベクトルMvLXEL[i]は、対象レイヤと参照レイヤの画像比scaleX、scaleYを用いて、以下の式により、参照レイヤの画像サイズにおける動きベクトルMvLXBL[i]へラウンディングされるものとする。
MvLXBL[0] = sign3(MvLXEL[0])*
(Abs(MvLXEL[i]) << N ) + (1<<(N-1) ) /scaleX ) >> N;
MvLXBL[1] = sign3(MvLXEL[1])*
(Abs(MvLXEL[i]) << N ) + (1<<(N-1) ) /scaleY ) >> N;
ここで、sign3(X)は、入力変数Xに関する正負の符号を返す関数であり、入力変数Xが正の場合1を返し、負の場合−1を返し、0の場合は0を返す。また、動き補償に用いるフィルタは、例えば、輝度であれば、図11(a)に示す水平、垂直共に8タップの分離フィルタを用いてもよいし、図16(a)に示す水平、垂直共に2タップの分離フィルタを用いて良いし、図16(b)に示す水平、垂直共に4タップの分離フィルタを用いてもよい。また、色差であれば、図17(a)に示す水平、垂直共に2タップの分離フィルタを用いて良いし、図17(b)に示す水平、垂直共に4タップの分離フィルタを用いてもよい。なお、残差予測フラグres_pred_flag=1の場合は、動き補償画像predSamplesLXBLの生成処理をし、残差予測フラグres_pred_flag=0の場合は、動き補償画像predSamplesLXBLの生成処理を省略する。
残差生成部15223cは、設定された現画像と対応する参照レイヤの画像CurPicBLの参照領域CurPicBLRegの局所復号画像CurPicBLRegSamplesを参照レイヤのピクチャバッファより読み出し、局所復号画像CurPicBLRegSamplesと、動き補償部15222cで生成された、対象レイヤの参照画像RefPicLXELと対応する参照レイヤの参照画像RefPicLXBLの動き補償画像predSamplesLXBLとの差分を計算し、参照レイヤの残差画像resSamplesLXBLを生成する。すなわち、参照レイヤの画像サイズにおいて、座標(x、y)の残差resSamplesLXBL [x, y]は、以下の式により導出される。
resSamplesLXBL[x, y] = CurPicBLRegSamples[x, y] - predSamplesLXBL[x, y]
その後、参照レイヤの残差画像resSamplesLXBLをスケーリング部15221cへ出力する。なお、残差予測フラグres_pred_flag=1の場合は、参照レイヤの残差画像resSamplesLXBLの生成処理をし、残差予測フラグres_pred_flag=0の場合は、参照レイヤの残差画像resSamplesLXBLの生成処理を省略する。
スケーリング部15221cは、入力された参照レイヤの残差画像resSamplesLXBLを、所定のアップサンプリングフィルタによりx方向へscaleX、y方向へscaleYだけスケーリングし、参照レイヤの残差画像resSamplesLXBLをアップサンプルしたアップサンプル済残差画像resSamplesLXを生成する。生成された参照レイヤのアップサンプル済残差画像resSamplesLXは、残差合成部15224へ出力される。なお、アップサンプル残差画像が生成されるのは、対象レイヤのスケーラビリティが空間スケーラビリティの場合のみである。対象レイヤのスケーラビリティがSNRスケーラビリティの場合、つまり、scaleX=scaleY=1の場合は、入力された参照レイヤの残差画像resSamplesLXBLを、アップサンプル済残差画像resSamplesLXとして出力するものとする。なお、残差予測フラグres_pred_flag=1の場合は、アップサンプル残差画像の生成処理をし、残差予測フラグres_pred_flag=0の場合は、アップサンプル残差画像の生成処理を省略する。
以上、上記残差予測部1522cによれば、対象PUのLX予測画像predSamplesLXに対応する残差画像resSamplesLXを、まず参照レイヤの解像度において生成する。すなわち、参照レイヤの推定残差の生成に係る動き補償を、参照レイヤの解像度において実施するため、動き補償に係る処理量を削減することが可能である。また、残差予測部1522と同様に、残差予測フラグres_pred_flagが1の場合に、対象PUのLX予測画像predSamplesLXに対して、残差予測を行う。残差予測は、予測画像生成の対象とする対象レイヤ(第2のレイヤ画像)とは異なる参照レイヤ(第1のレイヤ画像)の残差resSamplesを、残差予測重み係数インデクスres_weight_indexが示す重み係数res_weightだけ乗算し、対象レイヤのLX予測画像predSamplesLXに加算することで、LX予測画像を補正することができるため、予測画像の精度が増し、符号化効率を改善する効果を奏する。
<可変長復号部12の詳細>
以下、可変長復号部12における残差予測情報の復号の詳細を説明する。
図22は、可変長復号部12において、残差予測情報を含む符号化データを復号する動作を示す図である。
(S301)可変長復号部12は、所定のパラメータセット(例えば、スライスヘッダSH)単位毎に、所定単位毎に残差予測フラグを復号するか否かを示す残差予測有効フラグres_pred_enable_flagを復号する。続いて、各CTBにおいて、以下の処理を行う。
(S302)CUのループを開始する。CUのループはCTBに含まれる全てのCUを順に処理することで行われる。
(S303)PUのループを開始する。PUのループは該CUに含まれる全てのPUを順に処理することで行われる。
(S304)PUのループ内では、残差予測情報(res_pred_flag, res_pred_weight)を除く、予測情報PInfoの内該PUに対応する情報を復号する。例えば、マージインデックス、マージフラグ、インター予測識別子、参照画像インデックス、推定動きベクトルインデックス、動きベクトル残差と、が復号される。
(S305)続いて、本PUにおいて、残差予測有効フラグ(res_pred_enable_flag)が1、かつ、所定条件を満たすか否かを判定する(S305)。残差予測有効フラグが1かつ、所定条件を満たす場合(ステップ305でYes)、残差予測フラグを復号へ遷移する(S306に遷移)。それ以外の場合(ステップ305でNo)、残差予測フラグの復号は省略され、res_pred_flag=0へ設定される(S309に遷移)。上記所定条件(残差予測が利用可能な状態であるか)を満たすか否かとは、具体的には、(1)〜(3)の条件に関して、各条件の判定式の値をret1, ret2, ret3とすると、例えば、以下の条件(a)〜(c)の何れかを満たすことである。なお、retXの値が1の場合を真、0の場合を偽と解釈する。
(1)対象レイヤの現画像と対応する同時刻(poc)の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に存在するか否か
(2)対象レイヤの当該PUにおいて、参照画像利用リストフラグpredFlagL0が1の場合、参照画像リストL0と参照画像インデックスRefIdxL0から定まる対象レイヤの参照画像と対応する同時刻(poc)の参照レイヤの復号画像が存在する否か
(3)対象レイヤの当該PUにおいて、参照画像利用リストフラグpredFlagL1が1の場合、参照画像リストL1と参照画像インデックスRefIdxL1から定まる対象レイヤの参照画像と対応する同時刻(poc)の参照レイヤの復号画像が存在する否か
ここで、pocとは、ピクチャ順序番号(Picture Ordering Count)を表わし、復号画像の表示時刻に関連するパラメータである。
(a)インター予測識別子inter_pred_idcがL0予測である場合、残差予測L0予測有効フラグres_predL0_enable_flagを以下の式で導出する。
res_predL0_enable_flag = ret1 && ( ret2 ) ?
・・・条件(1)を満たし、かつ、条件(2)を満たすか否か。
(b)インター予測識別子inter_pred_idcがL1予測である場合、残差予測L1予測有効フラグres_predL1_enable_flagを以下の式で導出する。
res_predL1_enable_flag = ret1 && ( ret3 ) ?
・・・条件(1)を満たし、かつ、条件(3)を満たすか否か。
(c)インター予測識別子inter_pred_idcが双予測である場合、残差予測双予測有効フラグres_predBI_enable_flagを以下の式で導出する。
res_predBI_enable_flag= ret1 && ( ret2 && ret3) ?
・・・条件(1)を満たし、かつ条件(2)を満たし、かつ条件(3)を満たすか否か。なお、双予測に関しては、条件(c)の代わりに条件(d)を用いてもよい。
(d)res_predBI_enable_flag= ret1 && ( ret2 || ret3 ) ?
・・・条件(1)を満たし、かつ、条件(2)または条件(3)の何れかを満たすか否か。
以下、(1)〜(3)の条件に関して、図23(a)〜(c)を用いて説明する。図23(a)は、対象レイヤの現画像CurPicEL、参照画像RefPicEL、及び対象レイヤの現ピクチャCurPicELと対応する同時刻の参照レイヤの現ピクチャCurPicBL、参照レイヤの参照ピクチャRefPicELと対応する同時刻の参照レイヤの参照ピクチャRefPicBLを表わす。なお、図23(a)において、参照レイヤにおいて、点線で表現された画像(poc=6, 8, 10)は、符号化/復号されない画像を表わす。また、図23(b)は、対象レイヤのピクチャバッファ上にある復号画像、または現画像の復号画像の一例を表わす。idx=0は、現画像CurPicELの復号画像を表わし、idx=1〜4は、それぞれ対象レイヤにおいて、poc=8, 7, 6, 1の復号画像である。また、図23(c)は、参照レイヤのピクチャバッファにある復号画像、または現画像の復号画像の一例を表わす。idx=0は、現画像CurPicBLの復号画像を表わし、idx=1〜4は、それぞれ参照レイヤにおいて、poc=7, 5, 3, 1の復号画像である。
まず、条件(1)に関して、対象レイヤの現画像CurPicELのpocがCurPocの場合、参照レイヤのピクチャバッファ上に、対応する同時刻(poc==curPoc)となる復号画像CurPicBLがあるか判定する。判定式は、例えば、以下の式により判定する。
RefLayerPocExist(CurPoc) ?
ここで、RefLayerPocExist( X )は、対象レイヤのあるpoc=Xと対応する参照レイヤの復号画像が、参照レイヤのピクチャバッファ上にある場合に1を返し、存在しない場合は0を返す関数である。例えば、図23(a)において、対象レイヤの現画像CurPicELのpocが9である場合、図23(c)において、参照レイヤのピクチャバッファ上に対応する同時刻(poc=9)が存在するため、判定式RefLayerPocExist(CurPoc=9)の戻り値は1となる。従って、対象レイヤの現画像CurPicELと対応する参照レイヤの復号画像CurPicBLが存在すると判定される。
続いて、条件(2)〜(3)に関して、対象レイヤの参照画像リスト利用フラグpredFlgLXが1の場合、参照画像リストLXと参照画像インデックスrefIdxLXから定まる参照画像RefPicELのpoc(=RefPicPoc(LX, refIdxLX))と対応する同時刻の参照レイヤの復号画像RefPicBLが、参照レイヤのピクチャバッファ上にあるかを以下の式により求める。
RefLayerPocExist( RefPicPoc( LX, refIdxLX ) ) ?
ここで、RefPicPoc( LX, refIdxLX )は、参照画像リストLX上の参照画像インデックスrefIdxLXにより指定される参照画像のpocを返す関数である。なお、条件(2)の場合は、LXをL0へ置き換えて解釈し、条件(3)の場合は、LXをL1へ置き換えて解釈するものとする。例えば、図23(a)において、対象レイヤの参照画像リストLXとrefIdxLXから定まる参照画像refPicELのpoc(=RefPicPoc( LX, refIdxLX) )が8であるとする。この場合、図23(c)において、参照レイヤのピクチャバッファ上に対応する同時刻(poc=8)が存在しないため、判定式RefLayerPocExist( 8 )の戻り値は0となる。従って、対象レイヤの参照画像RefPicELと対応する参照レイヤの復号画像RefPicELは存在しないと判断される。
以上、インター予測識別子inter_pred_idcが示す予測モード(L0予測、L1予測、双予測)毎に、残差予測を利用可能な状態であるかを判定することで、明示的に残差予測フラグを復号するか否かを制御することが可能である。従って、残差予測を利用できない場合は、残差予測フラグの復号を省略することができるため、残差予測フラグの復号に係る処理量を削減することができる。
(S306)残差予測フラグres_pred_flagを復号する。
(S307)残差予測フラグres_pred_flagが1であるかを判定する。残差予測フラグが1である場合(S307でYes)、残差予測重み係数インデックスを復号へ遷移する(S308へ遷移)。それ以外の場合は、S309へ遷移する。
(S308)残差予測重み係数インデックスres_pred_weight_idxを復号する。残差予測重み係数インデックスと対応する重み係数をres_pred_weightへ設定する。
(S309)PU単位のループの終端である。
(S310)CU単位のループの終端である。
以上の構成の可変長復号部12によれば、インター予測識別子inter_pred_idcが示す予測モード(L0予測、L1予測、双予測)毎に、残差予測を利用可能な状態であるかを、以下の(1)〜(3)の条件に基づいて判定することで、明示的に残差予測フラグを復号するか否かを制御することが可能である。従って、残差予測を利用できない場合は、残差予測フラグの復号を省略することができるため、残差予測フラグの復号に係る処理量を削減することができる。
(1)対象レイヤの現画像と対応する同時刻の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に存在するか否か
(2)対象レイヤの当該PUにおいて、参照画像利用リストフラグpredFlagL0が1の場合、参照画像リストL0と参照画像インデックスRefIdxL0から定まる対象レイヤの参照画像と対応する同時刻の参照レイヤの復号画像が存在する否か
(3)対象レイヤの当該PUにおいて、参照画像利用リストフラグpredFlagL1が1の場合、参照画像リストL1と参照画像インデックスRefIdxL1から定まる対象レイヤの参照画像と対応する同時刻の参照レイヤの復号画像が存在する否か
<残差予測情報の符号化データ上の構成>
図24は、可変長復号部12で復号される符号化データの構成の予測単位の符号化データ部分(図3の予測情報PInfoに対応)を示す図である。
本例では、残差予測情報が、PUごとに符号化される。図24に示す通り、符号化データの予測単位の符号化データは、図24のSYN1Aで示される動き補償パラメータ(マージインデックスmerge_idx、マージフラグmerge_flag、インター予測識別子inter_pred_idc、参照画像インデックスref_idx_l0、ref_idx_l1、推定動きベクトルインデックスmvp_l0_flag、mvp_l1_flag、動きベクトル残差mvd_coding)と、SYN2Aで示される該PUに対応する残差予測情報(残差予測フラグres_pred_flag, 残差予測重み係数インデックスres_pred_weight_idx)から構成される。図24のように、予測単位の符号化データでは、動き補償パラメータ、残差予測情報の順に符号化を配置する。この順序で配置することにより、予測単位ごとの動き報償パラメータの値に応じて、残差予測を適用するか否かを表わす残差予測フラグを明示的に復号するか否かを制御することが可能である。SYN2Aに次の判定がある。
res_pred_enable_flag &&
( ( inter_pred_idc[x0][y0]==Pred_L0 && res_predL0_enable_flag) ||
( inter_pred_idc[x0][y0]==Pred_L1 && res_predL1_enable_flag) ||
( inter_pred_idc[x0][y0]==Pred_BI && res_predBI_enable_flag) ) ?
本判定は、該PUのインター予測識別子inter_pred_idcが示す予測モード(L0予測、L1予測、双予測)において、残差予測が利用可能な状態であるか否かの判定であり、図22のS305の判定に相当する。
以上の符号化構造では、残差予測が利用可能な状態である場合のみ、残差予測情報(残差予測フラグres_pred_flag、残差予測重み係数インデクスres_pred_weight_idx)が含まれ、それ以外の場合は、残差予測情報は含まれない。従って、該PU単位において、残差予測が利用可能な状態のときのみ、残差予測情報が符号化されるため、残差予測情報の符号量を低減する効果が得られる。
<可変長復号部12の変形例1>
上述の<可変長復号部12の詳細>では、図22のステップS305において、残差予測有効フラグ(res_pred_enable_flag)が1であるか否かと、所定条件(残差予測が利用可能な状態であるか)を満たすか否かに基づいて、残差予測情報を復号するか否かを判定しているが、これに限定されない。例えば、図31に示すフロー図のように、ステップS305をステップS321とステップS322に置き換えてもよい。以下、図31、及び図32を用いて、可変長復号部12の変形例1において、残差予測情報を含む符号化データを復号する動作について説明する。なお、図31において、ステップS301〜ステップS304、ステップS306〜ステップ310は、図22の各ステップと同一であるため、説明を省略し、ステップS321、ステップS322について説明する。
(S321)続いて、本PUにおいて、残差予測利用可フラグ(ResPredAvailableFlag)を導出する。残差予測利用可フラグとは、本PUにおいて、残差予測情報を復号するか否かを制御するフラグである。残差予測利用可フラグの導出については、後述する。
(S322)残差予測利用可フラグ(ResPredAvaiableFlag)の値が1であるか否かを判定する。残差予測利用可フラグが1である場合(ステップS322においてYes)、
残差予測フラグを復号へ遷移する(S306に遷移)。それ以外の場合、すなわち、残差予測利用可フラグが0である場合(ステップ322でNo)、残差予測フラグの復号は省略され、res_pred_flag=0へ設定される(S309に遷移)。
以上、可変長復号装置12の変形例1によれば、残差予測利用可フラグに基づいて、残差予測情報を明示的に復号するか否かを制御することが可能である。従って、残差予測利用可フラグが、残差予測情報を復号しないことを示す場合、残差予測情報に係る復号を省略することができるため、残差予測情報の復号に係る処理量を削減することができる。
<残差予測利用可フラグの導出について>
図33を用いて、残差予測利用可フラグの導出について説明する。図33は、可変長復号部12の変形例1、および後述の可変長符号化装置25の変形例1における残差予測利用可フラグの導出の動作を示すフローチャートである。
(S305−1)対象レイヤのレイヤ識別子(layer_id)が0より大きいか否かを判定する。なお、レイヤ識別子layer_idの値が0の場合は、対象レイヤが基本レイヤであることを示し、レイヤ識別子layer_idの値が0より大きい場合は、対象レイヤが拡張レイヤであることを示す。レイヤ識別子layer_idが0より大きい場合(ステップS305−1においてYes)、ステップS305−2へ遷移する。それ以外の場合(ステップS305−1においてNo)、ステップS305−5へ遷移する。
(S305−2)残差予測有効フラグ(res_pred_enable_flag)が1であるか否かを判定する。残差予測有効フラグが1の場合(ステップ305−2でYes)、ステップS305−3へ遷移する。残差予測有効フラグが0の場合、ステップS305−5へ遷移する。
(S305−3)所定条件AXを満たすか否かを判定する。所定条件AXを満たす場合(ステップS305−3においてYes)、ステップ305−4へ遷移する。所定条件AXを満たさない場合、ステップ305−5へ遷移する。
(S305−4)残差予測利用可フラグ(ResPredAvailableFlag)を1へ設定する。
(S305−5)残差予測利用可フラグ(ResPredAvailableFlag)を0へ設定する。
ステップ305−3において、所定条件AXとは、例えば、以下に示す(A1)〜(A6)に示す条件である。
(A1)処理対象の予測単位(PU)のサイズが所定サイズより大きいか否か
(A2)処理対象の予測単位を含むCUのサイズが所定サイズ以上であるか否か
(A3)処理対象の予測単位を含むCUのPU分割タイプが2N×2Nであるか否か
(A4)処理対象の予測単位のインター予測が単予測であるか否か
(A5)処理対象の予測単位の予測モードがスキップモード、またはマージモードであるか否か
(A6)処理対象の予測単位の参照画像が所定条件を満たすか否か
以下では、各所定条件A1〜A6の詳細について説明する。
(所定条件A1について)
図34は、残差予測利用可フラグを導出する所定条件として、「当該予測単位のサイズが所定サイズより大きいか否か」を含める場合を示すフローチャートである。 この場合、図34のステップS305−3aにおいて、当該予測単位のサイズが所定サイズより大きいか否かを、例えば、PUサイズの縦幅pHと、横幅pWに基づいて、以下の判定式により判断する。
pH + pW > TH_PUSIZE ?
すなわち、上記判定式が“真”を示す場合(当該予測単位のPUサイズの縦幅pHと横幅pWの和が所定閾値より大きい場合)(ステップS305−3aにおいてYes)、ステップS305−4へ遷移し、残差予測利用可フラグを1へ設定する。また、上記判定式が“偽”を示す場合(当該予測単位のPUサイズの縦幅pHと横幅pWの和が所定閾値以下である場合)(ステップS305−3aにおいてNo)、ステップS305−5へ遷移し、残差予測利用可フラグを0へ設定する。
なお、ステップS305−3aからステップS305−4へ遷移する前に、所定条件AXの追加の判定として、所定条件A1を除く所定条件A1〜A6のいずれかの判定処理へ遷移する構成としてもよい。ここで、所定閾値TH_PUSIZEの具体例としては、16と設定することが好ましい。例えば、最大CUサイズが64x64(Log2MaxCbSizeY = 6 )、最小CUサイズが8x8であるとすると、図42に示すように、PUの縦幅pHと横幅pWの和が16以下となる予測単位(PUサイズ:8x8, 8x4, 4x8)に関して、残差予測が制限される(残差予測をOFF)。すなわち、小サイズの予測単位に関して、残差予測の適用を制限する。なお、上記判定式(pH + pW > TH_PUSIZE?)に代わりに、以下の判定式によって判定してもよい。
(pH > TH_PUSIZE) || (pW > TH_PUSIZE) ?
すなわち、上記判定式が“真”を示す場合(当該予測単位のPUサイズの縦幅pH、または横幅pWが所定閾値より大きい場合)(ステップS305−3aにおいてYes)、ステップS305−4へ遷移し、残差予測利用可フラグを1へ設定する。また、上記判定式が“偽”を示す場合(当該予測単位のPUサイズの縦幅pH、または横幅pWが所定閾値以下である場合)(ステップS305−3aにおいてNo)、ステップS305−5へ遷移し、残差予測利用可フラグを0へ設定する。この場合、閾値TH_PUSIZEを8と設定すれば、PUの縦幅pH、または横幅pWが8以下となる予測単位(PUサイズ:8x8, 8x4, 4x8)に関して、残差予測が制限される(残差予測をOFF)。
一般的に、インター予測において、小サイズの予測単位(PU)は、大サイズのPUに比べて単位面積あたりの処理量が大きい。従って、小サイズのPUにおいて残差予測を適用することは処理のボトルネックを招くことにとなりうる。このため、小サイズのPUでは、残差予測を抑制することで、処理量が過度に増大することを抑えることができる。特に、最も小さいサイズのPUを処理するような最悪ケースの処理量を抑制することができる。従って、PUサイズが所定閾値より大きいときのみに残差予測のON/OFF制御するように制限する(それ以外は、残差予測をOFF)ことによって、所定閾値以下のPUサイズとなる予測単位に関して最悪ケースの処理量を削減することができる。また、実験から、例えば、PUサイズ=8x8、4x8、8x4となるPUにおいて、残差予測をOFFとするように制限しても、残差予測により得られる符号化効率の改善幅の低下は少ないことが分かっている。また、階層動画像復号装置1は、PUサイズが所定閾値より大きいときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、PUサイズが所定閾値以下の場合において残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
以上、階層動画像符号化装置2は、PUサイズが所定閾値より大きいときのみに残差予測のON/OFF制御するように制限する(それ以外は、残差予測をOFF)ことによって、所定閾値以下のPUサイズの予測単位に関して最悪ケースの処理量を削減することができる。また、階層動画像符号化装置2は、PUサイズが所定閾値より大きいときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを符号化するため、PUサイズが所定閾値以下の場合において残差予測に係る予測パラメータのシンタックスの符号化に係る処理量、および符号量を削減することが可能である。
また、残差予測を制限するPUサイズの閾値を単予測、双予測毎に設定してもよい。例えば、インター予測識別子inter_pred_idcと、PUの縦幅pH、横幅pW、第1の閾値TH_PUSIZE1と第2の閾値TH_PUSIZE2を用いて、以下の判定式によって判定する。
( (inter_pred_idc == Pred_L0 || inter_pred_idc == pred_L1) && ( pH + pW > TH_PUSIZE1) ) ||
( (inter_pred_idc == Pred_BI) && ( pH + pW > TH_PUSIZE2 ) ) ?
上記判定式において、(inter_pred_idc == Pred_L0 || inter_pred_idc == pred_L1) && ( pH + pW > TH_PUSIZE1)の部分が“真”となる場合(当該予測単位の予測モードが単予測であり、かつ、当該予測単位のPUサイズの縦幅pHと横幅pWの和が第1の閾値より大きい場合)、または、上記判定式の(inter_pred_idc == Pred_BI) && ( pH + pW > TH_PUSIZE2)の部分が“真”となる場合(当該予測単位の予測モードが双予測であり、かつ、当該予測単位のPUサイズの縦幅pHと横幅pWの和が第2の閾値より大きい場合)、ステップS305−4へ遷移し、残差予測利用可フラグを1へ設定する。それ以外の場合、ステップS305−5へ遷移し、残差予測利用可フラグを0へ設定する。ここで、第2の閾値TH_PUSIZE2の値は、第1の閾値TH_PUSIZE1の値以上に設定することが好ましい。例えば、第1の閾値TH_PUSIZE1を12へ設定し、第2の閾値TH_PUSIZE2を16へ設定することが好ましい。例えば、最大CUサイズが64x64(Log2MaxCbSizeY = 6 )、最小CUサイズが8x8であるとすると、図42に示すように、単予測の場合、PUの縦幅pHと横幅pWの和が12以下となる予測単位(PUサイズ: 8x4, 4x8)に関して、残差予測が制限される(残差予測をOFF)。また、双予測の場合、PUの縦幅pHと横幅pWの和が16以下となる予測単位(PUサイズ:8x8, 8x4, 4x8)に関して、残差予測が制限される。すなわち、小サイズの予測単位に関して、残差予測の適用を制限する。なお、閾値は、(TH_PUSIZE1,TH_PUSIZE2) = (12,16)に限定されず、以下の条件を満たすように各閾値の値を設定してもよい。
TH_PUSIZE1⊂{12, 16, 20, 24, 28, 32, 48, 64}、かつ、TH_PUSIZE2⊂{12, 16, 20, 24, 28, 32, 48, 64}、かつ、TH_PUSIZE1≦TH_PUSIZE2
一般的に、インター予測において、小サイズの予測単位(PU)は、大サイズのPUに比べて単位面積あたりの処理量が大きい。従って、小サイズのPUにおいて残差予測を適用することは処理のボトルネックを招くことにとなりうる。また、双予測は、単予測と比較して、L0予測画像、L1予測画像を生成する必要があるため、処理が複雑である。さらに、双予測において、残差予測を実施する場合、各LX予測画像に対応する参照レイヤからの推定残差(残差画像)を生成する必要があるため、単予測において、残差予測を実施する場合に比べて、処理がさらに複雑となり、処理のボトルネックを招くことになりうる。従って、小サイズのPUでは、残差予測を抑制することで、処理量が過度に増大することを抑えることができる。特に、単予測の場合、PUサイズが第1の閾値より大きいときのみに残差予測のON/OFF制御するように制限し、双予測の場合、PUサイズが第2の閾値より大きいときのみ残差予測のON/OFF制御するように制限することによって、各予測モード毎(単予測、双予測毎)における残差予測による符号化効率の改善幅の低下を抑えつつ、小さいサイズのPUを処理するような最悪ケースの処理量を抑制することができる。また、階層動画像復号装置1は、単予測の場合、PUサイズが第1の閾値より大きいときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、PUサイズが第1の閾値以下の場合において残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減し、双予測の場合、PUサイズが第2の閾値より大きいときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、PUサイズが第2の閾値以下の場合において残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
以上、階層動画像符号化装置2は、単予測の場合、PUサイズが第1の閾値より大きいときのみ、残差予測のON/OFF制御するように制限し、双予測の場合、PUサイズが第2の閾値より大きいときのみに残差予測のON/OFF制御するように制限することによって、各予測モード毎(単予測、双予測毎)に、所定閾値以下のPUサイズの予測単位に関して最悪ケースの処理量を削減することができる。また、階層動画像符号化装置2は、単予測の場合、PUサイズが第1の閾値より大きいときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを符号化するため、PUサイズが第1の閾値以下の場合において残差予測に係る予測パラメータのシンタックスの符号化に係る処理量を削減し、双予測の場合、PUサイズが第2の閾値より大きいときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを符号化するため、PUサイズが第2の閾値以下の場合において残差予測に係る予測パラメータのシンタックスの符号化に係る処理量、および符号量を削減することが可能である。
(所定条件A2について)
図35は、残差予測利用可フラグを導出する所定条件として、「当該予測単位の属するCUのサイズが所定サイズ以上である否か」を含める場合を示すフローチャートである。この場合、図35のステップS305−3bにおいて、当該予測単位の属するCUのサイズが所定サイズ以上であるか否かを、例えば、CUサイズを示すlog2CbSizeに基づいて、以下の判定式により判断する。
log2CbSize>=TH_Log2CbSize ?
すなわち、上記判定式が“真”を示す場合(当該予測単位の属するCUのサイズが所定閾値以上である場合)(ステップS305−3bにおいてYes)、ステップS305−4へ遷移し、残差予測利用可フラグを1へ設定する。また、上記判定式が“偽”を示す場合(ステップS305−3bにおいてNo)、ステップS305−5へ遷移し、残差予測利用可フラグを0へ設定する。なお、ステップS305−3bからステップS305−4へ遷移する前に、所定条件AXの追加の判定として、所定条件A2を除く所定条件A1〜A6のいずれかの判定処理へ遷移する構成としてもよい。
ここで、log2CbSizeは、CUサイズの対数表現であり、例えば、CUサイズ64x64、32x32、16x16、8x8の場合、それぞれ、6、5、4、3の値に対応する。また、閾値TH_Log2CbSizeの具体例としては、例えば、4を設定することが好ましい。上記設定の場合、CUサイズ64x64、32x32、16x16であるCUに属する予測単位に関しては、残差予測のON/OFF制御を実行し、CUサイズ8x8であるCUに属する予測単位に関しては、残差予測をOFFとする。なお、閾値TH_Log2CbSizeは4に限定されず、5としてもよい。なお、CUサイズを示すlog2CbSizeの代わりに、CUの横幅wCU、または、縦幅hCUに基づいて、以下の判定式によって判断してもよい。
wCU >= (1<<TH_Log2CbSize) ?
また、閾値TH_Log2CbSizeは、輝度の最小CUサイズを規定するLog2MinCbSizeYの値に設定してもよい。なお、Log2MinCbSizeYは、以下の式により導出される。
Log2MinCbSizeY = log2_min_luma_coding_block_size_minus3 + 3
ここで、log2_min_luma_coding_block_size_minus3は、輝度の最小CUサイズの対数値−3の値を示し、シーケンスパラメータセット等のパラメータセットに含まれる。なお、CUサイズを示すlog2CbSizeの代わりに、当該予測単位の属するCUを含む符号化ツリーブロックCTBの分割の深度を示すcqtDepthに基づいて、以下の判定式によって判断してもよい。すなわち、CUのcqtDepthが所定閾値TH_cqtDepthより小さいか否かを判定する。
cqtDepth < TH_cqtDepth ?
ここで、閾値TH_cqtDepthには例えば、輝度の最大CUサイズの対数表現Log2MaxCbSizeYと輝度の最小CUサイズの対数表現Log2MinCbSizeYを用いて、次のように設定してもよい。TH_cqtDepth = Max(0, Log2MaxCbSizeY - Log2MinCbSizeY - offset)
例えば、最大CUサイズが64x64(Log2MaxCbSizeY = 6 )、最小CUサイズが8x8(Log2MinCbSizeY = 3)、offset = 0とすると、閾値TH_cqtDepthは3となる。この場合、図42に示すように、cqtDepth=3、つまり、CUサイズが8x8となるCUに属する予測単位(PUサイズ:8x8, 8x4, 4x8)に関して、残差予測が制限される(残差予測をOFF)。また、offset = 1とすると、TH_cqtDepthは2となり、cqtDepth=2、3となるCU、つまり、CUサイズが8x8、16x16となるCUに属する予測単位(PUサイズ:16x16,16x8,16x4,16x12,8x6,4x16,12x16,8x8,8x4,4x8)に関して、残差予測が制限される。すなわち、小サイズの予測単位に関して、残差予測の適用を制限する。
一般的に、インター予測において、小サイズの予測単位(PU)は、大サイズのPUに比べて単位面積あたりの処理量が大きい。従って、小サイズのPUにおいて残差予測を適用することは処理のボトルネックを招くことにとなりうる。このため、小サイズのPUでは、残差予測を抑制することで、処理量が過度に増大することを抑えることができる。特に、最も小さいサイズのPUを処理するような最悪ケースの処理量を抑制することができる。従って、CUサイズが所定サイズ以上のときのみに残差予測のON/OFF制御するように制限する(それ以外は、残差予測をOFF)ことによって、所定サイズ未満のCUサイズのCUに属する予測単位に関して最悪ケースの処理量を削減することができる。また、実験から、例えば、CUサイズ=8x8となるCUにおいて、残差予測をOFFとするように制限しても、残差予測により得られる符号化効率の改善幅の低下は少ないことが分かっている。また、階層動画像復号装置1は、CUサイズが所定閾値以上のときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、CUサイズが所定閾値未満の場合において残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
以上、階層動画像符号化装置2は、CUサイズが所定サイズ以上のときのみに残差予測のON/OFF制御するように制限する(それ以外は、残差予測をOFF)ことによって、所定サイズ未満のCUサイズのCUに属する予測単位に関して最悪ケースの処理量を削減することができる。また、また、階層動画像符号化装置2は、CUサイズが所定閾サイズ以上のときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを符号化するため、CUサイズが所定閾値未満の場合において残差予測に係る予測パラメータのシンタックスの符号化に係る処理量、及び符号量を削減することが可能である。
(所定条件A3について)
図36は、残差予測利用可フラグを導出する所定条件として、「当該予測単位の属するCUのPU分割タイプが2N×2Nであるか否か」を含める場合のフローチャートである。この場合、図36のステップS305−3cにおいて、当該予測単位の属するCUのPU分割タイプが2N×2Nであるか否かを、例えば、PU分割タイプを示すPartModeに基づいて、以下の判定式により判断する。
PartMode==PART_2Nx2N ?
ここで、PU分割タイプPartMode(part_mode)の示す値は、図43に示す通りである。すなわち、PART_2Nx2N、PART_2NxN、PART_2NxnU、PART_2NxnDは、それぞれPU分割タイプとして、図4(a)に示す2Nx2N、図4(b)に示す2NxN、図4(c)に示す2NxnU、図4(d)に示す2NxnDに対応し、PART_Nx2N、PART_nLx2N、PART_nRx2N、PART_NxNは、それぞれPU分割タイプとして、図4(e)に示すNx2N、図4(f)に示すnLx2N、図4(g)に示すnRx2N、図4(h)に示すNxNに対応する。なお、インター予測の場合、NxNのPU分割タイプはない。
すなわち、上記判定式が“真”を示す場合(当該予測単位の属するCUのPU分割タイプが、2N×2Nである場合)(ステップS305−3cにおいてYes)、ステップS305−4へ遷移し、残差予測利用可フラグを1へ設定する。また、上記判定式が“偽”を示す場合(ステップS305−3cにおいてNo)、ステップS305−5へ遷移し、残差予測利用可フラグを0へ設定する。なお、ステップS305−3cからステップS305−4へ遷移する前に、所定条件AXの追加の判定として、所定条件A3を除く所定条件A1〜A6のいずれかの判定処理へ遷移する構成としてもよい。
一般的に、インター予測において、CU(符号化単位)のPU分割タイプとして、2N×2Nの場合は、予測単位とCUが一致するため、CU単位あたり1個のインター予測画像を生成すればよい。一方、それ以外の分割タイプ(2NxN、2NxnU、2NxnD、Nx2N、nLx2N、nRx2N)の場合、CUに属する予測単位は2個であるため、CU単位当たりの2個のインター予測画像が生成する必要があるため、2N×2Nと比較して、インター予測画像を生成するために要する処理量が多い。さらに、残差予測を実施する場合、各予測単位毎に、各LX予測画像に対応する参照レイヤからの推定残差(残差画像)を生成する必要があるため、2N×2Nにおいて残差予測を実施する場合に比べて、それ以外のPU分割タイプは、処理がさらに複雑となる。そこで、階層動画像復号装置1は、PU分割タイプが2N×2N時のみに残差予測のON/OFF制御するように制限する(2N×2N以外のPU分割タイプは、残差予測をOFF)ことによって、CU単位当たりの残差予測に係る処理量(推定残差を生成するために必要な動き補償に係る処理量)を削減することが可能である。また、実験から、残差予測をPU分割タイプが2N×2N以外の時にOFFとするように制限しても、残差予測により得られる符号化効率の改善幅の低下は少ないことが分かっている。また、階層動画像復号装置1は、PU分割タイプが2N×2N時のみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、PU分割タイプが2N×2N以外の残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
以上、階層動画像符号化装置2は、PU分割タイプが2N×2N時のみ、残差予測のON/OFF制御を実施するように制限する(PU分割タイプが2N×2N以外は、常にOFF) ことで、CU単位当たりの残差予測に係る処理量(推定残差を生成するために必要な動き補償に係る処理量)を削減することが可能である。また、階層動画像符号化装置2は、PU分割タイプが2N×2N時のみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを符号化するため、PU分割タイプが2N×2N以外の残差予測に係る予測パラメータのシンタックスの符号化に係る処理量、及び符号量を削減することが可能である。
(所定条件A4について)
図37は、残差予測利用可フラグを導出する所定条件として、「当該予測単位のインター予測モードが単予測(L0予測、または、L1予測)であるか否か」を含める場合を示すフローチャートである。この場合、図37のステップS305−3dにおいて、当該予測単位のインター予測モードが単予測であるか否かを、例えば、インター予測識別子に基づいて、以下の判定式により判断する。
(inter_pred_idc == Pred_L0 || inter_pred_idc == Pred_L1) ?
ここで、インター予測識別子inter_pred_idcの値が、Pred_LXである場合、LX予測(X=0、1)であることを示し、Pred_BIの場合は双予測であることを示す。
すなわち、上記判定式が“真”を示す場合(当該予測単位のインター予測モードが、単予測である場合)(ステップS305−3dにおいてYes)、ステップS305−4へ遷移し、残差予測利用可フラグを1へ設定する。また、上記判定式が“偽”を示す場合(ステップS305−3dにおいてNo)、ステップS305−5へ遷移し、残差予測利用可フラグを0へ設定する。なお、ステップS305−3dからステップS305−4へ遷移する前に、所定条件AXの追加の判定として、所定条件A4を除く所定条件A1〜A6のいずれかの判定処理へ遷移する構成としてもよい。
なお、判定式として、インター予測識別子の代わりに、参照画像利用リストフラグpredFlagLX(X=0,1)に基づいて、以下の判定式を用いて判定してもよい。
(predFlagL0 == 1 && predFlagL1 == 0) || (predFlagL0 == 0 && predFlagL1 == 1) ?
ここで、上記判定式において、(predFlagL0 == 1 && predFlagL1 == 0)が“真”の場合(参照画像リストフラグpredFlagL0が”真”かつ、参照画像利用リストフラグpredFlagL1が”偽”)は、L0予測であることを示し、(predFlagL0 == 0 && predFlagL1 == 1)が“真”の場合(参照画像リストフラグpredFlagL0が”偽”かつ、参照画像リストフラグpredFlagL1が”真”)は、L1予測であることを示す。
一般的に、インター予測において、双予測は、単予測と比較して双予測の場合、L0予測画像、L1予測画像を生成する必要があるため、処理が複雑である。さらに、双予測において、残差予測を実施する場合、各LX予測画像に対応する参照レイヤからの推定残差(残差画像)を生成する必要があるため、単予測において、残差予測を実施する場合に比べて、処理がさらに複雑となる。そこで、階層動画像復号装置1は、単予測時のみに残差予測のON/OFF制御するように制限する(双予測時は、常にOFF)ことによって、双予測時の残差予測に係る処理量(推定残差を生成するために必要な動き補償に係る処理量)を削減することが可能である。また、実験から、残差予測を双予測時にOFFとするように制限しても、残差予測により得られる符号化効率の改善幅の低下は少ない。また、階層動画像復号装置1は、単予測時のみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、単予測以外(双予測)の残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
以上、階層動画像符号化装置2は、単予測時のみ、残差予測のON/OFF制御を実施するように制限する(双予測時は、常にOFF) ことで、残差予測を試行すべき動き補償パラメータの候補数を単予測のみへ削減することができるため、推定残差を生成するために実施する動き補償の試行回数を削減することが可能である。また、階層動画像符号化装置2は、単予測時のみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを符号化するため、単予測以外(双予測)の残差予測に係る予測パラメータのシンタックスの符号化に係る処理量、及び符号量を削減することが可能である。
(所定条件A5について)
図38は、残差予測利用可フラグを導出する所定条件として、「当該予測単位の予測モードが、スキップモード、または、マージモードであるか否か」を含める場合を示すフローチャートである。この場合、図38のステップS305−3eにおいて、当該予測単位の予測モードが、スキップモード、または、マージモードであるか否かを、以下の判定式により判断する。
(skip_flag == 1 || merge_flag == 1) ?
ここで、skip_flagは、当該予測単位の予測モードがスキップモードであるか否かを示すフラグであり、フラグの値が“真”を示す場合、スキップモードであることを示し、フラグの値が“偽”の場合、スキップモードでないことを示す。また、merge_flagは、当該予測単位の予測モードがマージモードであるか否かを示すフラグであり、フラグの値が“真”を示す場合、マージモードであること示し、フラグの値が“偽”の場合、マージモードではない(通常のインター予測)であることを示す。
すなわち、上記判定式が“真”を示す場合(当該予測単位の予測モードが、スキップモード、または、マージモードである場合)(ステップS305−3eにおいてYes)、ステップS305−4へ遷移し、残差予測利用可フラグを1へ設定する。
また、上記判定式が“偽”を示す場合(ステップS305−3eにおいてNo)、ステップS305−5へ遷移し、残差予測利用可フラグを0へ設定する。
なお、ステップS305−3eからステップS305−4へ遷移する前に、所定条件AXの追加の判定として、所定条件A5を除く所定条件A1〜A6のいずれかの判定処理へ遷移する構成としてもよい。なお、上記条件の代わりに、スキップフラグ、または、マージフラグの何れか一方に基づいて判定してもよい。
一般的に、インター予測において、統計的に、スキップモード、または、マージモードが選択される確率が高いため、残差予測をスキップモード、または、マージモードに制限しても、残差予測により得られる符号化効率の改善幅の低下は少ない。すなわち、階層動画像復号装置1は、スキップモード、または、マージモードのときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、スキップモード、または、マージモード以外(通常のインター予測時)の残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
以上、階層動画像符号化装置2は、スキップモード、または、マージモードのときのみ、残差予測のON/OFF制御を実施するように制限する(通常のインター予測時は、OFF)ことで、残差予測を試行すべき動き補償パラメータの候補数を削減することができるため、推定残差を生成するために実施する動き補償の試行回数を削減することが可能である。例えば、スキップモード、または、マージモードの場合、探索すべき動き補償パラメータの候補の最大数は、MaxNumMergeCand(<=5)個である。なお、MaxNumMergeCandは、以下のように設定される。
MaxNumMergeCand = 5 - five_minus_max_num_merge_cand
ここで、five_minus_max_num_merge_candは、マージ候補の最大数を示すシンタックスであり、スライスヘッダ、ピクチャパラメータセット、シーケンスパラメータセット等のパラメータセットにおいて、復号/符号化される。また、階層動画像符号化装置2は、スキップモード、または、マージモードのときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを符号化するため、スキップモード、または、マージモード以外(通常のインター予測時)の残差予測に係る予測パラメータのシンタックスの符号化に係る処理量、および符号量を削減することが可能である。
(所定条件A6について)
図39は、残差予測利用可フラグを導出する所定条件として、「当該予測単位の参照画像が所定条件を満たすか否か」を含める場合を示すフローチャートである。この場合、図39のステップS305−3fにおいて、「当該予測単位の参照画像が所定条件を満たすか否か」をインター予測識別子inter_prd_idcと各refIdxLXに基づいて、以下の判定式により判断する。
(inter_pred_idc == Pred_L0 && refIdxL0 == 0) ||
(inter_pred_idc == Pred_L1 && refIdxL1 == 0) ||
(inter_pred_idc == Pred_BI && refIdxL0 == 0 && refIdxL1 == 0) ?
ここで、上記判定式において、(inter_pred_idc == Pred_L0 && refIdxL0 ==0)が”真”であることは、「L0予測であり、参照画像インデックスRefIdxL0が0である」ことを示し、(inter_pred_idc == Pred_L1 && refIdxL1 ==0)が”真”であることは、「L1予測であり、参照画像インデックスRefIdxL1が0である」ことを示し、(inter_pred_idc == Pred_BI && refIdxL0 ==0 && refIdxL1 == 0)が”真”であることはの場合、「双予測であり、参照画像インデックスRefIdxL0、RefIdxL1が共に0である」ことを示す。
すなわち、上記判定式が“真”を示す場合(ステップS305−3fにおいてYes)、ステップS305−4へ遷移し、残差予測利用可フラグを1へ設定する。また、上記判定式が“偽”を示す場合(ステップS305−3fにおいてNo)、ステップS305−5へ遷移し、残差予測利用可フラグを0へ設定する。なお、ステップS305−3fからステップS305−4へ遷移する前に、所定条件AXの追加の判定として、所定条件A6を除く所定条件A1〜A6のいずれかの判定処理へ遷移する構成としてもよい。なお、上記判定式において、L0予測、L1予測、双予測の識別に、インター予測識別子の代わりに、参照画像利用リストフラグpredFlagLX(X=0,1)を用いてもよい。すなわち、以下の判定式を用いてもよい。
(predFlagL0==1 && predFlagL1==0 && refIdxL0 == 0) ||
(predFlagL0==1 && predFlagL1==0 && refIdxL1 == 0) ||
(predFlagL0==1 && predFlagL1==1 && refIdxL0 == 0 && refIdxL1 == 0) ?
一般的に、インター予測において、統計的に、動き補償パラメータとして、参照画像インデックスrefIdxLX==0となる参照画像が選択される確率が非常に高い。従って、インター予測において、参照画像インデックスrefIdxLX=0(X=0、1)となる参照画像を参照する場合のみ、残差予測の適用を制限しても、残差予測により得られる符号化効率の改善幅の低下は少ない。従って、階層動画像復号装置1は、符号化効率を維持しつつ、推定残差を生成するために参照する参照レイヤの参照画像を、拡張レイヤの参照画像インデックスrefIdxLX=0と対応する時刻の参照画像へ制限するため、拡張レイヤのピクチャバッファにおいて、保持すべき参照レイヤの参照画像数を削減することが可能である。つまり、残差予測のために保持すべき参照レイヤの参照画像に係るメモリ量を削減することが可能である。また、階層動画像復号装置1は、参照画像インデックスrefIdxLX=0となるときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、参照画像インデックスrefIdxLX=0以外(refIdxLX!=0)の残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
以上、階層動画像符号化装置2は、参照画像インデックスrefIdxLX=0(X=0,1)となる参照画像が選択される場合のみ、残差予測のON/OFF制御を実施するように制限することで、残差予測を試行すべき動き補償パラメータとして、参照画像の候補数を削減することができるため、推定残差を生成するために実施する動き補償の試行回数を削減することが可能である。例えば、単予測の場合、参照画像は1枚へ制限され、双予測の場合、参照画像は2枚以下へ制限される。双予測の場合、参照画像インデックスrefIdxL0とrefIdxL1は、それぞれ同一の時刻の参照画像を示していてもよい。また、階層動画像符号化装置2は、符号化効率を維持しつつ、推定残差を生成するために参照する参照レイヤの参照画像を、拡張レイヤの参照画像インデックスrefIdxLX=0と対応する時刻の参照画像へ制限するため、拡張レイヤのピクチャバッファにおいて、保持すべき参照レイヤの参照画像数を削減することが可能である。つまり、残差予測のために保持すべき参照レイヤの参照画像に係るメモリ量を削減することが可能である。また、階層動画像符号化装置2は、参照画像インデックスrefIdxLX=0となるときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを符号化するため、参照画像インデックスrefIdxLX=0以外(refIdxLX!=0)の残差予測に係る予測パラメータのシンタックスの符号化に係る処理量、及び符号量を削減することが可能である。
なお、「当該予測単位の参照画像が所定条件を満たすか否か」の所定条件として、「当該予測単位の参照する各参照画像RefPicLX(X=0,1)が、各参照画像リストLX(X=0,1)に含まれる参照画像のうち、現画像CurPicとの時間距離が最小となる参照画像であるか否か」を用いてもよい。すなわち、以下の判定式を用いる。
(inter_pred_idc==Pred_L0 && RefIdxL0 == RefIdxL0withMinAbsDiffPoc) ||
(inter_pred_idc==Pred_L1 && RefIdxL1 == RefIdxL1withMinAbsDiffPoc) ||
(inter_pred_idc==Pred_BI &&
RefIdxL0 == RefIdxL0withMinAbsDiffPoc &&
RefIdxL1 == RefIdxL1withMinAbsDiffPoc ) ?
ここで、変数RefIdxLXwithMinAbsDiffPoc(X=0,1)は、各参照画像リストLX(X=0,1)に含まれる参照画像RefPicの中で、現画像CurPicとの時間距離AbsDiffPocが最小となる参照画像を示す参照画像インデックスである。変数RefIdxLXwithMinAbsDiffPoc(X=0,1)の導出については、後述する。ここで、現画像CurPicと参照画像RefPicの時間距離AbsDiffPocを、ピクチャ順序番号(POC:Picture Ordering Count)を用いて算出する。すなわち、
AbsDiffPoc = Abs ( CurPicPoc - RefPicPoc(LX, RefIdxLX) )
である。ここで、CurPicPocは、現画像のPOCを示し、RefPicPoc(LX, RefIdxLX)は、参照画像リストLXと参照画像インデックスRefIdxLXで指定される参照画像RefPicのPOCを示し、Abs( )は、絶対値を返す関数である。
ここで、上記判定式において、(inter_pred_idc == Pred_L0 && refIdxL0 == RefIdxL0withMinAbsDiffPoc)が”真”であることは、「L0予測であり、参照画像インデックスRefIdxL0が示す参照画像は、参照画像リストL0に含まれる参照画像RefPicの中で、現画像CurPicとの時間距離AbsDiffPocが最小となる参照画像RefIdxL0withMinAbsDiffPocである」ことを示し、(inter_pred_idc == Pred_L1 && refIdxL1 == RefIdxL1withMinAbsDiffPoc)が”真”であることは、「L1予測であり、参照画像インデックスRefIdxL1が示す参照画像は、参照画像リストL1に含まれる参照画像RefPicの中で、現画像CurPicとの時間距離AbsDiffPocが最小となる参照画像RefIdxL1withMinAbsDiffPocである」ことを示し、(inter_pred_idc == Pred_BI && refIdxL0 == RefIdxL0withMinAbsDiffPoc && refIdxL1 == RefIdxL1withMinAbsDiffPoc)が”真”であること、「双予測であり、参照画像インデックスRefIdxL0、RefIdxL1が示す各参照画像は、各参照画像リストLX(X=0,1)に含まれる参照画像RefPicの中で、現画像CurPicとの時間距離AbsDiffPocが最小となる参照画像を示す参照画像インデックスである」ことを示す。
すなわち、上記判定式が“真”を示す場合(ステップS305−3fにおいてYes)、ステップS305−4へ遷移し、残差予測利用可フラグを1へ設定する。また、上記判定式が“偽”を示す場合(ステップS305−3fにおいてNo)、ステップS305−5へ遷移し、残差予測利用可フラグを0へ設定する。なお、ステップS305−3fからステップS305−4へ遷移する前に、所定条件AXの追加の判定として、所定条件A6を除く所定条件A1〜A6のいずれかの判定処理へ遷移する構成としてもよい。なお、上記判定式において、L0予測、L1予測、双予測の識別に、インター予測識別子の代わりに、参照画像利用リストフラグpredFlagLX(X=0,1)を用いてもよい。すなわち、以下の判定式を用いてもよい。
(predFlagL0==1 && predFlagL1==0 && refIdxL0 == RefIdxL0withMinAbsDiffPoc) ||
(predFlagL0==1 && predFlagL1==0 && refIdxL1 == RefIdxL1withMinAbsDiffPoc) ||
(predFlagL0==1 && predFlagL1==1 &&
refIdxL0 == RefIdxL0withMinAbsDiffPoc &&
refIdxL1 == RefIdxL1withMinAbsDiffPoc) ?
また、上記判定式において、「参照画像インデックスRefIdxLXが示す参照画像が、参照画像リストLXに含まれる参照画像RefPicの中で、現画像CurPicとの時間距離AbsDiffPocが最小となる参照画像RefIdxLXwithMinAbsDiffPocであるか」を識別するために、変数RefIdxL0withMinAbsDiffPocの代わりに、参照画像リストLXにおける、現画像CurPicと参照画像との最小時間距離MinAbsDiffPocLXを用いて判定してもよい。すなわち、
(inter_pred_idc==Pred_L0 &&
Abs(CurPicPoc, RefPicPoc(L0,RefIdxL0)) == MinAbsDiffPocL0 ) ||
(inter_pred_idc==Pred_L1 &&
Abs(CurPicPoc, RefPicPoc(L1,RefIdxL1)) == MinAbsDiffPocL1 ) ||
(inter_pred_idc==Pred_BI &&
( Abs(CurPicPoc, RefPicPoc(L0,RefIdxL0)) == MinAbsDiffPocL0 ) &&
( Abs(CurPicPoc, RefPicPoc(L1,RefIdxL1)) == MinAbsDiffPocL1 ) ) ?
ここで、変数MinAbsDiffPocLX(X=0,1)の導出については、後述の<変数RefIdxLXwithMinAbsDiffPoc(X=0,1)の導出について>において説明する。
一般的に、インター予測において、参照画像と現画像との時間距離が近いほど、画像間の相関が高いため、動き補償パラメータとして、参照画像と現画像との時間距離が近い参照画像インデックスをもつ参照画像が選択される確率が非常に高い。従って、インター予測において、参照画像インデックスrefIdxLX=RefIdxLXwithMinAbsDiffPoc(X=0、1)となる、すなわち、参照画像リストLXに含まれる参照画像の中で、現ピクチャとの時間距離が最小となる参照画像を参照する場合のみ、残差予測の適用を制限しても、残差予測により得られる符号化効率の改善幅の低下は少ない。従って、階層動画像復号装置1は、符号化効率を維持しつつ、推定残差を生成するために参照する参照レイヤの参照画像を、拡張レイヤの参照画像インデックスrefIdxLX=RefIdxLXwithMinAbsDiffPocと対応する時刻の参照画像、すなわち、対象レイヤの参照画像リストLXに含まれる参照画像の中で、現画像との時間距離が最小となる参照画像と対応する時刻の参照画像へ制限するため、拡張レイヤのピクチャバッファにおいて、保持すべき参照レイヤの参照画像数を削減することが可能である。つまり、残差予測のために保持すべき参照レイヤの参照画像に係るメモリ量を削減することが可能である。また、階層動画像復号装置1は、参照画像インデックスrefIdxLX=RefIdxLXwithMinAbsDiffPocとなるときのみ、すなわち、対象レイヤの参照画像リストLXに含まれる参照画像の中で、現画像との時間距離が最小となる参照画像を参照する場合のみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、参照画像インデックスrefIdxLX=RefIdxLXwithMinAbsDiffPoc以外の参照画像を参照する際に残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
以上、階層動画像符号化装置2は、参照画像インデックスrefIdxLX=RefIdxLXwithMinAbsDiffPoc(X=0,1)となる参照画像(参照画像リストLXに含まれる参照画像の中で、現ピクチャとの時間距離が最小となる参照画像)が選択される場合のみ、残差予測のON/OFF制御を実施するように制限することで、残差予測を試行すべき動き補償パラメータとして、参照画像の候補数を削減することができるため、推定残差を生成するために実施する動き補償の試行回数を削減することが可能である。例えば、単予測の場合、参照画像は1枚へ制限され、双予測の場合、参照画像は2枚以下へ制限される。双予測の場合、参照画像インデックスrefIdxL0とrefIdxL1は、それぞれ同一の時刻の参照画像を示していてもよい。また、階層動画像符号化装置2は、符号化効率を維持しつつ、推定残差を生成するために参照する参照レイヤの参照画像を、拡張レイヤの参照画像インデックスrefIdxLX=RefIdxLXwithMinAbsDiffPocと対応する時刻の参照画像へ制限するため、拡張レイヤのピクチャバッファにおいて、保持すべき参照レイヤの参照画像数を削減することが可能である。つまり、残差予測のために保持すべき参照レイヤの参照画像に係るメモリ量を削減することが可能である。また、階層動画像符号化装置2は、参照画像インデックスrefIdxLX=RefIdxLXwithMinAbsDiffPocとなるときのみ、すなわち、対象レイヤの参照画像リストLXに含まれる参照画像の中で、現画像との時間距離が最小となる参照画像を参照する場合のみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを符号化するため、参照画像インデックスrefIdxLX=RefIdxLXwithMinAbsDiffPoc以外の参照画像を参照する際に残差予測に係る予測パラメータのシンタックスの符号化に係る処理量、及び符号量を削減することが可能である。
<変数RefIdxLXwithMinAbsDiffPoc(X=0,1)の導出について>
以下では、変数RefIdxLXwithMinAbsDiffPoc(X=0,1)の導出(参照画像リストLXに含まれる参照画像RefPicの中で、現画像CurPicとの時間距離が最小となる参照画像を示す参照画像インデックスRefIdxLXwithMinAbsDiffPocの導出)について、図40、図41を用いて説明する。図40は、変数RefIdxLXwithMinAbsDiffPoc(X=0,1)の導出を示すフローチャートであり、図41は、図40と対応する処理の疑似コードを示す。
(S501)参照画像リストLX単位のループを開始する。参照画像リスト数NumRefListは、現スライスタイプslice_typeがBスライス(B_SLICE)の場合、2へ設定し、Pスライス(P_SLICE)の場合、1へ設定し、それ以外の場合(Iスライス)は、0へ設定する。すなわち、
NumRefList = (slice_type == B_SLICE) ? 2 : (slice_type == P_SLICE) ? 1 : 0;
(S502)変数MinAbsDiffPocLX(X=0,1), RefIdxLXwithMinAbsDiffPoc(X=0,1)を初期化する。すなわち、RefIdxLX=0の示す参照画像と現画像との時間距離を導出する。
MinAbsDiffPocLX = Abs( CurPicPoc - RefPicPoc(LX, RefIdxLX=0) );
RefIdxLXwithMinAbsDiffPoc = 0;
(S503)参照画像リストLXの含まれる参照画像毎のループである。参照画像インデックスrefIdxLX=1から開始し、参照画像インデックスrefIdxLX=num_ref_idx_lX-1までループ内の処理を行う。ここで、num_ref_idx_lXは、参照画像リストLXに含まれる参照画像数を示す。
(S504)各参照画像と現画像との時間距離AbsDiffPocを算出する。すなわち、
RefIdxLX = i;
AbsDiffPoc = Abs( CurPicPoc - RefPicPoc(LX, RefIdxLX) );
(S505)参照画像インデックスRefIdxLX=iが示す参照画像と現画像との時間距離が最小であるか判定する。すなわち、RefIdxLX=i-1までに算出した最小の時間距離MinAbsDiffPocLXよりもAbsDiffPocが小さいか判定する。
AbsDiffPoc < MinAbsDiffPocLX ?
ここで、上記判定式が“真”である場合(ステップS505においてYes)、ステップS506へ遷移する。それ以外の場合(ステップS505においてNo)、S507へ遷移する。
(S506)変数MinAbsDiffPocLX(X=0,1)、RefIdxLXwithMinAbsDiffPoc(X=0,1)を更新する。すなわち、参照画像インデックスRefIdxLX=iで指定される参照画像を現画像との時間距離が最小となる参照画像であるものとする。
MinAbsDiffPocLX = AbsDiffPoc;
RefIdxLXwithMinAbsDiffPoc = RefIdxLX;
(S507)参照画像単位のループの終端である。
(S508)参照画像リスト単位のループの終端である。
以上、上記S501〜S508に示す処理を実行することで、「参照画像リストLXに含まれる参照画像RefPicの中で、現画像CurPicとの時間距離が最小となる参照画像を示す参照画像インデックスRefIdxLXwithMinAbsDiffPoc」、または、「参照画像リストLXにおいて、現画像CurPicと参照画像RefPicの時間距離の最小値MinAbsDiffPocLX(X=0,1)」を導出することができる。なお、上記変数RefIdxLXwithMinAbsDiffPoc(X=0,1)の導出の処理は、可変長復号部12、可変長符号化部25において、各スライス単位で先頭の符号化ツリーブロックCTBの復号/符号化を開始する前に実行するものとする。
例えば、可変長復号部12の変形例1の場合、図44において、ステップS301において、残差予測有効フラグ(res_pred_enable_flag)を復号し、残差予測有効フラグの値が1の場合に、変数RefIdxLXwithMinAbsDiffPoc(X=0,1)の導出の処理を実行し、その後、ステップS302へ進む。また、可変長符号化部25の変形例1の場合、図53において、ステップS401において、残差予測有効フラグを符号化し、残差予測有効フラグが1の場合に、変数RefIdxLXwithMinAbsDiffPoc(X=0,1)の導出の処理を実行し、その後、ステップS402へ進む。」
<残差予測情報の符号化データ上の構成(図32)>
図32は、可変長復号部12の変形例1で復号される符号化データの構成の予測単位の符号化データ部分(図3の予測情報PInfoに対応)を示す図である。
本例では、残差予測情報が、PUごとに符号化される。図32に示す通り、符号化データの予測単位の符号化データは、図32のSYN1Aで示される動き補償パラメータ(マージインデックスmerge_idx、マージフラグmerge_flag、インター予測識別子inter_pred_idc、参照画像インデックスref_idx_l0、ref_idx_l1、推定動きベクトルインデックスmvp_l0_flag、mvp_l1_flag、動きベクトル残差mvd_coding)と、SYN2A1で示される該PUに対応する残差予測情報(残差予測フラグres_pred_flag, 残差予測重み係数インデックスres_pred_weight_idx)から構成される。図32のように、予測単位の符号化データでは、動き補償パラメータ、残差予測情報の順に符号化を配置する。この順序で配置することにより、予測単位ごとの動き報償パラメータの値に応じて、残差予測を適用するか否かを表わす残差予測情報を明示的に復号するか否かを制御することが可能である。SYN2A1に次の判定がある。
ResPredAvailableFlag ?
本判定は、該PUにおいて、残差予測利用可フラグ(ResPredAvailableFlag)が1であるか否かの判定であり、図31のS322の判定、図52のS422に相当する。残差予測利用可フラグ(ResPredAvailableFlag)については、上述の<残差予測利用可フラグの導出について>において説明済である。
以上の符号化構造では、残差予測利用可フラグが1である場合のみ、残差予測情報(残差予測フラグres_pred_flag、残差予測重み係数インデクスres_pred_weight_idx)が含まれ、それ以外の場合は、残差予測情報は含まれない。従って、該PU単位において、残差予測利用可フラグが1のときのみ、残差予測情報が符号化/復号されるため、残差予測情報に係る符号化/復号に関する処理量の低減、及び符号量を低減する効果が得られる。
<可変長復号部12の変形例2>
上述の<可変長復号部12の変形例1>では、図31のステップS308において、残差予測フラグ(res_pred_flag)が1で場合に、明示的に残差予測重み係数を示す残差予測重み係数インデックスを復号する構成であるが、これに限定されない。例えば、図44に示すフロー図のように、ステップS308をステップS308’に置き換えてもよい。以下、図44、及び図45を用いて、可変長復号部12の変形例2において、残差予測情報を含む符号化データを復号する動作について説明する。なお、図44において、ステップS301〜ステップS304、ステップS321〜ステップS322、ステップS306,ステップS309〜ステップS310は、図31の各ステップと同一であるため、説明を省略し、ステップS308’について説明する。
(S307)残差予測フラグ(res_pred_flag)が1の場合(ステップS307においてYes)、ステップS308’へ遷移する。それ以外の場合は、S309へ遷移する。
(S308’)所定条件に基づいて、残差予測重み係数res_pred_weightを導出する。所定条件の詳細については、後述する。
以上、可変長復号部12の変形例2は、残差予測利用可フラグが1である場合、残差予測情報(残差予測フラグres_pred_flag)を復号し、それ以外の場合は、残差予測情報を復号しない。また、残差予測フラグres_pred_flagが1の場合、所定条件に基づいて、当該PUにおいて残差予測を適用時の残差予測重み係数res_pred_weightを導出する。従って、該PU単位において、残差予測利用可フラグが1のとき、残差予測フラグが復号されるため、残差予測フラグに係る復号に関する処理量の低減、及び符号量を低減する効果が得られる。また、残差予測フラグが1の場合、残差予測重み係数を所定条件に基づいて導出するため、残差予測重み係数に関するシンタックスの復号に関する処理量の低減、及び符号量を低減する効果が得られる。
<残差予測重み係数の導出について>
以下では、残差予測重み係数res_pred_weightを以下に示す(1)〜(4)の各条件に基づいて残差予測重み係数の値を設定する例について説明する。
(1)当該予測単位の予測モードに基づく場合
(2)対象レイヤのスケーラビリティに基づく場合
(3)当該予測単位のサイズに基づく場合
(4)当該予測単位の予測パラメータに基づく場合
((1)当該予測単位の予測モードに基づく場合について)
図46は、所定条件として、「当該予測単位の予測モードが単予測であるか否か」に基づく場合における残差予測重み係数の導出を示すフローチャートである。
ステップS308−1aにおいて、当該予測単位のインター予測が単予測であるかを判定する(ステップS308−1a)。例えば、インター予測識別子(inter_pred_idc)に基づいて、以下の判定式により判定する。
(inter_pred_idc==Pred_L0) || (inter_pred_idc==Pred_L1) ?
すなわち、インター予測識別子がL0予測(Pred_L0)、またはL1予測(Pred_L1)を示す場合(ステップ308−1aにおいてYes)、残差予測の重み係数を第1の重み係数w1へと設定し(ステップS308−2a)、それ以外の場合、すなわち、双予測(Pred_BI)を示す場合(ステップS308−1aにおいてNo)、残差予測の重み係数を第2の重み係数w2へと設定する(ステップS308−3a)。
なお、ステップS308−1aにおける判定式に関して、インター予測識別子の代わりに、参照画像リスト利用フラグpredFlagLX(X=0,1)に基づいて、次のように判定してもよい。すなわち、
(predFlagL0==1 && predFlagL1==0) || (predFlagL0==0 && prdFlagL1==1) ?
なお、インター予測識別子の代わりに、スライスタイプに基づいて、重み係数を設定してもよい。例えば、Pスライスである場合、重み係数をw1へ設定し、Bスライスでる場合、重み係数をw2へ設定する。
ここで、w1の値は、w2の値以下であることが望ましい。w1、w2の具体例としては、w1=0.5、w2=1.0である。なお、発明者らの実験から、統計的に、単予測(L0予測、L1予測)の場合、重み係数0.5が選択される確率が高く、双予測の場合、重み係数1.0が選択される確率が高いことが分かっている。そのため、各重み係数と対応付けられた残差予測重み係数インデックス(res_pred_weight_idx)を明示的に符号化/復号せずとも、残差予測フラグ(res_pred_flag)の値が1の場合、上記条件に基づいて、残差予測の重み係数を暗黙的に設定することによって、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの符号化/復号処理を簡略化することが可能である。
((2)対象レイヤのスケーラビリティに基づく場合について)
図47は、所定条件として、「対象レイヤのスケーラビリティが空間スケーラビリティであるか否か」に基づく場合のおける残差予測重み係数の導出を示すフローチャートである。
ステップS308−1bにおいて、対象レイヤのスケーラビリティが、空間スケーラビリティであるか否かを判定する(ステップS308−1b)。対象レイヤのスケーラビリティが空間スケーラビリティである場合(ステップS308−1bにおいてYes)、残差予測の重み係数を第1の重み係数w1へ設定し(ステップS308−2b)、それ以外の場合(例えば、SNRスケーラビリティ)の場合(ステップS308−1bにおいてNo)、残差予測の重み係数を第2の重み係数w2へと設定する(ステップS308−3b)。ここで、w1の値は、w2の値以下であることが望ましい。w1、w2の具体例としては、w1=0.5、w2=1.0である。なお、発明者らの実験から、統計的に、空間スケーラビリティの場合、重み係数0.5が選択される確率が高く、SNRスケーラビリティの場合、重み係数1.0が選択される確率が高いことが分かっている。そのため、各重み係数と対応付けられた残差予測重み係数インデックス(res_pred_weight_idx)を明示的に符号化/復号せずとも、残差予測フラグ(res_pred_flag)の値が1の場合、上記条件に基づいて、残差予測の重み係数を暗黙的に設定することによって、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの符号化/復号処理を簡略化することが可能である。
((3)当該予測単位のサイズに基づく場合について)
図48は、所定条件として、「当該予測単位のサイズが所定サイズ以下か否か」に基づく場合のおける残差予測重み係数の導出を示すフローチャートである。
ステップS308−1cにおいて、当該予測単位のサイズが所定サイズ以下か否かを、例えば、PUの縦幅pHと、横幅pWに基づいて以下の判定式により判定する(ステップS308−1c)。
pH + pW <= TH_PUSIZE ?
すなわち、上記判定式が“真”を示す場合(当該予測単位のPUサイズの縦幅pHと横幅pWの和が所定閾値以下の場合)(ステップS308−1cにおいてYes)、ステップS308−2cへ遷移し、残差予測の重み係数を第1の重み係数w1へ設定する(ステップS308−2c)。それ以外の場合(ステップS308−1cにおいてNo)、ステップS308−3cへ遷移し、残差予測の重み係数を第2の重み係数w2へと設定する(ステップS308−3c)。ここで、w1の値は、w2の値以下であることが望ましい。w1、w2の具体例としては、w1=0.5、w2=1.0である。また、閾値TH_PUSIZEの具体例としては、32へ設定することが好ましい。この場合、次の小PUサイズ、16x16,16x8,8x16,12x16,16x12,4x16,16x4,8x8,8x4,4x8に関して、重み係数0.5が選択され、それ以外の大PUサイズに関して、重み係数1.0が選択される。なお、閾値TH_PUSIZEは、32に限定されず、28、24、16の何れかの値に設定してもよい。なお、発明者らの実験から、小PUサイズにおいて、重み係数0.5が選択される確率が高く、大PUサイズにおいて、重み係数1.0が選択される確率が高いことが分かっている。そのため、各重み係数と対応付けられた残差予測重み係数インデックス(res_pred_weight_idx)を明示的に符号化/復号せずとも、残差予測フラグ(res_pred_flag)の値が1の場合、上記条件に基づいて、残差予測の重み係数を暗黙的に設定することによって、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの符号化/復号処理を簡略化することが可能である。
なお、各条件(1)〜(3)において、重み係数w1、w2の組み合わせは、w1=0.5、w2=1.0に限定されず、w1=0.5、w2=0.75、あるいは、w1=0.75、w2=1.0と設定してもよい。
((4)当該予測単位の予測パラメータに基づく場合)
図54は、当該予測単位の予測パラメータのうち、マージフラグに基づいて残差予測重み係数res_pred_weightを導出する例を示す図である。
まず、当該予測単位のマージフラグが0であるか否かを判定する(ステップS308−1d)。
merge_flag == 0 ?
すなわち、上記判定式が“真”を示す場合(当該予測単位のマージフラグが1の場合)(ステップS308−1dにおいてYes)、ステップS308−2dへ遷移し、残差予測の重み係数を第1の重み係数w1へ設定する(ステップS308−2c)。それ以外の場合(ステップS308−1cにおいてNo)、ステップS308−3cへ遷移し、残差予測の重み係数を第2の重み係数w2へと設定する(ステップS308−3c)。ここで、w1の値は、w2の値以下であることが望ましい。w1、w2の具体例としては、w1=0.5、w2=1.0である。なお、マージフラグが1となる予測単位は、対象PUの動き補償パラメータがマージインデックスにより指定されるマージ候補、すなわち、対象PUに隣接する処理済(符号化済/復号済)PUの動き補償パラメータ、または、所定の動き補償パラメータと同一であることを示す。
一般的に、マージフラグが1となるPUにおける残差の大きさは、マージフラグが0となるPUにおける残差の大きさに比べて、小さい傾向がある。また対象PUと対応する参照レイヤの残差の大きさも同様に小さい傾向がある。すなわち、残差の大きさは、0近傍に集中している。0近傍へ集中している残差に対して、1.0未満の重み係数を乗ずると推定残差が0となる頻度が高くなり、推定残差の精度を悪化させる場合がある。従って、対象PUのLX予測画像へ加算する参照レイヤの推定残差は、参照レイヤの残差の大きさが小さい場合には、残差予測重み係数を乗じない(すなわち、重み係数を1.0へ設定する)ことにより、推定残差の予測精度を向上させることができる。逆に、参照レイヤの残差が大きい場合には、重み係数1.0未満を乗じ、残差の大きさを小さくすることで、推定残差の予測精度を向上させることができる。
なお、発明者らの実験から、マージフラグが1となるPUにおいて、重み係数1.0が選択される確率が高く、マージフラグが0となるPUにおいて、重み係数0.5が選択される確率が高いことが分かっている。そのため、各重み係数と対応付けられた残差予測重み係数インデックス(res_pred_weight_idx)を明示的に符号化/復号せずとも、残差予測フラグ(res_pred_flag)の値が1の場合、上記条件に基づいて、残差予測の重み係数を暗黙的に設定することによって、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの符号化/復号処理を簡略化することが可能である。
上記例では、マージフラグに基づいて、残差予測重み係数を導出しているが、これに限定されない。例えば、マージフラグの代わりに、スキップフラグに基づいて、残差予測重み係数を導出してもよい。スキップフラグが1の場合、対象PUの残差は0となる。同様に、対象PUと対応する参照レイヤの残差も0近傍となる傾向があるため、残差予測重み係数をw2へ設定することが好ましい。また、スキップフラグが0の場合は、参照レイヤの残差が大きい可能性があるため、残差予測重み係数をw1へ設定することが好ましい。
((1)と(4)の組み合わせの例)
なお、残差予測重み係数は、条件(4)のマージフラグと、条件(1)の予測モードと組み合わせて導出することもできる。図55は、インター予測識別子inter_pred_idc、及びマージフラグmerge_flagと残差予測重み係数の対応関係を示す図である。図55に示すように、残差予測重み係数をインター予測識別子とマージフラグに基づいて、(a)〜(d)のように導出する。
(a)インター予測識別子inter_pred_idcが単予測(Pred_L0、または、Pred_L1)、かつ、マージフラグが0の場合は、残差予測重み係数res_pred_weightを重み係数w1へ設定する。すなわち、res_pred_weight = w1
(b)インター予測識別子inter_pred_idcが単予測(Pred_L0、または、Pred_L1)、かつ、マージフラグが1の場合は、残差予測重み係数res_pred_weightを重み係数w2へ設定する。すなわち、res_pred_weight = w2
(c)インター予測識別子inter_pred_idcが双予測(Pred_BI)、かつ、マージフラグが0の場合は、残差予測重み係数res_pred_weightを重み係数w3へ設定する。
すなわち、res_pred_weight = w3
(d)インター予測識別子inter_pred_idcが双予測(Pred_BI)、かつ、マージフラグが1の場合は、残差予測重み係数res_pred_weightを重み係数w4へ設定する。
すなわち、res_pred_weight = w4
なお、上記重み係数w1、w2、w3、w4は、少なくとも以下の条件を満たすように設定することが好ましい。すなわち、w1≦w2、w3≦w4、w1≦w3。
発明者らの実験から、例えば、w1=0.5、w2=w3=w4=1.0へ設定することが好適であることが分かっている。
上記構成によれば、マージフラグとインター予測識別子に基づいて残差予測重み係数を導出することにより、マージフラグ、または、インター予測識別子のいずれか一方に基づいて残差予測重み係数を導出する場合に比べて、残差予測重み係数の候補数を最大2から4へ増やすことができるため、さらに残差予測の推定精度を向上させることができる。また、各重み係数と対応付けられた残差予測重み係数インデックス(res_pred_weight_idx)を明示的に符号化/復号せずとも、残差予測フラグ(res_pred_flag)の値が1の場合、上記条件に基づいて、残差予測の重み係数を暗黙的に設定することによって、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの符号化/復号処理を簡略化することが可能である。
図56は、当該予測単位の予測パラメータのうち、動きベクトルの大きさに基づいて残差予測重み係数res_pred_weightを導出する例を示す図である。
(S308−1e)LX予測単位のループの開始である。当該PUのインター予測識別子inter_pred_idcがPred_L0であれば、L0予測の補正へ適用する残差予測重み係数を以下のステップで導出する。また、インター予測識別子inter_pred_idcがPred_L1であれば、L1予測の補正へ適用する残差予測重み係数を導出する。また、インター予測識別子inter_rped_idcがpred_BIでれば、各L0予測、L1予測毎に残差予測重み係数を導出する。
(S308−2e)LX予測に用いる動きベクトルMvLX[]の大きさMagMvを算出する。例えば、以下の式によって、動きベクトルの大きさmag_mvを算出する。ここで、演算子Abs(.)は、絶対値を返す関数である。また、MvLX[0]は、動きベクトルのx成分、MvLX[1]は動きベクトルのy成分である。
MagMv = Abs( MvLX[0] ) + Abs( MvLX[1] )
なお、動きベクトルの大きさMagMvは、以下の式によって求めてもよい。
MagMv = MvLX[0]*MvLX[0] + MvLX[1]*MvLX[1]
(S308−3e)LX予測に用いる動きベクトルの大きさMagMvが所定閾値TH_MV未満であるかを判定する。例えば、以下の判定式を用いる。
mag_mv < TH_MV ?
上記判定式において、“真”となる場合(ステップS308−3eでYes)、ステップS308−5eへ遷移し、それ以外の場合(ステップS308−3eでNo)、ステップ308−4eへ遷移する。
(S308−4e)LX予測に適用する残差予測重み係数をw2へ設定する。すなわち、res_pred_weight = w2
(S308−5e)LX予測に適用する残差予測重み係数をw1へ設定する。すなわち、res_pred_weight = w1
(S308−6e)LX予測単位のループの終端である。
ここで、重み係数w1の値は、w2の値以下であることが望ましい。
一般的に、動きベクトルの大きさが小さい場合、残差の誤差が小さくなる傾向がある。また、また対象PUと対応する参照レイヤの残差の誤差も小さい傾向がある。すなわち、残差の大きさは、0近傍に集中する。0近傍へ集中する残差に対して、1.0未満の重み係数を乗ずると推定残差が0となる頻度が高くなり、推定残差の精度を悪化させる場合がある。従って、対象PUのLX予測画像へ加算する参照レイヤの推定残差は、参照レイヤの残差の大きさが小さい場合には、残差予測重み係数を乗じない(すなわち、重み係数を1.0へ設定する)ことにより、推定残差の予測精度を向上させることができる。逆に、参照レイヤの残差が大きい場合には、重み係数1.0未満を乗じ、残差の大きさを小さくすることで、推定残差の予測精度を向上させることができる。また、各重み係数と対応付けられた残差予測重み係数インデックス(res_pred_weight_idx)を明示的に符号化/復号せずとも、残差予測フラグ(res_pred_flag)の値が1の場合、上記条件に基づいて、残差予測の重み係数を暗黙的に設定することによって、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの符号化/復号処理を簡略化することが可能である。
図57は、当該予測単位の予測パラメータのうち、参照画像インデックスで指定される参照画像RefPicと現画像CurPicとの時間距離に基づいて残差予測重み係数res_pred_weightを導出する例を示す図である。
(S308−1f)LX予測単位のループの開始である。当該PUのインター予測識別子inter_pred_idcがPred_L0であれば、L0予測の補正へ適用する残差予測重み係数を以下のステップで導出する。また、インター予測識別子inter_pred_idcがPred_L1であれば、L1予測の補正へ適用する残差予測重み係数を導出する。また、インター予測識別子inter_rped_idcがPred_BIでれば、各L0予測、L1予測毎に残差予測重み係数を導出する。
(S308−2f)LX予測に用いる参照画像インデックスRefIdxLX(X=0,1)で指定される参照画像RefPicと現画像CurPicとの時間距離AbsDiffPocを以下の式で導出する。
AbsDiffPoc = Abs (RefPicPoc( LX, RefIdxLX ) - CurPicPoc )
ここで、RefPicPoc( LX, refIdxLX )は、参照画像リストLX上の参照画像インデックスRefIdxLXにより指定される参照画像のPOCを返す関数である。また、CurPicPocは現画像のpocを表わす。
(S308−3f)時間距離AbsDiffPocが所定閾値TH_AbsDiffPoc未満であるかを以下の条件式により判定する。
AbsDiffPoc < TH_AbsDiffPoc ?
上記判定式において、“真”となる場合(ステップS308−3fでYes)、ステップS308−5fへ遷移し、それ以外の場合(ステップS308−3fでNo)、ステップ308−4fへ遷移する。
(S308−4f)LX予測に適用する残差予測重み係数をw2へ設定する。すなわち、res_pred_weight = w2
(S308−5f)LX予測に適用する残差予測重み係数をw1へ設定する。すなわち、res_pred_weight = w1
(S308−5f)LX予測単位のループの終端である。
ここで、重み係数w1の値は、w2の値以下であることが望ましい。
一般的に、現画像と参照画像との時間距離が近いほど、残差の誤差が小さくなる傾向がある。また、また対象PUと対応する参照レイヤの残差の誤差も小さい傾向がある。すなわち、残差の大きさは、0近傍に集中する。0近傍へ集中する残差に対して、1.0未満の重み係数を乗ずると推定残差が0となる頻度が高くなり、推定残差の精度を悪化させる場合がある。従って、対象PUのLX予測画像へ加算する参照レイヤの推定残差は、参照レイヤの残差の大きさが小さい場合には、残差予測重み係数を乗じない(すなわち、重み係数を1.0へ設定する)ことにより、推定残差の予測精度を向上させることができる。逆に、参照レイヤの残差が大きい場合には、重み係数1.0未満を乗じ、残差の大きさを小さくすることで、推定残差の予測精度を向上させることができる。また、各重み係数と対応付けられた残差予測重み係数インデックス(res_pred_weight_idx)を明示的に符号化/復号せずとも、残差予測フラグ(res_pred_flag)の値が1の場合、上記条件に基づいて、残差予測の重み係数を暗黙的に設定することによって、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの符号化/復号処理を簡略化することが可能である。
<残差予測情報の符号化データ上の構成(図45)>
図45は、可変長復号部12の変形例2で復号される符号化データの構成の予測単位の符号化データ部分(図3の予測情報PInfoに対応)を示す図である。
本例では、残差予測情報が、PUごとに符号化される。図45に示す通り、符号化データの予測単位の符号化データは、図45のSYN1Aで示される動き補償パラメータ(マージインデックスmerge_idx、マージフラグmerge_flag、インター予測識別子inter_pred_idc、参照画像インデックスref_idx_l0、ref_idx_l1、推定動きベクトルインデックスmvp_l0_flag、mvp_l1_flag、動きベクトル残差mvd_coding)と、SYN2A2で示される該PUに対応する残差予測情報(残差予測フラグres_pred_flag)から構成される。図45のように、予測単位の符号化データでは、動き補償パラメータ、残差予測情報の順に符号化を配置する。この順序で配置することにより、予測単位ごとの動き報償パラメータの値に応じて、残差予測を適用するか否かを表わす残差予測情報を明示的に復号するか否かを制御することが可能である。SYN2A2に次の判定がある。
ResPredAvailableFlag ?
本判定は、該PUにおいて、残差予測利用可フラグ(ResPredAvailableFlag)が1であるか否かの判定であり、図44のS322の判定、図53のS422に相当する。残差予測利用可フラグ(ResPredAvailableFlag)については、上述の<残差予測利用可フラグの導出について>において説明済である。
以上の符号化構造では、残差予測利用可フラグが1である場合、残差予測情報(残差予測フラグres_pred_flag)が含まれ、それ以外の場合は、残差予測情報は含まれない。また、残差予測フラグres_pred_flagが1の場合、所定条件に基づいて、当該PUにおいて残差予測を適用時の残差予測重み係数res_pred_weightを導出する。従って、該PU単位において、残差予測利用可フラグが1のとき、残差予測フラグが符号化/復号されるため、残差予測フラグに係る符号化/復号に関する処理量の低減、及び符号量を低減する効果が得られる。また、残差予測フラグが1の場合、残差予測重み係数を所定条件に基づいて導出するため、残差予測係数重み係数に関するシンタックスの符号化/復号に関する処理量の低減、及び符号量を低減する効果が得られる。
<可変長復号部12の変形例3>
上述の<可変長復号部2の変形例2>では、PU単位で残差予測フラグres_pred_flagを復号し、残差予測フラグres_pred_flagが1の場合、所定条件に基づいて、当該PUにおいて残差予測適用時の残差予測重み係数res_pred_weightを導出する例を述べたが、これに限定されない。例えば、CU単位で残差予測フラグres_pred_flagを復号し、残差予測フラグres_pred_flagが1の場合、上述の<残差予測重み係数の導出について>に説明してあるように所定条件に基づいて、残差予測重み係数res_pred_weightを導出する構成としてもよい。以下、図58を用いて、CU単位で残差予測フラグを含む場合の符号化データを復号する動作を説明する。なお、図59は、CU単位で残差予測フラグを含む場合の符号化データの構成を示す図である。
(S601)可変長復号部12の変形例3は、所定のパラメータセット(例えば、スライスヘッダSH)単位毎に、CU単位毎に残差予測フラグを復号するか否かを示す残差予測有効フラグres_pred_enable_flagを復号する。続いて、各CTBにおいて、以下の処理を行う。
(S602)CUのループを開始する。CUのループはCTBに含まれる全てのCUを順に処理することで行われる。
(S603)CUのループ内では、対象CUのCUタイプを示すCUタイプ情報、図59上のシンタックスSYN3A1が示すスキップフラグ(cu_skip_flag)、または、図59上のシンタックスSYN3A3に示す予測モードフラグ(pred_mode_flag)を復号する。上記スキップフラグ、および予測モードフラグに基づいて、対象CUのCUタイプが、スキップCU、イントラCU、または、インターCUであるかを決定する。スキップフラグが1の場合は、スキップCUであることを示す。また、スキップフラグが0の場合は、さらに予測モードフラグに基づいて、イントラCUであるか、インターCUであるか決定する。予測モードフラグが1の場合は、イントラCUであることを示し、0の場合は、インターCUであることを示す。なお、インターCUの場合は、予測モードフラグの後に、図59上のSYN3A4に示すPU分割タイプ情報(part_mode)がさらに復号されうる。
(S604)対象CUがスキップCU、または、インターCUであるか判定する。対象CUがスキップCU、またはインターCUである場合(ステップS604でYes)は、ステップS605へ遷移する。それ以外の場合(ステップS604でNo)は、ステップS607へ遷移する。
(S605)<可変長復号部12の詳細>において既述であるが、図22に示すステップ305に示すように、残差予測有効フラグが1、かつ、所定条件(残差予測が利用可能な状態であるか)を満たすか否かを判定する。判定式が“真”の場合(S605でYes)は、ステップS606へ遷移し、残差予測フラグを復号する(ステップS606)。判定式が“偽”の場合(S605でNo)、ステップS607へ遷移する。なお、残差予測フラグが復号されない場合、残差予測フラグの値は0へ設定されるものとする。
また、ここでの残差予測が利用可能な状態であるかとは、具体的には、(1)〜(3)の条件に関して、各条件の判定式の値を、ret1, ret2, ret3とすると、例えば、以下の条件(a)〜(c)の何れかを満たすことである。
(1)対象レイヤの現画像と対応する同時刻(poc)の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に存在する否か
(2)対象レイヤの現画像で利用される参照画像リストL0に含まれる参照画像のいずれかと対応する同時刻(poc)の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否か
(3)対象レイヤの現画像で利用される参照画像リストL1に含まれる参照画像のいずれかと対応する同時刻(poc)の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否か
(a)対象CUを含むスライスのスライスタイプがPスライスである場合、残差予測Pスライス有効フラグres_pred_pslice_enable_flagを以下の式で導出する。
res_pred_pslice_enable_flag = (ret1 && ret2) ? ・・・条件(1)を満たし、かつ、条件(2)を満たすか否か
(b)対象CUを含むスライスのスライスタイプがBスライスである場合、残差予測Bスライス有効フラグres_pred_bslice_enable_flagを以下の式で導出する。
res_pred_bslice_enable_flag = (ret1 && ( ret2 && ret3 )) ? ・・・条件(1)を満たし、かつ条件(2)を満たし、かつ条件(3)を満たすか否か
条件(b)のres_pred_bslice_enable_flagの代わりに、条件(c)を用いてもよい。
(c)対象CUを含むスライスのスライスタイプがBスライスである場合、残差予測Bスライス有効フラグres_pred_bslice_enable_flagを以下の式で導出する。
res_pred_bslice_enable_flag = (ret1 && ( ret2 || ret3 ) ? ・・・条件(1)を満たし、かつ、条件(2)または条件(3)の何れかを満たすか否か。なお、上記残差予測Pスライス有効フラグ、及び残差予測Bスライス有効フラグは、各CU単位で実行せずに、各スライス毎に処理順で最初のCUにおいて導出し、以降のCUにおいて、導出済の各フラグの値を参照する構成としてもよい。こにれよって、残差予測Pスライス有効フラグ、及び残差予測Bスライス有効フラグの導出回数をスライス単位当たり1回へ低減することができる。
(S607)PUのループを開始する。PUのループは該CUに含まれる全てのPUを順に処理することで行われる。
(S608)PUのループ内では、予測情報PInfoのうち該PUに対応する情報を復号する。図22のステップS304と同一であるため、詳細な説明を省略する。
(S609)残差予測フラグが1であるか判定する。残差予測フラグが1である場合(ステップS609においてYes)
(S610)該PUにおいて残差予測を実際に適用するか否かを示す残差予測可フラグResPredAvailableFlagを導出する。なお、残差予測利用可フラグResPredAvailableFlagの導出は、既述の<残差予測利用可フラグの導出について>と同様であるため、説明を省略する。
(S611)残差予測可フラグResPredAvailableFlagが1である場合(ステップS610でYes)、ステップS612へ遷移し、それ以外の場合(ステップS611でNo)、ステップS613へ遷移する。
(S612)所定条件に基づいて、該PUの残差予測重み係数res_pred_weightを導出する。なお、残差予測重み係数の導出は、既述の<残差予測重み係数の導出について>と同様であるため、説明を省略する。
(S613)PU単位のループの終端である。
(S614)CU単位のループの終端である。
上記可変長復号部12の変形例3によれば、スライスタイプ毎に、残差予測を利用可能な状態であるかを、以下の(1)〜(3)の条件に基づいて判定することで、明示的に残差予測フラグを復号するか否かを制御することが可能である。従って、残差予測を利用できない場合は、残差予測フラグの復号を省略することができるため、残差予測フラグの復号に係る処理量を削減することができる。
(1)対象レイヤの現画像と対応する同時刻(poc)の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に存在する否か
(2)対象レイヤの現画像で利用される参照画像リストL0に含まれる参照画像のいずれかと対応する同時刻(poc)の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否か
(3)対象レイヤの現画像で利用される参照画像リストL1に含まれる参照画像のいずれかと対応する同時刻(poc)の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否か
さらに、可変長復号部12の変形例3によれば、当該CUにおいて残差予測フラグが1である場合、PU単位毎に実際に残差予測を適用する否かを残差予測利用可フラグに基づいて制御する。残差予測利用可フラグは、既述の<残差予測利用可フラグの導出について>と同様に所定条件A1〜A6の何れか、または、各条件の組み合わせに基づいて導出される。従って、各PUの予測パラメータ、CUサイズ、PUサイズ等に基づいて、各PUへの残差予測の適用を制限することができるため、残差予測に係る処理量を低減することが可能である。
(A1)処理対象の予測単位(PU)のサイズが所定サイズより大きいか否か
(A2)処理対象の予測単位を含むCUのサイズが所定サイズ以上であるか否か
(A3)処理対象の予測単位を含むCUのPU分割タイプが2N×2Nであるか否か
(A4)処理対象の予測単位のインター予測が単予測であるか否か
(A5)処理対象の予測単位の予測モードがスキップモード、またはマージモードであるか否か
(A6)処理対象の予測単位の参照画像が所定条件を満たすか否か
なお、各条件毎の具体的な効果・作用は、既述の<残差予測利用可フラグの導出について>と同様であるため、詳細な説明は省略する。
さらに、可変長復号部12の変形例3によれば、残差予測利用可フラグが1である場合、所定条件に基づいて、当該PUにおいて残差予測を適用時の残差予測重み係数res_pred_weightを導出するため、残差予測重み係数に関するシンタックスの復号に関する処理量の低減、及び符号量を低減する効果が得られる。
<残差予測情報の符号化データ上の構成(図59)>
図59は、可変長復号部12の変形例2Aで復号される符号化データの構成の予測単位の符号化データ部分(図3の予測情報PInfoに対応)を示す図である。
本例では、残差予測情報が、CUごとに符号化される。図59に示す通り、符号化データのCU単位の符号化データは、図59のSYN3A1、またはSYN3A3で示されるCUタイプ情報(スキップフラグcu_skip_flag、予測モードフラグpred_mode_flag)と、SYN3A2、およびSYN3A5で示される該CUに対応する残差予測情報(残差予測フラグres_pred_flag)、PU分割タイプ(part_mode)、ならびに図示しないPU情報、及びTU情報から構成される。図59のように、CU単位の符号化データでは、CUタイプ情報、残差予測情報の順にシンタックスを配置する。この順序で配置することにより、CUタイプ毎に、残差予測を適用するか否かを表わす残差予測情報を明示的に復号するか否かを制御することが可能である。SYN3A2、およびSYN3A5に次の判定がある。
res_pred_enable_flag &&
( ( slice_type==P_SLICE && res_pred_pslice_enable_flag) ||
( slice_type==B_SLICE && res_pred_bslice_enable_flag) ) ?
本判定は、該CUが属するスライスにおいて、残差予測が利用可能な状態であるか否かの判定であり、図58のS605の判定、図60のS705に相当する。
以上の符号化構造では、残差予測が利用可能な状態である場合のみ、残差予測情報(残差予測フラグres_pred_flag)が含まれ、それ以外の場合は、残差予測情報は含まれない。従って、該CU単位において、残差予測が利用可能な状態のときのみ、残差予測情報が符号化されるため、残差予測情報の符号量を低減する効果が得られる。また、当該PUにおいて、残差予測利用可フラグResPredEnableFlagが1の場合、残差予測を適用時の残差予測重み係数res_pred_weightを所定条件に基づいて導出する。従って、残差予測係数重み係数に関するシンタックスの符号化/復号に関する処理量の低減、及び符号量を低減する効果が得られる。
〔階層動画像符号化装置〕
次に、本実施形態に係る階層動画像符号化装置2の構成について、図25〜29を参照して説明する。
(階層動画像符号化装置の構成)
図25を用いて、階層動画像符号化装置2の概略的構成について説明すると次のとおりである。図25は、階層動画像符号化装置2の概略的構成について示した機能ブロック図である。階層動画像符号化装置2は、対象レイヤの入力画像PIN#Tを、参照レイヤ符号化データDATA#Rを参照しながら符号化して、対象レイヤの階層符号化データDATAを生成する。なお、参照レイヤ符号化データDATA#Rは、参照レイヤに対応する階層動画像符号化装置において符号化済みであるとする。
図25に示すように階層動画像符号化装置2は、予測パラメータ決定部21、予測情報生成部22、ベース復号部23、テクスチャ情報生成部24、可変長符号化部25、および、NAL多重化部26を備える。
予測パラメータ決定部21は、入力画像PIN#Tに基づいて、予測画像の予測に用いられる予測パラメータおよびその他の符号化の設定を決定する。
予測パラメータ決定部21は、予測パラメータをはじめとする符号化の設定を、以下のとおり行う。
まず、予測パラメータ決定部21は、入力画像PIN#Tを、スライス単位、ツリーブロック単位、CU単位に順次分割することにより、対象CUについてのCU画像を生成する。
また、予測パラメータ決定部21は、分割処理の結果に基づいて、符号化情報(ヘッダ情報とも称されることがある)を生成する。符号化情報は、(1)対象スライスに属するツリーブロックのサイズ、形状および対象スライス内での位置についての情報であるツリーブロック情報と、(2)各ツリーブロックに属するCUのサイズ、形状および対象ツリーブロック内での位置についての情報であるCU情報とを含んでいる。
さらに、予測パラメータ決定部21は、CU画像、ツリーブロック情報、およびCU情報を参照して、対象CUの予測タイプ、対象CUのPUへの分割情報、および、予測パラメータ(対象CUが、イントラCUであればイントラ予測モード、インターCUである場合には各PUにおける動き補償パラメータ、残差予測情報)を導出する。
予測パラメータ決定部21は、(1)対象CUの予測タイプ、(2)対象CUの各PUへの可能な分割パターン、および、(3)各PUに割り付ける可能な予測モード(イントラCUであればイントラ予測モード、インターCUであれば動き補償パラメータおよび残差予測)、の全ての組み合わせについて、コストを算出し、最低コストの予測タイプ、分割パターン、および、予測モードを決定する。
予測パラメータ決定部21は、符号化情報および予測パラメータを予測情報生成部22およびテクスチャ情報生成部24に供給する。なお、説明の簡便のため図示しないが、予測パラメータ決定部21において決定された上記の符号化の設定は、階層動画像符号化装置2の各部において参照可能とする。
予測情報生成部22は、予測パラメータ決定部21から供給される予測パラメータと、参照レイヤ符号化データDATA#Rとに基づいて予測パラメータに関するシンタックス値を含む予測情報を生成する。予測情報生成部22は、生成した予測情報を可変長符号化部25に供給する。なお、予測情報生成部22は、予測パラメータを復元する際に、テクスチャ情報生成部24が備えるフレームメモリ155に格納された動き情報を参照することができる。
ベース復号部23は、階層動画像復号装置1のベース復号部13と同様であるので、ここではその説明を省略する。
テクスチャ情報生成部24は、入力画像PIN#Tから予測画像を減算して得られる予測残差を、直交変換・量子化した変換係数を含む変換係数情報を生成する。テクスチャ情報生成部24は、生成した変換係数情報を可変長符号化部25に供給する。なお、テクスチャ情報生成部24では、復元された復号画像に関する情報が、内部に備えるフレームメモリ155に格納される。
可変長符号化部25は、予測情報生成部22から供給される予測情報(動き補償パラメータ、残差予測情報など)、およびテクスチャ情報生成部24から供給される変換係数情報を可変長符号化して対象レイヤ符号化データDATA#Tを生成する。可変長符号化部25は、生成した対象レイヤ符号化データDATA#TをNAL多重化部26に供給する。
NAL多重化部26は、可変長符号化部25から供給される対象レイヤ符号化データDATA#Tと、参照レイヤ符号化データDATA#RとをNALユニットに格納することでNAL多重化した階層動画像符号化データDATAを生成し、外部に出力する。
以下において、予測情報生成部22、およびテクスチャ情報生成部24それぞれの詳細について説明する。
(予測情報生成部)
図26を用いて、予測情報生成部22の詳細構成について説明する。図26は、予測情報生成部22の構成について例示した機能ブロック図である。
図26に示すように、予測情報生成部22は、予測タイプ選択部221、スイッチ222、イントラ予測モード導出部223、動きベクトル候補導出部224、動き情報生成部225、マージ候補導出部226、マージ情報生成部227、残差予測情報生成部228を備える。
予測タイプ選択部221は、CUタイプまたはPUタイプに応じてスイッチ222に切り替え指示を送り予測パラメータの導出処理を制御する。具体的には以下のとおりである。
イントラCUまたはイントラPUが指定されている場合、予測タイプ選択部221はイントラ予測モード導出部223を用いて予測情報を導出できるようスイッチ222を制御する。
インターCU(マージなし)およびインターPU(マージなし)のいずれかが指定されている場合、予測タイプ選択部221は動き情報生成部225を用いて予測パラメータを導出できるようスイッチ222を制御する。
ベーススキップCU、ベースマージCU、スキップCU、およびマージPUのいずれかが指定されている場合、予測タイプ選択部221はマージ情報生成部227を用いて予測パラメータを導出できるようスイッチ222を制御する。
また、インターCU(マージなし)、インターPU(マージなし)、ベーススキップCU、ベースマージCU、スキップCU、およびマージCUのいずれかが指定されている場合、予測タイプ選択部221は、残差予測情報生成部228を用いて、さらに予測パラメータの一部として、残差予測情報を導出できるようスイッチ221を制御する。
スイッチ222は、予測タイプ選択部221の指示に応じて、予測パラメータを、イントラ予測モード導出部223、動き情報生成部225、およびマージ情報生成部227のいずれかに供給する。また、スイッチ222は、予測タイプ選択部222の指示に応じて、さらに残差予測情報生成部228へ予測情報を供給する。予測情報の供給先において予測パラメータが導出される。
イントラ予測モード導出部223は、予測モードに関するシンタックス値を導出する。すなわち、イントラ予測モード導出部223が予測情報として生成するのは、予測モードに関するシンタックス値である。
動きベクトル候補導出部224は、ベース復号情報を用いて、レイヤ内動き推定処理、またはレイヤ間動き推定処理により推定動きベクトルの候補を導出する。動きベクトル候補導出部224は、導出した動きベクトルの候補を動き情報生成部225に供給する。
動き情報生成部225は、マージを行わない各インター予測パーティションにおける動き情報に関するシンタックス値を生成する。すなわち、動き情報生成部225が予測情報として生成するのは動き情報に関するシンタックス値である。具体的には、動き情報生成部225は、各PUにおける動き補償パラメータから、対応するシンタックス要素値であるinter_pred_idc、mvd、mvp_idx、および、refIdxを導出する。
具体的には、動き情報生成部225は、対象PUがベースマージPUである場合、動きベクトル候補導出部224から供給される動きベクトルの候補に基づいて、上記シンタックス値を導出する。
一方、動き情報生成部225は、対象CU(PU)がマージを行わないインターCU(インターPU)である場合、予測パラメータに含まれる動き情報に基づいて、上記シンタックス値を導出する。
マージ候補導出部226は、フレームメモリ155から供給される復号済みの動き情報および/またはベース復号部23から供給されるベース復号情報等を用いて、各PUにおける動き補償パラメータと類似の動き補償パラメータを有するマージ候補を導出する。マージ候補導出部226は、導出したマージ候補をマージ情報生成部227に供給する。
マージ情報生成部227は、マージを行う各インター予測パーティションに関する動き情報に関するシンタックス値を生成する。すなわち、マージ情報生成部227が予測情報として生成するのは動き情報に関するシンタックス値である。具体的には、マージ情報生成部227は、各PUにおける動き補償パラメータと類似の動き補償パラメータを有するマージ候補を指定するシンタックス要素値merge_idxを出力する。
残差予測情報生成部228は、各PUに関する残差予測情報を生成する。具体的には、残差予測情報に対応するシンタックス要素値である、残差予測フラグres_pred_flag、および残差予測重み係数インデックスを導出する。
(テクスチャ情報生成部)
図27を用いて、テクスチャ情報生成部34の詳細構成について説明する。図27は、テクスチャ情報生成部24の構成について例示した機能ブロック図である。
図27に示すように、テクスチャ情報生成部24は、テクスチャ予測部152、減算器242、直交変換・量子化部243、逆直交変換・逆量子化部244、加算器245、ループフィルタ部246、およびフレームメモリ155を備える。
減算器242は、入力画像PIN#Tからテクスチャ予測部152から供給される予測画像を減算することによって、予測残差Dを生成する。減算器242は、生成した予測残差Dを、直交変換・量子化部243に供給する。
直交変換・量子化部243は、予測残差Dに対して、直交変換および量子化を行うことで量子化予測残差を生成する。なお、ここで直交変換とは、画素領域から周波数領域への直交変換のことをさす。また、直交変換の例としては、DCT変換(Discrete Cosine Transform)、およびDST変換(Discrete Sine Transform)等が挙げられる。また、具体的な量子化過程については、すでに説明した通りであるので、ここではその説明を省略する。直交変換・量子化部243は、生成した量子化予測残差を含む変換係数情報を逆直交変換・逆量子化部244および可変長符号化部25に供給する。
テクスチャ予測部152、逆直交変換・逆量子化部244、加算器245、ループフィルタ部246、およびフレームメモリ155は、それぞれ、階層動画像復号装置1に含まれるテクスチャ予測部152、逆直交変換・逆量子化部151、加算器153、ループフィルタ部154、およびフレームメモリ155と同様であるので、ここではその説明は省略する。ただし、テクスチャ予測部152は、加算器245だけでなく減算器242にも予測画像を供給する。
テクスチャ予測部152のインター予測部152Aの備える残差予測部1522は、既に階層動画像復号装置1に置いて説明したように、残差予測フラグres_pred_flagが0の場合には、対象PUのLX予測画像predSampleLXをそのまま出力する。また、残差予測フラグres_pred_flagが1の場合に、対象PUのLX予測画像predSamplesLXに対して、残差予測を行う。残差予測は、予測画像生成の対象とする対象レイヤ(第2のレイヤ画像)とは異なる参照レイヤ(第1のレイヤ画像)の残差resSamplesを、残差予測重み係数インデクスres_weight_indexが示す重み係数res_weightだけ乗算し、対象レイヤのLX予測画像predSamplesLXに加算することで、LX予測画像を補正することができるため、予測画像の精度が増し、符号化効率を改善する効果を奏する。なお、テクスチャ予測部152のインター予測部152Aの備える残差予測部1522は、階層動画像復号装置において説明した、残差予測部1522の変形例1〜変形例3と対応する残差予測部1522a、または1522b、または1522cによって構成されてもよい。
<可変長符号化部25の詳細>
以下、可変長符号化部25における残差予測情報の符号化の詳細を説明する。
図28は、復号装置における図22に対応する図面である。なお、S301〜S310は各々、S401〜S410に対応する。
図28は、可変長符号化部25において、残差予測情報を含む符号化パラメータを符号化する動作を示す図である。
(S401)可変長符号化部25は、所定のパラメータセット(例えば、スライスヘッダSH)、所定単位毎に残差予測フラグを符号化するか否かを示す残差予測有効フラグres_pred_enable_flagを符号化する。続いて、各CTBにおいて、以下の処理を行う。
(S402)CUのループを開始する。CUのループはCTBに含まれる全てのCUを順に処理することで行われる。
(S403)PUのループを開始する。PUのループは該CUに含まれる全てのPUを順に処理することで行われる。
(S404)PUのループ内では、残差予測情報(res_pred_flag, res_pred_weight)を除く、予測情報PInfoの内該PUに対応する情報を符号化する。例えば、マージインデックス、マージフラグ、インター予測識別子、参照画像インデックス、推定動きベクトルインデックス、動きベクトル残差と、が符号化される。
(S405)続いて、本PUにおいて、残差予測有効フラグ(res_pred_enable_flag)が1、かつ、所定条件を満たすか否かを判定する(S405)。残差予測有効フラグが1かつ、所定条件を満たす場合(ステップ405でYes)、残差予測フラグを符号化へ遷移する(S406に遷移)。それ以外の場合(ステップ405でNo)、残差予測フラグの符号化は省略される(S409に遷移)。上記所定条件(残差予測が利用可能な状態であるか)を満たすか否かとは、具体的には、(1)〜(3)の条件に関して、各条件の判定式の値をret1, ret2, ret3とすると、例えば、以下の条件(a)〜(c)の何れかを満たすことである。なお、retXの値が1の場合を真、0の場合を偽と解釈する。
(1)対象レイヤの現画像と対応する同時刻(poc)の参照レイヤの符号化済画像が参照レイヤのピクチャバッファ上に存在するか否か
(2)対象レイヤの当該PUにおいて、参照画像利用リストフラグpredFlagL0が1の場合、参照画像リストL0と参照画像インデックスRefIdxL0から定まる対象レイヤの参照画像と対応する同時刻(poc)の参照レイヤの符号化済画像が存在する否か
(3)対象レイヤの当該PUにおいて、参照画像利用リストフラグpredFlagL1が1の場合、参照画像リストL1と参照画像インデックスRefIdxL1から定まる対象レイヤの参照画像と対応する同時刻(poc)の参照レイヤの符号化済画像が存在する否か
ここで、pocとは、ピクチャ順序番号(Picture Ordering Count)を表わし、符号化済画像の表示時刻に関連するパラメータである。
(a)インター予測識別子inter_pred_idcがL0予測である場合、残差予測L0予測有効フラグres_predL0_enable_flagを以下の式で導出する。
res_predL0_enable_flag = ret1 && ( ret2 ) ? ・・・条件(1)を満たし、かつ、条件(2)を満たすか否か。
(b)インター予測識別子inter_pred_idcがL1予測である場合、残差予測L1予測有効フラグres_predL1_enable_flagを以下の式で導出する。
res_predL0_enable_flag = ret1 && ( ret3 ) ?
・・・条件(1)を満たし、かつ、条件(3)を満たすか否か。
(c)インター予測識別子inter_pred_idcが双予測である場合、残差予測双予測有効フラグres_predBI_enable_flagを以下の式で導出する。
res_predBI_enable_fla = ret1 && ( ret2 && ret3) ?
・・・条件(1)を満たし、かつ条件(2)を満たし、かつ条件(3)を満たすか否か。なお、双予測に関しては、条件(c)の代わりに条件(d)を用いてもよい。
(d)res_predBI_enable_flag= ret1 && ( ret2 || ret3 ) ? ・・・条件(1)を満たし、かつ、条件(2)または条件(3)の何れかを満たすか否か。
以上、インター予測識別子inter_pred_idcが示す予測モード(L0予測、L1予測、双予測)毎に、残差予測を利用可能な状態であるかを判定することで、明示的に残差予測フラグを符号化するか否かを制御することが可能である。従って、残差予測を利用できない場合は、残差予測フラグの符号化を省略することができるため、残差予測フラグの符号化に係る処理量を削減し、かつ、符号量を削減することができる。
(S406)残差予測フラグres_pred_flagを符号化する。
(S407)残差予測フラグres_pred_flagが1であるかを判定する。残差予測フラグが1である場合(S407でYes)、残差予測重み係数インデックスを符号化へ遷移する(S408へ遷移)。それ以外の場合は、S409へ遷移する。
(S408)残差予測重み係数インデックスres_pred_weight_idxを符号化する。
(S409)PU単位のループの終端である。
(S410)CU単位のループの終端である。
以上の構成の可変長符号化部25によれば、インター予測識別子inter_pred_idcが示す予測モード(L0予測、L1予測、双予測)毎に、残差予測を利用可能な状態であるかを、以下の(1)〜(3)の条件に基づいて判定することで、明示的に残差予測フラグを符号化するか否かを制御することが可能である。従って、残差予測を利用できない場合は、残差予測フラグの符号化を省略することができるため、残差予測フラグの符号化に係る処理量を削減し、かつ、符号量を削減することができる。
(1)対象レイヤの現画像と対応する同時刻の参照レイヤの符号化済画像が参照レイヤのピクチャバッファ上に存在するか否か
(2)対象レイヤの当該PUにおいて、参照画像利用リストフラグpredFlagL0が1の場合、参照画像リストL0と参照画像インデックスRefIdxL0から定まる対象レイヤの参照画像と対応する同時刻の参照レイヤの符号化済画像が存在する否か
(3)対象レイヤの当該PUにおいて、参照画像利用リストフラグpredFlagL1が1の場合、参照画像リストL1と参照画像インデックスRefIdxL1から定まる対象レイヤの参照画像と対応する同時刻の参照レイヤの符号化済画像が存在する否か
<可変長符号化部25の変形例1>
上述の<可変長符号化部25の詳細>では、図28のステップS405において、残差予測有効フラグ(res_pred_enable_flag)が1であるか否かと、所定条件(残差予測が利用可能な状態であるか)を満たすか否かに基づいて、残差予測情報を復号するか否かを判定しているが、これに限定されない。例えば、図52に示すフロー図のように、ステップS405をステップS421とステップS422に置き換えてもよい。以下、図52を用いて、可変長符号化25の変形例1において、残差予測情報を含む符号化パラメータを符号化する動作について説明する。なお、図52は、復号装置における図31に対応する図面であり、各ステップS301〜4、S321〜S322、S306〜S310は各々、S401〜S404、S421〜S422、S406〜S410に対応する。なお、図52において、ステップS401〜ステップS404、ステップS406〜ステップ410は、図28の各ステップと同一であるため、説明を省略し、ステップS421、ステップS422について説明する。
(S421)続いて、本PUにおいて、残差予測利用可フラグ(ResPredAvailableFlag)を導出する。残差予測利用可フラグとは、本PUにおいて、残差予測情報を符号化するか否かを制御するフラグである。
(S422)残差予測利用可フラグ(ResPredAvaiableFlag)の値が1であるか否かを判定する。残差予測利用可フラグが1である場合(ステップS422においてYes)、
残差予測フラグを符号化へ遷移する(S406に遷移)。それ以外の場合、すなわち、残差予測利用可フラグが0である場合(ステップ422でNo)、残差予測フラグの符号化は省略される(S409に遷移)。
なお、ステップS421における残差予測利用可フラグの導出は、図31のステップS321と同一であり、<残差予測利用可フラグの導出について>において、既述のため詳細な説明を省略する。
以上、可変長符号化部の変形例2によれば、残差予測利用可フラグに基づいて、残差予測情報を明示的に符号化するか否かを制御することが可能である。従って、残差予測利用可フラグが、残差予測情報を符号化しないことを示す場合、残差予測情報に係る符号化の処理量の低減、及び残差予測情報に係る符号量を削減することができる。
<可変長符号化部25の変形例2>
上述の<可変長符号化部25の変形例1>では、図52のステップS408において、残差予測フラグ(res_pred_flag)が1で場合に、明示的に残差予測重み係数を示す残差予測重み係数インデックスを復号する構成であるが、これに限定されない。例えば、図53に示すフロー図のように、ステップS408をステップS408’に置き換えてもよい。以下、図53を用いて、可変長符号化部25の変形例2において、残差予測情報を含む符号化パラメータを符号化するする動作について説明する。なお、図53において、ステップS401〜ステップS404、ステップS421〜ステップS422、ステップS406,ステップS409〜ステップS410は、図52の各ステップと同一であるため、説明を省略し、ステップS408’について説明する。
(S407)残差予測フラグ(res_pred_flag)が1の場合(ステップS407においてYes)、ステップS408’へ遷移する。それ以外の場合は、S409へ遷移する。
(S408’)所定条件に基づいて、残差予測重み係数res_pred_weightを導出する。なお、ステップS408’における残差予測重み係数の導出は、図44のステップS308’と同一であり、<残差予測重み係数の導出について>において既述であるため、説明を省略する。
以上、可変長符号部25の変形例2は、残差予測利用可フラグが1である場合、残差予測情報(残差予測フラグres_pred_flag)を符号化し、それ以外の場合は、残差予測情報を符号化しない。また、残差予測フラグres_pred_flagが1の場合、所定条件に基づいて、当該PUにおいて残差予測を適用時の残差予測重み係数res_pred_weightを導出する。従って、該PU単位において、残差予測利用可フラグが1のとき、残差予測フラグが符号化されるため、残差予測フラグに係る符号化に関する処理量の低減、及び符号量を低減する効果が得られる。また、残差予測フラグが1の場合、残差予測重み係数を所定条件に基づいて導出するため、残差予測係数重み係数に関するシンタックスの符号化に関する処理量の低減、及び符号量を低減する効果が得られる。
<可変長符号化部25の変形例3>
上述の<可変長符号化部25の変形例2>では、PU単位で残差予測フラグres_pred_flagを符号化し、残差予測フラグres_pred_flagが1の場合、所定条件に基づいて、当該PUにおいて残差予測適用時の残差予測重み係数res_pred_weightを導出する例を述べたが、これに限定されない。例えば、CU単位で残差予測フラグres_pred_flagを符号化し、残差予測フラグres_pred_flagが1の場合、上述の<残差予測重み係数の導出について>に説明してあるように所定条件に基づいて、残差予測重み係数res_pred_weightを導出する構成としてもよい。以下、図60を用いて、CU単位で残差予測フラグを含む場合の符号化データを符号化する動作を説明する。なお、図59は、CU単位で残差予測フラグを含む場合の符号化データの構成を示す図である。なお、図60は、復号装置における図58に対応する図面である。なお、S601〜S614は各々、S701〜S714に対応する。
(S701)可変長符号化部25の変形例3は、所定のパラメータセット(例えば、スライスヘッダSH)単位毎に、CU単位毎に残差予測フラグを符号化するか否かを示す残差予測有効フラグres_pred_enable_flagを符号化する。続いて、各CTBにおいて、以下の処理を行う。
(S702)CUのループを開始する。CUのループはCTBに含まれる全てのCUを順に処理することで行われる。
(S703)CUのループ内では、対象CUのCUタイプを示すCUタイプ情報、図59上のシンタックスSYN3A1が示すスキップフラグ(cu_skip_flag)、または、図59上のシンタックスSYN3A3に示す予測モードフラグ(pred_mode_flag)を符号化する。具体的には、スキップCUであれば、スキップフラグを1として符号化する。また、またイントラCUであれば、スキップフラグを0、予測モードフラグを1として符号化する。また、インターCUであれば、スキップフラグ0、予測モードフラグを0として符号化する。なお、インターCUの場合は、予測モードフラグの後に、図59上のSYN3A4に示すPU分割タイプ情報(part_mode)がさらに符号化されうる。
(S704)対象CUがスキップCU、または、インターCUであるか判定する。対象CUがスキップCU、またはインターCUである場合(ステップS704でYes)は、ステップS705へ遷移する。それ以外の場合(ステップS704でNo)は、ステップS707へ遷移する。
(S705)<可変長符号化部25の詳細>において既述であるが、図28に示すステップ405に示すように、残差予測有効フラグが1、かつ、所定条件(残差予測が利用可能な状態であるか)を満たすか否かを判定する。判定式が“真”の場合(S705でYes)は、ステップS706へ遷移し、残差予測フラグを符号化する(ステップS706)。判定式が“偽”の場合(S705でNo)、ステップS707へ遷移する。
また、ここでの残差予測が利用可能な状態であるかとは、具体的には、(1)〜(3)の条件に関して、各条件の判定式の値を、ret1, ret2, ret3とすると、例えば、以下の条件(a)〜(c)の何れかを満たすことである。
(1)対象レイヤの現画像と対応する同時刻(poc)の参照レイヤの符号化済画像(復号画像)が参照レイヤのピクチャバッファ上に存在する否か
(2)対象レイヤの現画像で利用される参照画像リストL0に含まれる参照画像のいずれかと対応する同時刻(poc)の参照レイヤの符号化済画像(復号画像)が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否か
(3)対象レイヤの現画像で利用される参照画像リストL1に含まれる参照画像のいずれかと対応する同時刻(poc)の参照レイヤの符号化済画像(復号画像)が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否か
(a)対象CUを含むスライスのスライスタイプがPスライスである場合、残差予測Pスライス有効フラグres_pred_pslice_enable_flagを以下の式で導出する。
res_pred_pslice_enable_flag = (ret1 && ret2) ? ・・・条件(1)を満たし、かつ、条件(2)を満たすか否か
(b)対象CUを含むスライスのスライスタイプがBスライスである場合、残差予測Bスライス有効フラグres_pred_bslice_enable_flagを以下の式で導出する。
res_pred_bslice_enable_flag = (ret1 && ( ret2 && ret3 )) ? ・・・条件(1)を満たし、かつ条件(2)を満たし、かつ条件(3)を満たすか否か
条件(b)のres_pred_bslice_enable_flagの代わりに、条件(c)を用いてもよい。
(c)対象CUを含むスライスのスライスタイプがBスライスである場合、残差予測Bスライス有効フラグres_pred_bslice_enable_flagを以下の式で導出する。
res_pred_bslice_enable_flag = (ret1 && ( ret2 || ret3 ) ? ・・・条件(1)を満たし、かつ、条件(2)または条件(3)の何れかを満たすか否か。なお、上記残差予測Pスライス有効フラグ、及び残差予測Bスライス有効フラグは、各CU単位で実行せずに、各スライス毎に処理順で最初のCUにおいて導出し、以降のCUにおいて、導出済の各フラグの値を参照する構成としてもよい。こにれよって、残差予測Pスライス有効フラグ、及び残差予測Bスライス有効フラグの導出回数をスライス単位当たり1回へ低減することができる。
(S707)PUのループを開始する。PUのループは該CUに含まれる全てのPUを順に処理することで行われる。
(S708)PUのループ内では、予測情報PInfoのうち該PUに対応する情報を符号化する。図28のステップS404と同一であるため、詳細な説明を省略する。
(S709)残差予測フラグが1であるか判定する。残差予測フラグが1である場合(ステップS709においてYes)
(S710)該PUにおいて残差予測を実際に適用するか否かを示す残差予測可フラグResPredAvailableFlagを導出する。なお、残差予測利用可フラグResPredAvailableFlagの導出は、既述の<残差予測利用可フラグの導出について>と同様であるため、説明を省略する。
(S711)残差予測可フラグResPredAvailableFlagが1である場合(ステップS710でYes)、ステップS712へ遷移し、それ以外の場合(ステップS711でNo)、ステップS713へ遷移する。
(S712)所定条件に基づいて、該PUの残差予測重み係数res_pred_weightを導出する。なお、残差予測重み係数の導出は、既述の<残差予測重み係数の導出について>と同様であるため、説明を省略する。
(S713)PU単位のループの終端である。
(S714)CU単位のループの終端である。
上記可変長符号化部25の変形例3によれば、スライスタイプ毎に、残差予測を利用可能な状態であるかを、以下の(1)〜(3)の条件に基づいて判定することで、明示的に残差予測フラグを符号化するか否かを制御することが可能である。従って、残差予測を利用できない場合は、残差予測フラグの符号化を省略することができるため、残差予測フラグの符号化に係る処理量を削減することができる。
(1)対象レイヤの現画像と対応する同時刻(poc)の参照レイヤの符号化済画像(復号画像)が参照レイヤのピクチャバッファ上に存在する否か
(2)対象レイヤの現画像で利用される参照画像リストL0に含まれる参照画像のいずれかと対応する同時刻(poc)の参照レイヤの符号化済画像(復号画像)が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否か
(3)対象レイヤの現画像で利用される参照画像リストL1に含まれる参照画像のいずれかと対応する同時刻(poc)の参照レイヤの符号化済(復号画像)が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否か
さらに、可変長符号化部25の変形例3によれば、当該CUにおいて残差予測フラグが1である場合、PU単位毎に実際に残差予測を適用する否かを残差予測利用可フラグに基づいて制御する。残差予測利用可フラグは、既述の<残差予測利用可フラグの導出について>と同様に所定条件A1〜A6の何れか、または、各条件の組み合わせに基づいて導出される。従って、各PUの予測パラメータ、CUサイズ、PUサイズ等に基づいて、各PUへの残差予測の適用を制限することができるため、残差予測に係る処理量を低減することが可能である。
(A1)処理対象の予測単位(PU)のサイズが所定サイズより大きいか否か
(A2)処理対象の予測単位を含むCUのサイズが所定サイズ以上であるか否か
(A3)処理対象の予測単位を含むCUのPU分割タイプが2N×2Nであるか否か
(A4)処理対象の予測単位のインター予測が単予測であるか否か
(A5)処理対象の予測単位の予測モードがスキップモード、またはマージモードであるか否か
(A6)処理対象の予測単位の参照画像が所定条件を満たすか否か
なお、各条件毎の具体的な効果・作用は、既述の<残差予測利用可フラグの導出について>と同様であるため、詳細な説明は省略する。
さらに、可変長符号化部25の変形例3によれば、残差予測利用可フラグが1である場合、所定条件に基づいて、当該PUにおいて残差予測を適用時の残差予測重み係数res_pred_weightを導出するため、残差予測重み係数に関するシンタックスの符号化に関する処理量の低減、及び符号量を低減する効果が得られる。
(応用例)
図29および図30を用いて、上述した階層動画像符号化装置2、および階層動画像復号装置1の応用例について説明する。上述した階層動画像符号化装置2および階層動画像復号装置1は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
まず、上述した階層動画像符号化装置2及び階層動画像復号装置1を、動画像の送信及び受信に利用できることを、図29を参照して説明する。
図29の(a)は、階層動画像符号化装置2を搭載した送信装置PROD_Aの構成を示したブロック図である。図29の(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を更に備えていてもよい。図29の(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
図29の(b)は、階層動画像復号装置1を搭載した受信装置PROD_Bの構成を示したブロック図である。図29の(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を更に備えていてもよい。図29の(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の双方として機能する。
次に、上述した階層動画像符号化装置2及び階層動画像復号装置1を、動画像の記録及び再生に利用できることを、図30を参照して説明する。
図30の(a)は、上述した階層動画像符号化装置2を搭載した記録装置PROD_Cの構成を示したブロック図である。図30の(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を更に備えていてもよい。図30の(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の一例である。
図30の(b)は、上述した階層動画像復号装置1を搭載した再生装置PROD_Dの構成を示したブロックである。図30の(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を更に備えていてもよい。図30の(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)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM(Compact Disc Read-Only Memory)/MOディスク(Magneto-Optical disc)/MD(Mini Disc)/DVD(Digital Versatile Disc)/CD−R(CD Recordable)/ブルーレイディスク(Blu-ray Disc:登録商標)等の光ディスクを含むディスク類、ICカード(メモリカードを含む)/光カード等のカード類、マスクROM/EPROM(Erasable Programmable Read-Only Memory)/EEPROM(登録商標)(Electrically Erasable 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/Cable Television)通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成または種類のものに限定されない。例えば、IEEE(Institute of Electrical and Electronic Engineers)1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(Asymmetric Digital Subscriber Line)回線等の有線でも、IrDA(Infrared Data Association)やリモコンのような赤外線、Bluetooth(登録商標)、IEEE802.11無線、HDR(High Data Rate)、NFC(Near Field Communication)、DLNA(Digital Living Network Alliance、登録商標)、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
〔まとめ〕
本発明の第1の構成の動画像復号装置は、レイヤごとに異なる品質の画像に関する画像情報が階層的に符号化された階層符号化データを復号して、復号の対象となる対象レイヤにおける画像を復元する画像復号装置であって、既に復号済みの対象レイヤの参照画像と予測パラメータとに基づいて、上記対象レイヤの予測単位の予測画像を生成する予測画像生成手段と、既に復号済みの参照レイヤの参照画像と、対象レイヤの復号対象画像と対応する参照レイヤの復号画像と、上記予測パラメータに基づいて、上記対象レイヤの上記予測単位の推定残差を生成し、上記予測画像生成手段で生成された予測画像と上記推定残差を合成する残差予測手段とを備え、上記残差予測手段は、上記予測パラメータが第1の条件を満たす場合に、第1のフィルタを用いて、上記推定残差を生成し、上記予測パラメータが第2の条件を満たす場合に、上記第1のフィルタと異なる第2のフィルタを用いて、上記推定残差を生成することを特徴とする。
これにより、従来技術に比べて、上記予測パラメータが第1の条件を満たす場合と、上記予測パラメータが第2の条件を満たす場合とで、異なるフィルタを用いて推定残差を生成するため、参照レイヤの推定残差生成時の動き補償に係るメモリアクセスを低減し、符号化効率を維持しつつ残差予測に係る処理量を低減する効果を奏する。
さらに、上記動画像復号装置によれば、上記第1の条件は、対象レイヤのスケーラビリティがSNRスケーラビリティであり、上記第2の条件は、対象レイヤのスケーラビリティが空間スケーラビリティであり、上記第2のフィルタのタップ数は、第1のフィルタのタップ数以下であることを特徴とする。
これにより、従来技術に比べて、対象レイヤのスケーラビリティが、SNRスケーラビリティである場合と、上記対象レイヤのスケーラビリティが空間スケーラビリティである場合とで、タップ数の異なるフィルタを用いて推定残差を生成するため、参照レイヤの推定残差生成時の動き補償に係るメモリアクセスを低減し、符号化効率を維持しつつ残差予測に係る処理量を低減する効果を奏する。
さらに、上記動画像復号装置によれば、上記第1の条件は、上記予測単位のインター予測が単予測であり、上記第2の条件は、上記予測単位のインター予測が双予測であり、上記第2のフィルタのタップ数は、第1のフィルタのタップ数以下であることを特徴とする。
これにより、従来技術に比べて、予測単位のインター予測が単予測である場合と、上記予測単位のインター予測が双予測である場合とで、タップ数の異なるフィルタを用いて推定残差を生成するため、参照レイヤの推定残差生成時の動き補償に係るメモリアクセスを低減し、符号化効率を維持しつつ残差予測に係る処理量を低減する効果を奏する。
さらに、上記動画像復号装置によれば、上記第1の条件は、上記予測単位を含むスライスのスライスタイプがBスライスであり、上記第2の条件は、上記予測単位を含むスライスのスライスタイプがPスライスであり、上記第2のフィルタのタップ数は、第1のフィルタのタップ数以下であることを特徴とする。
これにより、従来技術に比べて、上記予測単位を含むスライスのスライスタイプがPスライスである場合と、上記予測単位を含むスライスのスライスタイプがBスライスである場合とで、タップ数の異なるフィルタを用いて推定残差を生成するため、参照レイヤの推定残差生成時の動き補償に係るメモリアクセスを低減し、符号化効率を維持しつつ残差予測に係る処理量を低減する効果を奏する。
本発明の第1の構成の動画像符号化装置は、レイヤごとに異なる品質の画像に関する画像情報が階層的に符号化された階層符号化データを符号化して、符号化の対象となる対象レイヤにおける画像を符号化する画像符号化装置であって、既に符号化済みの対象レイヤの参照画像と予測パラメータに基づいて、上記対象レイヤの予測単位の予測画像を生成する予測画像生成手段と、既に符号化済みの参照レイヤの参照画像と、対象レイヤの符号化対象画像と対応する参照レイヤの符号化済画像と、上記予測パラメータとに基づいて、上記対象レイヤの上記予測単位の推定残差を生成し、上記予測画像生成手段で生成された予測画像と上記推定残差を合成する残差予測手段とを備え、上記残差予測手段は、上記予測パラメータが第1の条件を満たす場合に、第1のフィルタを用いて、上記推定残差を生成し、上記予測パラメータが第2の条件を満たす場合に、上記第1のフィルタと異なる第2のフィルタを用いて、上記推定残差を生成することを特徴とする。
これにより、従来技術に比べて、上記予測パラメータが第1の条件を満たす場合と、上記予測パラメータが第2の条件を満たす場合とで、異なるフィルタを用いて推定残差を生成するため、参照レイヤの推定残差生成時の動き補償に係るメモリアクセスを低減し、符号化効率を維持しつつ残差予測に係る処理量を低減する効果を奏する。
さらに、上記動画像符号化装置によれば、上記第1の条件は、対象レイヤのスケーラビリティがSNRスケーラビリティであり、上記第2の条件は、対象レイヤのスケーラビリティが空間スケーラビリティであり、上記第2のフィルタのタップ数は、第1のフィルタのタップ数以下であることを特徴とする。
これにより、従来技術に比べて、対象レイヤのスケーラビリティが、SNRスケーラビリティである場合と、上記対象レイヤのスケーラビリティが空間スケーラビリティである場合とで、タップ数の異なるフィルタを用いて推定残差を生成するため、参照レイヤの推定残差生成時の動き補償に係るメモリアクセスを低減し、符号化効率を維持しつつ残差予測に係る処理量を低減する効果を奏する。
さらに、上記動画像符号化装置によれば、上記第1の条件は、対象レイヤのインター予測が単予測であり、上記第2の条件は、対象レイヤのインター予測が双予測であり、上記第2のフィルタのタップ数は、第1のフィルタのタップ数以下であることを特徴とする。
これにより、従来技術に比べて、対象レイヤのインター予測が単予測である場合と、上記対象レイヤのインター予測が双予測である場合とで、タップ数の異なるフィルタを用いて推定残差を生成するため、参照レイヤの推定残差生成時の動き補償に係るメモリアクセスを低減し、符号化効率を維持しつつ残差予測に係る処理量を低減する効果を奏する。
本発明の第2の構成の動画像復号装置は、レイヤごとに異なる品質の画像に関する画像情報が階層的に符号化された階層符号化データを復号して、復号の対象となる対象レイヤにおける画像を復元する画像復号装置であって、所定単位毎に残差予測を実施するか否かを示す残差予測フラグを復号する復号手段と、既に復号済みの対象レイヤの参照画像と予測パラメータに基づいて、上記対象レイヤの予測単位の予測画像を生成する予測画像生成手段と、既に復号済みの参照レイヤの参照画像と、対象レイヤの復号対象画像と対応する参照レイヤの復号画像と、上記予測パラメータとに基づいて、上記対象レイヤの上記予測単位の推定残差を生成し、上記予測画像生成手段で生成された予測画像と上記推定残差を合成する残差予測手段とを備え、上記残差予測フラグ復号手段は、以下の(1)〜(3)の条件である(1)対象レイヤの現画像と対応する同時刻の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に存在するか、(2)対象レイヤの当該予測単位において、参照画像利用リストフラグpredFlagL0が1の場合、参照画像リストL0と参照画像インデックスRefIdxL0から定まる対象レイヤの参照画像と対応する同時刻の参照レイヤの復号画像が存在するか、(3)対象レイヤの当該予測単位において、参照画像利用リストフラグpredFlagL1が1の場合、参照画像リストL1と参照画像インデックスRefIdxL1から定まる対象レイヤの参照画像と対応する同時刻の参照レイヤの復号画像が存在するかに基づいて、残差予測フラグを復号するか否かを制御することを特徴とする。
これにより、インター予測識別子inter_pred_idcが示す予測モード(L0予測、L1予測、双予測)毎に、残差予測を利用可能な状態であるかを、上記(1)〜(3)の条件に基づいて判定することで、明示的に残差予測フラグを復号するか否かを制御することが可能である。従って、残差予測を利用できない場合は、残差予測フラグの復号を省略することができるため、残差予測フラグの復号に係る処理量を削減することができる。
本発明の第2の構成の動画像符号化装置は、レイヤごとに異なる品質の画像に関する画像情報が階層的に符号化された階層符号化データを符号化して、符号化の対象となる対象レイヤにおける画像を符号化する画像符号化装置であって、所定単位毎に残差予測を実施するか否かを示す残差予測フラグを符号化する符号化手段と、既に符号化済みの対象レイヤの参照画像と予測パラメータに基づいて、上記対象レイヤの予測単位の予測画像を生成する予測画像生成手段と、既に符号化済みの参照レイヤの参照画像と、対象レイヤの符号化対象画像と対応する参照レイヤの符号化済画像と、上記予測パラメータとに基づいて、上記対象レイヤの上記予測単位の推定残差を生成し、上記予測画像生成手段で生成された予測画像と上記推定残差を合成する残差予測手段とを備え、上記残差予測フラグ符号化手段は、以下の(1)〜(3)の条件である(1)対象レイヤの現画像と対応する同時刻の参照レイヤの符号化済画像が参照レイヤのピクチャバッファ上に存在するか、(2)対象レイヤの当該予測単位において、参照画像利用リストフラグpredFlagL0が1の場合、参照画像リストL0と参照画像インデックスRefIdxL0から定まる対象レイヤの参照画像と対応する同時刻の参照レイヤの符号化済画像が存在するか、(3)対象レイヤの当該予測単位において、参照画像利用リストフラグpredFlagL1が1の場合、参照画像リストL1と参照画像インデックスRefIdxL1から定まる対象レイヤの参照画像と対応する同時刻の参照レイヤの符号化済画像が存在するかに基づいて、残差予測フラグを符号化するか否かを制御することを特徴とする。
これにより、インター予測識別子inter_pred_idcが示す予測モード(L0予測、L1予測、双予測)毎に、残差予測を利用可能な状態であるかを、上記(1)〜(3)の条件に基づいて判定することで、明示的に残差予測フラグを符号化するか否かを制御することが可能である。従って、残差予測を利用できない場合は、残差予測フラグの符号化を省略することができるため、残差予測フラグの符号化に係る処理量の低減、および残差予測フラグの符号量を削減する効果を奏する。
本発明の第3の構成の動画像復号装置は、レイヤごとに異なる品質の画像に関する画像情報が階層的に符号化された階層符号化データを復号して、復号の対象となる対象レイヤにおける画像を復元する画像復号装置であって、所定単位毎に残差予測情報を復号するか否かを示す残差予測利用可フラグを導出する残差予測利用可フラグ導出手段と、所定単位毎に残差予測情報を復号する残差予測情報復号手段と、既に復号済みの対象レイヤの参照画像と予測パラメータに基づいて、上記対象レイヤの上記予測単位の予測画像を生成する予測画像生成手段と、上記残差予測情報が残差予測を実施することを表わす場合に、既に復号済みの参照レイヤの参照画像と、対象レイヤの復号対象画像と対応する参照レイヤの復号画像と、上記予測パラメータとに基づいて、上記対象レイヤの上記予測単位の推定残差を生成し、上記予測画像生成手段で生成された予測画像と上記推定残差を合成する残差予測手段とを備え、上記残差予測情報復号手段は、上記残差予測利用可フラグが残差予測情報を復号することを示す場合、符号化データから残差予測情報のうち残差予測を実施するか否かを示す残差予測フラグに関するシンタックス要素値を復号し、前記シンタックス要素値に基づいて残差予測フラグを設定し、上記残差予測情報復号手段は、上記残差予測利用可フラグが残差予測情報を復号しないことを示す場合、上記残差予測フラグに残差予測を実施しないことを示す値を設定することを特徴とする。
上記構成によれば、残差予測利用可フラグに基づいて、残差予測情報を明示的に復号するか否かを制御することが可能である。従って、残差予測利用可フラグが、残差予測情報を復号しないことを示す場合、残差予測情報に係る復号を省略することができるため、残差予測情報の復号に係る処理量を削減することができる。
さらに、上記動画像復号装置によれば、上記残差予測利用可フラグ導出手段は、当該予測単位の属するCUのサイズが所定サイズ以上の場合、残差予測利用可フラグの値を1へ設定し、当該予測単位の属するCUのサイズが所定サイズ未満の場合、残差予測利用可フラグの値を0へ設定することを特徴とする。
一般的に、インター予測において、小サイズの予測単位(PU)は、大サイズのPUに比べて単位面積あたりの処理量が大きい。従って、小サイズのPUにおいて残差予測を適用することは処理のボトルネックを招くことにとなりうる。このため、小サイズのPUでは、残差予測を抑制することで、処理量が過度に増大することを抑えることができる。従って、上記構成によれば、CUサイズが所定サイズより大きいときのみに残差予測のON/OFF制御するように制限する(それ以外は、残差予測をOFF)ことによって、所定サイズ以下のCUサイズのCUに属する予測単位に関して最悪ケースの処理量を削減することができる。また、上記構成によれば、CUサイズが所定サイズ以上のときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、CUサイズが所定サイズ未満の場合において残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
さらに、上記動画像復号装置によれば、上記残差予測利用可フラグ導出手段は、当該予測単位のサイズが所定サイズより大きい場合、残差予測利用可フラグの値を1へ設定し、当該予測単位のサイズが所定サイズ以下の場合、残差予測利用可フラグの値を0へ設定することを特徴とする。
一般的に、インター予測において、小サイズの予測単位(PU)は、大サイズのPUに比べて単位面積あたりの処理量が大きい。従って、小サイズのPUにおいて残差予測を適用することは処理のボトルネックを招くことにとなりうる。従って、小サイズのPUでは、残差予測を抑制することで、処理量が過度に増大することを抑えることができる。
従って、上記構成によれば、PUサイズが所定サイズより大きいときのみに残差予測のON/OFF制御するように制限する(それ以外は、残差予測をOFF)ことによって、所定サイズ以下のPUサイズとなる予測単位に関して最悪ケースの処理量を削減することができる。また、上記構成によれば、PUサイズが所定サイズより大きいときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、PUサイズが所定閾値以下の場合において残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
さらに、上記動画像復号装置によれば、上記残差予測利用可フラグ導出手段は、当該予測単位の属するCUのPU分割タイプが2N×2Nである場合、残差予測利用可フラグの値を1へ設定し、当該予測単位の属するCUのPU分割タイプが2N×2Nでない場合、残差予測利用可フラグの値を0へ設定することを特徴とする。
一般的に、インター予測において、CU(符号化単位)のPU分割タイプとして、2N×2Nの場合は、予測単位とCUが一致するため、CU単位あたり1個のインター予測画像を生成すればよい。一方、それ以外の分割タイプ(2NxN、2NxnU、2NxnD、Nx2N、nLx2N、nRx2N)の場合、CUに属する予測単位は2個であるため、CU単位当たりの2個のインター予測画像が生成する必要があるため、2N×2Nと比較して、インター予測画像を生成するために要する処理量が多い。さらに、残差予測を実施する場合、各予測単位毎に、各LX予測画像に対応する参照レイヤからの推定残差(残差画像)を生成する必要があるため、2N×2Nにおいて残差予測を実施する場合に比べて、それ以外のPU分割タイプは、処理がさらに複雑となる。従って、上記構成によれば、PU分割タイプが2N×2N時のみに残差予測のON/OFF制御するように制限する(2N×2N以外のPU分割タイプは、残差予測をOFF)ことによって、CU単位当たりの残差予測に係る処理量(推定残差を生成するために必要な動き補償に係る処理量)を削減することが可能である。また、上記構成によれば、PU分割タイプが2N×2N時のみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、PU分割タイプが2N×2N以外の残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
さらに、上記動画像復号装置によれば、上記残差予測利用可フラグ導出手段は、当該予測単位のインター予測モードが単予測である場合、残差予測利用可フラグの値を1へ設定し、当該予測単位のインター予測モードが双予測である場合、残差予測利用可フラグの値を0へ設定することを特徴とする。
一般的に、インター予測において、双予測は、単予測と比較して双予測の場合、L0予測画像、L1予測画像を生成する必要があるため、処理が複雑である。さらに、双予測において、残差予測を実施する場合、各LX予測画像に対応する参照レイヤからの推定残差(残差画像)を生成する必要があるため、単予測において、残差予測を実施する場合に比べて、処理がさらに複雑となる。従って、上記構成によれば、単予測時のみに残差予測のON/OFF制御するように制限する(双予測時は、常にOFF)ことによって、双予測時の残差予測に係る処理量(推定残差を生成するために必要な動き補償に係る処理量)を削減することが可能である。また、上記構成によれば、単予測時のみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、単予測以外(双予測)の残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
さらに、上記動画像復号装置によれば、上記残差予測利用可フラグ導出手段は、当該予測単位の予測モードが、スキップモード、または、マージモードである場合、残差予測利用可フラグの値を1へ設定し、当該予測単位の予測モードが、スキップモード、または、マージモードのいずれでもない場合、残差予測利用可フラグの値を0へ設定することを特徴とする。
一般的に、インター予測において、スキップモード、または、マージモードが選択される確率が高いため、残差予測をスキップモード、または、マージモードに制限しても、残差予測により得られる符号化効率の改善幅の低下は少ない。従って、上記構成によれば、残差予測による符号化効率の改善幅を維持しつつ、スキップモード、または、マージモードのときのみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、スキップモード、または、マージモード以外(通常のインター予測時)の残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
さらに、上記動画像復号装置によれば、上記残差予測利用可フラグ導出手段は、当該予測単位の参照する各参照画像が、各参照画像リストに含まれる参照画像のうち、現画像との時間距離が最小となる参照画像である場合、残差予測利用可フラグの値を1へ設定し、それ以外の場合、残差予測利用可フラグの値を0へ設定することを特徴とする。
一般的に、インター予測において、参照画像と現画像との時間距離が近いほど、画像間の相関が高いため、動き補償パラメータとして、参照画像と現画像との時間距離が近い参照画像インデックスをもつ参照画像が選択される確率が非常に高い。従って、インター予測において、参照画像リストLXに含まれる参照画像の中で、現画像との時間距離が最小となる参照画像を参照する場合のみ、残差予測の適用を制限しても、残差予測により得られる符号化効率の改善幅の低下は少ない。従って、上記構成によれば、残差予測による符号化効率の改善幅を維持しつつ、推定残差を生成するために参照する参照レイヤの参照画像を、対象レイヤの参照画像リストLXに含まれる参照画像の中で、現画像との時間距離が最小となる参照画像と対応する時刻の参照画像へ制限するため、拡張レイヤのピクチャバッファにおいて、保持すべき参照レイヤの参照画像数を削減することが可能である。つまり、残差予測のために保持すべき参照レイヤの参照画像に係るメモリ量を削減することが可能である。また、上記構成によれば、参照画像リストLXに含まれる参照画像の中で、現画像との時間距離が最小となる参照画像を参照する場合のみ、残差予測に係る予測パラメータ(残差予測情報)に関するシンタックスを復号するため、それ以外の参照画像を利用する際に残差予測に係る予測パラメータのシンタックスの復号に係る処理量を削減することが可能である。
さらに上記残差予測情報復号手段は、設定した予測残差フラグが残差予測を実施することを示す場合、上記予測パラメータに基づいて、上記推定残差に対する重み係数を導出する残差予測重み係数導出手段を備えることを特徴とする。
上記構成によれば、残差予測重み係数を予測パラメータに基づいて導出するため、残差予測重み係数に関するシンタックスの復号に関する処理量の低減、及び符号量を低減する効果を奏する。
さらに、上記残差予測重み係数導出手段は、当該予測単位のインター予測モードが単予測である場合、重み係数を第1の重み係数へ設定し、当該予測単位のインター予測モードが双予測である場合、重み係数を第2の重み係数へ設定することを特徴とする。
上記構成によれば、当該予測単位のインター予測モードに基づいて、選択確率の高い残差予測の重み係数を暗黙的に設定することが可能である。従って、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの復号処理を簡略化することができる。
さらに、上記残差予測重み係数導出手段は、対象レイヤのスケーラビリティが空間スケーラビリティである場合、重み係数を第1の重み係数へ設定し、対象レイヤのスケーラビリティがSNRスケーラビリティである場合、重み係数を第2の重み係数へ設定することを特徴とする。
上記構成によれば、対象レイヤのスケーラビリティに基づいて、選択確率の高い残差予測の重み係数を暗黙的に設定することが可能である。従って、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの復号処理を簡略化することができる。
さらに、上記残差予測重み係数導出手段は、当該予測単位のサイズが所定サイズ以下である場合、重み係数を第1の重み係数へ設定し、当該予測単位のサイズが所定サイズより大きい場合、重み係数を第2の重み係数へ設定することを特徴とする。
上記構成によれば、当該予測単位のサイズに基づいて、選択確率の高い残差予測の重み係数を暗黙的に設定することが可能である。従って、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの復号処理を簡略化することができる。
さらに、上記残差予測重み係数導出手段は、当該予測単位のマージフラグが0である場合、重み係数を第1の重み係数へ設定し、当該予測単位のマージフラグが1である場合、重み係数を第2の重み係数へ設定することを特徴とする。
上記構成によれば、当該予測単位のマージフラグに基づいて、残差予測の重み係数を暗黙的に設定することが可能である。従って、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの復号処理を簡略化することができる。
さらに、上記残差予測重み係数導出手段は、当該予測単位のインター予測モードが単予測であり、かつ、マージフラグが0である場合、重み係数を第1の重み係数へ設定し、当該予測単位のインター予測モードが単予測であり、かつ、マージフラグが1である場合、重み係数を第2の重み係数へ設定し、当該予測単位のインター予測モードが双予測であり、かつ、マージフラグが0である場合、重み係数を第3の重み係数へ設定し、当該予測単位のインター予測モードが双予測であり、かつ、マージフラグが1である場合、重み係数を第4の重み係数へ設定することを特徴とする。
上記構成によれば、マージフラグとインター予測識別子に基づいて残差予測重み係数を導出することにより、マージフラグ、または、インター予測識別子のいずれか一方に基づいて残差予測重み係数を導出する場合に比べて、残差予測重み係数の候補数を最大2から4へ増やすことができるため、さらに残差予測の推定精度を向上させることができる。また、各重み係数と対応付けられた残差予測重み係数インデックス(res_pred_weight_idx)を明示的に符号化/復号せずとも、残差予測フラグ(res_pred_flag)の値が1の場合、上記条件に基づいて、残差予測の重み係数を暗黙的に設定することによって、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの符号化/復号処理を簡略化することができる。
さらに、上記残差予測重み係数導出手段は、当該予測単位の各LX予測に用いる動きベクトルの大きさが所定閾値未満である場合、重み係数を第1の重み係数へ設定し、それ以外の場合には、重み係数を第2の重み係数へ設定することを特徴とする。
上記構成によれば、当該予測単位の動きベクトルの大きさに基づいて、残差予測の重み係数を暗黙的に設定することが可能である。従って、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの復号処理を簡略化することができる。
さらに、上記残差予測重み係数導出手段は、当該予測単位の各LX予測に用いる参照画像と現画像との時間距離が所定閾値未満である場合、重み係数を第1の重み係数へ設定し、それ以外の場合には、重み係数を第2の重み係数へ設定することを特徴とする。
上記構成によれば、当該予測単位の各LX予測に用いる参照画像と現画像との時間距離に基づいて、残差予測の重み係数を暗黙的に設定することが可能である。従って、残差予測の符号化効率の向上幅を損なわずに、残差予測の重み係数に関するシンタックスの復号処理を簡略化することができる。
本発明の第3の構成の動画像符号化装置は、レイヤごとに異なる品質の画像に関する画像情報が階層的に符号化された階層符号化データを符号化して、符号化の対象となる対象レイヤにおける画像を符号化する画像符号化装置であって、所定単位毎に残差予測情報を符号化するか否かを示す残差予測利用可フラグを導出する残差予測利用可フラグ導出手段と、所定単位毎に残差予測情報を符号化する残差予測情報符号化手段と、既に符号化済みの対象レイヤの参照画像と予測パラメータに基づいて、上記対象レイヤの予測単位の予測画像を生成する予測画像生成手段と、既に符号化済みの参照レイヤの参照画像と、対象レイヤの符号化対象画像と対応する参照レイヤの符号化済画像と、上記予測パラメータとに基づいて、上記対象レイヤの上記予測単位の推定残差を生成し、上記予測画像生成手段で生成された予測画像と上記推定残差を合成する残差予測手段とを備え、上記残差予測情報符号化手段は、上記残差予測利用可フラグが残差予測情報を符号化することを示す場合、残差予測情報を符号化し、上記残差予測利用可フラグが残差予測情報を符号化しないことを示す場合、残差予測情報の符号化を省略することを特徴とする。
上記構成によれば、残差予測利用可フラグに基づいて、残差予測情報を明示的に符号化するか否かを制御することが可能である。従って、残差予測利用可フラグが、残差予測情報を符号化しないことを示す場合、残差予測情報に係る符号化の処理量の低減、及び残差予測情報に係る符号量を削減することができる。
さらに、上記残差予測情報符号化手段は、設定した予測残差フラグが残差予測を実施することを示す場合、上記予測パラメータに基づいて、上記推定残差に対する重み係数を導出する残差予測重み係数導出手段を備えることを特徴とする。
上記構成によれば、残差予測重み係数を予測パラメータに基づいて導出するため、残差予測重み係数に関するシンタックスの符号化に関する処理量の低減、及び符号量を低減する効果を奏する。
本発明の第4の構成の動画像復号装置は、レイヤごとに異なる品質の画像に関する画像情報が階層的に符号化された階層符号化データを復号して、復号の対象となる対象レイヤにおける画像を復元する画像復号装置であって、所定単位毎に残差予測を実施するか否かを示す残差予測フラグを復号する残差予測フラグ復号手段と、既に復号済みの対象レイヤの参照画像と予測パラメータに基づいて、上記対象レイヤの上記予測単位の予測画像を生成する予測画像生成手段と、上記残差予測フラグが残差予測を実施することを表わす場合に、既に復号済みの参照レイヤの参照画像と、対象レイヤの復号対象画像と対応する参照レイヤの復号画像と、上記予測パラメータとに基づいて、上記対象レイヤの上記予測単位の推定残差を生成し、上記予測画像生成手段で生成された予測画像と上記推定残差を合成する残差予測手段とを備え、上記残差予測フラグ復号手段は、以下の(1)〜(3)の条件である(1)対象レイヤの現画像と対応する同時刻の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に存在する否か、(2)対象レイヤの現画像で利用される参照画像リストL0に含まれる参照画像のいずれかと対応する同時刻の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否か、(3)対象レイヤの現画像で利用される参照画像リストL1に含まれる参照画像のいずれかと対応する同時刻の参照レイヤの復号画像が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否かに基づいて、残差予測フラグを復号するか否かを制御することを特徴とする。
これにより、スライスタイプ毎に、残差予測を利用可能な状態であるかを、上記(1)〜(3)の条件に基づいて判定することで、明示的に残差予測フラグを復号するか否かを制御することが可能である。従って、残差予測を利用できない場合は、残差予測フラグの復号を省略することができるため、残差予測フラグの復号に係る処理量を削減する効果を奏する。
本発明の第4の構成の動画像符号化装置は、レイヤごとに異なる品質の画像に関する画像情報が階層的に符号化された階層符号化データを符号化して、符号化の対象となる対象レイヤにおける画像を符号化する画像符号化装置であって、所定単位毎に残差予測を実施するか否かを示す残差予測フラグを符号化する残差予測フラグ符号化手段と、既に符号化済みの対象レイヤの参照画像と予測パラメータに基づいて、上記対象レイヤの予測単位の予測画像を生成する予測画像生成手段と、既に符号化済みの参照レイヤの参照画像と、対象レイヤの符号化対象画像と対応する参照レイヤの符号化済画像と、上記予測パラメータとに基づいて、上記対象レイヤの上記予測単位の推定残差を生成し、上記予測画像生成手段で生成された予測画像と上記推定残差を合成する残差予測手段とを備え、上記残差予測フラグ符号化手段は、以下の(1)〜(3)の条件である(1)対象レイヤの現画像と対応する同時刻の参照レイヤの符号化済画像が参照レイヤのピクチャバッファ上に存在する否か、(2)対象レイヤの現画像で利用される参照画像リストL0に含まれる参照画像のいずれかと対応する同時刻の参照レイヤの符号化済画像が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否か、(3)対象レイヤの現画像で利用される参照画像リストL1に含まれる参照画像のいずれかと対応する同時刻の参照レイヤの符号化済画像が参照レイヤのピクチャバッファ上に少なくとも1つは存在するか否かに基づいて、残差予測フラグを符号化するか否かを制御することを特徴とする。
これにより、スライスタイプ毎に、残差予測を利用可能な状態であるかを、上記(1)〜(3)の条件に基づいて判定することで、明示的に残差予測フラグを符号化するか否かを制御することが可能である。従って、残差予測を利用できない場合は、残差予測フラグの符号化を省略することができるため、残差予測フラグの符号化に係る処理量の低減、および残差予測フラグの符号量を削減する効果を奏する。