(第1の実施形態)
以下、図面を参照しながら本発明の実施形態について説明する。
図1は、本実施形態に係る画像伝送システム1の構成を示す概略図である。
画像伝送システム1は、複数のレイヤ画像を符号化した符号を伝送し、伝送された符号を復号した画像を表示するシステムである。画像伝送システム1は、画像符号化装置11、ネットワーク21、画像復号装置31及び画像表示装置41を含んで構成される。
画像符号化装置11には、複数のレイヤ画像(テクスチャ画像ともいう)を示す信号Tが入力される。レイヤ画像とは、ある解像度及びある視点で視認もしくは撮影される画像である。複数のレイヤ画像を用いて3次元画像を符号化するビュースケーラブル符号化を行う場合、複数のレイヤ画像のそれぞれは、視点画像と呼ばれる。ここで、視点は撮影装置の位置又は観測点に相当する。例えば、複数の視点画像は、被写体に向かって左右の撮影装置のそれぞれが撮影した画像である。画像符号化装置11は、この信号のそれぞれを符号化して符号化ストリームTe(符号化データ)を生成する。符号化ストリームTeの詳細については、後述する。視点画像とは、ある視点において観測される2次元画像(平面画像)である。視点画像は、例えば2次元平面内に配置された画素毎の輝度値、又は色信号値で示される。以下では、1枚の視点画像又は、その視点画像を示す信号をピクチャ(picture)と呼ぶ。また、複数のレイヤ画像を用いて空間スケーラブル符号化を行う場合、その複数のレイヤ画像は、解像度の低いベースレイヤ画像と、解像度の高い拡張レイヤ画像からなる。複数のレイヤ画像を用いてSNRスケーラブル符号化を行う場合、その複数のレイヤ画像は、画質の低いベースレイヤ画像と、画質の高い拡張レイヤ画像からなる。なお、ビュースケーラブル符号化、空間スケーラブル符号化、SNRスケーラブル符号化を任意に組み合わせて行っても良い。本実施形態では、複数のレイヤ画像として、少なくともベースレイヤ画像と、ベースレイヤ画像以外の画像(拡張レイヤ画像)を含む画像の符号化および復号を扱う。複数のレイヤのうち、画像もしくは符号化パラメータにおいて参照関係(依存関係)にある2つのレイヤについて、参照される側の画像を、第1レイヤ画像、参照する側の画像を第2レイヤ画像と呼ぶ。例えば、ベースレイヤを参照して符号化される(ベースレイヤ以外の)エンハンスレイヤ画像がある場合、ベースレイヤ画像を第1レイヤ画像、エンハンスレイヤ画像を第2レイヤ画像として扱う。なお、エンハンスレイヤ画像の例としては、ベースビュー以外の視点の画像、デプスの画像などがある。
ネットワーク21は、画像符号化装置11が生成した符号化ストリームTeを画像復号装置31に伝送する。ネットワーク21は、インターネット(internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)又はこれらの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上波ディジタル放送、衛星放送等の放送波を伝送する一方向又は双方向の通信網であっても良い。また、ネットワーク21は、DVD(Digital Versatile Disc)、BD(Blue−ray Disc)等の符号化ストリームTeを記録した記憶媒体で代替されても良い。
画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、それぞれ復号した複数の復号レイヤ画像Td(復号視点画像Td)を生成する。
画像表示装置41は、画像復号装置31が生成した複数の復号レイヤ画像Tdの全部又は一部を表示する。例えば、ビュースケーラブル符号化においては、全部の場合、3次元画像(立体画像)や自由視点画像が表示され、一部の場合、2次元画像が表示される。画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro−luminescence)ディスプレイ等の表示デバイスを備える。また、空間スケーラブル符号化、SNRスケーラブル符号化では、画像復号装置31、画像表示装置41が高い処理能力を有する場合には、画質の高い拡張レイヤ画像を表示し、より低い処理能力しか有しない場合には、拡張レイヤほど高い処理能力、表示能力を必要としないベースレイヤ画像を表示する。
<符号化ストリームTeの構造>
本実施形態に係る画像符号化装置11および画像復号装置31の詳細な説明に先立って、画像符号化装置11によって生成され、画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
図2は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリームTeは、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図2の(a)〜(f)は、それぞれ、シーケンスSEQを既定するシーケンスレイヤ、ピクチャPICTを規定するピクチャレイヤ、スライスSを規定するスライスレイヤ、スライスデータを規定するスライスデータレイヤ、スライスデータに含まれる符号化ツリーユニットを規定する符号化ツリーレイヤ、符号化ツリーに含まれる符号化単位(Coding Unit;CU)を規定する符号化ユニットレイヤを示す図である。
(シーケンスレイヤ)
シーケンスレイヤでは、処理対象のシーケンスSEQ(以下、対象シーケンスとも称する)を復号するために画像復号装置31が参照するデータの集合が規定されている。シーケンスSEQは、図2の(a)に示すように、ビデオパラメータセット(Video Parameter Set)シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。ここで#の後に示される値はレイヤIDを示す。図2では、#0と#1すなわちレイヤ0とレイヤ1の符号化データが存在する例を示すが、レイヤの種類およびレイヤの数はこれによらない。
ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複数の動画像に共通する符号化パラメータの集合および動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
(ピクチャレイヤ)
ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、図2の(b)に示すように、スライスS0〜SNS−1を含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
なお、以下、スライスS0〜SNS−1のそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
(スライスレイヤ)
スライスレイヤでは、処理対象のスライスS(対象スライスとも称する)を復号するために画像復号装置31が参照するデータの集合が規定されている。スライスSは、図2の(c)に示すように、スライスヘッダSH、および、スライスデータSDATAを含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、または、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるBスライスなどが挙げられる。
なお、スライスヘッダSHには、上記シーケンスレイヤに含まれる、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいても良い。
(スライスデータレイヤ)
スライスデータレイヤでは、処理対象のスライスデータSDATAを復号するために画像復号装置31が参照するデータの集合が規定されている。スライスデータSDATAは、図2の(d)に示すように、符号化ツリーブロック(CTB:Coded Tree Block)を含んでいる。CTBは、スライスを構成する固定サイズ(例えば64×64)のブロックであり、最大符号化単位(LCU:Largest Cording Unit)と呼ぶこともある。
(符号化ツリーレイヤ)
符号化ツリーレイヤは、図2の(e)に示すように、処理対象の符号化ツリーブロックを復号するために画像復号装置31が参照するデータの集合が規定されている。符号化ツリーユニットは、再帰的な4分木分割により分割される。再帰的な4分木分割により得られる木構造のノードのことを符号化ツリー(coding tree)と称する。4分木の中間ノードは、符号化ツリーユニット(CTU:Coded Tree Unit)であり、符号化ツリーブロック自身も最上位のCTUとして規定される。CTUは、分割フラグ(split_flag)を含み、split_flagが1の場合には、4つの符号化ツリーユニットCTUに分割される。split_flagが0の場合には、符号化ツリーユニットCTUは4つの符号化ユニット(CU:Coded Unit)に分割される。符号化ユニットCUは符号化ツリーレイヤの末端ノードであり、このレイヤではこれ以上分割されない。符号化ユニットCUは、符号化処理の基本的な単位となる。
また、符号化ツリーブロックCTBのサイズ64×64画素の場合には、符号化ユニットのサイズは、64×64画素、32×32画素、16×16画素、および、8×8画素の何れかをとり得る。
(符号化ユニットレイヤ)
符号化ユニットレイヤは、図2の(f)に示すように、処理対象の符号化ユニットを復号するために画像復号装置31が参照するデータの集合が規定されている。具体的には、符号化ユニットは、CUヘッダCUH、予測ツリー、変換ツリー、CUヘッダCUFから構成される。CUヘッダCUHでは、符号化ユニットが、イントラ予測を用いるユニットであるか、インター予測を用いるユニットであるかなどが規定される。符号化ユニットは、予測ツリー(prediction tree;PT)および変換ツリー(transform tree;TT)のルートとなる。CUヘッダCUFは、予測ツリーと変換ツリーの間、もしくは、変換ツリーの後に含まれる。
予測ツリーは、符号化ユニットが1または複数の予測ブロックに分割され、各予測ブロックの位置とサイズとが規定される。別の表現でいえば、予測ブロックは、符号化ユニットを構成する1または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1または複数の予測ブロックを含む。
予測処理は、この予測ブロックごとに行われる。以下、予測の単位である予測ブロックのことを、予測単位(prediction unit;PU、予測ユニット)とも称する。
予測ツリーにおける分割の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。イントラ予測とは、同一ピクチャ内の予測であり、インター予測とは、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
イントラ予測の場合、分割方法は、2N×2N(符号化ユニットと同一サイズ)と、N×Nとがある。
また、インター予測の場合、分割方法は、符号化データのpart_modeにより符号化され、2N×2N(符号化ユニットと同一サイズ)、2N×N、2N×nU、2N×nD、N×2N、nL×2N、nR×2N、および、N×Nなどがある。なお、2N×nUは、2N×2Nの符号化ユニットを上から順に2N×0.5Nと2N×1.5Nの2領域に分割することを示す。2N×nDは、2N×2Nの符号化ユニットを上から順に2N×1.5Nと2N×0.5Nの2領域に分割することを示す。nL×2Nは、2N×2Nの符号化ユニットを左から順に0.5N×2Nと1.5N×2Nの2領域に分割することを示す。nR×2Nは、2N×2Nの符号化ユニットを左から順に1.5N×2Nと0.5N×1.5Nの2領域に分割することを示す。分割数は1、2、4のいずれかであるため、CUに含まれるPUは1個から4個である。これらのPUを順にPU0、PU1、PU2、PU3と表現する。
また、変換ツリーにおいては、符号化ユニットが1または複数の変換ブロックに分割され、各変換ブロックの位置とサイズとが規定される。別の表現でいえば、変換ブロックは、符号化ユニットを構成する1または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1または複数の変換ブロックを含む。
変換ツリーにおける分割には、符号化ユニットと同一のサイズの領域を変換ブロックとして割り付けるものと、上述したツリーブロックの分割と同様、再帰的な4分木分割によるものがある。
変換処理は、この変換ブロックごとに行われる。以下、変換の単位である変換ブロックのことを、変換単位(transform unit;TU)とも称する。
(予測パラメータ)
予測ユニットの予測画像は、予測ユニットに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測の予測パラメータもしくはインター予測の予測パラメータがある。以下、インター予測の予測パラメータ(インター予測パラメータ)について説明する。インター予測パラメータは、予測リスト利用フラグpredFlagL0、predFlagL1と、参照ピクチャインデックスrefIdxL0、refIdxL1と、ベクトルmvL0、mvL1から構成される。予測リスト利用フラグpredFlagL0、predFlagL1は、各々L0リスト、L1リストと呼ばれる参照ピクチャリストが用いられるか否かを示すフラグであり、値が1の場合に対応する参照ピクチャリストが用いられる。なお、本明細書中「XXであるか否かを示すフラグ」と記す場合、1をXXである場合、0をXXではない場合とし、論理否定、論理積などでは1を真、0を偽と扱う(以下同様)。但し、実際の装置や方法では真値、偽値として他の値を用いることもできる。2つの参照ピクチャリストが用いられる場合、つまり、predFlagL0=1, predFlagL1=1の場合が、双予測に対応し、1つの参照ピクチャリストを用いる場合、すなわち(predFlagL0, predFlagL1) = (1, 0)もしくは(predFlagL0, predFlagL1) = (0, 1)の場合が単予測に対応する。なお、予測リスト利用フラグの情報は、後述のインター予測フラグinter_pred_idxで表現することもできる。通常、後述の予測画像生成部、予測パラメータメモリでは、予測リスト利用フラグが用いれ、符号化データから、どの参照ピクチャリストが用いられるか否かの情報を復号する場合にはインター予測フラグinter_pred_idxが用いられる。
符号化データに含まれるインター予測パラメータを導出するためのシンタックス要素には、例えば、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXがある。
(参照ピクチャリストの一例)
次に、参照ピクチャリストの一例について説明する。参照ピクチャリストとは、参照ピクチャメモリ306(図5)に記憶された参照ピクチャからなる列である。図3は、参照ピクチャリストの一例を示す概念図である。参照ピクチャリスト601において、左右に一列に配列された5個の長方形は、それぞれ参照ピクチャを示す。左端から右へ順に示されている符号、P1、P2、Q0、P3、P4は、それぞれの参照ピクチャを示す符号である。P1等のPとは、視点Pを示し、そしてQ0のQとは、視点Pとは異なる視点Qを示す。P及びQの添字は、ピクチャ順序番号POCを示す。refIdxLXの真下の下向きの矢印は、参照ピクチャインデックスrefIdxLXが、参照ピクチャメモリ306において参照ピクチャQ0を参照するインデックスであることを示す。
(参照ピクチャの例)
次に、ベクトルを導出する際に用いる参照ピクチャの例について説明する。図4は、参照ピクチャの例を示す概念図である。図4において、横軸は表示時刻を示し、縦軸は視点を示す。図4に示されている、縦2行、横3列(計6個)の長方形は、それぞれピクチャを示す。6個の長方形のうち、下行の左から2列目の長方形は復号対象のピクチャ(対象ピクチャ)を示し、残りの5個の長方形がそれぞれ参照ピクチャを示す。対象ピクチャから上向きの矢印で示される参照ピクチャQ0は対象ピクチャと同表示時刻であって視点が異なるピクチャである。対象ピクチャを基準とする変位予測においては、参照ピクチャQ0が用いられる。対象ピクチャから左向きの矢印で示される参照ピクチャP1は、対象ピクチャと同じ視点であって、過去のピクチャである。対象ピクチャから右向きの矢印で示される参照ピクチャP2は、対象ピクチャと同じ視点であって、未来のピクチャである。対象ピクチャを基準とする動き予測においては、参照ピクチャP1又はP2が用いられる。
(インター予測フラグと予測リスト利用フラグ)
インター予測フラグと、予測リスト利用フラグpredFlagL0、predFlagL1の関係は以下のように相互に変換可能である。そのため、インター予測パラメータとしては、予測リスト利用フラグを用いても良いし、インター予測フラグを用いてもよい。また、以下、予測リスト利用フラグを用いた判定は、インター予測フラグに置き替えても可能である。逆に、インター予測フラグを用いた判定は、予測リスト利用フラグに置き替えても可能である。
インター予測フラグ = (predFlagL1<<1) + predFlagL0
predFlagL0 =インター予測フラグ & 1
predFlagL1 =インター予測フラグ >> 1
ここで、>>は右シフト、<<は左シフトである。
(マージ予測とAMVP予測)
予測パラメータの復号(符号化)方法には、マージ予測(merge)モードとAMVP(Adaptive Motion Vector Prediction、適応動きベクトル予測)モードがある、マージフラグmerge_flagは、これらを識別するためのフラグである。マージ予測モードでも、AMVPモードでも、既に処理済みのブロックの予測パラメータを用いて、対象PUの予測パラメータが導出される。マージ予測モードは、予測リスト利用フラグpredFlagLX(インター予測フラグinter_pred_idx)、参照ピクチャインデックスrefIdxLX、ベクトルmvLXを符号化データに含めずに、既に導出した予測パラメータをそのまま用いるモードであり、AMVPモードは、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、ベクトルmvLXを符号化データに含めるモードである。なおベクトルmvLXは、予測ベクトルを示す予測ベクトルインデックスmvp_LX_idxと差分ベクトル(mvdLX)として符号化される。
インター予測フラグinter_pred_idcは、参照ピクチャの種類および数を示すデータであり、Pred_L0、Pred_L1、Pred_Biの何れかの値をとる。Pred_L0、Pred_L1は、各々L0リスト、L1リストと呼ばれる参照ピクチャリストに記憶された参照ピクチャが用いられることを示し、共に1枚の参照ピクチャを用いること(単予測)を示す。L0リスト、L1リストを用いた予測を各々L0予測、L1予測と呼ぶ。Pred_Biは2枚の参照ピクチャを用いること(双予測)を示し、L0リストとL1リストに記憶された参照ピクチャの2つを用いることを示す。予測ベクトルインデックスmvp_LX_idxは予測ベクトルを示すインデックスであり、参照ピクチャインデックスrefIdxLXは、参照ピクチャリストに記憶された参照ピクチャを示すインデックスである。なお、LXは、L0予測とL1予測を区別しない場合に用いられる記述方法であり、LXをL0、L1に置き換えることでL0リストに対するパラメータとL1リストに対するパラメータを区別するする。例えば、refIdxL0はL0予測に用いる参照ピクチャインデックス、refIdxL1はL1予測に用いる参照ピクチャインデックス、refIdx(refIdxLX)は、refIdxL0とrefIdxL1を区別しない場合に用いられる表記である。
マージインデックスmerge_idxは、処理が完了したブロックから導出される予測パラメータ候補(マージ候補)のうち、いずれかの予測パラメータを復号対象ブロックの予測パラメータとして用いるかを示すインデックスである。
(動きベクトルと変位ベクトル)
ベクトルmvLXには、動きベクトルと変位ベクトル(disparity vector、視差ベクトル)がある。動きベクトルとは、あるレイヤのある表示時刻でのピクチャにおけるブロックの位置と、異なる表示時刻(例えば、隣接する離散時刻)における同一のレイヤのピクチャにおける対応するブロックの位置との間の位置のずれを示すベクトルである。変位ベクトルとは、あるレイヤのある表示時刻でのピクチャにおけるブロックの位置と、同一の表示時刻における異なるレイヤのピクチャにおける対応するブロックの位置との間の位置のずれを示すベクトルである。異なるレイヤのピクチャとしては、異なる視点のピクチャである場合、もしくは、異なる解像度のピクチャである場合などがある。特に、異なる視点のピクチャに対応する変位ベクトルを視差ベクトルと呼ぶ。以下の説明では、動きベクトルと変位ベクトルを区別しない場合には、単にベクトルmvLXと呼ぶ。ベクトルmvLXに関する予測ベクトル、差分ベクトルを、それぞれ予測ベクトルmvpLX、差分ベクトルmvdLXと呼ぶ。ベクトルmvLXおよび差分ベクトルmvdLXが、動きベクトルであるか、変位ベクトルであるかは、ベクトルに付随する参照ピクチャインデックスrefIdxLXを用いて行われる。
(画像復号装置の構成)
次に、本実施形態に係る画像復号装置31の構成について説明する。図5は、本実施形態に係る画像復号装置31の構成を示す概略図である。画像復号装置31は、エントロピー復号部301、予測パラメータ復号部302、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)306、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)307、予測画像生成部308、逆量子化・逆DCT部311、及び加算部312、残差格納部313(残差記録部)を含んで構成される。
また、予測パラメータ復号部302は、インター予測パラメータ復号部303及びイントラ予測パラメータ復号部304を含んで構成される。予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
エントロピー復号部301は、外部から入力された符号化ストリームTeに対してエントロピー復号を行って、個々の符号(シンタックス要素)を分離し復号する。分離された符号には、予測画像を生成するための予測情報および、差分画像を生成するための残差情報などがある。
エントロピー復号部301は、分離した符号の一部を予測パラメータ復号部302に出力する。分離した符号の一部とは、例えば、予測モードPredMode、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックmvp_LX_idx、差分ベクトルmvdLXである。どの符号を復号するか否かの制御は、予測パラメータ復号部302の指示に基づいて行われる。エントロピー復号部301は、量子化係数を逆量子化・逆DCT部311に出力する。この量子化係数は、符号化処理において、残差信号に対してDCT(Discrete Cosine Transform、離散コサイン変換)を行い量子化して得られる係数である。
インター予測パラメータ復号部303は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してインター予測パラメータを復号する。
インター予測パラメータ復号部303は、復号したインター予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。インター予測パラメータ復号部303の詳細については後述する。
イントラ予測パラメータ復号部304は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してイントラ予測パラメータを復号する。イントラ予測パラメータとは、ピクチャブロックを1つのピクチャ内で予測する処理で用いるパラメータ、例えば、イントラ予測モードIntraPredModeである。イントラ予測パラメータ復号部304は、復号したイントラ予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。
イントラ予測パラメータ復号部304は、輝度と色差で異なるイントラ予測モードを導出しても良い。この場合、イントラ予測パラメータ復号部304は、輝度の予測パラメータとして輝度予測モードIntraPredModeY、色差の予測パラメータとして、色差予測モードIntraPredModeCを復号する。輝度予測モードIntraPredModeYは、35モードであり、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)が対応する。色差予測モードIntraPredModeCは、プレーナ予測(0)、DC予測(1)、方向予測(2、3、4)、LMモード(5)の何れかを用いるもの。
参照ピクチャメモリ306は、加算部312が生成した参照ピクチャのブロック(参照ピクチャブロック)を、復号対象のピクチャ及びブロック毎に予め定めた位置に記憶する。
予測パラメータメモリ307は、予測パラメータを、復号対象のピクチャ及びブロック毎に予め定めた位置に記憶する。具体的には、予測パラメータメモリ307は、インター予測パラメータ復号部303が復号したインター予測パラメータ、イントラ予測パラメータ復号部304が復号したイントラ予測パラメータ及びエントロピー復号部301が分離した予測モードpredModeを記憶する。記憶されるインター予測パラメータには、例えば、予測リスト利用フラグpredFlagLX(インター予測フラグinter_pred_idx)、参照ピクチャインデックスrefIdxLX、ベクトルmvLXがある。
予測画像生成部308には、エントロピー復号部301から入力された予測モードpredModeが入力され、また予測パラメータ復号部302から予測パラメータが入力される。また、予測画像生成部308は、参照ピクチャメモリ306から参照ピクチャを読み出す。予測画像生成部308は、予測モードpredModeが示す予測モードで、入力された予測パラメータと読み出した参照ピクチャを用いて予測ピクチャブロックP(予測画像)を生成する。
ここで、予測モードpredModeがインター予測モードを示す場合、インター予測画像生成部309は、インター予測パラメータ復号部303から入力されたインター予測パラメータと読み出した参照ピクチャを用いてインター予測により予測ピクチャブロックPを生成する。予測ピクチャブロックPは予測単位PUに対応する。PUは、上述したように予測処理を行う単位となる複数の画素からなるピクチャの一部分、つまり1度に予測処理が行われる復号対象ブロックに相当する。
インター予測画像生成部309は、予測リスト利用フラグpredFlagLXが1である参照ピクチャリスト(L0リスト、もしくはL1リスト)に対し、参照ピクチャインデックスrefIdxLXで示される参照ピクチャから、復号対象ブロックを基準としてベクトルmvLXが示す位置にある参照ピクチャブロックを参照ピクチャメモリ306から読み出す。インター予測画像生成部309は、読み出した参照ピクチャブロックについて予測を行って予測ピクチャブロックPを生成する。インター予測画像生成部309は、生成した予測ピクチャブロックPを加算部312に出力する。
予測モードpredModeがイントラ予測モードを示す場合、イントラ予測画像生成部310は、イントラ予測パラメータ復号部304から入力されたイントラ予測パラメータと読み出した参照ピクチャを用いてイントラ予測を行う。具体的には、イントラ予測画像生成部310は、復号対象のピクチャであって、既に復号されたブロックのうち復号対象ブロックから予め定めた範囲にある参照ピクチャブロックを参照ピクチャメモリ306から読み出す。予め定めた範囲とは、復号対象ブロックがいわゆるラスタースキャンの順序で順次移動する場合、例えば、左、左上、上、右上の隣接ブロックのうちのいずれかであり、イントラ予測モードによって異なる。ラスタースキャンの順序とは、各ピクチャにおいて、上端から下端まで各行について、順次左端から右端まで移動させる順序である。
イントラ予測画像生成部310は、読み出した参照ピクチャブロックについてイントラ予測モードIntraPredModeが示す予測モードで予測を行って予測ピクチャブロックを生成する。イントラ予測画像生成部310は、生成した予測ピクチャブロックPを加算部312に出力する。
イントラ予測パラメータ復号部304において、輝度と色差で異なるイントラ予測モードを導出する場合、イントラ予測画像生成部310は、輝度予測モードIntraPredModeYに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2〜34)の何れかによって輝度の予測ピクチャブロックを生成し、色差予測モードIntraPredModeCに応じて、プレーナ予測(0)、DC予測(1)、方向予測(2、3、4)、LMモード(5)の何れかによって色差の予測ピクチャブロックを生成する。ここでは、正則化項を用いたLMモードを説明する。正則化項とは、最小2乗法による予測パラメータ導出において、目的関数にパラメータコストとして加算される項である。LMモードは、対象ブロックに隣接する処理済み画像を用いて、輝度の画素値から、色差の画素値を予測する予測パラメータを導出し、その予測パラメータに基づいて、処理済みの輝度のブロックから、色差のピクチャブロックを生成する。このような予測はLM予測と呼ばれる。予測の方法は、後述の照度補償部3093と概略は同じである。以下、予測パラメータに導出において正則化項を用いるイントラ予測画像生成部310をイントラ予測画像生成部310Eとする。イントラ予測画像生成部310Eは、図示しないDC予測部3101、プレーナ予測部3102、方向予測部3103、LM予測部3104Eから構成される。
図80は、LM予測部3104Eの構成を示すブロック図である。LM予測部3104Eは、LMパラメータ推定部31041と、LMフィルタ部31042から構成される。LMパラメータ推定部31041は、LM積算シフト値導出部310411、LM積算値導出部310412、LM加算値導出部310413、LM第1パラメータ導出部310414、LM第2パラメータ導出部310415、LMパラメータa導出部310416、LMパラメータb導出部310417、LM正則化項加算部310418Eから構成される。LM積算シフト値導出部310411は、積算シフト値precShiftを、以下の式(LM−1)のように、画素のビット深度bitDepthが所定の定数(ここでは13)を超える場合には、その超える値だけの積算シフト値precShiftを導出する。超えない場合には積算シフト値precShiftは0とする。
precShift = Max(0, bitDepth - 13) 式(LM−1)
導出された積算シフト値precShiftは、LM積算値導出部310412、LM第1パラメータ導出部310414、LM第2パラメータ導出部310415に出力される。
LMパラメータ推定部31041は、対象ブロックに隣接する輝度画像を、隣接輝度画像x[]、対象ブロックに隣接する色差画像を隣接色差画像y[]と表示し、隣接輝度画像x[]と隣接色差画像y[]からパラメータaとパラメータbを導出する。
LM加算値導出部310413は、隣接色差画像の画素値の和Yと隣接輝度画像の画素値の和Xを、以下の式(LM−2)式(LM−3)により導出する。
LM積算値導出部310412は隣接色差画像の画素値yと隣接輝度画像の画素値xの積の和XYと、隣接輝度画像の画素値の2乗の和XXを、以下の式(LM−4)〜(LM−5)により導出する。この時、LM積算値導出部310412は、隣接色差画像の画素値yと隣接輝度画像の画素値xの積の和XYの導出時と、隣接輝度画像の画素値xの2乗の和XXの導出時には、積算シフト値precShiftだけ右シフトしてから加算する。X = Y = XY = XX = 0で初期化する。
X = Σx[i] 式(LM−2)
Y = Σy[i] 式(LM−3)
XX += Σ(x[i] * x[i])>>precShift 式(LM−4)
XY += Σ(x[i] * y[i])>>precShift 式(LM−5)
ここで、Σは、参照領域に対する和であり、参照領域の画素を特定するインデックスiに対する和を導出する。また和の前にX、Y、XY、XXは0に初期化しておく。x[i]は、隣接輝度画像のインデックスiにおける画素値。y[i]は、隣接色差画像のインデックスiにおける画素値。カウントシフト値iCountShiftは、参照領域のサイズ(画素数)の2の対数である。
iCountShift = log2 (参照領域の画素数) 式(LM−6)
なお、従来は、以下の演算により積算値XX、XYを導出していた。
XX += Σ(x[i] * x[i]) 式(LM−4´)
XY += Σ(x[i] * y[i]) 式(LM−5´)
この場合、演算に必要なビット数は、画素のビット深度bitDepthの2倍に、参照領域のサイズの最大値の2の対数(カウントシフトiCountShiftの最大値)となる。輝度ブロックサイズの最大値が64である場合、色差ブロックサイズの最大値は32であるから、参照領域のサイズの最大値は64である。64の2の対数よりカウントシフトiCountShiftの最大値は6になる。従って必要なビット数は、bitDepth * 2 + 6になる。ここで、このビット数が32ビットで計算できる範囲を考慮すると、以下の式が得られる。
bitDepth * 2 + 6 <= 32
この式を解くとbitDepth <= 13が得られる。すなわち、bitDepthが13以下であれば32ビットを超えない。逆にbitDepthが13を超えると32ビットの範囲を超える。式(LM−1)は、この結果から得られたものであり、bitDepthが13を超える場合には、超えた分に相当するbitDepth - 13を積算シフト値precShiftとして導出する。さらに、式(LM−4)、式(LM−5)では予め積算シフト値precShiftだけシフトしてから加算することにより、32ビットの範囲を超えることを防ぐ効果を奏する。
LM第1パラメータ導出部310414は、隣接色差画像の画素値yと隣接輝度画像の画素値xの積の和XYと、隣接色差画像の画素値の和Yと隣接輝度画像の画素値の和Xの積の差から第1パラメータa1を以下の式により導出する。
a1 = ( XY << iCountShift ) - (y * x) >> precShift; 式(LM−7)
式(LM−7)に示すように、XYは、カウントシフト値iCountShiftだけ左シフト、yとxの積は積算シフト値precShiftだけ右シフトしてから差を導出する。
LM第2パラメータ導出部310415は、隣接輝度画像の画素値の2乗の和XXと、隣接輝度画像の画素値の和Xの2乗の差から第2パラメータa2を以下の式により導出する。
a2 = ( XX << iCountShift ) - (X * X) >> precShift; 式(LM−8)
式(LM−8)に示すように、XXは、カウントシフト値iCountShiftだけ左シフト、xとxの積は積算シフト値precShiftだけ右シフトしてから差を導出する。
LM第1パラメータ導出部310414とLM第2パラメータ導出部310415はさらには、カウントシフト値iCountShiftとビット深度bitDepthの2倍の和が所定の値(ここでは27)以上の場合には、所定の固定パラメータシフト値(ここでは4)だけパラメータa1、パラメータa2を右シフトする。すなわち、以下のステップを実行する。
if (iCountShift + bitDepth * 2 >= 27) 式(LM−9)
{
a1 >>= 4 式(LM−10)
a2 >>= 4 式(LM−11)
}
導出された第1パラメータa1と第2パラメータa2は、LMパラメータa導出部310416に出力される。
図81は、LMパラメータa導出部310416の構成を示すブロック図である。LMパラメータa導出部310416は、LM第1パラメータクリップ部3104161、LM第1パラメータシフト部3104162、LM第2パラメータシフト部3104163、LMテーブルベースパラメータa導出部3104164から構成される。
LM第1パラメータクリップ部3104161は、第1パラメータa1を第2パラメータa2の大きさに応じて制限する。例えば以下の式のように、a1を-3*a2以上、a2*3以下にクリップする。
a1 = Clip3(-3*a2, 3*a2, a1) 式(LM−12)
LM第1パラメータクリップ部3104161により、a1 / a2の値は、-3から3の間にクリップされる。従って、パラメータaの値であるa1 / a2 << iShiftの値も、-(3<<iShift)から(3<<iShift)にクリップされる。すなわち、iShift=5の場合、パラメータaは-96〜96となり、8ビット整数の範囲に入る。
LM第1パラメータシフト部3104162は、第1パラメータa1の大きさに応じて、以下の式により第1正規化シフト値iScaleShiftA1を導出する。導出された第1正規化シフト値iScaleShiftA1は、LMテーブルベースパラメータa導出部3104164に出力される。
iScaleShiftA1 = Max(0, GetMSB( abs( a1 ) ) - 15) 式(LM−13)
LM第2パラメータシフト部3104163は、第2パラメータa2の大きさに応じて、以下の式により第2正規化シフト値iScaleShiftA2を導出する。導出された第2正規化シフト値iScaleShiftA2は、LMテーブルベースパラメータa導出部3104164に出力される。
iScaleShiftA2 = Max(0, GetMSB( abs( a2 ) ) - 6) 式(LM−14)
LM第1パラメータシフト部3104162、LM第2パラメータシフト部3104163は、第1パラメータa1を第1正規化シフト値iScaleShiftA1、第2パラメータa2を第2正規化シフト値iScaleShiftA2により右シフトし、正規化第1パラメータa1sと正規化第2パラメータa2sを導出する。
a1s = a1 >> iScaleShiftA1 式(LM−15)
a2s = a2 >> iScaleShiftA2 式(LM−16)
LMテーブルベースパラメータa導出部3104164は、第1正規化シフト値iScaleShiftA1と第2正規化シフト値iScaleShiftA2の差に基づいて、以下の式によりパラメータaシフト値iScaleShiftAを導出する。
ScaleShiftA = iScaleShiftA2 - iScaleShiftA1 + 15 - iShift 式(LM−18)
LMテーブルベースパラメータa導出部3104164は、正規化第2パラメータa2sに応じて定まる逆数テーブル値invTableを参照し、正規化第1パラメータa1sとの積をとりテーブルシフト値(ScaleShiftA)で右シフトすることにより、以下の式によりパラメータaを導出する。
a = (a1s * invTable[a2s]) >> (ScaleShiftA) 式(LM−19)
なお、テーブルシフト値iScaleShiftAが負の場合には、テーブルシフト値の絶対値だけ左シフトすることにより、以下の式で導出する。
a = (a1s * invTable[a2s]) << (-ScaleShiftA) 式(LM−19´)
パラメータaの値は、第1パラメータa1と第2パラメータa2の比(a1/a2をiShiftだけ左シフトした値に相当する)。
図84は、本実施形態で用いる逆数テーブル値invTable[]である。図84の逆数invTable[x]は、インデックスxが0の場合に0となり、インデックスがxが0以外の場合には、所定の定数(ここでは2の15乗)Mをxで割って整数化した値から導出される。すなわち、
invTable[x] = 0 (xが0の場合) 式(T−1)
invTable[x] = Floor((M / x/2) / x) (xが0以外の場合) 式(T−2)
なお、Floor(x)は、小数点以下を切り捨てにより整数化する関数である。式(T−1)の代わりに、以下の式(T−2´)を用いても良い。すなわち、除数xの1/2倍を加える丸目調整を行わなくても良い。
invTable[x] = Floor(M / x) (xが0以外の場合) 式(T−2´)
逆数テーブル値invTable[]を用いることにより、a2sでの除算に相当する演算を、a2sの逆数に相当する逆数テーブル値invTable[a2s]との積と、log2(M)に相当する右シフトにより実現することができる。逆数テーブルinvTable[x]は、x=0においてinvTable[x]が0であるため、通常の演算では定義されない0での除算に相当する場合に結果が0となる。a2sは画素値x[]の分散に相当するため、画素値が非常に小さいか、乱雑さがない、つまり、全て平坦である場合に0になる。このような場合には、パラメータaを0とし、パラメータbの加算だけで計算した場合も問題のない結果が得られる。このように、逆数テーブルinvTable[x]を定義しない場合には、xが0である場合にはパラメータaを0とする別の演算を用いるか、xが0である場合には、パラメータaを1<<iShiftとすることが必要となる。なお、LM第1パラメータクリップ部3104161の代わりに、パラメータaクリップ部を設け、以下の演算によりパラメータaの範囲を、8ビット整数となる、-128以上、127以下にクリップしても良い。
a = Clip3(-128, 127, a1) 式(LM−12´)
なお、クリップの最大値は127以下、クリップの最小値は-128以上であれば8ビット整数となるため、他の値でも良い。例えば、
a = Clip3(-64, 64, a1) 式(LM−12´´)
などでも良い。
導出されたパラメータaは、LMパラメータb導出部310417とLMフィルタ部31042に出力される。
LMパラメータb導出部310417は、隣接色差画像の画素値の和Yから、隣接輝度画像の画素値の和Xにパラメータaをかけて固定シフト値iShiftだけ右シフトした値を引いた値を、参照領域の画素数で割ることにより、以下の式によりパラメータbを導出する。
b = ( Y - ( ( a * X ) >> iShift ) + ( 1 << ( iCountShift - 1 ) ) ) >> iCountShift 式(LM−20)
なお、iCountShiftの右シフトは、参照領域の画素数で割ることに相当する。
LMフィルタ部31042は、LMパラメータ推定部31041が導出した推定パラメータを用いて、輝度復号画像predSamplesY[]から、LM予測後の色差予測画像predSamplesC[]を導出する。例えば、パラメータbを式(LM−20)により導出する場合には以下の式を用いる。
predSamplesC[x][y] = (a * predSamplesY[x/2][y/2] >> iShift)+b 式(LM−21)
なお、LMパラメータb導出部310417の代わりに、LMパラメータb導出部310417の別の構成のLMパラメータb導出部310417´を用いても良い。この場合、隣接色差画像の画素値の和Yを固定シフト値iShiftだけ左シフトした値から、隣接輝度画像の画素値の和Xにパラメータaをかけた値を引いた値を、参照画素の数で割ることにより、以下の式によりパラメータbを導出しても良い。
b = ( (Y << iShift) - ( ( a * X ) ) + ( 1 << ( iCountShift - 1 ) ) ) >> iCountShift 式(LM−20´)
図82は、LM正則化項加算部310418Eの構成を示すブロック図である。LM正則化項加算部310418Eは、LM正則化項導出部3104180E、LM第1パラメータ正則化項加算部3104181E、LM第2パラメータ正則化項加算部3104182Eから構成される。
LM正則化項導出部3104180Eは、正則化項acostを導出する。
acost = XX >> ashift 式(E−1)
LM第1パラメータ正則化項加算部3104181Eは、第1パラメータを導出に用いるパラメータ(例えばXY)に正則化項を加算する。
XY = XY + acost 式(E−2)
なお、この加算は、
LM第2パラメータ正則化項加算部3104182Eは、第2パラメータを導出に用いるパラメータ(例えばXX)に正則化項を加算する。
XX = XX + acost 式(E−3)
なお、正則化項の加算は、LM第1パラメータ導出部310414および、LM第2パラメータ導出部310415で行っても良い。この場合、第1パラメータ、第2パラメータは、式(LM−7)式(LM−8)の代わりに以下の式により導出される。
a1 = ( (XY + acost) << iCountShift ) - (Y * Y) >> precShift; 式(E−2´)
a2 = ( (XX + acost) << iCountShift ) - (X * X) >> precShift; 式(E−3´)
上記LMパラメータ推定部31041Eの構成では、図84に示すように、インデックスxが0の場合に0となるように逆数テーブルinvTable[x]を定義し、このように定義した、逆数テーブルinvTable[x]を、隣接輝度画像の画素値の2乗の和XXと、隣接輝度画像の画素値の和xの2乗の差から導出される第2パラメータ(正規化第2パラメータ)で引いた値に基づいてパラメータaを導出することにより、正規化第2パラメータ(第2パラメータ)が0であるか否かに応じて、演算方法を変更しなくても適当なパラメータaを得ることができるため、処理量を削減する効果が得られる。なお、インデックスxが0以外の場合には、逆数テーブルinvTable[x]は、所定の値とxで除算した値を整数化した値を用いることが適当である。
上記LMパラメータ推定部31041の構成では、隣接色差画像の画素値yと隣接輝度画像の画素値xの積の和XYと、隣接色差画像の画素値の和Yと隣接輝度画像の画素値の和Xの積の差から導出される第1パラメータa1を導出する際に、正則化項acostを加算し、さらに、隣接輝度画像の画素値の2乗の和XXと、隣接輝度画像の画素値の和Xの2乗の差から導出される第2パラメータa2を導出する際に同じ正則化項acostを加算する。正則化項が加算された第1パラメータa1と第2パラメータa2からパラメータaを導出する。これにより、パラメータaが実質的に1に近くなる(実際には固定シフト値iShiftを用いて、1<<iShiftに近くなる)ことにより、外れ値などがある場合において、推定されるパラメータが頑健になる。推定されるパラメータが頑健になることによって、LM予測の推定精度が向上し、符号化効率が向上する効果を奏する。
(LM予測部3104H)
以下、LM予測部3104Eの変形例であるLM予測部3104Hを説明する。
図88は、LM予測部3104Hの構成を示すブロック図である。LM予測部3104Hは、LMパラメータ推定部31041Hと、LM予測フィルタ部31042Hから構成される。LMパラメータ推定部31041Hは、LM加算値導出部310413H、LM第1パラメータ導出部310414H、LM第2パラメータ導出部310415H、LMパラメータa導出部310416H、LMパラメータb導出部310417H、LM正則化項加算部310418Hから構成される。
LMパラメータ推定部31041Hは、対象ブロックに隣接する輝度画像を、隣接輝度画像x[]、対象ブロックに隣接する色差画像を隣接色差画像y[]と表示し、隣接輝度画像x[]と隣接色差画像y[]からパラメータaとパラメータbを導出する。
LM加算値導出部310413Hは、隣接色差画像の画素値の和Yと隣接輝度画像の画素値の和Xを、以下の式(LM−2)、式(LM−3)により導出する。
X = Σx[i] 式(LM−2)
Y = Σy[i] 式(LM−3)
ここで、Σは、参照領域に対する和であり、参照領域の画素を特定するインデックスiに対する和を導出する。y[i]は、復号画像のインデックスiにおける画素値であり、x[i]は、参照画像のインデックスiにおける画素値である。カウントシフト値iCountShiftは、参照領域のサイズ(画素数)の2の対数である。
iCountShift = log2 (参照領域の画素数) 式(LM−6)
LM第1パラメータ導出部310414Hは、隣接色差画像の画素値の和Yから第1パラメータa1を以下の式により導出する。
a1 = Y 式(LM−7´)
LM第2パラメータ導出部310415Hは、隣接輝度画像の画素値xの和Xから第2パラメータa2を以下の式により導出する。
a2 = X 式(LM−8´)
導出された第1パラメータa1と第2パラメータa2は、LMパラメータa導出部310416Hに出力される。
図89は、LM正則化項加算部310418Hの構成を示すブロック図である。LM正則化項加算部310418Hは、LM正則化項導出部3104180H、LM第1正則化項加算部3104181H、LM第2正則化項加算部3104182Hから構成される。
LM正則化項導出部3104180Hは、隣接輝度画像の画素値の和Xから正則化項acostを導出する。
acost = X >> ashift 式(LM−1´)
ここで、ashiftは所定の定数であり、右シフトにより正則化項acostの大きさを調整するために用いられる。
なお、通常の画像では、隣接輝度画像の画素値の和Xと隣接色差画像の画素値の和Yはほぼ等しいため、隣接色差画像の画素値の和Yから正則化項acostを導出しても良い。
acost = Y >> ashift 式(LM−1´´)
LM第1パラメータ正則化項加算部3104181Eは、第1パラメータを導出に用いるパラメータ(例えばY)に正則化項を加算する。
Y = Y + acost 式(LM−2´)
LM第2パラメータ正則化項加算部3104182Eは、第2パラメータの導出に用いるパラメータ(例えばX)に正則化項を加算する。
X = X + acost 式(LM−3´)
なお、正則化項の加算は、LM第1パラメータ導出部310414Hおよび、LM第2パラメータ導出部310415Hで行っても良い。この場合、第1パラメータ、第2パラメータは、式(LM−7´´)、式(LM−8´´)の代わりに以下の式により導出される。
a1 = Y + acost 式(LM−7´´)
a2 = X + acost 式(LM−8´´)
図90は、LMパラメータa導出部310416Hの構成を示すブロック図である。LMパラメータa導出部310416Hは、LMパラメータクリップ部3104161H、LM第2正規化シフト部3104163H、LMテーブルベースパラメータa導出部3104164Hから構成される。
LM第2正規化シフト部3104163Hは、第2パラメータa2の大きさに応じて、以下の式により第2正規化シフト値iScaleShiftA2を導出する。導出されたLM第2正規化シフト値iScaleShiftA2は、LMテーブルベースパラメータa導出部3104164Hに出力される。
iScaleShiftA2 = Max(0, GetMSB( abs( a2 ) ) - 6) 式(B−14)
LM第2正規化シフト部3104163Hは、第2パラメータa2を第2正規化シフト値iScaleShiftA2により右シフトし、正規化第2パラメータa2sを導出する。
a2s = a2 >> iScaleShiftA2 式(B−16)
LMテーブルベースパラメータa導出部3104164Hは、以下の式によりパラメータaシフト値ScaleShiftAを導出する。
ScaleShiftA = iScaleShiftA2 + 15 - iShift 式(B−18´)
LMテーブルベースパラメータa導出部3104164Hは、以下の式のように、正規化第2パラメータa2sに応じて定まる逆数テーブル値invTableを参照し、正規化第1パラメータa1との積をとり、テーブルシフト値ScaleShiftAで右シフトすることにより、パラメータaを導出する。
a = (a1 * invTable[a2s]) >> (ScaleShiftA) 式(LM−19)
図84は、本実施形態で用いる逆数テーブル値invTable[]である。既に説明したように図84の逆数invTable[x]は、インデックスxが0の場合に0となり、インデックスxが0以外の場合には、所定の定数M(ここでは2の15乗)をxで割って整数化した値から導出される。
パラメータaの値は、第1パラメータa1と第2パラメータa2の比(a1/a2をiShiftだけ左シフトした値)に相当する。
LMパラメータクリップ部3104161Hは、以下の演算によりパラメータaの範囲を、8ビット整数変数となる、-128以上、127以下にクリップする。
a = Clip3(-128, 127, a) 式(LM−12´)
なお、クリップの範囲の最小値は-128以上、最大値が127以下であれば他の値でも構わない。例えば以下の範囲等でも良い。
a = Clip3(-64, 63, a)
LMパラメータb導出部310417は、既に説明したとおり、式(LM−20)によりパラメータbを導出する。
LMフィルタ部31042Hは、LMパラメータ推定部31041Hが導出した推定パラメータa、bを用いて、輝度復号画像predSamplesY[]から、LM予測後の色差予測画像predSamplesC[]を導出する。例えば、LMフィルタ部31042は、以下の式(LM−21´)のように、画素のビット深度をbitDepthとした場合、輝度復号画像predSamplesY[]から(1<<(bitDepth-1))を引いた値にパラメータaをかけてから、シフト値iShiftで右シフト後、パラメータbと(1<<(bitDepth-1))を加算することによって、色差予測画像predSamplesC[]を導出する。。
predSamplesC[x][y] = (a * (predSamplesY[x/2][y/2]-(1<<(bitDepth-1))) >> iShift)+b+(1<<(bitDepth-1)) 式(LM−21´)
bitDepthが8ビットである場合、predSamplesYの範囲は0から255で、(1<<(bitDepth-1))は128であるため、predSamplesY[x/2][y/2]-(1<<(bitDepth-1))は、8ビット整数の-128から127の範囲となる。パラメータaも-128から127となるようにクリップしていれば、上記画素値から所定の値を引いた値と、パラメータaとの積を、8ビット整数間の演算で処理できる。
上記LMパラメータ推定部31041Hの構成では、同じ正則化項を第1パラメータa1と第2パラメータa2に加算してから、第1パラメータa1と第2パラメータa2の比に相当する値のパラメータaを算出することによって、外れ値などがある場合において、推定されるパラメータが頑健になり、符号化効率が向上する効果を奏する。なお、正則化項は、隣接輝度画像の画素値xの和Xから生成しても良いし、隣接色差画像の画素値yの和Yから生成しても良い。
上記LMパラメータ推定部31041Hの構成では、隣接輝度画像の画素値の和Xから導出される第2パラメータのみを正規化し、隣接色差画像の画素値の和Yから導出される第1パラメータを正規化しないため、テーブルシフト値ScaleShiftAが必ず0以上になる。そのためテーブルシフト値ScaleShiftAが0以上であるか(正であるか)否かに応じて、右シフトである式(LM−19)と左シフトである式(LM−19´)で切り替えることなく、右シフトのみで導出することができる。
上記LMパラメータ推定部31041Hの構成では、図84に示すように、インデックスxが0の場合に0となるように逆数テーブルinvTable[x]を定義し、このように定義した逆数テーブルinvTable[x]を、復号画像の画素値yの和Yから導出される第2パラメータ(正規化第2パラメータ)で引いた値に基づいてパラメータaを導出することにより、第2パラメータ(正規化第2パラメータ)が0であるか否かに応じて、演算方法を変更しなくても適当なパラメータaを得ることができるため、処理量が削減されるという効果を奏する。
上記LMパラメータ推定部31041Hの構成では、LMパラメータクリップ部3104161Hにより、パラメータaを8ビット非負整数の範囲にクリップすることから、画素値のビット深度が8ビットである場合に、パラメータaと画素値の積を8ビット非負整数同士の積として処理することができるためSIMD演算などによる処理が容易になるという効果を奏する。
上記LMパラメータ推定部31041Hの構成では、LMパラメータクリップ部3104161Hにより、パラメータaを8ビット整数の範囲にクリップすることから、画素値のビット深度が8ビットである場合に、パラメータaと画素値の積を8ビット整数同士の積として処理することができるためSIMD演算などによる処理が容易になるという効果を奏する。
上記LMパラメータ推定部31041Hの構成では、パラメータaの導出において、隣接色差画像の画素値yと隣接輝度画像の画素値xの積の和XYと、隣接輝度画像の画素値の2乗の和XXを導出しないため、処理量が小さくなるという効果を奏する。
なお、LM予測部3104Hの別の構成として、LM予測部3104H内の、LMパラメータ推定部31041Hにおいて、LMパラメータa導出部310416Hの代わりに、LMパラメータa導出部310416H2を用いる構成も可能である。
図91は、LMパラメータa導出部310416H2の構成を示すブロック図である。LMパラメータa導出部310416H2は、LMパラメータクリップ部3104161H、LM除算パラメータa導出部3104165Hから構成される。
LM除算パラメータa導出部3104165Hは、第1パラメータと第2パラメータの比により、以下の式によりパラメータaを導出する。
a = (a1 + a2/2) / a2 式(B−19´)
LMパラメータクリップ部3104161Hは、既に説明したように、パラメータaの範囲を、8ビット非負変数の範囲にクリップする。
上記LMパラメータ推定部31041H2の構成では、同じ正則化項を第1パラメータa1と第2パラメータa2に加算してから、第1パラメータa1と第2パラメータa2の比に相当する値のパラメータaを算出することによって、外れ値などがある場合において、推定されるパラメータが頑健になり、符号化効率が向上する効果を奏する。
上記LMパラメータ推定部31041Hの構成では、LMパラメータクリップ部3104161Hにより、パラメータaを8ビット整数の範囲にクリップすることから、画素値のビット深度が8ビットである場合に、パラメータaと画素値の積を8ビット整数同士の積として処理することができるためSIMD演算などによる処理が容易になるという効果を奏する。
LMパラメータa導出部310416H2は、LMパラメータa導出部310416Hと異なり、パラメータaの導出に除算を用いる。除算は比較的処理が複雑な演算であるが、その分パラメータaの精度が向上するため、符号化効率が高くなるという効果を奏する。
逆量子化・逆DCT部311は、エントロピー復号部301から入力された量子化係数を逆量子化してDCT係数を求める。逆量子化・逆DCT部311は、求めたDCT係数について逆DCT(Inverse Discrete Cosine Transform、逆離散コサイン変換)を行い、復号残差信号を算出する。逆量子化・逆DCT部311は、算出した復号残差信号を加算部312および残差格納部313に出力する。
加算部312は、インター予測画像生成部309及びイントラ予測画像生成部310から入力された予測ピクチャブロックPと逆量子化・逆DCT部311から入力された復号残差信号の信号値を画素毎に加算して、参照ピクチャブロックを生成する。加算部312は、生成した参照ピクチャブロックを参照ピクチャメモリ306に記憶し、生成した参照ピクチャブロックをピクチャ毎に統合した復号レイヤ画像Tdを外部に出力する。
(インター予測パラメータ復号部の構成)
次に、インター予測パラメータ復号部303の構成について説明する。
図6は、本実施形態に係るインター予測パラメータ復号部303の構成を示す概略図である。インター予測パラメータ復号部303は、インター予測パラメータ復号制御部3031、AMVP予測パラメータ導出部3032、加算部3035及びマージ予測パラメータ導出部3036を含んで構成される。
インター予測パラメータ復号制御部3031は、インター予測に関連する符号(シンタックス要素の復号をエントロピー復号部301に指示し、符号化データに含まれる符号(シンタックス要素)を例えば、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXを抽出する。
インター予測パラメータ復号制御部3031は、まず、をマージフラグ抽出する。インター予測パラメータ復号制御部3031が、あるシンタックス要素を抽出すると表現する場合は、あるシンタックス要素の復号をエントロピー復号部301に指示し、該当のシンタックス要素を符号化データから読み出すことを意味する。ここで、マージフラグが示す値が1、すなわち、マージ予測モードを示す場合、インター予測パラメータ復号制御部3031は、マージ予測に係る予測パラメータとして、マージインデックスmerge_idxを抽出する。インター予測パラメータ復号制御部3031は、抽出したマージインデックスmerge_idxをマージ予測パラメータ導出部3036に出力する。
マージフラグmerge_flagが0、すなわち、AMVP予測モードを示す場合、インター予測パラメータ復号制御部3031は、エントロピー復号部301を用いて符号化データからAMVP予測パラメータを抽出する。AMVP予測パラメータとして、例えば、インター予測フラグinter_pred_idc、参照ピクチャインデックスrefIdxLX、ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXがある。インター予測パラメータ復号制御部3031は、抽出したインター予測フラグinter_pred_idxから導出した予測リスト利用フラグpredFlagLXと、参照ピクチャインデックスrefIdxLXをAMVP予測パラメータ導出部3032及び予測画像生成部308(図5)に出力し、また予測パラメータメモリ307(図5)に記憶する。インター予測パラメータ復号制御部3031は、抽出したベクトルインデックスmvp_LX_idxをAMVP予測パラメータ導出部3032に出力する。インター予測パラメータ復号制御部3031は、抽出した差分ベクトルmvdLXを加算部3035に出力する。
図7は、本実施形態に係るマージ予測パラメータ導出部3036の構成を示す概略図である。マージ予測パラメータ導出部3036は、マージ候補導出部30361とマージ候補選択部30362を備える。マージ候補導出部30361は、マージ候補格納部303611と、拡張マージ候補導出部303612と基本マージ候補導出部303613を含んで構成される。
マージ候補格納部303611は、拡張マージ候補導出部303612及び基本マージ候補導出部303613から入力されたマージ候補を格納する。なお、マージ候補は、予測リスト利用フラグpredFlagLX、ベクトルmvLX、参照ピクチャインデックスrefIdxLXを含んで構成されている。マージ候補格納部303611において、格納されたマージ候補には、所定の規則に従ってインデックスが割り当てられる。例えば、拡張マージ候補導出部303612から入力されたマージ候補には、インデックスとして「0」を割り当てる。
拡張マージ候補導出部303612は、変位ベクトル取得部3036122と、インターレイヤマージ候補導出部3036121とインターレイヤ変位マージ候補導出部3036123を含んで構成される。
変位ベクトル取得部3036122は、まず、復号対象ブロックに隣接する複数の候補ブロック(例えば、左、上、右上に隣接するブロック)から順に変位ベクトルを取得する。具体的には、候補ブロックの一つを選択し、選択した候補ブロックのベクトルが変位ベクトルであるか動きベクトルであるかを、候補ブロックの参照ピクチャインデックスrefIdxLXを用いてリファレンスレイヤ判定部303111(後述)を用いて判定し変位ベクトルが有る場合には、それを変位ベクトルとする。候補ブロックに変位ベクトルがない場合には、次の候補ブロックを順に走査する。隣接するブロックに変位ベクトルがない場合、変位ベクトル取得部3036122は、時間的に別の表示順の参照ピクチャに含まれるブロックの対象ブロックに対応する位置のブロックの変位ベクトルの取得を試みる。変位ベクトルが取得できなかった場合には、変位ベクトル取得部3036122は、変位ベクトルとしてゼロベクトルを設定する。変位ベクトル取得部3036122は、変位ベクトルをインターレイヤマージ候補導出部3036121及びインターレイヤ変位マージ候補導出部に出力する。
インターレイヤマージ候補導出部3036121は、変位ベクトル取得部3036122から変位ベクトルを入力される。インターレイヤマージ候補導出部3036121は、別レイヤ(例えばベースレイヤ、ベースビュー)の復号対象ピクチャと同一POCを持つピクチャ内から、変位ベクトル取得部3036122から入力された変位ベクトルだけが示すブロックを選択し、該ブロックが有する動きベクトルである予測パラメータを予測パラメータメモリ307から読み出す。より具体的には、インターレイヤマージ候補導出部3036121が読みだす予測パラメータは、対象ブロックの中心点を起点にしたときに、起点の座標に変位ベクトルを加算した座標を含むブロックの予測パラメータである。
参照ブロックの座標(xRef、yRef)は、対象ブロックの座標が(xP、yP)、変位ベクトルが(mvDisp[0]、mvDisp[1])、対象ブロックの幅と高さがnPSW、nPSHの場合に以下の式により導出する。
xRef = Clip3( 0, PicWidthInSamplesL- 1, xP + ( ( nPSW - 1 ) >> 1 ) + ( ( mvDisp[0] + 2 ) >> 2 ) )
yRef = Clip3( 0, PicHeightInSamplesL- 1, yP + ( ( nPSH - 1 ) >> 1 ) + ( ( mvDisp[1] + 2 ) >> 2 ))
なお、インターレイヤマージ候補導出部3036121は、予測パラメータが動きベクトルか否かを、インター予測パラメータ復号制御部3031に含まれる後述するリファレンスレイヤ判定部303111の判定方法において偽(変位ベクトルではない)と判定した方法により判定する。インターレイヤマージ候補導出部3036121は、読みだした予測パラメータをマージ候補としてマージ候補格納部303611に出力する。また、インターレイヤマージ候補導出部3036121は、予測パラメータを導出出来なかった際には、その旨をインターレイヤ変位マージ候補導出部に出力する。本マージ候補は、動き予測のインターレイヤ候補(インタービュー候補)でありインターレイヤマージ候補(動き予測)とも記載する。
インターレイヤ変位マージ候補導出部3036123は、変位ベクトル取得部3036122から変位ベクトルを入力される。インターレイヤ変位マージ候補導出部3036123は、入力された変位ベクトルと、変位ベクトルが指す先のレイヤ画像の参照ピクチャインデックスrefIdxLX(例えば、復号対象ピクチャと同一POCを持つベースレイヤ画像のインデックス)をマージ候補としてマージ候補格納部303611に出力する。本マージ候補は、変位予測のインターレイヤ候補(インタービュー候補)でありインターレイヤマージ候補(変位予測)とも記載する。
基本マージ候補導出部303613は、空間マージ候補導出部3036131と時間マージ候補導出部3036132と結合マージ候補導出部3036133とゼロマージ候補導出部3036134を含んで構成される。
空間マージ候補導出部3036131は、所定の規則に従って、予測パラメータメモリ307が記憶している予測パラメータ(予測リスト利用フラグpredFlagLX、ベクトルmvLX、参照ピクチャインデックスrefIdxLX)を読み出し、読み出した予測パラメータをマージ候補として導出する。読み出される予測パラメータは、復号対象ブロックから予め定めた範囲内にあるブロック(例えば、復号対象ブロックの左下端、左上端、右上端にそれぞれ接するブロックの全部又は一部)のそれぞれに係る予測パラメータである。導出されたマージ候補はマージ候補格納部303611に格納される。
時間マージ候補導出部3036132は、復号対象ブロックの右下の座標を含む参照画像中のブロックの予測パラメータを予測パラメータメモリ307から読みだしマージ候補とする。参照画像の指定方法は、例えば、スライスヘッダに置いて指定された参照ピクチャインデックスrefIdxLXでも良いし、復号対象ブロックに隣接するブロックの参照ピクチャインデックスrefIdxLXのうち最小のものを用いて指定しても良い。導出されたマージ候補はマージ候補格納部303611に格納される。
結合マージ候補導出部3036133は、既に導出されマージ候補格納部303611に格納された2つの異なる導出済マージ候補のベクトルと参照ピクチャインデックスを、それぞれL0、L1のベクトルとして組み合わせることで結合マージ候補を導出する。導出されたマージ候補はマージ候補格納部303611に格納される。
ゼロマージ候補導出部3036134は、参照ピクチャインデックスrefIdxLXが0であり、ベクトルmvLXのX成分、Y成分が共に0であるマージ候補を導出する。導出されたマージ候補はマージ候補格納部303611に格納される。
マージ候補選択部30362は、マージ候補格納部303611に格納されているマージ候補のうち、インター予測パラメータ復号制御部3031から入力されたマージインデックスmerge_idxに対応するインデックスが割り当てられたマージ候補を、対象PUのインター予測パラメータとして選択する。マージ候補選択部30362は選択したマージ候補を予測パラメータメモリ307(図5)に記憶するとともに、予測画像生成部308(図5)に出力する。
図8は、本実施形態に係るAMVP予測パラメータ導出部3032の構成を示す概略図である。AMVP予測パラメータ導出部3032は、ベクトル候補導出部3033と予測ベクトル選択部3034を備える。ベクトル候補導出部3033は、参照ピクチャインデックスrefIdxに基づいて予測パラメータメモリ307(図5)が記憶するベクトル(動きベクトル又は変位ベクトル)をベクトル候補mvpLXとして読み出す。読み出されるベクトルは、復号対象ブロックから予め定めた範囲内にあるブロック(例えば、復号対象ブロックの左下端、左上端、右上端にそれぞれ接するブロックの全部又は一部)のそれぞれに係るベクトルである。
予測ベクトル選択部3034は、ベクトル候補導出部3033が読み出したベクトル候補のうち、インター予測パラメータ復号制御部3031から入力されたベクトルインデックスmvp_LX_idxが示すベクトル候補を予測ベクトルmvpLXとして選択する。予測ベクトル選択部3034は、選択した予測ベクトルmvpLXを加算部3035に出力する。
図9は、ベクトル候補の一例を示す概念図である。図9に示す予測ベクトルリスト602は、ベクトル候補導出部3033において導出される複数のベクトル候補からなるリストである。予測ベクトルリスト602において、左右に一列に配列された5個の長方形は、それぞれ予測ベクトルを示す領域を示す。左端から2番目のmvp_LX_idxの真下の下向きの矢印とその下のmvpLXは、ベクトルインデックスmvp_LX_idxが、予測パラメータメモリ307においてベクトルmvpLXを参照するインデックスであることを示す。
候補ベクトルは、復号処理が完了したブロックであって、復号対象ブロックから予め定めた範囲のブロック(例えば、隣接ブロック)を参照し、参照したブロックに係るベクトルに基づいて生成される。なお、隣接ブロックには、対象ブロックに空間的に隣接するブロック、例えば、左ブロック、上ブロックの他、対象ブロックに時間的に隣接するブロック、例えば、対象ブロックと同じ位置で、表示時刻が異なるブロックから得られたブロックを含む。
加算部3035は、予測ベクトル選択部3034から入力された予測ベクトルmvpLXとインター予測パラメータ復号制御部から入力された差分ベクトルmvdLXを加算してベクトルmvLXを算出する。加算部3035は、算出したベクトルmvLXを予測画像生成部308(図5)に出力する。
(インター予測パラメータ復号制御部の構成)
次に、インター予測パラメータ復号制御部3031の構成について説明する。インター予測パラメータ復号制御部3031は、図10に示すように、追加予測フラグ復号部30311、マージインデックス復号部30312、ベクトル候補インデックス復号部30313、及び図示しない、分割モード復号部、マージフラグ復号部、インター予測フラグ復号部、参照ピクチャインデックス復号部、ベクトル差分復号部を含んで構成される。分割モード復号部、マージフラグ復号部、マージインデックス復号部、インター予測フラグ復号部、参照ピクチャインデックス復号部、ベクトル候補インデックス復号部30313、ベクトル差分復号部は各々、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXを復号する。
追加予測フラグ復号部30311は、追加予測が行われるか否かを示すフラグxpred_flagを復号する。ここで追加予測とは、後述する残差予測もしくは照度補償等を意味し、通常の動き補償や変位補償に対して追加的に行われる予測を示す。なお、残差予測を行われるか否かを示すフラグはres_pred_flag、照度補償が行われるか否かを示すフラグはic_enable_flagで表現する。復号した追加予測フラグxpred_flag(res_pred_flag、ic_enable_flag)は、インター予測画像生成部309に出力される。さらに、追加予測フラグxpred_flagが残差予測フラグres_pred_flagであり、残差予測フラグres_pred_flagが残差予測をすることを示す1である場合には、インター予測パラメータ復号制御部3031は内部に備える後述の変位ベクトル取得部を用いて、対象PUの変位ベクトルmvDispを抽出し、インター予測画像生成部309に出力する。なお、残差予測を行うか否かを示すフラグである残差予測フラグres_pred_flagの代わりに、残差予測の重みを示すフラグである残差予測ウェイトres_pred_weightを用いても良い。res_pred_weightが0の場合には残差予測を行わず、res_pred_weightが1の場合には、重み1で残差予測を行い、res_pred_weightが2の場合には、重み1/2で残差予測を行う。また、残差予測を行うか否かを示すフラグである残差予測フラグres_pred_flagの代わりに、残差予測の種類を示すフラグである残差予測モードres_pred_modeを用いても良い。res_pred_modeが0の場合には残差予測を行わず、res_pred_modeが1の場合には、第1の残差予測行い、res_pred_modeが2の場合には、第2の残差予測で残差予測を行う。なお第1の残差予測と第2の残差予測は、残差の導出方法が互いに異なるものとする。
追加予測フラグ復号部30311は、内部に、追加予測フラグ判定部30314を備える。追加予測フラグ判定部30314は、追加予測フラグxpred_flagを符号化データに含まれるか否か(符号化データから読み出して復号するか否か)を判定する。判定結果は符号化データに含める場合を1、含めない場合を0としてxpred_flag_existsとして導出される。追加予測フラグ判定部30314において、追加予測フラグを符号化データに符号化データに含めると判定された場合(xpred_flag_existsが1の場合)には、追加予測フラグ復号部30311は、エントロピー復号部301に、追加予測フラグの復号を通知し、エントロピー復号部301を通じて符号化データから、追加予測フラグに対応するシンタックス要素を抽出する。逆に、追加予測フラグ判定部30314において、符号化データに含めない(xpred_flag_existsが0の場合)と判定した場合には、追加予測フラグに、追加予測を示す値(ここでは1)を導出(infer)する。追加予測フラグ判定部30314については後述する。
(変位ベクトル取得部)
変位ベクトル取得部は、対象PUに隣接するブロックが変位ベクトルを持つ場合には、その変位ベクトルを予測パラメータメモリ307から抽出し、予測パラメータメモリ307を参照し、対象PUに隣接するブロックの予測フラグpredFlagLX、参照ピクチャインデックスrefIdxLXとベクトルmvLXを読み出す。変位ベクトル取得部は、内部にリファレンスレイヤ判定部303111を備える。変位ベクトル取得部は、対象PUに隣接するブロックの予測パラメータを順に読み出し、リファレンスレイヤ判定部303111を用いて、隣接ブロックの参照ピクチャインデックスから隣接ブロックが変位ベクトルを備えるか否かを判定する。隣接ブロックが変位ベクトルを備える場合には、その変位ベクトルを出力する。隣接ブロックの予測パラメータに変位ベクトルが無い場合にはゼロベクトルを変位ベクトルとして出力する。
(リファレンスレイヤ判定部303111)
リファレンスレイヤ判定部303111は、入力された参照ピクチャインデックスrefIdxLXに基づいて、参照ピクチャインデックスrefIdxLXが指す参照ピクチャと、対象ピクチャの関係を示すリファレンスレイヤ情報reference_layer_infoを定める。リファレンスレイヤ情報reference_layer_infoは、参照ピクチャへのベクトルmvLXが変位ベクトルであるか動きベクトルであるかを示す情報である。
対象ピクチャのレイヤと参照ピクチャのレイヤが同じレイヤである場合の予測を、同一レイヤ予測と呼び、この場合に得られるベクトルは動きベクトルである。対象ピクチャのレイヤと、参照ピクチャのレイヤが異なるレイヤである場合の予測をインターレイヤ予測と呼び、この場合に得られるベクトルは変位ベクトルである。
ここで、リファレンスレイヤ判定部303111の判定処理の例について、第1の判定方法から第3の判定方法を説明する。リファレンスレイヤ判定部303111は、第1の判定方法から第3の判定方法のいずれか、又は、それらの方法のうち任意の組み合わせを用いてもよい。
<第1の判定方法>
リファレンスレイヤ判定部303111は、参照ピクチャインデックスrefIdxLXが示す参照ピクチャに係る表示時刻(POC:Picture Order Count、ピクチャ順序番号)が復号対象ピクチャに係る表示時刻(POC)と等しい場合に、ベクトルmvLXが変位ベクトルであると判定する。POCは、ピクチャを表示する順序を示す番号であって、そのピクチャが取得された表示時刻を示す整数(離散時刻)である。変位ベクトルと判定しなかった場合には、リファレンスレイヤ判定部303111は、ベクトルmvLXが動きベクトルであると判定する。
具体的には、参照ピクチャインデックスrefIdxLXが示す参照ピクチャのピクチャ順序番号POCが復号対象ピクチャのPOCと等しい場合、リファレンスレイヤ判定部303111は、ベクトルmvLXが変位ベクトルであると、例えば以下の式により判定する。
POC == ReflayerPOC (refIdxLX, ListX)
ここで、POCは復号対象ピクチャのPOC、RefPOC(X, Y)は参照ピクチャインデックスX、参照ピクチャリストYで指定される参照ピクチャのPOCである。
なお、復号対象ピクチャのPOCと等しいPOCの参照ピクチャを参照することができる、ということは、その参照ピクチャのレイヤは、復号対象ピクチャのレイヤと異なることを意味する。従って、復号対象ピクチャのPOCと参照ピクチャのPOCが等しい場合には、インターレイヤ予測が行われた(変位ベクトル)、それ以外は同一レイヤ予測が行われた(動きベクトル)と判定する。
<第2の判定方法>
また、リファレンスレイヤ判定部303111は、参照ピクチャインデックスrefIdxLXが示す参照ピクチャに係る視点と復号対象ピクチャに係る視点が異なる場合に、ベクトルmvLXを変位ベクトルであると判定しても良い。具体的には、参照ピクチャインデックスrefIdxLXが示す参照ピクチャのビューIDview_idが復号対象ピクチャのビューIDview_idと異なる場合に、リファレンスレイヤ判定部303111は、ベクトルmvLXが変位ベクトルであると、例えば以下の式により判定する。
ViewID == ReflayerViewID (refIdxLX, ListX)
ここで、ViewIDは復号対象ピクチャのビューID、RefViewID(X, Y)は参照ピクチャインデックスX、参照ピクチャリストYで指定される参照ピクチャのビューIDである。
ビューIDview_idは、それぞれの視点画像を識別する情報である。変位ベクトルに係る差分ベクトルdvdLXは、異なる視点のピクチャ間で得られ、同一の視点のピクチャ間からは得られないことに基づく。なお、変位ベクトルと判定しなかった場合には、リファレンスレイヤ判定部303111は、ベクトルmvLXが動きベクトルであると判定する。
なお、個々の視点画像はレイヤの一種であるから、ビューIDview_idが異なると判定された場合には、リファレンスレイヤ判定部303111は、ベクトルmvLXを変位ベクトル(インターレイヤ予測が行われた)、それ以外は動きベクトル(同一レイヤ予測が行われた)と判定する。
<第3の判定方法>
また、リファレンスレイヤ判定部303111は、参照ピクチャインデックスrefIdxLXが示す参照ピクチャに係るレイヤIDlayer_idと復号対象ピクチャに係るレイヤIDlayer_idが異なる場合に、ベクトルmvLXが変位ベクトルであると、例えば以下の式により判定しても良い。
layerID != ReflayerID (refIdxLX, ListX)
ここで、layerIDは復号対象ピクチャのレイヤID、ReflayerID(X, Y)は参照ピクチャインデックスX、参照ピクチャリストYで指定される参照ピクチャのレイヤIDである。レイヤIDlayer_idは、1枚のピクチャが複数の階層(レイヤ)のデータを含んで構成される場合において、それぞれのレイヤを識別するデータである。異なる視点のピクチャが符号化された符号化データにおいて、レイヤIDは、視点によって異なる値を有することに基づく。すなわち、変位ベクトルに係る差分ベクトルdvdLXは、対象ピクチャと、異なるレイヤに係るピクチャとの間で得られるベクトルである。なお、変位ベクトルと判定しなかった場合には、リファレンスレイヤ判定部303111は、ベクトルmvLXが動きベクトルであると判定する。
なお、レイヤIDlayer_idが異なる場合には、リファレンスレイヤ判定部303111は、ベクトルmvLXを変位ベクトル(インターレイヤ予測が行われた)、それ以外は動きベクトル(同一レイヤ予測が行われた)と判定する。
(インター予測画像生成部309)
図11は、本実施形態に係るインター予測画像生成部309の構成を示す概略図である。インター予測画像生成部309は、動き変位補償部3091、残差予測部3092、照度補償部3093、重み予測部3094を含んで構成される。
(動き変位補償)
動き変位補償部3091は、インター予測パラメータ復号部303から入力された、予測リスト利用フラグpredFlagLX、参照ピクチャインデックスrefIdxLX、動きベクトルmvLXに基づいて、参照ピクチャメモリ306から、参照ピクチャインデックスrefIdxLXで指定された参照ピクチャの対象ブロックの位置を起点として、ベクトルmvLXだけずれた位置にあるブロックを読み出すことによって動き変位補償画像を生成する。ここで、ベクトルmvLXが整数ベクトルでない場合には、動き補償フィルタ(もしくは変位補償フィルタ)と呼ばれる小数位置の画素を生成するためのフィルタを施して、動き変位補償画像を生成する。一般に、ベクトルmvLXが動きベクトルの場合、上記処理を動き補償と呼び、変位ベクトルの場合は変位補償と呼ぶ。ここでは総称して動き変位補償と表現する。以下、L0予測の動き変位補償画像をpredSamplesL0、L1予測の動き変位補償画像をpredSamplesL1と呼ぶ。両者を区別しない場合predSamplesLXと呼ぶ。以下、動き変位補償部3091で得られた動き変位補償画像predSamplesLXに、さらに残差予測および照度補償が行われる例を説明するが、これらの出力画像もまた、動き変位補償画像predSamplesLXと呼ぶ。なお、以下の残差予測および照度補償において、入力画像と出力画像を区別する場合には、入力画像をpredSamplesLX、出力画像をpredSamplesLX´と表現する。
(残差予測)
残差予測部3092は、残差予測フラグres_pred_flagが1の場合に、入力された動き変位補償画像predSamplesLXに対して、残差予測を行う。残差予測フラグres_pred_flagが0の場合には、入力された動き変位補償画像predSamplesLXをそのまま出力する。インター予測パラメータ復号部303から入力された変位ベクトルmvDispと、残差格納部313に格納された残差refResSamplesを用いて、動き変位補償部3091で得られた動き変位補償画像predSamplesLXに対し残差予測を行う。残差予測は、予測画像生成の対象とする対象レイヤ(第2のレイヤ画像)とは異なる参照レイヤ(第1のレイヤ画像)の残差を、対象レイヤの予測した画像である動き変位補償画像predSamplesLXに加えることにより行われる。すなわち、参照レイヤと同様の残差が対象レイヤにも生じると仮定して、既に導出された参照レイヤの残差を対象レイヤの残差の推定値として用いる。ベースレイヤ(ベースビュー)では同じレイヤの画像のみが参照画像となる。従って、参照レイヤ(第1のレイヤ画像)がベースレイヤ(ベースビュー)である場合には、参照レイヤの予測画像は動き補償による予測画像であることから、対象レイヤ(第2のレイヤ画像)による予測においても、動き補償による予測画像である場合に、残差予測は有効である。すなわち、残差予測は対象ブロックが動き補償の場合に有効であるという特性を持つ。
残差予測部3092は、図示しない残差取得部30921と、残差フィルタ部30922から構成される。図12は、残差予測を説明するための図である。対象レイヤ上の対象ブロックに対応する対応ブロックは、参照レイヤ上の画像の対象ブロックの位置を起点として、参照レイヤと対象レイヤの位置関係を示すベクトルである変位ベクトルmvDispだけずれた位置になるブロックに位置する。従って、残差予測に用いる残差は、変位ベクトルmvDispだけずれた位置にある残差を用いる。具体的には、残差取得部30921は、対象ブロックの画素の座標(x, y)を、対象ブロックの変位ベクトルmvDispの整数画素成分だけずらした位置の画素を導出する。変位ベクトルmvDispが小数精度であることを考慮し、残差取得部30921は、対象ブロックの画素の座標が(xP、yP)である場合に対応する画素R0のX座標xR0と、画素R0の隣接画素R1のX座標xR1を以下の式により導出する。
xR0 = Clip3( 0, PicWidthInSamplesL- 1, xP + x + (mvDisp[0] >> 2 ) )
xR1 = Clip3( 0, PicWidthInSamplesL- 1, xP + x + (mvDisp[0] >> 2 ) + 1 )
ここで、Clip3(x, y, z)は、zをx以上、y以下に制限(クリップ)する関数である。なお、mvDisp[0] >> 2は、1/4ペル精度のベクトルにおいて整数成分を導出する式である。
残差取得部30921は、変位ベクトルmvDispで指定される座標の小数画素位置(mvDisp[0] - ( ( mvDisp[0] >> 2 ) << 2 ) )に応じて、画素R0の重み係数w0と、画素R1の重み係数w1を以下の式により導出する。
w0 = 4 - mvDisp[0] + ( ( mvDisp[0] >> 2 ) << 2 )
w1 = mvDisp[0] - ( ( mvDisp[0] >> 2 ) << 2 )
続いて、残差取得部30921は、残差格納部313から、画素R0、画素R1の残差をrefResSamplesL[ xR0, y ]、refResSamplesL[ xR1, y ]により取得する。残差フィルタ部30922は、推定残差deltaLを以下の式で導出する。
deltaL = ( w0 * clip3(xmin, xmax, refResSamplesL[ xR0, y ]) + w1 * clip3(xmin, xmax, refResSamplesL[ xR1, y ] + 2 )) >> 2
ここで、xmin=−(1<<(BitDepthY−1))、xmax = (1<<(BitDepthY−1))−1である。残差取得部30921は、参照レイヤの残差を読み出す際に、所定のビット幅に収まる範囲にクリップしてから読み出す。例えば、ビット深度をBitDepthYとする場合、refResSamplesL[ xR0, y ]、refResSamplesL[ xR1, y ]を、−(1<<(BitDepthY−1)) 〜 + (1<<BitDepthY−1)−1に制限し、残差を読み出す。なお上記の説明ではビット深度に輝度のビット深度bitDepthYを用いたが、色差の残差を読み出す場合にも同様のクリップ処理を行う。この場合には、ビット深度を色差のビット深度bitDepthCに置き替えて処理を行う(以下同様)。
上記処理は、変位ベクトルmvDispが小数精度を有する場合に、線形補間により画素を導出していたが、線形補間を用いず、近傍の整数画素を用いても良い。具体的には、残差取得部30921は、対象ブロックの画素に対応する画素として画素xR0のみを取得し、以下の式を用いて推定残差deltaLを導出しても良い。
deltaL = clip3(xmin, xmax, refResSamplesL[ xR0, y ])
上記推定残差deltaLの導出後、残差フィルタ部30922は、残差予測部3092に入力された動き変位画像predSamplesLXに推定残差deltaLを加算し、動き変位画像predSamplesLX´として出力する。
predSamplesLX´ [ x, y ] = predSamplesLX [ x, y ] + deltaL
上記の構成によれば、対象レイヤの残差の推定において、参照レイヤで得られた残差の値の範囲を制限して読み出す。これにより、後述する残差格納部313では、残差として、制限した範囲の値のみを格納すれば良いため、残差を記録するためのメモリ量を低下させる効果を奏する。
より具体的には、残差は差分信号であるため、画素のビット深度がbitDepthY(画素の範囲が0 〜 +(1<<BitDepthY)−1)である場合、bitDepthY+1ビットが必要になる(残差の範囲は、−(1<<BitDepthY) 〜 +(1<<BitDepthY)−1)。従来技術では、上記の範囲の値を記録する必要があった。
これに対し、本実施形態の制限−(1<<(BitDepthY−1)) 〜 + (1<<BitDepthY−1)−1では、画素のビット数がBitDepthYである場合に、残差のビット幅をBitDepthYに制限することが可能である。発明者らは、実験により、画素のビット深度が8ビット(画素の範囲が0〜255)である場合に、残差の範囲を8ビット(−128〜127)に制限しても符号化効率が低下しないことを確認している。一般にRAM(SRAM、DRAM、DDRAM)と呼ばれるメモリは、8ビット単位で情報を格納することから、最も良く利用される場合である、画素ビット幅が8ビットの場合において、格納する残差の範囲を8ビットに制限できることはメモリ量を削減する効果を奏する。また、残差の範囲を制限して読み出すことは、残差格納部313から読み出す際にメモリ転送を行うために必要なバンド幅を少なくすることができ、また、読み出し速度の向上にも寄与する。
なお、残差の範囲制限は、残差取得部30921での残差読み出し時ではなく、残差格納部313で残差を格納する時点において行っても良い。
以下、残差予測部3092の変形例である残差予測部3092Aについて説明する。残差予測部3092Aは、残差取得部30921Aと、残差フィルタ部30922から構成される。残差予測部3092の変形例では、既に説明した残差予測部3092と異なる部分のみを説明し、同じ動作をする場合には説明を省略する。変形例の残差取得部30921Aは、参照レイヤの残差を読み出す際に、水平方向もしくは/かつ垂直方向の解像度をN分の1に間引いた位置の画素のみを参照する(ここでNは所定の倍率)。より具体的には、残差を読み出す座標を所定のビット(ここではK)だけ右シフトし、さらに同じ所定のビットKだけ左シフトすることにより、下位Kビットを無視する。下位ビットが無視された位置の残差は読み出されない。ここで所定の倍率NとKの関係は、N=(1<<K)である。例えば倍率Nが2倍の場合にはK=1を用いる。
残差取得部30921Aは、座標の下位Kビットを無視する上記シフト演算による座標xR0、xR1の導出と、下位Kビット無視前の座標xxと、下位Kビット無視後の座標xxxから、重み係数w0とw1を導出し、線形予測により、推定残差deltaLを以下の式より求める。
xx = (xP<<2) + (x<<2) + mvDisp[0]
xxx = (xx>>(K+2))<<(K+2)
xR0 = Clip3( 0, PicWidthInSamplesL- 1, xxx)
xR1 = Clip3( 0, PicWidthInSamplesL- 1, xxx+1)
w0 = (1<<(K+2)) - (xx - xxx)
w1 = xx - xxx
deltaL = ( w0 * clip3(xmin, xmax, refResSamplesL[ xR0, (y>>K)<<K ]) + w1 * clip3(xmin, xmax, refResSamplesL[xR1, (y>>K)<<K ] + (1<<(K+1))) )) >> (K+2)
なお、上記の下位ビットを無視する関数をf(x) = (x>>K)<<Kとすると、f(x) = x&〜(1<<(K−1))と表現することもできる(以下同様)。ここで〜はビット否定の演算、&は論理積の演算を示す。
残差予測部3092Aは、より簡易な別の構成として、座標の下位Kビットを無視する上記シフト演算による座標xR0、xR1の導出と、下位ビット無視前の座標xxと、下位Kビット無視後の座標xxxから、重み係数w0とw1を導出し、線形予測により、推定残差deltaLを以下の式より求めても良い。
xx = xP + x + (mvDisp[0] >> 2 )
xxx = (xx>>K)<<K
w0 = (1<<(K) - (xx - xxx)
w1 = xx - xxx
deltaL = ( w0 * clip3(xmin, xmax, refResSamplesL[ xR0, (y>>K)<<K ]) + w1 * clip3(xmin, xmax, refResSamplesL[xR1, (y>>K)<<K ] + (1<<(K−1))) )) >> K
残差予測部3092Aは、さらにより簡易な別の構成として、座標の下位Kビットを無視する上記シフト演算により座標xR0を導出し推定残差deltaLを以下の式より求めても良い。
xR0 = Clip3( 0, PicWidthInSamplesL- 1, (xP + x + (mvDisp[0] >> 2 ))>> K)<<K)
deltaL = clip3(xmin, xmax, refResSamplesL[ xR0, (y>>K)<<K ])
上記の構成によれば、残差の参照位置を制限して読み出すことにより、後述する残差格納部313において、参照する位置の残差のみを格納すれば良いため、残差を記録するためのメモリ量を低下させるという効果を奏する。
以下、残差予測部3092の別の変形例を説明する。変形例の残差予測部3092Bは、輝度成分については、変位ベクトルmvDispが小数精度を有する場合に、線形補間により画素を導出し、色差成分については線形補間を用いず、近傍の整数画素を用いる。ここで、変位ベクトルmvDispは水平成分mvDisp[0]だけではなく垂直成分mvDisp[1]を有する。
図67は、残差予測部3092Bの構成を示す図である。残差予測部3092Bは、残差取得部30921B、残差フィルタ部30922Bを備える。残差取得部30921Bは変位導出部309211B、輝度残差取得部309212B、色差残差取得部309213Bを備える。残差フィルタ部30922Bは、輝度残差補間部309221B、輝度残差加算部309222B、色差残差加算部309224Bを備える。
変位導出部309211Bは、対象ブロックに隣接するブロックのベクトルを参照し、変位ベクトルmvDispを導出し、輝度残差取得部309212B、色差残差取得部309213B、輝度残差補間部309221Bに出力する。
輝度残差補間部309221Bは、輝度成分の水平方向重み係数w0, w1、垂直方向重み係数w2, w3を、変位ベクトルmvDispの小数精度に基づいて以下の式で導出する。
w0 = mvDisp[0] & 3
w1 = 4 -w0
w2 = mvDisp[1] & 3
w3 = 4 -w2
変位ベクトルmvDispが1/4ペル精度の場合、ベクトルの小数成分は下位2ビットを取得する&3の演算(これは%4の演算に等しい)で導出され、ベクトルの整数成分は、下位2ビットを除去する>>2(これは/4の演算に等しい)の演算により導出される。
輝度残差補間部309221Bは、以下の式により水平方向および垂直方向の線形補間により、予測残差deltaを導出する。
delta =
(w2*(w0 * refResSample[xR0, yR0] + w1 * refResSample[xR0+1, yR0] + 2)>>2)+
w3*(w0 * refResSample[xR0, yR1] + w1 * refResSample[xR0+1, yR1] + 2)>>2)+2)>>2
refResSample[]は、残差格納部313に格納される残差であり、輝度残差取得部309212Bにより取得される。ここで、xR0, xR1, yR0, yR1は、参照先の座標を示し、変位ベクトルmvDispの整数成分に基づいて、以下の式で導出される。
xR0 = Clip3(0, PicWidthInSampleL-1, xP + x + (mvDisp[0]>>2))
xR1 = Clip3(0, PicWidthInSampleL-1, xR0 + 1)
yR0 = Clip3(0, PicHeightInSampleL-1, yP + y + (mvDisp[1]>>2))
yR1 = Clip3(0, PicHeightInSampleL-1, yR0 + 1)
輝度残差加算部309222Bは、残差予測前の予測画像predSampleLX
[]に、導出された予測残差deltaを加算し、残差予測後の予測画像predSampleLX´[]を取得する。
predSampleLX´[x, y] = predSampleLX[x, y] + delta
色差成分では、線形補間を用いず、色差残差取得部309213Bは、以下の式により、残差格納部313に格納される残差から直接、予測残差deltaCを導出する。
deltaC = refResSampleC[xRC0, yRC0]
ここで、xRC0, yRC0,は、以下の式で導出される座標である。
xRC0 = Clip3(0, PicWidthInSampleL/4-1, xP + x + ((mvDisp[0]+4)>>3))
yRC0 = Clip3(0, PicWidthInSampleL/4-1, yP + y + ((mvDisp[1]+4)>>3))
色差残差加算部309224Bは、残差予測前の予測画像predSampleLX[]に、導出された予測残差deltaCを加算し、残差予測後の予測画像predSampleLX´[]を取得する。
predSampleLX´[x, y] = predSampleLX[x, y] + deltaC
以上の構成の残差予測部3092Bによれば、予測残差の導出において、輝度成分のみ残差の線形補間を行い、色差成分では、残差の線形補間を行わないことにより、予測残差の導出に用いる処理量を削減する効果を奏する。また、線形補間を行わない場合には、補間のために必要とされた予備領域がなくなり、参照範囲が小さくなるため、残差の転送量を削減する効果を奏する。
なお、上記の説明では輝度成分の予測残差を求める際に、水平方向、垂直方向の線形補間を行っていたが、以下のように水平方向の線形補間だけを行う構成でも良い。この場合、変位ベクトルmvDispの水平方向の小数成分から水平方向重み係数w0, w1を導出する。
w0 = mvDisp[0] & 3
w1 = 4 -w0
続いて、以下の式により水平方向の線形補間により、予測残差deltaを導出する。
delta = (w0 * refResSample[xR0, yR0] + w1 * refResSample[xR0+1, yR0] + 2)>>2
ここで、xR0, xR1, yR0は、以下の式で導出される残差の座標である。
xR0 = Clip3(0, PicWidthInSampleL-1, xP + x + (mvDisp[0]>>2))
xR1 = Clip3(0, PicWidthInSampleL-1, xR0 + 1)
yR0 = Clip3(0, PicHeightInSampleL-1, yP + y + ((mvDisp[1]+2)>>2))
図68は、残差予測部3092Bの動作を説明するフローチャートである。
S4001 変位導出部309211Bにおいて変位ベクトルmvDispを導出する。
S4002 予測ブロック内の画素に対するループの開始。予測ブロックがnW×nHのブロックで有れば、nW×nH回だけループする。
S4003 予測ブロックが輝度成分であるか、色差成分であるかを判定し、輝度成分であれば、S4004に遷移する。色差成分であれば、S4005に遷移する。
S4004 輝度残差取得部309212Bにおいて、輝度の残差を複数個取得する。
S4005 輝度残差補間部309221Bにおいて、変位ベクトルmvDispの小数成分に基づいて複数個取得した残差を補間し予測残差を導出する。
S4006 色差残差取得部309213Bにおいて、色差の残差を1個取得し予測残差を導出する。
S4007 輝度残差加算部309222Bもしくは色差残差加算部309224Bにおいて、S4005もしくはS4006で導出した予測残差を予測画像に加算する。
S4008 予測ブロック内の画素に対するループの終了
以上の構成の残差予測部3092Bによれば、予測残差の導出において、輝度成分において、水平成分に対して残差の線形補間を行い、垂直成分に対して残差の線形補間を行わない。予測残差の導出に用いる処理量を削減する効果を奏する。また、垂直方向の線形補間に必要とされた予備領域がなくなり参照範囲が小さくなるため、残差の転送量を削減する効果を奏する。
以下、残差予測部3092の別の変形例を説明する。変形例の残差予測部3092Cは、輝度成分および色差成分に対して残差予測を行う際に、輝度成分と色差成分に応じて異なる制限を用いて(クリップ)を用いて、残差成分を参照することを特徴とする。
図69は、残差予測部3092Cの構成を示す図である。残差予測部3092Cは、残差取得部30921C、残差フィルタ部30922Cを備える。残差取得部30921Cは変位導出部309211C、輝度残差取得部309212C、色差残差取得部309213Cを備える。残差フィルタ部30922Cは、輝度残差補間部309221C、輝度残差加算部309222C、色差残差加算部309224Cを備える。
変位導出部309211Cは、対象ブロックに隣接するブロックのベクトルを参照し、変位ベクトルmvDispを導出し、輝度残差取得部309212C、色差残差取得部309213C、輝度残差補間部309221Cに出力する。
輝度残差補間部309221Cは、輝度成分の水平方向重み係数w0, w1、垂直方向重み係数w2, w3を、変位ベクトルmvDispの小数精度に基づいて以下の式で導出する。
w0 = mvDisp[0] & 3
w1 = 4 -w0
w2 = mvDisp[1] & 3
w3 = 4 -w2
輝度残差補間部309221Cは、以下の式により水平方向および垂直方向の線形補間により、予測残差deltaを導出する。
delta =
(w2*(w0 * refResSampleX[xR0, yR0] + w1 * refResSampleX[xR0+1, yR0] + 2)>>2)+
w3*(w0 * refResSampleX[xR0, yR1] + w1 * refResSampleX[xR0+1, yR1] + 2)>>2)+2)>>2
refResSample[]は、輝度残差取得部309212Cにより取得される残差である。ここで、xR0, xR1, yR0, yR1は、変位ベクトルmvDispの整数成分に基づいて導出される参照先となる残差の座標である。
輝度残差取得部309212Cは、残差格納部313から残差を参照する際に、以下の式により残差の値域の制限(クリップ)を行う。
refResSampleX[x, y] = Clip3(lmin, lmax, refResSample[x, y])
ここで、xmin, xmaxは以下の式を用いる。
lmin = -(1<<(bitDepthY -KY))
lmax = 1<<(bitDepthY -KY)
ここでKYは定数であり1,2,3,4のいずれかであるとする。
色差成分では、色差残差取得部309213Cは、以下の式により予測残差deltaCを導出する。
deltaC = refResSampleCX[xRC0, yRC0]
ここで、xRC0, xRC1は既に説明した式により導出される残差の座標である。refResSampleXCは、以下の式によりクリップされた後の残差である。
色差残差取得部309213Cは、残差格納部313から残差を参照する際に、輝度とは異なるクリップ範囲で得られた残差により、以下の式により予測残差deltaCを導出する。
refResSampleXC [x, y] = Clip3(cmin, cmax, refResSampleC[x, y])
ここで、cmin, cmaxは以下の式を用いる。
cmin = -(1<<(bitDepthC -KC))
cmax = 1<<(bitDepthC -KC)
ここで、KCは、KC>KYを満たす整数である。
図70は、残差予測部3092Cの動作を説明するフローチャートである。
S4101 変位導出部309211Cにおいて変位ベクトルmvDispを導出する。
S4102 予測ブロック内の画素に対するループの開始。予測ブロックがnW×nHのブロックで有れば、nW×nH回だけループする。
S4103 予測ブロックが輝度成分であるか、色差成分であるかを判定し、輝度成分であれば、S4104に遷移する。色差成分であれば、S4105に遷移する。
S4104 輝度残差取得部309212Cにおいて、輝度残差のクリップ範囲を導出する。
S4105 輝度残差取得部309212Cにおいて、導出したクリップ範囲に制限して、残差格納部313から輝度の残差を参照する。参照した残差から予測残差を導出する。
S4106 色差残差取得部309212Cにおいて、色差残差のクリップ範囲を導出する。
S4107 色差残差取得部309212Cにおいて、導出したクリップ範囲に制限して、残差格納部313から色差の残差を参照する。参照した残差から予測残差を導出する。
S4108 輝度残差加算部309222Cもしくは色差残差加算部309224Cにおいて、S4105もしくはS4107で導出した予測残差を予測画像に加算する。
S4109 予測ブロック内の画素に対するループの終了
以上の構成の残差予測部3092Cによれば、予測残差の導出において、色差成分の残差に必要なビット数を削減することができるため、色差成分の残差を格納するメモリサイズを低減する効果を奏する。
さらに特にKC=5とする場合、ビット深度が8ビットである色差成分の復号において、残差を4ビットで格納することができる。この場合、8ビットの範囲に2つの色差をパックして格納することが可能であるため、8ビット単位でアクセスされる一般のRAMに残差を格納する場合において、メモリサイズを低減する効果を奏する。
以下、残差予測部3092のさらに別の変形例を説明する。変形例の残差予測部3092Dは、輝度成分においてのみ残差予測を行い、色差成分については残差予測を行わないことを特徴とする。
図71は、残差予測部3092Dの構成を示す図である。残差予測部3092Dは、残差取得部30921D、残差フィルタ部30922Dを備える。残差取得部30921Dは変位導出部309211D、輝度残差取得部309212Dを備える。残差フィルタ部30922Dは、輝度残差補間部309221D、輝度残差加算部309222Dを備える。
変位導出部309211Dは、対象ブロックに隣接するブロックのベクトルを参照し、変位ベクトルmvDispを導出し、輝度残差取得部309212D、輝度残差補間部309221Dに出力する。
輝度残差補間部309221Dは、輝度成分の水平方向重み係数w0, w1、垂直方向重み係数w2, w3を、変位ベクトルmvDispの小数精度に基づいて以下の式で導出する。
w0 = mvDisp[0] & 3
w1 = 4 -w0
w2 = mvDisp[1] & 3
w3 = 4 -w2
輝度残差補間部309221Dは、以下の式により水平方向および垂直方向の線形補間により、予測残差deltaを導出する。
delta =
(w2*(w0 * refResSampleX[xR0, yR0] + w1 * refResSampleX[xR0+1, yR0] + 2)>>2)+
w3*(w0 * refResSampleX[xR0, yR1] + w1 * refResSampleX[xR0+1, yR1] + 2)>>2)+2)>>2
refResSample[]は、輝度残差取得部309212Dにより取得される残差である。ここで、xR0, xR1, yR0, yR1は、変位ベクトルmvDispの整数成分に基づいて導出される残差の座標である。
輝度残差取得部309212Dは、残差格納部313から残差を参照する際に、以下の式により残差の値域の制限(クリップ)を行う。
refResSampleX[x, y] = Clip3(lmin, lmax, refResSample[x, y])
ここで、xmin, xmaxは以下の式を用いる。
lmin = -(1<<(bitDepthY -KY))
lmax = 1<<(bitDepthY -KY)
ここでKYは定数であり1,2,3,4のいずれかであるとする。
輝度残差加算部309222Dは、残差予測前の予測画像predSampleLX[]に、予測残差deltaを加算し、残差予測後の予測画像predSampleLX´[]を取得する。
predSampleLX´[x, y] = predSampleLX[x, y] + delta
色差成分では、輝度とは異なり、残差予測を行わない。
図72は、残差予測部3092Dの動作を説明するフローチャートである。
S4201 変位導出部309211Dにおいて変位ベクトルmvDispを導出する。
S4202 予測ブロックが輝度成分であるか、色差成分であるかを判定し、輝度成分であれば、S4203に遷移し残差予測を行う。色差成分であれば、残差予測を行わずS4207に遷移。
S4203 予測ブロック内の画素に対するループの開始。予測ブロックがnW×nHのブロックで有れば、nW×nH回だけループする。
S4204 残差格納部313から輝度の残差を参照し予測残差を導出する。
S4205 輝度残差加算部309222Cにおいて、S4103で導出した予測残差を予測画像に加算する。
S4206 予測ブロック内の画素に対するループの終了
S4207 残差予測部3092Dの動作を終了
以上の構成の残差予測部3092Dによれば、予測残差の導出において、色差成分の残差を格納するメモリサイズを省略する効果を奏する。
(照度補償)
照度補償部3093は、照度補償フラグic_enable_flagが1の場合に、入力された動き変位補償画像predSamplesLXに対して、照度補償を行う。照度補償フラグic_enable_flagが0の場合には、入力された動き変位補償画像predSamplesLXをそのまま出力する。照度補償部3093に入力される動き変位補償画像predSamplesLXは、残差予測がオフの場合には、動き変位補償部3091の出力画像であり、残差予測がオンの場合には、残差予測部3092の出力画像である。照度補償は、予測画像生成の対象となる対象ブロックに隣接する隣接領域の動き変位画像の画素値と、隣接領域の復号画像の変化が、対象ブロック内の画素値と、対象ブロックの原画との変化に類似しているとの仮定に基づいて行われる。
照度補償部3093は、図示しない照度パラメータ推定部30931と、照度補償フィルタ部30932から構成される。
照度パラメータ推定部30931は、対象ブロック(対象予測ユニット)の画素を、参照ブロックの画素から推定するための推定パラメータを求める。図13は、照度補償を説明するための図である。図13では、対象ブロックの周囲の画素Lと、対象ブロックから変位ベクトルだけずれた位置にある、参照レイヤ画像上の参照ブロックの周囲の画素Cの位置を示している。
照度パラメータ推定部30931は、上記対象ブロックの周囲の画素L(L0〜LN−1)と上記参照ブロックの周囲の画素C(C0〜CN−1)から、推定パラメータ(照度変化パラメータ)aとbを最小2乗法を用いて以下の式より求める。
LL = ΣLi × Li
LC = ΣLi × Ci
L = ΣLi
C = ΣCi
a = (N*LC - L*C) / (N*CC - C*C)
b = (LL*C - LC*L) / (N*CC - C*C)
ここでΣはiに対して和をとる関数。iは0〜N−1までの変数である。
以上は、推定パラメータが小数の場合であるため上記式も小数演算で行う必要がある。なお、装置としては、推定パラメータおよびパラメータの導出は整数であることが望ましい。
以下、推定パラメータが整数の場合を説明する。照度補償部3093は、以下の式により推定パラメータ(照度変化パラメータ)icaidx、ickidx、icbidxを導出する。
k3 = Max( 0, bitDepth + Log2( nCbW >> nSidx ) - 14 )
k2 = Log2( (2*(nCbW >> nSidx)) >> k3 )
a1 = ( LC << k2 ) - L*C
a2 = ( LL << k2 ) - L*L
k1 = Max( 0, Log2( abs( a2 ) ) - 5 ) - Max( 0, Log2( abs( a1 ) ) - 14 ) + 2
a1s = a1 >> Max(0, Log2( abs( a1 ) ) - 14 ) a2s = abs( a2 >> Max(0, Log2( abs( a2 ) ) - 5 ) )
a3 = a2s < 1 ? 0 : Clip3( -215, 215-1, (a1s*icDivCoeff + ( 1 << ( k1 - 1 ) ) ) >> k1 )
icaidx = a3 >> Max( 0, Log2( abs( a3 ) ) -6 )
ickidx = 13 - Max( 0, Log2( abs(icaidx)) - 6)
icbidx = ( L - ( ( icaidx*C ) >> k1 ) + ( 1 << ( k2 - 1 ) ) ) >> k2
ここで、bitDepthは、画素のビット幅(通常8〜12)、nCbWは、対象ブロックの幅、Max(x,y)はxとyの最大値を求める関数、Log2(x)はxの2の対数を求める関数、abs(x)はxの絶対値を求める関数である。また、icDivCoeffは、a2sを入力として所定の定数を導出する図42に示すテーブルである。
照度補償部3093の備える照度補償フィルタ30932は、照度パラメータ推定部30931が導出した推定パラメータを用いて、対象画素から、照度変化を補償した画素を導出する。例えば、推定パラメータが小数a、bの場合には次の式により求める。
predSamples[ x ][ y ] = a * predSamples[ x ][y ] + b
ここで、predSamplesは対象ブロック中の座標(x, y)の画素である。
また、推定パラメータが上述の整数icaidx、ickidx、icbidxの場合には次の式により求める。
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( ( ( (predSamplesL0[ x ][ y ] + offset1 ) >> shift1) * ica0) >> ick0) + icb0 )
以下、照度補償部3093の変形例である照度補償部3093Bを説明する。
図73は、照度補償部3093Bの構成を示すブロック図である。照度補償部3093は、照度補償部3093Bは、照度パラメータ推定部30931Bと、照度補償フィルタ部30932Bから構成される。照度パラメータ推定部30931Bは、積算シフト値導出部309311B、積算値導出部309312B、加算値導出部309313B、第1パラメータ導出部309314B、第2パラメータ導出部309315B、パラメータa導出部309316B、パラメータb導出部309317Bから構成される。
照度パラメータ推定部30931Bは、図13に示す参照レイヤ画像上の参照ブロックの周囲の画素Cを参照画像の画素値x[]、対象ブロックの周囲の画素Lを復号画像の画素値y[]とし、これら参照画像の画素値x[]と復号画像の画素値y[]に基づいて、復号画像の画素値y[]を参照画像の画素値xから線形予測する場合のパラメータであるパラメータa、パラメータbを導出する。
積算シフト値導出部309311Bは、積算シフト値precShiftを、以下の式(B−1)のように、画素のビット深度bitDepthが所定の定数(ここでは12)を超える場合には、その超える値だけの積算シフト値precShiftを導出する。超えない場合には積算シフト値precShiftは0とする。
precShift = Max(0, bitDepth - 12) 式(B−1)
導出された積算シフト値precShiftは、積算値導出部309312B、第1パラメータ導出部309314B、第2パラメータ導出部309315Bに出力される。
加算値導出部309313Bは、復号画像の画素値yの和Yと参照画像の画素値xの和Xを、以下の式(B−2)式(B−3)により導出する。
積算値導出部309312Bは復号画像の画素値yと参照画像の画素値xの積の和XYと、参照画像の画素値の2乗の和XXを、以下の式(B−4)〜(B−5)により導出する。この時、積算値導出部309312Bは、復号画像の画素値yと参照画像の画素値xの積の和XYの導出時と、参照画像の画素値xの2乗の和XXの導出時には、積算シフト値precShiftだけ右シフトしてから加算する。以下の和の前にX、Y、XY、XXは0に初期化しておく。
X = Σx[i] 式(B−2)
Y = Σy[i] 式(B−3)
XX += Σ(x[i] * x[i])>>precShift 式(B−4)
XY += Σ(y[i] * y[i])>>precShift 式(B−5)
ここで、Σは、参照領域に対する和であり、参照領域の画素を特定するインデックスiに対する和を導出する。y[i]は、復号画像のインデックスiにおける画素値。x[i]は、参照画像のインデックスiにおける画素値。カウントシフト値iCountShiftは、参照領域のサイズ(画素数)の2の対数である。
iCountShift = log2 (参照領域の画素数) 式(B−6)
なお、従来は、以下の演算により積算値XX、XYを導出していた。
XX += Σ(x[i] * x[i]) 式(B−4´)
XY += Σ(x[i] * y[i]) 式(B−5´)
この場合、演算に必要なビット数は、画素のビット深度bitDepthの2倍に、参照領域のサイズの2の対数(カウントシフトiCountShiftの最大値)となる。ブロックサイズが最大値が64である場合、参照領域のサイズの最大値は128である。128の2の対数よりカウントシフトiCountShiftの最大値は7になる。従って必要なビット数は、bitDepth * 2 + 7になる。ここで、このビット数が32ビットで計算できる範囲を考慮すると、以下の式が得られる。
bitDepth * 2 + 7 <= 32
この式を解くとbitDepth <= 12が得られる。すなわち、bitDepthが12以下であれば32ビットを超えない。逆にbitDepthが12を超えると32ビットの範囲を超える。式(B−1)は、この結果から得られたものであり、bitDepthが12を超える場合には、超えた分に相当するbitDepth - 12を積算シフト値precShiftとして導出する。さらに、式(B−4)、式(B−5)では予め積算シフト値precShiftだけシフトしてから加算することにより、32ビットの範囲を超えることを防ぐ効果を奏する。
第1パラメータ導出部309314Bは、復号画像の画素値yと参照画像の画素値xの積の和XYと、復号画像の画素値の和Yと参照画像の画素値の和Xの積の差から第1パラメータa1を以下の式により導出する。
a1 = ( XY << iCountShift ) - (Y * X) >> precShift; 式(B−7)
式(B−7)に示すように、XYは、カウントシフト値iCountShiftだけ左シフト、YとXの積は積算シフト値precShiftだけ右シフトしてから差を算出する。
第2パラメータ導出部309315Bは、参照画像の画素値の2乗の和XXと、参照画像の画素値の和Xの2乗の差から第2パラメータa2を以下の式により導出する。
a2 = ( XX << iCountShift ) - (X * X) >> precShift; 式(B−8)
式(B−8)に示すように、XXは、カウントシフト値iCountShiftだけ左シフト、XとXの積は積算シフト値precShiftだけ右シフトしてから差を算出する。
第1パラメータ導出部309314Bと第2パラメータ導出部309315Bはさらには、カウントシフト値iCountShiftとビット深度bitDepthの2倍の和が所定の値(ここでは27)以上の場合には、所定の固定パラメータシフト値(ここでは4)だけパラメータa1、パラメータa2を右シフトする。すなわち、以下のステップを実行する。
if (iCountShift + bitDepth * 2 >= 27) 式(B−9)
{
a1 >>= 4 式(B−10)
a2 >>= 4 式(B−11)
}
導出された第1パラメータa1と第2パラメータa2は、パラメータa導出部309316Bに出力される。
図74は、パラメータa導出部309316Bの構成を示すブロック図である。パラメータa導出部309316Bは、第1パラメータクリップ部3093161B、第1パラメータシフト部3093162B、第2パラメータシフト部3093163B、テーブルベースパラメータa導出部3093164Bから構成される。
第1パラメータクリップ部3093161Bは、第1パラメータa1を第2パラメータa2の大きさに応じて制限する。例えば以下の式のように、a1を0以上、a2の2倍以下にクリップする。
a1 = Clip3(0, 2*a2, a1) 式(B−12)
第1パラメータクリップ部3093161Bにより、a1 / a2の値は、0から2の間にクリップされる。従って、パラメータaの値であるa1 / a2 << iShiftの値も、0から2<<iShiftにクリップされる。すなわち、iShift=6の場合、パラメータaは0〜128となり、8ビット非負整数の範囲に入る。
第1パラメータシフト部3093162Bは、第1パラメータa1の大きさに応じて、以下の式により第1正規化シフト値iScaleShiftA1を導出する。導出された第1正規化シフト値iScaleShiftA1は、テーブルベースパラメータa導出部3093164Bに出力される。
iScaleShiftA1 = Max(0, GetMSB( abs( a1 ) ) - 15) 式(B−13)
第2パラメータシフト部3093163Bは、第2パラメータa2の大きさに応じて、以下の式により第2正規化シフト値iScaleShiftA2を導出する。導出された第2正規化シフト値iScaleShiftA2は、テーブルベースパラメータa導出部3093164Bに出力される。
iScaleShiftA2 = Max(0, GetMSB( abs( a2 ) ) - 6) 式(B−14)
第1パラメータシフト部3093162B、第2パラメータシフト部3093163Bは、第1パラメータa1を第1正規化シフト値iScaleShiftA1、第2パラメータa2を第2正規化シフト値iScaleShiftA2により右シフトし、正規化第1パラメータa1sと正規化第2パラメータa2sを導出する。
a1s = a1 >> iScaleShiftA1 式(B−15)
a2s = a2 >> iScaleShiftA2 式(B−16)
テーブルベースパラメータa導出部3093164Bは、第1正規化シフト値iScaleShiftA1と第2正規化シフト値iScaleShiftA2の差に基づいて、以下の式によりパラメータaシフト値iScaleShiftAを導出する。
ScaleShiftA = iScaleShiftA2 - iScaleShiftA1 + 15 - iShift 式(B−18)
テーブルベースパラメータa導出部3093164Bは、正規化第2パラメータa2sに応じて定まる逆数テーブル値invTableを参照し、正規化第1パラメータa1sとの積をとりテーブルシフト値(ScaleShiftA)で右シフトすることにより、以下の式によりパラメータaを導出する。
a = (a1s * invTable[a2s]) >> (ScaleShiftA) 式(B−19)
なお、テーブルシフト値iScaleShiftAが負の場合には、テーブルシフト値の絶対値だけ左シフトすることにより、以下の式で導出する。
a = (a1s * invTable[a2s]) << (-ScaleShiftA) 式(B−19´)
図84は、本実施形態で用いる逆数テーブル値invTable[]である。既に説明したように図84の逆数invTable[x]は、インデックスxが0の場合に0となり、インデックスがxが0以外の場合には、所定の定数(ここでは2の15乗)Mをxで割って整数化した値から導出される。
パラメータaの値は、第1パラメータa1と第2パラメータa2の比(a1/a2をiShiftだけ左シフトした値に相当する)。
なお、第1パラメータクリップ部3093161Bの代わりに、パラメータaクリップ部を設け、以下の演算によりパラメータaの範囲を、8ビット非負変数となる、0以上、255以下にクリップしても良い。
a = Clip3(0, 255, a) 式(B−12´)
なお、クリップの最大値は255以下、クリップの最小値は0以上であれば8ビット非負変数となるため、他の値でも良い。例えば、
a = Clip3(64, 128, a) 式(B−12´´)
や、
a = Clip3(0, 128, a) 式(B−12´´´)
などでも良い。但し、クリップの最大値は、1<<iShift以上とする。
導出されたパラメータaは、パラメータb導出部309317Bと照度補償フィルタ部30932Bに出力される。
パラメータb導出部309317Bは、復号画像の画素値の和Yから、参照画像の画素値の和Xにパラメータaをかけて固定シフト値iShiftだけ右シフトした値を引いた値を、参照領域の画素数で割ることにより、以下の式によりパラメータbを導出する。
b = ( Y - ( ( a * X ) >> iShift ) + ( 1 << ( iCountShift - 1 ) ) ) >> iCountShift 式(B−20)
なお、iCountShiftの右シフトは、参照領域の画素数で割ることに相当する。
照度補償フィルタ部30932Bは、照度パラメータ推定部30931Bが導出した推定パラメータを用いて、照度補償前の予測画像predSamples []から、照度補償後の予測画像predSamples´[]を導出する。例えば、パラメータbを式(B−20)により導出する場合には以下の式を用いる。
predSamples´[x][y] = ((a * predSamples[x][y]) >> iShift)+b 式(B−21)
なお、パラメータb導出部309317Bの代わりに、パラメータb導出部309317Bの別の構成パラメータb導出部309317B´を用いても良い。この場合、復号画像の画素値の和Yを固定シフト値iShiftだけ左シフトした値から、参照画像の画素値の和Xにパラメータaをかけた値を引いた値を、参照画素の数で割ることにより、以下の式によりパラメータbを導出しても良い。
b = ( (Y << iShift) - ( ( a * X ) ) + ( 1 << ( iCountShift - 1 ) ) ) >> iCountShift 式(B−20´)
なお、画素のビット深度が8ビットの場合、画素値xの範囲は8ビット非負変数、パラメータaの範囲も8ビット非負変数の範囲となる、従ってソフトウェアでは最小のビット数である8ビット非負変数(C言語ではunsigned char)同士の演算で演算可能である。8ビット非負変数は、例えば128ビットレジスタを用いるSIMD演算において、16個同時にレジスタに格納し演算することができる。すなわち、16画素同時に処理することができるため、高速化の効果を奏する。
パラメータb導出部309317Bの代わりに、パラメータb導出部309317Bの別の構成であるパラメータb導出部309317B´を用いる場合には、照度補償フィルタ部30932Bの代わりに、照度補償フィルタ部30932Bの別の構成である照度補償フィルタ部30932B´を用いる。照度補償フィルタ部30932Bの別の構成である照度補償フィルタ部30932B´は、照度補償前の予測画像predSamples []から、以下の式により、照度補償後の予測画像predSamples´[]を導出する。
predSamples´[x][y] = ((a * predSamples[x][y] + b) >> iShift) 式(B−21´)
以下、上記の構成の特徴をまとめる。
上記照度パラメータ推定部30931Bは、図84に示すように、インデックスxが0の場合に0となるように逆数テーブルinvTable[x]を定義し、式(B−19)、式(B−19´)に示すように、このように定義した、逆数テーブルinvTable[x]を、参照画像の画素値の2乗を上記積算シフト値だけ右シフトした値の和XXと、参照画像の画素値の和Xの2乗を上記積算シフト値だけ右シフトした値から導出される第2パラメータ(正規化第2パラメータ)で引いた値に基づいてパラメータaを導出することにより、正規化第2パラメータ(正規化第2パラメータ)が0であるか否かに応じて、演算方法を変更しなくても適当なパラメータaを得ることができるため、処理量を削減する効果が得られる。なお、インデックスxが0以外の場合には、逆数テーブルinvTable[x]は、所定の値をxで除算した値を整数化した値を用いることが適当である。
上記照度パラメータ推定部30931Bは、(B−1)、(B−4)、(B−5)、(B−7)、(B−8)に示すように、画素ビット深度に応じて積算シフト値precShiftを導出し、復号画像の画素値と参照画像の画素値の積を上記積算シフト値precShiftだけ右シフトした値の和XYと、参照画像の画素値の和Xと復号画像の画素値の和Yの積を上記積算シフト値だけ右シフトした値から導出される第1パラメータa1と、参照画像の画素値の2乗を上記積算シフト値だけ右シフトした値の和XXと、参照画像の画素値の和Xの2乗を上記積算シフト値だけ右シフトした値から導出される第2パラメータa2から、パラメータaを導出する。照度パラメータ推定部30931Bでは、画素の積の和であるXYおよびXXを導出する場合において、画素の積に関する和をとる前に、画素ビット深度に応じて定まる積算シフト値で、画素の積を右シフトすることにより、所定の範囲、例えば32ビットの範囲で第1パラメータと第2パラメータを導出することが可能であるため、処理が容易になる効果を奏する。
上記照度パラメータ推定部30931Bは、(B−9)、(B−10)、(B−11)に示すように、第1パラメータ導出部309314Bと第2パラメータ導出部309315Bにおいて、画素ビット深度の2倍と、画素数の2の対数に対応する数との和が、所定の定数Nより大きい場合に、第1パラメータa1と第2パラメータa2を所定の固定パラメータシフト値で右シフトすることで、正規化する。照度パラメータ推定部30931Bでは、第1パラメータa1と第2パラメータa2をビット数N以下で表現するため、例えば32ビット精度で演算する場合に、2の32-N乗未満の数をかけた場合にも、32ビットの範囲を超えないことを保障することができる。また、固定シフト値の右シフトであるのでシフト演算が容易になるという効果を奏する。
上記の照度補償フィルタ部30932Bは、式(B−21)、式(B−21´)に示すように、固定値である所定の固定シフト定数iShiftを用いて右シフトするため、変数を用いて右シフトする場合に比べて、SIMD演算などによる処理が容易になる効果を奏する。
上記の照度補償フィルタ部30932B´は、式(B−21´)に示すように、傾き成分であるパラメータaと画素値predSamples[x][y]との積に対する、オフセット成分であるパラメータbの加算を固定シフト定数iShiftによる右シフトの前に行うことにより、オフセット成分の加算を右シフトの後に行うよりも高い精度で演算でき性能が向上する効果を奏する。この場合、パラメータb導出部309317B´において、式(B−20´)に示すように、参照画像の画素値の和Yを固定シフト値iShiftだけ左シフトした値から、パラメータaと復号画像の画素値の和Xの積を減じた値に基づいて、パラメータbを導出することが好適である。
以下、照度補償部3093の変形例である照度補償部3093Cを説明する。変形例の照度補償部3093Cは、照度パラメータ推定部30931Cと、照度補償フィルタ部30932Bから構成される。照度補償フィルタ部30932Bは既に説明したので説明を省略する。照度パラメータ推定部30931Cは、積算シフト値導出部309311B、積算値導出部309312B、加算値導出部309313B、第1パラメータ導出部309314C、第2パラメータ導出部309315B、パラメータa導出部309316B、パラメータb導出部309317Bから構成される。第1パラメータ導出部309314C以外の構成要素は既に説明した通りであるので説明を省略する。
図75は、パラメータa導出部309316Cの構成を示すブロック図である。パラメータa導出部309316Cは、第1パラメータクリップ部3093161C、共通シフト部3093162C、テーブルベースパラメータa導出部3093164Cから構成される。
第1パラメータクリップ部3093161Cは、第1パラメータa1を第2パラメータa2の大きさに応じて制限する。例えば以下の式のように、a1をa2以上、a2の18/16倍以下にクリップする。
a1 = Clip3(a2, a2*18/16, a1) 式(B−12)
共通シフト部3093162Cは、第2パラメータa2の大きさに応じて、以下の式により共通正規化シフト値iScaleShiftA2を導出する。
iScaleShiftA2 = Max(0, GetMSB( abs( a2 ) ) - 6) 式(B−14´)
共通シフト部3093162Cは、第1パラメータa1と第2パラメータa2を同じ、共通正規化シフト値iScaleShiftA2により右シフトし、正規化第1パラメータa1sと正規化第2パラメータa2sを導出する。
a1s = a1 >> iScaleShiftA2 式(B−15´)
a2s = a2 >> iScaleShiftA2 式(B−16)
ここで、第1パラメータa1の正規化においては以下の式のように予め固定値であるa1シフト値ShiftA1(ここでは4)だけ左シフトしても良い。
a1s = (a1<< ShiftA1) >> iScaleShiftA2 式(B−14´)
テーブルベースパラメータa導出部3093164Cは、正規化第2パラメータa2sに応じて定まる逆数テーブル値invTableを参照し、正規化第1パラメータa1sとの積をとりテーブルシフト値(ここでは15-iShift)で右シフトすることにより、以下の式によりパラメータaを導出する。
a = (a1s * invTable[a2s]) >> (15-iShift) 式(B−19´´)
ここでiShiftは固定シフト値(ここでは7)とする。aの値は、第1パラメータa1と第2パラメータa2の比(a1/a2をiShiftだけ左シフトした値に相当する)。
なお、式(B−14´)のように予め固定値ShiftA1だけ第1パラメータa1を左シフトしている場合には、式(B−19´´)の代わりに以下の式を用いる。
a = (a1s * invTable[a2s]) >> (15+ShiftA1-iShift) 式(B−19´´)
以下、上記の構成の特徴をまとめる。
上記照度パラメータ推定部30931Cの構成では、(B−14´)、(B−15´)、(B−19´´)に示すように、第2パラメータa2の大きさに応じて定まる共通正規化シフト値iScaleShiftA2を導出し、第1パラメータa1と第2パラメータa2を共通正規化シフト値iScaleShiftA2で右シフトすることにより正規化第1パラメータa1sと正規化第2パラメータa2sを導出する。また、正規化第1パラメータa1sもしくは正規化第1パラメータa1sに所定の定数をかけた値と、正規化第2パラメータa2sからテーブルinvTable[]を参照することで定まるテーブル値invTable[a2s]との積を固定のシフト値だけ右シフトすることにより、パラメータaを導出することを特徴とする。上記の構成では、共通シフト部3093162Cにおいて、第1パラメータ、第2パラメータの両者を同じ正規化シフト値を用いて、値を正規化することため、第1パラメータシフト部3093162B、第2パラメータシフト部3093163Bで説明した第1パラメータと第2パラメータで異なる正規化パラメータを用いる場合に比べ処理が容易になるという効果を奏する。また、第1パラメータと第2パラメータで同じ正規化パラメータを用いることにより、テーブル値をかけた後のテーブルシフト値を固定値とすることができ、テーブルベースパラメータa導出部3093164Cでパラメータaを導出する際の右シフト処理が容易になるという効果を奏する。
以下、照度補償部3093の変形例である照度補償部3093Dを説明する。変形例の照度補償部3093Dは、照度パラメータ推定部30931Dと、照度補償フィルタ部30932Bから構成される。照度補償フィルタ部30932Bは既に説明したので説明を省略する。
照度パラメータ推定部30931Dは、積算シフト値導出部309311B、積算値導出部309312B、加算値導出部309313B、第1パラメータ導出部309314D、第2パラメータ導出部309315B、パラメータa導出部309316B、パラメータb導出部309317Bから構成される。第1パラメータ導出部309314D以外の構成要素は既に説明した通りであるので説明を省略する。
図76は、パラメータa導出部309316Dの構成を示すブロック図である。パラメータa導出部309316Dはパラメータ比較部3093164Dを含んで構成される。パラメータ比較部3093164Dは、第1パラメータa1に所定の値を乗じた値と第2パラメータa2に所定の値を乗じた値を乗じた値の比較によりパラメータaの値を導出する。例えば、以下の式により、
a = (16*a1 >= 17*a2) ? 17 : 16; 式(B−19´´´)
なお、上記で(x) ? y : zは、式xが真の場合には y、偽の場合にはzを導出する関数である。
なお、パラメータ比較部3093164Dは、第1パラメータa1に所定の値を乗じた値と第2パラメータa2に所定の値を乗じた値を乗じた値の比較は複数回行っても良い。例えば、以下の式でパラメータaを導出しても良い。
a = (16*a1 >= 18*a2) ? 18 : (16*a1 >= 17*a2) ? 17 : 16 式(B−19´´´)
上記照度パラメータ推定部30931Dの構成では、復号画像の画素値と参照画像の画素値の積の和XYと、復号画像の画素値の和Yと参照画像の画素値の和Xの積から導出される第1パラメータa1から導出される値と、参照画像の画素値の2乗の和XXと、参照画像の画素値の和Xの2乗から導出される第2パラメータa2から導出される値との比較により、パラメータaを導出する。パラメータa導出部309316Dでは、第1パラメータによる第2パラメータの商に相当するパラメータaを導出する際に、テーブルベースパラメータa導出部3093164B、テーブルベースパラメータa導出部3093164Cで説明した式(B−19)、式(B−19´)、式(B−19´´)にあるような第2パラメータの逆数をテーブルinvTable[]を用いて導出する必要が無いため処理が容易になる効果を奏する。また、第2パラメータa2の逆数を所定のサイズのテーブルを用いて導出するためには、通常は、第2パラメータシフト部3093163B、共通シフト部3093162Cで説明したように、式(B−16)に示すような第2パラメータを所定の範囲に抑えるための正規化が必要になるが、上記比較による方法では正規化処理が不要となる効果を奏する。また、第1パラメータと第2パラメータの逆数の積が所定の値を超えないためには、通常は、第1パラメータシフト部3093162B、共通シフト部3093162Cで説明したように、式(B−15)、式(B−15´)に示すような第1パラメータの正規化処理も必要であるが、上記比較による方法では不要になる効果を奏する。
(照度補償部3093E)
以下、照度補償部3093の変形例である照度補償部3093Eを説明する。
図77は、照度補償部3093Eの構成を示すブロック図である。照度補償部3093は、照度パラメータ推定部30931Eと、照度補償フィルタ部30932Bから構成される。照度パラメータ推定部30931Eは、積算シフト値導出部309311B、積算値導出部309312B、加算値導出部309313B、第1パラメータ導出部309314B、第2パラメータ導出部309315B、パラメータa導出部309316B、パラメータb導出部309317B、正則化項加算部309318Eから構成される。
正則化項加算部309318E以外の構成要素は既に説明した通りであるので説明を省略する。パラメータa導出部309316Bの代わりに、パラメータa導出部309316C、パラメータa導出部309316Dを用いても良い。なお、パラメータa、パラメータbの導出方法は、上記説明に限定されない。
図78は、正則化項加算部309318Eの構成を示すブロック図である。正則化項加算部309318Eは、正則化項導出部3093180E、第1パラメータ正則化項加算部3093181E、第2パラメータ正則化項加算部3093182Eから構成される。
正則化項導出部3093180Eは、正則化項acostを導出する。
acost = XX >> ashift 式(E−1)
なお、ashiftは例えば発明者らの実験では4〜8の固定値が好適であることが確認されている。
第1パラメータ正則化項加算部3093181Eは、第1パラメータを導出に用いるパラメータ(例えばXY)に正則化項を加算する。
XY = XY + acost 式(E−2)
なお、この加算は、
第2パラメータ正則化項加算部3093182Eは、第2パラメータを導出に用いるパラメータ(例えばXX)に正則化項を加算する。
XX = XX + acost 式(E−3)
なお、正則化項の加算は、第1パラメータ導出部309314Bおよび、第2パラメータ導出部309315Bで行っても良い。この場合、第1パラメータ、第2パラメータは、式(B−7)式(B−8)の代わりに以下の式により導出される。
a1 = ( (XY + acost) << iCountShift ) - (Y * X) >> precShift; 式(E−2´)
a2 = ( (XX + acost) << iCountShift ) - (X * X) >> precShift; 式(E−3´)
上記照度パラメータ推定部30931Eの構成では、復号画像の画素値yと参照画像の画素値xの積の和XYと、復号画像の画素値の和Yと参照画像の画素値の和Xの積の差から導出される第1パラメータa1を導出する際に、正則化項acostを加算し、さらに、参照画像の画素値の2乗の和XXと、参照画像の画素値の和Xの2乗の差から導出される第2パラメータa2を導出する際に同じ正則化項acostを加算する。正則化項が加算された第1パラメータa1と第2パラメータa2からパラメータaを導出する。これにより、線形予測の傾き成分に相当するパラメータaが実質的に1に近くなる(実際には固定シフト値iShiftを用いて、1<<iShiftに近くなる)ことにより、外れ値などがある場合において、推定されるパラメータが頑健になる。推定されるパラメータが頑健になることによって、照度補償の推定精度が向上し、符号化効率が向上する効果を奏する。
(正則化項の説明)
以下、正則化項の数学的意味を補足する。入力データ列(xi,yi)が与えられた場合に、xiからyiを以下の式により1次予測することを考える。
yi = a * xi + b 式(E−4)
この時、以下の予測誤差E(目的関数E)を最小化するパラメータa、パラメータbを最小2乗法により求めることが一般に行われる。
E = Σ(yi - a*xi - b)^2 式(E−5)
上記式を、パラメータa、パラメータbに関して各々偏微分を行って得られる式を0と置くと、予測誤差Eを最小化するパラメータa、パラメータbに関する式である正規方程式が求められる。正規方程式を解くと、パラメータaを導出する以下の式が得られる。
パラメータa = (Σxiyi -ΣxiΣyi) / (Σxixi -ΣxiΣxi) 式(E−6)
一般に、入力データ列(xi,yi)にばらつきが有る場合には、導出対象となるパラメータa、パラメータbが不要に大きくなることを防ぐような正則化項を導入することが行われる。この場合、予測誤差Eの代わりに、誤差E´を最小化する。
E = Σ(yi - a*xi - b)^2 + λ1*a^2+ λ2*a^2 式(E−5´)
この場合、パラメータaは以下の式により求められる。
パラメータa = (Σxiyi -ΣxiΣyi) / (Σxixi -ΣxiΣxi+λ1) 式(E−6´´)
ところで、照度予測の場合には、xi、yiはともに同じオブジェクトの画素値であることから、パラメータaは1に近いことが予想される。従って、単純にパラメータaの大きさを0に近づけるような正則化項(λ1*a^2)を用いる予測誤差E´の代わりに、パラメータaの大きさを1に近づけるような正則化項(λ1*(a-1)^2)を用いる以下の予測誤差E´´を最小化することを考える。
E = Σ(yi - a*xi - b)^2 + λ1*(a-1)^2+ λ2*b^2 式(E−5´´)
上記式を、パラメータa、パラメータbに関して各々偏微分を行って得られる式を0と置くと、正規方程式が求められる。正規方程式を解くと、パラメータaを導出する以下の式が得られる。
パラメータa = (Σxiyi -ΣxiΣyi+λ1) / (Σxixi -ΣxiΣxi+λ1) 式(E−6´´)
上記式の右辺において、分子のΣxiyi -ΣxiΣyiが第1パラメータ、分母のΣxixi -ΣxiΣxiが第2パラメータに相当する。従って、第1パラメータ、第2パラメータに同じ正則化項λ1を加えることにより、パラメータaを1に近づける効果が得られる。なお、上記正則化項の効果は、a-1の2乗に比例することから、aが1から大きく遠ざかるほど強くなり、aが1に近い場合には殆ど正則化項の影響はなくなる。
(照度補償部3093F)
以下、照度補償部3093の変形例である照度補償部3093Fを説明する。
図79は、照度補償部3093Fの構成を示すブロック図である。照度補償部3093は、照度パラメータ推定部30931Eと、照度補償フィルタ部30932Fから構成される。照度パラメータ推定部30931Eは既に説明したので説明を省略する。また、照度パラメータ推定部30931Eに限定されず、他の推定方法を用いた照度パラメータ推定部でも良い。
照度補償フィルタ部30932Fは、照度パラメータ推定部30931Eが導出した推定パラメータを用いて、入力された予測画像がL0リストの参照リストを用いて導出された動き補償画像である場合に限定して照度補償を行う。具体的には、predFlagL0とpredFlagL1の値に応じて、以下の動作を行う。
predFlagL0が1、predFlagL1が0の場合には、以下の式により、照度補償前の予測画像predSamples []から、照度補償後の予測画像predSamples´[]を導出する。
predSamples´[x][y] = ((a * predSamples[x][y]) >> iShift)+b
predFlagL0が0、predFlagL1が1の場合には、照度補償は適用しない。すなわち、以下の式のように照度補償フィルタ部30932Fの入力となる予測画像predSamples []と出力の予測画像predSamples´[]は一致する。
predSamples´[x][y] = predSamples[x][y] 式(B−21)
predFlagL0が1、predFlagL1が1の場合には、以下の式により、L0リストの参照ピクチャを予測画像する場合には、以下の式により、L0の照度補償前の予測画像predSamples L0 []から、L0の照度補償後の予測画像predSamples L0´[]を導出する。
predSamplesL0´[x][y] = ((a * predSamples[x][y]) >> iShift)+b
後述の重み予測部3094では、照度予測が適用されたL0の予測画像と、predSamplesL0´[x][y]と、照度予測が適用されないL1の予測画像predSamplesL1[x][y]とを用いて、例えば、以下の式により、予測画像が生成される。
predSamples´[x][y] = (predSamplesL0´[x][y] + predSamplesL1[x][y] + offset2)>> shift2)
ここでshift2、offset2は各々、shift2=15 - bitDepth、offset2=1<<(shift2-1)により導出する。
照度補償部3093Fでは、照度予測を用いる場合を、L0リストを用いた参照ピクチャから得られるが用いられる動き補償画像に限定する(L0限定)のため処理量を低減する効果を奏する(効果F5b)。つまり、2つの参照画像に照度予測が行われるような処理量の大きい状況を避ける効果を奏する。単に双予測の場合に、照度補償を禁止する場合と異なり、双予測の場合にも、L0リストを用いた参照ピクチャに対して照度補償が行われるため、限定による性能低下が小さいこと(効果F5c)が発明者の実験により得られている。
なお、双予測の場合に照度補償を禁止する構成の場合(照度補償部3093F´)は、以下の処理を行う。
predFlagL0が1、predFlagL1が0の場合には、以下の式により、照度補償前の予測画像predSamples[]から、照度補償後の予測画像predSamples´[]を導出する。
predSamples´[x][y] = ((a * predSamples[x][y]) >> iShift)+b
なお、L0の予測画像predSamplesL0[x][y]であることを明示して、以下のように表現も可能である。
predSamplesL0´[x][y] = (a * predSamples L0 [x][y] >> iShift)+b
predFlagL0が0、predFlagL1が1の場合には、以下の式により、照度補償前の予測画像predSamples []から、照度補償後の予測画像predSamples´[]を導出する。
predSamples´[x][y] = ((a * predSamples[x][y]) >> iShift)+b
なお、L1の予測画像predSamplesL1[x][y]であることを明示して、以下のように表現も可能である。
predSamplesL1´[x][y] = (a * predSamples L1 [x][y] >> iShift)+b
predFlagL0が1、predFlagL1が1の場合には、後述の重み予測部3094において、照度予測が適用されないL0の予測画像predSamplesL0[x][y]と、照度予測が適用されないL1の予測画像predSamplesL1[x][y]とを用いて、例えば、以下の式により、予測画像が生成される。
predSamples[x][y] = (predSamplesL0[x][y] + predSamplesL1[x][y] + offset2)>> shift2
この場合は、双予測の場合には照度予測が行われないが、2つの参照画像に照度予測が行われるような処理量の大きい状況を避ける効果(効果F5b)を有する。
(照度補償部3093G)
以下、照度補償部3093の変形例である照度補償部3093Gを説明する。照度補償部3093Gは、照度補償部3093Fと同様、L0制限を行うが、照度補償の予測式がオフセット成分のみ(パラメータbのみ)である点が、照度補償部3093Fとは異なる。
図83は、照度補償部3093Gの構成を示すブロック図である。照度補償部3093は、照度パラメータ推定部30931Gと、照度補償フィルタ部30932Gから構成される。照度パラメータ推定部30931Gは、加算値導出部309313B、パラメータb導出部309317Gから構成される。
照度パラメータ推定部30931Gは、図13に示す参照レイヤ画像上の参照ブロックの周囲の画素Cを参照画像の画素値x[]、対象ブロックの周囲の画素Lを復号画像の画素値y[]とし、これら参照画像の画素値x[]と復号画像の画素値y[]に基づいて、復号画像の画素値y[]を参照画像の画素値xからオフセットを加算して予測する場合のパラメータであるパラメータbを導出する。
加算値導出部309313Bは、復号画像の画素値の和Yと参照画像の画素値の和Xを、既に説明した式(B−2)式(B−3)により導出する。
パラメータb導出部309317Gは、復号画像の画素値の和Yから、参照画像の画素値の和Xを引いた値を、参照領域の画素数で割ることにより、以下の式によりパラメータbを導出する。
b = ( Y - X ) + ( 1 << ( iCountShift - 1 ) ) ) >> iCountShift
なお、iCountShiftの右シフトは、参照領域の画素数で割ることに相当する。
照度補償フィルタ部30932Gは、照度パラメータ推定部30931Gが導出した推定パラメータを用いて、入力された予測画像がL0リストの参照リストを用いて導出された動き補償画像である場合に限定して照度補償を行う。具体的には、predFlagL0とpredFlagL1の値に応じて、以下の動作を行う。
predFlagL0が1、predFlagL1が0の場合には、以下の式により、照度補償前の予測画像predSamples []から、照度補償後の予測画像predSamples´[]を導出する。
predSamples´[x][y] = predSamples[x][y]+b
predFlagL0が0、predFlagL1が1の場合には、照度補償は適用しない。すなわち、以下の式のように照度補償フィルタ部30932Gの入力となる予測画像predSamples []と出力の予測画像predSamples´[]は一致する。
predSamples´[x][y] = predSamples[x][y]
predFlagL0が1、predFlagL1が1の場合には、以下の式により、L0リストの参照ピクチャを予測画像する場合には、以下の式により、L0の照度補償前の予測画像predSamples L0 []から、L0の照度補償後の予測画像predSamples L0´[]を導出する。
predSamplesL0´[x][y] = predSamples[x][y]+b
後述の重み予測部3094では、照度予測が適用されたL0の予測画像と、predSamplesL0´[x][y]と、照度予測が適用されないL1の予測画像predSamplesL1[x][y]とを用いて、例えば、以下の式により、予測画像が生成される。
predSamples´[x][y] = (predSamplesL0´[x][y] + predSamplesL1[x][y] + offset2)>> shift2 式(B−21BI)
ここでshift2、offset2は各々、shift2=15 - bitDepth、offset2=1<<(shift2-1)により導出する。
照度補償部3093Gでは、照度予測を用いる場合をL0リストを用いた参照ピクチャが用いられる動き補償画像に限定する(L0限定)のため処理量を低減する効果を奏する(効果F5b)。つまり、2つの参照画像に照度予測が行われるような処理量の大きい状況を避ける効果を奏する。単に双予測の場合に、照度補償を禁止する場合と異なり、双予測の場合にも、L0リストを用いた参照ピクチャに対して照度補償が行われるため、限定による性能低下が小さいこと(効果F5c)が発明者の実験により得られている。
なお、双予測の場合に照度補償を禁止する構成の場合(照度補償部3093G´)は、以下の処理を行う。
predFlagL0が1、predFlagL1が0の場合には、以下の式により、照度補償前の予測画像predSamples[]から、照度補償後の予測画像predSamples´[]を導出する。
predSamples´[x][y] = predSamples[x][y] +b
なお、L0の予測画像predSamplesL0[x][y]であることを明示して、以下のように表現も可能である。
predSamplesL0´[x][y] = predSamplesL0 [x][y]+b
predFlagL0が0、predFlagL1が1の場合には、以下の式により、照度補償前の予測画像predSamples []から、照度補償後の予測画像predSamples´[]を導出する。
predSamples´[x][y] = predSamples[x][y]+b
なお、L1の予測画像predSamplesL1[x][y]であることを明示して、以下のように表現も可能である。
predSamplesL1´[x][y] = predSamples L1 [x][y]+b
predFlagL0が1、predFlagL1が1の場合には、後述の重み予測部3094において、照度予測が適用されないL0の予測画像predSamplesL0[x][y]と、照度予測が適用されないL1の予測画像predSamplesL1[x][y]とを用いて、例えば、以下の式により、予測画像が生成される。
predSamples[x][y] = (predSamplesL0[x][y] + predSamplesL1[x][y] + offset2)>> shift2
この場合は、双予測の場合には照度予測が行われないが、2つの参照画像に照度予測が行われるような処理量の大きい状況を避ける効果(効果F5c)を有する。
(照度補償部3093H)
以下、照度補償部3093の変形例である照度補償部3093Hを説明する。
図85は、照度補償部3093Hの構成を示すブロック図である。照度補償部3093は、照度パラメータ推定部30931Hと、照度補償フィルタ部30932Bから構成される。照度パラメータ推定部30931Hは、加算値導出部309313H、第1パラメータ導出部309314H、第2パラメータ導出部309315H、パラメータa導出部309316H、パラメータb導出部309317H、正則化項加算部309318Hから構成される。
照度パラメータ推定部30931Hは、図13に示す参照レイヤ画像上の参照ブロックの周囲の画素Cを参照画像の画素値x[]、対象ブロックの周囲の画素Lを復号画像の画素値y[]とし、これら参照画像の画素値x[]と復号画像の画素値y[]に基づいて、復号画像の画素値y[]を参照画像の画素値xから予測する場合のパラメータであるパラメータaとパラメータbを導出する。
加算値導出部309313Hは、復号画像の画素値yの和Yと参照画像の画素値xの和Xを、以下の式(B−2)式(B−3)により導出する。
X = Σx[i] 式(B−2)
Y = Σy[i] 式(B−3)
ここで、Σは、参照領域に対する和であり、参照領域の画素を特定するインデックスiに対する和を導出する。y[i]は、復号画像のインデックスiにおける画素値であり、x[i]は、参照画像のインデックスiにおける画素値である。カウントシフト値iCountShiftは、参照領域のサイズ(画素数)の2の対数である。
iCountShift = log2 (参照領域の画素数) 式(B−6)
第1パラメータ導出部309314Hは、復号画像の画素値yの和Yから第1パラメータa1を以下の式により導出する。
a1 = Y; 式(B−7´)
第2パラメータ導出部309315Hは、参照画像の画素値xの和Xから第2パラメータa2を以下の式により導出する。
a2 = X; 式(B−8´)
導出された第1パラメータa1と第2パラメータa2は、パラメータa導出部309316Hに出力される。
正則化加算部309318Hは、参照画像の画素値xの和Xから正則化項acostを導出する。
acost = X >> ashift 式(E−1´)
ここで、ashiftは所定の定数であり、右シフトにより正則化項acostの大きさを調整するために用いられる。
なお、通常の画像では、参照画像の画素値xの和Xと復号画像の画素値yの和Yはほぼ等しいため、復号画像の画素値yの和Yから正則化項acostを導出しても良い。
acost = Y >> ashift 式(E−1´´)
正則化項加算部309318Eは、第1パラメータを導出に用いるパラメータ(例えばY)に正則化項を加算する。
Y = Y + acost 式(H−2)
なお、この加算は、
正則化項加算部309318Eは、第2パラメータを導出に用いるパラメータ(例えばX)に正則化項を加算する。
X = X + acost 式(H−3)
なお、正則化項の加算は、第1パラメータ導出部309314Bおよび、第2パラメータ導出部309315Bで行っても良い。この場合、第1パラメータ、第2パラメータは、式(B−7´)式(B−8´)の代わりに以下の式により導出される。
a1 = Y + acost 式(E−2´´) a2 = X + acost 式(E−3´´)
図86は、パラメータa導出部309316Hの構成を示すブロック図である。パラメータa導出部309316Hは、パラメータクリップ部3093161H、第2正規化シフト部3093163H、テーブルベースパラメータa導出部3093164Hから構成される。
第2正規化シフト部3093163Hは、第2パラメータa2の大きさに応じて、以下の式により第2正規化シフト値iScaleShiftA2を導出する。導出された第2正規化シフト値iScaleShiftA2は、テーブルベースパラメータa導出部3093164Hに出力される。
iScaleShiftA2 = Max(0, GetMSB( abs( a2 ) ) - 6) 式(B−14)
第2正規化シフト部3093163Hは、第2パラメータa2を第2正規化シフト値iScaleShiftA2により右シフトし、正規化第2パラメータa2sを導出する。
a2s = a2 >> iScaleShiftA2 式(B−16)
テーブルベースパラメータa導出部3093164Hは、以下の式によりパラメータaシフト値iScaleShiftAを導出する。
ScaleShiftA = iScaleShiftA2 + 15 - iShift 式(B−18´)
テーブルベースパラメータa導出部3093164Hは、正規化第2パラメータa2sに応じて定まる逆数テーブル値invTableを参照し、正規化第1パラメータa1との積をとりテーブルシフト値(ScaleShiftA)で右シフトすることにより、以下の式によりパラメータaを導出する。
a = (a1 * invTable[a2s]) >> (ScaleShiftA) 式(B−19)
図84は、本実施形態で用いる逆数テーブル値invTable[]である。既に説明したように図84の逆数invTable[x]は、インデックスxが0の場合に0となり、インデックスxが0以外の場合には、所定の定数M(ここでは2の15乗)をxで割って整数化した値から導出される。
パラメータaの値は、第1パラメータa1と第2パラメータa2の比(a1/a2をiShiftだけ左シフトした値)に相当する。
パラメータクリップ部3093161Hは、以下の演算によりパラメータaの範囲を、8ビット非負変数となる、0以上、255以下にクリップする。
a = Clip3(0, 255, a) 式(B−12´)
パラメータb導出部309317Hは、復号画像の画素値の和Yから、参照画像の画素値の和Xにパラメータaをかけて固定シフト値iShiftだけ右シフトした値を引いた値を、参照領域の画素数で割ることにより、以下の式によりパラメータbを導出する。
b = ( Y - ( ( a * X ) >> iShift ) + ( 1 << ( iCountShift - 1 ) ) ) >> iCountShift 式(B−20)
なお、iCountShiftの右シフトは、参照領域の画素数で割ることに相当する。固定シフト値としては4から7の値、例えば5を用いることが適当である。
照度補償フィルタ部30932Bは、照度パラメータ推定部30931Bが導出した推定パラメータを用いて、照度補償前の予測画像predSamples []から、照度補償後の予測画像predSamples´[]を導出する。例えば、パラメータbを式(B−20)により導出する場合には以下の式を用いる。
predSamples´[x][y] = ((a * predSamples[x][y]) >> iShift)+b 式(B−21)
上記照度パラメータ推定部30931Hの構成では、同じ正則化項を第1パラメータa1と第2パラメータa2に加算してから、第1パラメータa1と第2パラメータa2の比に相当する値のパラメータaを算出することによって、外れ値などがある場合において、推定されるパラメータが頑健になり、符号化効率が向上する効果を奏する。なお、正則化項は、参照画像の画素値xの和Xから生成しても良いし、復号画像の画素値yの和Yから生成しても良い。
上記照度パラメータ推定部30931Hの構成では、復号画像の画素値xの和Xから導出される第2パラメータのみを正規化し、復号画像の画素値yの和Yから導出される第1パラメータを正規化しないため、テーブルシフト値ScaleShiftAが必ず0以上になる。そのためテーブルシフト値ScaleShiftAが0以上であるか(正であるか)否かに応じて、右シフトである式(B−19)と左シフトである式(B−19´)で切り替えることなく、右シフトのみで導出することができる。
上記照度パラメータ推定部30931Hの構成では、図84に示すように、インデックスxが0の場合に0となるように逆数テーブルinvTable[x]を定義し、このように定義した、逆数テーブルinvTable[x]を、復号画像の画素値yの和Yから導出される第2パラメータ(正規化第2パラメータ)で引いた値に基づいてパラメータaを導出することにより、第2パラメータ(正規化第2パラメータ)が0であるか否かに応じて、演算方法を変更しなくても適当なパラメータaを得ることができるため、処理量が削減されるという効果を奏する。
上記照度パラメータ推定部30931Hの構成では、パラメータクリップ部3093161Hにより、パラメータaを8ビット非負整数の範囲にクリップすることから、画素値のビット深度が8ビットである場合に、パラメータaと画素値の積を8ビット非負整数同士の積として処理することができるためSIMD演算などによる処理が容易になるという効果を奏する。
なお、照度補償部3093Hの別の構成として、照度補償部3093内の、照度パラメータ推定部30931Hにおいて、パラメータa導出部309316Hの代わりに、パラメータa導出部309316H2を用いる構成も可能である。
図87は、パラメータa導出部309316H2の構成を示すブロック図である。パラメータa導出部309316H2は、パラメータクリップ部3093161H、除算パラメータa導出部3093165Hから構成される。
除算パラメータa導出部3093165Hは、第1パラメータと第2パラメータの比により、以下の式によりパラメータaを導出する。
a = (a1 + a2/2) / a2 式(B−19´)
パラメータクリップ部3093161Hは、既に説明したように、パラメータaの範囲を、8ビット非負変数の範囲にクリップする。
上記照度パラメータ推定部30931H2の構成では、同じ正則化項を第1パラメータa1と第2パラメータa2に加算してから、第1パラメータa1と第2パラメータa2の比に相当する値のパラメータaを算出することによって、外れ値などがある場合において、推定されるパラメータが頑健になり、符号化効率が向上する効果を奏する。
上記照度パラメータ推定部30931Hの構成では、パラメータクリップ部3093161Hにより、パラメータaを8ビット非負整数の範囲にクリップすることから、画素値のビット深度が8ビットである場合に、パラメータaと画素値の積を8ビット非負整数同士の積として処理することができるためSIMD演算などによる処理が容易になるという効果を奏する。
パラメータa導出部309316H2は、パラメータa導出部309316Hと異なり、パラメータaの導出に除算を用いる。除算は比較的処理が複雑な演算であるが、その分パラメータaの精度が向上するため、符号化効率が高くなるという効果を奏する。
(重み予測)
重み予測部3094は、入力される動き変位画像predSamplesLXに重み係数を乗算することにより予測ピクチャブロックP(予測画像)を生成する。入力される動き変位画像predSamplesLXは、残差予測、照度補償が行われる場合には、それらが施された画像である。参照リスト利用フラグの一方(predFlagL0もしくはpredFlagL1)が1の場合(単予測の場合)で、重み予測を用いない場合には入力された動き変位画像predSamplesLX(LXはL0もしくはL1)を画素ビット数に合わせる以下の式の処理を行う。
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesLX[ x ][ y ] + offset1 ) >> shift1 )
ここで、shift1=14−bitDepth、offset1=1<<(shift1−1)である。
また、参照リスト利用フラグの両者(predFlagL0もしくはpredFlagL1)が1の場合(双予測の場合)で、重み予測を用いない場合には、入力された動き変位画像predSamplesL0、predSamplesL1を平均し画素ビット数に合わせる以下の式の処理を行う。
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesL0[ x ][ y ] + predSamplesL1[ x ][ y ] + offset2 ) >> shift2 )
ここで、shift2=15−bitDepth、offset2=1<<(shift2−1)である。
さらに、単予測の場合で、重み予測を行う場合には、重み予測部3094は、重み予測係数w0とオフセットo0を導出し、以下の式の処理を行う。
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( (predSamplesLX[ x ][ y ] * w0 + 2log2WD - 1) >> log2WD ) + o0 )
ここで、log2WDは所定のシフト量を示す変数である。
さらに、双予測の場合で、重み予測を行う場合には、重み予測部3094は、重み予測係数w0、w1、o0、o1を導出し、以下の式の処理を行う。
predSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesL0 [ x ][ y ] * w0 + predSamplesL1[ x ][ y ] * w1 + ((o0 + o1 + 1) << log2WD) ) >> (log2WD + 1) )
(追加予測フラグを含む符号化データの構成)
図14(a)は、インター予測パラメータ復号制御部3031で復号される符号化データの構成(符号化ユニットの構成)を示す図である。図14(a)に示すように、追加予測フラグxpred_flagは、符号化ユニット(CU)構造で、PredMode、SkipFlagの後の、予測ユニットPUの後に符号化される。追加予測フラグxpred_flagは、追加予測フラグxpred_flagより前に位置する予測ユニットのシンタックス要素により指定される各PUの予測パラメータが所定の値である場合に、符号化データ中に存在する。逆に所定の値ではない場合には存在しない。
図14(b)は、各予測ユニットの符号化データの構成を示す図である。PUは、merge_modeを含む。merge_modeが1、すなわち、マージ予測モードの場合にはmerge_idxを含む。merge_modeが0、すなわち、AMVP予測モードの場合には、merge_idxの代わりに、inter_pred_idx及びref_idx_l0、mvp_idx_l0、mvd_l0、ref_idx_l1、mvp_idx_l1、mvd_l1を含む。inter_pred_idxはPred_L0、Pred_L1、Pred_Biのいずれかの値をとり、各々L0予測、L1予測、双予測を示す。L0予測および双予測の場合に、L0予測に関する予測パラメータref_idx_l0、mvp_idx_l0、mvd_l0が含まれ、L1予測および双予測の場合に、L1予測に関する予測パラメータref_idx_l0、mvp_idx_l0、mvd_l0が含まれる。
図15は、追加予測フラグの符号化データ中の構成を示すためのシンタックステーブルである。図中のcoding_unitは、本シンタックステーブルが符号化ユニットの符号化データであることを示す。まずslice_typeがI_SLICE以外の場合にはCUヘッダCUHにskip_flagが存在するする。次に、skip_flagが1の場合にはPUデータとしてprediction_unit()を含む。prediction_unitではPUの符号化パラメータを含む。またskip_flagが0である場合でslice_typeがI_SLICE以外の場合には、CUヘッダCUHにpred_mode_flagが含まれる。pred_mode_flagはイントラ予測を行う(MODE_INTRA)か、インター予測(MODE_INTRA)を行うかを示すフラグであり、復号後にPredModeに設定される。PredModeがイントラ予測(MODE_INTRA)の場合の詳細な説明は省略する。PredModeがインター予測(MODE_INTRA)の場合、CUヘッダCUHに分割モードpart_modeが含まれる。分割モードpart_modeは、復号後にPartModeに設定される。分割モードは、PART_2Nx2N、PART_2NxN、PART_2NxnU、PART_2NxnD、PART_Nx2N、PART_nLx2N、PART_nRx2N、PART_NxNのいずれかの値をとり、各々、1個、2個又は4個のPUデータprediction_unit()を含む。prediction_unit()の後に、CUヘッダCUH(正確にはCUフッタ)として、追加予測フラグxpred_flagとしてここでは、res_pred_flagとic_enable_flagが定義される。
図15中のdepth_flagは、対象レイヤがデプスであるかであるかであるか否かを示すフラグ、pred_modeはイントラ予測MODE_INTRAであるかインター予測MODE_INTERであるかを示すフラグ、motion_pred_existsはCUを構成するPUで動き予測が使用されるかを示すフラグ、disparity_pred_existsはCUを構成するPUで変位予測(変位補償)が使用されるかを示すフラグである。図15のSE1501に示すように、res_pred_flagを含むか否かを示す判定式が!depth_flag && pred_mode != MODE_INTRA && motion_pred_existsと記述されるように、対象レイヤがデプスデータではなく、予測モードがイントラ予測以外で、いずれかのPUにおいて動き予測が使用される場合、追加予測フラグとしてres_pred_flagを含む。なお!は論理否定を取る関数、&&は、論理積を取る関数である。また、図15のSE1502に示すように、ic_enable_flagを含むか否かを示す判定式が!depth_flag && pred_mode != MODE_INTRA && disparity_pred_existsと記述されるように、対象レイヤがデプスデータではなく、予測モードがイントラ予測以外で、いずれかのPUにおいて変位予測が使用される場合、追加予測フラグとしてic_enable_flagを含む。このような追加予測フラグ(res_pred_flagとic_enable_flag)を含むか否かの判定は、後述の追加予測フラグ判定部30314で行われる。
(追加予測フラグ判定部)
図16は、追加予測フラグ判定部30314の構成を示す概略図である。追加予測フラグ判定部30314は、レイヤ判定部303141、全PUパラメータ判定部303142を含んで構成される。レイヤ判定部303141は、対象レイヤが、ベースレイヤ(ベースビュー)であるか、ベースレイヤ(ベースビュー)でないかを判定し、さらに、対象レイヤが、デプスであるか、テクスチャであるかを判定する。レイヤ判定部303141は、対象レイヤがベースレイヤ(ベースビュー)ではなく、かつ、デプスではない場合に有効と判定し、それ以外は無効と判定する。ベースビューではないかの判定はViewIdが0ではない(ViewId)、デプスではない場合とは!depth_flagで示されることから、図15の符号化データのSE1501、SE1502に示す!depth_flag && ViewIdの判定を行う。さらに、全PUパラメータ判定部303142は、追加予測フラグを含む対象CUがイントラ予測ではないか、を判定する。すなわち図15のSE1501、SE1502に示すpred_mode != MODE_INTRAの判定を行う。次に、全PUパラメータ判定部303142は、対象CUが含む全てのPUの予測パラメータを調べ、予測パラメータの値に応じて、上記追加予測フラグを上記符号化ユニットから復号するか否かを判定する。具体的には、追加予測フラグxpred_flagが残差予測resi_pred_flagの場合には、予測パラメータが動き予測であるか(CUに含まれるPUのいずれかが動き予測を含むか)を判定しmotion_pred_existsに設定する。なお、PUが動き予測であるか、すなわち、PUのベクトルが動きベクトルか否かは、既に説明したインター予測パラメータ復号制御部3031に含まれるリファレンスレイヤ判定部303111の判定方法において偽(変位ベクトルではない)と判定した方法により判定する(以下同様)。追加予測フラグxpred_flagが照度補償ic_enable_flagの場合には予測パラメータが変位予測であるか(CUに含まれるPUのいずれかが変位予測を含むか)を判定しdisparity_pred_existsに設定する。なお、PUが変位予測であるか、すなわち、PUのベクトルが変位ベクトルか否かは、既に説明したインター予測パラメータ復号制御部3031に含まれるリファレンスレイヤ判定部303111の判定方法において真(変位ベクトルである)と判定した方法により判定する(以下同様)。
図17は、全PUパラメータ判定部303142において、CUが動き予測を行うPUを含むか否かを示すフラグmotion_pred_existsの判定を行う動作を示す図である。図17に示すように、まずmotion_pred_existsをfalseに設定する。続いて、CUの分割モードpart_modeをチェックし、CUの含む各PUのinter_pred_idcにより、PUの予測画像生成に用いる参照レイヤのViewIdであるref_view_id_lXが、対象レイヤのViewIdと等しいか否かをチェックする。
part_modeがPART_2Nx2Nの場合にはCUの含むPUは1つのみであり、その座標は(x0, y0)である。全PUパラメータ判定部303142は、この1つのPUに動き補償を行うPUが含まれるかをチェックし、含まれる場合には、motion_pred_existsをtrueにする。具体的には、inter_pred_idcがPred_L1ではない場合(L0予測および双予測の場合、predFlagL0が1)には、L0リストが用いられるため、L0リストの参照ピクチャのビューID(ref_view_id_lX(ref_view_id_l0)が対象レイヤのビューID(ViewId)と等しいか否かをチェックする。対象レイヤと参照ピクチャのビューIDが等しい場合には動き予測であるため、motion_pred_existsにtrueを設定する。さらにinter_pred_idcがPred_L0ではない場合(L1予測および双予測)には、L1リストが用いられるため、L1リストの参照ピクチャのビューID(ref_view_id_lX(ref_view_id_l1))が対象レイヤのビューID(ViewId)と等しいか否かをチェックする。対象レイヤと参照ピクチャのビューIDのビューIDが等しい場合には動き予測であるため、motion_pred_existsにtrueを設定する。なお、上記inter_pred_idcがPred_L1ではない場合の判定は、predFlagL0=1の判定と置き換えることができ、inter_pred_idcがPred_L0ではない場合の判定は、predFlagL1=1の判定と置き換えることができる。
part_modeがPART_2NxNの場合には、CUの含むPUは2つあり、各々の座標は(x0, y0)、(x0, y0 + nCbS / 2)である。ここでnCbSは対象CUのサイズ(=幅=高さ)である。全PUパラメータ判定部303142は、この1つのPUに動き補償を行うPUが含まれるかをチェックし、含まれる場合には、motion_pred_existsをtrueにする。具体的には、座標(x0, y0)と座標の(x0, y0 + nCbS / 2)のinter_pred_idcにより、使用される参照ピクチャに対して、参照ピクチャのビューID(ref_view_id_lX)が、対象レイヤのビューID(ViewId)と等しいか否かをチェックし、両者が等しい場合には、動き予測を行うmotion_pred_existsにtrueを設定する。以下、それ以外のpart_modeの説明は省略する。
図18は、全PUパラメータ判定部303142において、CUが変位予測を行うPUを含むか否かを示すフラグdisparity_pred_existsの判定を行う動作を示す図である。図18に示すように、まずdisparity_pred_existsをfalseに設定する。続いて、CUの分割モードpart_modeをチェックし、CUの含む全てのPUのinter_pred_idcとref_view_id_lXをから、PUに変位予測を行うPUが含まれるかをチェックし、含まれる場合には、motion_pred_existsをtrueにする。例えば、part_modeがPART_2Nx2Nの場合にはCUの含むPUは1つのみであり、その座標は(x0, y0)である。全PUパラメータ判定部303142は、この1つの具体的には、inter_pred_idcがPred_L1ではない場合(L0予測および双予測)には、L0リストが用いられるため、L0リストのref_view_id_lX(ref_view_id_l0)が対象レイヤのViewIdと等しいか否かをチェックする。参照レイヤのViewIdが等しくない場合には変位予測であるため、disparity_pred_existsにtrueを設定する。さらにinter_pred_idcがPred_L0ではない場合(L1予測および双予測)には、L1リストが用いられるため、L1リストのref_view_id_lX(ref_view_id_l1)が対象レイヤのViewIdと等しいか否かをチェックする。参照レイヤのViewIdが等しくない場合には変位予測であるため、disparity_pred_existsにtrueを設定する。以下、それ以外のpart_modeの動作は、ViewIdが等しいか否かの判定の部分を除き、図39で説明したmotion_pred_existsの判定と等しいので説明を省略する。
以上のように、追加予測フラグ判定部30314は、レイヤ判定部303141により、対象レイヤがベースレイヤ(ベースビュー)ではなく、かつ、デプスではないかを判定する。さらに、全PUパラメータ判定部303142が、対象CUがイントラ予測ではないかを判定する。さらに全PUパラメータ判定部303142は、CUが含む全てのPUをチェックし、いずれかのPUにおいて、動き予測を含む場合に、追加予測フラグである残差予測フラグresi_pred_flagが符号化データに含まれると判定する。
また、追加予測フラグ判定部30314は、レイヤ判定部303141により、対象レイヤがベースレイヤ(ベースビュー)ではなく、かつ、デプスではないと判定し、さらに、全PUパラメータ判定部303142が、対象CUがイントラ予測ではないかの判定を行う。全PUパラメータ判定部303142は、さらに、CUが含む全てのPUをチェックし、CUに含まれるいずれかのPUにおいて、変位予測を含む場合に、追加予測フラグである照度補償フラグic_enable_flagが符号化データに含まれると判定する。
(インター予測パラメータ復号部の変形例A)
以下、インター予測パラメータ復号部303の変形例として、インター予測パラメータ復号部303Aを説明する。変形例Aは、動き補償画像に適用する追加予測として2つの予測方法を用いる場合において、1つ目の予測を示すフラグがオンの場合に、2つ目の予測を示すフラグを符号化データから復号せずにオフであるとして導出する。インター予測パラメータ復号部303Aは、追加予測フラグ復号部30311A、マージインデックス復号部30312、ベクトル候補インデックス復号部30313を備える。図19は、追加予測フラグ復号部30311Aが復号する符号化データの構成を示すためのシンタックステーブルである。追加予測フラグ判定部30314Aは、追加予測フラグとして2つのフラグを用いる場合(ここでは残差予測フラグres_pred_flagと照度補償フラグic_enable_flagを用いる場合)、図19のSE1901に示すように、1つ目のフラグがオン(ここではres_pred_flagが1)である場合に、図19のSE1902の判定res_pred_flag == 0が示すように、2つ目のフラグ(ここではic_enable_flag)が符号化データに存在しない、と判定する。なおres_pred_flag == 0の判定は!res_pred_flagの判定と同値である。追加予測フラグ復号部30311Aは、2つ目のフラグic_enable_flagの復号を行わない場合、2つ目のフラグic_enable_flagを追加予測を行わないことを示す0と導出する。これにより、インター予測パラメータ復号部303Aで必要としたCUが変位予測を含むPUを含むか否かのフラグdisparity_pred_existsの導出が不要になる。なお、図19では、残差予測フラグres_pred_flagを照度補償フラグic_enable_flagよりも先に符号化したが、この順序を入れ替えても良い。この場合、追加予測フラグ判定部30314Aは、1つ目の追加予測フラグ(ここでは照度補償フラグic_enable_flag)がオン(ここでは1)である場合に、2つ目の追加予測フラグ(ここでは残差予測フラグres_pred_flag)は存在しないと判定し、2つ目のフラグであるres_pred_flagを0と導出する。つまり、ic_enable_flag==0の場合に限りres_pred_flagを符号化データから復号する。
以上の変形例Aの構成では、追加予測フラグを2つ用いる場合(追加予測として残差予測と照度補償の2つを用いる場合)に、2つ目の追加予測フラグ(例えばic_enable_flag)が存在するか否かの判定を、1つ目の追加予測フラグの値(例えばres_pred_flag)に基づいて行うため、2つ目の追加予測フラグが存在するか否かの判定の判定を各PUの予測パラメータ(例えば、PUの予測パラメータにおいて変位ベクトルを有するかどうかの判定disparity_pred_exists)を導出することなく行えるため、追加予測フラグの復号処理が容易になるという効果を奏する。また、2つの追加予測が排他的である場合(残差予測がオンの場合には照度予測がオフ、また、その逆)には、2つの追加予測が排他的である場合には、一つの目のフラグの値がオンであれば、2つ目のフラグは必ずオフとなるため、2つ目のフラグの復号は不要である。上記、変形例Aでは、2つのフラグの間の冗長性が削減されるため、符号化効率が向上するという効果を奏する。なお、残差予測の方法は、以下の説明に限定されず、復号装置において2つの動き補償画像の差分から残差を推定する一般化残差予測(GRP:Generalized Residual Prediction)もしくは進歩的残差予測((ARP:Advanced Residual Prediction)と呼ばれる方法を用いても良い。なお、変形例Aにおいて、残差予測フラグres_pred_flagの代わりに、残差予測の重みを示す残差予測ウェイトres_pred_weightを用いても良いし、残差予測の種類を示す残差予測モードres_pred_modeを用いても良い。
(インター予測パラメータ復号部の変形例A2)
以下、インター予測パラメータ復号部の変形例として、インター予測パラメータ復号部303A2を説明する。インター予測パラメータ復号部303A2は、追加予測フラグ復号部30311A2、マージインデックス復号部30312、ベクトル候補インデックス復号部30313を備える。
図20は、追加予測フラグ復号部30311A2が復号する符号化データの構成を示すためのシンタックステーブルである。変形例A2の追加予測フラグ復号部30311A2は、追加予測フラグに2つのフラグを用いる場合、図20のSE2001に示す1つ目のフラグ(ここではres_pred_flag)が存在するか否かの判定には、PUが動き予測を含むか否かを示すフラグmotion_pred_existsが1であるかを用い、図20のSE2002に示す2つ目のフラグ(ここではic_enable_flag)が存在するか否かの判定には、1つ目の追加予測フラグ(res_pred_flag)の判定に置いて導出済みのPUが動き予測を含むか否かを示すフラグmotion_pred_existsが0であるかを用いる。
なお、残差予測フラグres_pred_flagと照度補償フラグic_enable_flagは逆でも良い。すなわち。1つ目のフラグ(ここではic_enable_flag)が存在するか否かの判定には、PUが変位予測を含むか否かの判定disparity_pred_existsが1であるかを用い、2つ目のフラグ(ここではres_pred_flagが存在するか否かの判定には、PUが動き予測を含むか否かの判定disparity_pred_existsが0であるかを用いる。
以上の変形例A2の構成では、以上の判定では、2つ目の追加予測フラグが存在するか否かの判定を、1つ目の追加予測フラグが存在する否かの判定に用いた値に基づいて行うため、2つ目の追加予測フラグが存在するか否かの判定の判定を各PUの予測パラメータをチェックすることなく行えるため、追加予測フラグの復号処理が容易になるという効果を奏する。
(インター予測パラメータ復号部の変形例B)
以下、インター予測パラメータ復号部の変形例として、インター予測パラメータ復号部303Bを説明する。インター予測パラメータ復号部303Bは、追加予測フラグ復号部30311B、マージインデックス復号部30312、ベクトル候補インデックス復号部30313を備える。図21は、インター予測パラメータ復号部303Bの復号する符号化データの構成を示すためのシンタックステーブルである。図15との違いは、図15(SE1501、SE1502)では、追加予測フラグが存在するか否かを示す判定に用いるフラグがCUを構成するPUのいずれかの予測方法に関するフラグmotion_pred_existsとdisparity_pred_existsであるのに対し、図21(SE2101、SE2102)では、各々、第1PU(PU0)の予測方法に関するフラグpu0_is_motion_pred、pu0_is_disparity_predに変更された点である。
(追加予測フラグ復号部30311B)
追加予測フラグ復号部30311Bは、既に説明した追加予測フラグ判定部30314の代わりに、追加予測フラグ判定部30314Bを備える。図22は、追加予測フラグ判定部30314Bの構成を示す概略図である。追加予測フラグ判定部30314Bは、レイヤ判定部303141、PU0パラメータ判定部303142Bから構成される。レイヤ判定部303141は、既に説明したので説明を省略する。PU0パラメータ判定部303142Bは、追加予測フラグを含む対象CUがイントラ予測ではないか、を判定する。すなわちpred_mode != MODE_INTRAの判定を行う。次に、PU0パラメータ判定部303142Bは、対象CUに含まれる最初のPU(PU0)の予測パラメータを調べ、追加予測フラグxpred_flagが残差予測フラグresi_pred_flagの場合にはPU0が動き予測を含むか否かを示す判定pu0_is_motion_predを行い、追加予測フラグxpred_flagが照度補償フラグic_enable_flagの場合にはPU0が変位予測を含むか否かの判定pu0_is_disparity_predを行う。図23(a)、(b)は各々、追加予測フラグ判定部30314Bにおいてpu0_is_motion_pred、pu0_is_disparity_pred_の判定を行う動作を示す図である。図17、図18と異なり、CUに含まれる全てのPUについて判定を行うことなく、PU0、すなわち、座標が(x0, y0)のPUに関する判定のみを行う。PU0に動き予測が含まれるか否かpu0_is_motion_predの判定は、参照ピクチャのビューID(ref_viewid_lX)が対象レイヤのビューID(ViewId)と等しい場合に1、等しくない場合に0とする判定であり、PU0に動き予測が含まれるか否かpu0_is_disparity_predの判定は、ref_viewid_lXがViewIdが異なる場合に1、等しくない場合に0とする判定である。詳細は図17、図18と同様であるため説明を省略する。
以上の構成のインター予測パラメータ復号部の変形例Bによれば、追加予測フラグ判定部30314Bにおいて、対象CUに含まれる全てのPUの予測パラメータをチェックすることなく、先頭PUの予測パラメータのみをチェックすれば良いため、追加予測フラグxpred_flag(ここでは、残差予測フラグres_pred_flagと照度補償フラグic_enable_flag)が符号化データに含まれるか否かをチェックする処理が容易になるという効果を奏する。
(インター予測パラメータ復号部の変形例C)
以下、インター予測パラメータ復号部の変形例として、インター予測パラメータ復号部303Cを説明する。インター予測パラメータ復号部303Cは、追加予測フラグ復号部30311C、マージインデックス復号部30312、ベクトル候補インデックス復号部30313を備える。図24は、インター予測パラメータ復号部303Cの復号する符号化データ中の構成を示すためのシンタックステーブルである。図15(SE1501、SE1502)および図21(SE2101、SE2102)では、残差予測フラグres_pred_flagと照度補償フラグic_enable_flagは個別のフラグを用いていたが、図24では、SE2401に示すように残差予測と照度補償のオンオフを判定するために一つの共用フラグres_pred_and_ic_enable_flagを用いる。また、図15および図21では、追加予測フラグが存在するか否かを示す判定式においてmotion_pred_exists、disparity_pred_exists、pu0_is_motion_pred、pu0_is_disparity_predのようなPUが動き補償や変位予測を行うか否かを示す判定を用いていたが、図24には追加予測フラグが存在するか否かを示す判定式においてPUの予測パラメータに関する判定を用いない。つまり、図24のSE2401では、!depth_flag && ViewId && PredMode != MODE_INTRAと示すように、対象レイヤがデプスであるか否かを示すdepth_flagと、ビューIDを示すViewIdと、対象CUの予測モードPredModeを用いて判定するが、これらは個々のPUの予測パラメータ(ベクトルや参照ピクチャインデックス)を用いずに判定できる要素であり、PUの予測パラメータに関する判定を用いない。
(追加予測フラグ復号部30311C)
図25は、追加予測フラグ復号部30311Cの構成を示す概略図である。追加予測フラグ復号部30311Cは、追加予測フラグ判定部30314C、残差予測判定部30315、照度補償判定部30316を含んで構成される。追加予測フラグ判定部30314Cは、レイヤ判定部303141を含んで構成される。フラグ判定部30314Cは、レイヤ判定部303141により、対象レイヤがベースレイヤ(ベースビュー)ではなく、かつ、デプスではないと判定する。さらに、追加予測フラグ判定部30314Cは、対象CUがイントラ予測ではない場合に、追加予測フラグである共用フラグres_pred_and_ic_enable_flagが符号化データに含まれると判定する。
追加予測フラグ復号部30311Cは次に追加予測フラグres_pred_and_ic_enable_flagが含まれると判定される場合、追加予測フラグres_pred_and_ic_enable_flagを符号化データから抽出(復号)し、追加予測フラグres_pred_and_ic_enable_flagが含まれないと判定される場合、符号化データを復号することなく、追加予測フラグres_pred_and_ic_enable_flagに0を設定する。追加予測フラグres_pred_and_ic_enable_flagが0である場合は、追加予測(残差予測と照度補償)はいずれも行われない。追加予測フラグres_pred_and_ic_enable_flagが1である場合は、以下の判定により、残差予測と照度補償が行われるか否かを判定する。
残差予測判定部30315は、CUに含まれる各PU単位において、追加予測として残差予測が行われるか否かを判定する。残差予測判定部30315は、追加予測フラグres_pred_and_ic_enable_flagが1であり、かつ、対象PUで、動き予測が用いられる場合には、res_pred_flag=1とする。それ以外の場合には、res_pred_flag=0とする。
照度補償判定部30316は、CUに含まれる各PU単位において、追加予測として照度補償が行われるか否かを判定する。照度補償判定部30316は、追加予測フラグres_pred_and_ic_enable_flagが1であり、かつ、対象PUで、変位予測が用いられる場合には、ic_enable_flag=1とする。それ以外の場合には、ic_enable_flag=0とする。
以上の構成の追加予測フラグ復号部30311Cによれば、追加予測フラグを残差予測フラグと照度補償フラグに共通の共用フラグとすることにより、追加予測フラグが符号化データに存在するか否かの判定において、PUの予測パラメータを参照することがないため、予測パラメータとフラグの間の依存関係がなくなり、パース依存性の課題が解決される。これにより、追加予測フラグの復号処理が容易になるという効果を奏する。また、追加予測フラグとして、2つのフラグ(残差予測フラグと照度補償フラグ)の代わりに1つのフラグを符号化データ中に含めるため、フラグの符号量が減少する効果を奏する。
(インター予測パラメータ復号部の変形例D)
以下、インター予測パラメータ復号部の変形例として変形例Dの別の構成であるインター予測パラメータ復号部303Dを説明する。インター予測パラメータ復号部303Dは、追加予測フラグ復号部30311D、マージインデックス復号部30312、ベクトル候補インデックス復号部30313を備える。
図26(a)は、インター予測パラメータ復号制御部3031Dで復号される符号化データの構成(符号化ユニットの構成)を示す図である。図14(a)と異なり、追加予測フラグは、符号化ユニットのレイヤ(CUヘッダCUH、CUフッタCUF)には含まれない。
図26(b)は、インター予測パラメータ復号制御部3031Dで復号される符号化データの構成(予測ユニットの構成)を示す図である。追加予測フラグは、この予測ユニットのレイヤに含まれる。PUは、merge_modeを含む。merge_modeが1、すなわち、マージ予測モードの場合にはmerge_idxを含む。merge_idxの次に追加予測フラグ(ここでは残差予測フラグres_pred_flagと照度補償フラグic_enable_flag)が含まれる。merge_modeが0、すなわち、AMVP予測モードの場合には、図14(b)で説明した通りであるので説明を省略する。
図27は、追加予測フラグの符号化データ中の構成を示すためのシンタックステーブルである。図27のSE2701、SE2703に示すに示す通り、既に図24において説明した判定式!depth_flag && ViewId && PredMode != MODE_INTRAにより、マージインデックスmerge_idxの後に、残差予測フラグres_pred_flagと照度補償フラグic_enable_flagが含まれる。
以上の構成の追加予測フラグ復号部30311Dによれば、追加予測フラグをマージモードの場合に限定することにより、追加予測フラグが符号化データに存在するか否かの判定において、PUの予測パラメータを参照することがないため、予測パラメータとフラグの間の依存関係がなくなり、パース依存性の課題が解決される。これにより、追加予測フラグの復号処理が容易になるという効果を奏する。なお、後述の追加予測フラグ復号部30311D2も追加予測フラグ復号部30311D3も、PU単位のフラグとするなど、追加予測フラグ復号部30311Dと同様の構成である。
(追加予測フラグ復号部30311D2)
図28は、追加予測フラグ復号部30311D2の別の構成を示す概略図である。追加予測フラグ復号部30311D2は、追加予測フラグ判定部30314の代わりに、追加予測フラグ判定部30314D2を含む。また、追加予測フラグ判定部30314D2は、レイヤ判定部303141とインデックス判定部303143を含んで構成される。インデックス判定部303143は、マージインデックスmerge_idxが所定の値であるか否かを判定する。具体的には、マージインデックスmerge_idxがインターレイヤ予測(インタービュー予測)で得られる予測パラメータを主に用いるインデックス(インターレイヤ予測のマージ候補)であるか否かを判定する。インターレイヤ予測(インタービュー予測)がmerge_idx=0に割り当てられる場合、merge_idx=0であるか否かが判定される。マージインデックスmerge_idxが所定の値である場合、追加予測フラグ(ここではres_pred_flag)が存在すると判定される。
図29は、追加予測フラグの符号化データ中の構成を示すためのシンタックステーブルである。図29のSE2801、のSE2802に示す通り、図27のSE2701、SE2703に示す、既に図24で説明した判定式!depth_flag && ViewId && PredMode != MODE_INTRAにより加え、マージインデックスmerge_idxが所定の値であるか否かの判定式を用いる。ここではmerge_idx==0である場合に限り、追加予測フラグの一つである残差予測フラグres_pred_flagが符号化データに含まれる。図7の説明で説明したインターレイヤマージ候補(動き予測)がmerge_idx=0に対応する場合には、merge_idx=0に限定することは、マージ候補がインターレイヤマージ候補(動き予測)である場合もしくはインターレイヤマージ候補(動き予測)である可能性が高い場合に、残差予測フラグres_pred_flagを用いるか否かを示す追加予測フラグを符号化データから復号し、そうではない場合(インターレイヤマージ候補(動き予測)ではない場合)には、残差予測を用いない。残差予測フラグres_pred_flagをゼロにする。なお、上記で可能性が高いと記したのは、インターレイヤマージ候補(動き予測)が存在しない場合は、merge_idx=0が別のマージ候補である可能性があるためである。残差予測は、動き予測の場合に特に有効であるからこのような制限は、パース依存性とともに符号化効率を向上させる効果も奏する。
なおmerge_idx が所定の値であるか否かを示す判定式merge_idx==0ではなく、merge_idxが所定の範囲にあるかを示す判定式でも良い。例えば、merge_idx<=1を判定式としても良い。この場合、インターレイヤマージ候補(動き予測)である可能性が高い、merge_idx=0と、それ以外で有効性の高い、merge_mode=1がマージモード候補となる。
なお、図29では、残差予測フラグに限定して説明したが、照度補償フラグに適用しても良い。この場合、インターレイヤマージ候補(変位予測)に対応するマージ候補がインデックスDVのマージ候補であるとして、merge_idx==DVである場合に限り、追加予測フラグの一つである残差予測フラグres_pred_flagが符号化データに含まれるic_enable_flagを用いるか否かを示す追加予測フラグを符号化データから復号し、そうではない場合(インターレイヤマージ候補(変位予測)ではない場合)には、照度補償を用いない。残差予測フラグic_enable_flagをゼロにする。
以上の構成の追加予測フラグ復号部30311D2によれば、追加予測フラグが符号化データに存在するか否かの判定において、PUの予測パラメータを参照することがないため、予測パラメータとフラグの間の依存関係がなくなり、パース依存性の課題が解決される。これにより、追加予測フラグの復号処理が容易になるという効果を奏する。さらに、追加予測フラグ復号部30311D2によれば、追加予測フラグを、マージインデックスmerge_idxが、インターレイヤマージ候補(インタービューマージ候補)を示す所定の値の場合のみに復号することにより、追加予測が有効ではない場合に、追加予測フラグを符号化データに含めることがないため、符号化効率が向上するという効果を奏する。
(インター予測パラメータ復号部の変形例D3)
以下、インター予測パラメータ復号部の別の変形例として変形例Dの別の構成であるインター予測パラメータ復号部303D3を説明する。
図30(a)は、インター予測パラメータ復号部303D3で復号される符号化データの構成(符号化ユニットの構成)を示す図である。図26(a)と同一で、追加予測フラグは、符号化ユニットのレイヤ(CUヘッダCUH、CUフッタCUF)には含まれない。
図30(b)は、インター予測パラメータ復号部303D3で復号される符号化データの構成(予測ユニットの構成)を示す図である。追加予測フラグは、予測ユニットのレイヤに含まれる。PUは、merge_modeを含む。merge_modeが1、すなわち、マージ予測モードの場合で、既に図24において説明した判定式!depth_flag && ViewId && PredMode != MODE_INTRAが真の場合に、追加予測フラグ(ここでは残差予測フラグres_pred_flagと照度補償フラグic_enable_flag)が含まれる。追加予測フラグが0の場合は符号化データにmerge_idxを含む、追加予測フラグが1の場合は、merge_idxは符号化データに含まれず、後述のように導出される。
図31は、追加予測フラグが残差予測フラグ(res_pred_flag)の場合の符号化データの構成を示すシンタックステーブルである。図31のSE3101、SE3102に示す通り、既に図24において説明した判定式!depth_flag && ViewId && PredMode != MODE_INTRAにより、マージインデックスmerge_idxの前に、残差予測フラグres_pred_flagが含まれる。さらに、追加予測フラグである残差予測フラグres_pred_flagが0の場合に符号化データにmerge_idxが含まれ、res_pred_flagが1の場合には符号化データにmerge_idxは含まれない。
図32は、追加予測フラグが照度補償フラグ(ic_enable_flag)の場合の符号化データの構成を示すシンタックステーブルである。図32のSE3201、SE3202に示す通り、既に図24において説明した判定式!depth_flag && ViewId && PredMode != MODE_INTRAが真の場合には、マージインデックスmerge_idxの前に、照度補償フラグic_enable_flagが含まれる。さらに、追加予測フラグである照度補償フラグic_enable_flagが0の場合に符号化データにmerge_idxが含まれ、res_pred_flagが1の場合には符号化データにmerge_idxは含まれない。
図33は、インター予測パラメータ復号制御部の変形例Dの別の構成D3の構成を示す概略図である。インター予測パラメータ復号制御部3031D3は、追加予測フラグ復号部30311D3、マージインデックス復号部30312D3、ベクトル候補インデックス復号部30313を備える。追加予測フラグ復号部30311D3は、内部に追加予測フラグ判定部30314D3を備え、!depth_flag && ViewId && PredMode != MODE_INTRAの判定により、追加予測フラグが存在するか否かを判定する。追加予測フラグ復号部30311D3は、マージモードである場合に、追加予測フラグ判定部30314D3において、追加予測フラグが含まれると判定される場合には、符号化データのCUヘッダCUHもしくはCUフッタCUFから追加予測フラグを抽出する。マージインデックス復号部30312D3は、追加予測フラグ(res_pred_flagもしくはic_enable_flag)が0の場合にはマージインデックスmerge_idxを符号化データから抽出(復号)する。逆に、追加予測フラグが1の場合にはマージインデックスmerge_idxを符号化データから復号せずに導出する。具体的には、追加予測フラグが残差予測フラグres_pred_flagである場合には、マージ候補が図7で説明したインターレイヤマージ候補(動き予測)、すなわち、インターレイヤ候補(インタービュー候補)であり、特に動き予測となる場合のインデックスをマージインデックスmerge_idxとして設定する。例えば、インターレイヤマージ候補(動き予測)が主として(インターレイヤマージ候補(動き予測)が存在しない場合を除き)インデックス0として導出される場合には、merge_idx=0とする。また、追加予測フラグが照度補償フラグic_enable_flagである場合には図7で説明したインターレイヤマージ候補(変位予測)、すなわち、マージ候補が主にインターレイヤ候補(インタービュー候補)であり、特に変位予測となる場合のインデックスをマージインデックスmerge_idxとして設定する。例えば、変位予測を用いたインターレイヤ候補(インタービュー候補)が主にインデックスDVとして導出される場合(先頭候補を0番目としてDV+1番目に導出される候補の場合)には、merge_idx=DVとする。なお、インターレイヤ候補(インタービュー候補)の中で、動き予測の候補と変位予測の候補を分離しない場合には、インターレイヤマージ候補(動き予測)とインターレイヤマージ候補(変位予測)を区別せず、単にインターレイヤ候補(インタービュー候補)を選択しても良い。また、追加予測を行わない場合のインデックスが0〜4である場合において、追加予測を行う場合にそれ以外の番号、例えば、インターレイヤマージ候補(動き予測に5、追加予測を行うインターレイヤマージ候補(変位予測)に6というインデックスを割り当て、それらの動き予測であるか変位予測であるかが明確に区別されるマージ候補インデックスを選択しても良い。
以上の構成のインター予測パラメータ復号部303D3によれば、追加予測フラグが符号化データに存在するか否かの判定において、PUの予測パラメータを参照することがないため、予測パラメータとフラグの間の依存関係がなくなり、パース依存性の課題が解決される。これにより、追加予測フラグの復号処理が容易になるという効果を奏する。さらに、追加予測フラグを、マージインデックスmerge_idxの前に復号し、追加予測フラグが有効である場合には、マージインデックスmerge_idxの範囲を制限する(例えば選択肢となる候補が1つだけの場合には、マージインデックスを含めない)ことにより、追加予測が有効ではある場合に有効ではないマージインデックスを復号しないため、符号化効率向上の効果を奏する。
(インター予測パラメータ復号部の変形例D4)
以下、インター予測パラメータ復号部の別の変形例として変形例Dの別の構成であるインター予測パラメータ復号部303D4を説明する。
図34(a)は、インター予測パラメータ復号部303D4で復号される符号化データの構成(符号化ユニットの構成)を示す図である。追加予測フラグは、CU単位PUの前に位置するCUヘッダCUH含まれる。
図34(b)は、インター予測パラメータ復号部303D4で復号される符号化データの構成(予測ユニットの構成)を示す図である。追加予測フラグは、PU単位の符号化データには含まれない。
以上の構成のインター予測パラメータ復号部303D4によれば、追加予測フラグをCU単位のフラグとするが、追加予測フラグが符号化データに存在するか否かの判定において、PUの予測パラメータを参照することがないため、予測パラメータとフラグの間の依存関係がなくなり、パース依存性の課題が解決される。これにより、追加予測フラグの復号処理が容易になるという効果を奏する。さらに、変形例D3と同様、マージインデックスmerge_idxの前に復号される追加予測フラグを利用して、追加予測フラグが1である場合(追加予測を用いる場合)には、マージインデックスmerge_idxの範囲を制限する(例えば1候補の場合には、マージインデックスを含めない)ことにより、追加予測が有効ではある場合に有効ではないマージインデックスを復号しないため、符号化効率向上の効果を奏する。
(画像復号装置31の変形例E)
以下、画像復号装置31の変形例を説明する。以下の変形例では、インター予測パラメータ復号部303の代わりに、インター予測パラメータ復号部303Eを備え、インター予測パラメータ復号制御部3031の代わりにインター予測パラメータ復号制御部3031Eを、マージ予測パラメータ導出部3036の代わりにマージ予測パラメータ導出部3036Eを備える。それ以外の手段は、インター予測パラメータ復号部303と同じであるため説明を省略する。
図35は、インター予測パラメータ復号部303Eで復号される符号化データの構成を示す図である。図35(a)は符号化ユニットの構成、図35(b)は、予測ユニットの構成を示す。図35(a)、図35(b)に示すように本実施形態では、追加予測を行うか否かを示す追加予測フラグを明示的には符号化データには含めない。
図36は、インター予測パラメータ復号制御部3031Eの構成を示す概略図である。インター予測パラメータ復号制御部3031Eは、マージインデックス復号部30312E、ベクトル候補インデックス復号部30313Eを含んで構成される。インター予測パラメータ復号部303と比較すると、追加予測フラグ復号部30311を含まないことが特徴である。
マージ予測パラメータ導出部3036Eは、マージ候補導出部30361Eとマージ候補選択部30362を備える。マージ候補導出部30361Eは、マージ候補導出部30361と異なり、予測パラメータとして、ベクトルmvLXや参照ピクチャインデックスrefIdxLXだけでなく、追加予測フラグを含む。追加予測フラグは、残差予測フラグres_pred_flagと照度補償フラグic_enable_flagである。
図37は、マージ候補導出部30361Eが導出するマージ候補を示す図である。図37(a)は追加予測として残差予測を含む場合、図37(b)は追加予測として照度補償を含む場合、図37(c)は追加予測として残差予測と照度補償を含む場合を示す。
図37(a)に示すように、マージ候補導出部30361Eは、追加予測として残差予測を行う構成の場合には、マージ候補として、残差予測を行うマージ候補と、残差予測を行わないマージ候補を導出する。具体的には、残差予測を行わないマージ候補として、インターレイヤマージ候補(動き予測)、空間マージ候補、インターレイヤマージ候補(変位予測)、時間マージ候補、結合マージ候補、ゼロマージ候補を導出し、残差予測を行う候補として、インターレイヤマージ候補(動き予測)を導出する。なお、図37(a)のインターレイヤマージ候補(動き予測)は、図7を用いて説明したインターレイヤマージ候補導出部3036121により導出されるマージ候補であり、図37(a)のインターレイヤマージ候補(変位予測)はインターレイヤ変位マージ候補導出部3036123により導出されるマージ候補である(以下同様)。
図37(b)に示すように、マージ候補導出部30361Eは、追加予測として照度補償を行う構成の場合には、マージ候補として、照度補償を行うマージ候補と、照度補償を行わないマージ候補を導出する。具体的には、照度補償を行わないマージ候補として、インターレイヤマージ候補(動き予測)、空間マージ候補、インターレイヤマージ候補(変位予測)、時間マージ候補、結合マージ候補、ゼロマージ候補を導出し、照度補償を行う候補として、インターレイヤマージ候補(変位予測)を導出する。
図37(c)に示すように、マージ候補導出部30361Eは、追加予測として残差予測と照度補償の両者を行う構成の場合には、マージ候補として、残差予測を行うマージ候補と照度補償を行うマージ候補、残差予測と照度補償を行わないマージ候補を導出する。具体的には、残差予測と照度補償を行わないマージ候補として、インターレイヤマージ候補(動き予測)、空間マージ候補、インターレイヤマージ候補(変位予測)、時間マージ候補、結合マージ候補、ゼロマージ候補を導出し、残差予測を行う候補として、インターレイヤマージ候補(動き予測)、照度補償を行う候補として、インターレイヤマージ候補(変位予測)を導出する。
この場合、追加予測フラグをCU単位のフラグもしくはPU単位のフラグとして含めないため、追加予測フラグが符号化データに存在するか否かの判定が不要になる、すなわち、追加予測フラグの復号のために、PUの予測パラメータを参照することがないため、予測パラメータとフラグの間の依存関係がなくなり、パース依存性の課題が解決される。これにより、追加予測フラグの復号処理が容易になるという効果を奏する。さらに、マージ候補導出部30361Eで追加予測を行うマージ候補と、追加予測を行わないマージ候補を導出することにより、追加予測を行うか否かはマージ候補の一つとして選択することになる。これにより、追加予測が有効ではない場合において、PU単位で追加予測を行うか否かを選択することができるため、符号化効率が向上するという効果を奏する。また、追加予測が効果的である予測パラメータの場合、例えば、インターレイヤマージ候補(動き予測)に限定して、追加予測を行うマージ候補を導出するため、追加予測が効果的ではない予測パラメータの場合に、追加予測を行う候補を設けることがないため、符号化効率が向上するという効果を奏する。
(インター予測パラメータ復号部の変形例F1)
以下、インター予測パラメータ復号部の変形例としてインター予測パラメータ復号部303F1を説明する。変形例F1では、追加予測として照度予測を行う場合を扱う。図43は、インター予測パラメータ復号部303F1の構成を示すブロック図である。図43に示すように、インター予測パラメータ復号部303F1は、照度補償フラグ復号部30311F1、分割モード復号部、マージフラグ復号部30317、マージインデックス復号部30312、インター予測フラグ復号部、参照ピクチャインデックス復号部30318、ベクトル候補インデックス復号部30313、ベクトル差分復号部を備える。
照度補償フラグ復号部30311F1は、照度補償フラグ判定部30314F1において照度補償フラグic_enable_flagが符号化データに含まれると判定される場合、符号化データから照度補償フラグic_enable_flagを復号し、逆に符号化データに含まれないと判定される場合には、符号化データの復号を行わずに、照度補償フラグic_enable_flagに0(照度予測を行わないことを示す値)を設定する。
図44は、照度補償フラグ復号部30311F1の動作を示すフローチャートである。
S1101:マージフラグmerge_flagを参照し、対象ブロックがマージモードであるか否か(merge_flagが1であるか否か)を判定する。対象ブロックがマージモードであれば(merge_flag=1)、符号化データから、照度補償フラグic_flagを復号する(S1105)。マージモードでなければ(merge_flag=0)、S1104に遷移する。マージフラグ復号部30317で復号される(以下同様)。
S1104:参照ピクチャインデックスref_idx_LXを参照し、対象ブロックがインターレイヤ予測(インタービュー予測)であるかを判定する。以下、インタービュー予測とインターレイヤ予測を区別せず、単にインタービュー予測と表記する。インターレイヤ予測であれば、符号化データから照度補償フラグic_enable_flagを復号する(S1105)。そうでなければ、ic_enable_flagに照度補償を行わないことを示す値である00を設定する(S1106)。マージモード以外のref_idx_LXは、参照ピクチャインデックス復号部30318において符号化データから復号される(以下同様)。
図46は、インター予測パラメータ復号部303F1で復号される照度補償フラグic_enable_flagの符号化データの構成を示す図である。図46示すように、条件SF1001&&(条件SF1002||条件SF1003)を満たす場合に、照度補償フラグic_enable_flagが符号化データに含まれる。
具体的には、
スライス単位の照度補償フラグslice_ic_enable_flagの条件(SF1001)は以下の式で示される。
slice_ic_enable_flag 式(F−1)
マージモードであるか否かの条件(SF1002)は、以下の式で示される。
merge_flag[ x0 ][ y0 ] 式(F−2)
マージモード以外(AMVPモード)であり、参照ピクチャインデックスがインターレイヤ予測を示す条件(SF1003)は、以下の式で示される。
(!merge_flag[ x0 ][ y0 ] &&anyIvRefPicFlag 式(F−3)
なお、anyIvRefPicFlagは、対象ブロック(対象CU)にインターレイヤ予測(インタービュー予測)が含まれるか否かを示すフラグであり、以下の式をX=0、X=1に対して実行することで導出される(Y=1-X)
anyIvRefPicFlag = anyIvRefPicFlag | |
(inter_pred_idc[ x0 ][ y0 ] ! = Pred_LY && refViewIdxLX[ x0 ][ y0 ] ! = ViewIdx) | |
(inter_pred_idc[ x0 ][ y1 ] ! = Pred_LY && refViewIdxLX[ x0 ][ y1 ] ! = ViewIdx) | |
(inter_pred_idc[ x1 ][ y0 ] ! = Pred_LY && refViewIdxLX[ x1 ][ y0 ] ! = ViewIdx) | |
(inter_pred_idc[ x1 ][ y1 ] ! = Pred_LY && refViewIdxLX[ x1 ][ y1 ] ! = ViewIdx) 式(F−4)
ここで、x1、y1は、対象CUに複数の予測ユニットが含まれている場合における予測ユニットの座標を示す。具体的には、座標[x0][x0]が1つ目の予測ユニット、座標[x0][y1]が2つ目の予測ユニット、座標[x1][y0]が3つ目の予測ユニット、座標[x1][y1]が3つ目の予測ユニットに対応する。インター予測フラグinter_pred_idc[][]は、予測ユニットの予測方向を示し、L0予測(Pred_L0)、L1予測(Pred_L1)、双予測(Pred_BI)の何れかである。従って、インター予測フラグinter_pred_idc[][]がPred_LYではないとは、X=Y-1であるから、Pred_LXもしくはPred_BIの場合を意味する。両者ともLX予測を用いる。
refViewIdxLX[][] ! = ViewIdx)の式は、LXの参照ピクチャインデックスで指定される参照ピクチャのビューIDが対象ピクチャのビューIDと異なるか(インターレイヤ予測が用いられるか)の判定である。ここでは、インターレイヤ予測が用いられるかの判定として、ビューIDを用いる第2の判定方法を用いる。上記式(F−4)内では、座標[x][y]、LX予測で指定される予測ユニットにおいて、インターレイヤ予測が行われているかを示す式を、以下の式(F−5)とすると、対象CU内の予測ユニットに関する式(F−5)の論理和として定義される。
inter_pred_idc[ x][ y ] ! = Pred_LY && refViewIdxLX[ x ][ y ] ! = ViewIdx) 式(F−5)
なお、refViewIdxLX[ x ][ y ]は、座標[x][y]の予測ユニットがLXリストを用いて参照する参照ピクチャのビューIDを示す。LX予測の参照ピクチャリストがRefPicListLXであり、参照ピクチャインデックスがref_idx_lX[ x ][ y ]である場合、refViewIdxLX[ x0 ][ y ]は、以下の式で導出可能である。
refViewIdxLX[ x ][ y ] = ViewIdx of the RefPicListL0[ref_idx_lX[ x ][ y ]] 式(F−6)
なお、インター予測フラグinter_pred_idcと予測リストフラグpredFlagLXは相互に対応するため、インターレイヤ予測が用いられるか否かの判定式として、式(F−4)の代わりに、式(F−4´)を用いることもできる。
anyIvRefPicFlag = anyIvRefPicFlag | |
(predFlagLX[ x0 ][ y0 ] == 1 && refViewIdxLX[ x0 ][ y0 ] ! = ViewIdx) ||
(predFlagLX[ x0 ][ y1 ] == 1 && refViewIdxLX[ x0 ][ y1 ] ! = ViewIdx) ||
(predFlagLX[ x1 ][ y0 ] == 1 && refViewIdxLX[ x1 ][ y0 ] ! = ViewIdx) ||
(predFlagLX[ x1 ][ y1 ] == 1 && refViewIdxLX[ x1 ][ y1 ] ! = ViewIdx) 式(F−4´)
上記の式(F−4)では、対象ブロック(対象CU)に含まれる全ての予測ユニットについて和(||)をとることにより、対象CUに含まれる予測ユニットの何れかにおいてインターレイヤ予測が用いられるかが判定される。
以上の構成の変形例F1では、予測ユニットがマージモードである場合には、参照ピクチャインデックスによらずに、照度補償フラグを符号化データから復号し、予測ユニットがAMVPモードである場合には、上記予測ユニットの参照ピクチャインデックスがインターレイヤ予測(インタービュー予測)を示す場合には、照度補償フラグを符号化データから復号し、上記の何れでもない場合には、照度補償フラグを符号化データから復号せずに照度補償を行わない。
以上の構成の変形例F1では、予測ユニットがマージモードである場合には、参照ピクチャインデックスref_idx_LXによらずに、照度補償フラグic_enable_flagを符号化データから復号するか否かを判定することにより、照度補償フラグic_enable_flagのパースに、マージモードの予測パラメータ(参照ピクチャインデックスref_idx_LX)の導出が必要であるというパース依存性を解決する効果を奏する(効果F1)。なお、マージモードの場合には、参照ピクチャインデックスref_idx_LXは、符号化データで明示的には符号化されないため、マージモードにおいてref_idx_LXを用いる従来方式では、パース依存性の問題が存在していた。マージモード以外の場合(AMVPモードの場合)には、参照ピクチャインデックスref_idx_LXは、符号化データで明示的に符号化されるため、照度補償フラグic_enable_flagのパース時点で、参照ピクチャインデックスref_idx_LXの値は自明であり、ref_idx_LXに依存してic_enable_flagを復号してもパース依存性の問題は存在しない。
なお、照度補償を行う場合をマージモードの場合に限定する構成としても良い。この場合、照度補償フラグ復号部は、マージモードの場合にのみ、ic_enable_flagを復号し、マージモード以外の場合には、ic_enable_flagを復号しない(以下、同様)。この構成では、AMVPモードでは照度補償を行わないため、インタービュー予測であるかの判定(参照ピクチャインデックスref_idx_LXを用いた判定)が不要になるため、照度補償フラグの導出が容易になるという効果を奏する。また、AMVPモードにおける照度補償を行わないため予測画像生成が容易になるという効果を奏する。
さらに、上記、照度補償フラグ復号部30311F1は、さらに、照度補償フラグを符号化データから復号する場合を、符号化ユニットの分割モードが分割しないことを示す2N×2Nの場合に限定しても良い(変形例F1´と呼ぶ)。
図45は、2N×2Nに限定する場合の照度補償フラグ復号部30311F1の動作を示すフローチャートである。
S1100:分割モード復号部で符号される分割モードpart_modeを参照し、part_modeが対象符号化ユニットを分割しないことを示す2N×2Nか否かを判定する。2N×2N以外の場合には、照度補償フラグic_enable_flagに0を設定する(S1106)。2N×2Nの場合にはS1101に遷移する。
S1101:マージフラグmerge_flagを参照し、対象ブロックがマージモードであるか否か(merge_flagが1であるか否か)を判定する。対象ブロックがマージモードであれば符号化データから、照度補償フラグic_flagを復号する(S1105)。マージモードでなければ、S1104に遷移する。
S1104:参照ピクチャインデックスref_idx_LXを参照し、対象ブロックがインターレイヤ予測であるかを判定する。インターレイヤ予測であれば、符号化データから照度補償フラグic_enable_flagを復号する(S1105)。そうでなければ、照度補償フラグic_enable_flagに0を設定する(S1106)
この場合には、符号化データ構成は、図46の符号化データ構成と類似するが、条件SF1001の代わりに条件SF1101が用いられる。すなわち、式(F−1)が下記の式(F−1´)に置き換えられる。
slice_ic_enable_flag && PartMode = = PART_2Nx2N 式(F−1´)
条件SF1002、条件SF1003は既に説明した通りであるが、条件SF1003中のanyIvRefPicFlagの導出式は、簡略化される。具体的には、2N×2Nの場合、対象CUに含まれる予測ユニットは一つだけであるから、式(F−4)の代わりに、以下の式(F−7)で導出可能である。
anyIvRefPicFlag = anyIvRefPicFlag | |
(inter_pred_idc[ x0 ][ y0 ] ! = Pred_LY && refViewIdxLX[ x0 ][ y0 ] ! = ViewIdx
式(F−7)
さらに、L0予測とL1予測の場合を明示的に記載すると、以下のように変形できる。
anyIvRefPicFlag = (inter_pred_idc[ x0 ][ y0 ] ! = Pred_L1 && refViewIdxL0[ x0 ][ y0 ] ! = ViewIdx) || (inter_pred_idc[ x0 ][ y0 ] ! = Pred_L0 && refViewIdxL1[ x0 ][ y0 ] ! = ViewIdx) 式(F−7´)
変形例F1´の照度補償フラグ復号部は、符号化ユニットの分割モードが分割しないことを示す、2N×2Nである場合に、照度補償フラグic_enable_flagを符号化データから復号する。照度補償フラグic_enable_flagを復号する場合を限定することにより、照度補償フラグic_enable_flagの符号量を削減する効果を奏する。また、対象CUに含まれる予測ユニットを1つに限定するため、インターレイヤ予測が含まれるか否かの判定anyIvRefPicFlagの処理量を低減する効果を奏する。また、照度補償を行う場合も2N×2Nに限定されるため、例えば8×8CUにおいて2N×N、N×2Nに相当するブロックサイズが8×4、4×8の場合を除外することになるため、ブロックサイズが小さい場合に特に問題となる処理量を低減する効果を奏する。
なお、分割モードの2N×2N制限は、以下に説明する変形例F2以降の変形例においても併用することも可能である。
(インター予測パラメータ復号部の変形例F2)
以下、インター予測パラメータ復号部の変形例としてインター予測パラメータ復号部303F2を説明する。変形例F2では、追加予測として照度予測を行う場合を扱う。図47は、インター予測パラメータ復号制御部3031F2の構成を示すブロック図である。図47に示すように、インター予測パラメータ復号制御部3031F2は、照度補償フラグ復号部30311F2、分割モード復号部、マージフラグ復号部30317、マージインデックス復号部30312、インター予測フラグ復号部、参照ピクチャインデックス復号部30318、ベクトル候補インデックス復号部30313、ベクトル差分復号部を備える。
照度補償フラグ復号部30311F2は、照度補償フラグ判定部30314F2において照度補償フラグic_enable_flagが符号化データに含まれると判定される場合、符号化データから照度補償フラグic_enable_flagを復号し、逆に符号化データに含まれないと判定される場合には、符号化データの復号を行わずに、照度補償フラグic_enable_flagに0を設定する。
図48は、照度補償フラグ復号部30311F2の動作を示すフローチャートである。
S1201:マージフラグmerge_flagを参照し、対象ブロックがマージモードであるか否か(merge_flagが1であるか否か)を判定する。対象ブロックがマージモードであれば符号化データから、照度補償フラグic_flagを復号する(S1203)。マージモードでなければ、S1204に遷移する。
S1203:マージインデックスmerge_idxを参照し、merge_idxが所定の値であるか否かを判定する。所定の値の場合には、照度補償フラグic_enable_flagを0に設定する(S1206)。所定の値以外であれば、符号化データから照度補償フラグic_enable_flagを復号する(S1205)。merge_idxはマージインデックス復号部30312で復号される(以下同様)。
S1204:参照ピクチャインデックスref_idx_LXを参照し、対象ブロックにインターレイヤ予測が含まれるかを判定する。インターレイヤ予測が含まれる場合(anyIvRefPicFlagが1)には、符号化データから照度補償フラグic_enable_flagを復号する(S1205)。そうでなければ(anyIvRefPicFlagが0)、照度補償フラグic_enable_flagに0を設定する(S1206)
図49は、インター予測パラメータ復号部303F2で復号される照度補償フラグic_enable_flagの符号化データの構成を示す図である。照度補償フラグ復号部30311F2は、内部の照度補償フラグ判定部30314F2において、照度補償フラグを符号化データから復号するか否かを判定する。
条件SF2001は、既に説明した式(F−1´)で表現される。
条件SF2002は、以下の式で表現される。
merge_flag[ x0 ][ y0 ] && merge_idx[ x0 ][ y0 ] != 0 式(F−2´)
条件SF2003は、既に説明した式(F−3)の式で表現される。
変形例F2では、S1201、S1203で行われる式(F−2´)の判定により、マージモードの場合においても、マージインデックスが所定の値である場合には、照度補償フラグic_enable_flagを符号化データから復号せず0に設定する。マージインデックスが所定の値(ここでは0)の場合には、参照ピクチャは対象ピクチャと同一レイヤである(動き予測である)ことが多い(動き予測であることが多い)。参照ピクチャが対象ピクチャと同一レイヤである場合には照度補償は有効ではないことから、このような場合に照度補償フラグic_enable_flagを符号化データから復号することは無駄である。変形例F2では、このような場合を防ぐことができる。
上記照度補償フラグ復号部30311F2は、予測画像の生成対象である予測ユニットがマージモードであり、かつ、マージフラグインデックスが所定の値以外の場合に、照度補償フラグic_enable_flagを符号化データから復号する。また、予測ユニットがAMVPモードであり、かつ、予測ユニットの参照ピクチャインデックスがインターレイヤ予測を示す場合には、照度補償フラグic_enable_flagを符号化データから復号する。上記の何れでもない場合には、照度補償フラグic_enable_flagを符号化データから復号せずに照度補償を行わない。
変形例F2では、変形例1の効果F1に加え、また、マージモードの場合に、マージフラグインデックスが所定の値以外の場合に限定して、照度補償フラグを復号(符号化)することにより、照度補償フラグの符号量を削減する効果を奏する(効果F2)。
(インター予測パラメータ復号部の変形例F3)
以下、インター予測パラメータ復号部の変形例としてインター予測パラメータ復号部303F3を説明する。変形例F3では、追加予測として照度予測を行う場合を扱う。図50は、インター予測パラメータ復号制御部3031F3の構成を示すブロック図である。図50に示すように、インター予測パラメータ復号制御部3031F3は、照度補償フラグ復号部30311F3、分割モード復号部、マージフラグ復号部30317、マージインデックス復号部30312、インター予測フラグ復号部、参照ピクチャインデックス復号部30318、ベクトル候補インデックス復号部30313、ベクトル差分復号部、特定マージインデックス照度補償スキップフラグ導出部30319を備える。
照度補償フラグ復号部30311F3は、照度補償フラグ判定部30314F3において照度補償フラグic_enable_flagが符号化データに含まれると判定される場合、符号化データから照度補償フラグic_enable_flagを復号し、逆に符号化データに含まれないと判定される場合には、符号化データの復号を行わずに、照度補償フラグic_enable_flagに0を設定する。
特定マージインデックス照度補償スキップフラグ導出部30319は、符号化データから特定マージインデックス照度補償スキップフラグic_skip_mergeidx0_flagを導出する。
インター予測パラメータ復号部303F3を含む画像復号装置31は、エントロピー復号部301として、エントロピー復号部301F3を含んでも良い。図53は、エントロピー復号部301F3の構成を示すブロックである。エントロピー復号部301F3は内部に特定マージインデックス照度補償スキップフラグ導出部30319を含み、符号化データからic_skip_mergeidx0_flagを復号し、照度補償フラグ判定部30314F3に通知する。
図51は、照度補償フラグ復号部30311F3の動作を示すフローチャートである。
S1301:マージフラグmerge_flagを参照し、対象ブロックがマージモードであるか否か(merge_flagが1であるか否か)を判定する。対象ブロックがマージモードであればマージモードであれば、S1302に遷移し、マージモードでなければ、S1304に遷移する。
S1302:特定マージインデックス照度補償スキップフラグic_skip_mergeidx0_flagが有効であるかを判定し、有効であればS1303に遷移。有効でなければ、符号化データから、照度補償フラグを復号する(S1305)。ic_skip_mergeidx0_flagは、特定マージインデックス照度補償スキップフラグ導出部30319で復号される(以下同様)。
S1303:マージインデックスmerge_idxを参照し、マージインデックスmerge_idxが所定の値であるか否かを判定する。所定の値の場合には、照度補償フラグic_enable_flagを0に設定する(S1306)。所定の値以外であれば、符号化データから、照度補償フラグic_enable_flagを復号する(S1305)
S1304:参照ピクチャインデックスref_idx_LXを参照し、対象ブロックにインターレイヤ予測が含まれるかを判定する。インターレイヤ予測が含まれる場合(anyIvRefPicFlagが1)には、符号化データから照度補償フラグic_enable_flagを復号する(S1305)。そうでなければ(anyIvRefPicFlagが0)、照度補償フラグic_enable_flagに0を設定する(S1306)
図52は、インター予測パラメータ復号部303F3で復号される照度補償フラグic_enable_flagの符号化データの構成を示す図である。
条件SF1101は、既に説明した式(F−1´)で表現される。
条件SF1202は、以下の式で表現される。
merge_flag[ x0 ][ y0 ] &&(merge_idx[ x0 ][ y0 ] != 0 || !ic_skip_mergeidx0_flag) 式(F−2´´´)
条件SF1303は、既に説明した式(F−3)の式で表現される。
変形例F3では、S1301〜S1303で行われる式(F−2´´´)の判定により、マージモードの場合においても、ic_skip_mergeidx0_flagが1かつ、マージインデックスmerge_idxが所定の値である場合には、照度補償フラグic_enable_flagを復号せず0とする。これによりマージインデックスmerge_idxが動き予測であることが多いマージ候補であることを示す場合に、照度補償フラグic_enable_flagを復号するような無駄を防ぐことができる。変形例F3は変形例F2と異なりic_skip_mergeidx0_flagが1である場合にのみ、マージインデックスmerge_idxによる判定(マージ候補の特定)を行う。これは、参照ピクチャの構造、及びシーケンスによっては、マージインデックスmerge_idxが所定の値の場合にも、インターレイヤ予測の割合が高く、照度予測を行わないマージ候補の選定を行うと逆に符号化効率を低下させることがあるためである。
図54は、特定マージインデックス照度補償スキップフラグic_skip_mergeidx0_flagの符号化データの構成を示す図である。図54のSF3004に示すとおり、スライスヘッダにおいて、スライス単位の照度補償フラグslice_ic_enable_flagが有効である場合に、ic_skip_mergeidx0_flagが符号化される。
変形例F3では、変形例1の効果F1に加え、変形例2の効果F2に加え、さらに、マージフラグインデックスが所定の値以外の場合に限定する場合を、特定マージインデックス照度補償スキップフラグが有効である場合に限定することにより、特定マージインデックスの場合でもインターレイヤ予測が多く用いる場合には照度補償を用いることができる。参照ピクチャと符号化対象ピクチャとのピクチャ間隔が離れた場合のような、対象ピクチャでインターレイヤ予測が多く用いられる場合では、特定マージインデックスの場合でもインターレイヤ予測が多く用いるため、照度補償を有効に活用する効果を奏する(効果F3)。
また、変形例F3の特定マージインデックス照度補償スキップフラグ導出部30319は、特定マージインデックス照度補償スキップフラグic_skip_mergeidx0_flagを符号化データから復号する。上記のようにマージフラグインデックスが所定の値以外の場合に限定するか否かを示すフラグを、符号化データから導出することによって、符号化装置で、ピクチャ構造や表示順序(POC)、シーケンスに応じて、照度予測を行わないマージ候補を設定するか否かを、設定することができるため、符号化効率が向上する効果を奏する。
(特定マージインデックス照度補償スキップフラグ導出部30319B)
変形例F3の別の構成として、ic_skip_mergeidx0_flagを符号化データから復号せず、表示順序(POC)から導出しても良い。以下、特定マージインデックス照度補償スキップフラグ導出部30319の代わりに、特定マージインデックス照度補償スキップフラグ導出部30319Bを用いる構成を説明する。
図55は、階層参照構造と呼ばれる参照構造の場合の例を示す。この例は、周期8の場合であり、POCが0、8、4、2、1、3、6、4、7の順で符号化される。POCが8のピクチャでは、参照ピクチャは0であり、POCが4のピクチャでは、参照ピクチャは8と0、POCが2のピクチャでは、参照ピクチャは4と0、POCが1のピクチャでは、参照ピクチャは2と0である。この場合、POCが8のピクチャ(POC%8=0)の場合、最も時間間隔が短い参照ピクチャまでの距離(POCの差)は8であり、POCが4のピクチャ(POC%4=0)では4、POCが2のピクチャ(POC%2=0)では2、POCが1のピクチャ(POC%2=1)では1のように、POCに応じて、参照ピクチャまでの時間間隔が異なる。参照ピクチャまでの時間間隔が大きい場合、異なる時間の同じレイヤの参照ピクチャよりも、同じ時間の異なるレイヤの参照ピクチャの方が対象画像に近くなるため、参照ピクチャとして使用されやすい。すなわち、インターレイヤ画像が参照ピクチャとして使用されやすい(インターレイヤ予測が使用されやすい)。
図56(a)は、特定マージインデックス照度補償スキップフラグ導出部30319Bの動作を示すフローチャートである。
S3007B 参照ピクチャと所定の値PERIOD(ここでは8)との剰余が0である場合には、同じレイヤの参照ピクチャの時間間隔が大きく、インターレイヤ予測が使用されやすいと判定し、ic_skip_mergeidx0_flagを0とする(S3008)。それ以外の場合には、ic_skip_mergeidx0_flagを1とする(S3009)。
すなわち、以下の式によってic_skip_mergeidx0_flagを導出する。
ic_skip_mergeidx0_flag = ((pic_order_count % PERIOD)== 0 )? 0 : 1
従って、特定の周期ではic_skip_mergeidx0_flagが1となる。この場合に、上記の照度補償フラグ復号部30311F3によれば、マージインデックスが特定の値において照度補償フラグを符号化データから復号せずに0となる。
(特定マージインデックス照度補償スキップフラグ導出部30319C)
変形例F3のさらに別の構成として、ic_skip_mergeidx0_flagを符号化データから復号せず、表示順序(POC)と参照ピクチャリストに含まれる参照ピクチャとの距離に応じて導出しても良い。以下、特定マージインデックス照度補償スキップフラグ導出部30319の代わりに、特定マージインデックス照度補償スキップフラグ導出部30319Cを用いる構成を説明する。
図56(b)は、特定マージインデックス照度補償スキップフラグ導出部30319Cの動作を示すフローチャートである。
S3007C 対象ピクチャのPOCと、参照ピクチャのPOCが大きい場合には、同じレイヤの参照ピクチャの時間間隔が大きく、インターレイヤ予測が使用されやすいと判定し、ic_skip_mergeidx0_flagを0とする(S3008)。それ以外の場合には、ic_skip_mergeidx0_flagを1とする(S3009)。
参照ピクチャリストL0、L1に含まれる参照ピクチャを走査し、対象ピクチャと異なるレイヤの参照ピクチャの内、対象ピクチャに最も近いPOCの参照ピクチャaPicXを特定する。
具体的には、対象ピクチャがcurrPicの場合、参照ピクチャリストL0、L1に含まれる参照ピクチャであって、対象ピクチャと同じレイヤのピクチャaPicにおいて、POC間隔
DiffPicOrderCnt( aPic, currPic )
が最小となるaPicである、aPicXを特定する。特定されたaPicXと、対象ピクチャとのPOC距離が所定の値THよりも大きい場合(ステップS3007CにおけるPOC間隔が大きい場合の判定)には、インターレイヤ予測が使用されやすいため、ic_skip_mergeidx0_flagを0とする。
ic_skip_mergeidx0_flag = DiffPicOrderCnt( aPic, currPic ) > TH ? 0 : 1
なお、上記条件は所定の値THよりも小さい場合(もしくは以下の場合)にic_skip_mergeidx0_flagを1とすることと等価である。
特定マージインデックス照度補償スキップフラグ導出部は、特定マージインデックス照度補償スキップフラグを表示順序(POC)を用いて導出することを特徴とする。
(特定マージインデックス照度補償スキップフラグ導出部30319D)
変形例F3のさらに別の構成として、ic_skip_mergeidx0_flagを符号化データから復号せず、参照ピクチャにおいて、イントラ予測が用いられるか否かに応じて導出しても良い。以下、特定マージインデックス照度補償スキップフラグ導出部30319の代わりに、特定マージインデックス照度補償スキップフラグ導出部30319Dを用いる構成を説明する。
図57は、特定マージインデックス照度補償スキップフラグ導出部30319Dの動作を示すフローチャートである。
S3007D 対象ブロックに対応する位置に属する、参照ピクチャのブロックにおいて、イントラ予測が用いられているかを判定する。イントラ予測が用いられている場合には、インターレイヤ予測が使用されやすいと判定し、ic_skip_mergeidx0_flagを0とする(S3008)。それ以外の場合には、ic_skip_mergeidx0_flagを1とする(S3009)。
すなわち、以下の式によってic_skip_mergeidx0_flagを導出する。
ic_skip_mergeidx0_flag = (PRED_MODE [x0][y0] of xxx is MODE_INTRA)? 0 : 1
特定マージインデックス照度補償スキップフラグ導出部は、対象ブロックに対応する位置に属する、第1のレイヤ画像のブロックにおいて、イントラ予測が用いられているか否かに応じて、特定マージインデックス照度補償スキップフラグを導出することを特徴とする。
(インター予測パラメータ復号部の変形例F4)
以下、インター予測パラメータ復号部の変形例としてインター予測パラメータ復号部303F4を説明する。変形例F4では、追加予測として照度予測を行う場合を扱う。図58は、インター予測パラメータ復号制御部3031F4の構成を示すブロック図である。図58に示すように、インター予測パラメータ復号制御部3031F4は、照度補償フラグ復号部30311F4、分割モード復号部、マージフラグ復号部30317、マージインデックス復号部30312、インター予測フラグ復号部、参照ピクチャインデックス復号部30318、ベクトル候補インデックス復号部30313、ベクトル差分復号部、特定マージインデックス照度補償スキップフラグ導出部30319を備える。
照度補償フラグ復号部30311F4は、照度補償フラグ判定部30314F4において照度補償フラグic_enable_flagが符号化データに含まれると判定される場合、符号化データから照度補償フラグic_enable_flagを復号し、逆に符号化データに含まれないと判定される場合には、符号化データの復号を行わずに、照度補償フラグic_enable_flagに0を設定する。
図59は、照度補償フラグ復号部30311F4の動作を示すフローチャートである。
S1400:分割モードpart_modeを参照し、part_modeが対象符号化ユニットを分割しないことを示す2N×2Nか否かを判定する。2N×2N以外の場合には、照度補償フラグic_enable_flagを0に設定する(S1406)。2N×2Nの場合にはS1401に遷移する。
S1401:マージフラグmerge_flagを参照し、対象ブロックがマージモードであるか否か(merge_flagが1であるか否か)を判定する。対象ブロックがマージモードであれば(merge_flag=1)、S1402に遷移し、マージモードでなければ(merge_flag=0)、S1404に遷移する。S1404:対象ブロックに隣接する隣接ブロックの参照ピクチャインデックスref_idx_LXを参照し、対象ブロックにインターレイヤ予測が含まれるかを判定する。隣接ブロックにインターレイヤ予測が含まれる場合(anyNeighIvRefPicFlagが1)には、符号化データから照度補償フラグic_enable_flagを復号する(S1405)。そうでなければ(anyNeighIvRefPicFlagが0)、照度補償フラグic_enable_flagに0を設定する(S1406)
図60は、インター予測パラメータ復号部303F3で復号される符号化データの構成を示す図である。
条件SF1101は、既に説明した式(F−1´)で表現される。
条件SF1202は、以下の式で表現される。
merge_flag[ x0 ][ y0 ] && anyNeighIvRefPicFlag 式(F−2´´´´)
条件SF1003は、既に説明した式(F−3)の式で表現される。
なお、式(F−2´´´´)中のanyNeighIvRefPicFlagは、対象ブロックの座標が[x0][y0]である場合において、以下の式をX=0、X=1に対して実行することで導出される(Y=1-X)。すなわち、式(F−8)では、参照リストLXにおいて、L0とL1の両方を参照することにより、インターレイヤ予測が用いられるか否かが導出される。
anyIvRefPicFlag = anyIvRefPicFlag || inter_pred_idc[ x0-1 ][ y0 ] ! = Pred_LY && refViewIdxLX[ x0-1 ][ y0 ] ! = ViewIdx) || inter_pred_idc[ x0 ][ y0-1 ] ! = Pred_LY && refViewIdxLX[ x0 ][ y0-1 ] ! = ViewIdx) 式(F−8)
ここで、座標[x0 - 1][y0]は、対象ブロックの左に隣接するブロックの座標、座標[x0][y0-1]は、対象ブロックの上に隣接するブロックの座標を示し、上記式は、対象ブロックの左に隣接するブロックもしくは、対象ブロックの上に隣接するブロックがインターレイヤ予測(refViewIdxLX とViewIdxが異なる場合)であれば、隣接ブロックにインターレイヤ予測を用いていると判定する。
変形例F4では、予測ユニットがマージモードである場合には、対象ブロックの参照ピクチャインデックスref_idx_LXによらずに、対象ブロックに隣接するブロックの参照ピクチャインデックスref_idx_LXに応じて、照度補償フラグic_enable_flagを符号化データから復号するか否かを判定することにより、照度補償フラグic_enable_flagのパースに、対象ブロックのマージモードの予測パラメータ(参照ピクチャインデックスref_idx_LX)の導出が必要であるというパース依存性を解決する効果を奏する。
(インター予測パラメータ復号部の変形例F5)
以下、インター予測パラメータ復号部の変形例としてインター予測パラメータ復号部303F5を説明する。変形例F5では、追加予測として照度予測を行う場合を扱う。図61は、インター予測パラメータ復号制御部3031F5の構成を示すブロック図である。図61に示すように、インター予測パラメータ復号制御部3031F5は、照度補償フラグ復号部30311F5、参照ピクチャインデックス復号部30318を備える。
照度補償フラグ復号部30311F5は、対象CUに含まれる予測ユニットにおいてL0予測でインターレイヤ予測が行われる場合(後述のanyIvRefPicFlagInL0が1)に照度補償フラグic_enable_flagを符号化データから復号する。それ以外の場合には、ic_enable_flagに0を設定する。
図62は、照度補償フラグ復号部30311F5の動作を示すフローチャートである。
S1501:L0リストから導出される参照ピクチャを参照して、対象ブロックにインターレイヤ予測を行う予測ユニットが含まれるか(anyIvRefPicInL0Flag)を判定する。L0リストを用いた予測において、インターレイヤ予測を行う予測ユニットが含まれる場合(anyIvRefPicInL0Flagが1)には、符号化データから照度補償フラグic_enable_flagを復号する(S1505)。そうでなければ(anyIvRefPicInL0Flagが0)、照度補償フラグic_enable_flagに0を設定する(S1506)
anyIvRefPicInL0Flagは、対象ブロック(対象CU)の座標が[x0][y0]である場合において、以下の式により導出する。式(F−8)と異なるL0の参照リストのみを参照するため、インターレイヤ予測を行う予測ユニットが含まれるか否かの判定が容易になる。
anyIvRefPicInL0Flag = anyIvRefPicInL0Flag | |
(inter_pred_idc[ x0 ][ y0 ] ! = Pred_L1 && refViewIdxL0[ x0 ][ y0 ] ! = ViewIdx) | |
(inter_pred_idc[ x0 ][ y1 ] ! = Pred_L1 && refViewIdxL0[ x0 ][ y1 ] ! = ViewIdx) | |
(inter_pred_idc[ x1 ][ y0 ] ! = Pred_L1 && refViewIdxL0[ x1 ][ y0 ] ! = ViewIdx) | |
(inter_pred_idc[ x1 ][ y1 ] ! = Pred_L1 && refViewIdxL0[ x1 ][ y1 ] ! = ViewIdx) 式(F−8´)
なお、インター予測フラグinter_pred_idcと予測リストフラグpredFlagLXは相互に対応するため、インターレイヤ予測が用いられるか否かの判定式として、式(F−8´)の代わりに以下の式を用いることもできる。
anyIvRefPicInL0Flag = anyIvRefPicInL0Flag | |
(prefFlagL0[ x0 ][ y0 ] == 1 && refViewIdxL0[ x0 ][ y0 ] ! = ViewIdx) ||
(prefFlagL0[ x0 ][ y1 ] == 1 && refViewIdxL0[ x0 ][ y1 ] ! = ViewIdx) ||
(prefFlagL0[ x1 ][ y0 ] == 1 && refViewIdxL0[ x1 ][ y0 ] ! = ViewIdx) ||
(prefFlagL0[ x1 ][ y1 ] == 1 && refViewIdxL0[ x1 ][ y1 ] ! = ViewIdx) 式(F−8´´)
ここで、x1、y1は、対象CUに複数の予測ユニットが含まれている場合における予測ユニットの座標を示す。具体的には、座標[x0][x0]が1つ目の予測ユニット、座標[x0][y1]が2つ目の予測ユニット、座標[x1][y0]が3つ目の予測ユニット、座標[x1][y1]が3つ目の予測ユニットに対応する。インター予測フラグinter_pred_idc[][]は、予測ユニットの予測方向を示し、L0予測(Pred_L0)、L1予測(Pred_L1)、双予測(Pred_BI)の何れかである。従って、インター予測フラグinter_pred_idc[][]がPred_L1ではないとは、L0予測もしくは双予測の場合を意味する。この時、L0の参照レイヤ(ここでは参照ビュー)をrefViewIdxL0により参照し、それが、対象レイヤ(対象ビュー)ViewIdx以外の場合に、L0予測にインターレイヤ予測が用いられることになる。上記式では、対象CUに含まれる全ての予測ユニットにおいて、インターレイヤ予測が用いられるか否かを示すinter_pred_idc[ x0 ][ y0 ] ! = Pred_L1 && refViewIdxL0[ x0 ][ y0 ] ! = ViewIdxの導出し、その和(||)を得ることによって、対象CUに含まれるいずれかの予測ユニットにおいて、L0の予測が行われるか否かを示す。
なお、refViewIdxL0[ x0 ][ y ]は、座標[x][y]の予測ユニットがLXリストを用いて参照する参照ピクチャのビューIDを示す。式(F−6)のLXをL0に限定した以下の式により導出できる。
refViewIdxLX[ x ][ y ] = ViewIdx of the RefPicListL0[ref_idx_l0[ x ][ y ]] 式(F−6´)
式(F−8´)、式(F−8´´)では、L0の予測フラグpredFlagL0、L0の参照ピクチャインデックスref_idx_l0、L0参照ピクチャリストRefPicListL0のみを参照し、L1の予測フラグpredFlagL1、L1の参照ピクチャインデックスref_idx_l1、L1参照ピクチャリストRefPicListL1は参照しないため、インターレイヤ予測を行う予測ユニットが含まれるか否かの判定が容易になる。
図63は、インター予測パラメータ復号部303F3で復号される符号化データの構成を示す図である。
条件SF1502は、既に説明したanyIvRefPicInL0Flagを条件とするもので、以下の式で表現される。
anyIvRefPicInL0Flag 式(F−2´´´´´)
さらに、変形例5も変形例1´と同様に、符号化ユニットの分割モードが分割しないことを示す2N×2Nの場合に限定しても良い(変形例F5´と呼ぶ)。符号化データの構成においては、条件SF1001の代わりに、条件SF1101を用いる。また、anyIvRefPicInL0Flagでは、式(F−8)の代わりに、以下の式(F−9)を用いる。
anyIvRefPicInL0Flag = (inter_pred_idc[ x0 ][ y0 ] ! = Pred_L1 && refViewIdxL0[ x0 ][ y0 ] ! = ViewIdx) 式(F−9)
なお、インター予測フラグinter_pred_idcと予測リストフラグpredFlagLXは相互に対応するため、インターレイヤ予測が用いられるか否かの判定式として、式(F−9)の代わりに以下の式を用いることもできる。
anyIvRefPicInL0Flag = (prefFlagL0[ x0 ][ y0 ] == 1 && refViewIdxL0[ x0 ][ y0 ] ! = ViewIdx) 式(F−9´)
以上、式(F−9)、式(F−9´)の判定式によれば、式(F−8´)、式(F−8´´)同様、インターレイヤ予測が行われるか否かの判定を、L1の参照ピクチャの情報だけに基づいて行うため、インターレイヤ予測が行われるか否かの判定が容易になる。
変形例F5の上記照度補償フラグ導出部は、照度補償フラグを導出する場合を、L0予測が行われる場合に限定することにより、照度補償フラグの符号量を削減する効果を奏する(効果F5a)。また、対象CUに含まれる予測ユニットにおいてインターレイヤ予測が行われるか否かの判定を、L1の参照ピクチャの情報だけに基づいて行うため、インターレイヤ予測が行われるか否かの判定が容易になる(効果F5aa)。また、従来は、双予測の場合に、L0リストを用いた参照ピクチャによる動き補償画像と、L1リストを用いた参照ピクチャによる動き補償画像の両者に照度補償を行う可能性があるが、照度補償フラグを導出する場合を、L0リストを用いた参照ピクチャが用いられる場合に限定することによって、2つの動き補償画像の両方に照度補償を行うことがなくなるため、処理量を低減する効果を奏する(効果F5b)。さらに、単に双予測の場合に、照度補償を禁止する場合と異なり、双予測の場合にも、L0リストを用いた参照ピクチャに対して照度補償が行われるため、限定による性能低下が殆ど生じないことが発明者の実験により得られている。
照度補償をL0に限定する変形例F5は、既に説明した変形例1〜変形例4と併用することができる。以下、変形例F6として、変形例5と変形例3を併用する場合のみを説明するが、他の例にも適用可能である。
(インター予測パラメータ復号部の変形例F6)
以下、インター予測パラメータ復号部の変形例としてインター予測パラメータ復号部303F6を説明する。変形例F6では、追加予測として照度予測を行う場合を扱う。インター予測パラメータ復号制御部3031F6は、照度補償フラグ復号部30311F6、参照ピクチャインデックス復号部30318を備える。
以下、インター予測パラメータ復号部の変形例としてインター予測パラメータ復号部303F6を説明する。変形例F6では、追加予測として照度予測を行う場合を扱う。図64は、インター予測パラメータ復号制御部3031F3の構成を示すブロック図である。図64に示すように、インター予測パラメータ復号制御部3031F6は、照度補償フラグ復号部30311F6、分割モード復号部、マージフラグ復号部30317、マージインデックス復号部30312、インター予測フラグ復号部、参照ピクチャインデックス復号部30318、ベクトル候補インデックス復号部30313、ベクトル差分復号部、特定マージインデックス照度補償スキップフラグ導出部30319を備える。
図65は、照度補償フラグ復号部30311F6の動作を示すフローチャートである。
S1601:マージフラグmerge_flagを参照し、対象ブロックがマージモードであるか否か(merge_flagが1であるか否か)を判定する。対象ブロックがマージモードであればマージモードであれば、S1602に遷移し、マージモードでなければ、S1604に遷移する。
S1602:特定マージインデックス照度補償スキップフラグic_skip_mergeidx0_flagが有効であるかを判定し、有効であればS1603に遷移。有効でなければ、符号化データから、照度補償フラグを復号する(S1605)。ic_skip_mergeidx0_flagは、特定マージインデックス照度補償スキップフラグ導出部30319で復号される(以下同様)。
S1603:マージインデックスmerge_idxを参照し、マージインデックスmerge_idxが所定の値であるか否かを判定する。所定の値の場合には、照度補償フラグic_enable_flagを0に設定する(S1606)。所定の値以外であれば、符号化データから、照度補償フラグic_enable_flagを復号する(S1605)
S1604:L0リストから導出される参照ピクチャを参照して、対象ブロックにインターレイヤ予測を行う予測ユニットが含まれるか(anyIvRefPicInL0Flag)を判定する。L0リストを用いた予測において、インターレイヤ予測を行う予測ユニットが含まれる場合(anyIvRefPicInL0Flagが1)には、符号化データから照度補償フラグic_enable_flagを復号する(S1605)。そうでなければ(anyIvRefPicInL0Flagが0)、照度補償フラグic_enable_flagに0を設定する(S1606)
ここで、anyIvRefPicInL0Flagの導出方法、ic_skip_mergeidx0_flagの導出方法は、変形例F5において既に説明した通りである。
図66は、インター予測パラメータ復号部303F6で復号される照度補償フラグic_enable_flagの符号化データの構成を示す図である。
条件SF1101は、既に説明した式(F−1´)で表現される。
条件SF1202は、既に説明した式(F−2´´)で表現される。
条件SF1603は、次の式で表現される。
!merge_flag && anyIvRefPicInL0Flag 式(F−2´´´´´´)
変形例F6では、変形例1の効果F1、変形例2の効果F2、変形例3の効果F3に加え、変形例F6の効果F6aの効果を奏する。なお、変形例F6では、対象ブロックがマージモードである場合においては、参照ピクチャインデックスによる限定を行わない。従って、対象ブロックがマージモードの場合には、照度予測を用いる場合をL0リストを用いた参照ピクチャが用いられる場合に必ずしも限定されない。しかしながら、後述の照度補償部3093Fもしくは照度補償部3093Gを用いることによりL0制限により処理量を低減する効果を奏する(効果F5b)ことができる。
<残差格納部313>
残差格納部313は、逆量子化・逆DCT部311において、第1レイヤ画像(ベースレイヤ、ベースビュー)に対して導出された残差信号を格納する。図38は、残差格納部313の構成を示す図である。
図38(a)は、残差予測部3092において、参照レイヤで得られた残差の値の範囲を制限して読み出す場合に対応する残差格納部313の構成である。残差格納部313は、残差値域制限部3131、残差格納メモリ3132、残差読み出し部3133から構成される。残差値域制限部3131は、画素のビット幅をbitDepthYとする場合に、残差の範囲を−1<<(BitDepthY−1)〜(1<<(BitDepthY−1))−1に制限して残差格納メモリ3132に格納する。残差読み出し部3133は、残差格納メモリ3132に格納された残差を読み出す。
具体的には、以下の式のように、残差格納メモリ3132のメモリresStoreSamplesに、残差resSamples を記録する。
resStoreSamples[ x ][ y ]= clip3(xmin, xmax, resSamples[ x ][ y ]
ここで、xmin=−(1<<(BitDepthY−1))、xmax = (1<<(BitDepthY−1))−1、x、yは、格納先の座標である。xは0以上、width − 1以下の整数、yは0以上、height − 1)以下の整数、widthとheightは画面の幅と高さである。
残差格納メモリ3132は、残差をBitDepthYのビット幅で格納する。
残差読み出し部3133は、残差格納メモリ3132に記録した残差を以下のように読み出す。
refResSamplesL[ x ][ y ]= ]=]=resStoreSamples[ x ][ y ]
図38(b)は、残差格納部313の変形例である残差格納部313Aを示す図であり、残差予測部3092Aにおいて、参照レイヤの残差を読み出す際に、水平方向もしくは/かつ垂直方向の解像度を所定の倍率をNとしてN分の1に間引いた位置の画素を参照する場合に対応する。残差格納部313Aは、残差縮小部3131A、残差格納メモリ3132、残差伸長部3133Aを備える。
残差縮小部3131Aは、画素のビット幅をbitDepthYとする場合に、残差の範囲を−(1<<(BitDepthY−1))〜(1<<(BitDepthY−1))−1に制限した上で、N分の1に間引いた位置の画素の残差を残差格納メモリ3132に格納する。具体的には、以下の式のように、残差格納メモリ3132のメモリresStoreSamplesに、残差resSamples のN分の1に間引いた位置のサンプルを記録する。但しN=1<<Kを満たす定数。
resStoreSamples[ x ][ y ]= clip3(xmin, xmax, resSamples[ N*x ][ N*y ])
ここで、xmin=−(1<<(BitDepthY−1))、xmax = (1<<(BitDepthY−1))−1、x、yは、格納先の座標である。xは0以上、(width + N − 1) / N以下の整数、yは0以上、(height + N − 1) / N以下の整数。widthとheightは画面の幅と高さである。
残差格納メモリ3132は、残差をBitDepthYのビット幅で格納する。
残差伸長部3133Aは、残差格納メモリ3132に記録した残差を以下のように読み出す。
refResSamplesL[ x ][ y ] = resStoreSamples[ x/N ][ y/N ]
ここで、x、yは、読み出し先の座標である。残差格納メモリ3132では空間方向に縮小されているため、読み出し先の座標(x, y)は、残差格納メモリ3132上の(x/N, y/N)に対応する。なお、この読み出し時に、線形補間などの補間処理を行っても良い。
(画像符号化装置の構成)
次に、本実施形態に係る画像符号化装置11の構成について説明する。図39は、本実施形態に係る画像符号化装置11の構成を示すブロック図である。画像符号化装置11は、予測画像生成部101、減算部102、DCT・量子化部103、エントロピー符号化部104、逆量子化・逆DCT部105、加算部106、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、予測パラメータ符号化部111、残差格納部313(残差記録部)を含んで構成される。予測パラメータ符号化部111は、インター予測パラメータ符号化部112及びイントラ予測パラメータ符号化部113を含んで構成される。
予測画像生成部101は、外部から入力されたレイヤ画像Tの視点毎の各ピクチャについて、そのピクチャを分割した領域であるブロック毎に予測ピクチャブロックPを生成する。ここで、予測画像生成部101は、予測パラメータ符号化部111から入力された予測パラメータに基づいて参照ピクチャメモリ109から参照ピクチャブロックを読み出す。予測パラメータ符号化部111から入力された予測パラメータとは、例えば、動きベクトル又は変位ベクトルである。予測画像生成部101は、符号化対象ブロックを起点として予測された動きベクトル又は変位ベクトルが示す位置にあるブロックの参照ピクチャブロックを読み出す。予測画像生成部101は、読み出した参照ピクチャブロックについて複数の予測方式のうちの1つの予測方式を用いて予測ピクチャブロックPを生成する。予測画像生成部101は、生成した予測ピクチャブロックPを減算部102に出力する。なお、予測画像生成部101は、既に説明した予測画像生成部308と同じ動作であるため予測ピクチャブロックPの生成の詳細は省略する。
予測画像生成部101は、予測方式を選択するために、例えば、レイヤ画像に含まれるブロックの画素毎の信号値と予測ピクチャブロックPの対応する画素毎の信号値との差分に基づく誤差値を最小にする予測方式を選択する。予測方式を選択する方法は、これには限られない。
符号化対象のピクチャがベースビューピクチャである場合には、複数の予測方式とは、イントラ予測、動き予測及びマージ予測である。動き予測とは、上述のインター予測のうち、表示時刻間の予測である。マージ予測とは、既に符号化されたブロックであって、符号化対象ブロックから予め定めた範囲内にあるブロックと同一の参照ピクチャブロック及び予測パラメータを用いる予測である。符号化対象のピクチャがノンベースビューピクチャである場合には、複数の予測方式とは、イントラ予測、動き予測、マージ予測、及び変位予測である。変位予測(視差予測)とは、上述のインター予測のうち、別レイヤ画像(別視点画像)間の予測である。さらに、動き予測、マージ予測、及び変位予測である。変位予測(視差予測)に対して、追加予測(残差予測および照度補償)を行う場合と行わない場合の予測がある。
予測画像生成部101は、イントラ予測を選択した場合、予測ピクチャブロックPを生成する際に用いたイントラ予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
予測画像生成部101は、動き予測を選択した場合、予測ピクチャブロックPを生成する際に用いた動きベクトルmvLXを予測パラメータメモリ108に記憶し、インター予測パラメータ符号化部112に出力する。動きベクトルmvLXは、符号化対象ブロックの位置から予測ピクチャブロックPを生成する際の参照ピクチャブロックの位置までのベクトルを示す。動きベクトルmvLXを示す情報には、参照ピクチャを示す情報(例えば、参照ピクチャインデックスrefIdxLX、ピクチャ順序番号POC)を含み、予測パラメータを表すものであっても良い。また、予測画像生成部101は、インター予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
予測画像生成部101は、変位予測を選択した場合、予測ピクチャブロックPを生成する際に用いた変位ベクトルを予測パラメータメモリ108に記憶し、インター予測パラメータ符号化部112に出力する。変位ベクトルdvLXは、符号化対象ブロックの位置から予測ピクチャブロックPを生成する際の参照ピクチャブロックの位置までのベクトルを示す。変位ベクトルdvLXを示す情報には、参照ピクチャを示す情報(例えば、参照ピクチャインデックスrefIdxLX、ビューIDview_id)を含み、予測パラメータを表すものであっても良い。また、予測画像生成部101は、インター予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
予測画像生成部101は、マージ予測を選択した場合、選択した参照ピクチャブロックを示すマージインデックスmerge_idxをインター予測パラメータ符号化部112に出力する。また、予測画像生成部101は、マージ予測モードを示す予測モードpredModeを予測パラメータ符号化部111に出力する。
上記の、動き予測、変位予測、マージ予測において、予測画像生成部101は、追加予測として残差予測を行う場合には、既に説明したように予測画像生成部101に含まれる残差予測部3092において残差予測を行い、追加予測として照度補償を行う場合には、既に説明したように予測画像生成部101に含まれる照度補償部3093において照度補償予測を行う。
上記構成の残差予測部3092を含む動画像符号化装置によれば、対象レイヤの残差の推定において、参照レイヤで得られた残差の値の範囲を制限して読み出す。これにより、残差格納部313では、残差として、制限した範囲の値のみを格納すれば良いため、残差を記録するためのメモリ量を低下させる効果を奏する。
なお、残差予測部3092の代わりに、残差予測部3092Bを用いても良い。残差予測部3092Bを含む動画像符号化装置によれば、予測残差の導出において、輝度成分のみ残差の線形補間を行い、色差成分では、残差の線形補間を行わないことにより、予測残差の導出に用いる処理量を削減する効果を奏する。
なお、残差予測部3092の代わりに、残差予測部3092Cを用いても良い。残差予測部3092Cを含む動画像符号化装置によれば、予測残差の導出において、色差成分の残差に必要なビット数を削減することができるため、色差成分の残差を格納するメモリサイズを低減する効果を奏する。
なお、残差予測部3092の代わりに、残差予測部3092Dを用いても良い。残差予測部3092Dを含む動画像符号化装置によれば、予測残差の導出において、色差成分の残差を格納するメモリサイズを省略する効果を奏する。
なお、照度補償部3093の代わりに、照度補償部3093Bを用いても良い。照度補償部3093Bを含む動画像符号化装置によれば、画素ビット深度に応じて積算シフト値precShiftを用いて、積の和であるxyおよびxxを導出するため、所定の範囲、例えば32ビットの範囲で第1パラメータと第2パラメータを導出することが可能であり、処理が容易になる効果を奏する。
なお、照度補償部3093の代わりに、照度補償部3093Cを用いても良い。照度補償部3093Cを含む動画像符号化装置によれば、共通シフト部3093162Cにより第1パラメータ、第2パラメータの両者とともに同じ正規化シフト値を用いて、値を正規化することため、処理が容易になるという効果を奏する。
なお、照度補償部3093の代わりに、照度補償部3093Dを用いても良い。照度補償部3093Dを含む動画像符号化装置によれば、復号画像の画素値と参照画像の画素値の積の和XYと、復号画像の画素値の和Yと参照画像の画素値の和Xの積から導出される第1パラメータa1から導出される値と、参照画像の画素値の2乗の和XXと、参照画像の画素値の和Xの2乗から導出される第2パラメータa2から導出される値との比較により、パラメータaを導出する。第2パラメータの逆数を引くテーブルinvTable[]を用いる必要が無いため処理が容易になる効果を奏する。
なお、照度補償部3093の代わりに、照度補償部3093Eを用いても良い。照度補償部3093Eを含む動画像符号化装置によれば、正則化項が加算された第1パラメータa1と第2パラメータa2からパラメータaを導出する。これにより、パラメータaが実質的に1に近くなる(実際には1<<iShiftに近くなる)ことにより、外れ値などがある場合において、推定されるパラメータが頑健になる。推定されるパラメータが頑健になることによって、照度補償の推定精度が向上し、符号化効率が向上する効果を奏する。
なお、照度補償部3093の代わりに、照度補償部3093Fを用いても良い。照度補償部3093Fを含む動画像符号化装置によれば、照度予測を用いる場合をL0リストを用いた参照ピクチャが用いられる動き補償画像に限定する(L0限定)のため性能を維持しながら(効果F5c)、処理量を低減する効果を奏する(効果F5b)
(予測画像生成部101の別の形態)
予測画像生成部101の別の形態では、残差予測部3092の代わりに、残差予測部3092Aを備える。上記の構成によれば、残差の参照位置を制限して読み出すことにより、残差格納部313において、参照する位置の残差のみを格納すれば良いため、残差を記録するためのメモリ量を低下させるという効果を奏する。
減算部102は、予測画像生成部101から入力された予測ピクチャブロックPの信号値を、外部から入力されたレイヤ画像Tの対応するブロックの信号値から画素毎に減算して、残差信号を生成する。減算部102は、生成した残差信号をDCT・量子化部103と符号化パラメータ決定部110に出力する。
DCT・量子化部103は、減算部102から入力された残差信号についてDCTを行い、DCT係数を算出する。DCT・量子化部103は、算出したDCT係数を量子化して量子化係数を求める。DCT・量子化部103は、求めた量子化係数をエントロピー符号化部104及び逆量子化・逆DCT部105に出力する。
エントロピー符号化部104には、DCT・量子化部103から量子化係数が入力され、符号化パラメータ決定部110から符号化パラメータが入力される。入力される符号化パラメータには、例えば、参照ピクチャインデックスrefIdxLX、ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLX、予測モードpredMode、及びマージインデックスmerge_idx等の符号がある。
エントロピー符号化部104は、入力された量子化係数と符号化パラメータをエントロピー符号化して符号化ストリームTeを生成し、生成した符号化ストリームTeを外部に出力する。
逆量子化・逆DCT部105は、DCT・量子化部103から入力された量子化係数を逆量子化してDCT係数を求める。逆量子化・逆DCT部105は、求めたDCT係数について逆DCTを行い、復号残差信号を算出する。逆量子化・逆DCT部105は、算出した復号残差信号を加算部106に出力する。
加算部106は、予測画像生成部101から入力された予測ピクチャブロックPの信号値と逆量子化・逆DCT部105から入力された復号残差信号の信号値を画素毎に加算して、参照ピクチャブロックを生成する。加算部106は、生成した参照ピクチャブロックを参照ピクチャメモリ109に記憶する。
予測パラメータメモリ108は、予測パラメータ符号化部111が生成した予測パラメータを、符号化対象のピクチャ及びブロック毎に予め定めた位置に記憶する。
参照ピクチャメモリ109は、加算部106が生成した参照ピクチャブロックを、符号化対象のピクチャ及びブロック毎に予め定めた位置に記憶する。
符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、上述した予測パラメータやこの予測パラメータに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータのセットの各々を用いて予測ピクチャブロックPを生成する。
符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化誤差を示すコスト値を算出する。コスト値は、例えば、符号量と二乗誤差に係数λを乗じた値との和である。符号量は、量子化誤差と符号化パラメータをエントロピー符号化して得られる符号化ストリームTeの情報量である。二乗誤差は、減算部102において算出された残差信号の残差値の二乗値についての画素間の総和である。係数λは、予め設定されたゼロよりも大きい実数である。符号化パラメータ決定部110は、算出したコスト値が最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化ストリームTeとして外部に出力し、選択されなかった符号化パラメータのセットを出力しない。
予測パラメータ符号化部111は、予測画像生成部101から入力されたパラメータに基づいて予測ピクチャを生成する際に用いる予測パラメータを導出し、導出した予測パラメータを符号化して符号化パラメータのセットを生成する。予測パラメータ符号化部111は、生成した符号化パラメータのセットをエントロピー符号化部104に出力する。
予測パラメータ符号化部111は、生成した符号化パラメータのセットのうち符号化パラメータ決定部110が選択したものに対応する予測パラメータを予測パラメータメモリ108に記憶する。
予測パラメータ符号化部111は、予測画像生成部101から入力された予測モードpredModeがインター予測モードを示す場合、インター予測パラメータ符号化部112を動作させる。予測パラメータ符号化部111は、予測モードpredModeがイントラ予測モードを示す場合、イントラ予測パラメータ符号化部113を動作させる。
インター予測パラメータ符号化部112は、符号化パラメータ決定部110から入力された予測パラメータに基づいてインター予測パラメータを導出する。インター予測パラメータ符号化部112は、インター予測パラメータを導出する構成として、インター予測パラメータ復号部303(図5等、参照)がインター予測パラメータを導出する構成と同一の構成を含む。インター予測パラメータ符号化部112の構成については、後述する。
イントラ予測パラメータ符号化部113は、符号化パラメータ決定部110から入力された予測モードpredModeが示すイントラ予測モードIntraIntraPredModeをインター予測パラメータのセットとして定める。
(インター予測パラメータ符号化部の構成)
次に、インター予測パラメータ符号化部112の構成について説明する。インター予測パラメータ符号化部112は、インター予測パラメータ復号部303に対応する手段である。
図40は、本実施形態に係るインター予測パラメータ符号化部112の構成を示す概略図である。
インター予測パラメータ符号化部112は、インター予測パラメータ符号化制御部1031、マージ予測パラメータ導出部1121、AMVP予測パラメータ導出部1122、減算部1123、及び予測パラメータ統合部1126を含んで構成される。
マージ予測パラメータ導出部1121は、上述のマージ予測パラメータ導出部3036(図7参照)と同様な構成を有する。
インター予測パラメータ符号化制御部1031は、インター予測に関連する符号(シンタックス要素の復号をエントロピー符号化部104に指示し、符号化データに含まれる符号(シンタックス要素)を例えば、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXを符号化する。
インター予測パラメータ符号化制御部1031は、図41に示すように、追加予測フラグ符号化部10311、マージインデックス符号化部10312、ベクトル候補インデックス符号化部10313、及び図示しない、分割モード符号化部、マージフラグ符号化部、インター予測フラグ符号化部、参照ピクチャインデックス符号化部、ベクトル差分符号化部を含んで構成される。分割モード符号化部、マージフラグ符号化部、マージインデックス符号化部、インター予測フラグ符号化部、参照ピクチャインデックス符号化部、ベクトル候補インデックス符号化部10313、ベクトル差分符号化部は各々、分割モードpart_mode、マージフラグmerge_flag、マージインデックスmerge_idx、インター予測フラグinter_pred_idx、参照ピクチャインデックスrefIdxLX、予測ベクトルインデックスmvp_LX_idx、差分ベクトルmvdLXを符号化する。
追加予測フラグ符号化部10311は、追加予測が行われるか否かを示すフラグxpred_flagを符号化する。追加予測フラグ符号化部10311は、内部に、追加予測フラグ判定部30314を備える。追加予測フラグ判定部30314は、既に説明したように、追加予測フラグxpred_flagが符号化データに含まれるか否かを判定する。追加予測フラグ判定部30314において、追加予測フラグが符号化データに含まれると判定された場合には、追加予測フラグ符号化部10311は、エントロピー符号化部104に、追加予測フラグの復符号化を通知し、エントロピー符号化104を通じて符号化データ中に、追加予測フラグに対応するシンタックス要素を符号化する。逆に、追加予測フラグ判定部30314において、符号化データに含まれない判定した場合には、追加予測フラグ符号化部10311は、符号化データ中に、対応符号化単位(CU)に対応する追加予測フラグを符号化しない。
マージ予測パラメータ導出部1121には、予測画像生成部101から入力された予測モードpredModeがマージ予測モードを示す場合、符号化パラメータ決定部110からマージインデックスmerge_idxが入力される。マージインデックスmerge_idxは、予測パラメータ統合部1126に出力される。マージ予測パラメータ導出部1121は、マージ候補のうちマージインデックスmerge_idxが示す参照ブロックの参照ピクチャインデックスrefIdxLX、ベクトルmvLXを予測パラメータメモリ108から読み出す。マージ候補とは、符号化対象となる符号化対象ブロックから予め定めた範囲にある参照ブロック(例えば、符号化対象ブロックの左下端、左上端、右上端に接する参照ブロックのうち)であって、符号化処理が完了した参照ブロックである。
AMVP予測パラメータ導出部1122は、上述のAMVP予測パラメータ導出部3032(図8参照)と同様な構成を有する。
AMVP予測パラメータ導出部1122には、予測画像生成部101から入力された予測モードpredModeがインター予測モードを示す場合、符号化パラメータ決定部110からベクトルmvLXが入力される。AMVP予測パラメータ導出部1122は、入力されたベクトルmvLXに基づいて予測ベクトルmvpLXを導出する。AMVP予測パラメータ導出部1122は、導出した予測ベクトルmvpLXを減算部1123に出力する。なお、参照ピクチャインデックスrefIdx及びベクトルインデックスmvp_LX_idxは、予測パラメータ統合部1126に出力される。
(インター予測パラメータ符号化部の変形例A)
以下、インター予測パラメータ符号化部の変形例としてインター予測パラメータ符号化部1031Aを説明する。インター予測パラメータ符号化部1031Aは、追加予測フラグ符号化部10311A、マージインデックス符号化部10312、ベクトル候補インデックス符号化部10313を備える。追加予測フラグ符号化部10311Aは内部に追加予測フラグ判定部30314Aを含んで構成される。
インター予測パラメータ符号化部1031A、追加予測フラグ符号化部10311Aは、既に説明した、インター予測パラメータ復号部303A、追加予測フラグ復号部30311Aに対応する手段であり、追加予測フラグ判定部30314Aでの追加予測フラグ
を符号化データに含まれるか否かの判定方法は同じである。なお、インター予測パラメータ復号部303Aでは、追加予測フラグを符号化データに含まれる場合、追加予測フラグの復号を行うが、インター予測パラメータ符号化部1031Aでは、追加予測フラグの符号化を行う。
以上の変形例Aの構成では、追加予測フラグを2つ用いる場合に、2つ目の追加予測フラグが存在するか否かの判定を、1つ目の追加予測フラグの値(例えばres_pred_flag)に基づいて行うため、2つ目の追加予測フラグが存在するか否かの判定の判定を各PUの予測パラメータ(例えば、disparity_pred_exists)をチェックすることなく行えるため、追加予測フラグの復号処理が容易になるという効果を奏する。
(インター予測パラメータ符号化部の変形例A2)
以下、インター予測パラメータ符号化部の変形例としてインター予測パラメータ符号化部1031A2を説明する。インター予測パラメータ符号化部1031A2は、追加予測フラグ符号化部10311A2、マージインデックス符号化部10312、ベクトル候補インデックス符号化部10313を備える。追加予測フラグ符号化部10311A2は内部に追加予測フラグ判定部30314A2を含んで構成される。
インター予測パラメータ符号化部1031A2、追加予測フラグ符号化部10311A2は、既に説明した、インター予測パラメータ復号部303A2、追加予測フラグ復号部30311A2に対応する手段であり、追加予測フラグ判定部30314A2での追加予測フラグを符号化データに含まれるか否かの判定方法は同じである。なお、インター予測パラメータ復号部303A2では、追加予測フラグを符号化データに含まれる場合、追加予測フラグの復号を行うが、インター予測パラメータ符号化部1031A2では、追加予測フラグの符号化を行う。
以上の変形例A2の構成では、1つ目のフラグが存在するか否かの判定には、PUが変位予測を含むか否かの判定disparity_pred_existsが1であるかを用い、2つ目のフラグが存在するか否かの判定には、PUが動き予測を含むか否かの判定disparity_pred_existsが0であるかを用いる。以上の判定では、2つ目の追加予測フラグが存在するか否かの判定を、1つ目の追加予測フラグが存在する否かの判定に用いた値に基づいて行うため、2つ目の追加予測フラグが存在するか否かの判定の判定を各PUの予測パラメータをチェックすることなく行えるため、追加予測フラグの復号処理が容易になるという効果を奏する。
(インター予測パラメータ符号化部の変形例B)
以下、インター予測パラメータ符号化部の変形例としてインター予測パラメータ符号化部1031Bを説明する。インター予測パラメータ符号化部1031Bは、追加予測フラグ符号化部10311B、マージインデックス符号化部10312、ベクトル候補インデックス符号化部10313を備える。追加予測フラグ符号化部10311Bは内部に追加予測フラグ判定部30314Bを含んで構成される。
インター予測パラメータ符号化部1031B、追加予測フラグ符号化部10311Bは、既に説明した、インター予測パラメータ復号部303B、追加予測フラグ復号部30311Bに対応する手段であり、追加予測フラグ判定部30314Bでの追加予測フラグを符号化データに含まれるか否かの判定方法は同じである。なお、インター予測パラメータ復号部303Bでは、追加予測フラグを符号化データに含まれる場合、追加予測フラグの復号を行うが、インター予測パラメータ符号化部1031Bでは、追加予測フラグの符号化を行う。
以上の変形例Bによれば、追加予測フラグ判定部30314Bにおいて、対象CUに含まれる全てのPUの予測パラメータをチェックすることなく、先頭PUの予測パラメータのみをチェックすれば良いため、追加予測フラグxpred(ここでは、残差予測フラグres_pred_flagと照度補償フラグic_enable_flag)が符号化データに含まれるか否かをチェックする処理が容易になるという効果を奏する。
(インター予測パラメータ符号化部の変形例C)
以下、インター予測パラメータ符号化部の変形例としてインター予測パラメータ符号化部1031Cを説明する。インター予測パラメータ符号化部1031Cは、追加予測フラグ符号化部10311C、マージインデックス符号化部10312、ベクトル候補インデックス符号化部10313を備える。追加予測フラグ符号化部10311Bは内部に追加予測フラグ判定部30314Cを含んで構成される。
インター予測パラメータ符号化部1031C、追加予測フラグ符号化部10311Cは、既に説明した、インター予測パラメータ復号部303C、追加予測フラグ復号部30311Cに対応する手段であり、追加予測フラグ判定部30314Cでの追加予測フラグを符号化データに含まれるか否かの判定方法は同じである。なお、インター予測パラメータ復号部303Cでは、追加予測フラグを符号化データに含まれる場合、追加予測フラグの復号を行うが、インター予測パラメータ符号化部1031Cでは、追加予測フラグの符号化を行う。
以上の構成の追加予測フラグ符号化部10311Cによれば、追加予測フラグを残差予測フラグと照度補償フラグに共通の共用フラグとすることにより、追加予測フラグが符号化データに存在するか否かの判定において、PUの予測パラメータを参照することがないため、予測パラメータとフラグの間の依存関係がなくなり、パース依存性の課題が解決される。これにより、追加予測フラグの復号処理が容易になるという効果を奏する。また、追加予測フラグとして、2つのフラグ(残差予測フラグと照度補償フラグ)の代わりに1つのフラグを符号化データ中に含めるため、フラグの符号量が減少する効果を奏する。
(インター予測パラメータ符号化部の変形例D)
以下、インター予測パラメータ符号化部の変形例としてインター予測パラメータ符号化部1031Dを説明する。インター予測パラメータ符号化部1031Dは、追加予測フラグ符号化部10311D、マージインデックス符号化部10312、ベクトル候補インデックス符号化部10313を備える。追加予測フラグ符号化部10311Bは内部に追加予測フラグ判定部30314Cを含んで構成される。追加予測フラグ符号化部10311Dは内部に追加予測フラグ判定部30314Dを含んで構成される。
インター予測パラメータ符号化部1031D、追加予測フラグ符号化部10311Dは、既に説明した、インター予測パラメータ復号部303D、追加予測フラグ復号部30311Dに対応する手段であり、追加予測フラグ判定部30314Dでの追加予測フラグを符号化データに含まれるか否かの判定方法は同じである。なお、インター予測パラメータ復号部303Dでは、追加予測フラグを符号化データに含まれる場合、追加予測フラグの復号を行うが、インター予測パラメータ符号化部1031Dでは、追加予測フラグの符号化を行う。
(インター予測パラメータ復号部の変形例D2)
以下、インター予測パラメータ符号化部の別の変形例としてインター予測パラメータ符号化部1031D2を説明する。インター予測パラメータ符号化部1031D2は、追加予測フラグ符号化部10311D2、マージインデックス符号化部30312、ベクトル候補インデックス符号化部30313を備える。追加予測フラグ符号化部10311D2は内部に追加予測フラグ判定部30314D2を含んで構成される。追加予測フラグ符号化部10311Dは内部に追加予測フラグ判定部30314D2を含んで構成される。
インター予測パラメータ符号化部1031D2、追加予測フラグ符号化部10311D2は、既に説明した、インター予測パラメータ復号部303D2、追加予測フラグ復号部30311D2に対応する手段であり、追加予測フラグ判定部30314D2での追加予測フラグを符号化データに含まれるか否かの判定方法は同じである。なお、インター予測パラメータ復号部303D2では、追加予測フラグを符号化データに含まれる場合、追加予測フラグの復号を行うが、インター予測パラメータ符号化部1031D2では、追加予測フラグの符号化を行う。
以上の構成の追加予測フラグ符号化部10311D、追加予測フラグ符号化部10311D2によれば、追加予測フラグをマージモードの場合に限定し、さらに、PU単位のフラグとすることにより、追加予測フラグが符号化データに存在するか否かの判定において、PUの予測パラメータを参照することがないため、予測パラメータとフラグの間の依存関係がなくなり、パース依存性の課題が解決される。これにより、追加予測フラグの復号処理が容易になるという効果を奏する。さらに、追加予測フラグ復号部30311D2によれば、追加予測フラグを、マージインデックスmerge_idxが、インターレイヤマージ候補(インタービューマージ候補)を示す所定の値の場合のみに符号化することにより、追加予測が有効ではない場合に、追加予測フラグを符号化データに含めることがないため、符号化効率が向上するという効果を奏する。
(インター予測パラメータ符号化部の変形例D3)
以下、インター予測パラメータ符号化部の別の変形例としてインター予測パラメータ符号化部1031D3を説明する。インター予測パラメータ符号化部1031D3は、追加予測フラグ符号化部10311D3、マージインデックス符号化部30312D3、ベクトル候補インデックス符号化部30313を備える。追加予測フラグ符号化部10311D3は内部に追加予測フラグ判定部30314D3を含んで構成される。追加予測フラグ符号化部10311D3は内部に追加予測フラグ判定部30314D3を含んで構成される。
インター予測パラメータ符号化部1031D3、追加予測フラグ符号化部10311D3は、既に説明した、インター予測パラメータ復号部303D3、追加予測フラグ復号部30311D3に対応する手段であり、追加予測フラグ判定部30314D3での追加予測フラグを符号化データに含まれるか否かの判定方法は同じである。なお、インター予測パラメータ復号部303D3では、追加予測フラグを符号化データに含まれる場合、追加予測フラグの復号を行うが、インター予測パラメータ符号化部1031D3では、追加予測フラグの符号化を行う。
以上の構成のインター予測パラメータ符号化部1031D3によれば、追加予測フラグをマージモードの場合に限定し、さらに、PU単位のフラグとすることにより、追加予測フラグが符号化データに存在するか否かの判定において、PUの予測パラメータを参照することがないため、予測パラメータとフラグの間の依存関係がなくなり、パース依存性の課題が解決される。これにより、追加予測フラグの復号処理が容易になるという効果を奏する。さらに、追加予測フラグを、マージインデックスmerge_idxの前に符号化し、追加予測フラグが有効である場合には、マージインデックスmerge_idxの範囲を制限する(例えば1候補の場合には、マージインデックスを含めない)ことにより、追加予測が有効ではある場合に有効ではないマージインデックスを符号化しないため、符号化効率向上の効果を奏する。
(インター予測パラメータ符号化部の変形例D4)
以下、インター予測パラメータ符号化部の別の変形例としてインター予測パラメータ符号化部1031D4を説明する。インター予測パラメータ符号化部1031D4は、追加予測フラグ符号化部10311D4、マージインデックス符号化部30312D4、ベクトル候補インデックス符号化部30313を備える。追加予測フラグ符号化部10311D4は内部に追加予測フラグ判定部30314D4を含んで構成される。追加予測フラグ符号化部10311D4は内部に追加予測フラグ判定部30314D4を含んで構成される。
インター予測パラメータ符号化部1031D4、追加予測フラグ符号化部10311D4は、既に説明した、インター予測パラメータ復号部303D4、追加予測フラグ復号部30311D4に対応する手段であり、追加予測フラグ判定部30314D4での追加予測フラグを符号化データに含まれるか否かの判定方法は同じである。なお、インター予測パラメータ復号部303D4では、追加予測フラグを符号化データに含まれる場合、追加予測フラグの復号を行うが、インター予測パラメータ符号化部1031D4では、追加予測フラグの符号化を行う。
以上の構成のインター予測パラメータ復号部303D4によれば、追加予測フラグをCU単位のフラグとするが、追加予測フラグが符号化データに存在するか否かの判定において、PUの予測パラメータを参照することがないため、予測パラメータとフラグの間の依存関係がなくなる、そのためパース依存性の課題を解決する効果を奏する。さらに、変形例D3と同様、マージインデックスmerge_idxの前に符号化される追加予測フラグを利用して、追加予測フラグが1である場合(追加予測を用いる場合)には、マージインデックスmerge_idxの範囲を制限する(例えば1候補の場合には、マージインデックスを含めない)ことにより、追加予測が有効ではある場合に有効ではないマージインデックスを符号化しないため、符号化効率向上の効果を奏する。
(画像符号化装置11の変形例E)
以下、画像符号化装置11の変形例を説明する。以下の変形例では、インター予測パラメータ符号化部112の代わりに、インター予測パラメータ符号化部1031Eを備え、マージ予測パラメータ導出部3036の代わりに、マージ予測パラメータ導出部3036Eを備える。それ以外の手段は、インター予測パラメータ符号化部112と同じであるため説明を省略する。
以上の構成の画像符号化装置11によれば、追加予測を行うか否かの判定に、専用のシンタックス要素である追加予測フラグを用いることなく、予測パラメータを選択するためのインデックス(ここではマージインデックス)を用いる。この場合、追加予測フラグをCU単位のフラグもしくはPU単位のフラグとして含めないため、追加予測フラグが符号化データに存在するか否かの判定が不要になる、すなわち、追加予測フラグの符号化のために、PUの予測パラメータを参照することがないため、予測パラメータとフラグの間の依存関係がなくなり、パース依存性の課題が解決される。これにより、追加予測フラグの復号処理が容易になるという効果を奏する。さらに、マージ候補導出部30361Eで追加予測を行うマージ候補と、追加予測を行わないマージ候補を導出することにより、追加予測を行うか否かはマージ候補の一つとして選択することになる。これにより、追加予測が有効ではない場合において、PU単位で追加予測を行うか否かを選択することができるため、符号化効率が向上する。また、追加予測が効果的である予測パラメータの場合、例えば、インターレイヤマージ候補(動き予測)に限定して、追加予測を行うマージ候補を導出するため、追加予測が効果的ではない予測パラメータの場合に、追加予測を行う候補を設けることがないため、符号化効率が向上する。
(インター予測パラメータ符号化部の変形例F1)
インター予測パラメータ符号化部の別の変形例としてインター予測パラメータ符号化部1031F1を用いても良い。インター予測パラメータ符号化部1031F1は、追加予測フラグ符号化部10311F1、マージインデックス符号化部30312、ベクトル候補インデックス符号化部30313を備える。
(インター予測パラメータ符号化部の変形例F2)
インター予測パラメータ符号化部の別の変形例としてインター予測パラメータ符号化部1031F2を用いても良い。インター予測パラメータ符号化部1031F2は、追加予測フラグ符号化部10311F2、マージインデックス符号化部30312、ベクトル候補インデックス符号化部30313を備える。追加予測フラグ符号化部10311F2は追加予測フラグ判定部30314F2を備える。
(インター予測パラメータ符号化部の変形例F3)
インター予測パラメータ符号化部の別の変形例としてインター予測パラメータ符号化部1031F3を用いても良い。インター予測パラメータ符号化部1031F3は、追加予測フラグ符号化部10311F3、マージインデックス符号化部30312、ベクトル候補インデックス符号化部30313を備える。追加予測フラグ符号化部10311F3は追加予測フラグ判定部30314F3を備える。
(インター予測パラメータ符号化部の変形例F4)
インター予測パラメータ符号化部の別の変形例としてインター予測パラメータ符号化部1031F4を用いても良い。インター予測パラメータ符号化部1031F4は、追加予測フラグ符号化部10311F4、マージインデックス符号化部30312、ベクトル候補インデックス符号化部30313を備える。追加予測フラグ符号化部10311F4は追加予測フラグ判定部30314F4を備える。
(インター予測パラメータ符号化部の変形例F5)
インター予測パラメータ符号化部の別の変形例としてインター予測パラメータ符号化部1031F5を用いても良い。インター予測パラメータ符号化部1031F5は、追加予測フラグ符号化部10311F5、マージインデックス符号化部30312、ベクトル候補インデックス符号化部30313を備える。追加予測フラグ符号化部10311F5は追加予測フラグ判定部30314F5を備える。
(インター予測パラメータ符号化部の変形例F6)
インター予測パラメータ符号化部の別の変形例としてインター予測パラメータ符号化部1031F5を用いても良い。インター予測パラメータ符号化部1031F6は、追加予測フラグ符号化部10311F6、マージインデックス符号化部30312、ベクトル候補インデックス符号化部30313を備える。追加予測フラグ符号化部10311F6は追加予測フラグ判定部30314F6を備える。
減算部1123は、符号化パラメータ決定部110から入力されたベクトルmvLXからAMVP予測パラメータ導出部1122から入力された予測ベクトルmvpLXを減算して差分ベクトルmvdLXを生成する。差分ベクトルmvdLXは予測パラメータ統合部1126に出力する。
予測画像生成部101から入力された予測モードpredModeがマージ予測モードを示す場合には、予測パラメータ統合部1126は、符号化パラメータ決定部110から入力されたマージインデックスmerge_idxをエントロピー符号化部104に出力する。
予測画像生成部101から入力された予測モードpredModeがインター予測モードを示す場合には、予測パラメータ統合部1126は、次の処理を行う。
予測パラメータ統合部1126は、符号化パラメータ決定部110から入力された参照ピクチャインデックスrefIdxLX及びベクトルインデックスmvp_LX_idx、減算部1123から入力された差分ベクトルmvdLXを統合する。予測パラメータ統合部1126は、統合した符号をエントロピー符号化部104に出力する。
なお、上述した実施形態における画像符号化装置11、画像復号装置31の一部、例えば、エントロピー復号部301、予測パラメータ復号部302、予測画像生成部101、DCT・量子化部103、エントロピー符号化部104、逆量子化・逆DCT部105、符号化パラメータ決定部110、予測パラメータ符号化部111、エントロピー復号部301、予測パラメータ復号部302、予測画像生成部308、逆量子化・逆DCT部311をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、画像符号化装置11−11h、画像復号装置31−31hのいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
また、上述した実施形態における画像符号化装置11、画像復号装置31の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現しても良い。画像符号化装置11、画像復号装置31の各機能ブロックは個別にプロセッサ化しても良いし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
〔まとめ〕
第1の構成の画像復号装置によれば、照度補償を行うか否かを示す照度補償フラグを導出する照度補償フラグ導出部と、上記照度補償フラグが有効を示す値の場合に、対象画像上の対象予測ユニット周囲の画像と、上記対象予測ユニットに対応する参照画像の参照領域画像から照度変化パラメータを用いて、上記対象予測ユニットの予測画像を生成する照度補償部を備え、上記照度補償フラグ導出部は、上記予測画像の生成対象である予測ユニットがマージモードである場合に、照度補償フラグを符号化データから復号し、上記予測ユニットがAMVPモードである場合には、上記予測ユニットの参照ピクチャインデックスがインターレイヤ予測を示す場合には、照度補償フラグを符号化データから復号し、上記の何れでもない場合には、照度補償フラグを符号化データから復号せずに照度補償を行わない、として導出することを特徴とする。
上記の第1の構成によれば、予測ユニットがマージモードである場合には、参照ピクチャインデックスによらずに、照度補償フラグを符号化データから復号することにより、マージモードの場合の、予測パラメータである参照ピクチャインデックスの導出が必要であるというパース依存性を解決する効果を奏する。
第2の構成の画像復号装置によれば、照度補償を行うか否かを示す照度補償フラグを導出する照度補償フラグ導出部と、上記照度補償フラグが有効を示す値の場合に、対象画像上の対象予測ユニット周囲の画像と、上記対象予測ユニットに対応する参照画像の参照領域画像から照度変化パラメータを用いて、上記対象予測ユニットの予測画像を生成する照度補償部を備え、上記照度補償フラグ導出部は、符号化ユニットの分割モードが分割しないことを示す、2N×2Nである場合に、照度補償フラグを符号化データから復号し、それ以外の場合には、照度補償フラグを符号化データから復号せずに照度補償を行わない、として導出することを特徴とする。
上記のように、照度補償フラグを符号化する場合を符号化ユニットの分割モードが特定のモードの場合に限定することにより、照度補償フラグの符号量を削減する効果を奏する。
第3の構成の画像復号装置によれば、照度補償を行うか否かを示す照度補償フラグを導出する照度補償フラグ導出部と、上記照度補償フラグが有効を示す値の場合に、対象画像上の対象予測ユニット周囲の画像と、上記対象予測ユニットに対応する参照画像の参照領域画像から照度変化パラメータを用いて、上記対象予測ユニットの予測画像を生成する照度補償部を備え、上記照度補償部は、上記参照画像が、参照ピクチャリストL0を用いて指定された参照画像である場合に照度補償を行い、上記参照画像が、参照ピクチャリストL0以外を用いて指定された参照画像である場合には照度補償を行わないことを特徴とする。
上記のように、照度補償を行う場合を限定することにより、照度補償の処理量を削減する効果を奏する。
第4の構成の画像復号装置によれば、照度補償を行うか否かを示す照度補償フラグを導出する照度補償フラグ導出部と、
、上記照度補償フラグが有効を示す値の場合に、対象画像上の対象予測ユニット周囲の画像と、上記対象予測ユニットに対応する参照画像の参照領域画像から照度変化パラメータを用いて、上記対象予測ユニットの予測画像を生成する照度補償部を備え、上記照度補償フラグ導出部は、上記予測画像の生成対象である予測ユニットがマージモードでありマージフラグインデックスが所定の値以外の場合に、照度補償フラグを符号化データから復号し、上記予測ユニットがAMVPモードである場合には、上記予測ユニットの参照ピクチャインデックスがインターレイヤ予測を示す場合には、照度補償フラグを符号化データから復号し、上記の何れでもない場合には、照度補償フラグを符号化データから復号せずに照度補償を行わない、として導出することを特徴とする。
上記のように、予測ユニットがマージモードである場合には、参照ピクチャインデックスによらずに、照度補償フラグを符号化データから復号することにより、マージモードの場合の、予測パラメータである参照ピクチャインデックスの導出が必要であるというパース依存性を解決する効果を奏する。また、マージモードである場合にもマージフラグインデックスが所定の値以外の場合に限定して、照度補償フラグを復号(符号化)することにより、照度補償フラグの符号量を削減する効果を奏する。
第5の構成の画像復号装置によれば、特定マージインデックススキップフラグを導出する、特定マージインデックス照度補償スキップフラグ導出部を備え、
上記照度補償フラグ導出部は、上記予測画像の生成対象である予測ユニットがマージモードでありマージフラグインデックスが所定の値以外の場合かつ上記特定マージインデックス照度補償スキップフラグが有効ではない場合、に、照度補償フラグを符号化データから復号し、上記予測ユニットがAMVPモードである場合には、上記予測ユニットの参照ピクチャインデックスがインターレイヤ予測を示す場合には、照度補償フラグを符号化データから復号し、上記の何れでもない場合には、照度補償フラグを符号化データから復号せずに照度補償を行わない、として導出することを特徴とする。
第6の構成の画像復号装置によれば、特定マージインデックス照度補償スキップフラグ導出部は、特定マージインデックス照度補償スキップフラグを符号化データから復号することを特徴とする。
上記のようにマージフラグインデックスが所定の値以外の場合に限定するか否かを示すフラグを、符号化データから導出することによって、符号化装置で、ピクチャ構造や表示順序(POC)、シーケンスに適した、設定することができるため、符号化効率が向上する効果を奏する。
第7の構成の画像復号装置によれば、動き補償画像に照度補償を適用する照度補償部を備え、上記照度補償部は、参照ピクチャ上の参照画像領域と、復号対象ピクチャ上の復号画像領域から照度変化パラメータとして、パラメータaとパラメータbを導出する照度パラメータ推定部と、上記照度変化パラメータを用いて照度補償を行う照度補償フィルタを備え、照度補償フィルタは、参照ピクチャから得られる動き補償画像と上記パラメータaの積に上記パラメータbを加え、所定の固定シフト定数だけ右シフトする、もしくは、上記パラメータaの積に所定の固定シフト定数だけ右シフトしてから上記パラメータbを加えることで、照度補償を行い上記、照度パラメータ推定部は、参照画像の画素値の和を固定シフト値だけ左シフトした値から、パラメータaと、復号画像の画素値の和の積に基づいて、パラメータbを導出することを特徴とする。
上記の構成の照度補償では、固定値である所定の固定シフト定数を用いて右シフトするため、変数を用いて右シフトする場合に比べて、SIMD演算などによる処理が容易になる効果を奏する。また、オフセット成分であるパラメータbを右シフトの前に用いることにより、オフセット成分を右シフトの後に加えるよりも高い精度で演算することができる。
第8の構成の画像復号装置によれば、上記照度パラメータ推定部は、参照画像の画素値と復号画像の画素値の積の和と、参照画像の画素値の和と復号画像の画素値の和の積から導出される第1パラメータと、参照画像の画素値の2乗の和と、参照画像の画素値の和の2乗から導出される第2パラメータから、パラメータaを導出し、さらに、上記照度パラメータ推定部は、画素ビット深度に応じて積算シフト値を導出し、参照画像の画素値と復号画像の画素値の積を上記積算シフト値だけ右シフトした値の和と、参照画像の画素値の和と復号画像の画素値の和の積を上記積算シフト値だけ右シフトした値から導出される第1パラメータと、参照画像の画素値の2乗を上記積算シフト値だけ右シフトした値の和と、参照画像の画素値の和の2乗を上記積算シフト値だけ右シフトした値から導出される第2パラメータから、パラメータaを導出することを特徴とする。
上記の構成の照度補償では、参照画像の画素値と復号画像の画素値の積の和、および、参照画像の画素値の和と復号画像の画素値の和の積の和をとる場合において、和をとる前に、画素ビット深度に応じて定まる積算シフト値で右シフトすることにより、所定の範囲、例えば32ビットの範囲で第1パラメータと第2パラメータを導出することが可能であるため、処理が容易になる効果を奏する。
第9の構成の画像復号装置によれば、上記照度パラメータ推定部は、さらに、画素ビット深度の2倍と、画素数の2の対数に対応する数との和が、所定の定数以上の場合に、第1パラメータと第2パラメータを所定の固定シフト値で右シフトすることで、正規化することを特徴とする。
第10の構成の画像復号装置によれば、上記照度パラメータ推定部は、参照画像の画素値と復号画像の画素値の積の和と、参照画像の画素値の和と復号画像の画素値の和の積から導出される第1パラメータと、参照画像の画素値の2乗の和と、参照画像の画素値の和の2乗から導出される第2パラメータから、パラメータaを導出し、参照画像と復号画像から第1パラメータと第2パラメータを導出し、第2パラメータの大きさに応じて定まる正規化シフト値を導出し、上記第1パラメータと上記第2パラメータを上記正規化シフト値で右シフトすることにより正規化第1パラメータと正規化第2パラメータを導出し、正規化第1パラメータもしくは正規化第1パラメータに所定の定数をかけた値と、正規化第2パラメータからテーブルを参照することで定まるテーブル値との積を固定のシフト値だけ右シフトすることにより、パラメータaを導出することを特徴とする。
上記の構成の照度補償では、第1パラメータ、第2パラメータの両者とともに同じ正規化シフト値を用いて、値を正規化することため、第1パラメータと第2パラメータで異なる正規化パラメータを用いる場合に比べ処理が容易になるという効果を奏する。また、第1パラメータと第2パラメータで同じ正規化パラメータを用いることにより、テーブル値をかけた後のテーブルシフト値を固定値とすることができ、右シフト処理が容易になるという効果を奏する。
第11の構成の画像復号装置によれば、上記照度パラメータ推定部は、参照画像の画素値と復号画像の画素値の積の和と、参照画像の画素値の和と復号画像の画素値の和の積から導出される第1パラメータと、参照画像の画素値の2乗の和と、参照画像の画素値の和の2乗から導出される第2パラメータから、パラメータaを導出し、参照画像と復号画像から第1パラメータと第2パラメータを導出し、第1パラメータの上限を制限するためにクリップした後に正規化第1パラメータを導出するか、もしくは、正規化第1パラメータを導出した後に上限を制限するためにクリップを行うことにより、正規化第2パラメータからテーブルを参照することで定まるテーブル値をかける対象の値の範囲が制限されていることを特徴とする。
上記の構成の照度補償では、テーブル値にかける対象の値の大きさが制限されているため、第1パラメータの大きさにより定まる正規化シフト値を用いて第1パラメータの大きさを正規化することなく、第1パラメータ、第2パラメータの両者とともに同じ正規化シフト値を用いて、値を正規化する場合にも、テーブル値との積が所定の値(例えば、32ビット範囲)を超えることなく演算を行うことができ、処理が容易になる。
第12の構成の画像復号装置によれば、上記照度パラメータ推定部は、上記パラメータaとして、0以上、255以下の値を用いることを特徴とする。
上記の構成の照度補償では、パラメータaが8ビット非負整数の範囲にあることから、画素値のビット深度が8ビットである場合に、パラメータaと画素値の積を8ビット非負整数同士の積として処理することができるためSIMD演算などによる処理が容易になるという効果を奏する。
第13の構成の画像復号装置によれば、上記パラメータaとして、0以上、1の固定シフト定数乗の2倍以下にクリップした値を用いることを特徴とする。
上記の構成の照度補償では、パラメータaの範囲を、照度補償が有効に働く範囲に限定することにより、照度予測の効果が増大するという効果を奏する。なお、照度補償パラメータが上記範囲を超える場合にも対象ブロックに関しては有効に働くこともある。しかしながら、予測画像に対して、上記範囲を超える照度予測が必要になる場合というのは、照度予測前の予測画像が適当ではないことを意味する。このような予測が適当ではないブロック、すなわち、動きベクトルや参照ピクチャなどの予測パラメータが適当ではないブロックに対して、照度補償を用いて大きな変更を加えることにより無理に予測を当てはめる場合、適当ではない予測パラメータを後続に伝えることになり、後続のブロックに悪影響を与えるため、符号化効率が低下する。
第14の構成の画像復号装置によれば、上記、照度パラメータ推定部は、対象予測ユニットを正方形の場合のみ、照度予測を適用することを特徴とする。
上記の構成の照度補償では、動き補償ブロックのサイズを正方形に限定することにより、動き補償ブロックの横と縦の和である照度パラメータの導出に用いる復号画像と参照画像の画素数の和が2の指数乗になるため、オフセット成分であるパラメータbを画素数の商により求める際に、動き補償ブロックのサイズの2倍の2の対数による右シフトにより導出することができる。割り算を用いずに、右シフトにより正確なオフセット値を導出することが可能であるため、処理が容易になる効果を奏する。
上記照度パラメータ推定部は、参照画像の画素値と復号画像の画素値の積の和と、参照画像の画素値の和と復号画像の画素値の和の積から導出される第1パラメータと、参照画像の画素値の2乗の和と、参照画像の画素値の和の2乗から導出される第2パラメータから、パラメータaを導出し、参照画像と復号画像から第1パラメータと第2パラメータを導出し、参照画像の画素値と復号画像の画素値の積の和と、参照画像の画素値の和と復号画像の画素値の和の積から導出される第1パラメータから導出される値と、参照画像の画素値の2乗の和と、参照画像の画素値の和の2乗から導出される第2パラメータから導出される値との比較により、パラメータaを導出することを特徴とする。
上記の構成の照度補償では、第1パラメータの第2パラメータの商に相当するパラメータaを導出する際に、第2パラメータの逆数を引くテーブルを用いる必要が無いため処理が容易になる効果を奏する。また、逆数を所定のサイズのテーブルで引くためには、通常第2パラメータを所定の範囲に抑えるための正規が必要になるが、この正規化処理が不要となる。また、第1パラメータと第2パラメータの逆数の積が所定の値を超えないために、第1パラメータを正規化する正規化処理も不要となる。
第15の構成の画像復号装置によれば、上記照度補償部は、参照画像の画素値と復号画像の画素値の積の和と、参照画像の画素値の和と復号画像の画素値の和の積から導出される第1パラメータと、参照画像の画素値の2乗の和と、参照画像の画素値の和の2乗から導出される第2パラメータから、パラメータaを導出し、さらに、上記照度補償部は、第1パラメータと第2パラメータに同じ正則化項を加算するか、もしくは、第1パラメータを導出する要素および第2パラメータを導出する要素に同じ正則化項を加算する正則化項加算部を備えることを特徴とする。
これにより、パラメータaが所定の値に近くなるような正則化項を加算することにより、外れ値がある場合において、推定されるパラメータが頑健になる。推定されるパラメータが頑健になることによって、照度補償の推定精度が向上し、符号化効率が向上する効果を奏する。
第17の構成の画像復号装置によれば、第1レイヤ画像の輝度成分の残差を記録する残差記録部と、上記残差記録部に記録された輝度成分の残差を用いて、上記第1レイヤ画像とは異なる第2レイヤ画像の予測画像を生成する予測画像生成部を備え、上記予測画像生成部は上記残差記録部から、輝度成分の残差を読み出す際に、残差を画素ビット幅から定まる所定のビット幅に収まる範囲にクリップする手段を備えることを特徴とする。
第18の構成の画像復号装置によれば、上記画像復号装置は、第1レイヤ画像の色差成分の残差を記録せず、上記第1レイヤ画像とは異なる第2レイヤ画像の色差成分には、上記残差を用いた予測画像生成を行わないことを特徴とする。
第19の構成の画像符号化装置によれば、第1レイヤ画像の輝度成分の残差を記録する残差記録部と、上記残差記録部に記録された輝度成分の残差を用いて、上記第1レイヤ画像とは異なる第2レイヤ画像の予測画像を生成する予測画像生成部を備え、上記予測画像生成部は上記残差記録部から、輝度成分の残差を読み出す際に、残差を画素ビット幅から定まる所定のビット幅に収まる範囲にクリップする手段を備えることを特徴とする。