本発明に係る復号装置および符号化装置の一実施形態について図面に基づいて説明すれば以下のとおりである。なお、本実施形態に係る復号装置は、符号化データから動画像を復号するものである。したがって、以下では、これを「動画像復号装置」と呼称する。また、本実施形態に係る符号化装置は、動画像を符号化することによって符号化データを生成するものである。したがって、以下では、これを「動画像符号化装置」と呼称する。
ただし、本発明の適用範囲はこれに限定されるものではない。すなわち、以下の説明からも明らかなように、本発明の特徴は複数のフレームを前提としなくとも成立するものである。すなわち、動画像を対象とするか静止画像を対象とするかを問わず、復号装置一般および符号化装置一般に適用できるものである。
(符号化データ#1の構成)
図2を用いて、動画像符号化装置2によって生成され、動画像復号装置1によって復号される符号化データ#1の構成例について説明する。符号化データ#1は、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。
シーケンスレイヤでは、処理対象のシーケンスを復号するために、動画像復号装置1が参照するデータの集合が規定されている。シーケンスレイヤにはシーケンスパラメータセットSPS、ピクチャパラメータセットPPS、ピクチャPICTを含んでいる。
符号化データ#1におけるピクチャレイヤ以下の階層の構造を図2に示す。図2の(a)〜(d)は、それぞれ、ピクチャPICTを規定するピクチャレイヤ、スライスSを規定するスライスレイヤ、ツリーブロック(Tree block)TBLKを規定するツリーブロックレイヤ、ツリーブロックTBLKに含まれる符号化単位(Coding Unit;CU)を規定するCUレイヤを示す図である。
(ピクチャレイヤ)
ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。ピクチャPICTは、図2の(a)に示すように、ピクチャヘッダPH、及び、スライスS1〜SNSを含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
なお、以下、スライスS1〜SNSのそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化データ#1に含まれるデータであって、添え字を付している他のデータについても同様である。
ピクチャヘッダPHには、対象ピクチャの復号方法を決定するために動画像復号装置1が参照する符号化パラメータ群が含まれている。例えば、動画像符号化装置2が符号化の際に用いた可変長符号化のモードを示す符号化モード情報(entropy_coding_mode_flag)は、ピクチャヘッダPHに含まれる符号化パラメータの一例である。
entropy_coding_mode_flagが0の場合、当該ピクチャPICTは、CAVLC(Context-based Adaptive Variable Length Coding)によって符号化されている。また、entropy_coding_mode_flagが1である場合、当該ピクチャPICTは、CABAC(Context-based Adaptive Binary Arithmetic Coding)によって符号化されている。
(スライスレイヤ)
スライスレイヤでは、処理対象のスライスS(対象スライスとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。スライスSは、図2の(b)に示すように、スライスヘッダSH、及び、ツリーブロックTBLK1〜TBLKNC(NCはスライスSに含まれるツリーブロックの総数)を含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために動画像復号装置1が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単予測、又は、イントラ予測を用いるPスライス、(3)符号化の際に単予測、双予測、又は、イントラ予測を用いるBスライスなどが挙げられる。
また、スライスヘッダSHには、動画像復号装置1の備えるループフィルタによって参照されるフィルタパラメータFPが含まれている。フィルタパラメータFPは、フィルタ係数群を含んでいる。フィルタ係数群には、(1)フィルタのタップ数を指定するタップ数指定情報、(2)フィルタ係数a0〜aNT-1(NTは、フィルタ係数群に含まれるフィルタ係数の総数)、および、(3)オフセットが含まれる。
(ツリーブロックレイヤ)
ツリーブロックレイヤでは、処理対象のツリーブロックTBLK(以下、対象ツリーブロックとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。
ツリーブロックTBLKは、ツリーブロックヘッダTBLKHと、符号化単位情報CU1〜CUNL(NLはツリーブロックTBLKに含まれる符号化単位情報の総数)とを含む。ここで、まず、ツリーブロックTBLKと、符号化単位情報CUとの関係について説明すると次のとおりである。
ツリーブロックTBLKは、イントラ予測またはインター予測、および、変換の各処理ためのブロックサイズを特定するためのユニットに分割される。
ツリーブロックTBLKの上記ユニットは、再帰的な4分木分割により分割されている。この再帰的な4分木分割により得られる木構造のことを以下、符号化ツリー(coding tree)と称する。
以下、符号化ツリーの末端のノードであるリーフ(leaf)に対応するユニットを、符号化ノード(coding node)として参照する。また、符号化ノードは、符号化処理の基本的な単位となるため、以下、符号化ノードのことを、符号化単位(CU)とも称する。
つまり、符号化単位情報CU1〜CUNLは、ツリーブロックTBLKを再帰的に4分木分割して得られる各符号化ノード(符号化単位)に対応する情報である。
また、符号化ツリーのルート(root)は、ツリーブロックTBLKに対応付けられる。換言すれば、ツリーブロックTBLKは、複数の符号化ノードを再帰的に含む4分木分割の木構造の最上位ノードに対応付けられる。
なお、各符号化ノードのサイズは、当該符号化ノードが直接に属する符号化ノード(すなわち、当該符号化ノードの1階層上位のノードのユニット)のサイズの縦横とも半分である。
また、各符号化ノードの取り得るサイズは、符号化データ#1のシーケンスパラメータセットSPSに含まれる、符号化ノードのサイズ指定情報および最大階層深度(maximum hierarchical depth)に依存する。例えば、ツリーブロックTBLKのサイズが64×64画素であって、最大階層深度が3である場合には、当該ツリーブロックTBLK以下の階層における符号化ノードは、4種類のサイズ、すなわち、64×64画素、32×32画素、16×16画素、および8×8画素の何れかを取り得る。
(ツリーブロックヘッダ)
ツリーブロックヘッダTBLKHには、対象ツリーブロックの復号方法を決定するために動画像復号装置1が参照する符号化パラメータが含まれる。具体的には、図2の(c)に示すように、対象ツリーブロックの各CUへの分割パターンを指定するツリーブロック分割情報SP_TBLK、および、量子化ステップの大きさを指定する量子化パラメータ差分Δqp(qp_delta)が含まれる。
ツリーブロック分割情報SP_TBLKは、ツリーブロックを分割するための符号化ツリーを表す情報であり、具体的には、対象ツリーブロックに含まれる各CUの形状、サイズ、および、対象ツリーブロック内での位置を指定する情報である。
なお、ツリーブロック分割情報SP_TBLKは、CUの形状やサイズを明示的に含んでいなくてもよい。例えばツリーブロック分割情報SP_TBLKは、対象ツリーブロック全体またはツリーブロックの部分領域を四分割するか否かを示すフラグ(split_coding_unit_flag)の集合であってもよい。その場合、ツリーブロックの形状やサイズを併用することで各CUの形状やサイズを特定できる。
また、量子化パラメータ差分Δqpは、対象ツリーブロックにおける量子化パラメータqpと、当該対象ツリーブロックの直前に符号化されたツリーブロックにおける量子化パラメータqp’との差分qp−qp’である。
(CUレイヤ)
CUレイヤでは、処理対象のCU(以下、対象CUとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。
ここで、符号化単位情報CUに含まれるデータの具体的な内容の説明をする前に、CUに含まれるデータの木構造について説明する。符号化ノードは、予測ツリー(prediction ree;PT)および変換ツリー(transform tree;TT)のルートのノードとなる。予測ツリーおよび変換ツリーについて説明すると次のとおりである。
予測ツリーにおいては、符号化ノードが1または複数の予測ブロックに分割され、各予測ブロックの位置とサイズとが規定される。別の表現でいえば、予測ブロックは、符号化ノードを構成する1または複数の重複しない領域である。また、予測ツリーは、上述の分割により得られた1または複数の予測ブロックを含む。
予測処理は、この予測ブロックごとに行われる。以下、予測の単位である予測ブロックのことを、予測単位(prediction unit;PU)とも称する。
予測ツリーにおける分割の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。イントラ予測の場合、分割方法は、2N×2N(符号化ノードと同一サイズ)と、N×Nとがある。また、インター予測の場合、分割方法は、2N×2N(符号化ノードと同一サイズ)、2N×N、N×2N、および、N×Nなどがある。
また、変換ツリーにおいては、符号化ノードが1または複数の変換ブロックに分割され、各変換ブロックの位置とサイズとが規定される。別の表現でいえば、変換ブロックは、符号化ノードを構成する1または複数の重複しない領域のことである。また、変換ツリーは、上述の分割より得られた1または複数の変換ブロックを含む。
変換処理は、この変換ブロックごとに行われる。以下、変換の単位である変換ブロックのことを、変換単位(transform unit;TU)とも称する。
(符号化単位情報のデータ構造)
続いて、図2の(d)を参照しながら符号化単位情報CUに含まれるデータの具体的な内容について説明する。図2の(d)に示すように、符号化単位情報CUは、具体的には、スキップモードフラグSKIP、CU予測タイプ情報Pred_type、PT情報PTI、および、TT情報TTIを含む。
[スキップフラグ]
スキップフラグSKIPは、対象CUについて、スキップモードが適用されているか否かを示すフラグであり、スキップフラグSKIPの値が1の場合、すなわち、対象CUにスキップモードが適用されている場合、その符号化単位情報CUにおけるPT情報PTIは省略される。なお、スキップフラグSKIPは、Iスライスでは省略される。
[CU予測タイプ情報]
CU予測タイプ情報Pred_typeは、CU予測方式情報PredModeおよびPU分割タイプ情報PartModeを含む。CU予測タイプ情報のことを単に予測タイプ情報と呼ぶこともある。
CU予測方式情報PredModeは、対象CUに含まれる各PUについての予測画像生成方法として、イントラ予測(イントラCU)、および、インター予測(インターCU)のいずれを用いるのかを指定するものである。なお、以下では、対象CUにおける、スキップ、イントラ予測、および、インター予測の種別を、CU予測モードと称する。
PU分割タイプ情報PartModeは、対象符号化単位(CU)の各PUへの分割のパターンであるPU分割タイプを指定するものである。以下、このように、PU分割タイプに従って、対象符号化単位(CU)を各PUへ分割することをPU分割と称する。
PU分割タイプ情報PartModeは、例示的には、PU分割パターンの種類を示すインデックスであってもよいし、対象予測ツリーに含まれる各PUの形状、サイズ、および、対象予測ツリー内での位置が指定されていてもよい。
なお、選択可能なPU分割タイプは、CU予測方式とCUサイズに応じて異なる。また、さらにいえば、選択可能なPU分割タイプは、インター予測およびイントラ予測それぞれの場合において異なる。また、PU分割タイプの詳細については後述する。
また、Iスライスでない場合、PU分割タイプ情報PartModeの値およびPU分割タイプ情報PartModeの値は、ツリーブロックの分割(partition)、予測方式、およびCUの分割(split)の方法の組み合わせを指定するインデックス(cu_split_pred_part_mode)によって特定されるようになっていてもよい。
[PT情報]
PT情報PTIは、対象CUに含まれるPTに関する情報である。言い換えれば、PT情報PTIは、PTに含まれる1または複数のPUそれぞれに関する情報の集合である。上述のとおり予測画像の生成は、PUを単位として行われるので、PT情報PTIは、動画像復号装置1によって予測画像が生成される際に参照される。PT情報PTIは、図2の(d)に示すように、各PUにおける予測情報等を含むPU情報PUI1〜PUINP(NPは、対象PTに含まれるPUの総数)を含む。
予測情報PUIは、予測タイプ情報Pred_modeが何れの予測方法を指定するのかに応じて、イントラ予測パラメータPP_Intra、または、インター予測パラメータPP_Interを含む。以下では、イントラ予測が適用されるPUをイントラPUとも呼称し、インター予測が適用されるPUをインターPUとも呼称する。
インター予測パラメータPP_Interは、動画像復号装置1が、インター予測によってインター予測画像を生成する際に参照される符号化パラメータを含む。
インター予測パラメータPP_Interとしては、例えば、マージフラグ(merge_flag)、マージインデックス(merge_idx)、推定動きベクトルインデックス(mvp_idx)、参照画像インデックス(ref_idx)、インター予測フラグ(inter_pred_flag)、および動きベクトル残差(mvd)が挙げられる。
イントラ予測パラメータPP_Intraは、動画像復号装置1が、イントラ予測によってイントラ予測画像を生成する際に参照される符号化パラメータを含む。
イントラ予測パラメータPP_Intraとしては、例えば、推定予測モードフラグ、推定予測モードインデックス、および、残余予測モードインデックスが挙げられる。
なお、イントラ予測パラメータには、PCMモードを用いるか否かを示すPCMモードフラグが含まれていてもよい。PCMモードフラグが符号化されている場合であって、PCMモードフラグがPCMモードを用いることを示しているときには、予測処理(イントラ)、変換処理、および、エントロピー符号化の各処理が省略される。
[TT情報]
TT情報TTIは、CUに含まれるTTに関する情報である。言い換えれば、TT情報TTIは、TTに含まれる1または複数のTUそれぞれに関する情報の集合であり、動画像復号装置1により残差データを復号する際に参照される。なお、以下、TUのことをブロックと称することもある。
TT情報TTIは、図2の(d)に示すように、対象CUの各変換ブロックへの分割パターンを指定するTT分割情報SP_TU、および、TU情報TUI1〜TUINT(NTは、対象CUに含まれるブロックの総数)を含んでいる。
TT分割情報SP_TUは、具体的には、対象CUに含まれる各TUの形状、サイズ、および、対象CU内での位置を決定するための情報である。例えば、TT分割情報SP_TUは、対象となるノードの分割を行うのか否かを示す情報(split_transform_flag)と、その分割の深度を示す情報(trafoDepth)とから実現することができる。
また、例えば、CUのサイズが、64×64の場合、分割により得られる各TUは、32×32画素から4×4画素までのサイズを取り得る。
TU情報TUI1〜TUINTは、TTに含まれる1または複数のTUそれぞれに関する個別の情報である。例えば、TU情報TUIは、量子化予測残差(量子化残差とも呼ぶ)を含んでいる。
各量子化予測残差は、動画像符号化装置2が以下の処理1〜3を、処理対象のブロックである対象ブロックに施すことによって生成した符号化データである。
処理1:符号化対象画像から予測画像を減算した予測残差を周波数変換(例えばDCT変換(Discrete Cosine Transform))する;
処理2:処理1にて得られた変換係数を量子化する;
処理3:処理2にて量子化された変換係数を可変長符号化する;
なお、上述した量子化パラメータqpは、動画像符号化装置2が変換係数を量子化する際に用いた量子化ステップQPの大きさを表す(QP=2qp/6)。
(PU分割タイプ)
PU分割タイプには、対象CUのサイズを2N×2N画素とすると、次の合計8種類のパターンがある。すなわち、2N×2N画素、2N×N画素、N×2N画素、およびN×N画素の4つの対称的分割(symmetric splittings)、並びに、2N×nU画素、2N×nD画素、nL×2N画素、およびnR×2N画素の4つの非対称的分割(asymmetric splittings)である。なお、N=2m(mは1以上の任意の整数)を意味している。以下、対称CUを分割して得られる領域のことをパーティションとも称する。
図3の(a)〜(h)に、それぞれの分割タイプについて、CUにおけるPU分割の境界の位置を具体的に図示している。
図3の(a)は、CUの分割を行わない2N×2NのPU分割タイプを示している。また、図3の(b)、(c)、および(d)は、それぞれ、PU分割タイプが、2N×N、2N×nU、および、2N×nDである場合のパーティションの形状について示している。また、図3の(e)、(f)、および(g)は、それぞれ、PU分割タイプが、N×2N、nL×2N、および、nR×2Nである場合のパーティションの形状について示している。また、図3の(h)は、PU分割タイプが、N×Nである場合のパーティションの形状を示している。
図3の(a)および(h)のPU分割タイプのことを、そのパーティションの形状に基づいて、正方形分割とも称する。また、図3の(b)〜(g)のPU分割タイプのことは、非正方形分割とも称する。
また、図3の(a)〜(h)において、各領域に付した番号は、領域の識別番号を示しており、この識別番号順に、領域に対して処理が行われる。すなわち、当該識別番号は、領域のスキャン順を表している。
[インター予測の場合の分割タイプ]
インターPUでは、上記8種類の分割タイプのうち、N×N(図3の(h))以外の7種類が定義されている。なお、上記6つの非対称的分割は、AMP(Asymmetric Motion Partition)と呼ばれることもある。
また、Nの具体的な値は、当該PUが属するCUのサイズによって規定され、nU、nD、nL、および、nRの具体的な値は、Nの値に応じて定められる。例えば、128×128画素のインターCUは、128×128画素、128×64画素、64×128画素、64×64画素、128×32画素、128×96画素、32×128画素、および、96×128画素のインターPUへ分割することが可能である。
[イントラ予測の場合の分割タイプ]
イントラPUでは、次の2種類の分割パターンが定義されている。対象CUを分割しない、すなわち対象CU自身が1つのPUとして取り扱われる分割パターン2N×2Nと、対象CUを、4つのPUへと対称的に分割するパターンN×Nと、である。したがって、イントラPUでは、図3に示した例でいえば、(a)および(h)の分割パターンを取ることができる。例えば、128×128画素のイントラCUは、128×128画素、および、64×64画素のイントラPUへ分割することが可能である。
(TU分割タイプ)
次に、図3(i)〜(o)を用いて、TU分割タイプについて説明する。TU分割のパターンは、CUのサイズ、分割の深度(trafoDepth)、および対象PUのPU分割タイプにより定まる。
また、TU分割のパターンには、正方形の4分木分割と、非正方形の4分木分割とが含まれる。
図3の(i)〜(k)は、正方形のノードを正方形または非正方形に4分木分割する分割方式について示している。より具体的には、図3の(i)は、正方形のノードを正方形に4分木分割する分割方式を示している。また、同図の(j)は、正方形のノードを横長の長方形に4分木分割する分割方式を示している。そして、同図の(k)は、正方形のノードを縦長の長方形に4分木分割する分割方式を示している。
また、図3の(l)〜(o)は、非正方形のノードを正方形または非正方形に4分木分割する分割方式について示している。より具体的には、図3の(l)は、横長の長方形のノードを横長の長方形に4分木分割する分割方式を示している。また、同図の(m)は、横長の長方形のノードを正方形に4分木分割する分割方式を示している。また、同図の(n)は、縦長の長方形のノードを縦長の長方形に4分木分割する分割方式を示している。そして、同図の(o)は、縦長の長方形のノードを正方形に4分木分割する分割方式を示している。
(量子化残差情報QDの構成)
図4及び図5は、量子化残差情報QD(図4ではresidual_coding_cabac()と表記)に含まれる各シンタックスが示されている。
図4は、量子化残差情報QDに含まれるシンタックスを示すシンタックステーブルの前半部分を示す図である。図5は、量子化残差情報QDに含まれるシンタックスを示すシンタックステーブルの後半部分を示す図である。
図4及び図5に示すように、量子化残差情報QDは、シンタックスlast_significant_coeff_x、last_significant_coeff_y、significant_coeffgroup_flag、significant_coeff_flag、coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、coeff_sign_flag、coeff_abs_level_minus3を含んでいる。
量子化残差情報QDに含まれる各シンタックスは、コンテキスト適応型2値算術符号化(CABAC:(Context-based Adaptive Binary Arithmetic Coding))によって符号化されている。
(ブロックサイズが所定のサイズ以下である場合の復号処理)
以下では、図4〜図6を参照して、ブロックサイズが所定のサイズ以下である場合の各シンタックスの復号手順について、ブロックサイズが8×8画素である場合を例にとり説明する。なお、上記所定のサイズ以下のブロックサイズとは、例えば、4×4画素及び8×8画素のことを指すが、これは本実施形態を限定するものではない(以下同様)。
図6(a)〜(g)の横軸は、水平方向周波数xC(0≦xC≦7)を表しており、縦軸は、垂直方向周波数yC(0≦yC≦7)を表している。以下の説明では、周波数領域に含まれる各部分領域のうち、水平方向周波数xC、および、垂直方向周波数yCによって指定される部分領域を、周波数成分(xC、yC)とも呼称する。また、周波数成分(xC、yC)についての変換係数をCoeff(xC、yC)とも表記する。変換係数Coeff(0、0)は、DC成分を示しており、それ以外の変換係数は、DC成分以外の成分を表している。本明細書において、(xC、yC)を(u、v)と表記することもある。
図6(a)〜(b)は、8×8の周波数成分よりなる周波数領域FRにおけるスキャン順の例を示す図である。
図6(a)に示す例では、低周波数側(図6(a)において左上)から高周波数側(図6(a)において右下)に向かって順次スキャンが行われる。また、図6(a)に示す例では、周波数領域FR内に示す矢印に沿ってスキャンが行われる。図6(a)に示すスキャン順を、順スキャンと呼ぶこともある。
一方で、図6(b)に示す例では、高周波数側(図6(b)において右下)から低周波数側(図6(b)において左上)に向かって順次スキャンが行われる。また、図6(b)に示す例では、周波数領域FR内に示す矢印に沿ってスキャンが行われる。図6(b)に示すスキャン順を、逆スキャンと呼ぶこともある。
図6(c)は、8×8の周波数成分よりなる周波数領域における0でない変換係数(非0変換係数)を例示する図である。
シンタックスlast_significant_coeff_x及びlast_significant_coeff_yは、順スキャン方向に沿って最後の非0変換係数の位置を示すシンタックスである。図6(c)に示す例の場合、last_significant_coeff_x=6、last_significant_coeff_y=0である。
シンタックスsignificant_coeff_flagは、非0変換係数を起点として逆スキャン方向に沿った各周波数成分について、非0変換係数の有無を示すシンタックスである。図6(d)は、復号対象の変換係数が、図6(c)に示すものである場合のシンタックスsignificant_coeff_flagの値を示している。図6(d)に示すように、シンタックスsignificant_coeff_flagは、各xC、yCについて、変換係数が0であれば0、変換係数が0でなければ1をとるフラグである。なお、シンタックスsignificant_coeff_flagを変換係数有無フラグとも呼称する。
シンタックスcoeff_abs_level_greater1_flagは、変換係数の絶対値が1を越えるものであるのか否かを示すフラグであり、シンタックスsignificant_coeff_flagの値が1である周波数成分について符号化される。変換係数の絶対値が1を越えるものであるとき、coeff_abs_level_greater1_flagの値は1であり、そうでないときにcoeff_abs_level_greater1_flagの値は0である。
シンタックスcoeff_abs_level_greater2_flagは、変換係数の絶対値が2を越えるものであるのか否かを示すフラグであり、coeff_abs_level_greater1_flagの値が1であるときに符号化される。変換係数の絶対値が2を越えるものであるとき、coeff_abs_level_greater2_flagの値は1であり、そうでないときにcoeff_abs_level_greater2_flagの値は0である。
シンタックスcoeff_abs_level_minus3は、変換係数の絶対値が3以上である場合に、当該変換係数の絶対値を指定するためのシンタックスであり、coeff_abs_level_greater2_flagの値が1であるときに符号化される。シンタックスcoeff_abs_level_minus3の値は、変換係数の絶対値から3を引いたものである。例えば、coeff_abs_level_minus3=1は、変換係数の絶対値が4であることを示している。
図6(e)は、シンタックスcoeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、及びcoeff_abs_level_minus3を復号することによって得られた各変換係数の絶対値を示している。
シンタックスcoeff_sign_flagは、変換係数の符号(正であるのか負であるのか)を示すフラグであり、シンタックスsignificant_coeff_flagの値が1である周波数成分について符号化される。
図6(f)は、復号対象の変換係数が、図6(c)に示すものである場合のシンタックスcoeff_sign_flagを示す図である。図6(f)に示すように、シンタックスcoeff_sign_flagは、変換係数が正である場合に1をとり、変換係数が負である場合に0をとるフラグである。
動画像復号装置1の備える可変長符号復号部11は、シンタックスlast_significant_coeff_x、last_significant_coeff_y、significant_coeff_flag、coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、coeff_sign_flag、coeff_abs_level_minus3を復号することにより、各周波数成分についての変換係数Coeff(xC、yC)を生成することができる。
なお、特定の領域(例えばTU)内の非0変換係数の集合をsignificance mapと呼ぶこともある。
なお、シンタックスcoeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、coeff_sign_flag、coeff_abs_level_minus3の復号は、ブロックサイズに関わらず、周波数領域における各周波数成分を、1または複数の部分領域またはサブグループ(サブ領域)に分割した後、高周波数側の部分領域またはサブグループから順次行う構成とすることが好ましい。図6(g)は、8×8の周波数成分よりなる周波数領域における部分領域への分割の例を示している。図6(g)の例では、第3グループ、第2グループ、第1グループ、第0グループと記された各部分領域の順に復号が行われる。
(ブロックサイズが所定のサイズより大きい場合の復号処理)
動画像復号装置1の備える可変長符号復号部11は、処理対象ブロックのブロックサイズが所定のサイズより大きい場合、周波数領域を複数のサブブロックに分割し、サブブロックを処理単位として、significant_coeff_flagの復号を行う。量子化残差情報QDには、サブブロック単位で、サブブロック内に少なくとも1つの非0変換係数が存在するか否かを示すフラグ(サブブロック係数有無フラグsignificant_coeffgroup_flag)が含まれる。なお、所定のサイズより大きいブロックサイズとは、例えば、16×16画素、32×32画素、4×16画素、16×4画素、8×32画素、32×8画素のことを指すが、本実施形態はこれに限定されるものではない(以下同様)。
以下では、ブロックサイズが所定のサイズより大きい場合の復号処理について、図7〜図8を参照して説明する。
図7(a)は、ブロックを分割して得られる複数の(図7(a)では4×4=16個の)サブブロックに対するスキャン順を示す図である。以下では、サブブロックを単位とするスキャンをサブブロックスキャンとも呼ぶ。サブブロックに対して図7(a)のようにスキャンが行われる場合、サブブロック内の各周波数領域に対して図7(b)に示すスキャン順でスキャンが行われる。図7(a)及び図7(b)に示すスキャン順を「順スキャン」とも呼ぶ。
図7(c)は、ブロックを分割して得られる複数の(図7(b)では4×4=16個の)サブブロックに対するスキャン順を示す図である。サブブロックに対して図7(c)のようにスキャンが行われる場合、サブブロック内の各周波数領域に対して図7(d)に示すスキャン順でスキャンが行われる。図7(c)及び図7(d)に示すスキャン順を「逆スキャン」とも呼ぶ。
図8(a)は、サイズが8×8であるブロックが4×4のサイズのサブブロックに分割された場合に、順スキャンにて各周波数成分がスキャンされる場合のスキャン順を示す図である。なお、図8(a)〜(f)は、ブロックサイズが所定のサイズより大きい場合の復号処理を説明するための図であるが、説明の便宜のため、サイズが8×8であるブロックを例示している。
図8(b)は、8×8の周波数成分よりなる周波数領域における0でない変換係数(非0変換係数)を例示する図である。図8(b)に示す例の場合、last_significant_coeff_x=6、last_significant_coeff_y=0である。
図8(c)は、復号対象の変換係数が、図8(b)に示すものである場合の各サブブロックについて復号されたサブブロック係数有無フラグsignificant_coeffgroup_flagの各値を示す図である。少なくとも1つの非0変換係数を含むサブブロックに関するsignificant_coeffgroup_flagは、値として1をとり、非0変換係数を1つも含まないサブブロックに関するsignificant_coeffgroup_flagは、値として0をとる。
図8(d)は、復号対象の変換係数が、図8(b)に示すものである場合の非0変換係数の有無を示すシンタックスsignificant_coeff_flagの各値を示す図である。significant_coeffgroup_flag=1であるサブブロックに対しては、significant_coeff_flagは逆スキャン順に復号され、significant_coeffgroup_flag=0であるサブブロックに対しては、当該サブブロックに対するsignificant_coeff_flagの復号処理を行うことなく、当該サブブロックに含まれる全ての周波数成分に対するsignificant_coeff_flagが0に設定される(図8(d)の左下のサブブロック)。
図8(e)は、復号対象の変換係数が、図8(b)に示すものである場合のシンタックスcoeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、及びcoeff_abs_level_minus3を復号することによって得られた各変換係数の絶対値を示している。
図8(f)は、復号対象の変換係数が、図8(b)に示すものである場合のシンタックスcoeff_sign_flagを示す図である。
各種シンタックスの復号処理の詳細については、後述することとし、続いて動画像復号装置1の構成について説明を行う。
(動画像復号装置1)
以下では、本実施形態に係る動画像復号装置1について図1、図9〜図51を参照して説明する。動画像復号装置1は、H.264/MPEG−4 AVC規格に採用されている技術、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている技術、TMuC(Test Model under Consideration)ソフトウェアに採用されている技術、および、その後継コーデックであるHEVC(High-Efficiency Video Coding)にて提案されている技術を実装している復号装置である。
図9は、動画像復号装置1の構成を示すブロック図である。図9に示すように、動画像復号装置1は、可変長符号復号部11、予測画像生成部12、逆量子化・逆変換部13、加算器14、フレームメモリ15、および、ループフィルタ16を備えている。また、図9に示すように、予測画像生成部12は、動きベクトル復元部12a、インター予測画像生成部12b、イントラ予測画像生成部12c、および、予測方式決定部12dを備えている。動画像復号装置1は、符号化データ#1を復号することによって動画像#2を生成するための装置である。
(可変長符号復号部11)
図10は、可変長符号復号部11の要部構成を示すブロック図である。図10に示すように、可変長符号復号部11は、量子化残差情報復号部111、予測パラメータ復号部112、予測タイプ情報復号部113、および、フィルタパラメータ復号部114を備えている。
可変長符号復号部11は、予測パラメータ復号部112にて、各パーティションに関する予測パラメータPPを、符号化データ#1から復号し、予測画像生成部12に供給する。具体的には、予測パラメータ復号部112は、インター予測パーティションに関しては、参照画像インデックス、推定動きベクトルインデックス、及び、動きベクトル残差を含むインター予測パラメータPP_Interを符号化データ#1から復号し、これらを動きベクトル復元部12aに供給する。一方、イントラ予測パーティションに関しては、推定予測モードフラグ、推定予測モードインデックス、および、残余予測モードインデックスを含むイントラ予測パラメータPP_Intraを符号化データ#1から復号し、これらをイントラ予測画像生成部12cに供給する。
また、可変長符号復号部11は、予測タイプ情報復号部113にて、各パーティションについての予測タイプ情報Pred_typeを符号化データ#1から復号し、これを予測方式決定部12dに供給する。更に、可変長符号復号部11は、量子化残差情報復号部111にて、ブロックに関する量子化残差情報QD、及び、そのブロックを含むTUに関する量子化パラメータ差分Δqpを符号化データ#1から復号し、これらを逆量子化・逆変換部13に供給する。また、可変長符号復号部11は、フィルタパラメータ復号部114にて、符号化データ#1からフィルタパラメータFPを復号し、これをループフィルタ16に供給する。なお、量子化残差情報復号部111の具体的な構成については後述するためここでは説明を省略する。
(予測画像生成部12)
予測画像生成部12は、各パーティションについての予測タイプ情報Pred_typeに基づいて、各パーティションがインター予測を行うべきインター予測パーティションであるのか、イントラ予測を行うべきイントラ予測パーティションであるのかを識別する。そして、前者の場合には、インター予測画像Pred_Interを生成すると共に、生成したインター予測画像Pred_Interを予測画像Predとして加算器14に供給し、後者の場合には、イントラ予測画像Pred_Intraを生成すると共に、生成したイントラ予測画像Pred_Intraを加算器14に供給する。なお、予測画像生成部12は、処理対象PUに対してスキップモードが適用されている場合には、当該PUに属する他のパラメータの復号を省略する。
(動きベクトル復元部12a)
動きベクトル復元部12aは、各インター予測パーティションに関する動きベクトルmvを、そのパーティションに関する動きベクトル残差と、他のパーティションに関する復元済みの動きベクトルmv’とから復元する。具体的には、(1)推定動きベクトルインデックスにより指定される推定方法に従って、復元済みの動きベクトルmv’から推定動きベクトルを導出し、(2)導出した推定動きベクトルと動きベクトル残差とを加算することによって動きベクトルmvを得る。なお、他のパーティションに関する復元済みの動きベクトルmv’は、フレームメモリ15から読み出すことができる。動きベクトル復元部12aは、復元した動きベクトルmvを、対応する参照画像インデックスRIと共に、インター予測画像生成部12bに供給する。
(インター予測画像生成部12b)
インター予測画像生成部12bは、画面間予測によって、各インター予測パーティションに関する動き補償画像mcを生成する。具体的には、動きベクトル復元部12aから供給された動きベクトルmvを用いて、同じく動きベクトル復元部12aから供給された参照画像インデックスRIによって指定される適応フィルタ済復号画像P_ALF’から動き補償画像mcを生成する。ここで、適応フィルタ済復号画像P_ALF’は、既にフレーム全体の復号が完了した復号済みの復号画像に対して、ループフィルタ16によるフィルタ処理を施すことによって得られる画像であり、インター予測画像生成部12bは、適応フィルタ済復号画像P_ALF’を構成する各画素の画素値をフレームメモリ15から読み出すことができる。インター予測画像生成部12bによって生成された動き補償画像mcは、インター予測画像Pred_Interとして予測方式決定部12dに供給される。
(イントラ予測画像生成部12c)
イントラ予測画像生成部12cは、各イントラ予測パーティションに関する予測画像Pred_Intraを生成する。具体的には、まず、可変長符号復号部11から供給されたイントラ予測パラメータPP_Intraに基づいて予測モードを特定し、特定された予測モードを対象パーティションに対して、例えば、ラスタスキャン順に割り付ける。
ここで、イントラ予測パラメータPP_Intraに基づく予測モードの特定は、以下のように行うことができる。(1)推定予測モードフラグを復号し、当該推定予測モードフラグが、処理対象である対象パーティションについての予測モードと、当該対象パーティションの周辺のパーティションに割り付けられた予測モードとが同一であることを示している場合には、対象パーティションに対して、当該対象パーティションの周辺のパーティションに割り付けられた予測モードを割り付ける。(2)一方で、推定予測モードフラグが、処理対象である対象パーティションについての予測モードと、当該対象パーティションの周辺のパーティションに割り付けられた予測モードとが同一でないことを示している場合には、残余予測モードインデックスを復号し、当該残余予測モードインデックスの示す予測モードを対象パーティションに対して割り付ける。
イントラ予測画像生成部12cは、対象パーティションに割り付けられた予測モードの示す予測方法に従って、画面内予測によって、(局所)復号画像Pから予測画像Pred_Intraを生成する。イントラ予測画像生成部12cによって生成されたイントラ予測画像Pred_Intraは、予測方式決定部12dに供給される。なお、イントラ予測画像生成部12cは、画面内予測によって、適応フィルタ済復号画像P_ALFから予測画像Pred_Intraを生成する構成とすることも可能である。
図11を用いて、予測モードの定義について説明する。図11は、予測モードの定義を示している。同図に示すように、36種類の予測モードが定義されており、それぞれの予測モードは、「0」〜「35」の番号(イントラ予測モードインデックス)によって特定される。また、図12に示すように、各予測モードには次のような名称が割り当てられている。すなわち、「0」は、“Intra_Planar(プラナー予測モード、平面予測モード)”であり、「1」は、“Intra Vertical(イントラ垂直予測モード)”であり、「2」は、“Intra Horizontal(イントラ水平予測モード)”であり、「3」は、“Intra DC(イントラDC予測モード)”であり、「4」〜「34」は、“Intra Angular(方向予測)”であり、「35」は、“Intra From Luma”である。「35」は、色差予測モード固有のものであり、輝度の予測に基づいて色差の予測を行うモードである。言い換えれば、色差予測モード「35」は、輝度画素値と色差画素値との相関を利用した予測モードである。色差予測モード「35」はLMモードとも称する。
また、予測モードの数は、対象ブロックのサイズに依存して規定される。図11は、対象ブロックのサイズの対数値(log2TrafoSize)と、予測モード数(intraPredModeNum)との関係を示している。
図13に示すように、log2TrafoSizeが、「2」である場合、intraPredModeNumは、「18」である。また、log2TrafoSizeが、「3」、「4」、「5」、及び「6」である場合、いずれにおいてもintraPredModeNumは、「35」である。
(予測方式決定部12d)
予測方式決定部12dは、各パーティションが属するPUについての予測タイプ情報Pred_typeに基づいて、各パーティションがインター予測を行うべきインター予測パーティションであるのか、イントラ予測を行うべきイントラ予測パーティションであるのかを決定する。そして、前者の場合には、インター予測画像生成部12bにて生成されたインター予測画像Pred_Interを予測画像Predとして加算器14に供給し、後者の場合には、イントラ予測画像生成部12cにて生成されたイントラ予測画像Pred_Intraを予測画像Predとして加算器14に供給する。
(逆量子化・逆変換部13)
逆量子化・逆変換部13は、(1)符号化データ#1の量子化残差情報QDから復号された変換係数Coeffを逆量子化し、(2)逆量子化によって得られた変換係数Coeff_IQに対して逆DCT(Discrete Cosine Transform)変換等の逆周波数変換を施し、(3)逆周波数変換によって得られた予測残差Dを加算器14に供給する。なお、量子化残差情報QDから復号された変換係数Coeffを逆量子化する際に、逆量子化・逆変換部13は、可変長符号復号部11から供給された量子化パラメータ差分Δqpから量子化ステップQPを導出する。量子化パラメータqpは、直前に逆量子化及び逆周波数変換したTUに関する量子化パラメータqp’に量子化パラメータ差分Δqpを加算することによって導出でき、量子化ステップQPは、量子化パラメータqpから例えばQP=2pq/6によって導出できる。また、逆量子化・逆変換部13による予測残差Dの生成は、TUあるいはTUを分割したブロックを単位として行われる。
なお、逆量子化・逆変換部13によって行われる逆DCT変換は、例えば、対象ブロックのサイズが8×8画素である場合、当該対象ブロックにおける画素の位置を(i、j)(0≦i≦7、0≦j≦7)とし、位置(i、j)における予測残差Dの値をD(i、j)と表すことにし、周波数成分(u、v)(0≦u≦7、0≦v≦7)における逆量子化された変換係数をCoeff_IQ(u、v)と表すことにすると、例えば、以下の数式(1)によって与えられる。
ここで、(u、v)は、上述した(xC、yC)に対応する変数である。C(u)およびC(v)は、以下のように与えられる。
・C(u)=1/√2 (u=0)
・C(u)=1 (u≠0)
・C(v)=1/√2 (v=0)
・C(v)=1 (v≠0)
(加算器14)
加算器14は、予測画像生成部12から供給された予測画像Predと、逆量子化・逆変換部13から供給された予測残差Dとを加算することによって復号画像Pを生成する。生成された復号画像Pは、フレームメモリ15に格納される。
(ループフィルタ16)
ループフィルタ16は、(1)復号画像Pにおけるブロック境界、またはパーティション境界の周辺の画像の平滑化(デブロック処理)を行うデブロッキングフィルタ(DF:Deblocking Filter)としての機能と、(2)デブロッキングフィルタが作用した画像に対して、フィルタパラメータFPを用いて適応フィルタ処理を行う適応フィルタ(ALF:Adaptive Loop Filter)としての機能とを有している。
(量子化残差情報復号部111)
量子化残差情報復号部111は、符号化データ#1に含まれる量子化残差情報QDから、各周波数成分(xC、yC)についての量子化された変換係数Coeff(xC、yC)を復号するための構成である。ここで、xCおよびyCは、周波数領域における各周波数成分の位置を表すインデックスであり、それぞれ、上述した水平方向周波数uおよび垂直方向周波数vに対応するインデックスである。また、量子化残差情報QDに含まれる各種のシンタックスは、コンテキスト適応型2値算術符号化(CABAC:(Context-based Adaptive Binary Arithmetic Coding))によって符号化されている。なお、以下では、量子化された変換係数Coeffを、単に、変換係数Coeffと呼ぶこともある。
図1は、量子化残差情報復号部111の構成を示すブロック図である。図1に示すように、量子化残差情報復号部111は、変換係数復号部120及び算術符号復号部130を備えている。
(算術符号復号部130)
算術符号復号部130は、量子化残差情報QDに含まれる各ビットをコンテキストを参照して復号するための構成であり、図1に示すように、コンテキスト記録更新部131及びビット復号部132を備えている。
(コンテキスト記録更新部131)
コンテキスト記録更新部131は、各コンテキストインデックスctxIdxによって管理されるコンテキスト変数CVを記録及び更新するための構成である。ここで、コンテキスト変数CVには、(1)発生確率が高い優勢シンボルMPS(most probable symbol)と、(2)その優勢シンボルMPSの発生確率を指定する確率状態インデックスpStateIdxとが含まれている。
コンテキスト記録更新部131は、変換係数復号部120の備える各部から供給されるコンテキストインデックスctxIdx及びビット復号部132によって復号されたBinの値を参照することによってコンテキスト変数CVを更新すると共に、更新されたコンテキスト変数CVを次回更新されるまで記録する。なお、優勢シンボルMPSは0か1である。また、優勢シンボルMPSと確率状態インデックスpStateIdxは、ビット復号部132がBinを1つ復号する毎に更新される。
また、コンテキストインデックスctxIdxは、各周波数成分についてのコンテキストを直接指定するものであってもよいし、処理対象のTU毎に設定されるコンテキストインデックスのオフセットからの増分値であってもよい(以下同様)。
(ビット復号部132)
ビット復号部132は、コンテキスト記録更新部131に記録されているコンテキスト変数CVを参照し、量子化残差情報QDに含まれる各ビット(Binとも呼ぶ)を復号する。また、復号して得られたBinの値を変換係数復号部120の備える各部に供給する。また、復号して得られたBinの値は、コンテキスト記録更新部131にも供給され、コンテキスト変数CVを更新するために参照される。
(変換係数復号部120)
図1に示すように、変換係数復号部120は、ラスト係数位置復号部121、スキャン順テーブル格納部122、係数復号制御部123、係数有無フラグ復号部、係数値復号部125、復号係数記憶部126、及び、サブブロック係数有無フラグ復号部127を備えている。
(ラスト係数位置復号部121)
ラスト係数位置復号部121は、ビット復号部132より供給される復号ビット(Bin)を解釈し、シンタックスlast_significant_coeff_x及びlast_significant_coeff_yを復号する。復号したシンタックスlast_significant_coeff_x及びlast_significant_coeff_yは、係数復号制御部123に供給される。また、ラスト係数位置復号部121は、算術符号復号部130にてシンタックスlast_significant_coeff_x及びlast_significant_coeff_yのBinを復号するために用いられるコンテキストを決定するためのコンテキストインデックスctxIdxを算出する。算出されたコンテキストインデックスctxIdxは、コンテキスト記録更新部131に供給される。
(スキャン順テーブル格納部122)
スキャン順テーブル格納部122には、処理対象のTU(ブロック)のサイズ、スキャン方向の種別を表すスキャンインデックス、及びスキャン順に沿って付与された周波数成分識別インデックスを引数として、処理対象の周波数成分の周波数領域における位置を与えるテーブルが格納されている。
このようなスキャン順テーブルの一例としては、図4及び図5に示したScanOrderが挙げられる。図4及び図5に示したScanOrderにおいて、log2TrafoSize-2は、処理対象のTUのサイズを表しており、scanIdxはスキャンインデックスを表しており、nは、スキャン順に沿って付与された周波数成分識別インデックスを表している。また、図4及び図5において、xC及びyCは、処理対象の周波数成分の周波数領域における位置を表している。
また、スキャン順テーブル格納部122に格納されたテーブルは、処理対象のTU(ブロック)のサイズとイントラ予測モードの予測モードインデックスとに関連付けられたスキャンインデックスscanIndexによって指定される。処理対象のTUに用いられた予測方法がイントラ予測である場合には、係数復号制御部123は、当該TUのサイズと当該TUの予測モードとに関連付けられたスキャンインデックスscanIndexによって指定されるテーブルを参照して周波数成分のスキャン順を決定する。
図14は、イントラ予測モードインデックスIntraPredModeと、ブロックサイズを指定するシンタックスlog2TrafoSize-2の各値とによって指定されるスキャンインデックスscanIndexの例を示している。図14において、log2TrafoSize-2=0は、ブロックサイズが4×4成分(4×4画素に対応)であることを示しており、log2TrafoSize-2=1は、ブロックサイズが8×8成分(8×8画素に対応)であることを示している。図14に示すように、例えば、ブロックサイズが4×4成分であり、イントラ予測モードインデックスが1であるとき、スキャンインデックス=1が用いられ、ブロックサイズが4×4成分であり、イントラ予測モードインデックスが2であるとき、スキャンインデックス=2が用いられる。
図15(a)は、スキャンインデックスscanIndexの各値によって指定されるスキャンタイプScanTypeを示している。図15(a)に示すように、スキャンインデックスが0であるとき、斜め方向スキャン(Up-right diagonal scan)が指定され、スキャンインデックスが1であるとき、水平方向優先スキャン(horizontal fast scan)が指定され、スキャンインデックスが2であるとき、垂直方向優先スキャン(vertical fact scan)が指定される。
また、図15(b)は、ブロックサイズが4×4成分であるときの、水平方向優先スキャン(horizontal fast scan)、垂直方向優先スキャン(vertical fact scan)、及び、斜め方向スキャン(Up-right diagonal scan)の各スキャンのスキャン順を示している。図15(b)において各周波数成分に付された番号は、該周波数成分がスキャンされる順番を示している。また、図15(b)に示す各例は、順スキャン方向を示している。
(サブブロックスキャン順テーブル)
また、スキャン順テーブル格納部122には、サブブロックのスキャン順を指定するためのサブブロックスキャン順テーブルが格納されている。サブブロックスキャン順テーブルは、処理対象のTU(ブロック)のサイズとイントラ予測モードの予測モードインデックス(予測方向)とに関連付けられたスキャンインデックスscanIndexによって指定される。処理対象のTUに用いられた予測方法がイントラ予測である場合には、係数復号制御部123は、当該TUのサイズと当該TUの予測モードとに関連付けられたスキャンインデックスscanIndexによって指定されるテーブルを参照してサブブロックのスキャン順を決定する。
図16は、イントラ予測モードインデックスIntraPredModeと、ブロックサイズを指定するシンタックスlog2TrafoSize-2の各値とによって指定されるサブブロックスキャンインデックスscanIndexの例を示している。図16において、log2TrafoSize-2=2は、ブロックサイズが16×16成分(16×16画素に対応)であることを示しており、log2TrafoSize-2=3は、ブロックサイズが32×32成分(32×32画素に対応)であることを示しており、log2TrafoSize-2=3は、ブロックサイズが64×64成分(64×64画素に対応)であることを示している。図16に示すように、例えば、ブロックサイズが16×16成分であり、イントラ予測モードインデックスが1であるとき、サブブロックスキャンインデックス=1が用いられ、ブロックサイズが32×32成分であり、イントラ予測モードインデックスが2であるとき、サブブロックスキャンインデックス=2が用いられる。
なお、ブロックサイズが4×16成分、16×4成分である場合には、ブロックサイズが16×16成分である場合に指定されるサブブロックスキャンインデックスを用いればよく、ブロックサイズが8×32成分、32×8成分である場合には、ブロックサイズが32×32成分である場合に指定されるサブブロックスキャンインデックスを用いればよい(以下同様)。
図17(a)は、サブブロックスキャンインデックスscanIndexの各値によって指定されるサブブロックスキャンタイプScanTypeを示している。図17(a)に示すように、サブブロックスキャンインデックスが0であるとき、斜め方向スキャン(Up-right diagonal scan)が指定され、サブブロックスキャンインデックスが1であるとき、水平方向優先スキャン(horizontal fast scan)が指定され、サブブロックスキャンインデックスが2であるとき、垂直方向優先スキャン(vertical fast scan)が指定される。
また、図17(b)は、ブロックサイズが16×16成分であるときの、4×4成分の各サブブロックに対する水平方向優先スキャン(horizontal fast scan)、垂直方向優先スキャン(vertical fact scan)、及び、斜め方向スキャン(Up-right diagonal scan)の各スキャンのスキャン順を示している。図17(b)において各サブブロックに付された番号は、該サブブロックがスキャンされる順番を示している。また、図17(b)に示す各例は、順スキャン方向を示している。
なお、サブブロックのスキャン順を指定するためのスキャン順インデックスの例は、図16に示すものに限られるわけではなく、例えば、図18、または図59に示すスキャン順インデックスを用いる構成としてもよい。図18、または図59に示すスキャン順インデックスの各値の示すスキャンタイプは、図17(a)(b)に示すものと同様である。
また、図16、図18及び図59に示す例では、ブロックサイズが16×16成分であるときと、ブロックサイズが32×32成分であるときと、ブロックサイズが64×64成分であるときとに対して、同じスキャンインデックスが指定されているが、これは本実施形態を限定するものではなく、イントラ予測モードが同一であっても、ブロックサイズに応じて異なるスキャンインデックスを指定する構成とすることができる。
(係数復号制御部123)
係数復号制御部123は、量子化残差情報復号部111の備える各部における復号処理の順序を制御するための構成である。
(ブロックサイズが所定のサイズ以下である場合)
ブロックサイズが所定のサイズ以下である場合、係数復号制御部123は、ラスト係数位置復号部121から供給されるシンタックスlast_significant_coeff_x及びlast_significant_coeff_yを参照し、順スキャンに沿った最後の非0変換係数の位置を特定すると共に、特定した最後の非0変換係数の位置を起点とするスキャン順であって、スキャン順テーブル格納部122に格納されたスキャン順テーブルよって与えられるスキャン順の逆スキャン順に、各周波数成分の位置(xC、yC)を、係数有無フラグ復号部124及び復号係数記憶部126に供給する。
また、係数復号制御部123は、処理対象のTUのサイズ、すなわち、対象周波数領域のサイズを示すパラメータであるszを、変換係数復号部120の備える各部に供給する(図示省略)。ここで、szは、具体的には、処理対象TUの一辺の画素数、すなわち、対象周波数領域の一辺の周波数成分の数を表すパラメータである。
なお、係数復号制御部123は、スキャン順テーブル格納部122に格納されたスキャン順テーブルよって与えられるスキャン順の順スキャン順に、各周波数成分の位置(xC、yC)を、係数有無フラグ復号部に供給する構成としてもよい。
(ブロックサイズが所定のサイズよりも大きい場合)
ブロックサイズが所定のサイズよりも大きい場合、係数復号制御部123は、ラスト係数位置復号部121から供給されるシンタックスlast_significant_coeff_x及びlast_significant_coeff_yを参照し、順スキャンに沿った最後の非0変換係数の位置を特定すると共に、特定した最後の非0変換係数を含むサブブロックの位置を起点とするスキャン順であって、スキャン順テーブル格納部122に格納されたサブブロックスキャン順テーブルによって与えられるスキャン順の逆スキャン順に、各サブブロックの位置(xCG、yCG)を、サブブロック係数有無フラグ復号部127に供給する。
また、係数復号制御部123は、処理対象となるサブブロックに関して、スキャン順テーブル格納部122に格納されたスキャン順テーブルよって与えられるスキャン順の逆スキャン順に、当該処理対象となるサブブロックに含まれる各周波数成分の位置(xC、yC)を、係数有無フラグ復号部124及び復号係数記憶部126に供給する。ここで、処理対象となるサブブロックに含まれる各周波数成分のスキャン順としては、具体的には、斜め方向スキャン(Up-right diagonal scan)を用いればよい。
このように、係数復号制御部123は、処理対象の単位領域(ブロック、TU)に適用された予測方式がイントラ予測である場合に、該イントラ予測の予測方向に応じて、サブブロックスキャン順を設定する構成である。
一般に、イントラ予測モードと変換係数の偏りとは互いに相関を有しているため、イントラ予測モードに応じてスキャン順を切り替えることにより、サブブロック係数有無フラグの偏りに適したサブブロックスキャンを行うことができる。これによって、符号化及び復号対象となるサブブロック係数有無フラグの符号量を削減することができるので、処理量が削減されると共に、符号化効率が向上する。
(サブブロック係数有無フラグ復号部127)
サブブロック係数有無フラグ復号部127は、ビット復号部132から供給される各Binを解釈し、各サブブロック位置(xCG、yCG)によって指定されるシンタックスsignificant_coeffgroup_flag[xCG][yCG]を復号する。また、サブブロック係数有無フラグ復号部127は、算術符号復号部130にてシンタックスsignificant_coeffgroup_flag[xCG][yCG]のBinを復号するために用いられるコンテキストを決定するためのコンテキストインデックスctxIdxを算出する。算出されたコンテキストインデックスctxIdxは、コンテキスト記録更新部131に供給される。ここで、シンタックスsignificant_coeffgroup_flag[xCG][yCG]は、サブブロック位置(xCG、yCG)によって指定されるサブブロックに、少なくとも1つの非0変換係数が含まれている場合に1をとり、非0変換係数が1つも含まれていない場合に0をとるシンタックスである。復号されたシンタックスsignificant_coeffgroup_flag[xCG][yCG]の値は、復号係数記憶部126に格納される。
なお、サブブロック係数有無フラグ復号部127のより具体的な構成については後述する。
(係数有無フラグ復号部124)
本実施形態に係る係数有無フラグ復号部124は、各係数位置(xC、yC)によって指定されるシンタックスsignificant_coeff_flag[xC][yC]を復号する。復号されたシンタックスsignificant_coeff_flag[xC][yC]の値は、復号係数記憶部126に格納される。また、係数有無フラグ復号部124は、算術符号復号部130にてシンタックスsignificant_coeff_flag[xC][yC]のBinを復号するために用いられるコンテキストを決定するためのコンテキストインデックスctxIdxを算出する。算出されたコンテキストインデックスctxIdxは、コンテキスト記録更新部131に供給される。係数有無フラグ復号部124の具体的な構成については後述する。
(係数値復号部125)
係数値復号部125は、ビット復号部132から供給される各Binを解釈し、シンタックスcoeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、coeff_sign_flag、及びcoeff_abs_level_minus3を復号すると共に、これらのシンタックスを復号した結果に基づき、処理対象の周波数成分における変換係数(より具体的には非0変換係数)の値を導出する。また、各種シンタックスの復号に用いたコンテキストインデックスctxIdxは、コンテキスト記録更新部131に供給される。導出された変換係数の値は、復号係数記憶部126に格納される。
(復号係数記憶部126)
復号係数記憶部126は、係数値復号部125によって復号された変換係数の各値を記憶しておくための構成である。また、復号係数記憶部126には、係数有無フラグ復号部124によって復号されたシンタックスsignificant_coeff_flagの各値が記憶される。復号係数記憶部126によって記憶されている変換係数の各値は、逆量子化・逆変換部13に供給される。
(サブブロック係数有無フラグ復号部127の構成例)
以下では、図19を参照して、サブブロック係数有無フラグ復号部127の具体的な構成例について説明する。
図19は、サブブロック係数有無フラグ復号部127の構成例を示すブロック図である。図19に示すように、サブブロック係数有無フラグ復号部127は、コンテキスト導出部127a、サブブロック係数有無フラグ記憶部127b、及び、サブブロック係数有無フラグ設定部127cを備えている。
以下では、サブブロック係数有無フラグ復号部127に対して、係数復号制御部123から、サブブロック位置(xCG、yCG)が逆スキャン順に供給される場合を例に挙げて説明を行う。なお、この場合、サブブロック係数有無フラグ復号部127に対応する符号化装置側の構成では、サブブロック位置(xCG、yCG)が順スキャン順に供給されることになる。
(コンテキスト導出部127a)
サブブロック係数有無フラグ復号部127の備えるコンテキスト導出部127aは、各サブブロック位置(xCG、yCG)によって指定されるサブブロックに割り付けるコンテキストインデックスを導出する。サブブロックに割り付けられたコンテキストインデックスは、当該サブブロックについてのシンタックスsignificant_coeffgroup_flagを示すBinを復号する際に用いられる。また、コンテキストインデックスを導出する際には、サブブロック係数有無フラグ記憶部127bに記憶された復号済みのサブブロック係数有無フラグの値が参照される。コンテキスト導出部127aは、導出したコンテキストインデックスをコンテキスト記録更新部131に供給する。
サブブロックに割り付けるコンテキストインデックスは、具体的には、サブブロック位置(xCG,yCG)、及びサブブロック係数有無フラグ記憶部127bに記憶された復号済みのサブブロック係数有無フラグの値を用いて、次のように導出される。
(1)xCG==3、かつ、xCG==3のとき
コンテキストインデックスには、色空間を示すcIdxと、TUサイズを示すlog2TrofoSizeによって定まる所定の初期値(ctxIdxOffset)が設定される。
ctxIdx = ctxIdxOffset
(2)xCG<3、かつ、yCG==3のとき
コンテキストインデックスには、サブブロック位置(xCG、yCG)の右隣に位置する復号済みサブブロック係数有無フラグsignificant_coeffgroup_flag[xCG+1][yCG+1]の値を参照して次のように設定される。
ctxIdx = ctxIdxOffset+ significant_coeffgroup_flag[xCG+1][yCG]
(3)xCG==3、かつ、yCG<3のとき
コンテキストインデックスには、サブブロック位置(xCG、yCG)の下に位置する復号済みサブブロック係数有無フラグsignificant_coeffgroup_flag[xCG][yCG+1]の値を参照して次のように設定される。
ctxIdx = ctxIdxOffset + significant_coeffgroup_flag[xCG][yCG+1]
(4)xCG<3、かつ、yCG<3のとき
コンテキストインデックスには、サブブロック位置(xCG、yCG)の右隣に位置する復号済みサブブロック係数有無フラグsignificant_coeffgroup_flag[xCG+1][yCG]と、サブブロック位置(xCG,yCG)の下に位置する復号済サブブロック係数有無フラグsiginificant_coeffgroup_flag[xCG][yCG+1]の値を参照して次のように設定される。
ctxIdx = ctxIdxOffset + Max( significant_coeffgroup_flag[xCG+1][yCG], significant_coeffgroup_flag[xCG][yCG+1] )
なお、初期値ctxIdxOffsetは、色空間を示すcIdxと、TUサイズを示すlog2TrofoSizeによって次のように設定される。
ctxIdxOffset = cIdx==0 ? ( ( 5 ‐ log2TrafoSize ) * 16 ) + 44 :
( ( 4 − log2TrafoSize ) * 16 ) + 44 + 64
(サブブロック係数有無フラグ記憶部127b)
サブブロック係数有無フラグ記憶部127bには、サブブロック係数有無フラグ設定部127cによって復号又は設定されたシンタックスsignificant_coeffgroup_flagの各値が記憶されている。サブブロック係数有無フラグ設定部127cは、隣接サブブロックに割り付けられたシンタックスsignificant_coeffgroup_flagを、サブブロック係数有無フラグ記憶部127bから読み出すことができる。
(サブブロック係数有無フラグ設定部127c)
サブブロック係数有無フラグ設定部127cは、ビット復号部132から供給される各Binを解釈し、シンタックスsignificant_coeffgroup_flag[xCG][yCG]を復号または設定する。より具体的には、サブブロック係数有無フラグ設定部127cは、サブブロック位置(xCG、yCG)、及び、サブブロック位置(xCG、yCG)によって指定されるサブブロックに隣接するサブブロック(隣接サブブロックとも呼ぶ)に割り付けられたシンタックスsignificant_coeffgroup_flagを参照し、シンタックスsignificant_coeffgroup_flag[xCG][yCG]を復号または設定する。また、復号または設定されたシンタックスsignificant_coeffgroup_flag[xCG][yCG]の値は、係数有無フラグ復号部124に供給される。
(スキャンタイプが垂直方向優先スキャンの場合)
サブブロックスキャン順を指定するスキャンタイプが垂直方向優先スキャンである場合、サブブロック係数有無フラグ設定部127cは、図20(a)に示すように、サブブロック(xCG、yCG)に隣接するサブブロック(xCG、yCG+1)に割り付けられたサブブロック係数有無フラグsignificant_coeffgroup_flag[xCG][yCG+1]の値を参照する。significant_coeffgroup_flag[xCG][yCG+1]=1である場合、サブブロック係数有無フラグ設定部127cは、significant_coeffgroup_flag[xCG][yCG]=1に設定する。この場合、significant_coeffgroup_flag[xCG][yCG]を復号する処理を省略することができる。なお、隣接サブブロックに割り付けられたサブブロック係数有無フラグの値を当該サブブロックに割り付けられたサブブロック係数有無フラグの値に設定することを、「サブブロック係数有無フラグの推測」と表現することもある。推測されたサブブロック係数有無フラグに対しては、符号化及び復号処理が省略可能である。
(スキャンタイプが水平方向優先スキャンの場合)
サブブロックスキャン順を指定するスキャンタイプが水平方向優先スキャンである場合、サブブロック係数有無フラグ設定部127cは、図20(b)に示すように、サブブロック(xCG、yCG)に隣接するサブブロック(xCG+1、yCG)に割り付けられたサブブロック係数有無フラグsignificant_coeffgroup_flag[xCG+1][yCG]の値を参照する。significant_coeffgroup_flag[xCG+1][yCG]=1である場合、サブブロック係数有無フラグ設定部127cは、significant_coeffgroup_flag[xCG][yCG]=1に設定する。この場合、significant_coeffgroup_flag[xCG][yCG]を復号する処理を省略することができる。
(スキャンタイプが斜め方向スキャンの場合)
サブブロックスキャン順を指定するスキャンタイプが斜め方向スキャンである場合、サブブロック係数有無フラグ設定部127cは、図20(c)に示すように、サブブロック(xCG、yCG)に隣接するサブブロック(xCG+1、yCG)に割り付けられたサブブロック係数有無フラグsignificant_coeffgroup_flag[xCG+1][yCG]の値とサブブロック(xCG、yCG+1)に割り付けられたサブブロック係数有無フラグsignificant_coeffgroup_flag[xCG][yCG+1]の値とを参照する。
significant_coeffgroup_flag[xCG+1][yCG]=1かつsignificant_coeffgroup_flag[xCG][yCG+1]=1である場合、サブブロック係数有無フラグ設定部127cは、significant_coeffgroup_flag[xCG][yCG]=1に設定する。この場合、significant_coeffgroup_flag[xCG][yCG]を復号する処理を省略することができる。
サブブロック係数有無フラグ設定部127cは、以上のように、サブブロック係数有無フラグの偏りに応じて、参照する隣接サブブロックを切り替える構成である。これによって、符号化及び復号対象となるサブブロック係数有無フラグの符号量を削減することができる。
サブブロック係数有無フラグ設定部127c及びこれに対応する符号化装置側の構成によるサブブロック係数有無フラグの符号量削減効果について、図21(a)〜(b)を参照して具体的に説明すれば以下の通りである。
(比較例に係るサブブロック係数有無フラグ符号化及び復号処理)
比較例に係るサブブロック係数有無フラグ符号化及び復号処理では、変換係数の偏りに関わらず、斜め方向スキャンが選択されるものとする。また、DC成分を含むサブブロック及びラスト係数を含むサブブロックについては、significant_coeffgroup_flagが1に設定(推測)され、符号化されないものとする。
一例として、16×16成分の周波数領域において、各変換係数が図21(a)に示すように存在している場合を考える。この場合、4×4成分で構成されるサブブロックの各々に割り付けられるサブブロック係数有無フラグsignificant_coeffgroup_flagは、図21(b)に示すとおりになる。この場合、処理の対象となるサブブロック係数有無フラグsignificant_coeffgroup_flagを順スキャン方向から走査した一次元配列は、「1010010001」となる。比較例に係るサブブロック係数有無フラグ復号処理では、これらの一次元配列から、DC成分を含むサブブロック及びラスト係数を含むサブブロックについてのsignificant_coeffgroup_flagを除く「01001000」が符号化及び復号されることになる。なお、図21(a)(b)において、淡色にて示す変換係数及びサブブロックは、符号化及び復号の対象とはならない。
(本実施形態に係るサブブロック係数有無フラグ符号化処理)
一方で、本実施形態に係るサブブロック係数有無フラグ符号化処理では、イントラ予測モードに応じて、スキャン方向を決定するので、変換係数の偏りの態様に適したスキャン順が選択される。また、DC成分を含むサブブロック及びラスト係数を含むサブブロックについては、significant_coeffgroup_flagが1に設定(推測)され、符号化されない。
図21(a)と同様に、16×16成分の周波数領域において、各変換係数が図22(a)に示すように存在している場合、イントラ予測方向として垂直方向が選択される可能性が高い。したがって、サブブロックスキャン順として、水平方向優先スキャンが選択される可能性が高い。この場合、符号化及び復号の対応となる変換係数は、図22(a)に示す変換係数のうち、淡色で示した変換係数を除いたものとなり、図21(a)に比べて明らかに少ない。
また、4×4成分で構成されるサブブロックの各々に割り付けられるサブブロック係数有無フラグsignificant_coeffgroup_flagは、図22(b)に示すとおりになる。この場合、処理の対象となるサブブロック係数有無フラグsignificant_coeffgroup_flagを順スキャン方向に走査した一次元配列は、「1111」となるが、上述した「サブブロック係数有無フラグの推測」により、実際に符号化及び復号されるサブブロック係数有無フラグの個数は0となる。
このように、本実施形態に係るサブブロック係数有無フラグ設定部127c及びこれに対応する符号化装置側の構成によれば、サブブロック係数有無フラグの符号量が削減される。
(係数有無フラグ復号部124の構成例)
以下では、図23を参照して、係数有無フラグ復号部124の具体的な構成例について説明する。
図23は、係数有無フラグ復号部124の構成例を示すブロック図である。図23に示すように、係数有無フラグ復号部124は、周波数分類部124a、位置コンテキスト導出部124b、周辺参照コンテキスト導出部124c、係数有無フラグ記憶部124d、及び係数有無フラグ設定部124eを備えている。
(周波数分類部124a)
周波数分類部124aは、対象となる周波数領域のサイズが所定のサイズ以下のサイズである場合(例えば、4×4成分、8×8成分である場合)、当該所定サイズ以下の周波数領域の各周波数成分に対して、その周波数成分の位置に応じて、当該周波数成分を複数の部分領域の何れかに分類すると共に、位置コンテキスト導出部124bによって導出されたコンテキストインデックスctxIdxを割り付ける。
一方で、対象となる周波数領域のサイズが所定のサイズよりも大きいサイズである場合(例えば、16×16成分、32×32成分である場合等)、周波数分類部124aは、周波数領域における復号対象の周波数成分の位置に応じて、当該周波数成分を複数の部分領域の何れかに分類すると共に、位置コンテキスト導出部124b、及び周辺参照コンテキスト導出部124cの何れかによって導出されたコンテキストインデックスctxIdxを、当該復号対象の周波数成分に割り付ける。
周波数分類部124aは、周波数領域に含まれる各周波数成分の当該周波数領域における位置(xC、yC)を用いて、当該周波数成分を複数の部分領域R0〜R2に分類する。ここで、xC=0、1、...、sz−1であり、yC=0、1、...、sz−1であるとする(szは、処理対象TUの一辺の画素数、すなわち、対象周波数領域の一辺の周波数成分の数を表しており、例えば、sz=16,32等である)。
一方で、sz×szブロックの周波数領域を4×4サブブロックに分割したときの、当該周波数成分(xC、yC)が属するサブブロックの位置(xCG,yCG)は下記式(eq.A1)〜(eq.A2)により導出される。
xCG=xC>>2 ・・・(eq.A1)
yCG=yC>>2 ・・・(eq.A2)
ここで、xCG=0、1、...、(sz−1)>>2であり、yCG=0、1、...、(sz−1)>>2であるとする。
周波数分類部124aは、例えば、以下の分類処理を行う。
(1)xCG+yCG<THA、かつ、xC+yC<THZを満たす周波数成分を部分領域R0に分類する。
(2)xCG+yCG<THA、かつ、THZ≦xC+yCを満たす周波数成分を部分領域R1に分類する。
(3)THA≦xCG+yCGを満たす周波数成分を部分領域R2に分類する。
上記分類処理に対応する疑似コードは次の通りである。
******************************************************************************
if( xCG+yCG<THA){
if( xC+yC<THZ ) {
R0へ分類
}
else{// if( xC+yC>=THZ)
R1へ分類
}
}
else{//if( xCG+yCG>=THA ){
R2へ分類
}
******************************************************************************
ここで、閾値THZとして2を用いる。THAは、THA≧THZ/4を満たす閾値を表している。具体的な値としては、例えば、周波数領域のサイズ(処理対象TUのサイズ)に関わらず、THA=1とすればよい。また、周波数領域のサイズlog2TrafoSizeを用いて、THA=1<<(log2TrafoSize-2)としてもよい。すなわち、周波数領域のサイズが16×16である場合、THA=1とし、周波数領域のサイズが32×32である場合、THA=2としてもよい。このように、周波数領域のサイズに応じて、異なる閾値を用いる構成としてもよい。また、閾値THZを1としても良い。
図24は、周波数分類部124aによる分類処理によって、部分領域R0、R1、及びR2に分割された周波数領域の一例を示している。
周波数分類部124aは、部分領域R0に属する各周波数成分に対して、位置コンテキスト導出部124bによって導出されたコンテキストインデックスを割り付け、部分領域R1及びR2に属する周波数成分に対して、周辺参照コンテキスト導出部124cによって導出されたコンテキストインデックスを割り付ける。なお、サブブロックのサイズとして、4×4を例に説明したが、これに限定されず、(sz>>n)×(sz>>n)のサブブロックでもよい。ただし、nは、nは、n=1,…,log2TrafoSize>>1を満たすものとする。
また、周波数分類部124aは、各周波数成分に対して割り付けたコンテキストインデックスをコンテキスト記録更新部131に供給する。これらのコンテキストインデックスは、算術符号復号部130にてシンタックスsignificant_coeff_flagを復号するために用いるコンテキストを決定するために用いられる。
(位置コンテキスト導出部124b)
位置コンテキスト導出部124bは、対象周波数成分に対するコンテキストインデックスctxIdxを、周波数領域における当該対象周波数成分の位置に基づいて導出する。
位置コンテキスト導出部124bは、処理対象の周波数領域が所定のサイズよりも大きい場合に、たとえば、図24に示す部分領域R0に属する周波数成分に対して、以下の式(eq.A3)を用いてコンテキストインデックスctxIdxを導出し、その導出結果ctxIdxを周波数分類部124aに供給する。
ctxIdx=NX+2×xC + yC ・・・(eq.A3)
なお、NXはコンテキストインデックスの開始点を表す定数である。周波数領域のサイズが4×4及び8×8で用いるコンテキスト数が各々N4個、N8個の場合には、周波数領域のサイズが16×16および32×32の開始点はNX=N4+N8になる。
処理対象の周波数領域が所定のサイズ以下である場合の位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例については後述する。
(周辺参照コンテキスト導出部124c)
周辺参照コンテキスト導出部124cは、復号対象の周波数成分に対するコンテキストインデックスctxIdxを、当該周波数成分の周辺の周波数成分について復号済みの非0変換係数の数cntに基づいて導出する。
周辺参照コンテキスト導出部124cは、例えば、図24に示す部分領域R1に属する周波数成分に対して、以下の式(eq.A4)を用いてコンテキストインデックスctxIdxを導出し、その導出結果ctxIdxを周波数分類部124aに供給する。
ctxIdx=NX+3+min(2,temp) ・・・(eq.A4)
ここで、tempは、
temp=(cnt+1)>>1
によって定まる。
また、周辺参照コンテキスト導出部124cは、例えば、図24に示す部分領域R2に属する周波数成分に対して、以下の式(eq.A5)を用いてコンテキストインデックスctxIdxを導出し、その導出結果ctxIdxを周波数分類部124aに供給する。
ctxIdx=NX+6+min(2,temp) ・・・(eq.A5)
ここで、tempは、上記の場合と同様に、
temp=(cnt+1)>>1
によって定まる。
なお、式(eq.A4)〜(eq.A5)において、非0変換係数のカウント数cntを1ビット右シフトすることで、コンテキスト数を削減することが可能である。
また、周辺参照コンテキスト導出部124cは、例えば図24に示す部分領域R1において、非0変換係数のカウント数cntを、図25(a)に示す参照周波数成分c1〜c5を用いて、以下の式(eq.A6)によって導出する。
cnt=(c1!=0)+(c2!=0)+(c3!=0)+(c4!=0)+(c5!=0) ・・・(eq.A6)
ここで、(eq.A6)における各項は、()内の比較が真である場合に1をとり、()内の比較が偽である場合に0をとるものとする。
また、非0変換係数の数cntを、式(eq.6)の代わりに、図25(b)に示す参照周波数成分(c1、c2、c4、c5)を用いて、対象とする変換係数の位置の、処理順で直前(処理順が逆スキャン順である場合には、対象とする変換係数の位置の下側)に位置する座標(c3)の変換係数を参照しないようにした数式(eq.A7)によって算出してもよい。このような処理は、ある位置の係数有無フラグの復号に用いるコンテキスト導出を、直前の係数有無フラグの値を参照せずに行うことができるため、コンテキスト導出処理と復号処理とを並列に処理することができる。
cnt=(c1!=0)+(c2!=0)+(c4!=0)+(c5!=0)
・・・(eq.A7)
また、対象とする変換係数のサブブロック内の位置に応じて、数式(eq.A6)と数式(eq.A7)との何れかを用いて変換係数を導出する構成としてもよい。すなわち、対象とする変換係数のサブブロック内の位置に応じて、変換係数の導出に用いる参照成分を変更する構成としてもよい。
より具体的には、対象とする変換係数がサブブロック内の左上に位置する場合と、対象とする変換係数がサブブロック内の右下に位置する場合とのいずれか一方において、サブブロック内での対象とする変換係数の処理順で直前の位置(ここでは下側)の変換係数の値に依存しないように、数式(eq.A7)の参照周波数成分を用い、それ以外の場合には、数式(eq.A6)の参照周波数成分を用いてもよい。
(係数有無フラグ設定部124e)
係数有無フラグ設定部124eは、ビット復号部132から供給される各Binを解釈し、シンタックスsignificant_coeff_flag[xC][yC]を復号または設定する。復号または設定されたシンタックスsignificant_coeff_flag[xC][yC]は、復号係数記憶部126に供給される。
係数有無フラグ設定部124eは、対象周波数領域がサブブロックに分割されている場合、対象サブブロックに割り付けられたシンタックスsignificant_coeffgroup_flag[xCG][yCG]を参照し、significant_coeffgroup_flag[xCG][yCG]の値が0である場合には、当該対象サブブロックに含まれる全ての周波数成分についてのsignificant_coeff_flag[xC][yC]を0に設定する。このような構成とすることによって、当該対象サブブロックにおけるsignificant_coeff_flag[xC][yC]の復号処理を省略することができるので、処理速度が向上する。
(係数有無フラグ記憶部124d)
係数有無フラグ記憶部124dには、シンタックスsignificant_coeff_flag[xC][yC]の各値が格納される。係数有無フラグ記憶部124dに格納されたシンタックスsignificant_coeff_flag[xC][yC]の各値は、周辺参照コンテキスト導出部124cによって参照される。
(係数有無フラグ復号部124による他の処理例)
以下では、係数有無フラグ復号部124による他の処理例について図26〜図28を参照して説明する。
図26(a)〜(b)は、本処理例において、周波数分類部124aによって分割された部分領域を示す図であり、図26(a)は、輝度値に関する変換係数を復号する際に好適に適用されるものであり、図26(b)は、色差に関する変換係数を復号する際に好適に適用されるものである。図26(a)〜(b)において、閾値THは、
TH=Max(width、height)>>2
によって定められる。ここで、widthは、周波数成分を単位として表現された対象周波数領域の幅を示しており、heightは周波数成分を単位として表現された対象周波数領域の高さを示している。例えば対象周波数領域の幅が16成分(16画素に対応)、高さが4成分(4画素に対応)であるとき、width=16、height=4である。
図27は、図26(a)に示す部分領域R0〜R2のそれぞれに含まれる周波数領域に割り付けるコンテキストインデックスであって、輝度に関するコンテキストインデックスcxtIdxを導出する導出処理を示す擬似コードである。図27において、領域R0のコンテキスト導出は、位置コンテキスト導出部124bによって行われ、領域R1のコンテキスト導出及び領域R2のコンテキスト導出は、周辺参照コンテキスト導出部124cによって行われる。
図28は、図26(b)に示す部分領域R0〜R1のそれぞれに含まれる周波数領域に割り付けるコンテキストインデックスであって、色差に関するコンテキストインデックスcxtIdxを導出する導出処理を示す擬似コードである。図28において、領域R0のコンテキスト導出は、位置コンテキスト導出部124bによって行われ、領域R1のコンテキスト導出は、周辺参照コンテキスト導出部124cによって行われる。
(周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例1)
まず、周波数分類部124aは、処理対象の周波数領域が所定のサイズ以下である場合に、処理対象の周波数成分の位置(xC,yC)に基づいて、処理対象の周波数成分を4×4成分の場合はサブグループ(サブ領域)R0〜R6へ、8×8成分の場合はサブグループR0〜R9へ分類処理を行う。
(4×4成分の場合)
(1)xC=0、かつ、yC=0の場合、サブグループR0へ分類する。
(2)xC=1、かつ、yC=0の場合、サブグループR1へ分類する。
(3)xC=0、かつ、yC=1の場合、サブグループR2へ分類する。
(4)xC=1、かつ、yC=1の場合、サブグループR3へ分類する。
(5)1<xC<4、かつ、yC<2の場合、サブグループR4へ分類する。
(6)xC<2、かつ、1<yC<4の場合、サブグループR5へ分類する。
(7)2≦xC<4、かつ、2≦yC<4の場合、サブグループR6へ分類する。
(8×8成分の場合)
(1)xC=0、かつ、yC=0の場合、サブグループR0へ分類する。
(2)xC=1、かつ、yC=0の場合、サブグループR1へ分類する。
(3)xC=0、かつ、yC=1の場合、サブグループR2へ分類する。
(4)xC=1、かつ、yC=1の場合、サブグループR3へ分類する。
(5)1<xC<4、かつ、yC<2の場合、サブグループR4へ分類する。
(6)xC<2、かつ、1<yC<4の場合、サブグループR5へ分類する。
(7)2≦xC<4、かつ、2≦yC<4の場合、サブグループR6へ分類する。
(8)xC≧4、かつ、yC<4の場合、サブグループR7へ分類する。
(9)xC<4、かつ、yC≧4の場合、サブグループR8へ分類する。
(10)xC≧4、かつ、yC≧4の場合、サブグループR9へ分類する。
上記分類処理を4×4成分、及び8×8成分に適用した例を図29(a)、(b)に示す。図29(a)は、4×4成分のサイズを有する周波数領域を構成する領域(サブグループ)R0〜R6を示す図であり、図29(b)は、8×8成分のサイズを有する周波数成分を構成する領域(サブグループ)R0〜R9を示す図である。
続いて、位置コンテキスト導出部124bは、処理対象の周波数領域が所定のサイズ以下である場合に、周波数分類部124aで分類されたサブグループに対して、以下の処理を行う。
すなわち、位置コンテキスト導出部124bは、所定のサイズ以下(例えば、4×4成分、8×8成分)の周波数領域であって、第1のサイズ(例えば4×4成分)を有する周波数領域に属する1又は複数の周波数成分と、上記所定のサイズ以下の周波数領域であって、上記第1のサイズよりも大きな第2のサイズ(例えば8×8成分)を有する周波数領域に属する1又は複数の周波数成分とに対して、共通のコンテキストインデックスを導出すると共に、当該1又は複数の周波数成分の各々に割り付ける。
位置コンテキスト導出部124bは、例えば、図29(a)に示す領域Ri(i=0、1、2、3、4、5、6)と、図29(b)に示す領域Ri(i=0、1、2、3、4、5、6)とに対して、共通のコンテキストインデックスctxIdx(i)を導出して割り付ける。
例えば、図29(a)に示す領域R0、R1、R2、R3、R4、R5、R6に対して、それぞれ、ctxIdx=0、1、2、3、4、5、6を導出したとすると、図29(b)に示す領域R0、R1、R2、R3、R4、R5、R6に対しても、それぞれ、ctxIdx=0、1、2、3、4、5、6を割り付ける。また、図29(b)に示す領域R7、R8、R9に対して、それぞれ、ctxIdx=7、8、9を割り付ける。
また、位置コンテキスト導出部124bは、色差Uに関する各変換係数を復号する際に参照されるコンテキストインデックスと、色差Vに関する各変換係数を復号する際に参照するコンテキストインデックスとを共通のものに設定することが好ましい。
具体的には、図29(a)に示す領域Ri(i=0、1、2、3、4、5、6)に割り付けられたコンテキストインデックスであって、色差Uに関するsignificant_coeff_flagを復号する際に参照されるコンテキストインデックスctxIdx_U(i)と、図29(b)に示す領域Ri(i=0、1、2、3、4、5、6)に割り付けられたコンテキストインデックスであって、色差Vに関するsignificant_coeff_flagを復号する際に参照されるコンテキストインデックスctxIdx_V(i)とを共通のものに設定することが好ましい。
なお、位置コンテキスト導出部124bは、輝度Yに関する各変換係数を復号する際に参照されるコンテキストインデックスと、色差V、Uに関する各変換係数を復号する際に参照するコンテキストインデックスとを全て異なったものに設定する構成としてもよいし、一部を共通に用いる構成としてもよい。
位置コンテキスト導出部124bが上記のようにコンテキストインデックスを導出することによる効果を比較例に係る図30(a)〜(c)を参照して説明する。
図30(a)は、4×4成分のサイズを有する周波数領域に含まれる各周波数成分に対して、比較例に係るコンテキストインデックス導出処理によって導出されたコンテキストインデックスであって、輝度Yに関するsignificant_coeff_flagを復号する際に参照されるコンテキストインデックスを示す図である。図30(a)に示す例において、9個のコンテキストインデックスが導出される。なお、図30(a)に示す例において、最も高周波成分側に位置する周波数成分(図30(a)において網掛けが付された周波数成分)に対しては、コンテキストインデックスは導出されない(図30(b)〜(c)においても同様)。
図30(b)は、4×4成分のサイズを有する周波数領域に含まれる各周波数成分に対して、比較例に係るコンテキストインデックス導出処理によって導出されたコンテキストインデックスであって、色差U、Vに関するsignificant_coeff_flagを復号する際に参照されるコンテキストインデックスを示す図である。図30(b)に示す例において、色差U及びVに関して共通の6個のコンテキストインデックスが導出される。
図30(c)は、8×8成分のサイズを有する周波数領域に含まれる各周波数成分に対して、比較例に係るコンテキストインデックス導出処理によって導出されたコンテキストインデックスであって、輝度Y、色差U、Vに関するsignificant_coeff_flagを復号する際に参照されるコンテキストインデックスを示す図である。図30(c)に示す例において、輝度に関して11個、色差U及びVに関して共通の11個の合計22個のコンテキストインデックスが導出される。
以上を合わせると、比較例に係るコンテキストインデックス導出処理では、9+6+22=37個のコンテキストインデックスが導出される。
一方で、位置コンテキスト導出部124bによれば、図29(a)に示す例において、輝度に関して7個、色差に関して7個の合計14個のコンテキストインデックスが導出される。図29(b)に示す領域R7、R8、R9において、輝度に関して3個、色差に関して3個の合計6個のコンテキストインデックスが導出される。
したがって、位置コンテキスト導出部124bによるコンテキストインデックス導出処理では、14+6=20個のコンテキストインデックスを導出すれば足りる。
このように、図29〜図30に示す例において、位置コンテキスト導出部124bは、37−20=17個のコンテキストインデックスの導出を省略することができる。
図31は、位置コンテキスト導出部124bによるコンテキストインデックス導出処理を示す擬似コードである。また、図32(a)は、図31の擬似コードにおけるCTX_IND_MAP_4x4to8x8[index]の一例を示す図であり、図32(b)は、図31に示す擬似コードに対して図32(a)のCTX_IND_MAP_4x4to8x8[index]を用いた場合に得られる各コンテキストインデックスの値を示している。
なお、位置コンテキスト導出部124bによるコンテキストインデックス導出処理は上記の例に限られるものではなく、図33(a)〜(b)に示すように、周波数成分R0〜R3に対してのみ、共通のコンテキストインデックスを導出する処理を行ってもよい。
図34は、位置コンテキスト導出部124bによるこのようなコンテキストインデックス導出処理を示す擬似コードである。また、図35(a)は、図34の擬似コードにおけるCTX_IND_MAP_4x4to8x8[index]の一例を示す図であり、図35(b)は、図34に示す擬似コードに対して図35(a)のCTX_IND_MAP_4x4to8x8[index]を用いた場合に得られる4×4成分のサイズに関する各コンテキストインデックスの値を示している。また、図35(c)は、図34に示す擬似コードに対して図35(a)のCTX_IND_MAP_4x4to8x8[index]を用いた場合に得られる8×8成分のサイズに関する各コンテキストインデックスの値を示している。
図36は、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の他の例を示す擬似コードである。図37(a)は、図36の擬似コードにおけるCTX_IND_MAP_4x4to8x8_L[index]の一例を示す図であり、図37(b)は、図36に示す擬似コードに対して図37(a)のCTX_IND_MAP_4x4to8x8_L[index]を用いた場合に得られる、輝度に関する各コンテキストインデックスの値を示している。
図37(b)に示す8×8成分の周波数領域において、低周波数側の4×4成分の領域に属する周波数成分について導出されたコンテキストインデックスは、対象周波数領域のサイズが4×4成分であるときの輝度に関するコンテキストインデックスとしても用いられる。
図38(a)は、図36の擬似コードにおけるCTX_IND_MAP_4x4to8x8_C[index]の一例を示す図であり、図38(b)は、図37に示す擬似コードに対して図38(a)のCTX_IND_MAP_4x4to8x8_C[index]を用いた場合に得られる、色差に関する各コンテキストインデックスの値を示している。
図38(b)に示す8×8成分の周波数領域において、低周波数側の4×4成分の領域に属する周波数成分について導出されたコンテキストインデックスは、対象周波数領域のサイズが4×4成分であるときの色差に関するコンテキストインデックスとしても用いられる。
図37(b)に示す例において、輝度に関して15個のコンテキストインデックスが導出され、図38(b)に示す例において、色差に関して13個のコンテキストインデックスが導出される。したがって、図37(b)及び図38(b)に示す例において、15+13=28個のコンテキストインデックスが導出される。
これは、図30(a)〜(c)に示した比較例において導出される37個よりも9個少ない。
以上のように、位置コンテキスト導出部124bによれば、導出すべきコンテキストインデックスの数を削減することができるので、コンテキストインデックス導出処理の軽減化、及びコンテキストインデックスを保持しておくためのメモリサイズの低減を図ることができる。
(周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例2)
以上、周波数領域が所定のサイズ以下である場合に、異なる変換ブロック間において、共通のコンテキストインデックスを導出する場合について説明したが、コンテキストインデックスの導出処理はこれに限定されない。以下では、異なる変換ブロック間において、共通のコンテキストインデックスを導出しない場合について説明する。
周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例2を、図60〜図63を用いて説明する。
まず、周波数分類部124aは、処理対象の周波数領域が所定のサイズ以下である場合に、処理対象の周波数成分の位置(xC,yC)に基づいて、サブグループR0〜R6へ分類処理を行う。
(4×4成分の場合)
(1)xC=0、かつ、yC=0の場合、サブグループR0へ分類する。
(2)(xC=0かつyC=0)でなく、xC<2、かつ、yC<2の場合、サブグループR1へ分類する。
(3)xC=2、かつ、yC<2の場合、サブグループR2へ分類する。
(4)xC=3、かつ、yC<2の場合、サブグループR3へ分類する。
(5)xC<2、かつ、yC=2の場合、サブグループR4へ分類する。
(6)xC<2、かつ、yC=3の場合、サブグループR5へ分類する。
(7)xC≧2、かつ、yC≧2の場合、サブグループR6へ分類する。
上記(1)及び(2)は下記(1’)及び(2’)によっても処理することができる。
(1’)xC<1、かつ、yC<1の場合、サブグループR0へ分類する。
(2’)(xC<1かつyC<1)ではなく、xC<2、かつ、yC<2の場合、サブグループR1へ分類する。
(8×8成分の場合)
(1)xC<2、かつ、yC<2の場合、サブグループR0へ分類する。
(2)(xC<2かつyC<2)でなく、xC<4、かつ、yC<4の場合、サブグループR1へ分類する。
(3)xC≧4、かつ、xC<6、かつ、yC<4の場合、サブグループR2へ分類する。
(4)xC≧6、かつ、yC<4の場合、サブグループR3へ分類する。
(5)xC<4、かつ、yC≧4、かつ、yC<6の場合、サブグループR4へ分類する。
(6)xC<4、かつ、yC≧6の場合、サブグループR5へ分類する。
(7)xC≧4、かつ、yC≧4の場合、サブグループR6へ分類する。
上記分類処理を4×4成分、及び8×8成分に適用した例を図60(a)、(b)に示す。図60(a)は、4×4成分のサイズを有する周波数領域を構成する領域(サブグループ)R0〜R6を示す図であり、図60(b)は、8×8成分のサイズを有する周波数成分を構成する領域(サブグループ)R0〜R6を示す図である。また、図60(a)に示す通り、輝度と色差の両者とも、DCに隣接する最も低い次数の3個のAC成分を1つのサブ領域に割り当てる。3個のAC領域を1つのサブ領域に割り当てるためこの部分で2個のコンテキストを削減することができる。発明者らは、この割り当てによる符号化効率低下は無視できるレベルであることを実験により確認している。なお、このような割り当ては、本構成例以外の構成にも適用することができる。
また、上記4×4成分と8×8成分のサブグループの分類処理を共通化して、次のように処理することもできる。まず、周波数分類部124aは、次に示す式により、処理対象の周波数成分の位置(xC,yC)と、変換ブロックのサイズを示すlog2TrafoSizeに基づいて、変数X,Yを算出する。
X=log2TrafoSize == 2 ? xC : xC>>1
Y=log2TrafoSize == 2 ? yC : yC>>1
続いて、導出した変数X、Yに基づいて、処理対象の周波数成分(xC、yC)をサブグループR0〜R6へ分類処理を行う。
(1)X=0、かつ、Y=0の場合、サブグループR0へ分類する。
(2)(X=0かつY=0)でなく、X<2、かつ、Y<2の場合、サブグループR1へ分類する。
(3)X=2、かつ、Y<2の場合、サブグループR2へ分類する。
(4)X=3、かつ、Y<2の場合、サブグループR3へ分類する。
(5)X<2、かつ、Y=2の場合、サブグループR4へ分類する。
(6)X<2、かつ、Y=3の場合、サブグループR5へ分類する。
(7)X≧2、かつ、Y≧2の場合、サブグループR6へ分類する。
このように、周波数分類部124aによって分割された4×4成分のサイズ(第1のサイズ)を有する周波数領域の分割パターン、及び、周波数分類部124aによって分割された8×8成分のサイズ(第2のサイズ)を有する周波数領域の分割パターンは、互いに相似である。
また、上記4×4成分と8×8成分をサブグループへ分類する共通処理は、次のように処理することもできる。
(1)xC<width/4、かつ、yC<width/4の場合、サブグループR0へ分類する。
(2)xC<width/2、かつ、yC<width/2の場合、サブグループR1へ分類する。
(3)xC≧width/2、かつ、xC<width×3/4、かつ、yC<width/2の場合、サブグループR2へ分類する。
(4)xC≧width×3/4、かつ、yC<width/2の場合、サブグループR3へ分類する。
(5)xC<width/2、かつ、yC≧width/2、かつ、yC<width×3/4の場合、サブグループR4へ分類する。
(6)xC<width/2、かつ、yC≧width×3/4の場合、サブグループR5へ分類する。
(7)xC≧width/2、かつ、yC≧width/2の場合、サブグループR6へ分類する。
ここでwidthは、対象周波数領域の幅(4×4では4、8×8では8)である。
続いて、位置コンテキスト導出部124bは、処理対象の周波数領域が所定のサイズ以下である場合に、周波数分類部124aで分類された各サブグループに対して、個別のコンテキストインデックスを割り付ける。
具体的には、輝度のコンテキストインデックスctxIdx(i)は、次の式により導出される。
offsetBlk = log2TrafoWidth==2 ? 0 : 7
ctxIdx(i) = i + offsetBlk
なお、iは、サブグループRiを識別する番号を表わし、offsetBlkは、4×4成分と8×8成分のコンテキストインデックスを識別するためのオフセットであり、変換ブロックの横幅サイズの対数値を示すlog2TrafoWidthによって所定の値が設定される。よって、輝度の4×4成分の各サブグループRiのコンテキストインデックスctxIdx(i)は、図62(b)に示すように設定され、輝度の8×8成分の各サブグループRiのコンテキストインデックスctxIdx(i)は、図62(c)に示すように設定される。
すなわち、位置コンテキスト導出部124bは、輝度に関して、4×4成分の場合、図60(a)に示す領域Ri(i=0、1、2、3、4、5、6)に対して、コンテキストインデックスctxIdx=0、1、2、3、4、5、6を導出したとすると、8×8成分の場合、図60(b)に示す領域Ri(i=0、1、2、3、4、5、6)に対して、コンテキストインデックスctxIdx=7、8、9、10、11、12、13を導出する。
また、色差のコンテキストインデックスctxIdx(i)は、次の式により導出される。
offsetBlk = log2TrafoWidth==2 ? 0 : 7
ctxIdx(i) = i + offsetClr + offsetBlk
なお、iは、サブグループRiを識別する番号を表わし、offsetBlkは、4×4成分と8×8成分のコンテキストインデックスを識別するためのオフセットであり、変換ブロックの横幅サイズの対数値を示すlog2TrafoWidthに応じて所定の値が設定される。offsetClrは、輝度と色差のコンテキストインデックスを識別するための所定のオフセットである。例えば、offsetClr=14とすれば、色差の4×4成分の各サブグループRiのコンテキストインデックスctxIdx(i)は、図63(a)に示すように設定され、色差の8×8成分の各サブグループRiのコンテキストインデックスctxIdx(i)は、図63(b)に示すように設定される。
すなわち、位置コンテキスト導出部124bは、色差に関して、4×4成分の場合、図60(a)に示す領域Ri(i=0、1、2、3、4、5、6)に対して、コンテキストインデックスctxIdx=14、15、16、17、18、19、20を導出したとすると、8×8成分の色差に関して、図60(b)に示す領域Ri(i=0、1、2、3、4、5、6)に対して、コンテキストインデックスctxIdx=21、22、23、24、25、26、27、28を導出する。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットoffsetClrをoffsetClr=14として、色差のコンテキストインデックスを図63(a)、(b)に図示しているが、これに限定されない。offsetClrは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
上記の周波数分類部124aによる周波数分類処理と位置コンテキスト導出部124bによるコンテキスト導出処理を、図61に示す疑似コードによって表わすことができる。
すなわち、図61に示す疑似コードでは、サブブロック位置(X、Y)から定まるインデックス値indexと対応するルックアップテーブルCTX_IND_MAP[index]の基準値に、所定のオフセット値を加算することで、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを算出している。なお、4×4変換ブロック、及び8×8変換ブロックの場合、各サブブロック(4×4の場合は1×1サブブロック、8×8の場合は2×2サブブロック)の位置(X,Y)から定まるインデックス値indexは、サブブロックを横方向に走査した順番(開始値は0)を表わし、次の式により算出される。
Index = (Y<<2)+X
また、各変換ブロックの輝度のコンテキストインデックスctxIdxは、次の式により導出される。
(4×4成分の場合)
ctxIdx=CTX_IND_MAP[ index ]
(8×8成分の場合)
ctxIdx=CTX_IND_MAP[ index ] + sigCtxOffset
ここで、sigCtxOffsetは、4×4成分のコンテキストインデックスと8×8成分のコンテキストインデックスを識別するための所定のオフセットである。
また、各変換ブロックの色差のコンテキストインデックスctxIdxは、次の式により導出される。
(4×4成分の場合)
ctxIdx=CTX_IND_MAP[ index ] + SigCtxOffsetLuma
(8×8成分の場合)
ctxIdx=CTX_IND_MAP[ index ] + sigCtxOffset + SigCtxOffsetLuma
ここで、sigCtxOffsetは、4×4成分のコンテキストインデックスと8×8成分、16×4成分、4×16成分のコンテキストインデックスを識別するための所定のオフセットであり、SigCtxOffsetLumaは輝度と色差のコンテキストインデックスを識別するための所定のオフセットである。
なお、この場合では、図61中の”sigCtx=log2TrafoSize==2 ? 0 : offset”におけるoffsetの値を7と設定して解釈する。
図62(a)は、図61に示す擬似コードにおけるCTX_IND_MAP[index]の一例を示す図であり、図62(b)は、図61に示す擬似コードに対して、図62(a)のCTX_IND_MAP [index]を用いた場合に得られる、4×4成分の輝度に関する各コンテキストインデックスの値を示し、図62(c)は、図61に示す疑似コードに対して、図62(a)のCTX_IND_MAP [index]を用いた場合に得られる、8×8成分の輝度に関する各コンテキストインデックスの値を示している。また、図63(a)は、図61に示す擬似コードに対して、図62(a)のCTX_IND_MAP [index]を用いた場合に得られる、4×4成分の色差に関する各コンテキストインデックスの値を示し、図63(b)は、図61に示す疑似コードに対して、図62(a)のCTX_IND_MAP [index]を用いた場合に得られる、8×8成分の色差に関する各コンテキストインデックスの値を示している。なお、図62(b)に示す例において、最も高周波成分側に位置する周波数成分(図62(b)において網掛けが付された周波数成分)に対しては、コンテキストインデックスは導出されない(図62(c)、図63(a)〜(b)においても同様)。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットSigCtxOffsetLumaをSigCtxOffsetLuma=14として、色差のコンテキストインデックスを図63(a)、(b)に図示しているが、これに限定されない。offsetClrは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
なお、図60(a)(b)および、後述の図68(a)(b)に示す各係数位置に割り当てられるコンテキストインデックスは、後述するように図100、図101、図102に記載するようにビット演算によっても導出することが可能である。
図62(b)、(c)に示す例において、輝度に関して14個のコンテキストインデックスが導出され、図63(a)、(b)に示す例において、色差に関して14個のコンテキストインデックスが導出される。したがって、図62(b)、(c)及び及び図63(a)、(b)に示す例において、14+14=28個のコンテキストインデックスが導出される。これは、図30(a)〜(c)に示した比較例において導出される37個よりも9個少ない。
以上のように、本処理では、図60に示すコンテキストインデックス導出方法により、4×4成分と8×8成分および輝度と色差のサブグループへの分類処理を共通にすることで、符号化効率を維持したまま、コンテキストインデックス導出処理を簡略化することができる。また、本処理によれば、導出すべきコンテキストインデックスの数を削減することができるので、コンテキストインデックス導出処理の軽減化、及びコンテキストインデックスを保持しておくためのメモリサイズの低減を図ることができる。
(周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例3)
周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例3を、図64〜図65を更に参照して説明する。
まず、周波数分類部124aは、処理対象の周波数領域が所定のサイズ以下である場合に、処理対象の周波数成分の位置(xC,yC)に基づいて、上述の具体例2における周波数分類部124aと同様の処理を行って、サブグループR0〜R6へ分類処理を行う。
続いて、位置コンテキスト導出部124bは、処理対象の周波数領域が所定のサイズ以下である場合に、非ゼロ係数の発生頻度が水平方向周波数成分u(図60)と垂直方向周波数成分vとがu=vとなる境界を境に出現頻度が対称となる特性を利用して、周波数分類部124aで分類された各サブグループに対して、コンテキストインデックスを割り当ててもよい。
位置コンテキスト導出部124bは、4×4成分に関して、図60(a)において、水平方向周波数成分の高域側にある領域R3と、垂直方向周波数成分の高域側にある領域R5とに対して、共通のコンテキストインデックスctxIdx(i)を導出して割り付ける。また、8×8成分に関して、図60(b)において、水平方向周波数成分の高域側にある領域R3と垂直方向周波数成分の高域側にある領域R5とに対して共通のコンテキストインデックスctxIdx(i)を導出して割り付ける。
例えば、輝度に関して、4×4成分の場合、図60(a)に示す領域R0、R1、R2、R3、R4、R5、R6に対して、それぞれ、コンテキストインデックスctxIdx=0、1、2、3、4、3、5を導出したとすると、8×8成分の場合、図60(b)に示す領域R0、R1、R2、R3、R4、R5、R6に対して、それぞれ、コンテキストインデックスctxIdx=6、7、8、9、10、9、11を導出する。
また、同様に色差に関して、4×4成分の場合、図60(a)に示す領域R0、R1、R2、R3、R4、R5、R6に対して、それぞれ、コンテキストインデックスctxIdx=12、13、14、15、16、15、17を導出したとすると、8×8成分の場合、図60(b)に示す領域R0、R1、R2、R3、R4、R5、R6に対して、それぞれ、コンテキストインデックスctxIdx=18、19、20、21、22、21、23を導出する。
上記の周波数分類部124aによる周波数分類処理と位置コンテキスト導出部124bによるコンテキスト導出処理を、図61に示す疑似コードによって表わすことができる。
すなわち、図61に示す疑似コードでは、サブブロック位置(X、Y)から定まるインデックス値indexと対応するルックアップテーブルCTX_IND_MAP[index]の基準値に、所定のオフセット値を加算することで、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを算出している。なお、4×4変換ブロック、及び8×8変換ブロックの場合、各サブブロック(4×4の場合は1×1サブブロック、8×8の場合は2×2サブブロック)の位置(X、Y)から定まるインデックス値indexは、サブブロックを横方向に走査した順番(開始値は0)を表わす。なお、インデックス値indexは、サブブロック位置(X、Y)を用いて次の式により算出される。
Index = (Y<<2)+X
また、各変換ブロックの輝度のコンテキストインデックスctxIdxは、次の式により導出される。
(4×4成分の場合)
ctxIdx=CTX_IND_MAP[ index ]
(8×8成分の場合)
ctxIdx=CTX_IND_MAP[ index ] + sigCtxOffset
ここで、sigCtxOffsetは、4×4成分のコンテキストインデックスと8×8成分のコンテキストインデックスを識別するための所定のオフセットである。
また、各変換ブロックの色差のコンテキストインデックスctxIdxは、次の式により導出される。
(4×4成分の場合)
ctxIdx=CTX_IND_MAP[ index ] + SigCtxOffsetLuma
(8×8成分の場合)
ctxIdx=CTX_IND_MAP[ index ] + sigCtxOffset + SigCtxOffsetLuma
ここで、sigCtxOffsetは、4×4成分のコンテキストインデックスと8×8成分、16×4成分、4×16成分のコンテキストインデックスを識別するための所定のオフセットであり、SigCtxOffsetLumaは輝度と色差のコンテキストインデックスを識別するための所定のオフセットである。
なお、この場合では、図61中の”sigCtx=log2TrafoSize==2 ? 0 : offset”におけるoffsetの値を6と設定して解釈する。
図64(a)は、図61の擬似コードにおけるCTX_IND_MAP[index]の一例を示す図であり、図64(b)は、図61に示す擬似コードに対して、図64(a)のCTX_IND_MAP [index]を用いた場合に得られる、4×4成分の輝度に関する各コンテキストインデックスの値を示し、図64(c)は、図61に示す疑似コードに対して、図64(a)のCTX_IND_MAP [index]を用いた場合に得られる、8×8成分の輝度に関する各コンテキストインデックスの値を示している。また、図65(a)は、図61に示す擬似コードに対して、図64(a)のCTX_IND_MAP [index]を用いた場合に得られる、4×4成分の色差に関する各コンテキストインデックスの値を示し、図65(b)は、図61に示す疑似コードに対して、図62(a)のCTX_IND_MAP [index]を用いた場合に得られる、8×8成分の色差に関する各コンテキストインデックスの値を示している。なお、図64(b)に示す例において、最も高周波成分側に位置する周波数成分(図64(a)において網掛けが付された周波数成分)に対しては、コンテキストインデックスは導出されない(図64(c)、図65(a)〜(b)においても同様)。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットSigCtxOffsetLumaをSigCtxOffsetLuma=12として、色差のコンテキストインデックスを図65(a)、(b)に図示しているが、これに限定されない。SigCtxOffsetLumaは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
図64(b)、(c)に示す例において、輝度に関して12個のコンテキストインデックスが導出され、図65(a)、(b)に示す例において、色差に関して12個のコンテキストインデックスが導出される。したがって、図64(b)、(c)及び図65(a)、(b)に示す例において、12+12=24個のコンテキストインデックスが導出される。
これは、図30(a)〜(c)に示した比較例において導出される37個よりも13個少ない。
以上のように、本処理では、図60に示すコンテキストインデックス導出方法により、4×4成分と8×8成分および輝度、色差のサブグループへの分類処理を共通にすることで、符号化効率を維持したまま、コンテキストインデックス導出処理を簡略化することができる。また、本処理によれば、導出すべきコンテキストインデックスの数を削減することができるので、コンテキストインデックス導出処理の軽減化、及びコンテキストインデックスを保持しておくためのメモリサイズの低減を図ることができる。
(周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例4)
周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例の具体例3では、輝度と色差の両方に関して、非ゼロ係数の発生頻度が水平方向周波数成分uと垂直方向周波数成分vとがu=vとなる境界を境にして出現頻度が対称となる特性を利用して、周波数分類部124aで分類された各サブグループに対して、コンテキストインデックスを割り当てる例について説明した。
以下では、周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出
処理の具体例4を、図66〜図69を用いて説明する。ここで説明する具体例4は、輝度に関して、上述の具体例2を適用し、色差に関しては、上述の具体例3のコンテキストインデックス導出処理を適用したものである。
まず、周波数分類部124aは、処理対象の周波数領域が所定のサイズ以下である場合に、処理対象の周波数成分の位置(xC,yC)に基づいて、上述の具体例2における周波数分類部124aと同様の処理を行って、サブグループR0〜R6へ分類処理を行う。
続いて、位置コンテキスト導出部124bは、処理対象の周波数領域が所定のサイズ以下である場合に、輝度に関しては、周波数分類部124aで分類された各サブグループに対して、個別のコンテキストインデックスを割り当てる。また、色差に関しては、非ゼロ係数の発生頻度が水平方向周波数成分uと垂直方向周波数成分vとがu=vとなる境界を境にして出現頻度が対称となる特性を利用して、周波数分類部124aで分類された各サブグループに対して、コンテキストインデックスを割り当ててもよい。すなわち、位置コンテキスト導出部124bは、色差の場合、4×4成分に関して、図60(a)において、水平方向周波数成分の高域側にある領域R3と、垂直方向周波数成分の高域側にある領域R5とに対して、共通のコンテキストインデックスctxIdx(i)を導出して割り付ける。
例えば、輝度に関して、4×4成分の場合、図60(a)に示す領域R0、R1、R2、R3、R4、R5、R6に対して、それぞれ、コンテキストインデックスctxIdx=0、1、2、3、4、5、6を導出したとすると、8×8成分の場合、図60(b)に示す領域R0、R1、R2、R3、R4、R5、R6に対して、それぞれ、コンテキストインデックスctxIdx=7、8、9、10、11、12、13を導出する。
また、色差に関して、4×4成分の場合、図60(a)に示す領域R0、R1、R2、R3、R4、R5、R6に対して、それぞれ、コンテキストインデックスctxIdx=14、15、16、17、18、17、19を導出したとすると、8×8成分の場合、図60(b)に示す領域R0、R1、R2、R3、R4、R5、R6に対して、それぞれ、コンテキストインデックスctxIdx=20、21、22、23、24、23、25を導出する。
上記の周波数分類部124aによる周波数分類処理と位置コンテキスト導出部124bによるコンテキスト導出処理を、図66に示す疑似コードによって表わすことができる。
すなわち、図66に示す疑似コードでは、サブブロック位置(X、Y)から定まるインデックス値indexと対応するルックアップテーブルCTX_IND_MAP_L[index]、あるいはCTX_IND_MAP_C[index]の基準値に、所定のオフセット値を加算することで、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを算出している。なお、4×4変換ブロック、及び8×8変換ブロックの場合、各サブブロック(4×4の場合は1×1サブブロック、8×8の場合は2×2サブブロック)の位置(X,Y)から定まるインデックス値indexは、サブブロックを横方向に走査した順番(開始値は0)を表わす。なお、インデックス値indexは、サブブロック位置(X、Y)を用いて次の式により算出される。
Index = (Y<<2)+X
また、各変換ブロックの輝度のコンテキストインデックスctxIdxは、次の式により導出される。
(4×4成分の場合)
ctxIdx=CTX_IND_MAP_L[ index ]
(8×8成分の場合)
ctxIdx=CTX_IND_MAP_L[ index ] + sigCtxOffset
ここで、sigCtxOffsetは、4×4成分のコンテキストインデックスと8×8成分のコンテキストインデックスを識別するための所定のオフセットである。
また、各変換ブロックの色差のコンテキストインデックスctxIdxは、次の式により導出される。
(4×4成分の場合)
ctxIdx=CTX_IND_MAP_C[ index ] + SigCtxOffsetLuma
(8×8成分の場合)
ctxIdx=CTX_IND_MAP_C[ index ] + sigCtxOffset + SigCtxOffsetLuma
ここで、sigCtxOffsetは、4×4成分のコンテキストインデックスと8×8成分のコンテキストインデックスを識別するための所定のオフセットであり、SigCtxOffsetLumaは輝度と色差のコンテキストインデックスを識別するための所定のオフセットである。
図67(a)は、図66の擬似コードにおけるCTX_IND_MAP_L[index]の一例を示す図であり、図68(a)は、図66に示す擬似コードに対して、図67(a)のCTX_IND_MAP _L[index]を用いた場合に得られる、4×4成分の輝度に関する各コンテキストインデックスの値を示し、図68(b)は、図66に示す疑似コードに対して、図67(a)のCTX_IND_MAP_L[index]を用いた場合に得られる、8×8成分の輝度に関する各コンテキストインデックスの値を示している。
また、図69(a)は、図66に示す擬似コードに対して、図67(b)のCTX_IND_MAP_C[index]を用いた場合に得られる、4×4成分の色差に関する各コンテキストインデックスの値を示し、図69(b)は、図66に示す疑似コードに対して、図67(b)のCTX_IND_MAP_C[index]を用いた場合に得られる、8×8成分の色差に関する各コンテキストインデックスの値を示している。なお、図68(a)に示す例において、最も高周波成分側に位置する周波数成分(図68(a)において網掛けが付された周波数成分)に対しては、コンテキストインデックスは導出されない(図68(b)、図69(a)〜(b)においても同様)。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットSigCtxOffsetLumaをSigCtxOffsetLuma=14として、色差のコンテキストインデックスを図69(a)、(b)に図示しているが、これに限定されない。SigCtxOffsetLumaは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
図68(a)、(b)に示す例において、輝度に関して14個のコンテキストインデックスが導出され、図69(a)、(b)に示す例において、色差に関して12個のコンテキストインデックスが導出される。したがって、図68(b)、(c)及び図69(a)、(b)に示す例において、14+12=26個のコンテキストインデックスが導出される。
これは、図30(a)〜(c)に示した比較例において導出される37個よりも11個少ない。
以上のように、本処理では、図68、図69のコンテキストインデックス導出処理により、輝度と色差に関して、それぞれ4×4成分と8×8成分のサブグループへの分類処理を共通にすることで、コンテキストインデックス導出処理をまとめることができ、コンテキストインデックス導出処理を簡略化することができる。また、本処理によれば、導出すべきコンテキストインデックスの数を削減することができるので、コンテキストインデックス導出処理の軽減化、及びコンテキストインデックスを保持しておくためのメモリサイズの低減を図ることができる。
(周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例5)
具体例2〜具体例4では、4×4変換ブロックと8×8変換ブロックにおける周波数成分の分類処理を共通化する場合について説明したが、分類処理はこれに限定されない。例えば、図60(b)の8×8変換ブロックの領域R0において、DC成分をさらに別のサブグループR7として分類してもよい。すなわち、4×4成分のサイズを有する周波数領域の分割パターンと、8×8成分のサイズを有する周波数領域の分割パターンとが、DC成分を除く周波数領域において、互いに相似となるように周波数領域をサブ領域(サブグループ)へ分割してもよい。
具体的には、周波数分類部124aは、処理対象の周波数領域が所定のサイズ以下である場合に、処理対象の周波数成分の位置(xC,yC)に基づいて、4×4成分の場合はサブグループR0〜R6へ、8×8成分の場合はサブグループR0〜R7へ分類処理を行う。
(4×4成分の場合)
(1)xC=0、かつ、yC=0の場合、サブグループR0へ分類する。
(2)(xC=0かつyC=0)でなく、xC<2、かつ、yC<2の場合、サブグループR1へ分類する。
(3)xC=2、かつ、yC<2の場合、サブグループR2へ分類する。
(4)xC=3、かつ、yC<2の場合、サブグループR3へ分類する。
(5)xC<2、かつ、yC=2の場合、サブグループR4へ分類する。
(6)xC<2、かつ、yC=3の場合、サブグループR5へ分類する。
(7)xC≧2、かつ、yC≧2の場合、サブグループR6へ分類する。
上記(1)及び(2)は下記(1’)及び(2’)によっても処理することができる。
(1’)xC<1、かつ、yC<1の場合、サブグループR0へ分類する。
(2’)(xC<1かつyC<1)ではなく、xC<2、かつ、yC<2の場合、サブグループR1へ分類する。
(8×8成分の場合)
(1)xC=0、かつ、yC=0の場合、サブグループR7へ分類する。
(2)(xC=0かつyC=0)でなく、xC<2、かつ、yC<2の場合、サブグループR0へ分類する。
(3)(xC<2かつyC<2)でなく、xC<4、かつ、yC<4の場合、サブグループR1へ分類する。
(4)xC≧4、かつ、xC<6、かつ、yC<4の場合、サブグループR2へ分類する。
(5)xC≧6、かつ、yC<4の場合、サブグループR3へ分類する。
(6)xC<4、かつ、yC≧4、かつ、yC<6の場合、サブグループR4へ分類する。
(7)xC<4、かつ、yC≧6の場合、サブグループR5へ分類する。
(8)xC≧4、かつ、yC≧4の場合、サブグループR6へ分類する。
また、上記4×4成分と8×8成分のサブグループの分類処理の一部を共通化し、次のように処理することもできる。
まず、周波数分類部124aは、次に示す式により、処理対象の周波数成分の位置(xC,yC)と、変換ブロックのサイズを示すlog2TrafoSizeに基づいて、変数X,Yを算出する。
X=log2TrafoSize == 2 ? xC : xC>>1
Y=log2TrafoSize == 2 ? yC : yC>>1
続いて、導出した変数X、Yに基づいて、処理対象の周波数成分(xC、yC)をサブグループR0〜R6へ分類処理を行う。
(1)X=0、かつ、Y=0の場合、サブグループR0へ分類する。
(2)(X=0かつY=0)でなく、X<2、かつ、Y<2の場合、サブグループR1へ分類する。
(3)X=2、かつ、Y<2の場合、サブグループR2へ分類する。
(4)X=3、かつ、Y<2の場合、サブグループR3へ分類する。
(5)X<2、かつ、Y=2の場合、サブグループR4へ分類する。
(6)X<2、かつ、Y=3の場合、サブグループR5へ分類する。
(7)X≧2、かつ、Y≧2の場合、サブグループR6へ分類する。
上記共通処理の後に、8×8成分の低周波に位置するサブグループR0に含まれるDC成分(xC=0、かつ、yC=0)をサブグループR7として、さらに分類する。
また、上記4×4成分と8×8成分をサブグループへ分類する共通処理は、次のように処理することもできる。
(1)xC<width/4、かつ、yC<width/4の場合、サブグループR0へ分類する。
(2)xC<width/2、かつ、yC<width/2の場合、サブグループR1へ分類する。
(3)xC≧width/2、かつ、xC<width×3/4、かつ、yC<width/2の場合、サブグループR2へ分類する。
(4)xC≧width×3/4、かつ、yC<width/2の場合、サブグループR3へ分類する。
(5)xC<width/2、かつ、yC≧width/2、かつ、yC<width×3/4の場合、サブグループR4へ分類する。
(6)xC<width/2、かつ、yC≧width×3/4の場合、サブグループR5へ分類する。
(7)xC≧width/2、かつ、yC≧width/2の場合、サブグループR6へ分類する。
ここでwidthは、対象周波数領域の幅(4×4では4、8×8では8)である。
上記共通処理の後に、8×8成分の低周波に位置するサブグループR0に含まれるDC成分(xC=0、かつ、yC=0)をサブグループR7として、さらに分類する。
上記分類処理を4×4成分、及び8×8成分に適用した例を図70(a)、(b)に示す。図70(a)は、4×4成分のサイズを有する周波数領域を構成する領域(サブグループ)R0〜R6を示す図であり、図70(b)は、8×8成分のサイズを有する周波数成分を構成する領域(サブグループ)R0〜R7を示す図である。
続いて、位置コンテキスト導出部124bは、上記周波数分類部124aによって分類された、図70(a)、及び図70(b)に示す各サブグループRi(i=0、1、2、3、4、5、6、7)に対応するコンテキストインデックスctxIdx(i)を割り付けてもよい。具体的には、輝度のコンテキストインデックスctxIdx(i)は、次の式により導出される。
offsetBlk = log2TrafoWidth==2 ? 0 : 7
ctxIdx(i) = i + offsetBlk
なお、iは、サブグループRiを識別する番号を表わし、offsetBlkは、4×4成分と8×8成分のコンテキストインデックスを識別するためのオフセットであり、変換ブロックの横幅サイズの対数値を示すlog2TrafoWidthによって所定の値が設定される。
輝度に関して、上記式により導出される4×4成分の各サブグループRiに対応するコンテキストインデックスctxIdx(i)を図88(a)に示し、8×8成分の各サブグループRiに対応するコンテキストインデックスctxIdx(i)を図88(b)に示す。
また、色差のコンテキストインデックスctxIdx(i)は、次の式により導出される。
offsetBlk = log2TrafoWidth==2 ? 0 : 7
ctxIdx(i) = i + offsetClr + offsetBlk
なお、iは、サブグループRiを識別する番号を表わし、offsetBlkは、4×4成分と8×8成分のコンテキストインデックスを識別するためのオフセットであり、変換ブロックの横幅サイズの対数値を示すlog2TrafoWidthに応じて所定の値が設定される。offsetClrは、輝度と色差のコンテキストインデックスを識別するための所定のオフセットである。ここで、offsetClr=20とした場合に、色差に関して、上記式により導出される4×4成分の各サブ領域Riに対応するコンテキストインデックスctxIdx(i)を図88(c)に示し、8×8成分の各サブ領域Riに対応するコンテキストインデックスctxIdx(i)を図88(d)に示す。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットoffsetClrをoffsetClr=20として、色差のコンテキストインデックスを図88(c)、(d)に図示しているが、これに限定されない。offsetClrは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
上記の周波数分類部124aによる周波数分類処理と位置コンテキスト導出部124bによるコンテキスト導出処理を、図89(a)に示す疑似コードによって表わすことができる。すなわち、図89(a)に示す疑似コードでは、8×8変換ブロックのDC成分には、所定のインデックス値indexを割り当て、8×8変換ブロックのDC以外の周波数成分には、サブブロック位置(X、Y)から定まるインデックス値indexを割り付け、そのインデックス値indexとルックアップテーブルCTX_IND_MAP[index]を用いて、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを算出する。
(4×4成分の場合)
処理対象の周波数成分(xC,yC)が属するサブブロック(4×4の場合は1×1サブブロック)の位置(X,Y)に対応するインデックス値indexを、次の式により算出する。
index = (Y<<2)+X
ただし、 X=xC, Y=yCである。続いて、求めたインデックス値indexとルックアップテーブルCTX_IND_MAP[ index ]からコンテキストインデックスctxIdxを次の式により導出する。
ctxIdx = CTX_IND_MAP[ index ]
なお、色差の場合は、上記の式により算出したコンテキストインデックスctxIdxと所定のオフセットoffsetClrを用いて、次の式によりコンテキストインデックスを導出する。
ctxIdx = ctxIdx + offsetClr
なお、offsetClrは、輝度と色差のコンテキストインデックスを識別するための所定のオフセットである。
(8×8成分の場合)
処理対象の周波数成分(xC,yC)が属するサブブロック(8×8の場合は2×2サブブロック)の位置(X,Y)、及びDC成分に対応するインデックス値indexは、次の式により算出される。
index = (xC + yC == 0 ) ? 16 : (Y<<2)+X
ただし、X=xC>>1, Y=yC>>1である。続いて、求めたインデックス値indexとルックアップテーブルCTX_IND_MAP[ index ]と、4×4成分と8×8成分のコンテキストインデックスを識別するための所定のオフセットoffsetBlkを用いて、コンテキストインデックスctxIdxを次の式により導出する。
ctxIdx = CTX_IND_MAP[ index ] + offsetBlk
ここで、4×4成分の輝度のコンテキストインデックスの総数は7であるため、offsetBlk=7となる。なお、色差の場合は、上記の式により算出したコンテキストインデックスctxIdxと所定のオフセットoffsetClrを用いて、次の式によりコンテキストインデックスを導出する。
ctxIdx = ctxIdx + offsetClr
なお、offsetClrは、輝度と色差のコンテキストインデックスを識別するための所定のオフセットである。
図89(b)は、図89(a)に示す擬似コードにおけるCTX_IND_MAP[index]の一例を示す図であり、図88(a)は、図89(a)に示す擬似コードに対して、図89(b)のCTX_IND_MAP [index]を用いた場合に得られる、4×4成分の輝度に関する各コンテキストインデックスの値を示し、図88(b)は、図89(a)に示す疑似コードに対して、図89(b)のCTX_IND_MAP [index]を用いた場合に得られる、8×8成分の輝度に関する各コンテキストインデックスの値を示している。また、図88(c)は、図89(a)に示す擬似コードに対して、図89(b)のCTX_IND_MAP [index]を用いた場合に得られる、4×4成分の色差に関する各コンテキストインデックスの値を示し、図88(d)は、図89(a)に示す疑似コードに対して、図89(b)のCTX_IND_MAP [index]を用いた場合に得られる、8×8成分の色差に関する各コンテキストインデックスの値を示している。なお、図88(a)に示す例において、最も高周波成分側に位置する周波数成分(図88(a)において網掛けが付された周波数成分)に対しては、コンテキストインデックスは導出されない(図88(b)、(c)、(d)においても同様)。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットoffsetClrをoffsetClr=20として、色差のコンテキストインデックスを図88(c)、(d)に図示しているが、これに限定されない。offsetClrは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
したがって、図70(a)、(b)に示す例において、輝度に関して15個のコンテキストインデックスが導出され、色差に関して15個のコンテキストインデックスが導出され、15+15=30個のコンテキストインデックスが導出される。これは、図30(a)〜(c)に示した比較例において導出される37個よりも7個少ない。
また、非ゼロ係数の発生頻度が水平方向周波数成分uと垂直方向周波数成分vとがu=vとなる境界を境にして出現頻度が対称となる特性を利用して、上記周波数分類部124aによって分類された、図70(a)、及び図70(b)に示すサブグループに対して、コンテキストインデックスを割り当ててもよい。例えば、位置コンテキスト導出部124bは、4×4成分に関して、図71(a)において、水平方向周波数成分の高域側にある領域R3と、垂直方向周波数成分の高域側にある領域R5とに対して、共通のコンテキストインデックスctxIdxを導出して割り付け、残りのR0、R1、R2、R4、R6に個別のコンテキストインデックスを導出して割り付ける。また、8×8成分に関して、図71(b)において、水平方向周波数成分の高域側にある領域R3と垂直方向周波数成分の高域側にある領域R5とに対して共通のコンテキストインデックスctxIdxを導出して割り付け、残りのR0、R1、R2、R4、R6、R7に個別のコンテキストインデックスを導出して割り付ける。
したがって、図71(a)、(b)に示す例において、輝度に関して13個のコンテキストインデックスが導出され、色差に関して13個のコンテキストインデックスが導出され、13+13=26個のコンテキストインデックスが導出される。これは、図30(a)〜(c)に示した比較例において導出される37個よりも11個少ない。
また、上記周波数分類部124aによって分類された、図70(a)、及び図70(b)に示すサブグループに対して、輝度に関しては、個別のコンテキストインデックスを割り当て、色差に関しては、非ゼロ係数の発生頻度が水平方向周波数成分uと垂直方向周波数成分vとがu=vとなる境界を境にして出現頻度が対称となる特性を利用して、コンテキストインデックスを割り当ててもよい。例えば、位置コンテキスト導出部124bは、輝度の場合、4×4成分のR0〜R6、8×8成分のR0〜R7に個別のコンテキストインデックスを割り当てる。また、色差の場合、4×4成分に関して、図71(a)において、水平方向周波数成分の高域側にある領域R3と、垂直方向周波数成分の高域側にある領域R5とに対して、共通のコンテキストインデックスctxIdxを導出して割り付け、残りのR0、R1、R2、R4、R6に個別のコンテキストインデックスを導出して割り付ける。また、8×8成分に関して、図71(b)において、水平方向周波数成分の高域側にある領域R3と垂直方向周波数成分の高域側にある領域R5とに対して共通のコンテキストインデックスctxIdxを導出して割り付け、残りのR0、R1、R2、R4、R6、R7に個別のコンテキストインデックスを導出して割り付ける。すなわち、輝度に関して15個のコンテキストインデックスが導出され、色差に関して15個のコンテキストインデックスが導出され、15+13=28個のコンテキストインデックスが導出される。これは、図30(a)〜(c)に示した比較例において導出される37個よりも9個少ない。
また、上記周波数分類部124aによって分類された、図70(a)、及び図70(b)に示すサブグループに対して、位置コンテキスト導出部124bは、異なる変換ブロック間の低周波領域に関して、共通のコンテキストインデックスを割り付けてもよい。例えば、位置コンテキスト導出部124bは、4×4成分にある領域R0(DC成分)と、8×8成分にある領域R7(DC成分)とに、共通のコンテキストインデックスを導出して割り付け、4×4成分におけるR1、R2、R3、R4、R5、R6、及び8×8成分におけるR0、R1、R2、R3、R4、R5、R6には個別のコンテキストインデックスを導出して割り付ける。したがって、図72(a)、(b)に示す例において、輝度に関して14個のコンテキストインデックスが導出され、色差に関して14個のコンテキストインデックスが導出され、14+14=28個のコンテキストインデックスが導出される。これは、図30(a)〜(c)に示した比較例において導出される37個よりも9個少ない。
なお、4×4成分と8×8成分に限定されず、位置コンテキスト導出部124bは、すべての変換ブロック(4×4、8×8、16×4、4×16、16×16、32×8、8×32、32×32)のDC成分に関して共通のコンテキストインデックスを導出する構成としてもよい。本構成によれば、さらにコンテキストインデックスの数を削減することが可能となる。
また、上記周波数分類部124aによって分類された、図70(a)、及び図70(b)に示すサブグループに対して、位置コンテキスト導出部124bは、異なる変換ブロック間の低周波領域に関して、共通のコンテキストインデックスを割り付ける。さらに、それぞれの変換ブロックの高周波領域に関して、非ゼロ係数の発生頻度が水平方向周波数成分uと垂直方向周波数成分vとがu=vとなる境界を境にして出現頻度が対称となる特性を利用して、コンテキストインデックスを割り付けてもよい。
例えば、位置コンテキスト導出部124bは、図73(a)の4×4成分にある領域R0(DC成分)と、図73(b)の8×8成分にある領域R7(DC成分)とに、共通のコンテキストインデックスを導出して割り付ける。続いて、図73(a)の4×4成分に関して、水平方向周波数成分の高域側にある領域R3と、垂直方向周波数成分の高域側にある領域R5とに対して、共通のコンテキストインデックスctxIdxを導出して割り付け、残りのR1、R2、R4、R6に個別のコンテキストインデックスを導出して割り付ける。また、図73(b)の8×8成分に関して、水平方向周波数成分の高域側にある領域R3と、垂直方向周波数成分の高域側にある領域R5とに対して、共通のコンテキストインデックスctxIdxを導出して割り付け、残りのR0、R1、R2、R4、R6に個別のコンテキストインデックスを導出して割り付ける。
したがって、図73(a)、(b)に示す例において、輝度に関して12個のコンテキストインデックスが導出され、色差に関して12個のコンテキストインデックスが導出され、12+12=24個のコンテキストインデックスが導出される。これは、図30(a)〜(c)に示した比較例において導出される37個よりも13個少ない。
なお、位置コンテキスト導出部124bは、すべての変換ブロック(4×4、8×8、16×4、4×16、16×16、32×8、8×32、32×32)のDC成分に関して共通のコンテキストインデックスを導出する構成とすれば、さらにコンテキストインデックスの数を削減することが可能となる。
以上のように、本処理によれば、導出すべきコンテキストインデックスの数を削減することができるので、コンテキストインデックス導出処理の軽減化、及びコンテキストインデックスを保持しておくためのメモリサイズの低減を図ることができる。
(周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例6)
具体例2では、変換ブロックサイズが4×4ブロック(4×4成分)、8×8ブロック(8×8成分)に関して、処理対象の周波数成分をサブグループへ分類処理を共通化し、コンテキストインデックス導出処理を簡略化する場合について説明した。ここでは、さらに横幅16、縦幅4の16×4ブロック(16×4成分)、及び横幅4、縦幅16の4×16ブロック(4×16成分)に適用する場合について説明する。
まず、周波数分類部124aは、処理対象の周波数が所定のサイズ以下である場合に、処理対象の周波数成分の位置(xC,yC)に基づいて、処理対象の周波数成分を4×4及び8×8成分の場合はサブグループ(サブ領域)R0〜R6へ、4×16成分及び4×16成分の場合はサブグループA0〜A6へ分類処理を行う。なお、4×4成分と8×8成分の周波数をサブグループR0〜R6へ分類する処理は、具体例2と同様の処理であるため説明を省略する。
(16×4成分の場合)
(1)0≦xC<4、かつ、yC=0の場合、サブグループA0へ分類する。
(2)(0≦xC<4、かつ、yC=0)でなく、0≦xC<8、かつ、0≦yC<2の場合、サブグループA1へ分類する。
(3)8≦xC<12、かつ、0≦yC<2の場合、サブグループA2へ分類する。
(4)12≦xC<16、かつ、0≦yC<2の場合、サブグループA3へ分類する。
(5)0≦xC<8、かつ、yC=2の場合、サブグループA4へ分類する。
(6)0≦xC<8、かつ、yC=3の場合、サブグループA5へ分類する。
(7)8≦xC<16、かつ、2≦yC<4の場合、サブグループA6へ分類する。
(4×16成分の場合)
(1)xC=0、かつ、0≦yC<4の場合、サブグループA0へ分類する。
(2)(xC=0、かつ、0≦yC<4)でなく、0≦xC<2、かつ、0≦yC<8の場合、サブグループA1へ分類する。
(3)xC=2、かつ、0≦yC<8の場合、サブグループA2へ分類する。
(4)xC=3、かつ、0≦yC<8の場合、サブグループA3へ分類する。
(5)0≦xC<2、かつ、8≦yC<12の場合、サブグループA4へ分類する。
(6)0≦xC<2、かつ、12≦yC<16の場合、サブグループA5へ分類する。
(7)2≦xC<4、かつ、8≦yC<16の場合、サブグループA6へ分類する。
16×4成分、及び4×16成分に関して上記分類処理を適用した例を図78(a)、(b)に示す。図78(a)は、16×4成分のサイズを有する周波数領域を構成する領域(サブグループ)A0〜A6を示す図であり、図78(b)は、4×16成分のサイズを有する周波数成分を構成する領域(サブグループ)A0〜A6を示す図である。
また、上記16×4成分と4×16成分のサブグループの分類処理を共通化して、次のように処理することもできる。
まず、周波数分類部124aは、処理対象のN×Mブロックを、所定サイズのサブブロックに分割し、処理対象の周波数成分(xC,yC)が属するサブブロックの位置(X,Y)に基づいて、サブグループA0〜A6へ分類処理を行う。例えば、16×4成分の場合、16×4ブロックを横幅4、縦幅1の4×1サブブロックに分割し、4×16成分の場合、4×16ブロックを横幅1、縦幅4の1×4サブブロックに分割する。
まず、周波数分類部124aは、処理対象の周波数成分の位置(xC,yC)と、変換ブロックの横幅サイズの対数値を示すlog2TrafoWidth(4×16ブロックでは2、16×4ブロックでは4)及び縦幅サイズの対数値を示すlog2TrafoHeight(4×16ブロックでは4、16×4ブロックでは2)から、その周波数成分が属するサブブロック位置(X,Y)を次に示す式により算出する。
X=log2TrafoWidth==2 ? xC : xC>>2
Y=log2TrafoHeight==2 ? yC : yC>>2
続いて、導出したサブブロック位置(X,Y)に基づいて、処理対象の周波数成分(xC,yC)をサブグループA0〜A6へ分類処理を行う。
(1)X=0、かつ、Y=0の場合、サブグループA0へ分類する。
(2)(X=0かつY=0)でなく、X<2、かつ、Y<2の場合、サブグループA1へ分類する。
(3)X=2、かつ、Y<2の場合、サブグループA2へ分類する。
(4)X=3、かつ、Y<2の場合、サブグループA3へ分類する。
(5)X<2、かつ、Y=2の場合、サブグループA4へ分類する。
(6)X<2、かつ、Y=3の場合、サブグループA5へ分類する。
(7)X≧2、かつ、Y≧2の場合、サブグループA6へ分類する。
また、4×4成分、8×8成分、16×4成分と4×16成分をサブグループへ分類する共通処理は、次のように処理することもできる。
(1)xC<width/4、かつ、yC<height/4の場合、サブグループA0へ分類する。
(2)xC<width/2、かつ、yC<height/2の場合、サブグループA1へ分類する。
(3)xC≧width/2、かつ、xC<width×3/4、かつ、yC<height/2の場合、サブグループA2へ分類する。
(4)xC≧width×3/4、かつ、yC<height/2の場合、サブグループA3へ分類する。
(5)xC<width/2、かつ、yC≧height/2、かつ、yC<height×3/4の場合、サブグループA4へ分類する。
(6)xC<width/2、かつ、yC≧height×3/4の場合、サブグループA5へ分類する。
(7)xC≧width/2、かつ、yC≧height/2の場合、サブグループA6へ分類する。
ここでwidthは、対象周波数領域の横幅(4×4では4、8×8では8、16×4では16、4×16では4)である。またheightは、対象周波数領域の縦幅(4×4では4、8×8では8、16×4では4、4×16では16)である。
なお、4×16成分の分割パターンは、図79に示すように、16×4成分の分割パターンを、水平方向周波数成分uのu軸を対称軸として軸対称変換し、その後、原点を中心に、時計周りに90度回転させると一致する。つまり、周波数分類部124aによって分割された16×4成分のサイズ(第1のサイズ)を有する周波数領域の分割パターン、及び、周波数分類部124aによって分割された4×16成分のサイズ(第2のサイズ)を有する周波数領域の分割パターンは、回転及び軸対称変換を介して互いに一致する。
また、一般的に、N×M成分(N!=M、すなわち、N≠M)の非ゼロ係数の発生確率の分布形状は、M×N成分の非ゼロ係数の発生確率の分布形状を、水平方向周波数成分uのu軸を対称軸として軸対称変換し、その後、原点を中心に、時計周りに90度回転させたものと類似しているという特徴がある。
続いて、位置コンテキスト導出部124bは、上記の分割パターン、及び非ゼロ係数の分形状が相似となる、または、回転及び軸対称変換を介して互いに一致するという特性を利用し、周波数分類部124aによって分類された図78(a)と及び図78(b)に示すサブグループに対して、対応するサブグループに共通のコンテキストインデックスを割り付ける。つまり、位置コンテキスト導出部124bは、図78(a)に示す領域Ai(i=0、1、2、3、4、5、6)と、図78(b)に示す領域Ai(i=0、1、4、5、2、3、6)とに対して、共通のコンテキストインデックスctxIdx(i)を導出して割り付ける。例えば、位置コンテキスト導出部124bは、輝度に関して、16×4成分の場合、図78(a)に示す領域Ai(i=0、1、2、3、4、5、6)に対して、それぞれ、ctxIdx=7、8、9、10、11、12、13を導出したとすると、4×16成分の場合、図78(b)に示すAi(i=0、1、4、5、2、3、6)に対しても、それぞれ、ctxIdx=7、8、9、10、11、12、13を導出する。また、同様に色差に関して、16×4成分の場合、図78(a)に示す領域Ai(i=0、1、2、3、4、5、6)に対して、それぞれ、ctxIdx=21、22、23、24、25、26、27を導出したとすると、4×16成分の場合、図78(b)に示すAi(i=0、1、4、5、2、3、6)に対しても、それぞれ、ctxIdx=21、22、23、24、25、26、27を導出する。
上記の周波数分類部124aによる周波数分類処理と位置コンテキスト導出部124bによるコンテキスト導出処理を、図80に示す疑似コードによって表わすことができる。すなわち、図80に示す疑似コードでは、サブブロック位置(X、Y)から定まるインデックス値indexと対応するルックアップテーブルCTX_IND_MAP[index]の基準値に、所定のオフセット値を加算することで、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを算出している。なお、4×4変換ブロック、8×8変換ブロック、及び16×4変換ブロックの場合、各サブブロック(4×4の場合は1×1サブブロック、8×8の場合は2×2サブブロック、16×4の場合は4×1サブブロック)の位置(X,Y)から定まるインデックス値indexは、サブブロックを横方向に走査した順番(開始値は0)を表わし、次の式により算出される。
Index = (Y<<2)+X
また、4×16変換ブロックの場合、サブブロック(4×1サブブロック)の位置(X、Y)から定まるインデックス値indexは、サブブロックを縦方向に走査した順番(開始値は0)を表わし、次の式により算出される。
Index = (X<<2)+Y
また、各変換ブロックの輝度のコンテキストインデックスctxIdxは、次の式により導出される。
(4×4成分の場合)
ctxIdx=CTX_IND_MAP [ index ]
(8×8成分、16×4成分、4×16成分の場合)
ctxIdx=CTX_IND_MAP [ index ] + sigCtxOffset
ここで、sigCtxOffsetは、4×4成分のコンテキストインデックスと8×8成分、16×4成分、4×16成分のコンテキストインデックスを識別するための所定のオフセットである。
また、各変換ブロックの色差のコンテキストインデックスctxIdxは、次の式により導出される。
(4×4成分の場合)
ctxIdx=CTX_IND_MAP [ index ] + SigCtxOffsetLuma
(8×8成分、16×4成分、4×16成分の場合)
ctxIdx=CTX_IND_MAP [ index ] + sigCtxOffset + SigCtxOffsetLuma
ここで、sigCtxOffsetは、4×4成分のコンテキストインデックスと8×8成分、16×4成分、4×16成分のコンテキストインデックスを識別するための所定のオフセットであり、SigCtxOffsetLumaは輝度と色差のコンテキストインデックスを識別するための所定のオフセットである。
なお、図62(a)は、図80に示す疑似コードにおけるルックアップテーブルCTX_IND_MAP[index]の一例を示す図である。また、図81(a)は、図80に示す疑似コードに対して、図62(a)のCTX_IND_MAP[index]を用いた場合に得られる、16×4成分の輝度に関する各コンテキストインデックスの値を示し、図81(b)は同様に、4×16成分の輝度に関する各コンテキストインデックスの値を示している。また、図82(a)は、図80に示す疑似コードに対して、図62(a)のCTX_IND_MAP[index]を用いた場合に得られる、16×4成分の色差に関する各コンテキストインデックスの値を示し、図82(b)は同様に、4×16成分の色差に関する各コンテキストインデックスの値を示している。なお、図81(a)に示す例において、最も高周波成分側に位置する周波数成分(図81(a)において網掛けが付された周波数成分)に対しては、コンテキストインデックスは導出されない(図81(b)、図82(a)、図82(b)においても同様)。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットSigCtxOffsetLumaをSigCtxOffsetLuma=14として、色差のコンテキストインデックスを図82(a)、(b)に図示しているが、これに限定されない。SigCtxOffsetLumaは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
また、位置コンテキスト導出部124bは、16×4変換ブロックの各変換係数を復号する際に導出されるコンテキストインデックスと、4×16変換ブロックの各変換係数を復号する際に導出されるコンテキストインデックスと、8×8変換ブロック、または4×4変換ブロックの各変換係数を復号する際に導出されるコンテキストインデックスとを共通のものに設定することが好ましい。具体的には、図78(a)に示す16×4変換ブロックの領域Ai(i=0、1、2、3、4、5、6)と図78(b)に示す4×16変換ブロックの領域Ai(i=0、1、4、5、2、3、6)とに割りつけられたコンテキストインデックスを、図60(a)に示す4×4変換ブロック、あるいは、図60(b)に示す8×8変換ブロックの領域Ri(i=0、1、2、3、4、5、6)に割りつけられたコンテキストインデックスと共通のものに設定することが好ましい。
以上のように、本処理では、16×4成分と4×16成分のサブグループへの分類処理を共通化することで、コンテキストインデックス導出処理をまとめることができ、コンテキストインデックス導出処理を簡略化することができる。また、本処理によれば、16×4成分の各サブグループと4×16成分の対応するサブグループに対して、共通のコンテキストインデックスを導出するため、導出すべきコンテキストインデックスの数を削減することができる。さらに、16×4成分と4×16成分と8×8成分の各サブグループに共通のコンテキストインデックスを導出するため、導出すべきコンテキストインデックスの数を削減することができるので、コンテキストインデックス導出処理の軽減化、及びコンテキストインデックスを保持するためのメモリサイズの低減を図ることができる。
さらに、位置コンテキスト導出部124bは、色差に関して、図78(a)に示す16×4変換ブロックの領域A3とA5、図78(b)に示す4×16変換ブロックの領域A3とA5、及び図60(b)に示す8×8変換ブロックの領域R3とR5に、共通のコンテキストインデックスを割りつけてもよい。例えば、位置コンテキスト導出部124bは、図78(a)に示す16×4変換ブロックの領域Ai(i=0、1、2、3、4、5、6)に対して、それぞれ、コンテキストインデックスctxIdx=20、21、22、23、24、23、25を導出したとすると、図78(b)に示す4×16変換ブロックの領域Ai(i=0、1、4、5、2、3、6)に対しても、それぞれ、ctxIdx=20、21、22、23、24、23、24を導出し、図60(b)に示す8×8変換ブロックの領域Ri(i=0、1、2、3、4、5、6)に対しても、それぞれ、ctxIdx=20、21、22、23、24、23、25を導出する。この場合、周波数分類部124aによる周波数分類処理と位置コンテキスト導出部124bによるコンテキスト導出処理を、図83に示す疑似コードによって表わすことができる。すなわち、図83に示す疑似コードでは、サブブロック位置(X、Y)から定まるインデックス値indexと対応するルックアップテーブルCTX_IND_MAP_L[index]、あるいはCTX_IND_MAP_C[index]の基準値に、所定のオフセット値を加算することで、処理対象の周波数成分(xC、yC)の輝度あるいは色差のコンテキストインデックスctxIdxを算出している。なお、4×4変換ブロック、8×8変換ブロック、及び16×4変換ブロックの場合、各サブブロック(4×4の場合は1×1サブブロック、8×8の場合は2×2サブブロック、16×4の場合は4×1サブブロック)の位置(X,Y)から定まるインデックス値indexは、サブブロックを横方向に走査した順番(開始値は0)を表わし、次の式により算出される。
Index = (Y<<2)+X
また、4×16変換ブロックの場合、サブブロック(4×1サブブロック)の位置(X、Y)から定まるインデックス値indexは、サブブロックを縦方向に走査した順番(開始値は0)を表わし、次の式により算出される。
Index = (X<<2)+Y
また、各変換ブロックの輝度のコンテキストインデックスctxIdxは、次の式により導出される。
(4×4成分の場合)
ctxIdx=CTX_IND_MAP_L[ index ]
(8×8成分、16×4成分、4×16成分の場合)
ctxIdx=CTX_IND_MAP_L[ index ] + sigCtxOffset
ここで、sigCtxOffsetは、4×4成分のコンテキストインデックスと8×8成分、16×4成分、4×16成分のコンテキストインデックスを識別するための所定のオフセットである。
また、各変換ブロックの色差のコンテキストインデックスctxIdxは、次の式により導出される。
(4×4成分の場合)
ctxIdx=CTX_IND_MAP_C[ index ] + SigCtxOffsetLuma
(8×8成分、16×4成分、4×16成分の場合)
ctxIdx=CTX_IND_MAP_C[ index ] + sigCtxOffset + SigCtxOffsetLuma
ここで、sigCtxOffsetは、4×4成分のコンテキストインデックスと8×8成分、16×4成分、4×16成分のコンテキストインデックスを識別するための所定のオフセットであり、SigCtxOffsetLumaは輝度と色差のコンテキストインデックスを識別するための所定のオフセットである。
なお、図67(a)は、図83に示す疑似コードにおけるルックアップテーブルCTX_IND_MAP_L[index]の一例を示す図である。また、図81(a)は、図83に示す疑似コードに対して、図67(a)のCTX_IND_MAP_L[index]を用いた場合に得られる、16×4成分の輝度に関する各コンテキストインデックスの値を示し、図81(b)は、4×16成分の輝度に関する各コンテキストインデックスの値を示し、図62(a)は4×4成分の輝度に関する各コンテキストインデックスの値を示し、図62(b)は8×8成分の輝度に関する各コンテキストインデックスの値を示している。また、図84(a)は、図83に示す疑似コードに対して、図67(b)のCTX_IND_MAP_C[index]を用いた場合に得られる、16×4成分の色差に関する各コンテキストインデックスの値を示し、図84(b)は、4×16成分の色差に関する各コンテキストインデックスの値を示し、図84(c)は、8×8成分の色差に関する各コンテキストインデックスを示し、図69(a)は、4×4成分の色差に関する各コンテキストインデックスを示している。なお、図84(a)に示す例において、最も高周波成分側に位置する周波数成分(図84(a)において網掛けが付された周波数成分)に対しては、コンテキストインデックスは導出されない(図84(b)、図84(c)、図69(a)においても同様)。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットSigCtxOffsetLumaをSigCtxOffsetLuma=14として、色差のコンテキストインデックスを図84(a)、(b)に図示しているが、これに限定されない。SigCtxOffsetLumaは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
以上のように、位置コンテキスト導出部124bは、色差に関して、図78(a)に示す16×4変換ブロックの領域A3とA5、図78(b)に示す4×16変換ブロックの領域A3とA5、及び図60(b)に示す8×8変換ブロックの領域R3とR5に、共通のコンテキストインデックスを導出するため、導出すべきコンテキストインデックスの数を削減することができる。
なお、従来技術では、4×16成分、16×4成分における各変換係数の非ゼロ係数有無フラグに関するコンテキストインデックスの導出処理では、DC成分を除いて、隣接する非ゼロ係数の数をカウントする必要があった。しかし、上記構成によれば、4×16成分、16×4成分における各変換係数の非ゼロ係数有無フラグに関するコンテキストインデックスは、非ゼロ係数有無フラグの位置に応じて算出されるため、従来の構成に比べて、コンテキストインデックスの導出処理のための処理量を削減することができる。
(周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例7)
周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例7では、4×4成分のサイズを有する周波数領域の分割パターンと、8×8成分のサイズを有する周波数領域の分割パターンが互いに相似となるように周波数領域をサブ領域(サブグループ)へ分割し、各サブ領域に個別のコンテキストインデックスを導出する場合について、図85〜図87を用いて説明する。
まず、周波数分類部124aは、処理対象の周波数領域が所定のサイズ以下である場合に、処理対象の周波数成分の位置(xC,yC)に基づいて、サブ領域R0〜R8へ分類処理を行う。
(4×4成分の場合)
(1)xC<2、かつ、yC<2を満たす場合、次の(1−a)〜(1−d)の条件によりサブ領域R0〜R3へ分類する。
(1−a)xC<1、かつ、yC<1の場合、サブ領域R0へ分類する。
(1−b)xC≧1、かつ、yC<1の場合、サブ領域R1へ分類する。
(1−c)xC<1、かつ、yC≧1の場合、サブ領域R2へ分類する。
(1−d)xC≧1、かつ、yC≧1の場合、サブ領域R3へ分類する。
(2)xC≧2、かつ、yC<2の場合、次の(2−a)〜(2−b)の条件により、サブ領域R4、またはR5へ分類する。
(2−a)xC<3の場合、サブ領域R4へ分類する。
(2−b)xC≧3の場合、サブ領域R5へ分類する。
(3)xC<2、かつ、yC≧2の場合、次の(3−a)〜(3−b)の条件により、サブ領域R6、またはR7へ分類する。
(3−a)yC<3の場合、サブ領域R6へ分類する。
(3−b)yC≧3の場合、サブ領域R7へ分類する。
(4)xC≧2、かつ、yC≧2の場合、サブ領域R8へ分類する。
(8×8成分の場合)
(1)xC<4、かつ、yC<4を満たす場合、次の(1−a)〜(1−d)の条件によりサブ領域R0〜R3へ分類する。
(1−a)xC<2、かつ、yC<2の場合、サブ領域R0へ分類する。
(1−b)xC≧2、かつ、yC<2の場合、サブ領域R1へ分類する。
(1−c)xC<2、かつ、yC≧2の場合、サブ領域R2へ分類する。
(1−d)xC≧2、かつ、yC≧2の場合、サブ領域R3へ分類する。
(2)xC≧4、かつ、yC<4の場合、次の(2−a)〜(2−b)の条件により、サブ領域R4、またはR5へ分類する。
(2−a)xC<6の場合、サブ領域R4へ分類する。
(2−b)xC≧6の場合、サブ領域R5へ分類する。
(3)xC<4、かつ、yC≧4の場合、次の(3−a)〜(3−b)の条件により、サブ領域R6、またはR7へ分類する。
(3−a)yC<6の場合、サブ領域R6へ分類する。
(3−b)yC≧6の場合、サブ領域R7へ分類する。
(4)xC≧4、かつ、yC≧4の場合、サブ領域R8へ分類する。
上記分類処理を4×4成分、及び8×8成分に適用した例を図85(a)、(b)に示す。図85(a)は、4×4成分のサイズを有する周波数領域を構成する領域(サブ領域、またはサブグループともいう)R0〜R8を示す図であり、図85(b)は、8×8成分のサイズを有する周波数成分を構成する領域(サブ領域)R0〜R8を示す図である。
また、上記4×4成分と8×8成分のサブ領域への分類処理を、次のように共通化して処理することもできる。
まず、周波数分類部124aは、処理対象の周波数成分の位置(xC,yC)と、変換ブロックの横幅サイズの対数値を示すlog2TrafoWidth(4×4ブロックでは2、8×8ブロックでは3)及び縦幅サイズの対数値を示すlog2TrafoHeight(4×4ブロックでは2、8×8ブロックでは3)から、処理対象の周波数成分が属するサブブロック位置(X,Y)を次に示す式により算出する。
X=log2TrafoWidth==2 ? xC : xC>>1
Y=log2TrafoHeight==2 ? yC : yC>>1
続いて、導出したサブブロック位置(X,Y)に基づいて、処理対象の周波数成分(xC,yC)をサブ領域R0〜R8へ分類処理を行う。
(1)X<2、かつ、Y<2を満たす場合、次の(1−a)〜(1−d)の条件によりサブ領域R0〜R3へ分類する。
(1−a)X<1、かつ、Y<1の場合、サブ領域R0へ分類する。
(1−b)X≧1、かつ、Y<1の場合、サブ領域R1へ分類する。
(1−c)X<1、かつ、Y≧1の場合、サブ領域R2へ分類する。
(1−d)X≧1、かつ、Y≧1の場合、サブ領域R3へ分類する。
(2)X≧2、かつ、Y<2の場合、次の(2−a)〜(2−b)の条件により、サブ領域R4、またはR5へ分類する。
(2−a)X<3の場合、サブ領域R4へ分類する。
(2−b)X≧3の場合、サブ領域R5へ分類する。
(3)X<2、かつ、Y≧2の場合、次の(3−a)〜(3−b)の条件により、サブ領域R6、またはR7へ分類する。
(3−a)Y<3の場合、サブ領域R6へ分類する。
(3−b)Y≧3の場合、サブ領域R7へ分類する。
(4)X≧2、かつ、Y≧2の場合、サブ領域R8へ分類する。
また、上記4×4成分と8×8成分をサブ領域へ分類する共通処理は、次のように処理することもできる。
(1)xC<width/2、かつ、yC<height/2を満たす場合、次の(1−a)〜(1−d)の条件によりサブ領域R0〜R3へ分類する。
(1−a)xC<width/4、かつ、yC<height/4の場合、サブ領域R0へ分類する。
(1−b)xC≧width/4、かつ、yC<height/4の場合、サブ領域R1へ分類する。
(1−c)xC<width/4、かつ、yC≧height/4の場合、サブ領域R2へ分類する。
(1−d)xC≧width/4、かつ、yC≧height/4の場合、サブ領域R3へ分類する。
(2)xC≧width/2、かつ、yC<height/2の場合、次の(2−a)〜(2−b)の条件により、サブ領域R4、またはR5へ分類する。
(2−a)xC<width×3/4の場合、サブ領域R4へ分類する。
(2−b)xC≧width×3/4の場合、サブ領域R5へ分類する。
(3)xC<width/2、かつ、yC≧height/2の場合、次の(3−a)〜(3−b)の条件により、サブ領域R6、またはR7へ分類する。
(3−a)yC<height×3/4の場合、サブ領域R6へ分類する。
(3−b)yC≧height×3/4の場合、サブ領域R7へ分類する。
(4)xC≧width/2、かつ、yC≧height/2の場合、サブ領域R8へ分類する。
ここでwidthは、対象周波数領域の横幅(4×4では4、8×8では8)である。またheightは、対象周波数領域の縦幅(4×4では4、8×8では8)である。
続いて、位置コンテキスト導出部124bは、処理対象の周波数領域が所定のサイズ以下である場合に、周波数分類部124aで分類された各サブ領域Ri(i=0、1、2、3、4、5、6、7、8)に、対応するコンテキストインデックスctxIdx(i)を導出する。具体的には、輝度のコンテキストインデックスctxIdx(i)は、次の式により導出される。
offsetBlk = log2TrafoWidth==2 ? 0 : 9
ctxIdx(i) = i + offsetBlk
なお、iは、サブ領域Riを識別する番号を表わし、offsetBlkは、4×4成分のコンテキストインデックスと8×8成分のコンテキストインデックスを識別するためのオフセットであり、変換ブロックの横幅サイズの対数値を示すlog2TrafoWidthによって所定の値が設定される。
輝度に関して、上記式により導出される4×4成分、及び8×8成分のコンテキストインデックスを図86(a)、(b)に示す。図86(a)は、輝度の4×4成分の各サブ領域Riに対応するコンテキストインデックスctxIdx(i)を示し、図86(b)は、輝度の8×8成分の各サブ領域Riに対応するコンテキストインデックスctxIdx(i)を示す。
また、色差のコンテキストインデックスctxIdx(i)は、次の式により導出される。
offsetBlk = log2TrafoWidth==2 ? 0 : 9
ctxIdx(i) = i + offsetClr + offsetBlk
なお、iは、サブ領域Riを識別する番号を表わし、offsetBlkは、4×4成分のコンテキストインデックスと8×8成分のコンテキストインデックスを識別するためのオフセットであり、変換ブロックの横幅サイズの対数値を示すlog2TrafoWidthに応じて所定の値が設定される。offsetClrは、輝度と色差のコンテキストインデックスを識別するための所定のオフセットである。ここでoffsetClr=20とした場合に、色差に関して、上記式により導出される4×4成分、及び8×8成分のコンテキストインデックスを図86(c)、(d)に示す。図86(c)は、色差の4×4成分の各サブ領域Riに対応するコンテキストインデックスctxIdx(i)を示し、図86(d)は、色差の8×8成分の各サブ領域Riに対応するコンテキストインデックスctxIdx(i)を示す。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットoffsetClrをoffsetClr=20として、色差のコンテキストインデックスを図86(c)、(d)に図示しているが、これに限定されない。offsetClrは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
上記、周波数分類部124aによる周波数分類処理と位置コンテキスト導出部124bによるコンテキスト導出処理を、図87(a)に示す疑似コードによって表わすことができる。すなわち、図87(a)に示す疑似コードでは、サブブロック位置(X、Y)から定まるインデックス値indexとルックアップテーブルCTX_IND_MAP[index]を用いて、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを算出する。
まず、処理対象の周波数成分(xC,yC)が属するサブブロックの位置(X,Y)が次式により導出される。
X=log2TrafoWidth==2 ? xC : xC>>1
Y=log2TrafoHeight==2 ? yC : yC>>1
4×4成分と8×8成分の場合、各サブブロック(4×4の場合は1×1サブブロック、8×8の場合は2×2サブブロック)の位置(X,Y)から定まるインデックス値indexは、次式により導出される。なお、インデックス値indexは、サブブロックを横方向に走査した順番(開始値は0)を表わす。
index = (Y<<2)+X
また、各サブブロックに対応する輝度のコンテキストインデックスctxIdxは、次式により導出される。
offsetBlk = log2TrafoWidth == 2 ? 0 : 9
ctxIdx = CTX_IND_MAP[ index ] + offsetBlk
ここで、offsetBlkは4×4成分と8×8成分のコンテキストインデックスを識別するためのオフセットであり、変換ブロックの横幅サイズの対数値を示すlog2TrafoWidthに応じて所定の値が設定される。
また、各サブブロックに対応する色差のコンテキストインデックスctxIdxは、次式により導出される。
offsetBlk = log2TrafoWidth == 2 ? 0 : 9
ctxIdx = CTX_IND_MAP[ index ] + offsetBlk
ctxIdx = ctxIdx + offsetClr
ここで、offsetBlkは4×4成分と8×8成分のコンテキストインデックスを識別するためのオフセットであり、変換ブロックの横幅サイズの対数値を示すlog2TrafoWidthに応じて所定の値が設定される。また、offsetClrは輝度と色差のコンテキストインデックスを識別するための所定のオフセットである。
図87(b)は、図87(a)に示す擬似コードにおけるCTX_IND_MAP[index]の一例を示す図であり、図86(a)は、図87(a)に示す擬似コードに対して、図87(b)のCTX_IND_MAP [index]を用いた場合に得られる、4×4成分の輝度に関する各コンテキストインデックスの値を示し、図86(b)は、図87(a)に示す疑似コードに対して、図87(b)のCTX_IND_MAP [index]を用いた場合に得られる、8×8成分の輝度に関する各コンテキストインデックスの値を示している。また、図86(c)は、図87(a)に示す擬似コードに対して、図87(b)のCTX_IND_MAP [index]を用いた場合に得られる、4×4成分の色差に関する各コンテキストインデックスの値を示し、図86(d)は、図87(a)に示す疑似コードに対して、図87(b)のCTX_IND_MAP [index]を用いた場合に得られる、8×8成分の色差に関する各コンテキストインデックスの値を示している。なお、図86(a)に示す例において、最も高周波成分側に位置する周波数成分(図86(a)において網掛けが付された周波数成分)に対しては、コンテキストインデックスは導出されない(図86(b)、(c)、(d)においても同様)。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットoffsetClrをoffsetClr=20として、色差のコンテキストインデックスを図86(c)、(d)に図示しているが、これに限定されない。offsetClrは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
なお、図85に示す各係数位置に割り当てられるコンテキストインデックスは、後述するビット演算によっても導出することが可能である。
図86(a)、(b)に示す例において、輝度に関して18個のコンテキストインデックスが導出され、図86(c)、(d)に示す例において、色差に関して18個のコンテキストインデックスが導出される。したがって、図86(a)、(b)及び図86(c)、(d)に示す例において、18+18=36個のコンテキストインデックスが導出される。これは、図30(a)〜(c)に示した比較例において導出される37個よりも1個少ない。
以上のように、本処理では、図85に示すコンテキストインデックス導出方法により、4×4成分と8×8成分および輝度と色差のサブ領域への分類処理を共通にすることで、符号化効率を維持したまま、コンテキストインデックス導出処理を簡略化することができる。また、本処理によれば、導出すべきコンテキストインデックスの数を削減することができるので、コンテキストインデックス導出処理の軽減化、及びコンテキストインデックスを保持しておくためのメモリサイズの低減を図ることができる。
(周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例8)
周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例8では、最小の変換ブロックサイズであるM×M成分(例えば4×4)のサイズを有する周波数領域の分割パターンが輝度と色差とで共通となるように、周波数領域をサブグループへ分割し、各サブグループに対応するコンテキストインデックスを導出する場合について、図90〜図91、図30、図60、図62、図63を用いて説明する。
まず、周波数分類部124aは、処理対象の周波数領域が所定のサイズ以下である場合に、処理対象の周波数成分の位置(xC,yC)に基づいて、サブグループR0〜R6へ分類処理を行う。
(1)xC<width/2、かつ、yC<height/2を満たす場合、次の(1−a)〜(1−b)の条件によりサブグループR0〜R1へ分類する。
(1−a)xC<width/4、かつ、yC<height/4の場合、サブグループR0へ分類する。
(1−b)xC≧width/4、または、yC≧height/4の場合、サブグループR1へ分類する。
(2)xC≧width/2、かつ、yC<height/2の場合、次の(2−a)〜(2−b)の条件により、サブグループR2、またはR3へ分類する。
(2−a)xC<width×3/4の場合、サブグループR2へ分類する。
(2−b)xC≧width×3/4の場合、サブグループR3へ分類する。
(3)xC<width/2、かつ、yC≧height/2の場合、次の(3−a)〜(3−b)の条件により、サブグループR4、またはR5へ分類する。
(3−a)yC<height×3/4の場合、サブグループR4へ分類する。
(3−b)yC≧height×3/4の場合、サブグループR5へ分類する。
(4)xC≧width/2、かつ、yC≧height/2の場合、サブグループR6へ分類する。ここでwidthは、対象周波数領域の横幅(4×4では4)である。またheightは、対象周波数領域の縦幅(4×4では4)である。上記分類処理を4×4成分に適用した例は、図60(a)に示す通りである。
続いて、位置コンテキスト導出部124bは、処理対象の周波数領域が所定のサイズ以下である場合に、周波数分類部124aで分類されたサブグループに、対応するコンテキストインデックスを割り付ける。
具体的には、輝度と色差のコンテキストインデックスctxIdx(i)は、次の式より導出される。
ctxIdx(i) = (cIdx==0) ? i : i + offsetClr
なお、iは、サブグループRiを識別する番号を表わし、offsetClrは、輝度と色差のコンテキストインデックスを識別するためのオフセットであり、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。また、cIdxは、輝度と色差を識別するための変数であり、輝度の場合、cIdx=0、色差の場合、cIdx=1となる。
輝度に関して、上記式により導出される、4×4成分の各サブグループRiに対応するコンテキストインデックスctxIdx(i)を図62(b)に示す。また、offsetClr=14とした場合に、色差に関して、上記式により導出される4×4成分の各サブグループRiに対応するコンテキストインデックスctxIdx(i)を図63(a)に示す。
また、4×4成分に関して、周波数分類部124aによる周波数分類処理と位置コンテキスト導出部124bによるコンテキスト導出処理を、図90(a)に示す疑似コードによって表わすことができる。すなわち、図90(a)に示す疑似コードでは、処理対象の周波数周成分(xC,yC)から定まるインデックス値indexとルックアップテーブルCTX_IND_MAP[index]を用いて、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを算出する。
まず、処理対象の周波数成分(xC、yC)か定まるインデックス値indexは、周波数成分を横方向に走査した順番(開始値は0)を表わし、次の式により算出される。
index = (yC<<2) + x
続いて、コンテキストインデックスctxIdxは、次の式により導出される。
ctxIdx=CTX_IND_MAP[ index ]
また、色差の場合は、上記の式により導出したコンテキストインデックスctxIdxへ所定のオフセットoffsetClrを加算し、コンテキストインデックスを導出する。すなわち、
ctxIdx = ctxIdx + offsetClr
図90(b)は、図90(a)に示す疑似コードにおけるCTX_IND_MAP[index]の一例を示す図であり、図62(b)は、図90(a)に示す疑似コードに対して、図90(b)のCTX_IND_MAP [index]を用いた場合に得られる、4×4成分の輝度に関する各コンテキストインデックスの値を示している。また、図63(a)は、図90(a)に示す疑似コードに対して、図90(b)のCTX_IND_MAP[index]を用いた場合に得られる、4×4成分の色差に関する各コンテキストインデックスを示している。なお、図62(b)に示す例において、最も高周波成分側に位置する周波数成分(図62(b)において網掛けが付された周波数成分)に対しては、コンテキストインデックスは導出されない(図63(a)においても同様)。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットoffsetClrをoffsetClr=14として、色差のコンテキストインデックスを図63(a)に図示しているが、これに限定されない。offsetClrは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
位置コンテキスト導出部124bが上記のようにコンテキストインデックスを導出することによる効果を比較例に係る図91(a)〜(b)を参照して説明する。
図91(a)は、比較例に係る4×4成分に関するコンテキストインデックス導出処理を表わす疑似コードを示し、図91(b)は、図91(a)の疑似コード中のルックアップテーブルCTX_IND_MAP4x4[ index ]の具体例を示している。なお、図91(b)のルックアップテーブルCTX_IND_MAP4x4 [ index ] のうち、indexの範囲が0<=index<=14の場合、輝度のコンテキストインデックス導出に使われ、indexの範囲が15<=index<=30の場合、色差のコンテキストインデックス導出に使われる。また、図30(a)は、図91(a)の疑似コードに対して、図91(b)のルックアップテーブルCTX_IND_MAP4x4 [index ],(0<=index<=14)を用いた場合に得られる、4×4成分の輝度に関する各コンテキストインデックスの値を示し、図30(b)は、図91(a)の疑似コードに対して、図91(b)のルックアップテーブルCTX_IND_MAP4x4[index],(15<=index<=30)を用いた場合に得られる、4×4成分の色差に関する各コンテキストインデックスの値(ただし、オフセットoffsetClrを加算する前)を示している。比較例では、4×4成分において、輝度と色差の周波数領域の分割パターンが異なるため、処理対象の周波数成分位置(xC、yC)とルックアップテーブルによりコンテキストインデックスを導出する場合、輝度と色差で異なるルックアップテーブルを参照する必要があった。そのため、コンテキストインデックスの導出に必要とするルックアップテーブルCTX_IND_MAP4x4[index]に含まれる要素数は、輝度で15個、色差で15個、計30個必要である。
一方、本処理では、最小の変換ブロックサイズであるM×M成分(例えば4×4)のサイズを有する周波数領域の分割パターンが輝度と色差とで共通である。そのため、処理対象の周波数周成分(xC,yC)とルックアップテーブルCTX_IND_MAP[index]を用いて、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを算出する場合、輝度と色差とに用いるルックアップテーブルを共通化することができる。従って、比較例の30個に比べて、ルックアップテーブルCTX_IND_MAP[index]に含まれる要素数は15個となり、ルックアップテーブルに必要なメモリサイズの低減を図ることができる。
(周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例9)
周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例9では、最小の変換ブロックサイズであるM×M成分(例えば4×4)のサイズを有する周波数領域の分割パターンが、輝度と色差とで共通となるように周波数領域をサブグループへ分割し、各サブグループに対応するコンテキストインデックスを導出する場合について、図90〜91、図85、図86を用いて説明する。
まず、周波数分類部124aは、処理対象の周波数領域が所定のサイズ以下である場合に、処理対象の周波数成分の位置(xC,yC)に基づいて、サブグループR0〜R8へ分類処理を行う。
(1)xC<width/2、かつ、yC<height/2を満たす場合、次の(1−a)〜(1−d)の条件によりサブグループR0〜R3へ分類する。
(1−a)xC<width/4、かつ、yC<height/4の場合、サブグループR0へ分類する。
(1−b)xC≧width/4、かつ、yC<height/4の場合、サブグループR1へ分類する。
(1−c)xC<width/4、かつ、yC≧height/4の場合、サブグループR2へ分類する。
(1−d)xC≧width/4、かつ、yC≧height/4の場合、サブグループR3へ分類する。
(2)xC≧width/2、かつ、yC<height/2の場合、次の(2−a)〜(2−b)の条件により、サブグループR4、またはR5へ分類する。
(2−a)xC<width×3/4の場合、サブグループR4へ分類する。
(2−b)xC≧width×3/4の場合、サブグループR5へ分類する。
(3)xC<width/2、かつ、yC≧height/2の場合、次の(3−a)〜(3−b)の条件により、サブグループR6、またはR7へ分類する。
(3−a)yC<height×3/4の場合、サブグループR6へ分類する。
(3−b)yC≧height×3/4の場合、サブグループR7へ分類する。
(4)xC≧width/2、かつ、yC≧height/2の場合、サブグループR8へ分類する。
ここでwidthは、対象周波数領域の横幅(4×4では4)である。またheightは、対象周波数領域の縦幅(4×4では4)である。
なお、上記分類処理を4×4成分に適用した例を図85(a)に示す。図85(a)は、4×4成分のサイズを有する周波数領域を構成する領域(サブ領域、またはサブグループともいう)R0〜R8を示す図である。
続いて、位置コンテキスト導出部124bは、処理対象の周波数領域が所定のサイズ以下である場合に、周波数分類部124aで分類されたサブグループに、対応するコンテキストインデックスを割り付ける。
具体的には、輝度と色差のコンテキストインデックスctxIdx(i)は、次の式より導出される。
ctxIdx(i) = (cIdx==0) ? i : i + offsetClr
なお、iは、サブグループRiを識別する番号を表わし、offsetClrは、輝度と色差のコンテキストインデックスを識別するためのオフセットであり、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。また、cIdxは、輝度と色差を識別するための変数であり、輝度の場合、cIdx=0、色差の場合、cIdx=1となる。
輝度に関して、上記式により導出される4×4成分の各サブグループRiに対応するコンテキストインデックスctxIdx(i)を図86(a)に示す。また、色差に関して、offsetClr=20とした場合に上記式により導出される4×4成分の各サブグループRiに対応するコンテキストインデックスctxIdx(i)を図86(c)に示す。
また、4×4成分に関して、周波数分類部124aによる周波数分類処理と位置コンテキスト導出部124bによるコンテキスト導出処理を、図90(a)に示す疑似コードによって表わすことができる。すなわち、図90(a)に示す疑似コードでは、処理対象の周波数周成分(xC,yC)から定まるインデックス値indexとルックアップテーブルCTX_IND_MAP[index]を用いて、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを算出している。
処理対象の周波数成分(xC、yC)か定まるインデックス値indexは、周波数成分を横方向に走査した順番(開始値は0)を表わし、次の式により算出される。
index = (yC<<2) + x
続いて、コンテキストインデックスctxIdxは、次の式により導出される。
ctxIdx=CTX_IND_MAP[ index ]
また、色差の場合は、上記の式により算出したコンテキストインデックスctxIdxに所定のオフセットoffsetClrを加算し、コンテキストインデックスを導出する。すなわち、
ctxIdx = ctxIdx + offsetClr
図90(c)は、図90(a)に示す疑似コードにおけるCTX_IND_MAP[index]の一例を示す図であり、図86(a)は、図90(a)に示す疑似コードに対して、図90(c)のCTX_IND_MAP [index]を用いた場合に得られる、4×4成分の輝度に関する各コンテキストインデックスの値を示している。また、図86(c)は、図90(a)に示す疑似コードに図90(c)のCTX_IND_MAP[index]を用いた場合に得られる、4×4成分の色差に関する各コンテキストインデックスを示している。なお、図86(a)に示す例において、最も高周波成分側に位置する周波数成分(図86(a)において網掛けが付された周波数成分)に対しては、コンテキストインデックスは導出されない(図86(c)においても同様)。なお、説明上、輝度と色差のコンテキストインデックスを識別するためのオフセットoffsetClrをoffsetClr=20として、色差のコンテキストインデックスを図86(c)に図示しているが、これに限定されない。offsetClrは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
以上、本処理では、最小の変換ブロックサイズであるM×M成分(例えば4×4)のサイズを有する周波数領域の分割パターンが輝度と色差とで共通である。そのため、処理対象の周波数周成分の位置(xC,yC)とルックアップテーブルCTX_IND_MAP[index]を用いて、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを算出する場合、輝度と色差に用いるルックアップテーブルを共通化することができる。従って、比較例の30個に比べて、ルックアップテーブルCTX_IND_MAP[index]に含まれる要素数は15個となり、ルックアップテーブルに必要なメモリサイズの低減を図ることができる。
(周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例10)
周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例9〜10では、最小の変換ブロックサイズであるM×M成分(例えば4×4)のサイズを有する周波数領域の分割パターンが、輝度と色差とで共通となるように周波数領域をサブグループへ分割し、各サブグループに個別のコンテキストインデックスを導出する例、あるいは、処理対象の周波数周成分の位置(xC、yC)とルックアップテーブルを用いて、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを導出する例について説明した。以下では、ルックアップテーブルを用いずに、処理対象の周波数成分の位置(xC、yC)を用いた演算式により、コンテキストインデックスを導出する例について説明する。
位置コンテキスト導出部124bは、処理対象の周波数領域が所定のサイズ以下である場合に、以下の式(eq.e1)を用いて、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxを導出し、その導出結果ctxIdxを周波数分類部124aに供給する。
ctxIdx = xC + yC ・・・(eq.e1)
なお、色差の場合は、式(eq.e1)により導出されたctxIdxに、輝度と色差のコンテキストインデックスを識別するための所定のオフセットoffsetClrを加算する。すなわち、
ctxIdx = ctxIdx + offsetClr
なお、offsetClrは、4×4変換ブロック〜32×32変換ブロックの輝度のコンテキスインデックスの総数であることが好ましい。
輝度に関して、式(eq.e1)を適用した場合に導出される、4×4成分のコンテキストインデックスの例を図92(a)に示す。図92(a)に示すように、周波数領域は、DCから高周波成分に向かって、波状(帯状)のサブ領域に分割されると共に、各サブ領域に対応するコンテキストインデックスctxIdxが導出されている。このように、DCから高周波成分に向かって波状に分割するパターンは、非ゼロ係数の発生頻度の分布形状の良い近似であり、非ゼロ係数の発生頻度が同程度になる周波数成分に対して共通のコンテキストインデックスを割り付けることができる。なお、図92(a)に示す例において、最も高周波成分側に位置する周波数成分(図92(a)において網掛けが付された周波数成分)に対しては、コンテキストインデックスは導出されない(図92(b)〜(d)、図93(a)〜(f)、図94(a)〜(d)、図95(a)〜(d)においても同様)。
続いて、周波数分類部124aは、位置コンテキスト導出部124bによって導出されたコンテキストインデックスctxIdxを処理対象の周波数成分(xC、yC)へ割り付ける。
以上、本処理では、処理対象の周波数成分の位置を表わすxCとyCを用いた演算式を用いることで、周波数領域を複数のサブ領域に分割すると共に、各サブ領域に対応するコンテキストインデックスを導出することができる。そのため、コンテキストインデックスの導出処理を簡略化することができる。
なお、位置コンテキスト導出部124bにおいて、処理対象の周波数成分(xC、yC)のコンテキストインデックスctxIdxの導出に用いる式は、式(eq.e1)に限定されない。例えば、以下の式(eq.e2)を用いてコンテキストインデックスを導出してもよい。
ctxIdx = ( xC + yC + a ) >> b・・・(eq.e2)
ここで、式(eq.e2)において、a = 1、 b = 1とすれば、4×4成分に関して、図92(b)に示す輝度のコンテキストインデックスが導出される。
また、式(eq.e2)において、a = 0、b = 1とすれば、4×4成分に関して、図92(c)に示す輝度のコンテキストインデックスが導出される。
また、式(eq.e1)の代わりに、式(eq.e3)を用いてコンテキストインデックスを導出してもよい。
ctxIdx = ( xC + yC > th ) ? d : xC + yC・・・(eq.e3)
ここで、式(eq.e3)において、th = 3、d = 4とすれば、4×4成分に関して、図92(d)に示す輝度のコンテキストインデックスが導出される。
また、式(eq.e1)の代わりに、次の式(eq.f1)を用いてコンテキストインデックスを導出してもよい。
ctxIdx = max ( xC , yC ) ・・・(eq.f1)
式(eq.f1)を4×4成分に適用した場合に導出される、輝度のコンテキストインデックスの例を図93(a)に示す。図93(a)に示すように、周波数領域は、DCから高周波成分に向かって、逆L字型のサブ領域に分割されると共に、各サブ領域に対応するコンテキストインデックスctxIdxが導出されている。このように、DCから高周波成分に向かって逆L字型に分割するパターンは、非ゼロ係数の発生頻度の分布形状の良い近似であり、非ゼロ係数の発生頻度が同程度になる周波数成分に対して共通のコンテキストインデックスを割り付けることができる。
また、式(eq.f1)の代わりに、式(eq.f2)を用いてコンテキストインデックスを導出してもよい。
ctxIdx = ( xC + yC > th ) ? a : max ( xC, yC ) ・・・(eq.f2)
ここで、式(eq.f2)において、th = 3、a = 4とすれば、4×4成分に関して、図93(b)に示す輝度のコンテキストインデックスが導出される。
また、式(eq.f2)において、th = 4、a = 4とすれば、4×4成分に関して、図93(c)に示す輝度のコンテキストインデックスが導出される。
また、式(eq.e1)の代わりに、式(eq.f3)を用いてコンテキストインデックスを導出してもよい。
ctxIdx = ( (xC>>1) + (yC>>1) > th ) ? a : max ( xC, yC ) ・・・(eq.f3)
ここで、式(eq.f3)において、th = 1、a= 4とすれば、4×4成分に関して、図93(d)に示す輝度のコンテキストインデックスが導出される。
また、式(eq.e1)の代わりに、式(eq.f4)を用いてコンテキストインデックスを導出してもよい。
ctxIdx = ( (xC>>1) + (yC>>1) > th ) ?
a : yC < (height/2) ? max ( xC, yC ) : max ( xC, yC ) + b
・・・(eq.f4)
ここで、式(eq.f4)において、th = 1、a = 6、b = 2、height = 4とすれば、4×4成分に関して、図93(e)に示す輝度のコンテキストインデックスが導出される。図93(e)に示す4×4成分の分割パターンは、図60(a)に示す4×4成分の周波数成分の分割パターンを表現することができる。
また、図93(e)に示す4×4成分の輝度のコンテキストインデックスは、式(eq.f5)を用いても表わすことができる。
X = xC >> (log2TrafoWidth-2)
Y = yC >> (log2TrafoHeight-2)
ctxIdx = ( (X>>1) + (Y>>1) > th ) ?
a : ( Y < (1<<(log2TrafoHeight-2))) ? max ( X, Y ) : max ( X, Y ) + b ・・・(eq.f5)
なお、式(eq.f5)において、log2TrafoWidthは変換ブロックの横幅の対数値(4×4の場合は2)を表わし、log2TrafoHeightは変換ブロックの縦幅の対数値(4×4の場合は2)を表わす。4×4成分に関して、図93(e)に示す輝度のコンテキストインデックスを導出する場合は、式(eq.f5)において、th = 1、a = 6、b = 2とすればよい。なお、8×8成分へ適用する場合は、式(eq.f5)によって導出したコンテキストインデックスctxIdxに、4×4成分と8×8成分のコンテキストインデックスを識別するための所定のオフセットoffsetBlkを加算する。すなわち、
ctxIdx = ctxIdx + offsetBlk
ここで、offsetBlk=7とすれば、輝度に関して、図62(b)に示す8×8成分の周波数成分の分割パターンとコンテキストインデックスとを表現することができる。
また、式(eq.f4)の代わりに、式(eq.f6)を用いてコンテキストインデックスを導出してもよい。
ctxIdx = ( (xC>>1) + (yC>>1) > th ) ?
a : ( xC < width/2 ) ? max ( xC, yC ) : max ( xC, yC ) + b
・・・(eq.f6)
ここで、式(eq.f6)において、th = 1、a = 6、b = 2、width = 4とすれば、図93(f)に示すコンテキストインデックスが導出される。図93(f)に示す4×4成分の分割パターンは、図60(a)に示す4×4成分の周波数成分の分割パターンを表現することができる。
また、図93(f)に示す4×4成分の輝度のコンテキストインデックスは、式(eq.f7)を用いても表わすことができる。
X = xC >> (log2TrafoWidth-2)
Y = yC >> (log2TrafoHeight-2)
ctxIdx = ( (X>>1) + (Y>>1) > th ) ?
a : ( X < (1<<(log2TrafoWidth-1)) ) ? max ( X, Y ) : max ( X, Y ) + b ・・・(eq.f7)
なお、式(eq.f7)において、log2TrafoWidthは変換ブロックの横幅の対数値(4×4の場合は2)を表わし、log2TrafoHeightは変換ブロックの縦幅の対数値(4×4の場合は2)を表わす。4×4成分に関して、図93(f)に示すコンテキストインデックスを導出する場合は、式(eq.f7)において、th = 1、a = 6、b = 2とすればよい。なお、8×8成分へ適用する場合は、式(eq.f7)によって導出したコンテキストインデックスctxIdxに、4×4成分と8×8成分のコンテキストインデックスを識別するための所定のオフセットoffsetBlkを加算する。
ctxIdx = ctxIdx + offsetBlk
ここで、offsetBlk=7とすれば、図60(b)に示す8×8成分の周波数成分の分割パターンを表現することができる。
また、非ゼロ係数の発生頻度が水平方向周波数成分へ偏る場合は、式(eq.e1)の代わりに、以下の式(eq.g1)を用いてコンテキストインデックスを導出してもよい。
ctxIdx = ( ( xC + yC + a ) >> b ) + ( ( yC > xC ) * c ) ・・・(eq.g1)
ここで、式(eq.g1)において、a = 1、b = 1、c = 3とすれば、4×4成分に関して、図94(a)に示す輝度のコンテキストインデックスが導出される。なお、式(eq.g1)において、(A > B)は、AがBよりも大きい場合に、1を返し、それ以外の場合は0を返す演算を表わす。
また、式(eq.e1)の代わりに、式(eq.g2)によってコンテキストインデックスを導出してもよい。
ctxIdx =
( xC + yC > th ) ? d : ( ( xC + yC + a ) >> b ) + ( ( yC > xC ) * c )
・・・(eq.g2)
ここで、式(eq.g2)において、th = 3、a = 1、b = 1、c = 3、d = 3とすれば、4×4成分に関して、図94(b)に示す輝度のコンテキストインデックスが導出される。
また、式(eq.g2)において、th = 4、a = 1、b = 1、c = 3、d = 3とすれば、4×4成分に関して、図94(c)に示す輝度のコンテキストインデックスが導出される。
また、式(eq.g2)の代わりに、式(eq.g3)を用いてコンテキストインデックスを導出してもよい。
ctxIdx = (xC + 2*yC + 1 ) >> 1 ・・・(eq.g3)
4×4成分に関して、式(eq.g3)を適用した場合、図94(d)に示すコンテキストインデックスが導出される。
また、非ゼロ係数の発生頻度が垂直方向周波数成分へ偏る場合は、式(eq.e1)の代わりに、以下の式(eq.h1)を用いてコンテキストインデックスを導出してもよい。
ctxIdx = ( ( xC + yC + a ) >> b ) + ( ( xC > yC ) * c ) ・・・(eq.h1)
ここで、式(eq.h1)において、a = 1、b = 1、c = 3とすれば、4×4成分に関して、図95(a)に示す輝度のコンテキストインデックスが導出される。
また、式(eq.h1)の代わりに、式(eq.h2)によってコンテキストインデックスを導出してもよい。
ctxIdx =
( xC + yC > th ) ? d : ( ( xC + yC + a ) >> b ) + ( ( xC > yC ) * c )
・・・(eq.h2)
ここで、式(eq.h2)において、th = 3、a = 1、b = 1、c = 3、d = 3とすれば、4×4成分に関して、図95(b)に示す輝度のコンテキストインデックスが導出される。
また、式(eq.g2)において、th = 4、a = 1、b = 1、c = 3、d = 3とすれば、4×4成分に関して、図95(c)に示す輝度のコンテキストインデックスが導出される。
また、式(eq.h1)の代わりに、式(eq.h3)を用いてコンテキストインデックスを導出してもよい。
ctxIdx = ( 2*xC + yC + 1 ) >> 1 ・・・(eq.h3)
4×4成分に関して、式(eq.g3)を適用した場合、図95(d)に示すコンテキストインデックスが導出される。
以上、本処理では、処理対象の周波数成分の位置を表わすxCとyCを用いた演算式によって、周波数領域を複数のサブ領域に分割すると共に、各サブ領域に対応するコンテキストインデックスを導出することができる。そのため、コンテキストインデックスの導出処理、及びコンテキストインデックス導出に係るメモリサイズの削減を図ることができる。
(係数有無フラグ復号部の変形例1)
本実施形態に係る係数有無フラグ復号部は、上述の構成に限られるものではない。以下では、第1の変形例に係る係数有無フラグ復号部124’について、図39〜図42を参照して説明する。
図39は、本変形例に係る係数有無フラグ復号部124’の構成を示す図である。図39に示すように、係数有無フラグ復号部124’は、図23に示した変換係数有無フラグ復号部124と略同様の構成であるが、以下の点において異なっている。
・係数有無フラグ復号部124’は、周辺参照コンテキスト導出部124cを備えていない。
・係数有無フラグ復号部124’は、サブブロック周辺参照コンテキスト導出部124fを備えている。
係数有無フラグ復号部124’のその他の構成については、係数有無フラグ復号部124と同様であるので説明を省略し、以下では、サブブロック周辺参照コンテキスト導出部124fについて説明する。
(サブブロック周辺参照コンテキスト導出部124f)
サブブロック周辺参照コンテキスト導出部124fは、処理対象のサブブロックに含まれる各周波数成分に割り付けるコンテキストインデックスを、当該処理対象のサブブロックに隣接するサブブロックであって、サブブロック係数有無フラグsignificant_coeffgroup_flagが復号済みのサブブロックを参照して導出する。また、サブブロック周辺参照コンテキスト導出部124fは、処理対象のサブブロックに含まれる各周波数成分に対して、共通のコンテキストインデックスを割り付ける。
より具体的には、サブブロックの処理順が逆スキャン順であるとして、サブブロック周辺参照コンテキスト導出部124fは、サブブロック(xCG、yCG)に含まれるsignificant_coeff_flag[xC][yC]を参照する際に用いられるコンテキストインデックスを、隣接サブブロック(xCG+1、yCG)及び隣接サブブロック(xCG、yCG+1)に割り付けられたサブブロック係数有無フラグの値の総和ctxCntに基づいて、以下の式(eq.B1)によって導出する。
ctxCnt = (significant_coeffgroup_flag[xCG+1][yCG]!=0)
+ (significant_coeffgroup_flag[xCG][yCG+1]!=0) ・・・(eq.B1)
ctxIdx = offset + ctxCnt
ここで、(eq.B1)における各項は、()内の比較が真である場合に1をとり、()内の比較が偽である場合に0をとるものとする。また、参照する隣接サブブロック(xCG+1、yCG)、または隣接するサブブロック(xCG、yCG+1)の何れかが変換ブロックの外側に位置する場合、該当する位置のサブブロック係数有無フラグの値を0として扱う。
式(eq.B1)中の変数offsetの値をゼロと仮定すると、このようにして導出されるctxIdxは、以下の値をとる。
・ctxIdx=0 ・・・ サブブロック(xCG+1、yCG)及びサブブロック(xCG、yCG+1)の何れにも非ゼロ変換係数が存在しない。
・ctxIdx=1 ・・・ サブブロック(xCG+1、yCG)及びサブブロック(xCG、yCG+1)の何れか一方に非ゼロ変換係数が存在する。
・ctxIdx=2 ・・・ サブブロック(xCG+1、yCG)及びサブブロック(xCG、yCG+1)の双方にに非ゼロ変換係数が存在する。
また、このようにして導出されたctxIdxは、対象サブブロック(xCG、yCG)に含まれる全てのsignificant_coeff_flagを復号する際に共通して用いられる。
図40は、本変形例に係るサブブロック周辺参照コンテキスト導出部124fによって参照される隣接サブブロック(xCG+1、yCG)及び隣接サブブロック(xCG、yCG+1)を示している。
図41は、サブブロック周辺参照コンテキスト導出部124fによるコンテキストインデックス導出処理を示す擬似コードである。図41に示すR0、R1、R2は、例えば、図26(a)に示すものを指しており、図41に示す擬似コードは、輝度Yに関するsignificant_coeff_flagを復号する際に参照されるコンテキストインデックスの導出処理に好適に適用することができる。
図42は、サブブロック周辺参照コンテキスト導出部124fによるコンテキストインデックス導出処理の他の例を示す擬似コードである。図42に示すR0、R1は、例えば、図26(b)に示すものを指しており、図42に示す擬似コードは、色差U、Vに関するsignificant_coeff_flagを復号する際に参照されるコンテキストインデックスの導出処理に好適に適用することができる。
図74は、サブブロック周辺参照コンテキスト導出部124fによるコンテキストインデックス導出処理を示す疑似コードである。図74に示すR0、R1、R2は、例えば、図24に示すものを指しており、図74に示す疑似コードは、輝度Yに関するsignificant_coeff_flagを復号する際に参照されるコンテキストインデックスの導出処理に好適に適用することができる。
本変形例に係るサブブロック周辺参照コンテキスト導出部124fによれば、周波数成分単位での周辺参照コンテキスト導出処理を行わず、サブブロックに含まれる各周波数成分に対して共通のコンテキストインデックスを割り付けるので、処理量が削減される。また、サブブロック単位でのコンテキストインデックス導出処理は、隣接サブブロックでのsignificant_coeffgroup_flagの値を参照して行われるので、対象サブブロックの周辺に存在する非0変換係数の数に応じたコンテキストインデックスを導出することができる。
したがって、本変形例に係るサブブロック周辺参照コンテキスト導出部124fによれば、高い符号化効率を維持しつつ、コンテキストインデックス導出処理の処理量を削減することができる。
(係数有無フラグ復号部の変形例2)
以下では、係数有無フラグ復号部の第2の変形例について、図43を参照して説明する。
図43は、本変形例に係る係数有無フラグ復号部124’’の構成を示すブロック図である。図43に示すように、係数有無フラグ復号部124’’は、図23に示した変換係数有無フラグ復号部124の各部に加えて、サブブロック周辺参照コンテキスト導出部124fを備えている。
サブブロック周辺参照コンテキスト導出部124fについては既に説明したためここでは説明を省略する。
本変形例に係るサブブロック周辺参照コンテキスト導出部124fは、色差U、Vに関するsignificant_coeff_flagを復号する際に参照されるコンテキストインデックスを導出する際に、図42の擬似コードによって表される処理を行い、輝度Yに関するsignificant_coeff_flagを復号する際に参照されるコンテキストインデックスを導出する際には、図27の擬似コードによって表される処理を行う。
このような構成によっても、高い符号化効率を維持しつつ、コンテキストインデックス導出処理の処理量を削減することができる。
(係数有無フラグ復号部124の変形例3)
以下では、図96を参照して、係数有無フラグ復号部124の第3の変形例について説明する。以下に説明する係数有無フラグ復号部124の第3の変形例は、係数有無フラグのコンテキストインデックス導出に関して、
(1)処理対象のTUサイズが所定サイズ以下の場合は、処理対象の周波数成分の位置を表わすxCとyCを用いた演算式によって、周波数領域を複数のサブ領域に分割すると共に、各サブ領域に対応する輝度及び色差のコンテキストインデックスを導出する。
(2)処理対象のTUサイズが所定サイズより大きい場合は、処理対象の周波数成分の位置が、低周波数成分および中周波数成分に属するとき、処理対象の周辺に位置する非ゼロ係数の個数に基づいてコンテキストインデックスを導出し、高周波数成分に属するときは固定のコンテキストインデックスを割り当てる。
という特徴を有する。
図96は、係数有無フラグ復号部124の第3の変形例の構成例を示すブロック図である。図96に示すように、係数有無フラグ復号部124は、コンテキスト導出部124z、係数有無フラグ記憶部124d、及び係数有無フラグ設定部124eを備えている。さらに、コンテキスト導出部124zは、導出方法制御部124x 、位置コンテキスト導出部124b、周辺参照コンテキスト導出部124cを備えている。なお、図96では、コンテキスト導出部124zにおいて、導出方法制御部124xが、位置コンテキスト導出部124b、および周辺参照コンテキスト導出部124cを内包する形で記載しているが、これは例示に過ぎない。コンテキスト導出部124zは、このような構成に限定されない。
(コンテキスト導出部124z)
(導出方法制御部124x)
導出方法制御部124xには、処理対象の周波数成分の位置(xC,yC)と、変換ブロックの対数値(log2TrafoWidth、log2TrafoHeight)が入力される。対数値のサイズから、周波数領域の幅widthと高さheightを(1<<log2TrafoWidth)と(1<<log2TrafoHeight)により算出する。なお、対数値のサイズではなく、周波数領域の幅と高さを直接入力しても良い。
導出方法制御部124xは、対象となるTUサイズおよび周波数成分の位置に応じて、位置コンテキスト導出部124b、周辺参照コンテキスト導出部124cを選択する。選択された各コンテキスト導出部ではコンテキストインデックスctxIdxが導出される。
例えば、TUサイズが所定のサイズ以下である場合(例えば、4×4TU、8×8TUである場合)には、導出方法制御部124xは、位置コンテキスト導出部124bを選択し、選択した位置コンテキスト導出部124bによって導出されたコンテキストインデックスctxIdxを、当該復号対象の周波数成分に割り付ける。
一方で、対象となるTUサイズが所定のサイズよりも大きい場合(例えば、16×16TU、32×32TUである場合等)、導出方法制御部124xは、周波数領域における復号対象の周波数成分の位置に応じて、当該周波数成分を複数の部分領域の何れかに分類し、分類した部分領域に応じて、位置コンテキスト導出部124b、及び周辺参照コンテキスト導出部124cのいずれかを選択し、選択した何れかのコンテキスト導出手段よって導出されたコンテキストインデックスctxIdxを、当該復号対象の周波数成分に割り付ける。
図98(a)は、本処理例において、導出方法制御部124xによって分割された部分領域R0〜R2を示す図であり、図98(a)は、輝度及び色差に関する変換係数を復号する際に好適に適用されるものである。
導出方法制御部124xは、周波数領域に含まれる各周波数成分の当該周波数領域における位置(xC,yC)を用いて、例えば、次の条件によって当該周波数成分を複数の部分領域R0〜R2に分類する。なお、xCG,yCGはサブブロック位置を表わす。
(1)xC+yC<THLoを満たす周波数成分を部分領域R0に分類する。
(2)xC+yC>=THLo、かつ、xCG+yCG<THHiを満たす周波数成分を部分領域R1に分類する。
(3)xCG+yCG>=THHiを満たす周波数成分を部分領域R2に分類する。
ここで、閾値THloは、例えば、以下の式(eq.A2-1)によって設定することが好適である。また、閾値THhiは、例えば、以下の式(eq.A2-2)によって設定することが好適である。
THlo = 2 ・・・・・・(eq.A2-1)
THhi = (3 * max(width, height) >> 4 )・・・(eq.A2-2)
なお、発明者らは、周波数領域を部分領域R0〜R2へ分割し、部分領域R0とR1に関して、周辺参照によりコンテキストインデックスを導出する場合、上記閾値(eq.A2-1)の設定が符号化効率の観点から好適であることを実験により確認している。
なお、部分領域の分類条件は、上記に限定されず、次の条件(図98(b))に示すようにしてもよい。
(1)xCG+yCG<THLoを満たす周波数成分を部分領域R0に分類する。
(2)xCG+yCG>=THLo、かつ、xCG+yCG<THHiを満たす周波数成分を部分領域R1に分類する。
(3)xCG+yCG>=THHiを満たす周波数成分を部分領域R2に分類する。
ここで、閾値THloは、THlo=1とするのが好ましい。閾値THhiは、式(eq.A2-2)と同様である。
なお、以下では、例示的に、図98(a)(b)に示す領域R0に属する周波数成分を低周波数成分と称し、領域R1に属する成分を中周波数成分と称し、領域R2に属する成分を高周波数成分と称する。
以上のコンテキストインデックス導出処理を図26(a)の導出処理と比較すると、図26(a)では低周波数成分において、位置コンテキストの部分領域と周辺参照の部分領域を区別に対する分岐(図26(a)のR0とR1を区別する分岐)と、周辺参照の部分領域同士を区別する分岐(図26(a)のR1とR2を区別する分岐)の2つの分岐があるのに対し、図9では、周辺参照の部分領域同士を区別する分岐(図26のR0とR1を区別する分岐)の1つの分岐とすることができ、コンテキスト導出処理が簡略化される効果を奏する。特に、DC成分のコンテキストインデックスに対しても周辺参照とすることにより、DC成分に対して他の成分とは異なる処理を行うことを避けることができるという効果を奏する。特に、低周波数成分における周辺参照の部分領域同士を区別する分岐(図98のR0とR1を区別する分岐)の位置を閾値(eq.A2-1)に設定すると同時に、本処理を適用することにより、符号化効率を維持したまま簡略化が可能である。また、より単純な図26(b)よりも符号化効率が高いという効果がある。
さらに、周波数領域の分割及びコンテキストインデックス導出手段の選択方法を、輝度及び色差で共通化することにより、輝度と色差で異なる分岐の設定を設ける必要がないため、係数有無フラグに係るコンテキストインデックス導出処理を簡略化することが可能となる。
なお、上記に限られず、導出方法制御部124xは、4×4TU〜32×32TUまでのTUサイズについて、共通のコンテキストインデックスctxIdx導出処理を実行する構成であっても構わない。すなわち、導出方法制御部124xは、TUのサイズによらず、位置コンテキスト導出部124b、及び周辺参照コンテキスト導出部124cのいずれかを固定的に選択する構成であっても構わない。
(位置コンテキスト導出部124b)
位置コンテキスト導出部124bは、対象周波数成分に対するコンテキストインデックスctxIdxを、周波数領域における当該対象周波数成分の位置に基づいて導出する。なお、周波数成分の位置によらず、固定値となるコンテキストインデックスctxIdxを導出する場合も位置コンテキスト導出部124bで行われる。
位置コンテキスト導出部124bは、処理対象のTUサイズが所定のサイズよりも大きい場合に、位置コンテキスト導出部124bは、対象周波数成分(xC, yC)が属するサブブロックの位置(xCG, yCG)で表わされるxCG + yCGが所定の閾値THhi以上の場合(図98(a))に示す部分領域R2に属する周波数成分に対して、以下の式(eq.A2-3)を用いてコンテキストインデックスctxIdxを導出し、その導出結果ctxIdxを導出方法制御部124xに供給する。
ctxIdx = sigCtxOffsetR2・・・(eq.A2-3)
なお、上記式(eq.A2-3)において、sigCtxOffsetR2は、部分領域R2に属する周波数成分に関するコンテキストインデックスの開始点を表す所定の定数である。
処理対象のTUサイズが所定のサイズ以下である場合には、位置コンテキスト導出部124bは、対象周波数成分の位置(xC,yC)に基づいて、図60に示すコンテキストインデックスの割り当て方法を用いる。以下、図60に示すコンテキストインデックス割り当て方法について、図100を用いて参照して詳細を説明する。
図100(a)は、4×4TU及び8×8TUの各係数位置と相対コンテキストインデックス(サブ領域の識別番号)の対応表CTX_GRP_TBL [X][Y]を示す。
(テーブルを用いたコンテキストインデックス導出)
位置コンテキスト導出部124bは、割り当てられた相対コンテキストインデックスの値ctxGrpIdxと、TUサイズ毎の所定のオフセット値baseCtxによってコンテキストインデックスctxIdxを導出する。なお、8×8TUの場合は、対象周波数成分の位置(xC,yC)が属する2×2サブブロックの位置(xC>>1, yC>>1)に置き換えて解釈するものとする。すなわち、
X = log2TrafoWidth==2 ? xC : xC>>1
Y = log2TrafoHeigt==2 ? yC : yC>>1
ctxGrpIdx = CTX_GRP_TBL [ X ][ Y ] ・・・(eq.A2-4)
ctxIdx = ctxGrpIdx + baseCtx ・・・(eq.A2-5)
ここで、変数baseCtxは、各TUのコンテキストインデックスの開始点を表わす。
(論理的なコンテキストインデックス導出)
なお、相対コンテキストインデックスの値ctxGrpIdxの導出は、図100(a)に示す係数位置(X,Y)と相対コンテキストインデックスの対応表(ルックアップテーブルCTX_GRP_TBL[X][Y])を用いて導出する式(eq.A2-4)に限定されされない、以下のような論理的な導出方法を用いても良い。この場合、位置コンテキスト導出部124bは、係数位置(X,Y)の以下に示す各ビットx0,x1,y0,y1の値を用いて導出する。
x0 = (X & 1 ) ・・・ Xの下位1ビット(下位1ビット目)
x1 = (X & 2 )>>1 ・・・ Xの上位1ビット(下位2ビット目)
y0 = (Y & 1 ) ・・・ Yの下位1ビット(下位1ビット目)
y1 = (Y & 2 )>>1 ・・・ Yの上位1ビット(下位2ビット目)
以下、x0,x1,y0,y1による相対コンテキストインデックスctxGrpIdxの導出方法を説明する。
図100(b)は、図100(a)に示す係数位置と相対コンテキストインデックスの対応表CTX_GRP_TBL[X][Y]の各値をビットで表現したのものである。なお、係数位置(X,Y)は2ビットで表わし、相対コンテキストインデックスの値は3ビットで表現している。ここで、相対コンテキストインデックスの値ctxGrpIdxの下位1ビット目(上位3ビット目)をctxGrpIdx0、下位2ビット目(上位2ビット目)をctxGrpIdx1、下位3ビット目(上位1ビット目)をctxGrpIdx2とする。
図100(b)に注目すると、相対コンテキストインデックスの値ctxGrpIdxの上位2ビットに関して、次のことが明らかである。
・相対コンテキストインデックスの値ctxGrpIdxの上位1ビット目(下位3ビット目:ctxGrpIdx2)とYの上位1ビット(y1)の値が等しい。すなわち、
ctxGrpIdx2 = y1 ・・・(eq.A2-6)
・相対コンテキストインデックスの値ctxGrpIdxの上位2ビット目(下位2ビット目:ctxGrpIdx1)とXの上位1ビット(x1)の値が等しい。すなわち、
ctxGrpIdx1 = x1 ・・・(eq.A2-7)
また、図100(c)は、図100(b)に示す係数位置と相対コンテキストインデックスの対応表CTX_GRP_TBL[X][Y]の各値の下位1ビットのみを表わしたものである。図100(c)に注目すると、相対コンテキストインデックスの値ctxGrpIdxの下位1ビット目(ctxGrpIdx0)は、係数位置(X,Y)の各ビットx0,x1,y0,y1を用いて、x1の否定とy0との論理積の値と、x0とy1の否定との論理積の値、との論理和によって表わすことができる。すなわち、
ctxGrpIdx0 = ( !x1 & y0 ) | ( x0 & !y1 ) ・・・(eq.A2-8)
ここで、演算子‘ !’は、否定を表わし、演算子 ‘ & ’は、ビット単位の論理積を表わし、演算子‘ | ’は、ビット単位の論理和を表わす(以下、同様)。
よって、図100(a)に示す係数位置と対応する相対コンテキストインデックスの各値ctxGrpIdxは、上記式(eq.A2-6), (eq.A2-7), (eq.A2-8)を用いて、以下のビット演算により導出することができる。
ctxGrpIdx = ( ctxGrpIdx2<<2 ) | ( ctxGrpIdx1 <<1 ) | ctxGrpIdx0 ・・・ (eq.A2-8)
なお、図100(a)に示す係数位置と相対コンテキストインデックスの対応表に示す各相対コンテキストインデックスの値の設定は、図100(a)に限定されない。例えば、図101に示すように、x1, y1, zの値を設定するビット位置を変更した6パターンの設定が可能である。なお、図101中のzを
z =( !x1 & y0 ) | ( x0 & !y1 ) ・・・(eq.A2-9)
とすれば、図100(a)に示す係数位置と対応する相対コンテキストインデックスの各値は、図101に示すパターン0により導出される。
なお、式(eq.A2-9)に示すzの代わりに、式(eq.A2-10)に示す論理演算により算出されるzを用いてもよい。その場合、図101のパターン0に該当する係数位置(X,Y)に対応する相対コンテキストインデックスの各値は、図102(a)に示すようになる。
z = ( ( x0 ^ x1 ) & !y1 ) | ( ( y0 ^ y1 ) & !x1 ) ・・・(eq.A2-10)
ここで、演算子‘ ^ ’はビット単位の排他論理和を表わす(以下、同様)。
また、式(eq.A2-9)に示すzの代わりに、式(eq.A2-11)に示す論理演算により算出されるzを用いてもよい。その場合、図101のパターン0に該当する係数(X、Y)に対応する相対コンテキストインデックスの各値は、図102(b)に示すようになる。
z = ( !( x0 | x1 | y0 | y1 ) ) | ( (y0 & y1) & !x1 ) | ( (x0 & x1) & !y1 )
・・・(eq.A2-11)
また、式(eq.A2-9)に示すzの代わりに、式(eq.A2-12)に示す論理演算により算出されるzを用いてもよい。その場合、図101のパターン0に該当する係数(X、Y)に対応するコンテキストグループの各値は、図102(c)に示すようになる。
z = ( !( x0 | x1 | y0 | y1 ) ) | ( (!y0 & y1) & !x1 ) | ( (!x0 & x1) & !y1 )
・・・(eq.A2-12)
以上のように、本処理では、図60、図100に示すコンテキストインデックス導出方法により、4×4成分と8×8成分および輝度と色差のサブグループへの分類処理を共通にすることで、符号化効率を維持したまま、コンテキストインデックス導出処理を簡略化することができる。
また、以上、図60、図100に示すコンテキストインデックス導出方法では、処理対象の周波数成分の位置を表わすxCとyCの各ビットの値を用いたビット演算によって、周波数領域を複数のサブ領域(相対コンテキストインデックス)に容易に分割すると共に、各サブ領域に対応するコンテキストインデックスを導出することができる。そのため、コンテキストインデックスの導出処理の簡略化を図ることができる。図60、図100に示すコンテキストインデックス導出方法では、bit0、bit1、bit2の3ビットで表現できる範囲であること(値が0から6までの範囲であること)、および、DCに隣接する最も低い次数の3個のAC成分を1つのコンテキストインデックスに割り当てることにより、後述する図85の導出方法に比べ、ビット演算のステップ数が小さい特徴を有する。また、3ビットという少ないビットで表現できることは、ハードウェアで実現する上で実装を容易にすることができる。
なお、図60ではなく、図70(a)(b)のコンテキストインデックス導出方法を用いても良い。この場合、8×8TUのDC成分に関しては、上記手順によらず個別の相対コンテキストインデックスを割りつける。例えば、式(eq.A2-8)の代わりに、次のようにコンテキストインデックスを導出してもよい。
ctxGrpIdx = (xC+yC==0 && log2TrafoWidth==3 && log2TrafoHeight==3) ? 7 :
( ( ctxGrpIdx2<<2 ) | ( ctxGrpIdx1 <<1 ) | ctxGrpIdx0 )
・・・(eq.A2-13)
ctxIdx = ctxGrpIdx + baseCtx ・・・ (eq.A2-14)
本処理は、図60、図100のコンテキストインデックス導出方法に比べステップ数が大きいが、符号化効率がより高いという特徴を有する。また、DCを別にしても、0〜7の3ビットの範囲に収まる点もハードウェアで実現する上で実装を容易にすることができる。
以上のように、本処理では、図70に示すコンテキストインデックス導出方法により、DC成分を除き、4×4成分と8×8成分および輝度と色差のサブグループへの分類処理を共通にすることで、符号化効率を維持したまま、コンテキストインデックス導出処理を簡略化することができる。
以上のようにすれば、図60、図70(a)(b)に示すように周波数領域を複数のサブ領域に分割すると共に、各サブ領域に対応するコンテキストインデックスを導出することが可能である。
なお、図85に示すコンテキストインデックス導出処理の場合には、以下の演算により導出することができる。
ctxGrpIdx = (bit3<<2) | (bit2<<2) | (bit1<<1) | bit0
bit3 = (x1 & y1)
bit2 = ( x1 & !y1 ) | (!x1 & y1)
bit1 = ( !x1 & y1 ) | (!x1 & !y1 & y0 )
bit0 = (x0 & !y1) | (y0 & y1 & !x1)
以上のように、本処理では、図70に示すコンテキストインデックス導出方法により、4×4成分と8×8成分および輝度と色差のサブグループへの分類処理を共通にすることで、符号化効率を維持したまま、コンテキストインデックス導出処理を簡略化することができる。
本導出方法は、bit0、bit1、bit2、bit3の4ビットで表現できる範囲であること(値が0から8までの範囲であること)から、図60、図100のコンテキストインデックス導出方法に比べ、1ビット多くのビットを確定させる必要が有りステップ数が大きいが、符号化効率がより高いという特徴を有する。なお、図30(c)の比較例におけるコンテキストインデックス導出方法は、同じ4ビットの範囲であるが、2と3の位置が対象でないこと、6と8の位置が対象でないこと、10(DC)と7の位置が特殊であること、から、論理演算において、図85の導出方法よりも多くのステップ数を必要とし極めて複雑である。
(周辺参照コンテキスト導出部124c)
周辺参照コンテキスト導出部124cは、復号対象の周波数成分に対するコンテキストインデックスctxIdxを、当該周波数成分の周辺の周波数成分について復号済みの非0変換係数の数cntに基づいて導出する。より具体的には、周辺参照コンテキスト導出部124cは、対象周波数成分の位置(xC,yC)、もしくは、対象周波数成分が属するサブブロックの位置(xCG,yCG)が次の条件を満たす場合、変換係数の位置に応じて異なる参照位置(テンプレート)を用いて復号済みの非0変換係数の数cntを導出する。
(1)xC+yC<THLoを満たす場合・・・図98(a)に示す部分領域R0
(2)xC+yC>=THlo、かつ、xCG+yCG<THhiを満たす場合・・・図98(a)に示す部分領域R1
ここで、閾値THloは、上述の式(eq.A2-1)、THhiは、上述の式(eq.A2-2)によって設定すればよいが、これに限定されない。
上記の条件下において、周辺参照コンテキスト導出部124cは、変換係数の位置に応じて異なる参照位置(テンプレート)を用いて復号済みの非0変換係数の数cntを導出する。また、周辺参照コンテキスト導出部124cは、このようにして導出した復号済みの非0変換係数の数cntに基づいてコンテキストインデックスctxIdxを導出する。
以下、サブブロック内スキャンが、“斜め方向スキャン”である場合を例に説明する。
[サブブロック内スキャンが斜め方向スキャンである場合(図99(d))]
サブブロック内スキャンが斜め方向スキャンである場合、周辺参照コンテキスト導出部124cは、以下のとおり、変換係数の位置に応じて異なる参照位置(テンプレート)を用いて復号済みの非0変換係数の数cntを導出する。図99(a)は、サブブロック内スキャンが斜め方向スキャンである場合において、サブブロック内の周波数成分上の位置と、選択するテンプレートの関係を示す図である。4×4成分のサブブロックにおいて、位置に示す表記が(b)の場合には、図99(b)に示すテンプレートを用い、表記が(c)の場合には、図99(c)に示すテンプレートを用いる。図99(b)(c)はテンプレートの形状を示す。すなわち、参照周波数成分(例えば、c1、c2、c3、c4、c5)と対象周波数成分xとの相対位置を示す。図99(d)は、4×4サブブロックにおける斜め方向スキャンのスキャン順(逆スキャン順)を表わす図である。
処理は、変換係数の位置(xC, yC)が以下の式(eq.A3)を満たす場合、すなわち、変換係数の位置がサブブロックの左上である、もしくは、変換係数の位置がサブブロックの右下の一つ上の場合と、それ以外の場合とで異なる。
((xC &3)==0 && (yC &3)==0) || ((xC &3)==3 && (yC &3)==2) (eq.A3)
なお、上記式(eq.A3)において、演算子‘&’はビット単位の論理和を取る演算子であり、‘&&’は、論理積を示す演算子であり、‘||’は、論理和を示す演算子である(以下において、同様)。
また、式(eq.A3)は式(eq.A3’)によっても表現することができる。
((xC %4)==0 && (yC %4)==0) || ((xC %4)==3 && (yC %4)==2) (eq.A3’)
なお、上記式(eq.A3’)において、“%”は、剰余を求める演算子である(以下において、同様)。
(非0変換係数の数cntの導出)
(式(eq.A3)を満たす場合)
変換係数の位置(xC, yC)が、式(eq.A3)を満たす場合、非0変換係数のカウント数cntを、図99(c)に示す参照周波数成分(c1、c2、c4、c5)を用いて、以下の式(eq.A4)によって導出する。
cnt = (c1!=0) + (c2!=0) + (c4!=0) + (c5!=0) (eq.A4)
ここで、式(eq.A4)における各項は、()内の比較が真である場合に1をとり、()内の比較が偽である場合に0をとるものとする。
(式(eq.A3)を満たさない場合)
変換係数の位置(xC, yC)が、式(eq.A3)を満たさない場合は、図99(b)に示す参照周波数成分c1〜c5を用いて、以下の式(eq.A5)によって、非0変換係数の数cntを算出する。
cnt= (c1!=0) + (c2!=0) + (c3!=0) + (c4!=0) + (c5!=0) (eq.A5)
(コンテキストインデックスctxIdxの導出)
続いて、周辺参照コンテキスト導出部124cは、変換係数が属する部分領域R0、または、R1に応じてコンテキストインデックスの開始点を変更して、以下の式(eq.A6)を用いてコンテキストインデックスctxIdxを導出し、その導出結果ctxIdxを導出方法制御部124xに供給する。
ctxIdx = sigCtxOffsetRX + Min(2, ctxCnt) (eq.A6)
ここで、ctxCntは、
ctxCnt = ( cnt + 1 ) >> 1
によって定まる。
なお、式(eq.A6)において、変数sigCtxOffsetRXは、変換係数が属する部分領域R0、またはR1に応じて定まる所定のコンテキストインデックスの開始点を表わす。部分領域R0の場合、変数sigCtxOffsetRX = sigCtxOffsetR0と設定され、部分領域R1の場合は、変数sigCtxOffsetRX = sigCtxOffsetR1と設定される。なお、sigCtxOffsetR0とsigCtxOffsetR1の値はお互いに異なることが好ましい。
式(eq.A4)では、対象とする変換係数の位置の、処理順で直前(処理順が逆スキャン順である場合には、対象とする変換係数の位置の下側)に位置する座標(c3)の変換係数を参照しないようにしている。このような処理は、ある位置の係数有無フラグの復号に用いるコンテキスト導出を、直前の係数有無フラグの値を参照せずに行うことができるため、コンテキスト導出処理と復号処理とを並列に処理することができる。
(係数有無フラグ設定部124e)
係数有無フラグ設定部124eは、ビット復号部132から供給される各Binを解釈し、シンタックスsignificant_coeff_flag[xC][yC]を設定する。設定されたシンタックスsignificant_coeff_flag[xC][yC]は、復号係数記憶部126に供給される。
係数有無フラグ設定部124eは、対象周波数領域がサブブロックに分割されている場合、対象サブブロックに割り付けられたシンタックスsignificant_coeff_group_flag[xCG][yCG]を参照し、significant_coeff_group_flag[xCG][yCG]の値が0である場合には、当該対象サブブロックに含まれる全ての周波数成分についてのsignificant_coeff_flag[xC][yC]を0に設定する。
(係数有無フラグ記憶部124d)
係数有無フラグ記憶部124dには、シンタックスsignificant_coeff_flag[xC][yC]の各値が格納される。係数有無フラグ記憶部124dに格納されたシンタックスsignificant_coeff_flag[xC][yC]の各値は、周辺参照コンテキスト導出部124cによって参照される。なお、各周波数成分の位置(xC、yC)に非0の変換係数が存在するか否かは係数有無フラグ専用の記憶部を用いずとも、復号した変換係数値を参照することでも参照できるため、係数有無フラグ記憶部124dを設けず、代わりに、復号係数記憶部126を用いることもできる。
<コンテキスト導出部124zの動作>
図103は、コンテキスト導出部124zを構成する導出方法制御部124x、位置コンテキスト導出部124bと周辺参照コンテキスト導出部124cの動作を示すフローチャートである。
(ステップSA101)
導出方法制御部124xは、TUサイズが所定サイズより小さいか否かを判定する。判定で例えば以下の式を用いる。
width + height < THSize
なお、閾値THSizeとしては例えば20が用いられる。閾値THsizeに20を用いた場合には、4×4TU、及び8×8TUが所定サイズより小さいと判定される。16×4TU、4×16TU、16×16TU、32×4TU、4×32TU、32×32TUは所定サイズ以上であると判定されることになる。なお、閾値THSizeは0としてもよい。この場合、4×4TU〜32×32TUが所定サイズ以上であると判定されることになる。
(ステップSA102)
処理対象のTUサイズが所定サイズ以上の場合(ステップSA101でNo)、導出方法制御部124xは、対象変換係数が含まれるサブブロック位置(xCG,yCG)が高周波数成分であるか否か(例えば、図98(a)に示す部分領域R2であるか否か)を判定する。(ステップSA103)
対象変換係数が含まれるサブブロック位置(xCG,yCG)が高周波数成分でない場合(ステップSA102においてNo)、導出方法制御部124xは、対象変換係数の位置(xC,yC)が低周波数成分であるか否か(例えば、図98(a)に示す部分領域R0であるか否か)を判定する。
(ステップSA104)
対象変換係数の位置(xC,yC)が低周波数成分でない場合(ステップSA103においてNo)、導出方法制御部124xは、対象変換係数の位置(xC,yC)が中周波数成分であると判定し、変数sigCtxOffsetRXをsigCtxOffsetR1に設定する。続いて、ステップSA106へ遷移する。
(ステップSA105)
対象変換係数の位置(xC,yC)が低周波数成分である場合(ステップSA103においてYes)、導出方法制御部124xは、変数sigCtxOffsetRXへsigCtxOffsetR0を設定する。続いて、ステップSA106へ遷移する。
(ステップSA106)
導出方法制御部124xはコンテキスト導出手段として、周辺参照コンテキスト導出部124cを選択し、選択された周辺参照コンテキスト導出部124cによって、対象変換係数のコンテキストインデックスが導出される。
(ステップSA107)
処理対象のTUサイズが所定サイズ未満である場合(ステップSA101においてYes)、もしくは、対象変換係数を含むサブブロックが高周波数成分である場合(ステップSB103においてYes)、導出方法制御部124xは、コンテキスト導出手段として、位置コンテキスト導出部124bを選択し、選択された位置コンテキスト導出部124bによって、対象変換係数のコンテキストインデックスが導出される。
以上、係数有無フラグ復号部124の第3の変形例によれば、処理対象のTUサイズが所定のサイズ以下である場合には、処理対象の周波数成分の位置を表わすxCとyCの各ビットの値を用いたビット演算によって、周波数領域を複数のサブ領域(相対コンテキストインデックス)に分割すると共に、各サブ領域に対応するコンテキストインデックスを導出することができる。そのため、コンテキストインデックスの導出処理の簡略化、及びコンテキストインデックス導出に係るメモリサイズの削減を図ることができる。
また、処理対象のTUサイズが所定サイズより大きい場合に、処理対象の係数有無フラグが高周波数領域に位置する場合は、位置コンテキスト導出部により処理対象の係数有無フラグに関するコンテキストインデックスを導出し、処理対象の係数有無フラグが低周波数領域、及び中周波数領域に位置する場合は、周辺参照コンテキスト導出部により処理対象の係数有無フラグに関するコンテキストインデックスを導出する。このため、従来に比べて、低周波数領域内に含まれる周波数成分に対して、非ゼロ係数の発生頻度の偏りを考慮してコンテキストインデックスを導出することができ、係数有無フラグの符号量を削減し、復号に係る処理量を削減する効果を奏する。
また、係数位置に基づいて、対象とする変換係数の位置は、処理順(逆スキャン順)で直前に位置する座標の変換係数を参照しないようにテンプレートを選択している。このような処理は、ある位置の係数有無フラグの復号に用いるコンテキスト導出を、直前の係数有無フラグの値を参照せずに行うことができるため、コンテキスト導出処理と復号処理とを並列に処理することができる効果を奏する。
<変換係数復号部120による処理の流れ>
以下では、変換係数復号部120による変換係数復号処理の流れについて、図44〜51を参照して説明する。
(周波数領域のサイズが所定のサイズ以下である場合)
図44は、周波数領域のサイズが所定のサイズ以下(例えば、4×4成分、8×8成分)である場合の変換係数復号部120による変換係数復号処理を示す擬似コードである。
図45は、周波数領域のサイズが所定のサイズ以下である場合の変換係数復号部120による変換係数復号処理の流れを示すフローチャートである。
(ステップS11)
まず、変換係数復号部120の備える係数復号制御部123は、スキャンタイプScanTypeを選択する。
(ステップS12)
続いて、変換係数復号部120の備えるラスト係数位置復号部121は、順スキャンに沿って最後の変換係数の位置を示すシンタックスlast_significant_coeff_x及びlast_significant_coeff_yを復号する。
(ステップS13)
続いて、係数復号制御部123は、サブグループを単位とするループを開始する。ここで、サブグループとは、対象周波数領域を分割して得られる1または複数の領域のことであり、各サブグループは、例えば、16個の周波数成分によって構成される。
(ステップS14)
続いて、変換係数復号部120の備える係数有無フラグ復号部124は、対象サブグループ内の各非ゼロ変換係数有無フラグsignificant_coeff_flagを復号する。
(ステップS15)
続いて、変換係数復号部120の備える係数値復号部125は、対象サブグループ内の非0変換係数の符号及び大きさを復号する。これは、各シンタックスcoeff_abs_level_greateer1_flag、coeff_abs_level_greateer2_flag、coeff_sign_flag、coeff_abs_level_minus3を復号することによって行われる。
(ステップS16)
本ステップは、サブブロックを単位とするループの終端である。
図46は、スキャンタイプを選択する処理(ステップS11)をより具体的に説明するためのフローチャートである。
(ステップS111)
まず、変換係数復号部120の備える係数復号制御部123は、予測方式情報PredModeが、イントラ予測方式MODE_INTRAを示しているか否かを判別する。
(ステップS112)
予測方式がイントラ予測方式であるとき(ステップS111でYes)、変換係数復号部120の備える係数復号制御部123は、イントラ予測モード(予測方向)及び対象のTUサイズ(周波数領域のサイズ)に基づいて、スキャンタイプを設定する。具体的なスキャンタイプの設定処理については、すでに述べたため、ここでは説明を省略する。
一方で、予測方式がイントラ予測方式でないとき(ステップS111でNo)、変換係数復号部120の備える係数復号制御部123は、スキャンタイプを斜め方向スキャンに設定する。
図47は、非ゼロ変換係数有無フラグsignificant_coeff_flagを復号する処理(ステップS14)をより具体的に説明するためのフローチャートである。
(ステップS141)
まず、変換係数復号部120の備える係数有無フラグ復号部124は、ラスト係数のあるサブグループの位置を取得する。
(ステップS142)
続いて、係数有無フラグ復号部124は、対象周波数領域に含まれるsignificant_coeff_flagの値を0に初期化する。
(ステップS143)
続いて、係数有無フラグ復号部124は、サブグループを単位とするループを開始する。ここで、当該ループは、ラスト係数のあるサブグループから始まるループであって、逆スキャン順にサブグループをスキャンするループである。
(ステップS144)
続いて、係数有無フラグ復号部124は、対象サブグループ内のループを開始する。当該ループは、周波数成分を単位とするループである。
(ステップS145)
続いて、係数有無フラグ復号部124は、変換係数の位置を取得する。
(ステップS146)
続いて、係数有無フラグ復号部124は、取得した変換係数の位置がラスト位置であるか否かを判別する。
(ステップS147)
取得した変換係数の位置がラスト位置でないとき(ステップS146でNo)、係数有無フラグ復号部124は、変換係数有無フラグsignificant_coeff_flagを復号する。
(ステップS148)
当該ステップは、サブグループ内のループの終端である。
(ステップS149)
続いて、係数有無フラグ復号部124は、サブグループ内の各非0変換係数の符号及び大きさを復号する。
(ステップS150)
当該ステップは、サブグループのループの終端である。
(周波数領域のサイズが所定のサイズより大きい場合)
図48は、周波数領域のサイズが所定のサイズより大きい(例えば、16×16成分、32×32成分)場合の変換係数復号部120による変換係数復号処理を示す擬似コードである。
図49は、周波数領域のサイズが所定のサイズより大きい場合の変換係数復号部120による変換係数復号処理の流れを示すフローチャートである。
(ステップS21)
まず、変換係数復号部120の備える係数復号制御部123は、スキャンタイプScanTypeを選択する。これは上述のステップS11と同様の処理である。
(ステップS22)
続いて、変換係数復号部120の備えるラスト係数位置復号部121は、順スキャンに沿って最後の変換係数の位置を示すシンタックスlast_significant_coeff_x及びlast_significant_coeff_yを復号する。
(ステップS23)
続いて、係数復号制御部123は、サブブロックを単位とするループを開始する。
(ステップS24)
続いて、変換係数復号部120の備えるサブブロック係数有無フラグ復号部127は、サブブロック係数有無フラグsignificant_coeffgroup_flagを復号する。
(ステップS25)
当該ループは、サブブロックを単位とするループの終端である。
(ステップS26)
続いて、係数復号制御部123は、サブブロックを単位とするループを開始する。
(ステップS27)
続いて、変換係数復号部120の備える係数有無フラグ復号部124は、対象サブブロック内の各非ゼロ変換係数有無フラグsignificant_coeff_flagを復号する。
(ステップS28)
続いて、変換係数復号部120の備える係数値復号部125は、対象サブグループ内の非0変換係数の符号及び大きさを復号する。これは、各シンタックスcoeff_abs_level_greateer1_flag、coeff_abs_level_greateer2_flag、coeff_sign_flag、coeff_abs_level_minus3を復号することによって行われる。
(ステップS29)
本ステップは、サブブロックを単位とするループの終端である。(ステップS26のサブブロックを単位とするループの終端)
図50は、サブブロック係数有無フラグを復号する処理(ステップS24)をより具体的に説明するためのフローチャートである。
(ステップS241)
まず、変換係数復号部120の備える係数有無フラグ復号部124は、ラスト係数のあるサブブロックの位置を取得する。
(ステップS242)
続いて、係数有無フラグ復号部124は、対象周波数領域に含まれるサブブロック係数有無フラグsignificant_coeffgroup_flagの値に初期化する。この初期化処理は、DC係数を含むサブブロックのサブブロック係数有無フラグと、ラスト係数を含むサブブロックのサブブロック係数有無フラグとを1に設定し、その他のサブブロック係数有無フラグを0に設定することによって行われる。
(ステップS243)
続いて、係数有無フラグ復号部124は、サブブロックを単位とするループを開始する。
(ステップS244)
続いて、係数有無フラグ復号部124は、サブブロックの位置を取得する。
(ステップS245)
続いて、係数有無フラグ復号部124は、対象サブブロックに隣接する復号済みのサブブロックに非0変換係数が存在するか否かを判別する。
(ステップS246)
ステップS245でYesの場合、対象サブブロックのサブブロック係数有無フラグを1に設定する。
ここで、ステップS245及びステップS246による処理は、以下に示すように、サブブロックスキャン方向に依存する。
・サブブロックスキャンが垂直方向優先スキャンである場合、図20(a)に示したように、サブブロック(xCG、yCG+1)に非0変換係数が存在し、サブブロック(xCG+1、yCG)に非0変換係数が存在しない場合に、対象サブブロック(xCG、yCG)のサブブロック係数有無フラグを1に設定する。
・サブブロックスキャンが水平方向優先スキャンである場合、図20(b)に示したように、サブブロック(xCG+1、yCG)に非0変換係数が存在し、サブブロック(xCG、yCG+1)に非0変換係数が存在しない場合に、対象サブブロック(xCG、yCG)のサブブロック係数有無フラグを1に設定する。
・サブブロックスキャンが斜め方向である場合、図20(c)に示したように、サブブロック(xCG+1、yCG)及びサブブロック(xCG、yCG+1)の双方のサブブロックに非0変換係数が存在する場合に、対象サブブロック(xCG、yCG)のサブブロック係数有無フラグを1に設定する。
(ステップS247)
続いて、係数有無フラグ復号部124は、対象サブブロックがラスト係数を含むサブブロックであるか否かを判別する。
(ステップS248)
対象サブブロックがラスト係数を含むサブブロックでないとき(ステップS247でNo)、係数有無フラグ復号部124は、サブブロック係数有無フラグsignificant_coeffgroup_flagを復号する。
(ステップS249)
当該ステップは、サブブロックのループの終端である。
図51は、サブブロック内の各非ゼロ変換係数有無フラグsignificant_coeff_flagを復号する処理(図49のステップS27)をより具体的に説明するためのフローチャートである。
(ステップS271)
まず、変換係数復号部120の備える係数有無フラグ復号部124は、ラスト係数のあるサブブロックの位置を取得する。
(ステップS272)
続いて、係数有無フラグ復号部124は、対象周波数領域に含まれるsignificant_coeff_flagの値を0に初期化する。
(ステップS273)
続いて、係数有無フラグ復号部124は、サブブロックを単位とするループを開始する。ここで、当該ループは、ラスト係数のあるサブブロックから始まるループであって、サブブロック逆スキャン順にサブブロックをスキャンするループである。
(ステップS274)
続いて、係数有無フラグ復号部124は、対象サブブロック内のループを開始する。当該ループは、周波数成分を単位とするループである。
(ステップS275)
続いて、係数有無フラグ復号部124は、変換係数の位置を取得する。
(ステップS276)
続いて、係数有無フラグ復号部124は、対象サブブロックに非0変換係数が存在するか否かを判別する。
(ステップS277)
対象サブブロックに非0変換係数が存在する場合(ステップS276でYes)、係数有無フラグ復号部124は、取得した変換係数の位置がラスト位置であるか否かを判別する。
(ステップS278)
取得した変換係数の位置がラスト位置でないとき(ステップS277でNo)、係数有無フラグ復号部124は、変換係数有無フラグsignificant_coeff_flagを復号する。
(ステップS279)
当該ステップは、サブブロック内のループの終端である。
(ステップS280)
続いて、係数有無フラグ復号部124は、サブブロック内の各非0変換係数の符号及び大きさを復号する。
(ステップS281)
当該ステップは、サブブロックのループの終端である。
図48〜図50では、サブブロック係数有無フラグの復号と、非ゼロ係数有無フラグ、及び各非ゼロ係数の符号と大きさの復号とをサブブロックを単位とする別のループで実施する例に関して説明したが、これに限定されず、図75に示すフローチャートのように、サブブロックを単位とする同一のループ内で実施してもよい。
以下では、図75を用いて、周波数領域のサイズが所定のサイズより大きい場合の変換係数復号部120による変換係数復号処理の流れを説明する。
(ステップS31)
まず、変換係数復号部120の備える係数復号制御部123は、スキャンタイプScanTypeを選択する。これは上述のステップS11と同様の処理である。
(ステップS32)
続いて、変換係数復号部120の備えるラスト係数位置復号部121は、順スキャンに沿って最後の変換係数の位置を示すシンタックスlast_significant_coeff_x及びlast_significant_coeff_yを復号する。また、変換係数復号部120の備える係数有無フラグ復号部124は、ラスト係数のあるサブブロックの位置を取得する。
(ステップS33)
続いて、係数復号制御部123は、サブブロックを単位とするループを開始する。なお、ループの開始時点に、係数有無フラグ復号部124は、対象周波数領域に含まれるサブブロック係数有無フラグsignificant_coeffgroup_flagの値に初期化する。この初期化処理は、DC係数を含むサブブロックのサブブロック係数有無フラグと、ラスト係数を含むサブブロックのサブブロック係数有無フラグとを1に設定し、その他のサブブロック係数有無フラグを0に設定することによって行われる。
(ステップS34)
続いて、変換係数復号部120の備えるサブブロック係数有無フラグ復号部127は、サブブロック係数有無フラグsignificant_coeffgroup_flagを復号する。
(ステップS35)
続いて、変換係数復号部120の備える係数有無フラグ復号部124は、対象サブブロック内の各非ゼロ変換係数有無フラグsignificant_coeff_flagを復号する。
(ステップS36)
続いて、変換係数復号部120の備える係数値復号部125は、対象サブグループ内の非0変換係数の符号及び大きさを復号する。これは、各シンタックスcoeff_abs_level_greateer1_flag、coeff_abs_level_greateer2_flag、coeff_sign_flag、coeff_abs_level_minus3を復号することによって行われる。
(ステップS37)
本ステップは、サブブロックを単位とするループの終端である。
図76は、サブブロック係数有無フラグを復号する処理(ステップS34)をより具体的に説明するためのフローチャートである。
(ステップS341)
続いて、係数有無フラグ復号部124は、サブブロックの位置を取得する。
(ステップS342)
続いて、係数有無フラグ復号部124は、対象サブブロックに隣接する復号済みのサブブロックに非0変換係数が存在するか否かを判別する。
(ステップS343)
ステップS342でYesの場合、対象サブブロックのサブブロック係数有無フラグを1に設定する。
ここで、ステップS342及びステップS343による処理は、以下に示すように、サブブロックスキャン方向に依存する。
・サブブロックスキャンが垂直方向優先スキャンである場合、図20(a)に示したように、サブブロック(xCG、yCG+1)に非0変換係数が存在し、サブブロック(xCG+1、yCG)に非0変換係数が存在しない場合に、対象サブブロック(xCG、yCG)のサブブロック係数有無フラグを1に設定する。
・サブブロックスキャンが水平方向優先スキャンである場合、図20(b)に示したように、サブブロック(xCG+1、yCG)に非0変換係数が存在し、サブブロック(xCG、yCG+1)に非0変換係数が存在しない場合に、対象サブブロック(xCG、yCG)のサブブロック係数有無フラグを1に設定する。
・サブブロックスキャンが斜め方向である場合、図20(c)に示したように、サブブロック(xCG+1、yCG)及びサブブロック(xCG、yCG+1)の双方のサブブロックに非0変換係数が存在する場合に、対象サブブロック(xCG、yCG)のサブブロック係数有無フラグを1に設定する。
(ステップS344)
続いて、係数有無フラグ復号部124は、対象サブブロックがラスト係数を含むサブブロックであるか否かを判別する。
(ステップS345)
対象サブブロックがラスト係数を含むサブブロックでないとき(ステップS344でNo)、係数有無フラグ復号部124は、サブブロック係数有無フラグsignificant_coeffgroup_flagを復号する。
図77は、サブブロック内の各サブブロック内の各非ゼロ変換係数有無フラグsignificant_coeff_flagを復号する処理(図75のステップS35)をより具体的に説明するためのフローチャートである。
(ステップS351)
まず、係数有無フラグ復号部124は、対象サブブロック内のループを開始する。当該ループは、周波数成分を単位とするループである。なお、ループの開始時点に、係数有無フラグ復号部124は、対象周波数領域に含まれるsignificant_coeff_flagの値を0に初期化する。
(ステップS352)
続いて、係数有無フラグ復号部124は、変換係数の位置を取得する。
(ステップS353)
続いて、係数有無フラグ復号部124は、対象サブブロックに非0変換係数が存在するか否かを判別する。
(ステップS354)
対象サブブロックに非0変換係数が存在する場合(ステップS353でYes)、係数有無フラグ復号部124は、取得した変換係数の位置がラスト位置であるか否かを判別する。
(ステップS355)
取得した変換係数の位置がラスト位置でないとき(ステップS354でNo)、係数有無フラグ復号部124は、変換係数有無フラグsignificant_coeff_flagを復号する。
(ステップS356)
当該ステップは、サブブロック内のループの終端である。
(動画像符号化装置2)
一実施形態に係る動画像符号化装置2の構成について図52〜図56を参照して説明する。動画像符号化装置2は、H.264/MPEG−4 AVC規格に採用されている技術、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている技術、TMuC(Test Model under Consideration)ソフトウェアに採用されている技術、および、その後継コーデックであるHEVC(High-Efficiency Video Coding)にて提案されている技術を実装している符号化装置である。以下では、既に説明した部分と同じ部分については同じ符号を付し、その説明を省略する。
図52は、動画像符号化装置2の構成を示すブロック図である。図52に示すように、動画像符号化装置2は、予測画像生成部21、変換・量子化部22、逆量子化・逆変換部23、加算器24、フレームメモリ25、ループフィルタ26、可変長符号符号化部27、および、減算器28を備えている。また、図52に示すように、予測画像生成部21は、イントラ予測画像生成部21a、動きベクトル検出部21b、インター予測画像生成部21c、予測方式制御部21d、および、動きベクトル冗長性削除部21eを備えている。動画像符号化装置2は、動画像#10(符号化対象画像)を符号化することによって、符号化データ#1を生成する装置である。
(予測画像生成部21)
予測画像生成部21は、処理対象LCUを、1または複数の下位CUに再帰的に分割し、各リーフCUをさらに1または複数のパーティションに分割し、パーティション毎に、画面間予測を用いたインター予測画像Pred_Inter、または、画面内予測を用いたイントラ予測画像Pred_Intraを生成する。生成されたインター予測画像Pred_Interおよびイントラ予測画像Pred_Intraは、予測画像Predとして、加算器24および減算器28に供給される。
なお、予測画像生成部21は、スキップモードの適応されたPUについては、当該PUに属する他のパラメータの符号化を省略する。また、(1)対象LCUにおける下位CUおよびパーティションへの分割の態様、(2)スキップモードを適用するか否か、および、(3)パーティション毎にインター予測画像Pred_Interおよびイントラ予測画像Pred_Intraの何れを生成するか、は、符号化効率を最適化するように決定される。
(イントラ予測画像生成部21a)
イントラ予測画像生成部21aは、画面内予測によって、各パーティションに関する予測画像Pred_Intraを生成する。具体的には、(1)各パーティションついてイントラ予測に用いる予測モードを選択し、(2)選択した予測モードを用いて、復号画像Pから予測画像Pred_Intraを生成する。イントラ予測画像生成部21aは、生成したイントラ予測画像Pred_Intraを、予測方式制御部21dに供給する。
また、イントラ予測画像生成部21aは、対象パーティションの周辺のパーティションに割り付けられた予測モードから対象パーティションに対する推定予測モードを決定し、当該推定予測モードと、対象パーティションについて実際に選択された予測モードとが同じであるか否かを示す推定予測モードフラグを、イントラ予測パラメータPP_Intraの一部として、予測方式制御部21dを介して可変長符号符号化部27に供給し、可変長符号符号化部27は、当該フラグを、符号化データ#1に含める構成とする。
また、イントラ予測画像生成部21aは、対象パーティションについての推定予測モードと、対象パーティションについて実際に選択された予測モードとが異なる場合には、対象パーティションについての予測モードを示す残余予測モードインデックスを、イントラ予測パラメータPP_Intraの一部として、予測方式制御部21dを介して可変長符号符号化部27に供給し、可変長符号符号化部27は当該残余予測モードインデックスを符号化データ#1に含める構成とする。
なお、イントラ予測画像生成部21aは、予測画像Pred_Intraを生成する際に、図11に示した予測モードからより符号化効率が向上する予測モードを選択して適用する。
(動きベクトル検出部21b)
動きベクトル検出部21bは、各パーティションに関する動きベクトルmvを検出する。具体的には、(1)参照画像として利用する適応フィルタ済復号画像P_ALF’を選択し、(2)選択した適応フィルタ済復号画像P_ALF’において対象パーティションを最良近似する領域を探索することによって、対象パーティションに関する動きベクトルmvを検出する。ここで、適応フィルタ済復号画像P_ALF’は、既にフレーム全体の復号が完了した復号済みの復号画像に対して、ループフィルタ26による適応的フィルタ処理を施すことによって得られる画像であり、動きベクトル検出部21bは、適応フィルタ済復号画像P_ALF’を構成する各画素の画素値をフレームメモリ25から読み出すことができる。動きベクトル検出部21bは、検出した動きベクトルmvを、参照画像として利用した適応フィルタ済復号画像P_ALF’を指定する参照画像インデックスRIと共に、インター予測画像生成部21c及び動きベクトル冗長性削除部21eに供給する。
(インター予測画像生成部21c)
インター予測画像生成部21cは、画面間予測によって、各インター予測パーティションに関する動き補償画像mcを生成する。具体的には、動きベクトル検出部21bから供給された動きベクトルmvを用いて、動きベクトル検出部21bから供給された参照画像インデックスRIによって指定される適応フィルタ済復号画像P_ALF’から動き補償画像mcを生成する。動きベクトル検出部21bと同様に、インター予測画像生成部21cは、適応フィルタ済復号画像P_ALF’を構成する各画素の画素値をフレームメモリ25から読み出すことができる。インター予測画像生成部21cは、生成した動き補償画像mc(インター予測画像Pred_Inter)を、動きベクトル検出部21bから供給された参照画像インデックスRIと共に、予測方式制御部21dに供給する。
(予測方式制御部21d)
予測方式制御部21dは、イントラ予測画像Pred_Intra及びインター予測画像Pred_Interを符号化対象画像と比較し、イントラ予測を行うかインター予測を行うかを選択する。イントラ予測を選択した場合、予測方式制御部21dは、イントラ予測画像Pred_Intraを予測画像Predとして加算器24及び減算器28に供給すると共に、イントラ予測画像生成部21aから供給されるイントラ予測パラメータPP_Intraを可変長符号符号化部27に供給する。一方、インター予測を選択した場合、予測方式制御部21dは、インター予測画像Pred_Interを予測画像Predとして加算器24及び減算器28に供給すると共に、参照画像インデックスRI、並びに、後述する動きベクトル冗長性削除部21eから供給された推定動きベクトルインデックスPMVI及び動きベクトル残差MVDをインター予測パラメータPP_Interとして可変長符号符号化部27に供給する。また、予測方式制御部21dは、イントラ予測画像Pred_Intra及びインター予測画像Pred_Interのうち何れの予測画像を選択したのかを示す予測タイプ情報Pred_typeを可変長符号符号化部27に供給する。
(動きベクトル冗長性削除部21e)
動きベクトル冗長性削除部21eは、動きベクトル検出部21bによって検出された動きベクトルmvにおける冗長性を削除する。具体的には、(1)動きベクトルmvの推定に用いる推定方法を選択し、(2)選択した推定方法に従って推定動きベクトルpmvを導出し、(3)動きベクトルmvから推定動きベクトルpmvを減算することにより動きベクトル残差MVDを生成する。動きベクトル冗長性削除部21eは、生成した動きベクトル残差MVDを、選択した推定方法を示す推定動きベクトルインデックスPMVIと共に、予測方式制御部21dに供給する。
(変換・量子化部22)
変換・量子化部22は、(1)符号化対象画像から予測画像Predを減算した予測残差Dに対してブロック(変換単位)毎にDCT変換(Discrete Cosine Transform)等の周波数変換を施し、(2)周波数変換により得られた変換係数Coeff_IQを量子化し、(3)量子化により得られた変換係数Coeffを可変長符号符号化部27及び逆量子化・逆変換部23に供給する。なお、変換・量子化部22は、(1)量子化の際に用いる量子化ステップQPをTU毎に選択し、(2)選択した量子化ステップQPの大きさを示す量子化パラメータ差分Δqpを可変長符号符号化部27に供給し、(3)選択した量子化ステップQPを逆量子化・逆変換部23に供給する。ここで、量子化パラメータ差分Δqpとは、周波数変換及び量子化するTUに関する量子化パラメータqp(例えばQP=2pq/6)の値から、直前に周波数変換及び量子化したTUに関する量子化パラメータqp’の値を減算して得られる差分値のことを指す。
なお、変換・量子化部22によって行われるDCT変換は、例えば、対象ブロックのサイズが8×8画素である場合、水平方向の周波数uおよび垂直方向の周波数vについての量子化前の変換係数をCoeff_IQ(u、v)(0≦u≦7、0≦v≦7)と表すことにすると、例えば、以下の数式(2)によって与えられる。
ここで、D(i、j)(0≦i≦7、0≦j≦7)は、対象ブロックにおける位置(i、j)での予測残差Dを表している。また、C(u)およびC(v)は、以下のように与えられる。
・C(u)=1/√2 (u=0)
・C(u)=1 (u≠0)
・C(v)=1/√2 (v=0)
・C(v)=1 (v≠0)
(逆量子化・逆変換部23)
逆量子化・逆変換部23は、(1)量子化された変換係数Coeffを逆量子化し、(2)逆量子化によって得られた変換係数Coeff_IQに対して逆DCT(Discrete Cosine Transform)変換等の逆周波数変換を施し、(3)逆周波数変換によって得られた予測残差Dを加算器24に供給する。量子化された変換係数Coeffを逆量子化する際には、変換・量子化部22から供給された量子化ステップQPを利用する。なお、逆量子化・逆変換部23から出力される予測残差Dは、変換・量子化部22に入力される予測残差Dに量子化誤差が加わったものであるが、ここでは簡単のために共通の呼称を用いる。逆量子化・逆変換部23のより具体的な動作は、動画像復号装置1の備える逆量子化・逆変換部13とほぼ同様である。
(加算器24)
加算器24は、予測方式制御部21dにて選択された予測画像Predを、逆量子化・逆変換部23にて生成された予測残差Dに加算することによって、(局所)復号画像Pを生成する。加算器24にて生成された(局所)復号画像Pは、ループフィルタ26に供給されると共にフレームメモリ25に格納され、イントラ予測における参照画像として利用される。
(可変長符号符号化部27)
可変長符号符号化部27は、(1)変換・量子化部22から供給された量子化後の変換係数Coeff並びにΔqp、(2)予測方式制御部21dから供給された量子化パラメータPP(インター予測パラメータPP_Inter、および、イントラ予測パラメータPP_Intra)、(3)予測タイプ情報Pred_type、および、(4)ループフィルタ26から供給されたフィルタパラメータFPを可変長符号化することによって、符号化データ#1を生成する。
図53は、可変長符号符号化部27の構成を示すブロック図である。図53に示すように、可変長符号符号化部27は、量子化後の変換係数Coeffを符号化する量子化残差情報符号化部271、予測パラメータPPを符号化する予測パラメータ符号化部272、予測タイプ情報Pred_typeを符号化する予測タイプ情報符号化部273、および、フィルタパラメータFPを符号化するフィルタパラメータ符号化部274を備えている。量子化残差情報符号化部271の具体的な構成については後述するためここでは説明を省略する。
(減算器28)
減算器28は、予測方式制御部21dにて選択された予測画像Predを、符号化対象画像から減算することによって、予測残差Dを生成する。減算器28にて生成された予測残差Dは、変換・量子化部22によって周波数変換及び量子化される。
(ループフィルタ26)
ループフィルタ26は、(1)復号画像Pにおけるブロック境界、またはパーティション境界の周辺の画像の平滑化(デブロック処理)を行うデブロッキングフィルタ(DF:Deblocking Filter)としての機能と、(2)デブロッキングフィルタが作用した画像に対して、フィルタパラメータFPを用いて適応フィルタ処理を行う適応フィルタ(ALF:Adaptive Loop Filter)としての機能を有している。
(量子化残差情報符号化部271)
量子化残差情報符号化部271は、量子化された変換係数Coeff(xC、yC)をコンテキスト適応型2値算術符号化(CABAC:(Context-based Adaptive Binary Arithmetic Coding))することによって、量子化残差情報QDを生成する。生成された量子化残差情報QDに含まれるシンタックスは、図4及び図5に示した各シンタックス、及びsignificant_coeffgroup_flagである。
なお、xCおよびyCは、上述のように、周波数領域における各周波数成分の位置を表すインデックスであり、それぞれ、上述した水平方向周波数uおよび垂直方向周波数vに対応するインデックスである。なお、以下では、量子化された変換係数Coeffを、単に、変換係数Coeffと呼ぶこともある。
(量子化残差情報符号化部271)
図54は、量子化残差情報符号化部271の構成を示すブロック図である。図54に示すように、量子化残差情報符号化部271は、変換係数符号化部220及び算術符号符号化部230を備えている。
(算術符号符号化部230)
算術符号符号化部230は、変換係数符号化部220から供給される各Binをコンテキストを参照して符号化することによって量子化残差情報QDを生成するための構成であり、図54に示すように、コンテキスト記録更新部231及びビット符号化部232を備えている。
(コンテキスト記録更新部231)
コンテキスト記録更新部231は、各コンテキストインデックスctxIdxによって管理されるコンテキスト変数CVを記録及び更新するための構成である。ここで、コンテキスト変数CVには、(1)発生確率が高い優勢シンボルMPS(most probable symbol)と、(2)その優勢シンボルMPSの発生確率を指定する確率状態インデックスpStateIdxとが含まれている。
コンテキスト記録更新部231は、変換係数符号化部220の備える各部から供給されるコンテキストインデックスctxIdx及びビット符号化部232によって符号化されたBinの値を参照することによってコンテキスト変数CVを更新すると共に、更新されたコンテキスト変数CVを次回更新されるまで記録する。なお、優勢シンボルMPSは0か1である。また、優勢シンボルMPSと確率状態インデックスpStateIdxは、ビット符号化部232がBinを1つ符号化する毎に更新される。
また、コンテキストインデックスctxIdxは、各周波数成分についてのコンテキストを直接指定するものであってもよいし、処理対象のTU毎に設定されるコンテキストインデックスのオフセットからの増分値であってもよい(以下同様)。
(ビット符号化部232)
ビット符号化部232は、コンテキスト記録更新部231に記録されているコンテキスト変数CVを参照し、変換係数符号化部220の備える各部から供給される各Binを符号化することによって量子化残差情報QDを生成する。また、符号化したBinの値はコンテキスト記録更新部231にも供給され、コンテキスト変数CVを更新するために参照される。
(変換係数符号化部220)
図54に示すように、変換係数符号化部220は、ラスト位置符号化部221、スキャン順テーブル格納部222、係数符号化制御部223、係数有無フラグ符号化部224、係数値符号化部225、符号化係数記憶部226、サブブロック係数有無フラグ227、及びシンタックス導出部228を備えている。
(シンタックス導出部228)
シンタックス導出部228は、変換係数Coeff(xC、yC)の各値を参照し、対象周波数領域におけるこれらの変換係数を特定するためのシンタックスlast_significant_coeff_x、last_significant_coeff_y、significant_coeff_flag、coeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、coeff_sign_flag、及びcoeff_abs_level_minus3の各値を導出する。導出された各シンタックスは、符号化係数記憶部226に供給される。また、導出されたシンタックスのうちlast_significant_coeff_x、last_significant_coeff_yは、係数符号化制御部223及びラスト位置符号化部221にも供給される。また、導出されたシンタックスのうちsignificant_coeff_flagは、係数有無フラグ符号化部224にも供給される。なお、各シンタックスが示す内容については上述したためここでは説明を省略する。
(ラスト位置符号化部221)
ラスト位置符号化部221は、シンタックス導出部228より供給されるシンタックスlast_significant_coeff_x、last_significant_coeff_yを示すBinを生成する。また、生成した各Binをビット符号化部232に供給する。また、シンタックスlast_significant_coeff_x及びlast_significant_coeff_yのBinを符号化するために参照されるコンテキストを指定するコンテキストインデックスctxIdxを、コンテキスト記録更新部231に供給する。
(スキャン順テーブル格納部222)
スキャン順テーブル格納部222には、処理対象のTU(ブロック)のサイズ、スキャン方向の種別を表すスキャンインデックス、及びスキャン順に沿って付与された周波数成分識別インデックスを引数として、処理対象の周波数成分の周波数領域における位置を与えるテーブルが格納されている。このようなスキャン順テーブルの一例としては、図4及び図5に示したScanOrderが挙げられる。
また、スキャン順テーブル格納部222には、サブブロックのスキャン順を指定するためのサブブロックスキャン順テーブルが格納されている。ここで、サブブロックスキャン順テーブルは、処理対象のTU(ブロック)のサイズとイントラ予測モードの予測モードインデックスとに関連付けられたスキャンインデックスscanIndexによって指定される。
スキャン順テーブル格納部222に格納されているスキャン順テーブル及びサブブロックスキャン順テーブルは、動画像復号装置1の備えるスキャン順テーブル格納部122に格納されているものと同様であるので、ここでは説明を省略する。
(係数符号化制御部223)
係数符号化制御部223は、量子化残差情報符号化部271の備える各部における符号化処理の順序を制御するための構成である。
(ブロックサイズが所定のサイズ以下である場合)
ブロックサイズが所定のサイズ以下(例えば4×4成分、8×8成分等)である場合、係数符号化制御部223は、シンタックス導出部228より供給されるシンタックスlast_significant_coeff_x及びlast_significant_coeff_yを参照し、順スキャンに沿った最後の非0変換係数の位置を特定すると共に、特定した最後の非0変換係数の位置を起点とするスキャン順であって、スキャン順テーブル格納部222に格納されたスキャン順テーブルよって与えられるスキャン順の逆スキャン順に、各周波数成分の位置(xC、yC)を、係数有無フラグ符号化部に供給する。
また、係数符号化制御部223は、処理対象のTUのサイズ、すなわち、対象周波数領域のサイズを示すパラメータであるszを、変換係数符号化部220の備える各部に供給する(図示省略)。ここで、szは、具体的には、処理対象TUの一辺の画素数、すなわち、対象周波数領域の一辺の周波数成分の数を表すパラメータである。
なお、係数符号化制御部223は、スキャン順テーブル格納部222に格納されたスキャン順テーブルよって与えられるスキャン順の順スキャン順に、各周波数成分の位置(xC、yC)を、係数有無フラグ符号化部224に供給する構成としてもよい。
(ブロックサイズが所定のサイズよりも大きい場合)
ブロックサイズが所定のサイズよりも大きい場合、係数符号化制御部223は、シンタックス導出部228から供給されるシンタックスlast_significant_coeff_x及びlast_significant_coeff_yを参照し、順スキャンに沿った最後の非0変換係数の位置を特定すると共に、特定した最後の非0変換係数を含むサブブロックの位置を起点とするスキャン順であって、スキャン順テーブル格納部222に格納されたサブブロックスキャン順テーブルよって与えられるスキャン順の逆スキャン順に、各サブブロックの位置(xCG、yCG)を、サブブロック係数有無フラグ符号化部227に供給する。
また、係数符号化制御部223は、処理対象となるサブブロックに関して、スキャン順テーブル格納部222に格納されたスキャン順テーブルよって与えられるスキャン順の逆スキャン順に、当該処理対象となるサブブロックに含まれる各周波数成分の位置(xC、yC)を、係数有無フラグ符号化部224に供給する。ここで、処理対象となるサブブロックに含まれる各周波数成分のスキャン順としては、具体的には、斜め方向スキャン(Up-right diagonal scan)を用いればよい。
このように、係数符号化制御部223は、イントラ予測モード毎に、スキャン順を切り替える構成である。一般に、イントラ予測モードと変換係数の偏りとは互いに相関を有しているため、イントラ予測モードに応じてスキャン順を切り替えることにより、サブブロック係数有無フラグの偏りに適したサブブロックスキャンを行うことができる。これによって、符号化及び復号対象となるサブブロック係数有無フラグの符号量を削減することができ、符号化効率が向上する。
(係数値符号化部225)
係数値符号化部225は、シンタックス導出部228から供給されるシンタックスcoeff_abs_level_greater1_flag、coeff_abs_level_greater2_flag、coeff_sign_flag、及びcoeff_abs_level_minus3を示すBinを生成する。また、生成した各Binをビット符号化部232に供給する。また、これらのシンタックスのBinを符号化するために参照されるコンテキストを指定するコンテキストインデックスctxIdxを、コンテキスト記録更新部231に供給する。
(係数有無フラグ符号化部224)
本実施形態に係る係数有無フラグ符号化部224は、各位置(xC、yC)によって指定されるシンタックスsignificant_coeff_flag[xC][yC]を符号化する。より具体的には、各位置(xC、yC)によって指定されるシンタックスsignificant_coeff_flag[xC][yC]を示すBinを生成する。生成された各Binは、ビット符号化部232に供給される。また、係数有無フラグ符号化部224は、算術符号符号化部230にてシンタックスsignificant_coeff_flag[xC][yC]のBinを符号化するために用いられるコンテキストを決定するためのコンテキストインデックスctxIdxを算出する。算出されたコンテキストインデックスctxIdxは、コンテキスト記録更新部231に供給される。
図55は、係数有無フラグ符号化部224の構成を示すブロック図である。図55に示すように、係数有無フラグ符号化部224は、周波数分類部224a、位置コンテキスト導出部224b、周辺参照コンテキスト導出部224c、係数有無フラグ記憶部224d、及び、係数有無フラグ設定部224eを備えている。
(周波数分類部224a)
周波数分類部224aは、対象となる周波数領域のサイズが所定のサイズ以下のサイズである場合(例えば、4×4成分、8×8成分である場合)、当該所定サイズ以下の周波数領域の各周波数成分に対して、その周波数成分の位置に応じて、当該周波数成分を複数の部分領域の何れかに分類すると共に、位置コンテキスト導出部224bによって導出されたコンテキストインデックスctxIdxを割り付ける。
一方で、対象となる周波数領域のサイズが所定のサイズよりも大きいサイズである場合(例えば、16×16成分、32×32成分である場合等)、周波数分類部224aは、周波数領域における復号対象の周波数成分の位置に応じて、当該周波数成分を複数の部分領域の何れかに分類すると共に、位置コンテキスト導出部224b、及び周辺参照コンテキスト導出部224cの何れかによって導出されたコンテキストインデックスctxIdxを、当該復号対象の周波数成分に割り付ける。
周波数分類部224aによる具体的な処理は、動画像復号装置1の備える周波数分類部124aと同様であるので、ここでは説明を省略する。
(位置コンテキスト導出部224b)
位置コンテキスト導出部224bは、対象周波数成分に対するコンテキストインデックスctxIdxを、周波数領域における当該対象周波数成分の位置に基づいて導出する。
位置コンテキスト導出部224bは、例えば、(周波数領域が所定のサイズ以下である場合の周波数分類部124aによる周波数分類処理と、位置コンテキスト導出部124bによるコンテキストインデックス導出処理の具体例1)において説明した位置コンテキスト導出部124bによる処理と同様の処理を行う。
すなわち、位置コンテキスト導出部224bは、所定のサイズ以下(例えば、4×4成分、8×8成分)の周波数領域であって、第1のサイズ(例えば4×4成分)を有する周波数領域に属する1又は複数の周波数成分と、上記所定のサイズ以下の周波数領域であって、上記第1のサイズよりも大きな第2のサイズ(例えば8×8成分)を有する周波数領域に属する1又は複数の周波数成分とに対して、共通のコンテキストインデックスを導出すると共に、当該1又は複数の周波数成分の各々に割り付ける。
このように構成された位置コンテキスト導出部224bによれば、導出すべきコンテキストインデックスの数を削減することができるので、導出処理の軽減化、及びコンテキストインデックスを保持しておくためのメモリサイズの低減を図ることができる。
位置コンテキスト導出部224bによるその他の具体的な処理は、動画像復号装置1の備える位置コンテキスト導出部124bと同様であるので、ここでは説明を省略する。
(周辺参照コンテキスト導出部224c)
周辺参照コンテキスト導出部224cは、符号化対象の周波数成分に対するコンテキストインデックスctxIdxを、当該周波数成分の周辺の周波数成分について符号化済みの非0変換係数の数cntに基づいて導出する。
周辺参照コンテキスト導出部224cによる具体的な処理は、動画像復号装置1の備える周辺参照コンテキスト導出部124cと同様であるので、ここでは説明を省略する。
(係数有無フラグ設定部224e)
係数有無フラグ設定部224eは、シンタックス導出部228から供給されるシンタックスsignificant_coeff_flag[xC][yC]を示すBinを生成する。生成したBinは、ビット符号化部232に供給される。また、係数有無フラグ設定部224eは、対象サブブロックに含まれるsignificant_coeff_flag[xC][yC]の値を参照し、対象サブブロックに含まれる全てのsignificant_coeff_flag[xC][yC]が0である場合、すなわち、当該対象サブブロックに非0変換係数が含まれていない場合に、当該対象サブブロックに関するsignificant_coeffgroup_flag[xCG][yCG]の値を0に設定し、そうでない場合に当該対象サブブロックに関するsignificant_coeffgroup_flag[xCG][yCG]の値を1に設定する。このように値が付されたsignificant_coeffgroup_flag[xCG][yCG]は、サブブロック係数有無フラグ符号化部227に供給される。
(係数有無フラグ記憶部224d)
係数有無フラグ記憶部224dには、シンタックスsignificant_coeff_flag[xC][yC]の各値が格納される。係数有無フラグ記憶部224dに格納されたシンタックスsignificant_coeff_flag[xC][yC]の各値は、周辺参照コンテキスト導出部224cによって参照される。
(サブブロック係数有無フラグ符号化部227)
サブブロック係数有無フラグ符号化部227は、各サブブロック位置(xCG、yCG)によって指定されるシンタックスsignificant_coeffgroup_flag[xCG][yCG]を符号化する。より具体的には、各サブブロック位置(xCG、yCG)によって指定されるシンタックスsignificant_coeffgroup_flag[xCG][yCG]を示すBinを生成する。生成された各Binは、ビット符号化部232に供給される。また、サブブロック係数有無フラグ符号化部227は、算術符号符号化部230にてシンタックスsignificant_coeff_flag[xC][yC]のBinを符号化するために用いられるコンテキストを決定するためのコンテキストインデックスctxIdxを算出する。算出されたコンテキストインデックスctxIdxは、コンテキスト記録更新部231に供給される。
図56は、サブブロック係数有無フラグ符号化部227の構成を示すブロック図である。図56に示すように、サブブロック係数有無フラグ符号化部227は、コンテキスト導出部227a、サブブロック係数有無フラグ記憶部227b、及びサブブロック係数有無フラグ設定部227cを備えている。
以下では、サブブロック係数有無フラグ符号化部227に対して、係数符号化制御部223から、サブブロック位置(xCG、yCG)が順スキャン順に供給される場合を例に挙げて説明を行う。なお、この場合、動画像復号装置1の備えるサブブロック係数有無フラグ復号部127では、サブブロック位置(xCG、yCG)が逆スキャン順に供給されることが好ましい。
(コンテキスト導出部227a)
サブブロック係数有無フラグ符号化部227の備えるコンテキスト導出部227aは、各サブブロック位置(xCG、yCG)によって指定されるサブブロックに割り付けるコンテキストインデックスを導出する。サブブロックに割り付けられたコンテキストインデックスは、当該サブブロックについてのシンタックスsignificant_coeffgroup_flagを示すBinを復号する際に用いられる。また、コンテキストインデックスを導出する際には、サブブロック係数有無フラグ記憶部227bに記憶されたサブブロック係数有無フラグの値が参照される。コンテキスト導出部227aは、導出したコンテキストインデックスをコンテキスト記録更新部231に供給する。
(サブブロック係数有無フラグ記憶部227b)
サブブロック係数有無フラグ記憶部227bには、係数有無フラグ符号化部224から供給されたシンタックスsignificant_coeffgroup_flagの各値が記憶されている。サブブロック係数有無フラグ設定部227cは、隣接サブブロックに割り付けられたシンタックスsignificant_coeffgroup_flagを、サブブロック係数有無フラグ記憶部227bから読み出すことができる。
(サブブロック係数有無フラグ設定部227c)
サブブロック係数有無フラグ設定部227cは、サブブロック係数有無フラグ設定部227cは、係数有無フラグ符号化部224から供給されるシンタックスsignificant_coeffgroup_flag[xCG][yCG]を示すBinを生成する。生成したBinは、ビット符号化部232に供給される。
ここで、サブブロック係数有無フラグ設定部227cは、サブブロックスキャン順を指定するスキャンタイプに応じて、シンタックスsignificant_coeffgroup_flag[xCG][yCG]の符号化を以下のように省略する。
(スキャンタイプが垂直方向優先スキャンの場合)
サブブロックスキャン順を指定するスキャンタイプが垂直方向優先スキャンである場合、サブブロック係数有無フラグ設定部227cは、図20(a)に示すように、サブブロック(xCG、yCG)に隣接するサブブロック(xCG、yCG+1)に割り付けられたサブブロック係数有無フラグsignificant_coeffgroup_flag[xCG][yCG+1]の値を参照する。significant_coeffgroup_flag[xCG][yCG+1]=1である場合、サブブロック係数有無フラグ設定部227cは、significant_coeffgroup_flag[xCG][yCG]=1であると推測し、significant_coeffgroup_flag[xCG][yCG]の符号化を省略する。
(スキャンタイプが水平方向優先スキャンの場合)
サブブロックスキャン順を指定するスキャンタイプが水平方向優先スキャンである場合、サブブロック係数有無フラグ設定部227cは、図20(b)に示すように、サブブロック(xCG、yCG)に隣接するサブブロック(xCG+1、yCG)に割り付けられたサブブロック係数有無フラグsignificant_coeffgroup_flag[xCG+1][yCG]の値を参照する。significant_coeffgroup_flag[xCG+1][yCG]=1である場合、サブブロック係数有無フラグ設定部227cは、significant_coeffgroup_flag[xCG][yCG]=1であると推測し、significant_coeffgroup_flag[xCG][yCG]の符号化を省略する。
(スキャンタイプが斜め方向スキャンの場合)
サブブロックスキャン順を指定するスキャンタイプが斜め方向スキャンである場合、サブブロック係数有無フラグ設定部227cは、図20(c)に示すように、サブブロック(xCG、yCG)に隣接するサブブロック(xCG+1、yCG)に割り付けられたサブブロック係数有無フラグsignificant_coeffgroup_flag[xCG+1][yCG]の値とサブブロック(xCG、yCG+1)に割り付けられたサブブロック係数有無フラグsignificant_coeffgroup_flag[xCG][yCG+1]の値とを参照する。
significant_coeffgroup_flag[xCG+1][yCG]=1かつsignificant_coeffgroup_flag[xCG][yCG+1]=1である場合、サブブロック係数有無フラグ設定部227cは、significant_coeffgroup_flag[xCG][yCG]=1であると推測し、significant_coeffgroup_flag[xCG][yCG]の符号化を省略する。
サブブロック係数有無フラグ設定部227cは、以上のように、サブブロック係数有無フラグの偏りに応じて、significant_coeffgroup_flag[xCG][yCG]の符号化を省略する構成である。サブブロック係数有無フラグの符号量を削減することができるので、符号化効率が向上する。
(係数有無フラグ符号化部の変形例1)
本実施形態に係る係数有無フラグ符号化部は、上述の構成に限られるものではない。本実施形態に係る係数有無フラグ符号化部は、第1の変形例に係る係数有無フラグ復号部124’に対応する構成を有するものとしてもよい。
すなわち、本変形例に係る係数有無フラグ符号化部224’は、変換係数有無フラグ符号化部224と略同様の構成であるが、以下の点において異なる構成としてもよい。
・係数有無フラグ符号化部224’は、周辺参照コンテキスト導出部224cを備えていない。
・係数有無フラグ符号化部224’は、サブブロック周辺参照コンテキスト導出部224fを備えている。
ここで、サブブロック周辺参照コンテキスト導出部224fは、処理対象のサブブロックに含まれる各周波数成分に割り付けるコンテキストインデックスを、当該処理対象のサブブロックに隣接するサブブロックに割り付けられたsignificant_coeffgroup_flagを参照して導出する。
サブブロック周辺参照コンテキスト導出部224fによる具体的な処理については、サブブロック周辺参照コンテキスト導出部124fと同様であるのでその説明を省略する。ただし、サブブロック周辺参照コンテキスト導出部124fの説明における「復号」を「符号化」と読み替えるものとする。
本変形例に係るサブブロック周辺参照コンテキスト導出部224fによれば、周波数成分単位での周辺参照コンテキスト導出処理を行わず、サブブロックに含まれる各周波数成分に対して共通のコンテキストインデックスを割り付けるので、処理量が削減される。また、サブブロック単位でのコンテキストインデックス導出処理は、隣接サブブロックでのsignificant_coeffgroup_flagの値を参照して行われるので、対象サブブロックの周辺に存在する非0変換係数の数に応じたコンテキストインデックスを導出することができる。
したがって、本変形例に係るサブブロック周辺参照コンテキスト導出部224fによれば、高い符号化効率を維持しつつ、コンテキストインデックス導出処理の処理量を削減することができる。
(係数有無フラグ復号部の変形例2)
また、本実施形態に係る係数有無フラグ符号化部は、第2の変形例に係る係数有無フラグ復号部124’’に対応する構成を有するものとしてもよい。
すなわち、本変形例に係る係数有無フラグ復号部124’’は、変換係数有無フラグ符号化部224の各部に加えて、サブブロック周辺参照コンテキスト導出部224fを備えている。ここで、本変形例に係るサブブロック周辺参照コンテキスト導出部224fによる具体的な処理は、第2の変形例に係るサブブロック周辺参照コンテキスト導出部124fと同様であるのでその説明を省略する。ただし、第2の変形例に係るサブブロック周辺参照コンテキスト導出部124fの説明における「復号」を「符号化」と読み替えるものとする。
このような構成によっても、高い符号化効率を維持しつつ、コンテキストインデックス導出処理の処理量を削減することができる。
(係数有無フラグ符号化部224の変形例2)
また、本実施形態に係る係数有無フラグ符号化部224は、第3の変形例に係る係数有無フラグ復号部124に対応する構成を有するものとしてもよい。
図97は、本実施形態に係る係数有無フラグ符号化部224の第2の変形例の構成例を示すブロック図である。図97に示すように、係数有無フラグ符号化部224は、コンテキスト導出部224z、及び、係数有無フラグ設定部224eを備えている。さらに、コンテキスト導出部224zは、導出方法制御部224x、位置コンテキスト導出部224b、周辺参照コンテキスト導出部224cを備える。なお、図97では、コンテキスト導出部224zにおいて、導出方法制御部224xが、位置コンテキスト導出部224b、および周辺参照コンテキスト導出部224cを内包する形で記載しているが、これは例示に過ぎない。コンテキスト導出部224zの構成は、このような構成に限定されない。
(導出方法制御部224x)
導出方法制御部224xは、対象となるTUサイズが所定のサイズ以下のサイズである場合(例えば、4×4TU、8×8TUである場合)、当該所定サイズ以下の周波数領域の各周波数成分に対して、その周波数成分の位置に応じて、当該周波数成分を複数の部分領域の何れかに分類すると共に、位置コンテキスト導出部224bによって導出されたコンテキストインデックスctxIdxを割り付ける。
一方で、対象となるTUサイズが所定のサイズよりも大きいサイズである場合(例えば、16×16TU、32×32TUである場合等)、導出方法制御部224xは、周波数領域における復号対象の周波数成分の位置に応じて、当該周波数成分を複数の部分領域の何れかに分類すると共に、位置コンテキスト導出部224b、及び周辺参照コンテキスト導出部224cの何れかによって導出されたコンテキストインデックスctxIdxを、当該復号対象の周波数成分に割り付ける。
導出方法制御部224xによる具体的な処理は、動画像復号装置1の備える導出方法制御部124xと同様であるので、ここでは説明を省略する。
(位置コンテキスト導出部224b)
位置コンテキスト導出部224bは、対象周波数成分に対するコンテキストインデックスctxIdxを、周波数領域における当該対象周波数成分の位置に基づいて導出する。
位置コンテキスト導出部224bによる具体的な処理は、係数有無フラグ復号部124の変形例Aの備える位置コンテキスト導出部124bと同様であるので、ここでは説明を省略する。
(周辺参照コンテキスト導出部224c)
周辺参照コンテキスト導出部224cは、符号化対象の周波数成分に対するコンテキストインデックスctxIdxを、当該周波数成分の周辺の周波数成分について符号化済みの非0変換係数の数cntに基づいて導出する。より具体的には、周辺参照コンテキスト導出部224cは、対象周波数成分の位置(xC,yC)、もしくは、対象周波数成分が属するサブブロックの位置(xCG,yCG)が所定の条件を満たす場合、変換係数の位置に応じて異なる参照位置(テンプレート)を用いて符号化済みの非0変換係数の数cntを導出する。
周辺参照コンテキスト導出部224cによる具体的な処理は、係数有無フラグ復号部124の第3の変形例の備える周辺参照コンテキスト導出部124cと同様であるので、ここでは説明を省略する。
(係数有無フラグ設定部224e)
係数有無フラグ設定部224eは、シンタックス導出部228から供給されるシンタックスsignificant_coeff_flag[xC][yC]を示すBinを生成する。生成したBinは、ビット符号化部232に供給される。また、係数有無フラグ設定部224eは、対象サブブロックに含まれるsignificant_coeff_flag[xC][yC]の値を参照し、対象サブブロックに含まれる全てのsignificant_coeff_flag[xC][yC]が0である場合、すなわち、当該対象サブブロックに非0変換係数が含まれていない場合に、当該対象サブブロックに関するsignificant_coeff_group_flag[xCG][yCG]の値を0に設定し、そうでない場合に当該対象サブブロックに関するsignificant_coeff_group_flag[xCG][yCG]の値を1に設定する。このように値が付されたsignificant_coeff_group_flag[xCG][yCG]は、サブブロック係数有無フラグ符号化部227に供給される。
以上、係数有無フラグ符号化224の第2の変形例によれば、処理対象のTUサイズが所定のサイズ以下である場合には、処理対象の周波数成分の位置を表わすxCとyCの各ビットの値を用いたビット演算によって、周波数領域を複数のサブ領域(コンテキストグループ)に分割すると共に、各サブ領域に対応するコンテキストインデックスを導出することができる。そのため、コンテキストインデックスの導出処理の簡略化、及びコンテキストインデックス導出に係るメモリサイズの削減を図ることができる。
また、処理対象のTUサイズが所定サイズより大きい場合に、処理対象の係数有無フラグが高周波数域に位置する場合は、位置コンテキスト導出部により処理対象の係数有無フラグに関するコンテキストインデックスを導出し、処理対象の係数有無フラグが低周波数領域、及び中周波数領域に位置する場合は、周辺参照コンテキスト導出部により処理対象の係数有無フラグに関するコンテキストインデックスを導出する。このため、従来に比べて、低周波数領域内に含まれる周波数成分に対して、非ゼロ係数の発生頻度の偏りを考慮してコンテキストインデックスを導出することができ、係数有無フラグの符号量を削減し、符号化に係る処理量を削減する効果を奏する。
また、係数位置に基づいて、対象とする変換係数の位置の、処理順(逆スキャン順)で直前に位置する座標の変換係数を参照しないようにテンプレートを選択している。このような処理は、ある位置の係数有無フラグの復号に用いるコンテキスト導出を、直前の係数有無フラグの値を参照せずに行うことができるため、コンテキスト導出処理と復号処理とを並列に処理することができる効果を奏する。したがって、高い符号化効率を維持しつつ、コンテキストインデックス導出処理の処理を高速化することができる。
(付記事項1)
上述した動画像符号化装置2及び動画像復号装置1は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
まず、上述した動画像符号化装置2及び動画像復号装置1を、動画像の送信及び受信に利用できることを、図57を参照して説明する。
図57の(a)は、動画像符号化装置2を搭載した送信装置PROD_Aの構成を示したブロック図である。図57の(a)に示すように、送信装置PROD_Aは、動画像を符号化することによって符号化データを得る符号化部PROD_A1と、符号化部PROD_A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部PROD_A2と、変調部PROD_A2が得た変調信号を送信する送信部PROD_A3と、を備えている。上述した動画像符号化装置2は、この符号化部PROD_A1として利用される。
送信装置PROD_Aは、符号化部PROD_A1に入力する動画像の供給源として、動画像を撮像するカメラPROD_A4、動画像を記録した記録媒体PROD_A5、動画像を外部から入力するための入力端子PROD_A6、及び、画像を生成または加工する画像処理部A7を更に備えていてもよい。図57の(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
図57の(b)は、動画像復号装置1を搭載した受信装置PROD_Bの構成を示したブロック図である。図57の(b)に示すように、受信装置PROD_Bは、変調信号を受信する受信部PROD_B1と、受信部PROD_B1が受信した変調信号を復調することによって符号化データを得る復調部PROD_B2と、復調部PROD_B2が得た符号化データを復号することによって動画像を得る復号部PROD_B3と、を備えている。上述した動画像復号装置1は、この復号部PROD_B3として利用される。
受信装置PROD_Bは、復号部PROD_B3が出力する動画像の供給先として、動画像を表示するディスプレイPROD_B4、動画像を記録するための記録媒体PROD_B5、及び、動画像を外部に出力するための出力端子PROD_B6を更に備えていてもよい。図57の(b)においては、これら全てを受信装置PROD_Bが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_B5は、符号化されていない動画像を記録するためのものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部PROD_B3と記録媒体PROD_B5との間に、復号部PROD_B3から取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送(ここでは、送信先が予め特定されていない送信態様を指す)であってもよいし、通信(ここでは、送信先が予め特定されている送信態様を指す)であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、及び有線通信の何れによって実現してもよい。
例えば、地上デジタル放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を無線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。また、ケーブルテレビ放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を有線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。
また、インターネットを用いたVOD(Video On Demand)サービスや動画共有サービスなどのサーバ(ワークステーションなど)/クライアント(テレビジョン受像機、パーソナルコンピュータ、スマートフォンなど)は、変調信号を通信で送受信する送信装置PROD_A/受信装置PROD_Bの一例である(通常、LANにおいては伝送媒体として無線又は有線の何れかが用いられ、WANにおいては伝送媒体として有線が用いられる)。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、及びタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアントは、送信装置PROD_A及び受信装置PROD_Bの双方として機能する。
次に、上述した動画像符号化装置2及び動画像復号装置1を、動画像の記録及び再生に利用できることを、図58を参照して説明する。
図58の(a)は、上述した動画像符号化装置2を搭載した記録装置PROD_Cの構成を示したブロック図である。図58の(a)に示すように、記録装置PROD_Cは、動画像を符号化することによって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した動画像符号化装置2は、この符号化部PROD_C1として利用される。
なお、記録媒体PROD_Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)などのように、記録装置PROD_Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリなどのように、記録装置PROD_Cに接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc)やBD(Blu-ray Disc:登録商標)などのように、記録装置PROD_Cに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、記録装置PROD_Cは、符号化部PROD_C1に入力する動画像の供給源として、動画像を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、動画像を受信するための受信部PROD_C5、及び、画像を生成または加工する画像処理部C6を更に備えていてもよい。図58の(a)においては、これら全てを記録装置PROD_Cが備えた構成を例示しているが、一部を省略しても構わない。
なお、受信部PROD_C5は、符号化されていない動画像を受信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部PROD_C5と符号化部PROD_C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
このような記録装置PROD_Cとしては、例えば、DVDレコーダ、BDレコーダ、HDD(Hard Disk Drive)レコーダなどが挙げられる(この場合、入力端子PROD_C4又は受信部PROD_C5が動画像の主な供給源となる)。また、カムコーダ(この場合、カメラPROD_C3が動画像の主な供給源となる)、パーソナルコンピュータ(この場合、受信部PROD_C5又は画像処理部C6が動画像の主な供給源となる)、スマートフォン(この場合、カメラPROD_C3又は受信部PROD_C5が動画像の主な供給源となる)なども、このような記録装置PROD_Cの一例である。
図58の(b)は、上述した動画像復号装置1を搭載した再生装置PROD_Dの構成を示したブロックである。図58の(b)に示すように、再生装置PROD_Dは、記録媒体PROD_Mに書き込まれた符号化データを読み出す読出部PROD_D1と、読出部PROD_D1が読み出した符号化データを復号することによって動画像を得る復号部PROD_D2と、を備えている。上述した動画像復号装置1は、この復号部PROD_D2として利用される。
なお、記録媒体PROD_Mは、(1)HDDやSSDなどのように、再生装置PROD_Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリなどのように、再生装置PROD_Dに接続されるタイプのものであってもよいし、(3)DVDやBDなどのように、再生装置PROD_Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、再生装置PROD_Dは、復号部PROD_D2が出力する動画像の供給先として、動画像を表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。図58の(b)においては、これら全てを再生装置PROD_Dが備えた構成を例示しているが、一部を省略しても構わない。
なお、送信部PROD_D5は、符号化されていない動画像を送信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部PROD_D2と送信部PROD_D5との間に、動画像を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
このような再生装置PROD_Dとしては、例えば、DVDプレイヤ、BDプレイヤ、HDDプレイヤなどが挙げられる(この場合、テレビジョン受像機等が接続される出力端子PROD_D4が動画像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイPROD_D3が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称され、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子PROD_D4又は送信部PROD_D5が動画像の主な供給先となる)、ラップトップ型又はタブレット型PC(この場合、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)なども、このような再生装置PROD_Dの一例である。
(付記事項2)
上述した動画像復号装置1、および動画像符号化装置2の各ブロックは、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェア的に実現してもよい。
後者の場合、上記各装置は、各機能を実現するプログラムの命令を実行するCPU、上記プログラムを格納したROM(Read Only Memory)、上記プログラムを展開するRAM(Random Access Memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである上記各装置の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記各装置に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク類、ICカード(メモリカードを含む)/光カード等のカード類、マスクROM/EPROM/EEPROM(登録商標)/フラッシュROM等の半導体メモリ類、あるいはPLD(Programmable logic device)やFPGA(Field Programmable Gate Array)等の論理回路類などを用いることができる。
また、上記各装置を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成または種類のものに限定されない。例えば、IEEE1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(Asymmetric Digital Subscriber Line)回線等の有線でも、IrDAやリモコンのような赤外線、Bluetooth(登録商標)、IEEE802.11無線、HDR(High Data Rate)、NFC(Near Field Communication)、DLNA(Digital Living Network Alliance、登録商標)、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
また、本発明は以下のように表現することもできる。本発明の一態様に係る画像復号装置は、対象画像を単位領域毎に周波数変換することによって周波数成分毎に得られる変換係数について、該変換係数を表す各種シンタックスを算術符号化することによって得られた符号化データを復号する算術復号装置であって、上記変換係数が0であるか否かを示すシンタックスである変換係数有無フラグに割り付けるコンテキストインデックスを導出するコンテキストインデックス導出手段と、上記変換係数有無フラグを、該変換係数有無フラグに割り付けられたコンテキストインデックスによって指定される確率状態に基づいて算術復号するシンタックス復号手段と、を備え、上記コンテキストインデックス導出手段は、周波数領域における対象周波数成分の位置(xC,yC)(xCは0以上の整数、yCは0以上の整数)と、該周波数領域の横幅を示す変数であるlog2TrafoWidth(log2TrafoWidthは自然数)と該周波数領域の縦幅を示す変数であるlog2TrafoHeight(log2TrafoHeightは自然数)とに基づき、
X=log2TrafoWidth == 2 ? xC : xC>>1
Y=log2TrafoHeight == 2 ? yC : yC>>1
によって変数X及びYを導出し、該変数Xの下位1ビット目(上位2ビット目)の値と、該変数Xの下位2ビット目(上位1ビット目)の値と、該変数Yの下位1ビット目(上位2ビット目)の値と、該変数Yの下位2ビット目(上位1ビット目)の値とに基づいて定まる対象周波数成分の属するサブ領域の識別番号(相対コンテキストインデックス)と所定のオフセットを加算して、対象周波数成分のコンテキストインデックスを導出することを特徴としている。
上記の構成によれば、処理対象の周波数成分の位置を表わすxCとyCの各ビットの値を用いたビット演算によって、周波数領域を複数のサブ領域(相対コンテキストインデックス)に分割すると共に、各サブ領域に対応するコンテキストインデックスを導出することができる。そのため、コンテキストインデックスの導出処理の簡略化、及びコンテキストインデックス導出に係るメモリサイズの削減を図ることができる。
本発明に係る算術復号装置では、上記サブ領域の識別番号(相対コンテキストインデックス)を構成する各ビットの値は、変数Xの下位2ビット目の値からなる第1のビットと、変数Yの下位2ビット目の値からなる第2のビットと、変数Xの下位1ビット目の値と、変数Xの下位2ビット目の値と、変数Yの下位1ビット目の値と、変数Yの下位2ビット目の値との所定の論理演算からなる第3のビットと、の組み合わせによって定まるものであってもよい。
上記の構成によれば、対象周波数成分の属するサブ領域(相対コンテキストインデックス)を対象周波数成分の位置(xC、yC)に基づく簡易なビット演算により識別することができるため、係数有無フラグに関するコンテキストインデックス導出を簡略化することができる。
本発明に係る算術復号装置では、上記相対コンテキストインデックスの所定のビットの導出に用いる論理演算は、変数Xの下位2ビット目の否定と、変数Yの下位1ビット目との論理積の値と、変数Xの下位1ビット目と、変数Yの下位2ビット目の否定との論理積の値と、の論理和であってもよい。
上記の構成によれば、対象周波数成分の属するサブ領域(相対コンテキストインデックス)に好適な値を設定することが可能となる。
本発明に係る算術復号装置では、対象画像を単位領域毎に周波数変換することによって周波数成分毎に得られる各変換係数について、該変換係数を表す各種シンタックスを算術符号化することによって得られた符号化データを復号する算術復号装置であって、処理対象の単位領域に対応する対象周波数領域を所定サイズのサブブロックに分割するサブブロック分割手段と、上記サブブロック分割手段により分割された各サブブロックについて、該サブブロックに非0変換係数が少なくとも1つ含まれるか否かを表すサブブロック係数有無フラグを復号するサブブロック係数有無フラグ復号手段と、対象周波数領域を、各周波数成分、及び、各サブブロックの少なくとも何れかを分割単位として複数の部分領域に分割する分割手段と、各部分領域に属する各変換係数が0である否かを示すシンタックスである各変換係数有無フラグに割り付けるコンテキストインデックスを導出するコンテキストインデックス導出手段と、各部分領域に属する各変換係数有無フラグを、該変換係数有無フラグに割りつけられたコンテキストインデックスによって指定される確率状態に基づいて算術復号するシンタックス復号手段と、を備え、対象サブブロックについて復号されたサブブロック係数有無フラグが、該対象サブブロックに非0変換係数が少なくとも1つ含まれることを示している場合であって、該対象サブブロックに属する各変換係数が、対象周波数領域において、低周波数領域、あるいは、中周波数領域の部分領域に属するものである場合、上記コンテキストインデックス導出手段は、各変換係数有無フラグに割り付けるコンテキストインデックスを、参照領域に含まれる復号済の非0変換係数の数に基づいて導出し、対象サブブロックについて復号されたサブブロック係数有無フラグが、該対象サブブロックに非0変換係数が含まれていないことを示している場合、該対象サブブロックに属する全ての変換係数の各々についての変換係数有無フラグを、該変換係数が0であることを示すものとして復号処理を行うものであってもよい。
上記の構成によれば、従来に比べて、低周波数域内に含まれる周波数成分に対して、非ゼロ係数の発生頻度の偏りを考慮してコンテキストインデックスを導出することができ、係数有無フラグの符号量を削減し、復号に係る処理量を削減することができる。
本発明に係る算術復号装置では、上記対象周波数成分の位置のx座標とy座標との和が第1の閾値より小さいとき、上記部分領域を低周波域とし、上記対象周波数成分の位置のx座標とy座標との和が第1の閾値以上、かつ、該対象周波数成分の属するサブブロック位置のX座標とY座標との和が第2の閾値より小さいとき、上記部分領域を中周波数領域とし、上記対象周波数成分の位置のx座標とy座標との和が第1の閾値以上のとき、または、該対象周波数成分の属するサブブロック位置のX座標とY座標との和が第2の閾値より大きいとき、上記部分領域を高周波数領域とするものであってもよい。
上記の構成によれば、輝度と色差に関して、部分領域の判定処理を共通化することができるため、係数有無フラグに関するコンテキストインデックス導出処理を簡略化することができる。
本発明に係る算術復号装置では、上記部分領域の識別に用いる上記第1の閾値と上記第2の閾値とが、輝度と色差で共通であってもよい。
上記の構成によれば、輝度と色差に関して、部分領域の判定処理を共通化することができるため、係数有無フラグに関するコンテキストインデックス導出処理を簡略化することができる。
本発明に係る算術復号装置では、上記第1の閾値の値は2であってもよい。
上記の構成によれば、低周波域と中周波域を識別する好適な閾値であるため、さらに係数有無フラグの符号量を削減し、復号に係る処理量を削減することができる。
上記の課題を解決するために、本発明に係る算術復号装置は、対象画像を単位領域毎に周波数変換することによって周波数成分毎に得られる各変換係数について、該変換係数を表す各種シンタックスを算術符号化することによって得られた符号化データを復号する算術復号装置であって、各変換係数が0であるか否かを示すシンタックスである各変換係数有無フラグに割り付けるコンテキストインデックスを導出するコンテキストインデックス導出手段と、各変換係数有無フラグを、該変換係数有無フラグに割り付けられたコンテキストインデックスによって指定される確率状態に基づいて算術復号するシンタックス復号手段と、を備え、上記コンテキストインデックス導出手段は、第1のサイズを有する周波数領域と、上記第1のサイズよりも大きな第2のサイズを有する周波数領域とを、それぞれ複数のサブ領域に分割したうえで、各サブ領域に対してコンテキストインデックスを導出するものであり、上記第1のサイズを有する周波数領域の分割パターン、及び上記第2のサイズを有する周波数領域の分割パターンは互いに相似である、ことを特徴としている。
上記のように構成された算術復号装置によれば、上記第1のサイズを有する周波数領域と上記第2のサイズを有する周波数領域とを互いに相似な分割パターンによってそれぞれ複数のサブ領域に分割する。このように、互いに相似な分割パターンを用いた分割処理を行うことによって、分類処理の処理量が削減されるので、変換係数の復号に係る処理量を削減することができる。
上記の構成において、上記コンテキストインデックス導出手段は、周波数領域における対象周波数成分の位置(xC,yC)(xCは0以上の整数、yCは0以上の整数)と、該周波数領域のサイズを示す変数であるlog2TrafoSize(log2TrafoSizeは自然数)とに基づき、
X=log2TrafoSize == 2 ? xC : xC>>1
Y=log2TrafoSize == 2 ? yC : yC>>1
によって変数X及びYを導出し、
X=0かつY=0であるとき、対象周波数成分をサブ領域R0に分類し、
(X=0かつY=0)でなくX<2かつY<2であるとき、対象周波数成分をサブ領域R1に分類し、
X=2かつY<2であるとき、対象周波数成分をサブ領域R2へ分類し、
X=3かつY<2であるとき、対象周波数成分をサブ領域R3へ分類し、
X<2かつY=2であるとき、対象周波数成分をサブ領域R4へ分類し、
X<2かつY=3であるとき、対象周波数成分をサブ領域R5へ分類し、
X≧2かつY≧2であるとき、対象周波数成分をサブ領域R6へ分類する、ことが好ましい。
上記の構成によれば、周波数領域における対象周波数成分の位置(xC,yC)と、該周波数領域のサイズを示す変数であるlog2TrafoSizeとに基づき算出された変数X及びYを用いた分岐処理によって、周波数領域を複数のサブ領域へ分割するので、分類処理の処理量が削減される。
また、上記の構成において、上記コンテキストインデックス導出手段は、上記サブ領域R0から領域R6のうち、上記サブ領域R3と、上記サブ領域R5とに対して、共通のコンテキストインデックスを導出することが好ましい。
上記の構成によれば、少なくとも水平周波数が高域であるサブ領域R3と、垂直周波数が高域であるサブ領域R5とに対して共通のコンテキストインデックスを導出するので、処理量を削減しつつ、高い符号化効率を実現される。
また、上記の課題を解決するために、本発明に係る算術復号装置は、対象画像を単位領域毎に周波数変換することによって周波数成分毎に得られる各変換係数について、該変換係数を表す各種シンタックスを算術符号化することによって得られた符号化データを復号する算術復号装置であって、処理対象の単位領域に対応する対象周波数領域を所定サイズのサブブロックに分割するサブブロック分割手段と、上記サブブロック分割手段により分割された各サブブロックについて、該サブブロックに非0変換係数が少なくとも1つ含まれるか否かを表すサブブロック係数有無フラグを復号するサブブロック係数有無フラグ復号手段と、上記サブブロック係数有無フラグ復号手段によるサブブロックスキャン順を設定するサブブロックスキャン順設定手段と、を備え、上記サブブロックスキャン順設定手段は、処理対象の単位領域に適用された予測方式がイントラ予測である場合に、該イントラ予測の予測方向に応じて、サブブロックスキャン順を設定する、ことを特徴としている。
上記のように構成された算術復号装置によれば、処理対象の単位領域に適用された予測方式がイントラ予測である場合に、該イントラ予測の予測方向に応じて、サブブロックスキャン順を設定する。一般に、イントラ予測の予測方向と、周波数領域における変換係数の配置の偏りとの間には相関がある。したがって、上記の構成によれば、イントラ予測の予測方向に応じて、サブブロックスキャン順を設定することによって、サブブロック係数有無フラグの偏りに適したサブブロックスキャンを行うことができる。これによって、復号対象となるサブブロック係数有無フラグの符号量を削減することができ、変換係数の復号に係る処理量が削減される。
上記の構成において、上記サブブロックスキャン順設定手段は、処理対象の単位領域のサイズに応じて、上記サブブロックスキャン順を設定する、ことが好ましい。
上記の構成によれば、処理対象の単位領域のサイズに更に応じて、上記サブブロックスキャン順を設定するので、サブブロック係数有無フラグの符号量をより効果的に削減することができ、変換係数の復号に係る処理量が削減される。
また、上記の構成において、上記サブブロック係数有無フラグ復号手段は、対象サブブロックのサブブロック係数有無フラグを、該対象サブブロックに隣接する複数の隣接サブブロックのうち、上記サブブロックスキャン順に応じて設定された1または複数の参照サブブロックのサブブロック係数有無フラグの値から推測する、ことが好ましい。
上記の構成によれば、対象サブブロックのサブブロック係数有無フラグを、該対象サブブロックに隣接する複数の隣接サブブロックのうち、上記サブブロックスキャン順に応じて設定された1または複数の参照サブブロックのサブブロック係数有無フラグの値から推測するので、サブブロック係数有無フラグの符号量をより効果的に削減することができ、変換係数の復号に係る処理量が削減される。
また、上記の構成において、上記サブブロック係数有無フラグ復号手段は、各参照サブブロックのサブブロック係数有無フラグが、該参照サブブロックに非0変換係数が少なくとも1つ含まれることを示している場合に、上記対象サブブロックのサブブロック係数有無フラグを、該対象サブブロックに非0変換係数が少なくとも1つ含まれることを示す値に設定する、ことが好ましい。
上記の構成によれは、各参照サブブロックのサブブロック係数有無フラグが、該参照サブブロックに非0変換係数が少なくとも1つ含まれることを示している場合に、上記対象サブブロックのサブブロック係数有無フラグを、該対象サブブロックに非0変換係数が少なくとも1つ含まれることを示す値に設定するので、サブブロック係数有無フラグの符号量をより効果的に削減することができ、変換係数の復号に係る処理量が削減される。
また、上記の課題を解決するために、本発明に係る算術復号装置は、対象画像を単位領域毎に周波数変換することによって周波数成分毎に得られる各変換係数について、該変換係数を表す各種シンタックスを算術符号化することによって得られた符号化データを復号する算術復号装置であって、各変換係数が0であるか否かを示すシンタックスである各変換係数有無フラグに割り付けるコンテキストインデックスを導出するコンテキストインデックス導出手段と、各変換係数有無フラグを、該変換係数有無フラグに割り付けられたコンテキストインデックスによって指定される確率状態に基づいて算術復号するシンタックス復号手段と、を備え、上記コンテキストインデックス導出手段は、第1のサイズを有する周波数領域に属する1又は複数の変換係数有無フラグと、上記第1のサイズよりも大きな第2のサイズを有する周波数領域に属する1又は複数の変換係数有無フラグとに対して、共通のコンテキストインデックスを導出する、ことを特徴としている。
上記のように構成された算術復号装置によれば、第1のサイズを有する周波数領域に属する1又は複数の変換係数有無フラグと、上記第1のサイズよりも大きな第2のサイズを有する周波数領域に属する1又は複数の変換係数有無フラグとに対して、共通のコンテキストインデックスを導出するので、コンテキストインデックス導出に係る処理量、及びコンテキストインデックスを保持しておくためのメモリサイズを削減することができる。
上記の構成において、上記コンテキストインデックス導出手段は、上記第1のサイズを有する周波数領域に属する1又は複数の変換係数有無フラグと、上記第2のサイズを有する周波数領域の低周波側に属する1又は複数の変換係数有無フラグとに対して、共通のコンテキストインデックスを導出する、ことが好ましい。
上記の構成によれば、上記第1のサイズを有する周波数領域に属する1又は複数の変換係数有無フラグと、上記第2のサイズを有する周波数領域の低周波側に属する1又は複数の変換係数有無フラグとに対して、共通のコンテキストインデックスを導出するので、コンテキストインデックス導出に係る処理量、及びコンテキストインデックスを保持しておくためのメモリサイズをより効果的に削減することができる。
また、上記の構成において、各変換係数有無フラグは、輝度に関する変換係数有無フラグ、及び色差に関する変換係数有無フラグの何れかであって、上記コンテキストインデックス導出手段は、輝度に関する変換係数有無フラグと色差に関する変換係数有無フラグとに対して、独立にコンテキストインデックスを導出する、ことが好ましい。
上記の構成によれば、輝度に関する変換係数有無フラグと色差に関する変換係数有無フラグとに対して、独立にコンテキストインデックスを導出するので、高い符号化効率を維持しつつ、コンテキストインデックス導出に係る処理量、及びコンテキストインデックスを保持しておくためのメモリサイズを削減することができる。
また、上記の課題を解決するために、本発明に係る算術復号装置は、対象画像を単位領域毎に周波数変換することによって周波数成分毎に得られる各変換係数について、該変換係数を表す各種シンタックスを算術符号化することによって得られた符号化データを復号する算術復号装置であって、処理対象の単位領域に対応する対象周波数領域を所定サイズのサブブロックに分割するサブブロック分割手段と、上記サブブロック分割手段により分割された各サブブロックについて、該サブブロックに非0変換係数が少なくとも1つ含まれるか否かを表すサブブロック係数有無フラグを復号するサブブロック係数有無フラグ復号手段と、各変換係数が0である否かを示すシンタックスである各変換係数有無フラグに割り付けるコンテキストインデックスを導出するコンテキストインデックス導出手段と、各変換係数有無フラグを、該変換係数有無フラグに割りつけられたコンテキストインデックスによって指定される確率状態に基づいて算術復号するシンタックス復号手段と、を備え、上記コンテキストインデックス導出手段は、対象サブブロックに属する変換係数有無フラグに対して、共通のコンテキストインデックスを導出する、ことを特徴としている。
上記の構成によれば、対象サブブロックに属する変換係数有無フラグに対して、共通のコンテキストインデックスを導出するので、コンテキストインデックス導出に係る処理量が削減される。
また、上記の構成において、上記コンテキストインデックス導出手段は、対象サブブロックに隣接する隣接サブブロックに非0変換係数が含まれるか否かに基づいて、該対象サブブロックに属する変換係数有無フラグに対して、共通のコンテキストインデックスを導出する、ことが好ましい。
上記の構成によれば、対象サブブロックに隣接する隣接サブブロックに非0変換係数が含まれるか否かに基づいて、該対象サブブロックに属する変換係数有無フラグに対して、共通のコンテキストインデックスを導出するので、高い符号化効率を維持しつつ、コンテキストインデックス導出に係る処理量を削減することができる。
また、上記の構成において、各変換係数有無フラグは、輝度に関する変換係数有無フラグ、及び色差に関する変換係数有無フラグの何れかであって、上記コンテキストインデックス導出手段は、対象サブブロックに隣接する隣接サブブロックに非0変換係数が含まれるか否かに基づいて、該対象サブブロックに属する色差に関する変換係数有無フラグに対して、共通のコンテキストインデックスを導出する、ことが好ましい。
上記の構成によれば、対象サブブロックに隣接する隣接サブブロックに非0変換係数が含まれるか否かに基づいて、該対象サブブロックに属する色差に関する変換係数有無フラグに対して、共通のコンテキストインデックスを導出するので、高い符号化効率を維持しつつ、コンテキストインデックス導出に係る処理量を削減することができる。
また、上記の課題を解決するために、本発明に係る画像復号装置は、上記算術復号装置と、上記算術復号装置によって復号された変換係数を逆周波数変換することによって残差画像を生成する逆周波数変換手段と、上記逆周波数変換手段によって生成された残差画像と、生成済みの復号画像から予測された予測画像とを加算することによって復号画像を生成する復号画像生成手段と、を備えていることを特徴としている。
上記の構成によれば、上記算術復号装置と同様に、復号対象となるサブブロック係数有無フラグの符号量を削減することができ、変換係数の復号に係る処理量が削減される。
また、上記の課題を解決するために、本発明に係る算術符号化装置は、対象画像を単位領域毎に周波数変換することによって周波数成分毎に得られる各変換係数について、該変換係数を表す各種シンタックスを算術符号化することによって符号化データを生成する算術符号化装置であって、処理対象の単位領域に対応する対象周波数領域を所定サイズのサブブロックに分割するサブブロック分割手段と、上記サブブロック分割手段により分割された各サブブロックについて、該サブブロックに非0変換係数が少なくとも1つ含まれるか否かを表すサブブロック係数有無フラグを符号化するサブブロック係数有無フラグ符号化手段と、上記サブブロック係数有無フラグ符号化手段によるサブブロックスキャン順を設定するサブブロックスキャン順設定手段と、を備え、上記サブブロックスキャン順設定手段は、処理対象の単位領域に適用された予測方式がイントラ予測である場合に、該イントラ予測の予測方向に応じて、サブブロックスキャン順を設定する、ことを特徴としている。
上記のように構成された算術符号化装置によれば、処理対象の単位領域に適用された予測方式がイントラ予測である場合に、該イントラ予測の予測方向に応じて、サブブロックスキャン順を設定する。一般に、イントラ予測の予測方向と、周波数領域における変換係数の配置の偏りとの間には相関がある。したがって、上記の構成によれば、イントラ予測の予測方向に応じて、サブブロックスキャン順を設定することによって、サブブロック係数有無フラグの偏りに適したサブブロックスキャンを行うことができる。これによって、符号化対象となるサブブロック係数有無フラグの符号量を削減することができ、変換係数の符号化に係る処理量が削減される。
また、上記の課題を解決するために、本発明に係る画像符号化装置は、符号化対象画像と予測画像との残差画像を単位領域毎に周波数変換することによって変換係数を生成する変換係数生成手段と、上記算術符号化装置と、を備えており、上記算術符号化装置は、上記変換係数生成手段によって生成された変換係数を表す各種のシンタックスを算術符号化することによって符号化データを生成するものである、ことを特徴としている。
上記の構成によれば、上記算術符号化装置と同様に、符号化対象となるサブブロック係数有無フラグの符号量を削減することができ、変換係数の符号化に係る処理量が削減される。
また、本発明に係る算術復号装置は、対象画像を単位領域毎に周波数変換することによって周波数成分毎に得られる各変換係数について、該変換係数を表す各種シンタックスを算術符号化することによって得られた符号化データを復号する算術復号装置であって、各変換係数が0であるか否かを示すシンタックスである各変換係数有無フラグに割り付けるコンテキストインデックスを導出するコンテキストインデックス導出手段と、各変換係数有無フラグを、該変換係数有無フラグに割り付けられたコンテキストインデックスによって指定される確率状態に基づいて算術復号するシンタックス復号手段と、を備え、上記コンテキストインデックス導出手段は、第1の形状を有する周波数領域と、上記第1の形状とは異なる第2の形状を有する周波数領域とを、それぞれ複数のサブ領域に分割したうえで、各サブ領域に対してコンテキストインデックスを導出するものであり、上記第1の形状を有する周波数領域の分割パターン、及び上記第2の形状を有する周波数領域の分割パターンは、回転及び軸対称変換を介して互いに一致する、ことを特徴としている。
上記のように構成された算術復号装置によれば、上記第1の形状を有する周波数領域の分割パターン、及び上記第2の形状を有する周波数領域の分割パターンは、回転及び軸対称変換を介して互いに一致する。このように、回転及び軸対称変換を介して互いに一致する分割パターンを用いた分割処理を行うことによって、分類処理の処理量が削減されるので、変換係数の復号に係る処理量を削減することができる。
また、上記の構成において、上記コンテキストインデックス導出手段は、周波数領域における対象周波数成分の位置(xC,yC)(xCは0以上の整数、yCは0以上の整数)と、該周波数領域の横幅を示す変数であるlog2TrafoWidth(log2TrafoWidthは自然数)と該周波数領域の縦幅を示す変数であるlog2TrafoHeight(log2TrafoHeightは自然数)に基づき、
X=log2TrafoWidth == 2 ? xC : xC>>2
Y=log2TrafoHeight == 2 ? yC : yC>>2
によって変数X及びYを導出し、
X=0かつY=0であるとき、対象周波数成分をサブ領域A0に分類し、
(X=0かつY=0)でなくX<2かつY<2であるとき、対象周波数成分をサブ領域A1に分類し、
X=2かつY<2であるとき、対象周波数成分をサブ領域A2へ分類し、
X=3かつY<2であるとき、対象周波数成分をサブ領域A3へ分類し、
X<2かつY=2であるとき、対象周波数成分をサブ領域A4へ分類し、
X<2かつY=3であるとき、対象周波数成分をサブ領域A5へ分類し、
X≧2かつY≧2であるとき、対象周波数成分をサブ領域A6へ分類する、ことが好ましい。
上記の構成によれば、周波数領域における対象周波数成分の位置(xC,yC)と、該周波数領域の横幅を示す変数であるlog2TrafoWidthと該周波数領域の縦幅を示す変数であるlog2TrafoHeightとに基づき算出された変数X及びYを用いた分岐処理によって、周波数領域を複数のサブ領域へ分割するので、分類処理の処理量が削減される。
また、上記算術復号装置において、上記第1のサイズを有する周波数領域の分割パターンは、輝度成分と色差成分とにおいて共通であり、上記第2のサイズを有する周波数領域の分割パターンは、輝度成分と色差成分とにおいて共通であることが好ましい。
上記の構成によれば、輝度成分と色差成分とにおいて、周波数成分の分割パターンが同じであるため、コンテキストインデックス導出処理の簡素化されるので、変換係数の復号に係る処理量が削減される。
また、本発明に係る算術復号装置は、対象画像を単位領域毎に周波数変換することによって周波数成分毎に得られる各変換係数について、該変換係数を表す各種シンタックスを算術符号化することによって得られた符号化データを復号する算術復号装置であって、各変換係数が0であるか否かを示すシンタックスである各変換係数有無フラグに割り付けるコンテキストインデックスを導出するコンテキストインデックス導出手段と、各変換係数有無フラグを、該変換係数有無フラグに割り付けられたコンテキストインデックスによって指定される確率状態に基づいて算術復号するシンタックス復号手段と、を備え、上記コンテキストインデックス導出手段は、対象周波数領域を、それぞれ複数のサブ領域に分割したうえで、各サブ領域に対してコンテキストインデックスを導出するものであり、上記対象周波数領域の分割パターンは、輝度成分と色差成分において共通である、ことを特徴としている。
上記のように構成された算術復号装置によれば、輝度成分と色差成分とにおいて、周波数成分の分割パターンが同じであるため、コンテキストインデックス導出処理の簡素化されるので、変換係数の復号に係る処理量が削減される。
また、上記コンテキストインデックス導出手段は、周波数領域における対象周波数成分の位置(xC,yC)(xCは0以上の整数、yCは0以上の整数)と、該周波数領域の横幅を示す変数であるwidth(widthは自然数)と該周波数領域の縦幅を示す変数であるheight(heightは自然数)とに基づき、xC<width/2、かつ、yC<height/2の場合、対象周波数成分を(1−a)〜(1−d)の条件によりサブ領域R0〜R3へ分類し、
(1−a)xC<width/4、かつ、yC<height/4の場合、対象周波数成分をサブ領域R0へ分類する
(1−b)xC≧width/4、かつ、yC<height/4の場合、対象周波数成分をサブ領域R1へ分類する
(1−c)xC<width/4、かつ、yC≧height/4の場合、対象周波数成分をサブ領域R2へ分類する
(1−d)xC≧width/4、かつ、yC≧height/4の場合、対象周波数成分をサブ領域R3へ分類する
xC≧width/2、かつ、yC<height/2の場合、(2−a)〜(2−b)の条件により、対象周波数成分をサブ領域R4、またはR5へ分類し、
(2−a)xC<width×3/4の場合、対象周波数成分をサブ領域R4へ分類する
(2−b)xC≧width×3/4の場合、対象周波数成分をサブ領域R5へ分類する
xC<width/2、かつ、yC≧height/2の場合、(3−a)〜(3−b)の条件により、対象周波数成分をサブ領域R6、またはR7へ分類し、
(3−a)yC<height×3/4の場合、対象周波数成分をサブ領域R6へ分類する
(3−b)yC≧height×3/4の場合、対象周波数成分をサブ領域R7へ分類する
xC≧width/2、かつ、yC≧height/2の場合、対象周波数成分をサブ領域R8へ分類する、ことが好ましい。
上記の構成は、互いに異なるサイズを有する周波数領域に対して共通の分類処理として用いることができるので、コンテキストインデックス導出処理を簡略化することができる。また、上記の構成によれば、従来の構成に比べて、導出すべきコンテキストインデックスの数を削減することができるので、コンテキストインデックス導出処理の軽減化、及びコンテキストインデックスを保持しておくためのメモリサイズの低減を図ることができる。
また、上記コンテキストインデックス導出手段は、周波数領域における対象周波数成分の位置(xC,yC)(xCは0以上の整数、yCは0以上の整数)と、該周波数領域の横幅を示す変数であるwidth(widthは自然数)と該周波数領域の縦幅を示す変数であるheight(heightは自然数)とに基づき、xC<width/2、かつ、yC<height/2を満たす場合、(1−a)〜(1−b)の条件により対象周波数成分をサブ領域R0〜R1へ分類し、
(1−a)xC<width/4、かつ、yC<height/4の場合、対象周波数成分をサブ領域R0へ分類する
(1−b)xC≧width/4、または、yC≧height/4の場合、対象周波数成分をサブ領域R1へ分類する
xC≧width/2、かつ、yC<height/2の場合、(2−a)〜(2−b)の条件により、対象周波数成分をサブ領域R2、またはR3へ分類し、
(2−a)xC<width×3/4の場合、対象周波数成分をサブ領域R2へ分類する
(2−b)xC≧width×3/4の場合、対象周波数成分をサブ領域R3へ分類する
xC<width/2、かつ、yC≧height/2の場合、(3−a)〜(3−b)の条件により、対象周波数成分をサブ領域R4、またはR5へ分類し、
(3−a)yC<height×3/4の場合、対象周波数成分をサブ領域R4へ分類する
(3−b)yC≧height×3/4の場合、対象周波数成分をサブ領域R5へ分類する
xC≧width/2、かつ、yC≧height/2の場合、対象周波数成分をサブ領域R6へ分類する、ことが好ましい。
上記の構成によれば、互いに異なるサイズを有する周波数領域に対して共通の分類処理として用いることができるので、コンテキストインデックス導出処理を簡略化することができる。また、上記の構成によれば、従来の構成に比べて、導出すべきコンテキストインデックスの数を削減することができるので、コンテキストインデックス導出処理の軽減化、及びコンテキストインデックスを保持しておくためのメモリサイズの低減を図ることができる。