〔1〕実施形態1
本発明の一実施形態について図1〜図14を参照して説明する。まず、図2を参照しながら、動画像復号装置(画像復号装置)1および動画像符号化装置(画像符号化装置)2の概要について説明する。図2は、動画像復号装置1の概略的構成を示す機能ブロック図である。
図2に示す動画像復号装置1および動画像符号化装置2は、H.264/MPEG−4 AVC規格に採用されている技術、VCEG(Video Coding Expert Group)における共同開発用コーデックであるKTAソフトウェアに採用されている技術、TMuC(Test Model under Consideration)ソフトウェアに採用されている技術、および、その後継コーデックであるHEVC(High-Efficiency Video Coding)にて提案されている技術を実装している。
動画像復号装置1には、動画像符号化装置2が動画像を符号化した符号化データ#1が入力される。動画像復号装置1は、入力された符号化データ#1を復号して動画像#2を外部に出力する。動画像復号装置1の詳細な説明に先立ち、符号化データ#1の構成を以下に説明する。
〔符号化データの構成〕
図3を用いて、動画像符号化装置2によって生成され、動画像復号装置1によって復号される符号化データ#1の構成例について説明する。符号化データ#1は、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。
符号化データ#1におけるピクチャレイヤ以下の階層の構造を図3に示す。図3の(a)〜(d)は、それぞれ、ピクチャPICTを規定するピクチャレイヤ、スライスSを規定するスライスレイヤ、ツリーブロック(Tree block)TBLKを規定するツリーブロックレイヤ、ツリーブロックTBLKに含まれる符号化単位(Coding Unit;CU)を規定するCUレイヤを示す図である。
(ピクチャレイヤ)
ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。ピクチャPICTは、図3の(a)に示すように、ピクチャヘッダPH、及び、スライスS1〜SNSを含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
なお、以下、スライスS1〜SNSのそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化データ#1に含まれるデータであって、添え字を付している他のデータについても同様である。
ピクチャヘッダPHには、対象ピクチャの復号方法を決定するために動画像復号装置1が参照する符号化パラメータ群が含まれている。例えば、動画像符号化装置2が符号化の際に用いた可変長符号化のモードを示す符号化モード情報(entropy_coding_mode_flag)は、ピクチャヘッダPHに含まれる符号化パラメータの一例である。
entropy_coding_mode_flagが0の場合、当該ピクチャPICTは、LCEC(Low Complexity Entropy Coding)またはCAVLC(Context-based Adaptive Variable Length Coding)によって符号化されている。また、entropy_coding_mode_flagが1である場合、当該ピクチャPICTは、CABAC(Context-based Adaptive Binary Arithmetic Coding)によって符号化されている。
なお、ピクチャヘッダPHは、ピクチャー・パラメーター・セット(PPS:Picture Parameter Set)とも称される。
(スライスレイヤ)
スライスレイヤでは、処理対象のスライスS(対象スライスとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。スライスSは、図3の(b)に示すように、スライスヘッダSH、及び、ツリーブロックTBLK1〜TBLKNC(NCはスライスSに含まれるツリーブロックの総数)のシーケンスを含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために動画像復号装置1が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、又は、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、又は、イントラ予測を用いるBスライスなどが挙げられる。
また、スライスヘッダSHには、動画像復号装置1の備えるループフィルタ(不図示)によって参照されるフィルタパラメータが含まれていてもよい。
(ツリーブロックレイヤ)
ツリーブロックレイヤでは、処理対象のツリーブロックTBLK(以下、対象ツリーブロックとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。
ツリーブロックTBLKは、ツリーブロックヘッダTBLKHと、符号化単位情報CU1〜CUNL(NLはツリーブロックTBLKに含まれる符号化単位情報の総数)とを含む。ここで、まず、ツリーブロックTBLKと、符号化単位情報CUとの関係について説明すると次のとおりである。
ツリーブロックTBLKは、イントラ予測またはインター予測、および、変換の各処理ためのブロックサイズを特定するためのユニットに分割される。
ツリーブロックTBLKの上記ユニットは、再帰的な4分木分割により分割されている。この再帰的な4分木分割により得られる木構造のことを以下、符号化ツリー(coding tree)と称する。
以下、符号化ツリーの末端のノードであるリーフ(leaf)に対応するユニットを、符号化ノード(coding node)として参照する。また、符号化ノードは、符号化処理の基本的な単位となるため、以下、符号化ノードのことを、符号化単位(CU)とも称する。
つまり、符号化単位情報(以下、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が参照する符号化パラメータが含まれる。具体的には、図3の(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に含まれるデータの具体的な内容の説明をする前に、CUに含まれるデータの木構造について説明する。符号化ノードは、予測ツリー(prediction tree;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)とも称する。
(CU情報のデータ構造)
続いて、図3の(d)を参照しながらCU情報CUに含まれるデータの具体的な内容について説明する。図3の(d)に示すように、CU情報CUは、具体的には、スキップフラグSKIP、PT情報PTI、および、TT情報TTIを含む。
スキップフラグSKIPは、対象のPUについて、スキップモードが適用されているか否かを示すフラグであり、スキップフラグSKIPの値が1の場合、すなわち、対象CUにスキップモードが適用されている場合、そのCU情報CUにおけるPT情報PTI、および、TT情報TTIは省略される。なお、スキップフラグSKIPは、Iスライスでは省略される。
PT情報PTIは、CUに含まれるPTに関する情報である。言い換えれば、PT情報PTIは、PTに含まれる1または複数のPUそれぞれに関する情報の集合であり、動画像復号装置1により予測画像を生成する際に参照される。PT情報PTIは、図3の(d)に示すように、予測タイプ情報PType、および、予測情報PInfoを含んでいる。
予測タイプ情報PTypeは、対象PUについての予測画像生成方法として、イントラ予測を用いるのか、または、インター予測を用いるのかを指定する情報である。
予測情報PInfoは、予測タイプ情報PTypeが何れの予測方法を指定するのかに応じて、イントラ予測情報、または、インター予測情報より構成される。以下では、イントラ予測が適用されるPUをイントラPUとも呼称し、インター予測が適用されるPUをインターPUとも呼称する。
また、予測情報PInfoは、対象PUの形状、サイズ、および、位置を指定する情報が含まれる。上述のとおり予測画像の生成は、PUを単位として行われる。予測情報PInfoの詳細については後述する。
TT情報TTIは、CUに含まれるTTに関する情報である。言い換えれば、TT情報TTIは、TTに含まれる1または複数のTUそれぞれに関する情報の集合であり、動画像復号装置1により残差データを復号する際に参照される。なお、以下、TUのことをブロックと称することもある。
TT情報TTIは、図3の(d)に示すように、対象CUの各変換ブロックへの分割パターンを指定するTT分割情報SP_TU、および、TU情報TUI1〜TUINT(NTは、対象CUに含まれるブロックの総数)んでいる。
TT分割情報SP_TUは、具体的には、対象CUに含まれる各TUの形状、サイズ、および、対象CU内での位置を決定するための情報である。例えば、TT分割情報SP_TUは、対象となるノードの分割を行うのか否かを示す情報(split_transform_unit_flag)と、その分割の深度を示す情報(trafoDepth)とから実現することができる。
また、例えば、CUのサイズが、64×64の場合、分割により得られる各TUは、32×32画素から2×2画素までのサイズを取り得る。
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)。
(予測情報PInfo)
上述のとおり、予測情報PInfoには、インター予測情報およびイントラ予測情報の2種類がある。
インター予測情報には、動画像復号装置1が、インター予測によってインター予測画像を生成する際に参照される符号化パラメータが含まれる。より具体的には、インター予測情報には、対象CUの各インターPUへの分割パターンを指定するインターPU分割情報、および、各インターPUについてのインター予測パラメータが含まれる。
インター予測パラメータには、参照画像インデックスと、推定動きベクトルインデックスと、動きベクトル残差とが含まれる。
一方、イントラ予測情報には、動画像復号装置1が、イントラ予測によってイントラ予測画像を生成する際に参照される符号化パラメータが含まれる。より具体的には、イントラ予測情報には、対象CUの各イントラPUへの分割パターンを指定するイントラPU分割情報、および、各イントラPUについてのイントラ予測パラメータが含まれる。イントラ予測パラメータは、各イントラPUについてのイントラ予測方法(予測モード)を指定するためのパラメータである。
〔動画像復号装置〕
以下では、本実施形態に係る動画像復号装置1の構成について、図1〜図5を参照して説明する。
(動画像復号装置の概要)
動画像復号装置1は、PU毎に予測画像を生成し、生成された予測画像と、符号化データ#1から復号された予測残差とを加算することによって復号画像#2を生成し、生成された復号画像#2を外部に出力する。
ここで、予測画像の生成は、符号化データ#1を復号することによって得られる符号化パラメータを参照して行われる。符号化パラメータとは、予測画像を生成するために参照されるパラメータのことである。符号化パラメータには、画面間予測において参照される動きベクトルや画面内予測において参照される予測モードなどの予測パラメータに加えて、PUのサイズや形状、ブロックのサイズや形状、および、原画像と予測画像との残差データなどが含まれる。以下では、符号化パラメータに含まれる情報のうち、上記残差データを除く全ての情報の集合を、サイド情報と呼ぶ。
また、以下では、上記PUおよびTUが、CUと同じサイズである場合を例に挙げ説明を行う。しかしながら、これに限定されるものではなく、PUおよびTUがCUよりも小さい単位である場合に対しても適用することができる。
また、以下では、復号の対象となるピクチャ(フレーム)、スライス、ツリーブロック、ブロック、および、PUをそれぞれ、対象ピクチャ、対象スライス、対象ツリーブロック、対象ブロック、および、対象PUと呼ぶことにする。
なお、ツリーブロックのサイズは、例えば64×64画素であり、PUのサイズは、例えば、64×64画素、32×32画素、16×16画素、8×8画素や4×4画素などである。しかしながら、これらのサイズは、単なる例示であり、ツリーブロックおよびPUのサイズは以上に示したサイズ以外のサイズであってもよい。
(動画像復号装置の構成)
再び、図2を参照して、動画像復号装置1の概略的構成について説明すると次のとおりである。図2は、動画像復号装置1の概略的構成について示した機能ブロック図である。
図2に示すように動画像復号装置1は、可変長符号逆多重化部11、TU情報復号部12、逆量子化・逆変換部13、予測画像生成部14、加算器15およびフレームメモリ16を備えている。
[可変長符号逆多重化部]
可変長符号逆多重化部11は、動画像復号装置1に入力された1フレーム分の符号化データ#1を、逆多重化することで、図3に示した階層構造に含まれる各種情報に分離する。例えば、可変長符号逆多重化部11は、各種ヘッダに含まれる情報を参照して、符号化データ#1を、スライス、ツリーブロックに順次分離する。
ここで、各種ヘッダには、(1)対象ピクチャのスライスへの分割方法についての情報、および(2)対象スライスに属するツリーブロックのサイズ、形状および対象スライス内での位置についての情報が含まれる。
そして、可変長符号逆多重化部11は、ツリーブロックヘッダTBLKHに含まれるツリーブロック分割情報SP_TBLKを参照して、対象ツリーブロックを、CUに分割する。また、可変長符号逆多重化部11は、対象CUについてTT情報TTI、およびPT情報PTIを取得する。
可変長符号逆多重化部11は、対象CUについて得られたTT情報TTIに含まれるTU情報TUIを所定の順にTU情報復号部12に供給する。また、可変長符号逆多重化部11は、対象CUについて得られたPT情報PTIを予測画像生成部14に供給する。
[TU情報復号部]
TU情報復号部12は、可変長符号逆多重化部11から供給されるTU情報TUIの復号を行って、復号済みTU情報TUI’を生成する。
例えば、TU情報復号部12は、対象ブロックについて、TU情報TUIから量子化予測残差を復号する。ここで、対象ブロックについての量子化予測残差は、量子化された変換係数が2次元の行列に配列された形式で表現できる。以下、量子化された変換係数の2次元の行列表現のことを係数行列と称する。
TU情報復号部12は、復号済みTU情報TUI’を逆量子化・逆変換部13に供給する。なお、TU情報復号部12の動作詳細については後述する。
[逆量子化・逆変換部]
逆量子化・逆変換部13は、TU情報復号部12から供給される復号済み復号済みTU情報TUI’に基づいて対象CUについて、ブロックごとに、量子化予測残差の逆量子化・逆変換を行う。逆量子化・逆変換部13は、復号済みTU情報TUI’に含まれる量子化予測残差を逆量子化および逆DCT変換(Inverse Discrete Cosine Transform)することによって、各対象PUについて、画素毎の予測残差Dを復元する。逆量子化・逆変換部13は、復元した予測残差Dを加算器15に供給する。
[予測画像生成部]
予測画像生成部14は、対象CUに含まれる各PUについて、当該PUの周辺の復号済み画像である局所復号画像P’を参照して、イントラ予測またはインター予測により予測画像Predを生成する。予測画像生成部14は、対象CUについて生成した予測画像Predを加算器15に供給する。
[加算器]
加算器15は、予測画像生成部14より供給される予測画像Predと、逆量子化・逆変換部13より供給される予測残差Dとを加算することによって、対象CUについての復号画像Pを生成する。
[フレームメモリ]
フレームメモリ16には、復号された復号画像Pが順次記録される。フレームメモリ16には、対象ツリーブロックを復号する時点において、当該対象ツリーブロックよりも先に復号された全てのツリーブロック(例えば、ラスタスキャン順で先行する全てのツリーブロック)に対応する復号画像が記録されている。
なお、動画像復号装置1において、画像内の全てのツリーブロックに対して、ツリーブロック単位の復号画像生成処理が終わった時点で、動画像復号装置1に入力された1フレーム分の符号化データ#1に対応する復号画像#2が外部に出力される。
(係数のスキャンについて)
ここで、TU情報復号部12の構成の詳細について説明する前に、係数のスキャンについて説明する。
係数の符号化においては、動画像符号化装置2において、対象ブロックにおける係数の集合を表す係数行列が所定の順序によりスキャンされる。
スキャンとは、係数行列における係数の座標を、1次元のスキャン順インデックスに変換する処理である。変換後の係数は、1次元配列に格納されて保持される。スキャンでは従来知られているジグザグスキャン順序等を用いることができる。
符号化処理では、まず対象ブロックにおいて、左上の位置にあるDC係数から、右下の位置にある最も高周波成分の係数までがジグザグスキャン順序に基づいてスキャンされる。
なお、高周波成分の係数の値は、ゼロまたはゼロに近くなる傾向がある一方で、低周波成分の係数の値は、ゼロでないまたは値が大きい可能性が高いという特性がある。このためジグザグスキャンは、低周波成分の係数を早くスキャンするスキャン順序となっている。
また、動画像符号化装置2では、スキャンの後、係数の符号化処理が行われる。係数の符号化処理は、スキャンとは逆の順序にて行われる。
以下において、この処理順序のことを逆順のジグザグスキャンとも呼ぶ。つまり、符号化処理は、係数行列に対して逆順のジグザグスキャンで行われる。また、符号化処理順序について説明する場合は、便宜的に、係数行列をベースに説明する。
高周波成分は、値が“0”であることが多いので、本実施形態の符号化処理においては、このようなゼロ係数の符号化を省略し、DC係数からみて最後の非ゼロの係数を基点に行うものとする。
なお、以上では、説明の便宜上、8×8の係数行列のスキャン例を示したが、4×4の係数行列をスキャンする場合についても同様のことが言える。また、スキャン順序をジグザグスキャン以外の方法、例えばラスタスキャンと同様の順序などに適応的に変更してもよい。
(係数の符号化について)
以下において、動画像符号化装置2において符号化される係数符号化データについて説明する。上述のとおり符号化処理においては、まず、最後の非ゼロ係数が符号化される。続いて、所定の条件下において、ランモードによる符号化が行われる。ランモード終了条件が満たされることにより、ランモードが終了すると、残りの係数について、レベルモードによる符号化が行われる。このようにして全ての係数が符号化される。
以下、最後の非ゼロ係数、ランモード、および、レベルモードで符号化されるデータについて説明する。
[最後の非ゼロ係数]
最後の非ゼロ係数は、最後の非ゼロ係数の位置last_pos、最後の非ゼロ係数のレベルlevel、最後の非ゼロ係数の正負符号signが符号化される。ここで係数のレベルとは、係数の絶対値を意味する。last_posは、スキャン順インデックスの形式の値をとる。最後の非ゼロ係数が、スキャン順で10番目(DC係数を1番目とする)であり、その値が“−1”である場合は次のとおりである。
last_pos:9
level:1,sign:1
[ランモード]
所定の条件下、ランモードを実行する場合、以下の符号化が行われる。ランモードとは、連続するゼロ係数の数(0ラン)を符号化するモードである。どのような条件において、ランモードによる符号化が行われるかについては、後述する。
ランモードでは、係数ごとに、0ランrun、係数のレベルlevel、および係数の正負符号signが符号化される。次に符号化する非ゼロ係数が、前の非ゼロ係数との間に0を1つ挟んでおり、かつ値が“1”である場合は次のとおりである。
run:1,level:1,sign:0
なお、非特許文献1,2では、levelが2以上の係数が出現した場合を、ランモードの終了条件のひとつとして用いている。
[レベルモード]
レベルモードとは、ゼロ係数であっても、1つずつ符号化するモードである。レベルモードでは、係数ごとに、係数のレベルlevel、および係数の正負符号signが符号化される。符号化する係数の値が“−6”である場合、および符号化する係数がゼロ係数(値が“0”)である場合はそれぞれ次のとおりである。
level:6,sign:1
level:0
[備考]
なお、以上に示した符号化データは、単なる例示であり、シンタクス要素としては上記と異なる名称または定義により符号化されていてもよい。例えば、ランモードの係数のレベルlevelは、isLevelOne(levelは1)、および、これに追加してlevel_magnitude_minus2(係数値が2以上の場合であり、符号化するのは2を引いたレベル)のシンタクス要素として符号化されていてもよい(非特許文献1,2の「level_magnitude_minus2」を参照)。
なお、levelは、最後の非ゼロ係数については、last_pos_levelのシンタクス要素として符号化されていてもよい。
また、非ランモードのlevelは、level_magnitudeのシンタクス要素として符号化されていてもよい。
(TU情報復号部)
次に、図1を用いてTU情報復号部12の構成についてさらに詳しく説明する。図1は、TU情報復号部12の構成例について示す機能ブロック図である。
なお、以下では、TU情報復号部12が、TU情報TUIに含まれる符号化データのうち、係数に関するデータを復号するための構成について説明する。言い換えれば、以下では、TU情報復号部12が、符号化された量子化予測残差、すなわち係数符号化データを復号するための構成について説明する。
しかしながら、これに限られずTT情報復号部12は、符号化データに含まれる係数符号化データ以外のデータ、例えば、サイド情報等を復号することができる。
図1に示すように、TU情報復号部12は、VLCテーブルTBL11と、領域分割部(変換単位分割手段)121と、領域復号部(変換係数復号手段)122とを備える。
また、以下では、TU情報復号部12が、16×16サイズの対象ブロックについてTU情報TUIを復号して、復号済みTU情報TUI’を出力する例について説明する。しかしながら、これに限られず、TU情報復号部12が復号する対象ブロックのサイズは、64×64、32×32等であってもかまわない。
VLCテーブルTBL11は、ビット列(コード)と相互に変換可能なコード番号と、復号すべきパラメータとが対応付けられたテーブルである。VLCテーブルTBL11は、領域復号部122の復号処理において参照される。
VLCテーブルTBL11には、例示的に、8×8サイズの符号化単位について規定されているテーブルを用いている。すなわち、VLCテーブルTBL11には、入力となる変換単位(あるいは符号化単位)16×16サイズよりも小さな8×8サイズのものを用いている。
また、VLCテーブルTBL11は、適応的な復号処理ができるよう、復号処理におけるコンテキストに応じて複数規定されている。コンテキストには、例えば、処理中の係数の位置や、対象ブロックの属性(輝度/色差といった画素の種類や予測方法)などを用いることができる。
領域分割部121は、対象ブロックを複数の領域に分割する。以下において、領域分割部121の分割により得られる各領域のことを復号領域と称する。
また、以下では、領域分割部121が、16×16サイズの対象ブロックを、4つの8×8サイズの復号領域に分割する例について説明する。しかしながら、これに限られず、領域分割部121の分割の手法には、種々のものを採用することが可能である。その変形例については、後に詳しく説明する。
領域復号部122は、領域分割部121が対象ブロックを分割することで得られた復号領域のそれぞれについて、当該復号領域のサイズに応じて規定されているVLCテーブルTBL11を参照しながら、復号処理を行う。
以下では、領域復号部122が、8×8サイズの符号化単位について規定されているVLCテーブルTBL11をコンテキストに応じて参照しながら復号処理を行う例について説明する。
領域復号部122の具体的構成は次のとおりである。すなわち、領域復号部122は、最後の非ゼロ係数復号部101と、ランモード復号部102と、レベルモード復号部103とを備える。
最後の非ゼロ係数復号部101は、復号の対象となる復号領域(以下、対象復号領域と称する)について最後の非ゼロ係数を復号する。より具体的には、最後の非ゼロ係数復号部101は、対象復号領域に対応する係数符号化データに含まれるlast_pos、level、およびsignを復号する。
ランモード復号部102は、対象復号領域について、係数符号化データから、ランモードで符号化された係数を復号する。すなわち、ランモード復号部102は、コンテキストに応じたVLCテーブルTBL11を参照しながら、係数符号化データから、ランモードで符号化されたrun、levelおよびsignを復号する。以下、ランモード復号部102が行う復号処理のことを、ランモード復号処理と称する。
また、ランモード復号部102は、ランモード終了条件が満たされるまで、ランモード復号処理を繰り返して行う。ランモード終了条件の条件としては、例えば、復号した係数の値が閾値を超えている場合や、所定の数だけ係数を復号した場合などが挙げられる。
そして、ランモード終了条件が満たされた場合、ランモード復号部102は、レベルモード復号部103にレベルモードによる復号を開始させる。
レベルモード復号部103は、対象復号領域について、係数符号化データから、レベルモードで符号化された係数を復号する。すなわち、レベルモード復号部103は、コンテキストに応じたVLCテーブルTBL11を参照しながら、係数符号化データから、レベルモードで符号化されたlevelおよびsignを復号する。
以下、レベルモード復号部103が行う復号処理のことをレベルモード復号処理と称する。また、レベルモード復号部103は、直流成分の係数を復号するまで、レベルモード復号処理を繰り返して行う。
なお、領域復号部122は、対象ブロックの各対象復号領域について復号処理が完了すると、当該復号処理により得られた係数を含む復号済みTU情報TUI’を出力する。
(処理の流れ)
次に、図4を用いて、TU情報復号部12における復号処理について説明する。図4は、対象ブロックを領域分割して係数を符号化/復号する処理S10の流れについて例示したフローチャートである。
なお、動画像符号化装置2の符号化処理と動画像復号装置1の復号処理との相違点は、符号化処理を行うか復号処理を行うかであり、それ以外の流れは符号化処理および復号処理において概ね同じである。よって、図4では、動画像符号化装置2の符号化処理と動画像復号装置1の復号処理とをまとめて示している。
図4に示すように、まず、動画像復号装置1では、領域分割部121が、対象ブロックを分割する(S11)。
続いて、分割した各復号領域についてのループLP1に入る(S12)。ループLP1では、領域復号部122が、対象復号領域について係数符号化データに含まれる係数を復号する(S13)。
具体的には、まず、最後の非ゼロ係数復号部101が、対象復号領域における最後の非ゼロ係数を復号する。
続いて、ランモード終了条件が満たされるまで、ランモード復号部102が、ランモード復号処理を行う。
ランモードが終了した後、レベルモード復号部103が、レベルモード復号処理を行う。
このようにして、対象復号領域についての復号処理が完了すると、ループLP1の先頭に戻り(S14からS12へ)、次の対象復号領域についてさらに復号処理が行われる。
ブロックの各対象復号領域の復号処理が完了するとループLP1が終了する。その後、領域分割をして係数を復号する処理S10が終了する。
(具体例)
次に、図5および図6に加えて、さらに図4に示すフローチャートを参照しながら、TU情報復号部12における復号処理の具体例を示す。図5は、16×16サイズの対象ブロック(変換単位)BLKを示している。また、図6は、対象ブロックBLKを4つの8×8サイズの領域に分割して復号処理を行う場合の例を示している。
S11では、領域分割部121が、図5に示すように、16×16サイズの対象ブロックBLKを、4つの8×8サイズの復号領域(サブ単位)R11〜R14に分割する。
そして、ループLP1のS13では、領域復号部122が、図6に示す各復号領域を、復号領域R11、R12、R13およびR14の順で処理する。
なお、図6において復号領域R11〜R14内に示す矢印はスキャン順序を示している。すなわち、復号領域R11〜R14のスキャン順序は、ジグザグスキャンである。
S13では、まず、最後の非ゼロ係数復号部101が、スキャン順序上、最後の非ゼロ係数を復号する。そして、ランモード復号処理およびレベルモード復号処理により、最後の非ゼロ係数から、直流成分の係数までが、逆順のジグザグスキャンにより復号される。
復号領域R11の復号処理が完了すると、以下、復号領域R12、R13およびR14について同様に復号処理が行われる。
このように、復号領域R11〜R14では、8×8サイズの符号化単位に対する従来の復号方式で復号処理が行われる。すなわち、復号領域R11〜R14の復号処理では、最後の非ゼロ係数を復号し、ランモード復号処理およびレベルモード復号処理を行う従来の復号方式を用いることができる。
(変形例)
以下において、動画像復号装置1の好ましいいくつかの変形例について説明する。
変形例1−1:[非ゼロ係数の有無の判定]
係数符号化データにおいて、各復号領域について非ゼロ係数の有無を示す非ゼロ係数フラグが符号化されている場合、領域復号部122は非ゼロ係数の有無に応じて復号処理を行ってもよい。
非ゼロ係数の有無に応じて復号処理を行う場合、領域復号部122を次のように構成すればよい。
すなわち、まず、領域復号部122は非ゼロ係数フラグを復号して、非ゼロ係数の有無を判定する。そして、非ゼロ係数フラグが対象復号領域において非ゼロ係数が無いことを示す場合、領域復号部122は、当該対象領域における復号処理をスキップする。
図7を用いて、具体的に説明する。図7は、復号領域R11、R13およびR13に、非ゼロ係数が有り、復号領域R12について非ゼロ係数が無い場合の例を示している。すなわち、復号領域R12に示している「0」は、非ゼロ係数がないことを示している。
非ゼロ係数フラグでは、例えば、非ゼロ係数が無い場合、“0”が、非ゼロ係数が有る場合、“1”が符号化されている。
図7に示す例では、領域R11、R13、およびR14には非ゼロ係数が有り、領域R12には非ゼロ係数が無い。このため、非ゼロ係数フラグは、“1011”が符号化されている。なお、非ゼロ係数フラグの“1011”等のパターンをそのまま4ビットで固定長符号化せず、パターンの出現頻度に応じた可変長符号化を行ってもよい。
図7に示す例の復号処理は次のようにして行われる。まず、復号領域R11については、非ゼロ係数フラグ“1”が符号化されているので、領域復号部122は、復号領域R11に対して復号処理を行う。
続いて、復号領域R12については、非ゼロ係数フラグ“0”が符号化されているので、領域復号部122は、復号領域R12に対する復号処理をスキップする。
残りの復号領域R13およびR14については、復号領域R11と同様、非ゼロ係数が有ることを示す非ゼロ係数フラグ“1”が符号化されているので、領域復号部122は、復号領域R13およびR14のそれぞれに対して復号処理を行う。
以上の構成によれば、復号領域単位での不要な復号処理を省略することができるので、処理効率の向上を図ることができる。
変形例1−2:[復号領域の位置に応じて処理方法を変更する]
[1]スキャン方法の変更
以上の説明では、各復号領域のスキャン方式にジグザグスキャンを採用していたが、復号領域の位置に応じてスキャン方法を変更してもよい。
例えば、図8に示すように、対象ブロックBLKにおいて右上に位置する復号領域R12では水平スキャンを採用してもよい。また、図8に示すように、対象ブロックBLKにおいて左下に位置する復号領域R13では、垂直スキャンを採用してもよい。また、図8に示すように、復号領域R11およびR14では、ジグザグスキャンを採用してもよい。
[2]モード限定
以上の説明では、各復号領域の復号処理において、ランモード復号処理およびレベルモード復号処理を行っていたが、復号領域の位置に応じてランモード復号処理かレベルモード復号処理のいずれかを行う構成としてもよい。
例えば、対象ブロックBLKの右下に位置する復号領域R14は、高周波成分であるためゼロ係数の数が多い傾向がある。このため、復号領域R14では、復号処理をランモード復号処理のみで行ってもよい。
[3]VLCテーブルやコード番号の計算方法を変更する
ランモード復号処理において、復号領域の位置に応じて、参照するVLCテーブルや、コード番号の計算方法を変更してもよい。例えば、コード番号を示すビット列を、{run,level}のパラメータの組に変換するためのVLCテーブルを各復号領域の位置に応じて変更してもよい。
例えば、VLCテーブルを次のように構成する。すなわち、高周波成分側の復号領域(例えば、図6における復号領域R12〜R14)で参照されるVLCテーブルでは、短いビット列には、level=0である組を対応付けておく。また、低周波成分側の復号領域(例えば、図6における復号領域R11)で参照されるVLCテーブルでは、短いビット列には、runの短いものを対応付けておく。
高周波成分側の復号領域では、ゼロ係数が多くなる傾向があり、低周波成分側の復号領域では、非ゼロ係数が多くなりrunが短くなる傾向がある。
よって、以上のように構成すれば、各復号領域における非ゼロ係数の分布状況に応じた効率のよい復号処理を行うことができる。すなわち、復号すべき符号量を低減することができる。VLCテーブルの定義の詳細について、図12および図13を用いて、説明すれば以下の通りである。
図12は、{run,level}のパラメータの組を、コード番号に変換するためのVLCテーブルTBL11の一例を示している。また、同図は、runの最大値が4のときにおける2種類のVLCテーブルを示しており、(a)は、level=0の優先度が高いVLCテーブルT1を示しており、(b)は、level=0の優先度が低いVLCテーブルT2を示している。
なお、VLCテーブルT1およびVLCテーブルT2では、次の非ゼロ係数の絶対値が“1”のときlevel=0であり、また、次の非ゼロ係数の絶対値が“1”より大きいときlevel=1である。
図13は、上記VLCテーブルT1およびT2を各復号領域に対応付ける場合の例について示している。図13に示すように、復号領域R11は、VLCテーブルT2に対応付けられており、復号領域R12〜R14は、VLCテーブルT1に対応付けられている。
ランモード復号部102の復号処理の流れについて説明すると次のとおりである。まず、ランモード復号部102は、図13に示す対応付けに従い、復号領域R11のランモード復号処理においてVLCテーブルT2を参照する。
図12の(b)を用いて、より詳細に説明すると次のとおりである。すなわち、VLCテーブルT2では、runが短い{run,level}の組み合わせに、より小さいコード番号(短いコード)が割り当てられている。
例えば、VLCテーブルT1では、{run,level}=(0,0)の組み合わせに最も小さいコード番号“0”が割り当てられている。また、出現頻度を考慮して、{run,level}=(4,0)の組み合わせに次に小さいコード番号“1”が割り当てられている。
それ以外の組み合わせについては、levelが同じであれば、runが長いほうに、より大きなコード番号が割り当てられている。
level=0となる{run,level}の組み合わせについては、run=3のとき、コード番号“7”が割り当てられている。また、level=0となる{run,level}の組み合わせについては、run=3のとき、コード番号“8”が割り当てられている。
低周波成分側の復号領域R11では、runが短くなる傾向があるため、runが短い{run,level}の組み合わせに、より小さいコード番号を割り当てることで、符号化効率を向上させることができる。
また、ランモード復号部102は、図13に示す対応付けに従い、復号領域R12〜14のランモード復号処理においてVLCテーブルT1を参照する。
図12の(a)を用いて、より詳細に説明すると次のとおりである。すなわち、VLCテーブルT1では、level=0となる{run,level}の組み合わせに、より小さいコード番号(より短いコード)が割り当てられている。
VLCテーブルT1では、{run,level}=(0,0)の組み合わせに最も小さいコード番号“0”が割り当てられている。また、出現頻度を考慮して、{run,level}=(4,0)の組み合わせに次に小さいコード番号“1”が割り当てられている。
level=0となる{run,level}の組み合わせには、上記の組み合わせよりも大きなコード番号が割り当てられている。すなわち、runの長さに応じて、{run,level}=(0,1)〜(0,3)には、それぞれ、コード番号“5”〜“8”が割り当てられている。
高周波成分側の復号領域R12〜14では、level=0を復号することになる可能性が高い傾向があるため、level=0となる{run,level}の組み合わせに、より小さいコード番号を割り当てることで、符号化効率を向上させることができる。
なお、ランモード復号処理におけるパラメータ−コードの変換をVLCテーブルT1およびT2を用いて実行する例について示したが、これに限られず、VLCテーブルT1およびT2と同等の変換処理が演算により実現されていてもかまわない。
また、以上では、VLCテーブルT1およびT2の2種類のテーブルを用いてランモード復号処理を実行する例について説明したが、これに限られず、2種類より多くの種類のテーブルを定義しておいてもかまわない。例えば、ランモード復号部102は、復号領域R11〜R14において、相互に異なるVLCテーブルを参照するように構成されていてもかまわない。
[4]動的最適化
領域復号部122による、復号状況に応じた動的最適化の例について説明する。
[4−1]VLCテーブルの更新
領域復号部122は、パラメータの値の出現頻度をカウントし、出現頻度に応じてVLCテーブルのコード番号を書き換えてもよい。
すなわち、領域復号部122は、出現頻度が高いパラメータの値のコード番号をより小さな(よりコードが短い)ものに書き換え、出現頻度が低いパラメータの値のコード番号をより大きな(よりコードが長い)ものに書き換えてもよい。
図14を用いて説明すると次のとおりである。図14に例示するように、最適化前のVLCテーブルT3では、あるパラメータの値yにコード番号CN−1が割り当てられており、別のパラメータの値xにコード番号CNが割り当てられている。
領域復号部122が、最適化前のVLCテーブルT3のxと、これに対応するコード番号CNを参照したとする。
このとき、領域復号部122は、コード番号CNを1デクリメントして、xに対応するコード番号をCN−1に繰り上げる。その一方で、領域復号部122は、元々CN−1に対応していたyのコード番号を1インクリメントしてCNに対応付ける。ここでは、このようなコード番号の繰り上げ処理のことを最適化と称している。図14に示すVLCテーブルT4が、上記最適化後に得られるテーブルである。
さらに、ここで、領域復号部122がxを参照した場合、領域復号部122は、xに対応するコード番号をCN−2とする。
このようにして、領域復号部122は、復号するパラメータの値の出現頻度に応じて、短いコード番号が割り当てられるように、復号処理中に動的にVLCテーブルを更新する。
[4−2]適応速度について
動的最適化の適応速度について説明すると次のとおりである。図14では、パラメータの値を1回参照するたびに、コード番号を1デクリメントしていたが、これに限られず、コード番号を2以上デクリメントしてもよい。
適応速度の速さは、例えば、コード番号をデクリメントする大きさとして表現することができる。つまり、コード番号のデクリメントの量が“1”である場合よりも、“2”である場合のほうが、“適応速度が速い”といえる。
また、{run,level}のVLCテーブルを動的最適化する場合、高周波成分側の復号領域では、最適化時のインクリメントの量を“0”とし、低周波成分側では、“1”としてもよい。
すなわち、高周波成分側の復号領域では、最適化を行わない構成としてもよい。この構成を採用する理由としては次のとおりである。すなわち、高周波成分側ではランが長くなりやすく、特定の{run,level}が高頻度で発生する可能性が低い。このため、上記構成によれば、パラメータの値が出現するたびに最適化を行うことによる計算量の増加を防ぐことができる。
なお、動画像復号装置1の領域復号部122において上記最適化を行ってもかまわない。
[5]ランモード終了条件の変更
復号領域の位置に応じてランモード終了条件を変更してもよい。例えば、高周波成分側の復号領域では、ランモード終了条件を厳しくし、低周波成分側の復号領域では、ランモード終了条件を緩和してもよい。つまり、対象ブロックにおいて左上に位置する復号領域ほど、ランモードを終了しやすくすればよい。また、高周波成分側の復号領域では、レベルモード復号処理を行わないようにしてもよい。
高周波成分側の復号領域では、係数の絶対値が小さくなる傾向がある。このため、高周波成分側の復号領域ではランが長くなる可能性が高い。よって、なるべくランモード復号処理が実行されるようにすることが好ましい。
また、ランモード復号部102において、ランモード復号処理を開始するか否かを判定してもよい。ランモード復号部102は、例えば、最後の非ゼロ係数が復号された時点で参照可能なデータに基づいて、「係数の絶対値が全体的に小さいと判断できる」場合、ランモード復号処理を開始すると判定してもよい。
「係数の絶対値が全体的に小さいと判断できる」場合、ランが長くなる可能性が高いので、ランモード復号部102は、ランモード復号処理を実行する。
なお、最後の非ゼロ係数が復号された時点で参照可能なデータとは、例えば、対象ブロックの予測情報、最後の非ゼロ係数についての情報、その他エンコーダ側で符号化されていて既に復号されているフラグ等が挙げられる。
具体的には、最後の係数の値が1より大きい場合、ランモード復号部102は、ランモード復号処理をスキップしてもよい。
このほか、復号領域の位置に応じて係数復号処理における各種判定の閾値を変更してもよい。
変形例1−3:[対象ブロックの予測モードに応じて分割の有無を決定する]
領域分割部121は、対象ブロックの予測モードに応じて分割の有無を決定する構成であってもよい。
例えば、領域分割部121は、対象ブロックの予測モードが、イントラ予測である場合に分割を行い、インター予測である場合に分割を行わないようにしてもよい。
また、対象ブロックの予測モードがインター予測であり、領域分割部121が分割を行わなかった場合、領域復号部122は、対象ブロックにおいて、スキャン順序上、1番目から64番目までの係数のみを復号するようにしてもよい。すなわち、この場合、領域復号部122は、対象ブロックの左上側にある64個の係数のみを復号してもよい。
この場合、分割の有無を示すフラグの復号を省略することができるという効果を得ることができる。
変形例1−4:[領域の数およびサイズ]
図5および図6に示す例では、領域分割部121が、対象ブロックを4つの復号領域に分割することについて説明した。しかしながら、これに限られず、領域分割部121は、対象ブロックを4つより多い領域に分割してもかまわない。
また、対象ブロックは、16×16サイズのものに限られない。例えば、対象ブロックは、32×32サイズであっても、64×64サイズのものであってもかまわない。
例えば、対象ブロックが64×64サイズである場合、領域分割部121は、対象ブロックを、以下のとおり4つ以上の復号領域に分割してもかまわない。
すなわち、領域分割部121は、対象ブロックを64個の8×8サイズの復号領域に分割してもよい。また、領域分割部121は、対象ブロックを16個の16×16サイズの復号領域に分割してもよい。また、領域分割部121は、対象ブロックを4個の32×32サイズの復号領域に分割してもよい。
また、領域分割部121が対象ブロックを分割して得られる復号領域は、正方形のものには限られない。例えば、復号領域は、矩形であってもよい。また、対象ブロックを、左上の8×8サイズの復号領域(図5における復号領域R11に相当)と、それ以外の復号領域(図5における復号領域R12〜R14に相当)との2つに分割してもよい。
また、各復号領域の形状は同じでなくてもよい。例えば、対象ブロックを、図9に示すように、ジグザグスキャン順序上、64個の係数ごとに分割して復号領域を得てもよい。
すなわち、図9に示すように、対象ブロックを、復号領域R21〜R24に分割してもよい。復号領域R21〜R24の領域内に示す数字“64”は、領域内に係数が64個含まれることを示している。
復号領域R21は、DC係数を含む領域であり、同図では、その形状を直角三角形にて表している。また、復号領域R22およびR23の形状は、それぞれ台形にて表している。また、復号領域R24は、各領域のうち最も高周波成分側に有る領域であり、その形状を直角三角形にて表している。
なお、図9では、説明の便宜のため、領域R21およびR24の形状を直角三角形にて示し、領域R22およびR23の形状を台形にて表しているが、実際のところ厳密に言えば、直角三角形、台形にならない点には留意されたい。
また、各復号領域の形状および各復号領域に含まれる係数の数は、同じでなくてもよい。
このように、領域分割部121は、対象ブロックを、当該対象ブロックのサイズより小さいサイズの複数の復号領域に任意に分割することができる。
変形例1−5:[復号領域の処理順序]
図5および図6に示す例では、領域復号部122が、復号領域R11、R12、R13およびR14の順(いわゆるラスタスキャン順)で復号処理を行うと説明した。しかしながら、これに限られず、領域復号部122は、これ以外の順序で復号処理を行ってもよい。
例えば、領域復号部122は、復号領域R14、R13、R12およびR11の順、あるいは別の例として、復号領域R11、R13、R12およびR14の順で復号処理を行ってもかまわない。また、復号領域の数が4つより多い場合、例えば、16である場合には、ジグザグスキャン順に処理してもよい。
〔動画像符号化装置〕
まず、以下では、本実施形態に係る動画像符号化装置2について、図10〜図14を参照して説明する。
(動画像符号化装置の概要)
動画像符号化装置2は、概略的に言えば、入力画像#10を符号化することによって符号化データ#1を生成し、出力する装置である。
(動画像符号化装置の構成)
まず、図10を用いて、動画像符号化装置2の構成例について説明する。図10は、動画像符号化装置2の構成について示す機能ブロック図である。図10に示すように、動画像符号化装置2は、符号化設定部21、逆量子化・逆変換部22、予測画像生成部23、加算器24、フレームメモリ25、減算器26、変換・量子化部27、および可変長符号化部28を備えている。
符号化設定部21は、入力画像#10に基づいて、符号化に関する画像データおよび各種の設定情報を生成する。
具体的には、符号化設定部21は、次の画像データおよび設定情報を生成する。
まず、符号化設定部21は、入力画像#10を、スライス単位、ツリーブロック単位に順次分割することにより、対象CUについてのCU画像#100を生成する。
また、符号化設定部21は、分割処理の結果に基づいて、ヘッダ情報H’を生成する。ヘッダ情報H’は、(1)対象スライスに属するツリーブロックのサイズ、形状および対象スライス内での位置についての情報、並びに、(2)各ツリーブロックに属するCUのサイズ、形状および対象ツリーブロック内での位置についてのCU情報CU’を含んでいる。
さらに、符号化設定部21は、CU画像#100、および、CU情報CU’を参照して、PT設定情報PTI’を生成する。PT設定情報PTI’には、(1)対象CUの各PUへの可能な分割パターン、および、(2)各PUに割り付ける可能な予測モード、の全ての組み合わせに関する情報が含まれる。
符号化設定部21は、CU画像#100を減算器26に供給する。また、符号化設定部21は、ヘッダ情報H’を可変長符号化部28に供給する。また、符号化設定部21は、PT設定情報PTI’を予測画像生成部23に供給する。
逆量子化・逆変換部22は、変換・量子化部27より供給される、ブロック毎の量子化予測残差を、逆量子化、および、逆DCT変換(Inverse Discrete Cosine Transform)することによって、ブロック毎の予測残差を復元する。
また、逆量子化・逆変換部22は、ブロック毎の予測残差を、TT分割情報(後述)により指定される分割パターンに従って統合し、対象CUについての予測残差Dを生成する。逆量子化・逆変換部22は、生成した対象CUについての予測残差Dを、加算器24に供給する。
予測画像生成部23は、フレームメモリ25に記録されている局所復号画像P’、および、PT設定情報PTI’を参照して、対象CUについての予測画像Predを生成する。予測画像生成部23は、予測画像生成処理により得られた予測パラメータを、PT設定情報PTI’に設定し、設定後のPT設定情報PTI’を可変長符号化部28に転送する。なお、予測画像生成部23による予測画像生成処理は、動画像復号装置1の備える予測画像生成部14と同様であるので、ここでは説明を省略する。
加算器24は、予測画像生成部23より供給される予測画像Predと、逆量子化・逆変換部22より供給される予測残差Dとを加算することによって、対象CUについての復号画像Pを生成する。
フレームメモリ25には、復号された復号画像Pが順次記録される。フレームメモリ25には、対象ツリーブロックを復号する時点において、当該対象ツリーブロックよりも先に復号された全てのツリーブロック(例えば、ラスタスキャン順で先行する全てのツリーブロック)に対応する復号画像が記録されている。
減算器26は、CU画像#100から予測画像Predを減算することによって、対象CUについての予測残差Dを生成する。減算器26は、生成した予測残差Dを、変換・量子化部27に供給する。
変換・量子化部27は、予測残差Dに対して、DCT変換(Discrete Cosine Transform)および量子化を行うことで量子化予測残差を生成する。
具体的には、変換・量子化部27は、CU画像#100、および、CU情報CU’を参照し、対象CUの1または複数のブロックへの分割パターンを決定する。また、決定された分割パターンに従って、予測残差Dを、各ブロックについての予測残差に分割する。
また、変換・量子化部27は、各ブロックについての予測残差をDCT変換(Discrete Cosine Transform)することによって周波数領域における予測残差を生成した後、当該周波数領域における予測残差を量子化することによってブロック毎の量子化予測残差を生成する。
また、変換・量子化部27は、生成したブロック毎の量子化予測残差と、対象CUの分割パターンを指定するTT分割情報と、対象CUの各ブロックへの可能な全分割パターンに関する情報とを含むTT設定情報TTI’を生成する。変換・量子化部27は、生成したTT設定情報TTI’を逆量子化・逆変換部22に供給する。
また、変換・量子化部27は、対象ブロックの量子化予測残差を含むTU設定情報TUI’を生成し、可変長符号化部28に供給する。
可変長符号化部28は、TU設定情報TUI’、PT設定情報PTI’、およびヘッダ情報H’に基づいて符号化データ#1を生成し、出力する。なお、可変長符号化部28の詳細については以下に説明する。
(可変長符号化部)
次に、図11を用いて可変長符号化部28の構成についてさらに詳しく説明する。図11は、可変長符号化部28の構成例について示すブロック図である。
図11に示すように、可変長符号化部28は、TU情報符号化部280、ヘッダ情報符号化部40、PTI情報符号化部41、および符号化データ多重化部42を備える。
TU情報符号化部280は、TU設定情報TUI’を符号化して、符号化データ多重化部42に供給する。また、ヘッダ情報符号化部40は、ヘッダ情報H’を符号化して、符号化データ多重化部42に供給する。また、PTI情報符号化部41は、PTI情報PTI’を符号化して符号化データ多重化部42に供給する。
符号化データ多重化部42は、TU設定情報TUI’、ヘッダ情報H’およびPTI情報PTI’を多重化して符号化データ#1を生成し、出力する。
ここで、TU情報符号化部280の構成についてさらに詳しく説明すると次のとおりである。なお、以下では、TU設定情報TUI’に含まれる量子化予測残差、すなわち係数行列を符号化して係数符号化データを得るための構成について説明する。
また、以下では、TU情報符号化部280が、16×16サイズの対象ブロックについてTU情報TUIを符号化して、符号化済みTU情報TUI’を出力する例について説明する。しかしながら、これに限られず、TU情報符号化部280が符号化する対象ブロックのサイズは、64×64、32×32等であってもかまわない。
図11に示すように、TU情報符号化部280は、VLCテーブルTBL21と、領域分割部(変換単位分割手段)281と、領域符号化部(変換係数符号化手段)282とを備える。
VLCテーブルTBL21は、各パラメータと、符号化データのビット列であるコードとの対応づけが定義されたテーブルである。
VLCテーブルTBL21には、例示的に、8×8サイズの符号化単位について規定されているテーブルを用いている。すなわち、VLCテーブルTBL21には、入力となる変換単位(あるいは符号化単位)16×16サイズよりも小さな8×8サイズのものを用いている。
また、VLCテーブルTBL21は、適応的な符号化処理ができるよう、符号化処理におけるコンテキストに応じて複数規定されている。
領域分割部281は、対象ブロックを複数の領域に分割する。以下において、領域分割部281の分割により得られる各領域のことを符号化領域と称する。
また、以下では、領域分割部281が、16×16サイズの対象ブロックを、4つの符号化領域に分割する例について説明する。すなわち、領域分割部281は16×16サイズの対象ブロックを4つの8×8サイズの符号化領域に分割する。
領域分割部281は、例えば、図5を用いて示したように対象ブロックを分割することができる。なお、以下の説明では、図5において示した復号領域R11〜R14を、符号化領域R11〜R14と読み替える。
すなわち、図5に示すように、領域分割部281は、対象ブロックBLKを、符号化領域R11〜R14に分割する。
しかしながら、これに限られず領域分割部281の分割の手法には、種々のものを適用することが可能である。その変形例については、後に詳しく説明する。
領域符号化部282は、領域分割部281が対象ブロックを分割することで得られた符号化領域のそれぞれについて、当該符号化領域のサイズに応じて規定されているVLCテーブルTBL21を参照しながら符号化処理を行う。すなわち、以下では、領域符号化部282が、8×8サイズについて規定されているVLCテーブルTBL21をコンテキストに応じて参照しながら符号化処理を行う例について説明する。
領域符号化部282の具体的構成は次のとおりである。すなわち、領域符号化部282は、最後の非ゼロ係数符号化部201と、ランモード符号化部202と、レベルモード符号化部203とを備える。
最後の非ゼロ係数符号化部201は、符号化の対象となる符号化領域(以下、対象符号化領域と称する)について最後の非ゼロ係数を符号化する。より具体的には、最後の非ゼロ係数符号化部201は、対象符号化領域に対応する係数行列に含まれる最後の非ゼロ係数についてlast_pos、level、およびsignを符号化する。
ランモード符号化部202は、対象符号化領域についての係数行列に対してランモード符号化処理を施す。すなわち、ランモード符号化部202は、コンテキストに応じたVLCテーブルTBL21を参照しながら、ランモードにより、係数行列に含まれる非ゼロ係数について、順次、run、levelおよびsignを符号化する。以下、ランモード符号化部202が行う符号化処理のことを、ランモード符号化処理と称する。
また、ランモード符号化部202は、ランモード終了条件が満たされるまで、ランモード符号化処理を繰り返して行う。ランモード終了条件の条件としては、例えば、符号化した係数の値が閾値を超えている場合や、所定の数だけ係数を符号化した場合などが挙げられる。
そして、ランモード終了条件が満たされた場合、ランモード符号化部202は、レベルモード符号化部203にレベルモードによる符号化を開始させる。
レベルモード符号化部203は、対象符号化領域について、係数行列に含まれる係数を、レベルモードにより符号化する。すなわち、レベルモード符号化部203は、コンテキストに応じたVLCテーブルTBL21を参照しながら、レベルモードにより、係数行列に含まれる係数のlevelおよびsignを順次符号化する。
以下、レベルモード符号化部203が行う符号化処理のことをレベルモード符号化処理と称する。また、レベルモード符号化部203は、対象符号化領域のスキャン順で最初の係数を符号化するまで、レベルモード符号化処理を繰り返して行う。
なお、領域符号化部282は、対象ブロックの各対象符号化領域について符号化処理が完了すると、当該符号化処理により得られた係数を含む符号化済みTU設定情報TUI’を出力する。
なお、領域符号化部282は、図6に示したとおりに符号化処理を行うことができる。以下の説明では、図6において示した復号領域R11〜R14を、符号化領域R11〜R14と読み替える。
すなわち、領域符号化部282は、図6に示す符号化領域R11、R12、R13およびR14の順で符号化処理を行う。また、符号化領域R11〜R14のそれぞれでは、まず、最後の非ゼロ係数復号部101が、スキャン順序上、最後の非ゼロ係数を復号する。そして、ランモード復号処理およびレベルモード復号処理により、最後の非ゼロ係数から、対象符号化領域のスキャン順で最初の係数までが、スキャン順序の逆順に復号される。
(処理の流れ)
上述のとおり、動画像符号化装置2の符号化処理の流れは、図4を用いて示した動画像復号装置1の復号処理の流れと概ね同じであるので、ここではその詳細な説明については省略する。
(変形例)
以下において、動画像符号化装置2の好ましいいくつかの変形例について説明する。
変形例1−1’:[非ゼロ係数の有無の判定]
動画像符号化装置2の備える領域符号化部282は、各符号化領域について非ゼロ係数の有無を判定すると共に、判定した結果を示す非ゼロ係数フラグを符号化し、係数符号化データに含める構成としてもよい。また、このような構成において、領域符号化部282は、非ゼロ係数が存在しない符号化領域についての係数の符号化を省略することができる。
符号化領域及び、非ゼロ係数フラグの具体例については、動画像復号装置1の変形例1−1において既に述べたものと略同様であるので、ここでは説明を省略する。ただし、変形例1−1の説明における「復号領域」、「復号処理」、及び、「領域復号部122」をそれぞれ「符号化領域」、「符号化処理」、及び、「領域符号化部282」と読み替えるものとする。
変形例1−2’:[符号化領域の位置に応じて処理方法を変更する]
[1]スキャン方法の変更
以上の説明では、各符号化領域のスキャン方式にジグザグスキャンを採用していたが、符号化領域の位置に応じてスキャン方法を変更してもよい。具体的なスキャン方法については、例えば、動画像復号装置1の変形例1−2[1]において説明したものと同様であるので、ここでは説明を省略する。ただし、変形例1−2[1]の説明における「復号領域」、「復号処理」、及び、「領域復号部122」をそれぞれ「符号化領域」、「符号化処理」、及び、「領域符号化部282」と読み替えるものとする。
[2]モード限定
以上の説明では、各符号化領域の符号化処理において、ランモード符号化処理およびレベルモード符号化処理を行っていたが、符号化領域の位置に応じてランモード符号化処理を行う構成としてもよい。具体的な処理例は、例えば、動画像復号装置1の変形例1−2[2]において説明したものと同様であるので、ここでは説明を省略する。ただし、変形例1−2[2]の説明における「復号領域」、「復号処理」、及び、「領域復号部122」をそれぞれ「符号化領域」、「符号化処理」、及び、「領域符号化部282」と読み替えるものとする。
[3]VLCテーブルやコード番号の計算方法を変更する
ランモード符号化処理において、符号化領域の位置に応じて、参照するVLCテーブルや、コード番号の計算方法を変更してもよい。例えば、コード番号を示すビット列を、{run,level}のパラメータの組に変換するためのVLCテーブルを各符号化領域の位置に応じて変更してもよい。具体的な処理例は、例えば、動画像復号装置1の変形例1−2[3]において説明したものと同様であるので、ここでは説明を省略する。ただし、変形例1−2[3]の説明における「復号領域」、「復号処理」、及び、「領域復号部122」をそれぞれ「符号化領域」、「符号化処理」、及び、「領域符号化部282」と読み替えるものとする。
[4]動的最適化
領域符号化部282による、符号化状況に応じた動的最適化の例について説明する。
[4−1]VLCテーブルの更新
領域符号化部282は、パラメータの値の出現頻度をカウントし、出現頻度に応じてVLCテーブルのコード番号を書き換えてもよい。
すなわち、領域符号化部282は、出現頻度が高いパラメータの値のコード番号をより小さな(よりコードが短い)ものに書き換え、出現頻度が低いパラメータの値のコード番号をより大きな(よりコードが長い)ものに書き換えてもよい。具体的な処理例は、例えば、動画像復号装置1の変形例1−2[4−1]において説明したものと同様であるので、ここでは説明を省略する。ただし、変形例1−2[4−1]の説明における「復号領域」、「復号処理」、及び、「領域復号部122」をそれぞれ「符号化領域」、「符号化処理」、及び、「領域符号化部282」と読み替えるものとする。
[4−2]適応速度について
動画像符号化装置2における動的最適化の適応速度については、動画像復号装置1の変形例1−2[4−2]において既に説明したものと同様であるのでここでは説明を省略する。
[5]ランモード終了条件の変更
符号化領域の位置に応じてランモード終了条件を変更してもよい。また、符号化領域の位置に応じてランモード開始条件を判定してもよい。その詳細については、動画像復号装置1の変形例1−2[5]の説明において説明したとおりであるので、ここでは、その詳細な説明を省略する。
変形例1−3’:[対象ブロックの予測モードに応じて分割の有無を決定する]
領域分割部281は、対象ブロックの予測モードに応じて分割の有無を決定する構成であってもよい。具体的な処理は、例えば、動画像復号装置1の変形例1−3において説明したものと同様であるので、ここでは説明を省略する。
変形例1−4’:[領域の数およびサイズ]
領域分割部281は、対象ブロックを4つより多い領域に分割してもかまわない。具体的な処理は、例えば、動画像復号装置1の変形例1−4において説明したものと同様であるので、ここでは説明を省略する。
変形例1−5’:[符号化領域の処理順序]
領域符号化部282による符号化処理のスキャン順序は、上述した例に限定されるものではない。領域符号化部282は、例えば、動画像復号装置1の変形例1−5において説明した処理と同様の処理を行う構成としてもよい。
なお、上述のように、動画像復号装置1の[変形例]は、動画像符号化装置2に適用することが可能である。逆に、ここで示した動画像符号化装置2の[変形例]についても、符号化処理を復号処理に変更することで動画像復号装置1に適応することができる。
(作用・効果)
以上に説明したように、動画像復号装置1は、対象画像の画素値を変換単位ごとに周波数変換して得られた変換係数を符号化して得られる符号化データのTU情報TUIから、該変換係数を復号する動画像復号装置1において、上記変換単位である対象ブロックを、複数の復号領域に分割する領域分割部121と、TU情報TUIから上記変換係数を得るための復号情報であって、上記復号領域ごとに割り当てられているVLCテーブルTBL11を参照して、上記復号領域に含まれる変換係数を復号する領域復号部122と、を備える構成である。
また、動画像符号化装置2は、対象画像の画素値を変換単位ごとに周波数変換して得られた変換係数を符号化する動画像符号化装置2において、上記変換単位である対象ブロックを、複数の符号化領域に分割する領域分割部281と、上記変換係数を符号化するためのVLCテーブルTBL21であって、上記符号化領域ごとに割り当てられているVLCテーブルTBL21を参照して、上記変換単位に含まれる変換係数を符号化する領域符号化部282と、を備える構成である。
動画像復号装置1の上記構成によれば、8×8サイズの復号領域について規定されているVLCテーブル11に基づいて復号処理を行うので、元の対象ブロックのサイズ(16×16)について規定されているVLCテーブルに基づいて復号処理を行うのに比べて、VLCテーブルのサイズを低減することができる。また、スキャン順を表すテーブルについても同様に、8×8サイズの復号領域について規定されているテーブルに基づいて復号処理を行うので、テーブルのサイズを低減することができる。
なお、動画像符号化装置2についても同様の作用・効果を得ることができる。
〔2〕実施形態2
本発明の他の実施形態について図15〜図22に基づいて説明すると、以下の通りである。なお、説明の便宜上、前記実施形態1にて説明した図面と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
以下では、相対位置指定による係数の符号化および復号について示す。また、以下の説明では対象ブロックのサイズは、一例として16×16であるとする。
〔動画像復号装置〕
まず、図15を参照しながら、動画像復号装置1の構成について説明すると以下のとおりである。本実施形態に係る動画像復号装置1では、図2に示した動画像復号装置1において、TU情報復号部12を、図15に示すTU情報復号部12Aに変更する。
以下、図15に示すTU情報復号部12Aについて説明すると次のとおりである。すなわち、図15に示すように、TU情報復号部12Aは、VLCテーブルTBL30、ラン−レベルモード復号部310、相対位置モード復号部320、および処理モード制御部330を備える。
VLCテーブルTBL30は、ビット列(コード)と相互に変換可能なコード番号と、復号すべきパラメータとが対応付けられたテーブルである。VLCテーブルTBL30は、後述するラン−レベルモード復号部310によって参照されるラン−レベルモード用テーブルTBL31と、相対位置モード復号部320によって参照される相対位置モード用テーブルTBL32とを備える。
ラン−レベルモード用テーブルTBL31は、図1に示したTU情報復号部12のVLCテーブルTBL11と同様のものを用いることができる。よって、ここではその説明は省略する。また、相対位置モード用テーブルTBL32の定義については、後述する。
ラン−レベルモード復号部310は、処理モード制御部330の制御により、ランモード復号処理およびレベルモード復号処理を行う。以下、ラン−レベルモード復号部310による復号処理のことを、ラン−レベルモード復号処理と称する。なお、ランモード復号処理およびレベルモード復号処理については、前記実施形態1において既に説明済みであるので、ここではその説明を省略する。
ラン−レベルモード復号部(復号手段)310は、最後の非ゼロ係数復号部311、ランモード復号部312、およびレベルモード復号部313を備える。
最後の非ゼロ係数復号部311、ランモード復号部312、およびレベルモード復号部313は、それぞれ、図1を用いて示した、最後の非ゼロ係数復号部101、ランモード復号部102、およびレベルモード復号部103と同様の機能を有している。よって、その機能については既に説明済みであるので、ここではその説明を省略する。
なお、ランモード復号部102、およびレベルモード復号部103は、ラン−レベルモード復号処理において、ラン−レベルモード用テーブルTBL31を参照するように構成されている。
相対位置モード復号部320は、非ゼロ係数の相対位置が符号化された係数符号化データの復号処理を行う。相対位置モード復号部320は、具体的には、最後の非ゼロ係数復号部321、相対位置復号部(相対位置復号手段)322、および係数位置決定部(位置特定手段)323を備える。
最後の非ゼロ係数復号部321は、対象ブロックにおける最後の非ゼロ係数を復号する。最後の非ゼロ係数復号部321は、対象ブロックについての係数符号化データに含まれるlast_pos、level、およびsignを復号する。また、最後の非ゼロ係数復号部321は、last_posを、DC係数を原点(0,0)とする座標表示(lastx,lasty)に変換する。以下、このDC係数を原点(0,0)とする座標表示で示される位置のことを絶対位置と称する。
相対位置復号部322は、対象ブロックについて、非ゼロ係数の相対位置が符号化された係数符号化データから、復号対象となる非ゼロ係数の相対位置(dx,dy)と、非ゼロ係数の値(levelおよびsign)とを復号する。ここで非ゼロ係数の相対位置とは、ひとつ前に復号した非ゼロ係数の絶対位置から見た、復号対象となる非ゼロ係数の相対的な位置のことをいう。また、以下において、このような相対位置による非ゼロ係数の位置の表現を相対位置指定と称する。
係数位置決定部323は、相対位置復号部322が復号した非ゼロ係数の相対位置(dx,dy)、および、ひとつ前に復号した非ゼロ係数の絶対位置(x,y)から復号対象となる非ゼロ係数の絶対位置を決定する。
最後の非ゼロ係数C0からn+1番目の非ゼロ係数Cn+1までの相対位置は、例えば、次の関係式(1−1)〜(1−3)にて表現することができる。
C0 :x0=lastx, y0=lasty … (1−1)
C1 :x1=x0+dx, y1=y0+dy … (1−2)
…
Cn+1:xn+1=xn+dx, yn+1=yn+dy … (1−3)
係数位置決定部323は、上記関係式(1−1)〜(1−3)を用いて復号対象となる非ゼロ係数の絶対位置を決定する。
処理モード制御部330は、復号対象となる非ゼロ係数が、所定の領域内に位置するか否かを判定し、当該判定結果に応じて、ラン−レベルモード復号部310によって復号処理を行うか、相対位置モード復号部320によって復号処理を行うかを制御する。
具体的には、処理モード制御部330は、復号対象となる非ゼロ係数の位置が低周波成分側の8×8サイズの領域内か否かを判定する。
すなわち、上記関係式(1−1)〜(1−3)の例に従えば、復号対象となる非ゼロ係数Cnの位置(xn,yn)が、“xn<8&&yn<8”であるか否かを判定する。なお、“&&”は、論理積を示す演算子である。
復号対象となる非ゼロ係数の位置が低周波成分側の8×8サイズの領域内であれば、処理モード制御部330は、ラン−レベルモード復号部310に次の非ゼロ係数Cn+1からの復号処理を実行させる。
復号対象となる非ゼロ係数の位置が低周波成分側の8×8サイズの領域内でなければ、処理モード制御部330は、相対位置モード復号部320に復号処理を実行させる。
(処理の流れ)
次に、図16を用いて、TU情報復号部12Aにおける復号処理について説明する。図16は、相対位置指定により非ゼロ係数を符号化/復号する処理S20の流れについて例示したフローチャートである。
なお、図16では、動画像符号化装置2の符号化処理と動画像復号装置1の復号処理とをまとめて示している。
図16に示すように、相対位置指定により非ゼロ係数を復号する処理S20が開始されると、まず、動画像復号装置1では、処理モード制御部330が相対位置モード復号部320に復号処理を実行させる。これに応じて、最後の非ゼロ係数復号部321が、対象ブロックの最後の非ゼロ係数を復号する(S21)。
処理モード制御部330は、S21において復号された最後の非ゼロ係数の位置が、相対位置指定された係数を復号する領域内であるか否かを判定する(S22)。
相対位置指定された係数を復号する領域内である場合(S22においてYES)、処理モード制御部330は、相対位置モード復号部320に復号処理を実行させる。これに応じて、相対位置復号部322が、相対位置指定された係数の位置を復号し、係数位置決定部323が、当該係数の絶対位置を決定することで復号対象となる係数を復号する(S23)。
以下、復号された係数の位置が、相対位置指定された係数を復号する領域内である場合、相対位置指定による係数の復号処理を継続して行う(S22、S23)。
復号された係数の位置が、相対位置指定された係数を復号する領域内でなくなった場合(S22においてNO)、処理モード制御部330は、ラン−レベルモード復号部310に復号処理を実行させる。これに応じて、ランモード復号部312がランモード復号処理を実行し、その後、レベルモード復号部313がレベルモード復号処理を実行する(S24)。このようにして、対象ブロックのすべての係数が復号され相対位置指定により係数を復号する処理が終了する。
(具体例)
図17を用いて、TU情報復号部12Aにおける復号処理の具体例について説明する。図17は、TU情報復号部12Aの復号処理の実行例を示す図である。
図17に示すように、対象ブロックBLKは、2つの領域R1およびR2からなる。ここで、対象ブロックBLKは、以上の説明と同様、16×16サイズのブロックであるとし、領域R1は、低周波成分側の8×8サイズの領域であるとする。
なお、領域R1に示す矢印は、領域R1におけるスキャン順序を示しており、そのスキャン順序は、ジグザグスキャンである。また、領域R2は、相対位置指定により係数を復号する領域である。
相対位置指定により係数を復号する処理が開始されると、まず、最後の非ゼロ係数復号部321が、対象ブロックBLKにおける最後の非ゼロ係数CNを復号する(S21)。
最後の非ゼロ係数CNは、領域R2に位置するので(S22においてYES)、処理モード制御部330は、相対位置モード復号部320に復号処理を実行させる。
そして、相対位置復号部322が、非ゼロ係数CN−1の相対位置を復号し、係数位置決定部323が、復号された当該相対位置と、最後の非ゼロ係数CNの絶対位置とから、非ゼロ係数CN−1の絶対位置を決定する。さらに、level、signが復号されることで非ゼロ係数CN−1が復号される(S23)。
非ゼロ係数CN−1以下、非ゼロ係数C1までは、領域R2に位置するので、上記と同様に、相対位置モード復号部320が復号処理を実行する(S22、S23)。
さらに、非ゼロ係数C0まで、相対位置モード復号部320が復号処理を完了すると、非ゼロ係数C0は、領域R1に位置するので、(S22においてNO)、処理モード制御部330は、ラン−レベルモード復号部310に復号処理を実行させる。
ラン−レベルモード復号部310では、ランモード復号部312が、非ゼロ係数C0を基点として、領域R1においてランモード復号処理を実行する。また、ランモード復号処理が終了すると、レベルモード復号部313が、レベルモード復号処理を実行する。
ここで、ラン−レベルモード復号部310の復号処理は、8×8サイズの符号化単位を(逆順の)ジグザグスキャンにより復号する処理と同様のものが採用可能である。また、領域R1において最初に復号される非ゼロ係数C0は、8×8サイズの領域R1における最後の非ゼロ係数であることが好ましい。
(実施例)
以下において、TU情報復号部12Aのより具体的な実施例について説明する。相対位置(dx,dy)の復号に用いる相対位置モード用テーブルTBL32は、次のように構成することができる。
すなわち、処理対象の非ゼロ係数とひとつ前の非ゼロ係数との相対距離が小さいほど、相対位置モード用テーブルTBL32において短いコード(ビット列)が対応付けられていてもよい。処理対象の非ゼロ係数とひとつ前の非ゼロ係数との相対距離は、例えば、処理対象の非ゼロ係数の相対位置(dx、dy)から導出することが可能である。
あるいは、出現頻度がより高い相対距離を示す(dx、dy)の組に、相対位置モード用テーブルTBL32おいて、より短いコードを対応付けるようにしてもよい。
上記構成によれば、相対距離や、出現頻度に応じて適応的に短いコードを割り当てることができるので復号する符号量の低減を図ることができる。
なお、dxおよびdyの絶対値の最大値は、符号化対象ブロックの辺の長さ−1である。つまり、符号化対象ブロックが、16×16である場合、dxおよびdyの絶対値の最大値は、15である。
(変形例)
[所定の領域の変更]
処理モード制御部330が、対象ブロックのサイズを判定し、当該判定に応じて、ラン−レベルモード復号部310によって復号処理を行うか、相対位置モード復号部320によって復号処理を行うかを制御してもよい。
例えば、処理モード制御部330は、対象ブロックのサイズが8×8以下であれば、ラン−レベルモード復号部310に復号処理を実行させる。また、処理モード制御部330は、対象ブロックのサイズが16×16以上であれば、相対位置モード復号部320に復号処理を実行させる。
また、処理モード制御部330は、対象ブロックにおいて、復号する非ゼロ係数の数が所定の個数、例えば、64個以下であれば、ラン−レベルモード復号部310に復号処理を実行させてもよい。
また、係数符号化データにおいて、すべての非ゼロ係数が相対位置の指定により表現されていてもよい。この場合、すべての非ゼロ係数を相対位置モード復号部330が復号する。
また、処理モード制御部330は、所定の領域を、スライスタイプや、予測モード、対象ブロックのサイズに応じて変更してもよい。
例えば、処理モード制御部330は、対象ブロックにおいて、イントラ予測が符号化されていた場合、低周波成分側の8×8サイズの領域を所定の領域として設定する。また、例えば、処理モード制御部330は、対象ブロックにおいて、インター予測が符号化されていた場合、低周波成分側の4×4サイズの領域を所定の領域として設定する。
[相対位置モード用テーブルの変更]
相対位置モード用テーブルTBL32を、非ゼロ係数の絶対位置(xn,yn)に応じて複数用意してもよい。この相対位置モード用テーブルTBL32は、それぞれの非ゼロ係数の絶対位置において、dx、dyが取り得る値の範囲に基づいて最適化しておくことが好ましい。
そして、相対位置モード復号部420は、非ゼロ係数の絶対位置(xn,yn)に応じて参照する相対位置モード用テーブルTBL32を変更してもよい。
上記構成によれば、適応的に参照する相対位置モード用テーブルTBL42を切り替えることができるので、復号する符号量を低減することができる。
なお、本変形例の詳細については、後の動画像符号化装置2の説明において行う。
[非ゼロ係数の相対位置の表現]
以上では、非ゼロ係数の相対位置を(dx,dy)の形式で表現したが、これに限られない。例えば、相対位置は、方向と距離により表現されていてもよい。
[VLCテーブルについて]
図20に示すように相対位置モード用テーブルTBL32を構成してもよい。図20に示す相対位置モード用テーブルTBL32では、dxまたはdyの値が小さいほど、小さいコード番号が対応付けられている。
例えば、dxまたはdyが0のとき、コード番号は“0”である。つまり、(dx,dy)=(0,1)であれば、コード番号“0,1”を割り当てる。
さらに図20を参照すれば、dx,dy“−1”に“1”が対応付けられており、dx,dy“1”に“2”が対応付けられている。このように、相対位置モード用テーブルTBL32では、絶対値が同じとなる値であれば符号が負になるほうが、小さいコード番号が割り当てられている。
なお、図20に示す相対位置モード用テーブルTBL32では、コード番号が小さいほど短いコードが対応付けられていることが好ましい。
(変形例)
[dx、dyが取り得る値の範囲に基づいてVLCテーブルを最適化する手法]
相対位置モード用テーブルTBL32を、係数の絶対位置(xn,yn)に応じて複数用意してもよい。この相対位置モード用テーブルTBL32は、それぞれの係数の絶対位置において、dx、dyが取り得る値の範囲に基づいて最適化しておくことが好ましい。
図21および図22を用いて、その具体的構成例について以下に示す。図21は、図17や図19(後に説明する)に示す対象ブロックBLKにおける領域R2を、さらに領域R2a、領域R2b、および領域R2cの3つの領域に細分化する例について示している。
また、図22は、領域R2a、領域R2b、および領域R2cに対応付けるVLCテーブルの一例を示している。
同図の(a)は、xまたはyの値が、所定以上の正の値にならない場合に相対位置モード復号部320の相対位置決定部323が参照する相対位置モード用テーブルTd1を示している。
また、同図の(b)は、xまたはyの値が、所定以下の負の値にならない場合に、相対位置モード復号部320の相対位置決定部323が参照する相対位置モード用テーブルTd2を示している。
図21に示す対象ブロックBLKは、領域R1、領域R2a〜R2cから構成されている。図21では、対象ブロックBLKのDC係数の位置を、(0,0)の座標表示で表している。また、対象ブロックBLK内における、ジグザグスキャン順上最後の係数の位置、すなわち最も高周波の成分の位置を(15,15)で表している。
図21では、例示的に、領域R1は、(0,0)を左上頂点とする正方形の内側領域としている。また、領域R2aは、(8,0)を左上頂点とする正方形の内側領域としている。また、領域R2bは、(0,8)を左上頂点とする正方形の内側領域とし、領域R2cは、(8,8)を左上頂点とする正方形の内側領域としている。
図22の(a)に示す相対位置モード用テーブルTd1は、係数の値“0”にコード番号“0”が割り当てられている。以下、係数の値“−1”、“1”…“−7”、“7”に、それぞれ、コード番号“1”、“2”、…、“13”、“14”が割り当てられている。
つまり、係数の絶対値が小さいほうが、より小さいコード番号が割り当てられている。また、係数の絶対値が同じで正負符号が異なる場合、負の値のほうが、正の値よりも小さなコード番号が割り当てられている。例えば、係数の値“−1”、“1”…“−7”、“7”には、それぞれ、コード番号“1”、“2”、…、“13”、“14”が割り当てられている。
なお、係数の絶対値が“8”〜“15”の範囲においては、負の値“−8”〜“−15”のみが定義されている。
一方、図22の(b)に示す相対位置モード用テーブルTd2は、係数の絶対値が“0”〜“7”の範囲においては、相対位置モード用テーブルTd1と同じ定義となっている。
なお、係数の絶対値が“8”〜“15”の範囲においては、正の値“8”〜“15”のみが定義されている。
相対位置決定部323は、(dx,dy)の位置の取り得る範囲に応じて、下記のとおり参照するVLCテーブルを切り替える。
領域R2aについては、dxの取り得る範囲は、−15≦dx≦7であるので、相対位置決定部323は、相対位置モード用テーブルTd1を参照する。また、dyの取り得る範囲は、−7≦dy≦15であるので、相対位置決定部323は、相対位置モード用テーブルTd2を参照する。
また、領域R2bについては、dxの取り得る範囲は、−7≦dx≦15であるので、相対位置決定部323は、相対位置モード用テーブルTd2を参照する。また、dyの取り得る範囲は、−15≦dy≦7であるので、相対位置決定部323は、相対位置モード用テーブルTd1を参照する。
また、領域R2cについては、dxの取り得る範囲は、−15≦dx≦7であるので、相対位置決定部323は、相対位置モード用テーブルTd1を参照する。また、dyの取り得る範囲は、−15≦dy≦7であるので、相対位置決定部323は、相対位置モード用テーブルTd1を参照する。
以上のように、dx,dyの値の取り得る範囲に基づいてVLCテーブルを最適化することで、符号化効率を向上するこができる。
〔動画像符号化装置〕
まず、図18を参照しながら、動画像符号化装置2の構成について説明すると以下のとおりである。本実施形態に係る動画像符号化装置2では、図11に示した動画像符号化装置2の可変長符号化部11において、TU情報符号化部280を、図18に示すTU情報符号化部280Aに変更する。
以下、図18に示すTU情報符号化部280Aについて説明すると次のとおりである。すなわち、図18に示すように、TU情報符号化部280Aは、VLCテーブルTBL40、ラン−レベルモード符号化部410、相対位置モード符号化部420、および処理モード制御部430を備える。
VLCテーブルTBL40は、各パラメータと、符号化データのビット列であるコードとの対応づけが定義されたテーブルである。VLCテーブルTBL40は、後述するラン−レベルモード符号化部410によって参照されるラン−レベルモード用テーブルTBL41と、相対位置モード符号化部420によって参照される相対位置モード用テーブルTBL42とを備える。
ラン−レベルモード用テーブルTBL41は、図11に示したTU情報符号化部280のVLCテーブルTBL21と同様のものを用いることができる。よって、ここではその説明は省略する。また、相対位置モード用テーブルTBL42の定義については、後述する。
ラン−レベルモード符号化部410は、処理モード制御部330の制御により、ランモード符号化処理およびレベルモード符号化処理を行う(以下、ラン−レベルモード符号化処理と称する)。なお、ランモード符号化処理およびレベルモード符号化処理については、前記実施形態1において既に説明済みであるので、ここではその説明を省略する。
ラン−レベルモード符号化部410は、最後の非ゼロ係数符号化部411、ランモード符号化部412、およびレベルモード符号化部413を備える。
最後の非ゼロ係数符号化部411、ランモード符号化部412、およびレベルモード符号化部413は、それぞれ、図11を用いて示した、最後の非ゼロ係数符号化部201、ランモード符号化部202、およびレベルモード符号化部203と同様の機能を有している。よって、その機能については既に説明済みであるので、ここではその説明を省略する。
なお、ランモード符号化部202、およびレベルモード符号化部203は、ラン−レベルモード用テーブルTBL41を参照するように構成されている。
相対位置モード符号化部420は、符号化対象となる非ゼロ係数の対象ブロックにおける相対位置を符号化して係数符号化データを生成する。具体的には、相対位置モード符号化部420は、最後の非ゼロ係数符号化部421、相対位置算出部(相対位置符号化手段)422、および相対位置符号化部(相対位置符号化手段)423を備える。
最後の非ゼロ係数符号化部421は、対象ブロックにおける最後の非ゼロ係数を符号化する。最後の非ゼロ係数符号化部421は、対象ブロックにおいて、逆順のジグザグスキャンに従って最後の非ゼロ係数のlast_pos、level、およびsignを符号化する。また、最後の非ゼロ係数符号化部421は、last_posを、DC係数を原点(0,0)とする座標表示(lastx,lasty)に変換する。以下、このDC係数を原点(0,0)とする座標表示で示される位置のことを絶対位置と称する。
相対位置算出部422は、符号化対象となる係数の相対位置を、当該係数の絶対位置と、ひとつ前に符号化した非ゼロ係数の絶対位置とから算出する。
相対位置算出部422は、符号化対象となる非ゼロ係数の相対位置(dx,dy)を、前述の関係式(1−1)〜(1−3)に基づいて算出することができる。
相対位置符号化部423は、相対位置モード用テーブルTBL42を参照しながら、所定の順番で、相対位置算出部422が算出した非ゼロ係数の相対位置(dx,dy)と、非ゼロ係数のlevelおよびsignとを符号化することにより係数符号化データを生成する。
相対位置符号化部423が対象ブロックにおいて、どのような順番で非ゼロ係数を相対位置指定により符号化するかについては、後の実施例において詳しく説明する。
処理モード制御部430は、符号化対象となる非ゼロ係数が、所定の領域内に位置するか否かを判定し、当該判定結果に応じて、ラン−レベルモード符号化部410によって符号化処理を行うか、相対位置モード符号化部420によって符号化処理を行うかを制御する。
処理モード制御部430の制御の手法については、TU情報復号部12Aの処理モード制御部330について説明したものに準ずるので、ここではその説明を省略する。
(処理の流れ)
上述のとおり、動画像符号化装置2の符号化処理の流れは、図16を用いて示した動画像復号装置1の復号処理の流れと概ね同じであるので、ここではその詳細な説明については省略する。
(実施例)
[符号化順序について]
以下、図19を用いて、相対位置算出部422が対象ブロックにおいてどのような順番で非ゼロ係数を相対位置指定により符号化するかについての実施例を示す。図19は、相対位置指定による非ゼロ係数の符号化の例について示す図である。
図19に示す対象ブロックBLKは、例示的に、16×16サイズであるとし、領域R1は、当該対象ブロックにおける低周波成分側の8×8サイズの領域であるとする。また、領域R2は、対象ブロックにおける領域R1以外の領域である。
また、処理モード制御部430は、領域R1については、ラン−レベルモード符号化部410に符号化処理を実行させ、領域R2については、相対位置モード符号化部420に符号化処理を実行させる。
なお、以下では、例示的に、予め領域R2におけるN個の非ゼロ係数C(1)〜C(N)が検出されており、かつ領域R1における最後の非ゼロ係数C0が検出されているものとする。
相対位置符号化部423は、以下の工程を経て連鎖的に非ゼロ係数を符号化する(或いは、非ゼロ係数の相対位置を数珠繋ぎで符号化すると表現してもよい)。
工程[1] まず、相対位置符号化部423は、領域R1における最後の非ゼロ係数C0を基点とし、所定の選択基準により、領域R2における非ゼロ係数C(1)〜C(N)の中から、非ゼロ係数C0に連鎖させる次の非ゼロ係数C1を選択する。
所定の選択基準としては、例えば、相対位置算出部422によって算出されたC0と非ゼロ係数C(1)〜C(N)との相対位置(dx,dy)の符号化をそれぞれ試行して得られた符号量である。この場合、相対位置符号化部423は、符号量が小さい非ゼロ係数を次の非ゼロ係数C1として選択する。
工程[2] 相対位置符号化部423は、選択した非ゼロ係数を基点に、上記選択基準による選択工程を、領域R2における未選択の非ゼロ係数が無くなるまで順に繰り返す。
上記選択基準は、より一般的には、CnとCn+1との相対位置(dx,dy)の符号量であるといえる。
なお、上記選択基準は、単なる例示に過ぎずこれに限られない。例えば、CnとCn+1とのマンハッタン距離(|dx|+|dy|)や、CnとCn+1とのユークリッド距離(dx2+dy2)などでもよい。
上記工程[2]の選択工程を繰り返すことにより、非ゼロ係数C0〜CNが連鎖される。結果として、図19に例示するような非ゼロ係数C0〜CNの連鎖が得られる。
工程[3] 続いて、相対位置符号化部423は、非ゼロ係数CNの位置、絶対値(level)、正負の符号(sign)を符号化する。上記位置は、例えば、符号化対象ブロックの右下からの相対位置(dxN,dyN)で指定してもよいし、スキャン順序によるLastPosで指定してもよい。なお、非ゼロ係数CNは、必ずしも符号化対象ブロックを何らかのスキャン順序でスキャンした場合における最後の非ゼロ係数でなくてもかまわない。
工程[4] 相対位置符号化部423は、上記工程[2]における選択工程と逆順に、非ゼロ係数CN−1からC0まで、それぞれの相対位置(dx,dy)、絶対値(level)、正負の符号(sign)を符号化する。
非ゼロ係数C0を符号化が完了すると、処理モード制御部430が、ラン−レベルモード符号化部410に符号化処理を実行させる。ラン−レベルモード符号化部410が、ラン−レベルモード符号化処理により、非ゼロ係数C0以外の領域R1の係数を符号化する。
[VLCテーブルについて]
相対位置モード用テーブルTBL42は、図20に示すように構成してもよい。図20に示す相対位置モード用テーブルについては、既に説明したため、ここでは説明を省略する。
(変形例)
[dx、dyが取り得る値の範囲に基づいてVLCテーブルを最適化する手法]
相対位置モード用テーブルTBL42を、係数の絶対位置(xn,yn)に応じて複数用意してもよい。この相対位置モード用テーブルTBL42は、それぞれの係数の絶対位置において、dx、dyが取り得る値の範囲に基づいて最適化しておくことが好ましい。
本変形例の具体的な処理は、動画像復号装置の説明において図21及び図22を用いて説明したものと同様であるので、ここではその説明を省略する。ただし、「相対位置決定部323」を「相対位置符号化部423」と読み替えるものとする。
[その他]
なお、本実施形態に係る動画像復号装置1の[変形例]についても動画像符号化装置2に適用することが可能である。
(作用・効果)
以上に説明したように、動画像復号装置1は、対象画像の画素値を変換単位ごとに周波数変換して得られた変換係数が符号化された符号化データのTU情報TUIから、該変換係数を復号する動画像復号装置1において、復号対象となる変換係数のひとつ前に復号した変換係数からの相対位置を復号する相対位置復号部320と、ひとつ前に復号した上記変換係数の、上記変換単位における位置と、上記相対位置とから上記復号対象となる上記変換係数の位置を特定する係数位置決定部323と、を備える構成である。
また、動画像符号化装置2は、対象画像の画素値を変換単位ごとに周波数変換して得られた変換係数を符号化する動画像符号化装置2において、符号化対象となる上記変換係数の位置のひとつ前に符号化した上記変換係数の位置に対する相対位置を符号化する相対位置符号化部423を備える構成である。
高周波成分側の領域では、係数が疎らになる傾向がある。このため、スキャン順序に従ってランを符号化した場合、runの長さが非常に長くなる傾向がある。このため、符号化および復号に大きなテーブルを用いなければならなくなったり、符号量が増大したりする傾向がある。また、対象ブロックのサイズが大きいほどこれらの傾向がより顕著に現れる。
また、{run,level}の組み合わせを表すVLCテーブルのサイズは、基本的にはスキャン順におけるrunの長さの最大値、すなわち、対象ブロックの面積に比例する。
動画像復号装置1の上記構成によれば、runの長さに基づく復号処理ではなく、相対位置に基づく復号処理を行うので、{run,level}の組み合わせを表すVLCテーブルを用いなくても済む。
この結果、VLCテーブルのサイズを低減することができる。なお、動画像符号化装置2についても同様の作用・効果を得ることができる。また、大きな符号化対象ブロック全体のスキャン順序を表すテーブルも不要である。
〔3〕実施形態3
本発明のさらに他の実施形態について図23〜図25に基づいて説明すると、以下の通りである。なお、説明の便宜上、前記実施形態1にて説明した図面と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
以下では、処理A:『対象ブロックにおける低周波成分側のn個の係数(例えば16×16以上のサイズではn=64)のみ符号化/復号する処理』と、処理B:『領域分割して係数を符号化/復号する処理(図4、S10参照)』とを切り替えながら符号化処理/復号処理を行う方法について説明する。
また、符号化データには、処理Aと処理Bとを切り替えるための符号化方法識別子が符号化されているものとする。すなわち、以下の例では、符号化方法識別子に、処理Aおよび処理Bのいずれかが指定されている。
TU情報復号部12が上記処理Bを行うことについては既に説明したが、以下の例では、TU情報復号部12が上記処理Bに加えて上記処理Aも実行することとする。
また、以下の説明では対象ブロックのサイズは、一例として16×16であるとする。
(処理の流れ)
図23を用いて、処理Aと処理Bとを切り替えながら符号化/復号する処理の流れについて説明する。図23は、処理Aと処理Bとを切り替えながら符号化/復号する処理の流れの一例について示すフローチャートである。
図23では、動画像符号化装置2の符号化処理と動画像復号装置1の復号処理とをまとめて示している。なお、以下では、動画像復号装置1側の動作について説明するが、動画像符号化装置2側の動作も概ね同じである。
また、以下の例では、動画像復号装置1のTU情報復号部12が符号化方法識別子を判定することとする。
処理が開始すると、図23に示すように、まず、TU情報復号部12が符号化方法識別子を判定する(S101)。
符号化方法識別子が処理Aを示している場合(S101において処理A)、TU情報復号部12は、処理Aを実行する(S102)。すなわち、TU情報復号部12は、対象ブロックの低周波成分側に位置する左上64個の係数のみを復号する。
ここで、図24を用いて、処理Aにおいて復号対象とする係数について詳しく説明すると次のとおりである。対象ブロックが、イントラ予測を行うブロックであるか、インター予測を行うブロックかに応じて処理Aにおいて復号対象にする係数を変更してもよい。
具体例を示すと次のとおりである。まず、インター予測を行うブロックについては、図24の(a)に示すように、TU情報復号部12は、低周波成分側の左上8×8サイズの領域RInterに位置する係数を復号対象とする。
また、イントラ予測を行うブロックについては、TU情報復号部12は、図24の(b)に示す領域RIntraに位置する係数を復号対象とする。すなわち、TU情報復号部12は、ジグザグスキャン順序上、1番目のDC係数から、64番目の係数までを復号対象とする。領域RIntra内に示す数字“64”は、領域内に含まれる係数の数を示している。
なお、図24の(b)では、説明の便宜のため、領域RIntraの形状を直角三角形にて示しているが、実際のところ厳密にいえば、領域RIntraは、直角三角形にならない点には留意されたい。
一方、符号化方法識別子が処理Bを示している場合(S101において処理B)、TU情報復号部12は、処理Bを実行する(S10,図4参照)。
(データ構造)
図25を用いて、係数符号化データのデータ構造について例示する。図25は、係数符号化データのデータ構造について示す図である。
符号化方法識別子FLGは、上述したとおり、処理Aまたは処理Bが指定されているフラグである。
符号化方法識別子FLGに処理Aが指定される場合、係数符号化データは、DATA1に示すデータ構造を採用することができる(以下、係数符号化データDATA1と表記する)。符号化データDATA1には、対象ブロックの低周波成分側に位置する左上64個分の係数データ(run,level,sign)が含まれる。
一方、符号化方法識別子FLGに処理Bが指定される場合、係数符号化データは、DATA2に示すデータ構造を採用することができる(以下、係数符号化データDATA2と表記する)。
係数符号化データDATA2は、非ゼロ係数フラグ×n(n=領域数)、係数データ[領域1]〜[領域n]を含む。
非ゼロ係数フラグとは、上述のとおり、復号領域における非ゼロ係数の有無を示す。非ゼロ係数フラグは、復号領域の数だけ符号化されているため“×n”で示している。
例えば、非ゼロ係数フラグが“1(真)”であれば、その復号領域に非ゼロ係数が有ることを示し、非ゼロ係数フラグが“0(偽)”であれば、その復号領域に非ゼロ係数が無いことを示す。
係数データ[領域x](x=1〜n)は、各復号領域における係数データを含む。なお、非ゼロ係数フラグが領域xにおける非ゼロ係数が無いことを示す場合、係数データ[領域x]は省略される。
(作用・効果)
対象ブロックのサイズが大きい場合、符号化する係数の数が多くなるため、処理Aおよび処理Bの間における効率の差は大きく表れる。さらにいえば、処理Aおよび処理Bの間で、得意とする映像特性が異なる。よって、一方の処理方式でのみ符号化を行うと、大きく符号化効率を低下させるおそれがある。
上記処理Aと処理Bとを切り替えながら符号化/復号することにより、処理方式の多様化による符号化効率の低下の抑止、または向上を図ることができる。効率化により、処理Aおよび処理Bを切り替えるための符号化方式識別子の符号量を相殺することも可能である。
(変形例)
また、符号化方式識別子を符号化する単位は、任意である。例えば、LCU単位で符号化することができる。
また、符号化の状況に応じて条件判定により、処理Aおよび処理Bを切り替えることも可能である。この場合、符号化方法識別子によって処理Aおよび処理Bを明示しなくても、暗黙的に実行する処理方式が決まるため符号化方法識別子を省略することもできる。
条件判定の基準としては、ブロックの属性や状態、所定のパラメータとすることができる。
より具体的には次のとおりである。対象ブロック(変換単位)のサイズに基づいて判定してもよい。例えば、16×16であれば、処理Aを実行し、32×32であれば、処理Bを実行するように構成することが可能である。
また、対象ブロックの予測モードで判定してもよい。例えば、イントラ予測モードである場合、処理Aを実行し、インター予測モードであれば、処理Bを実行するように構成することが可能である。
また、対象ブロックの隣接ブロックの変換単位サイズに基づいて判定してもよい。例えば、対象ブロックの左隣接ブロックの変換単位が所定サイズ(例えば、32×32サイズ)以上であれば、当該対象ブロックでは、処理Aを実行し、そうでなければ、処理Bを実行するように構成してもよい。
また、“所定サイズ以上”のほかにも、“対象ブロックのサイズ以上”、“所定サイズ未満”、“所定サイズに等しい”といった判定条件を適用することも可能である。
変換単位のサイズが小さい場合、対象ブロックに含まれるエッジが多くなり、これにより対象ブロックに含まれる非ゼロ係数の数が多くなる傾向がある。よって、変換単位のサイズが小さい場合、処理Bを実行するように構成することがより好ましい。
また、符号化方法識別子以外の所定のパラメータを処理方式の判定に用いてもよい。ヘッダ等に付加されているプロファイル識別子に基づいて処理方式を切り替えてもかまわない。また、ヘッダ等に付加されているデコーダの能力やビット・ストリームの複雑さを規定するレベルに基づいて処理方式を切り替えてもかまわない。
また、処理Bは、図4に示した、領域分割して係数を符号化/復号する処理としたが、これに限られない。処理Bは、図16に示した、相対位置指定により係数を符号化/復号する処理S20であってもよい。
また、例えば、動画像符号化装置2は、処理S10および処理S20の符号化を試行し、あるいは符号量を推定し、符号化効率が良い処理を符号化方法識別子に指定してもよい。
〔4〕実施形態4
本発明のさらに他の実施形態について図26〜図36に基づいて説明すると、以下の通りである。なお、説明の便宜上、前記実施形態1にて説明した図面と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
(階層的領域分割)
以下では、対象ブロックを階層的に領域分割して符号化/復号する方法について説明する。
動画像符号化装置2は、対象ブロックBLKの符号化において、対象ブロックBLKを階層的に分割してもよい。この場合、対象ブロックBLKの符号化において、動画像符号化装置2のTU情報符号化部280は、次の処理ENCおよびDIVを繰り返す。
処理ENC:処理対象の領域を分割せずに符号化
処理DIV:処理対象の領域を分割し、分割により得られた各領域を次の処理対象の領域とする。
なお、対象ブロックが、一番初めに処理対象とする領域となる。また、TU情報符号化部280は、処理PおよびQのうち、全体として符号化効率が良くなるほうを選択する。
例えば、TU情報符号化部280は、処理対象について、処理ENCのみを実行する場合と、処理DIVを試行してから処理ENCを実行する場合との間で、符号量を比較し、符号量が少なくなるよう処理手順を決定することができる。
図26を用いて、その具体的な例について説明する。図26は、2階層の分割を行う場合について例示している。
図26に示すように、対象ブロックBLKは、1階層の分割を行った場合の第1階層符号化領域R10、R20、R30、R40を含む。
また、第1階層符号化領域R30、およびR40については、2階層まで分割されている。すなわち、第1階層符号化領域R30は、第2階層符号化領域R31〜R34を含み、また、第1階層符号化領域R40は、第2階層符号化領域R41〜R44を含む。
(分割の決定)
TU情報符号化部280は、次の工程により、図26に示す対象ブロックBLKを分割する。
工程[1] TU情報符号化部280は、対象ブロックBLKを処理対象の領域とし、処理ENCおよび処理DIVを実行する。すなわち、領域符号化部282が処理ENCを実行するとともに、領域符号化部282は、対象ブロックBLKに対する処理ENCによる符号量を記憶する。また、領域分割部281が、対象ブロックBLKに対して処理DIVを実行し、第1階層符号化領域R10〜R40を得る。
工程[2] 領域符号化部282は、第1階層符号化領域R10〜R40のそれぞれについて処理ENCを実行するとともに、第1階層符号化領域R10〜R40全体に対する処理ENCの符号量を記憶する。
工程[3] TU情報符号化部280は、工程[1]の符号量と、工程[2]の符号量とを比較する。ここでは、工程[2]の符号量の方が小さかったとする。
工程[4] 領域分割部281が、さらに第1階層符号化領域R10〜R40に対して処理DIVを実行し、第2階層の符号化領域を得る。
工程[5] TU情報符号化部280は、第1階層までの符号化による符号量と、第2階層までの符号化による符号量とを比較し、符号量が小さいほうの処理手順を採用する。
工程[6] 工程[5]の比較結果により、第1階層符号化領域R10、R20については、第2階層まで符号化したほうが、符号量が多く、また、第1階層符号化領域R30、R40については、第2階層まで符号化したほうが、符号量が少なかったとする。
これにより最終的に、第1階層符号化領域R10、R20、第2階層符号化領域R31〜R34、R41〜R44が確定する。
(分割フラグおよび非ゼロ係数フラグ)
領域符号化部282は、領域分割部281による分割の状況を示す分割フラグを符号化する。
具体的に例示すると次のとおりである。領域符号化部282は、領域分割部281による分割が確定した領域については、分割フラグ“1”を符号化する。また、領域符号化部282は、領域分割部281に分割されないことが確定した領域については、分割フラグ“0”を符号化する。
また、図26において、網掛けをした領域は、非ゼロ係数が1つでもある領域であることを示しており、網掛けをしなかった領域は、非ゼロ係数が1つもない領域であることを示している。
そこで、領域符号化部282は、処理対象の領域における非ゼロ係数の有無を示す非ゼロ係数フラグを符号化してもよい。例えば、非ゼロ係数がある場合、非ゼロ係数フラグは、“1”であり、非ゼロ係数がない場合、非ゼロ係数フラグは、“0”である。
(フラグツリー)
図27を用いて、分割フラグおよび非ゼロ係数フラグをフラグツリーFTの形式で符号化する例について説明する。図27は、図26に示す対象ブロックBLKの分割状況および係数分布状況を表すフラグツリーFTの表現例(四分木表現)を示している。
フラグツリーFTのROOTレベル、LEVEL1、および、LEVEL2の階層構造からなる。フラグツリーFTのROOTレベルおよびLEVEL1は、分割フラグに対応している。フラグツリーFTのLEVEL2は、非ゼロ係数フラグに対応している。
フラグツリーFTのROOTレベルでは、対象ブロックBLKの分割フラグFRootが符号化される。また、フラグツリーFTのLEVEL1では、第1階層符号化領域R10、R20、R30、およびR40の分割フラグF10、F20、F30、F40が符号化される。
そして、フラグツリーFTのリーフ(末端ノード)となるLEVEL2では、非ゼロ係数フラグが符号化される。
図27において、丸で囲ったリーフは、左から順に、第2階層符号化領域R41、R42、R43、およびR44の非ゼロ係数フラグを示しており、それぞれ、“1”、“0”、“0”、および“1”が符号化されている。
なお、第2階層符号化領域R41、R42、R43、およびR44について、計4個の非ゼロ係数フラグが符号化されているが、このフラグ4個のパターンを1組にして、当該パターンの出現頻度に応じた可変長符号化を行ってもよい。当該可変長符号化によれば、平均的には、四分木の符号量を削減することができる。
非ゼロ係数が多い領域については、runの長さが平均的に短くなるため、分割しないほうが、符号化効率が向上する傾向がある。
これに対して、ゼロ係数が多い、すなわち係数の分布密度が低い場合、runの長さが平均的に長くなるため、領域分割による符号化を採用することで、符号化効率を向上させることができる。
(領域の復号処理)
次に、図28を用いて、上述の手法により符号化した係数符号化データを動画像復号装置1において復号する処理について説明する。図28は、動画像復号装置1における領域の復号処理S200の流れの一例について示すフローチャートである。
なお、領域の復号処理S200は、再帰的処理であるため、最上位の呼び出しでは、対象ブロックを処理対象の領域として領域の復号処理S200に含まれる各手順が実行される。
図28に示すように、まず、動画像復号装置1では、領域分割部121が、分割フラグを参照することで、処理対象の領域が分割されているか否かを判定する(S201)。
処理対象の領域が分割されていない場合(S201においてNO)、係数復号処理S210を実行する。
すなわち、まず、領域復号部122が、非ゼロ係数フラグを参照することで、領域内に非ゼロ係数があるか否かを判定する(S211)。
領域内に非ゼロ係数がある場合(S211においてYES)、領域復号部122は、処理対象の領域に含まれる係数全体を、まとめてラン−レベルモード復号処理により復号する(S212)。
これに対し、領域内に非ゼロ係数がない場合(S211においてNO)、領域復号部122は、処理対象の領域の復号処理をスキップする。
係数復号処理S210が終了し、処理対象の領域の復号処理が終了して、次の処理対象の領域に対する領域の復号処理S200が実行される。
一方、処理対象の領域が分割されている場合(S201においてYES)、分割領域復号処理S220を実行する。
すなわち、まず、領域復号部122が、各領域について符号化されている分割フラグを復号し(S221)、分割した各領域についてのループLP200に入る。
ループLP200では、領域の復号処理S200が再帰的に実行される(S223)、そして、ループLP200の先頭にもどって(S224からS223へ)、以後、分割した各領域について順にループ内の処理が実行される。
分割した領域すべてについて処理終了すると、ループLP200を抜けて、分割領域復号処理S220が終了する。その後、実行中の領域の復号処理S200は終了する。再帰的に領域の復号処理S200が呼び出されている場合は、呼び出し元に制御を返す。
なお、以上において、不要なフラグの符号化を避けるため、分割フラグは、これ以上分割しないサイズのブロックでは、常に偽と判定してもよい。また、非ゼロ係数フラグは、処理対象の領域が、対象ブロックそのものである場合、常に真と判定してもよい。
(データ構造)
以下において、図29〜図32を用いて、領域の復号処理S200において復号される係数符号化データのデータ構造について例示する。
(1) フラグを分散して格納する例
図29を用いて、フラグを分散して格納する場合のデータ構造について説明する。図29に示すように、係数符号化データの先頭には、分割フラグFRootが格納される。分割フラグFRootが「0」であれば、係数符号化データは、一例として、DATA11に示すデータ構造が採用される(以下、係数符号化データDATA11と表記する)。符号化データDATA11には、対象ブロックの16×16個分の係数データ(run,level,sign)が含まれる。
一方、分割フラグFrootが「1」であれば、係数符号化データは、一例として、DATA12に示すデータ構造が採用される(以下、係数符号化データDATA12と表記する)。
係数符号化データDATA12は、領域情報[領域1]F1〜領域情報[領域n]Fnを含む。なお、上記“領域n”とは、第1階層の“領域”のことを示している。図26に示す対象ブロックBLKを用いて例示すると、領域R10〜R40が上記“領域”に該当する。
ここで、図29に従って、領域情報[領域1]F1の詳細なデータ構造について説明する。領域情報[領域1]F1は、分割フラグ[領域1]F10を含む。
ここで、非ゼロ係数フラグおよび係数データは、分割フラグ[領域1]F10が、「0」の場合は、係数情報F12を含み、また、分割フラグ[領域1]F10が、「1」の場合は、係数情報F11を含む。
分割フラグ[領域1]F10が、「0」の場合、さらなる領域分割はないので、係数情報には、非ゼロ係数フラグ[1]と、係数データ[1]とが含まれるのみである。
分割フラグ[領域1]F10が、「1」の場合において、領域1がn個に分割されるとする。この場合、係数情報F11には、非ゼロ係数フラグ[1−1]、係数データ[1−1]〜非ゼロ係数フラグ[1−n]、係数データ[1−n]が含まれる。
その他の領域情報については、領域情報[領域1]F1と同様であるので、その説明を省略する。
次に、図30を用いて、図29に示す係数符号化データDATA12の具体例について説明する。図30は、図26を用いて説明した対象ブロックBLKを示す係数符号化データの例を示す図である。
図26に示す対象ブロックBLKは、ROOTレベルで4分木分割が指定されるので、分割フラグFrootは、“1”である。
また、係数符号化データDATA12は、対象ブロックBLKに含まれる復号領域R10〜R40に対応する領域情報F1〜F4を含む。係数符号化データDATA12では、
領域情報F1、F2、F3およびF4の順でデータが格納されている。以下、領域情報F1〜F4に含まれるデータについて順に説明する。
領域情報F1に含まれるデータについて説明すると次のとおりである。復号領域R10は、それ以上分割されないので、領域情報F1では、分割フラグ[1]=0である。また、復号領域R10は、非ゼロ係数を含むので、領域情報F1では、非ゼロ係数フラグ[1]=1である。また、領域情報F1は、係数データ[1]を含む。
復号領域R20は、分割されず、また非ゼロ係数を1つも含まないので、領域情報F2には、分割フラグ[2]=0、非ゼロ係数フラグ[2]=0が含まれる。
領域情報F3に含まれるデータについて説明すると次のとおりである。復号領域R30は、復号領域R31〜R34に分割される。よって、領域情報F3は、分割フラグ[3]=1を含む。
また、復号領域R31、R33には、非ゼロ係数が含まれ、復号領域R32、R34には、非ゼロ係数が1つも含まれない。
よって、復号領域R31について、非ゼロ係数フラグ[3−1]=1と、係数データ[3−1]とが含まれる。復号領域R33についても同様である。
また、復号領域R32およびR34については、それぞれ、非ゼロ係数フラグ[3−2]=0、および、非ゼロ係数フラグ[3−4]=0が含まれる。
領域情報F4に含まれるデータについて説明すると次のとおりである。復号領域R40は、復号領域R41〜R44に分割される。よって、領域情報F4は、分割フラグ[4]=1を含む。
また、復号領域R41、R44には、非ゼロ係数が含まれ、復号領域R42、R43には、非ゼロ係数が1つも含まれない。
よって、復号領域R41について、非ゼロ係数フラグ[4−1]=1と、係数データ[4−1]とが含まれる。復号領域R44についても同様である。
また、復号領域R42およびR43については、それぞれ、非ゼロ係数フラグ[4−2]=0、および、非ゼロ係数フラグ[4−3]=0が含まれる。
(2) フラグツリーをデータ先頭にまとめて格納する例
図31を用いて、フラグツリーをデータ先頭にまとめて格納する場合のデータ構造について説明する。図31に示すように、係数符号化データの先頭には、フラグツリーFTが格納される。
ここで、フラグツリーFTが、対象ブロックの分割がないことを示している場合、DATA21に示すデータ構造(係数符号化データDATA21)が採用される。符号化データDATA21には、対象ブロックの16×16個分の係数データ(run,level,sign)が含まれる。
一方、フラグツリーFTが、対象ブロックを1回以上分割することを示している場合、DATA22に示すデータ構造(係数符号化データDATA22)が採用される。
係数符号化データDATA22は、係数データ[領域1]〜係数データ[領域n]を含む。なお、上記“領域n”とは、それ以上分割されない“領域”のことを示している。図26に示す対象ブロックBLKを用いて例示すると、領域R10や、領域R31等が上記“領域”に該当する。
次に、図32を用いて、図31に示す係数符号化データDATA22の具体例について説明する。図32は、図26を用いて説明した対象ブロックBLKを示す係数符号化データの例を示す図である。
係数符号化データDATA22には、まず、フラグツリーFTが格納される。フラグツリーFTでは、まず分割フラグFRootが格納される。続いて、復号領域R10〜R40に関するフラグが順に格納される。
係数符号化データDATA22では、フラグツリーFTの後に、各復号領域の係数データが格納される。係数データが1つ以上ある復号領域R10、R31、R33、R41、およびR44に対応する係数データ[1]、係数データ[3−1]、係数データ[3−3]、係数データ[4−1]、および係数データ[4−4]が順に格納される。
(変形例)
[runのカウントの省略]
以下において、図33および図34を用いて、非ゼロ係数フラグが“0(偽)”の領域はrunのカウントに含めない例について説明する。図33および図34は、図26の第1階層符号化領域R30について示している。
なお、以下の説明では、例示的に、対象ブロックBLKは、16×16サイズであるとする。第1階層符号化領域R30は、8×8サイズであるとし、第2階層符号化領域R31〜R34は、4×4サイズであるとする。
このとき、TU情報符号化部280は、処理対象の符号化領域が、所定サイズ(例えば、8×8サイズ)以下である場合、領域分割および非ゼロ係数の有無の判定は行うが、スキャンおよび符号化は8×8単位で行う。
図33は、図26の第1階層符号化領域R30について詳細に示す図である。図33に示すとおり、領域分割部281は、第1階層符号化領域R30を、第2階層符号化領域R31〜R34に分割する。
領域符号化部282は、第1階層符号化領域R30について、分割フラグ“1”を符号化し、さらに非ゼロ係数フラグ“1001”を符号化する。
また、領域符号化部282は、第1階層符号化領域R30を、対象符号化領域として符号化処理を行う。第1階層符号化領域R30の全体にわたって示す矢印は、スキャン順序を示している。
ここで、ランモード符号化部202は、非ゼロ係数フラグ“0(偽)”である符号化対象領域R32およびR34では、runをカウントしない。
すなわち、係数の符号化処理において、ランモード符号化部202は、次のようにランモード符号化処理を行う。
まず、図34に示す非ゼロ係数A1の符号化が完了しているものとする。そして、次の非ゼロ係数の符号化処理において、ランモード符号化部202は、図34において矢印で示す逆順のジグザグスキャン順序にて、係数を読み取っていく。ここで、逆順のジグザグスキャン順序、次の非ゼロ係数は、A3である(以下、非ゼロ係数A3にて参照する)。非ゼロ係数A1と、非ゼロ係数A3との間には、9つのゼロ係数が存在する。
ランモード符号化部202は、第2階層符号化領域R32およびR34におけるゼロ係数を、runのカウントに含めない。このため、次の非ゼロ係数A3の符号化処理において、runとしては、第2階層符号化領域R33におけるゼロ係数A2のみがカウントされる。よって、ランモード符号化部202は、run=1を符号化する。
なお、ランモード符号化部202は、各係数の2次元座標値から非ゼロ係数フラグが“0”の領域か否かを判定してもよい。
なお、動画像復号装置1側では次のようにして復号処理を行えばよい。すなわち、各係数の復号後にスキャン順に配列に格納された係数を、再び係数行列に格納する処理を行う際に、非ゼロ係数フラグが“0”である領域では、格納処理をスキップすればよい。
[規定による領域分割]
以下において、図35および図36を用いて、規定による領域分割について説明する。
TU情報復号部12は、所定の復号対象領域については、予め定められたとおりに分割を行って、係数を復号してもよい。
図35および図36は、16×16サイズの対象ブロックBLKにおける分割方式を示している。また、図35および図36では、対象ブロックBLKは、第1階層復号領域R101〜R104に分割されている。また、第2階層復号領域まで分割可能な第1階層復号領域については、点線を付している(例えば、図35において、第1階層復号領域R102〜R104)。
すなわち、TU情報復号部12の領域分割部121は、所定の復号対象領域を、常に分割するよう設定されていてもよいし(分割可能)、常に分割しないように設定されていてもよい(分割不可)。
例えば、図35に示すように、対象ブロックBLKにおいて、左上8×8の第1階層復号領域R101は、分割不可としてもよい。第1階層復号領域R102〜R104については、領域分割部121が分割可能である。
なお、DC成分に近い領域では、非ゼロ係数が存在する可能性が高い。よって、第1階層復号領域R101では、分割しない場合のほうが、分割する場合よりも、動画像符号化装置2側での符号化効率が向上する傾向がある。
また、例えば、図36に示すように、対象ブロックBLKにおいて、右下8×8の第1階層復号領域R104のみ、分割可能としてもよい。第1階層復号領域R104については、領域分割部121が分割可能である。
高周波成分側の領域は、ゼロ係数が存在する可能性が高いため分割するほうが、動画像符号化装置2側での符号化効率が向上する傾向がある。
また、領域分割部121は、所定サイズより大きな復号領域を常に分割するようにしてもよい。また、領域分割部281は、所定サイズより小さなサイズの復号領域は、常に分割しないようにしてもよい。例えば、以下のように構成することができる。
領域分割部121は、8×8サイズより大きなサイズの復号領域を常に分割してもよい。また、領域分割部121は、最上位(つまり、対象ブロック)分割フラグを常に“1”と設定してもよい。
また、領域分割部121は、4×4サイズ以上のサイズの対象ブロックに含まれる4×4サイズの領域は、それ以上分割しないようにしてもよい。
また、領域分割部121は、3階層以上の分割は行わないようにしてもよい。
なお、本変形例は、動画像符号化装置2のTU情報符号化部280について適用することも可能である。
〔その他の変形例〕
実施形態3に示した符号化方式の選択や、実施形態4に示した規定による領域分割を、特定サイズ・形状の対象ブロックや、特定のスライスタイプにのみ適用してもよい。
例えば、Bスライスでは、ゼロ係数が比較的多い傾向がある。よって、Bスライスでは、分割を行わず、対象ブロックの左上64個の係数のみを符号化してもよい。
これらの変形によれば、フラグ符号量の増加を抑制することが可能である。
また、実施形態4に示した分割手法により得られた領域において、実施形態2に示す相対位置指定による係数の符号化を行ってもよい。
また、実施形態1で示した[領域の数およびサイズ]の変形例は、実施形態2〜4においても適用可能である。
また、本発明は以下のように表現することもできる。
すなわち、本発明に係る画像復号装置では、変換単位分割手段が、変換単位を、複数のサブ単位に分割し、変換係数復号手段が、符号化データから上記変換係数を得るための復号情報であって、上記サブ単位ごとに割り当てられている復号情報を参照して、上記サブ単位に含まれる変換係数を復号する。
また、対象画像の画素値を変換単位ごとに周波数変換して得られた変換係数を符号化して得られる符号化データでは、所定のスキャン順序に沿って連続するゼロ係数の長さが符号化されており、低周波側に位置する領域について定義されている上記復号情報では、上記連続するゼロ係数の長さが短いほど、短い符号が割り当てられている。
低周波成分側の領域では、非ゼロ係数が出現する頻度が高くため、連続するゼロ係数の長さは短くなる傾向がある。
上記構成によれば、連続するゼロ係数の長さは短いほど、短い符号を割り当てるので、領域の位置に応じて、上記傾向を考慮した効率のよい復号処理を行うことができる。これにより、復号する符号量を低減することができる。
また、高周波側に位置する領域について定義されている上記復号情報では、上記変換係数の絶対値を含むパラメータの組について、上記絶対値が1であるパラメータの組に、より短い符号が割り当てられている。
高周波成分側の領域では、変換係数の絶対値が全体的に小さくなる傾向がある。このため、変換係数がゼロ係数でなければ、絶対値が1となる傾向がある。
上記構成によれば、高周波成分側の位置において出現頻度が高くなるようなパラメータの組に、より短い符号を割り当てることができる。
なお、パラメータの組とは、例えば、ランモードにおける{run,level}の組のことであり、ここでの絶対値とは、levelに対応する。
よって、領域の位置に応じて、上記傾向を考慮した効率のよい復号処理を行うことができる。これにより、復号する符号量を低減することができる。
また、上記復号情報では、符号の長さに応じて順序が指定されており、
上記復号情報更新手段は、上記更新において、上記変換単位における上記サブ単位の位置に応じて、上記順序を繰り上げる。
上記構成によれば、上記変換単位における上記サブ単位の位置に応じて、パラメータに割り当てられている符号の長さに応じて定められている順序を繰り上げる。
上記符号の長さに応じて定められている順序とは、例えば、コード番号のことをいう。すなわち、上記構成では、コード番号の繰り上げを行うことにより、パラメータに割り当てられている符号の長さをより短いものに更新する。
上記構成によれば、コード番号の繰り上げという比較的簡便な手順により符号の長さの更新を実現することができる。
また、上記変換単位分割手段は、分割対象の領域の位置およびサイズの少なくとも一方に応じて、上記再帰的な分割を行う。
上記構成によれば、分割を行うことを示すフラグを復号しなくても済むため、復号する符号量を低減することができる。
〔付記的情報〕
本発明の一側面について説明すると次のとおりである。すなわち、本発明に係る画像復号装置は、上記課題を解決するために、対象画像の画素値を変換単位ごとに周波数変換して得られた変換係数を符号化して得られる符号化データから、該変換係数を復号する画像復号装置において、上記変換単位を、複数のサブ単位に分割する変換単位分割手段と、上記符号化データから上記変換係数を得るための復号情報であって、上記サブ単位ごとに割り当てられている復号情報を参照して、上記サブ単位に含まれる変換係数を復号する変換係数復号手段と、を備える構成である。
また、本発明に係る画像符号化装置は、上記課題を解決するために、対象画像の画素値を変換単位ごとに周波数変換して得られた変換係数を符号化する画像符号化装置において、上記変換単位を、複数のサブ単位に分割する変換単位分割手段と、上記変換係数を符号化するための符号化情報であって、上記サブ単位ごとに割り当てられている符号化情報を参照して、上記変換単位に含まれる変換係数を符号化する変換係数符号化手段と、を備える構成である。
また、本発明に係る符号化データのデータ構造は、上記課題を解決するために、対象画像の画素値を変換単位ごとに周波数変換して得られた変換係数を符号化することにより生成される符号化データのデータ構造において、符号化対象となる上記変換係数の位置のひとつ前に符号化した上記変換係数の位置に対する相対位置を含み、これにより、上記符号化データを復号する画像復号装置は、ひとつ前に復号した上記変換係数の上記変換単位における位置と、上記相対位置とから、復号対象となる上記変換係数の位置を特定するデータ構造である。
上記構成によれば、復号処理において、まず、復号の対象となる変換単位を複数のサブ単位に分割する。
変換単位とは、画素値を周波数領域に変換する単位である。変換単位としては、例えば、64×64画素、32×32画素や16×16画素のサイズ等が挙げられる。
サブ単位は、変換単位が16×16サイズである場合、例えば、8×8サイズの領域であってもよい。
また、上記構成によれば、分割により得られた複数のサブ単位を、ひとつずつ処理対象にして、該サブ単位に含まれる変換係数を復号する。サブ単位を復号する順番に特に制限はなく任意の順に復号処理を行うことができる。
また、上記構成では、変換係数の復号に際し、複数のサブ単位のそれぞれに割り当てられている復号情報を参照する。
復号情報とは、符号化データのコード(ビット列)から、変換係数の所定のパラメータ値を再現するための情報である。例えば、復号情報は、符号化データのコードから変換係数の所定のパラメータ値を再現するための対応付けを示すテーブルである。また、例えば、復号情報は、符号化データのコードから、変換係数の所定のパラメータ値を導出するための算出式である。
つまり、上記構成においては、元の変換単位のサイズよりも、小さなサブ単位について規定されている復号情報を用いて、変換係数を復号する。
このため、元の変換単位のサイズについて規定される復号情報に基づいて復号処理を行うのに比べて、復号情報の情報量や、復号情報に基づく計算量を低減することができるという効果を奏する。
さらにいえば、復号処理において対象となる変換係数の数を小さくできるので、変換係数のスキャン順序を定義するスキャンテーブルのサイズもより小さくできる。
また、さらに付言すれば、復号処理において必要となるメモリの量や、処理能力を低く抑えることができる。
なお、サブ単位は、非特許文献1,2の技術における符号化単位のいずれかと一致していてもよい。この場合、上記符号化単位において予め定義されているVLCテーブル、すなわち復号情報を流用することができる。
なお、上記のように構成された画像符号化装置または符号化データのデータ構造によれば、本発明に係る画像復号装置と同様の効果を奏する。
また、本発明に係る画像復号装置では、上記変換係数復号手段は、上記サブ単位における非ゼロの変換係数の有無を示す非ゼロ情報を参照し、該非ゼロ情報が、上記サブ単位における非ゼロの変換係数が無いことを示すとき、上記サブ単位の復号処理を省略することが好ましい。
上記構成によれば、非ゼロ係数の有無に応じて、領域単位で不要な復号処理を行うことを避けることができる。
また、本発明に係る画像復号装置では、上記復号情報は、上記変換単位における、上記サブ単位の位置に応じて適応的に定義されていることが好ましい。
変換単位では、DC成分を含む低周波成分側と、高周波成分側とで、変換係数の値の出現傾向が異なる。例えば、DC成分付近の低周波成分側では、非ゼロ係数が出現する可能性が高い。また、高周波成分側では、ゼロ係数が出現する可能性が高い。
位置に応じて適応的に定義するとは、例えば、上記サブ単位の位置が、低周波成分側であるのか、低周波成分側であるのかに応じて適応的に復号情報を定義するということである。
また適応的とは、上記の出現傾向に応じて、コードを割り当てることである。例えば、高周波成分側では、ゼロ係数に、または変換係数の絶対値が小さいものに、より短いコードを割り当てるということである。
また、例えば、低周波成分側では、非ゼロ係数に、または変換係数の絶対値が大きいものに、より短いコードを割り当てるということである。
上記構成によれば、領域の位置に応じた効率のよい復号処理を行うことができ、復号する符号量を低減することができる。
また、本発明に係る画像復号装置では、上記変換係数を示すパラメータの出現頻度に応じて、上記復号情報において該パラメータに割り当てられている符号をより短いものに更新する復号情報更新手段を備えることが好ましい。
上記構成によれば、出現頻度が高いパラメータについて、より短い符号が割り当てることができる。すなわち、パラメータの出現頻度を、符号の短さに動的に反映させることができる。
これにより、出現頻度が高いパラメータについて復号する符号量を低減することができる。
また、本発明に係る画像復号装置では、上記変換係数復号手段は、連続する非ゼロ係数の長さと、変換係数の絶対値と、変換係数の符号とを復号する第1モード復号手順を所定条件下において実行した後、変換係数の絶対値と、変換係数の符号とを復号する第2モード復号手順を実行する復号処理を行うことが好ましい。
上記構成によれば、復号処理において、連続する非ゼロ係数の長さ(run)と、変換係数の絶対値(level)と、変換係数の符号(sign)とを復号する第1モード復号手順を所定条件下において実行した後、変換係数の絶対値(level)と、変換係数の符号(sign)とを復号する第2モード復号手順を実行する。第1モード復号手順とは、いわゆるランモードであり、第2モード復号手順とは、いわゆるレベルモードである。
上記所定条件とは、例えば、復号した変換係数の数、変換係数の絶対値などが挙げられる。他にも、所定条件は、サブ単位の変換単位における位置や、係数の出現傾向に応じた条件であってもよい。
ランモードおよびレベルモードは、例えば、非特許文献1、2に採用されている技術である。各領域における復号処理では、このような従来構成を流用することができる。これにより、高い符号化効率を実現することができる。
また、本発明に係る画像復号装置では、上記変換係数復号手段は、上記変換単位における、上記サブ単位の位置に応じて、上記所定条件を、変更することが好ましい。
上記変換単位における、上記サブ単位の位置に応じて、上記所定条件を、変更するとは、例えば、低周波成分側の領域では、第1モード復号手順を終了しにくくし、高周波成分側の領域では、第1モード復号手順を終了しやすくするということである。
低周波成分側の領域では、連続する非ゼロ係数の長さが比較的短く、高周波成分側の領域では、連続する非ゼロ係数の長さが比較的長くなる傾向がある。このため、連続する非ゼロ係数の長さが長くなる場合には第1モード復号手順を優先的に用いるようにする。
なお、所定条件の変更には、第1モード復号手順のみを実行し、第2モード復号手順を実行しないことも含まれる。
上記構成によれば、ラン−レベルモードによる効率的な復号処理を実現することができる。
また、本発明に係る画像復号装置では、上記変換単位における低周波成分側の所定領域に限り変換係数を復号する限定領域復号手段と、上記変換単位分割手段および上記変換係数復号手段による復号処理と、上記限定領域復号手段による復号処理とを切り替える切り替え手段とを備えることが好ましい。
上記構成によれば、上記変換単位分割手段および上記変換係数復号手段による復号処理方式と、上記変換単位における低周波成分側の所定領域に限り変換係数を復号する復号処理方式とのいずれか符号化効率がよい復号処理方式に適宜切り替えることができる。
また、本発明に係る画像復号装置では、上記変換単位分割手段は、分割した上記複数の領域を再帰的に分割することが好ましい。
より小さいサイズの領域について復号処理を行ったほうが復号する符号量が少なくて済む場合がある。上記構成によれば、より小さいサイズの領域について復号処理を行ったほうが復号する符号量が少なくて済む場合、効率的に復号処理を行うことができる。
さらに付言しておくと、非ゼロ係数が多いときは、分割しないほうが効率的な場合がある。また、非ゼロ係数の有無が符号化されていると、より小さいサイズの領域について、細かく制御を行うことができるので、さらに効果的である。
本発明の他の側面について説明すると次のとおりである。すなわち、本発明に係る画像復号装置は、上記課題を解決するために、対象画像の画素値を変換単位ごとに周波数変換して得られた変換係数を符号化して得られる符号化データから、該変換係数を復号する画像復号装置において、復号対象となる変換係数のひとつ前に復号した変換係数からの相対位置を復号する相対位置復号手段と、ひとつ前に復号した上記変換係数の、上記変換単位における位置と、上記相対位置とから上記復号対象となる上記変換係数の位置を特定する位置特定手段と、を備える構成である。
また、本発明に係る画像符号化装置は、上記課題を解決するために、対象画像の画素値を変換単位ごとに周波数変換して得られた変換係数を符号化する画像符号化装置において、符号化対象となる上記変換係数の位置のひとつ前に符号化した上記変換係数の位置に対する相対位置を符号化する相対位置符号化手段を備える構成である。
また、本発明に係る符号化データのデータ構造は、上記課題を解決するために、対象画像の画素値を変換単位ごとに周波数変換に変換して得られた変換係数を符号化することにより生成された符号化データのデータ構造において、符号化対象となる上記変換係数の位置のひとつ前に符号化した上記変換係数の位置に対する相対位置を含み、これにより、上記符号化データを復号する画像復号装置は、ひとつ前に復号した上記変換係数の上記変換単位における位置と、上記相対位置とから、復号対象となる上記変換係数の位置を特定するデータ構造である。
上記構成によれば、ひとつ前に復号した上記変換係数の、上記変換単位における位置と、上記相対位置とから上記復号対象となる上記変換係数の位置を特定する。これにより、相対位置に基づいて、連鎖的に、変換係数の位置を特定していくことができる。なお、変換単位とは、変換を行う所定の単位である。
上述のrunを符号化する場合、所定のスキャン順序に応じてrunの長さがカウントされるため、基準とする非ゼロ係数と次の非ゼロ係数との変換単位における2次元座標の相対位置が近くても、結果としてrunが長くなるときがあり、これにより、符号量が増大する場合がある。
この傾向は、変換係数が疎らになりやすい高周波成分の領域において顕著である。また、runが長くなるということは、これに応じた大きなテーブルを用意しなければならないということである。
これに対して、相対位置で変換係数の位置を特定していけば、このような場合において符号量を削減することができる。
上記構成によれば、相対位置で変換係数の位置を特定していくので、復号すべき符号量を低減することができる。
この結果、復号情報の情報量や、復号情報に基づく計算量を低減することができるという効果を奏する。
また、さらに付言すれば、復号処理において必要となるメモリの量や、処理能力を低く抑えることができる。
なお、上記のように構成された画像符号化装置または符号化データのデータ構造によれば、本発明に係る画像復号装置と同様の効果を奏する。
また、本発明に係る画像復号装置では、上記変換単位における低周波成分側の領域について、連続する非ゼロ係数の長さと変換係数の絶対値と変換係数の符号とを復号する第1モード復号処理、および、変換係数の絶対値と変換係数の符号とを復号する第2モード復号処理を実行する復号手段を備えることが好ましい。
上記復号手段は、いわゆるラン−レベルモードの復号を実行するものである。変換単位における低周波成分側の領域とは、例えば、当該変換単位が16×16サイズのものであれば、DC成分を含む左上の8×8サイズの領域が挙げられる。
低周波成分側の領域では、変換係数がそれほど疎らにならないため、runの長さも比較的短くなる。よって、ラン−レベルモードによる復号を効率的に行うことができる。
上記構成によれば、変換係数がそれほど疎らにならないような領域について、ラン−レベルモードによる復号を効率的に行うことができる。
また、本発明に係る画像復号装置では、上記復号手段は、復号対象となる変換単位の特性に応じて上記領域のサイズを変更することが好ましい。
変換単位の特性とは、変換単位のスライスタイプ、予測モード、変換単位サイズなどである。上記各種特性を組み合わせて用いてもよいし、択一的に用いてもよい。例えば、変換単位のスライスタイプ、予測モード、変換単位サイズなどの少なくとも1つに応じて上記領域のサイズを変更すればよい。
変換単位のサイズが16×16であるとき、例えば、次のように構成することができる。すなわち、予測モードが、イントラモードであれば、上記低周波成分側の領域のサイズを8×8とする。また、予測モードが、インターモードであれば、上記低周波成分側の領域のサイズを4×4とする。
これにより、変換単位の特性に応じて、ラン−レベルモードにより復号する領域を変更することができる。
この結果、ラン−レベルモードによる復号を効率的に行うことができる。
また、上述した動画像復号装置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)、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
<<応用例>>
上述した動画像符号化装置2及び動画像復号装置1は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
まず、上述した動画像符号化装置2及び動画像復号装置1を、動画像の送信及び受信に利用できることを、図37を参照して説明する。
図37の(a)は、動画像符号化装置2を搭載した送信装置PROD_Aの構成を示したブロック図である。図37の(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を更に備えていてもよい。図37の(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
図37の(b)は、動画像復号装置1を搭載した受信装置PROD_Bの構成を示したブロック図である。図37の(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を更に備えていてもよい。図37の(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を、動画像の記録及び再生に利用できることを、図38を参照して説明する。
図38の(a)は、上述した動画像符号化装置2を搭載した記録装置PROD_Cの構成を示したブロック図である。図38の(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を更に備えていてもよい。図38の(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の一例である。
図38の(b)は、上述した動画像復号装置1を搭載した再生装置PROD_Dの構成を示したブロックである。図38の(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を更に備えていてもよい。図38の(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の一例である。