以下、図面を参照して、各実施形態について説明する。尚、以降の説明において、「画像」という用語は、「画像信号」、「画像データ」などの用語として適宜読み替えることができる。
(第1の実施形態)
第1の実施形態は、画像符号化装置に関する。本実施形態に係る画像符号化装置に対応する画像復号化装置は、第4の実施形態において説明する。この画像符号化装置は、LSI(Large-Scale Integration)チップやDSP(Digital Signal Processor)、FPGA(Field Programmable Gate Array)などのハードウェアにより実現可能である。また、この画像符号化装置は、コンピュータに画像符号化プログラムを実行させることによっても実現可能である。
図1に示すように、本実施形態に係る画像符号化装置は、減算部101、直交変換部102、量子化部103、逆量子化部104、逆直交変換部105、加算部106、参照画像メモリ107、イントラ予測部108、インター予測部109、予測選択部110、予測選択スイッチ111、1D(1次元)変換行列セット部112、係数順制御部113、エントロピー符号化部114、出力バッファ115及び符号化制御部116を有する。
図1の画像符号化装置は、入力画像118を構成する各フレームまたは各フィールドを複数の画素ブロックに分割し、これら分割した画素ブロックに対して予測符号化を行って、符号化データ130を出力する。以降の説明では、簡単化のために、図6Aに示されるように左上から右下に向かって画素ブロックの予測符号化が行われることを仮定する。図6Aでは、符号化処理対象のフレームfにおいて、符号化対象画素ブロックcよりも左側及び上側に符号化済み画素ブロックpが位置している。
ここで、画素ブロックは、例えば、コーディングツリーユニット、マクロブロック、サブブロック、1画素などを指す。尚、以降の説明では、画素ブロックをコーディングツリーユニットの意味で基本的に使用するが、説明を適宜読み替えることにより画素ブロックを別の意味で解釈することも可能である。コーディングツリーユニットは、典型的には、例えば図6Bに示す16×16画素ブロックであるが、図6Cに示す32×32画素ブロック、図6Dに示す64×64画素ブロックであってもよいし、図示しない8×8画素ブロック、4×4画素ブロックであってもよい。コーディングツリーユニットは必ずしも正方形である必要はない。以下、入力画像118の符号化対象ブロックもしくはコーディングツリーユニットを「予測対象ブロック」と称することもある。また、符号化単位には、コーディングツリーユニットのような画素ブロックに限らず、フレームまたはフィールド、或いはこれらの組み合わせを用いることができる。
図1の画像符号化装置は、符号化制御部116から入力される符号化パラメータに基づいて、画素ブロックに対するイントラ予測(画面内予測、フレーム内予測などとも称される)またはインター予測(画面間予測、フレーム間予測などとも称される)を行って、予測画像127を生成する。この画像符号化装置は、画素ブロック(入力画像118)と予測画像127との間の予測誤差119を直交変換及び量子化し、エントロピー符号化を行って符号化データ130を生成して出力する。
図1の画像符号化装置は、ブロックサイズ及び予測画像127の生成方法の異なる複数の予測モードを選択的に適用して符号化を行う。予測画像127の生成方法は、大別すると、符号化対象フレーム内で予測を行うイントラ予測と、時間的に異なる1つまたは複数の参照フレームを用いて予測を行うインター予測との2種類である。本実施形態では、イントラ予測を用いて予測画像を生成する場合の直交変換及び逆直交変換について詳細に説明する。
以下、図1の画像符号化装置に含まれる各要素を説明する。
減算器101は、入力画像118の符号化対象ブロックから、対応する予測画像127を減算して予測誤差119を得る。減算器101は、予測誤差119を直交変換部102に入力する。
直交変換部102は、減算器101からの予測誤差119に対して直交変換を行い、変換係数120を得る。尚、直交変換部102の詳細は後述される。直交変換部102は、変換係数120を量子化部103に入力する。
量子化部103は、直交変換部102からの変換係数に対して量子化を行い、量子化変換係数121を得る。具体的には、量子化部103は、符号化制御部116によって指定される量子化パラメータ、量子化マトリクスなどの量子化情報に従って量子化を行う。量子化パラメータは、量子化の細かさを示す。量子化マトリクスは、量子化の細かさを変換係数の成分毎に重み付けするために使用される。量子化部103は、量子化変換係数121を係数順制御部113及び逆量子化部104に入力する。
係数順制御部113は、2次元(2D)表現である量子化変換係数121を、1次元(1D)表現である量子化変換係数列117に変換し、エントロピー符号化部114に入力する。尚、係数制御部113の詳細は後述される。
エントロピー符号化部114は、係数制御部113からの量子化変換係数列117、予測選択部110からの予測情報126、符号化制御部116によって指定される量子化情報などの様々な符号化パラメータに対してエントロピー符号化(例えば、ハフマン符号化、算術符号化など)を行い、符号化データを生成する。尚、符号化パラメータとは、予測情報126、変換係数に関する情報、量子化に関する情報、などの復号に必要となるパラメータである。符号化パラメータは、符号化制御部116の内部メモリ(図示しない)に保持され、予測対象ブロックを符号化する際に隣接する既に符号化済みの画素ブロックの符号化パラメータを用いることが可能である。例えば、H.264のイントラ予測では符号化済みの隣接ブロックの予測モード情報から、予測対象ブロックの予測モードの予測値を導出することが可能である。
エントロピー符号化部114によって生成された符号化データは、例えば多重化を経て出力バッファ115に一時的に蓄積され、符号化制御部116が管理する適切な出力タイミングに従って符号化データ130として出力される。符号化データ130は、例えば、図示しない蓄積系(蓄積メディア)または伝送系(通信回線)へ出力される。
逆量子化部104は、量子化部103からの量子化変換係数121に対して逆量子化を行い、復元変換係数122を得る。具体的には、逆量子化部104は、量子化部103において使用された量子化情報に従って逆量子化を行う。量子化部103において使用された量子化情報は、符号化制御部116の内部メモリからロードされる。逆量子化部104は、復元変換係数122を逆直交変換部105に入力する。
逆直交変換部105は、逆量子化部104からの復元変換係数122に対して、直交変換部102において行われた直交変換に対応する逆直交変換を行い、復元予測誤差123を得る。尚、逆直交変換部105の詳細は後述される。逆直交変換部105は、復元予測誤差123を加算部106に入力する。
加算部106は、復元予測誤差123と、対応する予測画像127とを加算し、局所復号画像124を生成する。局所復号画像124は、参照画像メモリ107に保存される。参照画像メモリ107に保存された局所復号画像124は、参照画像125としてイントラ予測部108及びインター予測部109によって必要に応じて参照される。
イントラ予測部108は、参照画像メモリ107に保存されている参照画像125を利用してイントラ予測を行う。例えば、H.264では、予測対象ブロックに隣接する符号化済みの参照画素値を利用して、垂直方向、水平方向などの予測方向に沿って画素補填(コピーまたは補間)を行うことによってイントラ予測画像を生成する。図7AにH.264におけるイントラ予測の予測方向を示す。また、図7BにH.264における参照画素と符号化対象画素との配置関係を示す。図7Cはモード1(水平予測)の予測画像生成方法を示しており、図7Dはモード4(対角右下予測;図4AのIntra_NxN_Diagonal_Down_Right)の予測画像生成方法を示している。
尚、イントラ予測部108は、予め定められた補間方法を用いて画素値を補間してから、予め定められた予測方向に補間画素値をコピーしてもよい。H.264のイントラ予測の予測方向を例示したが、予測方向を更に細かく規定することにより17種類、33種類などの任意の数の予測モードを使用するに拡張することも可能である。具体的には、H.264では22.5度毎の予測角度が規定されているが、例えば11.25度毎の予測角度を規定すれば、DC予測を含めて17種類の予測モードを使用できる。また、5.625度毎の予測角度を規定すれば、DC予測を含めて33種類の予測モードを使用できる。また、予測角度を等間隔に配置するのではなく、第1の基準点から水平および垂直に移動させた第2の基準点を結ぶ直線によって予測方向の角度を表してもよい。以上のように予測モードの拡張は容易に可能であり、本実施形態は予測モードの数に関わらず適用可能である。
インター予測部109は、参照画像メモリ107に保存されている参照画像125を利用してインター予測を行う。具体的には、インター予測部109は、予測対象ブロックと参照画像125との間でブロックマッチング処理を行って動きのズレ量(動きベクトル)を導出する。インター予測部109は、この動きベクトルに基づいて補間処理(動き補償)を行ってインター予測画像を生成する。H.264では、1/4画素精度までの補間処理が可能である。導出された動きベクトルは予測情報126の一部としてエントロピー符号化される。
選択スイッチ111は、イントラ予測部108の出力端またはインター予測部109の出力端を予測選択部110からの予測情報126に従って選択し、イントラ予測画像またはインター予測画像を予測画像127として減算部101及び加算部106に入力する。予測情報126がイントラ予測を示唆する場合には、選択スイッチ110はイントラ予測部108からのイントラ予測画像を予測画像127として取り込む。一方、予測情報126がインター予測を示唆する場合には、選択スイッチ110はインター予測部109からのインター予測画像を予測画像127として取り込む。
予測選択部110は、符号化制御部116が制御する予測モードに従って、予測情報126を設定する機能を有する。前述のように、予測画像127の生成のためにイントラ予測またはインター予測が選択可能であるが、イントラ予測及びインター予測の夫々に複数のモードが更に選択可能である。符号化制御部116はイントラ予測及びインター予測の複数の予測モードのうち1つを最適な予測モードとして判定し、予測選択部110は判定された最適な予測モードに応じて予測情報126を設定する。
例えば、イントラ予測に関して、符号化制御部116から予測モード情報がイントラ予測部108に指定され、イントラ予測部108はこの予測モード情報に従って予測画像127を生成する。符号化制御部116は、予測モードの番号が小さい方から順に複数の予測モード情報を指定してもよいし、大きい方から順に複数の予測モード情報を指定してもよい。また、符号化制御部116は、入力画像の特性に従って予測モードを限定してもよい。符号化制御部116は、必ずしも全ての予測モードを指定する必要はなく符号化対象ブロックに対して少なくとも1つの予測モード情報を指定すればよい。
例えば、符号化制御部116は、次の数式(1)に示すコスト関数を用いて最適な予測モードを判定する。
数式(1)において、OHは予測情報126(例えば、動きベクトル情報、予測ブロックサイズ情報)に関する符号量を示し、SADは予測対象ブロックと予測画像127との間の差分絶対値和(即ち、予測誤差119の絶対値の累積和)を示す。また、λは量子化情報(量子化パラメータ)の値に基づいて決定されるラグランジュ未定乗数を示し、Kは符号化コストを示す。数式(1)を用いる場合には、符号化コストKを最小化する予測モードが発生符号量及び予測誤差の観点から最適な予測モードとして判定される。数式(1)の変形として、OHのみまたはSADのみから符号化コストを見積もってもよいし、SADにアダマール変換を施した値またはその近似値を利用して符号化コストを見積もってもよい。
また、図示しない仮符号化ユニットを用いることにより最適な予測モードを判定することも可能である。例えば、符号化制御部116は、次の数式(2)に示すコスト関数を用いて最適な予測モードを判定する。
数式(2)において、Dは予測対象ブロックと局所復号画像との間の二乗誤差和(即ち、符号化歪)を示し、Rは予測対象ブロックと予測モードの予測画像127との間の予測誤差について仮符号化によって見積もられた符号量を示し、Jは符号化コストを示す。数式(2)の符号化コストJを導出する場合には予測モード毎に仮符号化処理及び局部復号化処理が必要なので、回路規模または演算量が増大する。反面、より正確な符号化歪と符号量とに基づいて符号化コストJが導出されるので、最適な予測モードを高精度に判定して高い符号化効率を維持しやすい。尚、数式(2)の変形として、RのみまたはDのみから符号化コストを見積もってもよいし、RまたはDの近似値を利用して符号化コストを見積もってもよい。また、符号化制御部116は、予測対象ブロックに関して事前に得られる情報(周囲の画素ブロックの予測モード、画像解析の結果など)に基づいて、数式(1)または数式(2)を用いた判定を行う予測モードの候補の数を、予め絞り込んでおいてもよい。
符号化制御部116は、図1の画像符号化装置の各要素を制御する。具体的には、符号化制御部116は、上述の動作を含む符号化処理のための種々の制御を行う。
1D変換行列セット部112は、予測選択部110からの予測情報126に含まれる予測モード情報に基づいて1D変換行列セット情報129を生成し、直交変換部102及び逆直交変換部105に入力する。尚、1D変換行列セット情報129の詳細は後述される。
以下、図2を用いて本実施形態に係る直交変換部102の詳細を説明する。
直交変換部102は、選択スイッチ201、垂直変換部202、転置部203、選択スイッチ204及び水平変換部205を有する。垂直変換部202は、1D直交変換部A206及び1D直交変換部B207を含む。水平変換部205は、1D直交変換部A208及び1D直交変換部B209を含む。尚、垂直変換部202及び水平変換部205の順序は、一例であり、これらは逆順であっても構わない。
1D直交変換部A206及び1D直交変換部A208は、入力される行列に対して1D変換行列Aを乗算する点で共通の機能を持ち、1D直交変換部B207及び1D直交変換部B209は、入力される行列に対して1D変換行列Bを乗算する点で共通の機能を持つ。従って、1D直交変換部A206及び1D直交変換部A208は、物理的に同一のハードウェアを時分割で使用することによっても実現可能である。また、1D直交変換部B207及び1D直交変換部B209も同様である。
選択スイッチ201は、1D変換行列セット情報129に含まれる垂直変換インデックスに従って、予測誤差119を1D直交変換部A206及び1D直交変換部B207のうちのいずれか一方に導く。1D直交変換部A206は、入力された予測誤差(行列)119に対して1D変換行列Aを乗算して出力する。1D直交変換部B207は、入力された予測誤差119に対して1D変換行列Bを乗算して出力する。具体的には、1D直交変換部A206及び1D直交変換部B207(即ち、垂直変換部202)は、次の数式(3)に示す一次元の直交変換を行って、予測誤差119の垂直方向の相関を除去する。
数式(3)において、Xは予測誤差119の行列(N×N)を示し、Vは1D変換行列A及び1D変換行列B(いずれもN×N)を包括的に示しており、Yは1D直交変換部A206及び1D直交変換部B207の出力行列(N×N)を示す。具体的には、変換行列Vは、行列Xの垂直方向の相関を除去するために設計された変換基底を行ベクトルとし縦に並べたN×Nの変換行列である。但し、後述するように、1D変換行列A及び1D変換行列Bは、異なる方法で設計され、異なる性質を持つ。尚、1D変換行列A及び1D変換行列Bは、設計された各変換基底をスカラ倍して整数化したものを使用することも可能である。
ここで、予測誤差119がM×Nで表現される矩形ブロックである場合、直交変換を行うブロックサイズもまたM×Nであってもよい。
転置部203は、垂直変換部202の出力行列(Y)の転置を行って、選択スイッチ204に与える。但し、転置部203は、一例であって、対応するハードウェアを必ずしも用意しなくてもよい。例えば、垂直変換部202による1D直交変換を実行した結果(垂直変換部202の出力行列の各要素)を保持しておき、水平変換部205による1D直交変換を実行するときに適切な順序で読み出せば、転置部203に対応するハードウェアを用意しなくても出力行列(Y)の転置を実行できる。
選択スイッチ204は、1D変換行列セット情報129に含まれる水平変換インデックスに従って、転置部203からの入力行列を1D直交変換部A208及び1D直交変換部B209のうちのいずれか一方に導く。1D直交変換部A208は、入力行列に対して1D変換行列Aを乗算して出力する。1D直交変換部B209は、入力行列に対して1D変換行列Bを乗算して出力する。具体的には、1D直交変換部A208及び1D直交変換部B209(即ち、水平変換部205)は、次の数式(4)に示す一次元の直交変換を行って、予測誤差の水平方向の相関を除去する。
数式(4)において、Hは1D変換行列A及び1D変換行列B(いずれもN×N)を包括的に示しており、Zは1D直交変換部A208及び1D直交変換部B209の出力行列(N×N)を示しており、これは変換係数120を指す。具体的には、変換行列Hは、行列Yの水平方向の相関を除去するために設計された変換基底を行ベクトルとし縦に並べたN×Nの変換行列である。先の説明と重複するが、1D変換行列A及び1D変換行列Bは、異なる方法で設計され、異なる性質を持つ。また、1D変換行列A及び1D変換行列Bは、設計された各変換基底をスカラ倍して整数化したものを使用することも可能である。
以上のように、直交変換部102は、予測誤差(行列)119に対して、1D変換行列セット部112から入力された1D変換行列セット情報129に従って直交変換を行い、変換係数(行列)120を生成する。尚、H.264を考慮すると、直交変換部102には、図示しないDCT部が含まれてもよいし、1D変換行列Aと1D変換行列BのいずれかをDCTのための行列に置き換えてもよい。例えば、1D変換行列BはDCTのための変換行列であってもよい。更に、直交変換部102は、DCTに加えて、アダマール変換、後述するカルーネン・レーベ変換、離散サイン変換などの種々の直交変換を実現してもよい。
ここで、1D変換行列Aと1D変換行列Bとの性質の差異について説明する。H.264などでサポートされるイントラ予測モードには、予測対象ブロックの左側及び上側の一方または両方の隣接ライン上の参照画素群を予測方向に沿ってコピーまたは補間後にコピーして予測画像を生成するものがある。すなわち、このイントラ予測モードでは、予測方向に従って参照画素群の中の少なくとも一つの参照画素が選択され、参照画素のコピーまたは参照画素からの補間により、予測画像が生成される。係るイントラ予測モードは、画像の空間的相関を利用するので、参照画素からの距離が大きくなるにつれて予測精度が低下する傾向にある。即ち、参照画素からの距離に応じて予測誤差の絶対値が増大し易い。尚、係る傾向は、予測方向によらず同様である。より具体的には、予測対象ブロックの左隣接ライン上の参照画素群のみが参照(参照画素の画素値のコピーまたは参照画素からの補間)されるイントラ予測モード(例えば、図7Aのモード1及びモード8)に関して、予測誤差は水平方向に係る傾向を示す。予測対象ブロックに上隣接ライン上の参照画素群のみを参照するイントラ予測モード(例えば、図7Aのモード0、モード3及びモード7)に関して、予測誤差は垂直方向に係る傾向を示す。更に、予測対象ブロックの左隣接ライン及び上隣接ライン上の参照画素群が参照される予測モード(例えば、図7Aのモード4、モード5及びモード6)に関して、予測誤差は水平方向及び垂直方向に係る傾向を示す。概括すれば、予測画像の生成のために利用する参照画素群のラインと直交する方向に係る傾向を示すといえる。
1D変換行列Aは、1D変換行列Bに比べて、上記直交する方向(垂直方向または水平方向)について1D直交変換を行う際の係数集密度が高くなる(即ち、量子化変換係数121における非零係数の割合が小さくなる)ように共通の変換基底を予め設計することによって生成される。一方、1D変換行列Bは、このような性質を持たない汎用的な変換行列を設計することによって生成される。例えば、汎用的な変換はDCTである。1D変換行列Aを用いて、上記直交する方向について1D直交変換を行えば、イントラ予測の予測誤差の変換効率が向上し、ひいては符号化効率が向上する。例えば、モード0(垂直方向予測)の予測誤差119は、垂直方向には上記傾向を示す一方、水平方向には上記傾向を示さない。故に、垂直変換部202において1D変換行列Aを用いて1D直交変換を行い、水平変換部205において1D変換行列Bを用いて1D直交変換を行うことにより、効率的な直交変換を実現できる。
以下、図3を用いて本実施形態に係る逆直交変換部105の詳細を説明する。
逆直交変換部105は、選択スイッチ301、垂直逆変換部302、転置部303、選択スイッチ304及び水平逆変換部305を有する。垂直逆変換部302は、1D逆直交変換部A306及び1D逆直交変換部B307を含む。水平逆変換部305は、1D逆直交変換部A308及び1D直交変換部B309を含む。尚、垂直逆変換部302及び水平逆変換部305の順序は、一例であり、これらは逆順であっても構わない。
1D逆直交変換部A306及び1D逆直交変換部A308は、入力される行列に対して前述の1D変換行列Aの転置行列を乗算する点で共通の機能を持ち、1D逆直交変換部B307及び1D逆直交変換部B309は、入力される行列に対して前述の1D変換行列Bの転置行列を乗算する点で共通の機能を持つ。従って、1D逆直交変換部A306及び1D逆直交変換部A308は、物理的に同一のハードウェアを時分割で使用することによっても実現可能である。また、1D逆直交変換部B307及び1D逆直交変換部B309も同様である。
選択スイッチ301は、1D変換行列セット情報129に含まれる垂直変換インデックスに従って、復元変換係数122を1D逆直交変換部A306及び1D逆直交変換部B307のうちのいずれか一方に導く。1D逆直交変換部A306は、入力された復元変換係数122(行列形式)に対して1D変換行列Aの転置行列を乗算して出力する。1D逆直交変換部B307は、入力された復元変換係数122に対して1D変換行列Bの転置行列を乗算して出力する。具体的には、1D逆直交変換部A306及び1D逆直交変換部B307(即ち、垂直逆変換部302)は、次の数式(5)に示す一次元の逆直交変換を行う。
数式(5)において、Z'は復元変換係数122の行列(N×N)を示し、VTは1D変換行列A及び1D変換行列B(いずれもN×N)の転置行列を包括的に示しており、Y'は1D逆直交変換部A306及び1D逆直交変換部B307の出力行列(N×N)を示す。
転置部303は、垂直逆変換部302の出力行列(Y')の転置を行って、選択スイッチ304に与える。但し、転置部303は、一例であって、対応するハードウェアを必ずしも用意しなくてもよい。例えば、垂直逆変換部302による1D逆直交変換を実行した結果(垂直逆変換部302の出力行列の各要素)を保持しておき、水平逆変換部305による1D逆直交変換を実行するときに適切な順序で読み出せば、転置部303に対応するハードウェアを用意しなくても出力行列(Y')の転置を実行できる。
選択スイッチ304は、1D変換行列セット情報129に含まれる水平変換インデックスに従って、転置部303からの入力行列を1D逆直交変換部A308及び1D逆直交変換部B309のうちのいずれか一方に導く。1D逆直交変換部A308は、入力行列に対して1D変換行列Aの転置行列を乗算して出力する。1D逆直交変換部B309は、入力行列に対して1D変換行列Bの転置行列を乗算して出力する。具体的には、1D逆直交変換部A308及び1D逆直交変換部B309(即ち、水平逆変換部305)は、次の数式(6)に示す一次元の逆直交変換を行う。
数式(6)において、HTは1D変換行列A及び1D変換行列B(いずれもN×N)の転置行列を包括的に示しており、X'は1D逆直交変換部A308及び1D逆直交変換部B309の出力行列(N×N)を示しており、これは復元予測誤差123を指す。
以上のように、逆直交変換部105は、復元変換係数(行列)122に対して、1D変換行列セット部112から入力された1D変換行列セット情報129に従って逆直交変換を行い、復元予測誤差(行列)123を生成する。尚、H.264を考慮すると、逆直交変換部105には、図示しないIDCT部が含まれてもよいし、1D変換行列Aと1D変換行列BのいずれかをDCTのための行列に置き換えてもよい。例えば、1D変換行列BがDCTのための行列であってもよい。更に、逆直交変換部105は、IDCTに加えて、直交変換部102と調和するようにアダマール変換、後述するカルーネン・レーベ変換、離散サイン変換などの種々の直交変換に対応する逆直交変換を実現してもよい。
以下、1D変換行列セット部112が生成する、本実施形態に係る1D変換行列セット情報129の詳細を説明する。
1D変換行列セット情報129は、垂直直交変換及び垂直逆直交変換のために使用される変換行列を選択するための垂直変換インデックスと、水平直交変換及び水平逆直交変換のために使用される変換行列を選択するための水平変換インデックスとを直接的または間接的に示す。例えば、1D変換行列セット情報129は、図4Dに示す変換インデックス(TransformIdx)で表現することができる。図4Dのテーブルを参照すれば、変換インデックスから垂直変換インデックス(Vertical Transform Idx)及び水平変換インデックス(Horizontal Transform Idx)を導出できる。
図4Bに示すように、垂直変換インデックスが「0」であれば、垂直直交変換または垂直逆直交変換のために前述の1D変換行列A(1D_Transform_Matrix_A)またはその転置行列が選択される。一方、垂直変換インデックスが「1」であれば、垂直直交変換または垂直逆直交変換のために前述の1D変換行列B(1D_Transform_Matrix_B)またはその転置行列が選択される。
図4Cに示すように、水平変換インデックスが「0」であれば、水平直交変換または水平逆直交変換のために前述の1D変換行列A(1D_Transform_Matrix_A)またはその転置行列が選択される。一方、水平変換インデックスが「1」であれば、水平直交変換または水平逆直交変換のために前述の1D変換行列B(1D_Transform_Matrix_B)またはその転置行列が選択される。
また、各(イントラ)予測モードのインデックス(IntraNxNPredModeIndex)と、その名称(Name of IntraNxNPredMode)と、対応する垂直変換インデックス及び水平変換インデックスを図4Aに例示する。尚、図4Aにおいて、「NxN」は予測対象ブロックのサイズを表している(N=4,8,16など)。予測対象ブロックのサイズは、「MxN」(即ち、正方形以外の矩形)に拡張することもできる。
ここで、図4Aと図4Dを統合した、各予測モードのインデックスとその名称と、対応する変換インデックスを図4Eに例示する。
1D変換行列セット部112は、予測情報126に含まれる予測モード情報から予測モードのインデックスを検出し、対応する1D変換行列セット情報129を生成する。尚、図4A、図4B、図4C、図4D及び図4Eに示す各種テーブルは一例であり、1D変換行列セット部112はこれらのテーブルの一部または全部を使用することなく1D変換行列セット情報129を生成してよい。
例えば、TrasnformIdxが0を示す場合、Vertical Transform indexが0を、Horizontal Transform indexが0を示すことを意味する。つまり、垂直直交変換には1D変換行列Aを、水平直交変換には1D変換行列Aを使用することを意味する。また、垂直逆直交変換には1D変換行列Aの転置行列を、水平逆直交変換には1D変換行列Aの転置行列を使用することを意味する。
TrasnformIdxが1を示す場合、Vertical Transform indexが0を、Horizontal Transform indexが1を示すことを意味する。つまり、垂直直交変換には1D変換行列Aを、水平直交変換には1D変換行列Bを使用することを意味する。また、垂直逆直交変換には1D変換行列Aの転置行列を、水平逆直交変換には1D変換行列Bの転置行列を使用することを意味する。
TrasnformIdxが2を示す場合、Vertical Transform indexが1を、Horizontal Transform indexが0を示すことを意味する。つまり、垂直直交変換には1D変換行列Bを、水平直交変換には1D変換行列Aを使用することを意味する。また、垂直逆直交変換には1D変換行列Bの転置行列を、水平逆直交変換には1D変換行列Aの転置行列を使用することを意味する。
TrasnformIdxが3を示す場合、Vertical Transform indexが1をHorizontal Transform indexが1を示すことを意味する。つまり、垂直直交変換には1D変換行列Bを、水平直交変換には1D変換行列Bを使用することを意味する。また、垂直逆直交変換には1D変換行列Bの転置行列を、水平逆直交変換には1D変換行列Bの転置行列を使用することを意味する。
図4Aに示すテーブルは、前述の各イントラ予測モードの傾向を考慮して1D変換行列セット情報129を割り当てている。即ち、予測誤差の垂直方向に上記傾向を示す予測モードには、Vertical Transform indexに0が、水平方向に上記傾向を示すモードには、Horizontal Transform indexに0が割り当られている。一方、上記傾向を示さない方向には、夫々1が割り当られている。各予測モードの垂直方向及び水平方向を上記傾向の有無に従って2つのクラスに分類し、垂直方向及び水平方向の夫々について適応的に1D変換行列Aまたは1D変換行列Bを適用することにより、各予測モードに一律にDCTなどの固定的な直交変換を施す場合に比べて、高い変換効率が達成される。
以下、係数順制御部113の詳細を説明する。
係数順制御部113は、2次元表現である量子化変換係数121の各要素を所定の順序に従って配列することにより、1次元表現である量子化変換係数列117に変換する。一例として、係数順制御部113は、予測モードに関わらず共通の2D−1D変換を行うことができる。具体的には、係数制御部113は、H.264と同様にジグザグスキャンを利用できる。ジグザグスキャンは、図8Aに示すような順序で量子化変換係数121の各要素を配列して、図8Bに示すような量子化変換係数列117に変換する。図8A及び図8Bにおいて、(i,j)は各要素の量子化変換係数(行列)121中の座標(位置情報)を示す。また、図8Cは、ジグザグスキャンを利用した2D−1D変換(4×4画素ブロックの場合)を示している。具体的には、図8Cは、ジグザグスキャンを利用して2D−1D変換された量子化変換係数列117の係数順(スキャン順)を示すインデックス(idx)と、対応する量子化変換係数121の要素(cij)とを示している。尚、図8Cにおいて、cijは、量子化変換係数(行列)121中の座標(i,j)の要素を示している。
別の例として、係数順制御部113は、予測モード毎の個別の2D−1D変換を行うことができる。このような動作を行う係数順制御部113は、図5Aに例示されている。この係数順制御部113は、選択スイッチ501と、9種類の予測モード毎の個別の2D−1D変換部502,・・・,510とを含む。選択スイッチ501は、予測情報126に含まれる予測モード情報(例えば、図4Aの予測モードのインデックス)に従って量子化変換係数121を、予測モードに応じた2D−1D変換部(502,・・・,510のうちいずれか1つ)に導く。例えば、予測モードインデックスが0であれば、選択スイッチ501は量子化変換係数121を2D−1D変換部502に導く。図5Aにおいて、各予測モードと2D−1D変換部とは1対1に対応しており、量子化変換係数121は予測モードに応じた1つの2D−1D変換部に導かれる。図9は、各2D−1D変換部502,・・・,510が行う2D−1D変換(4×4画素ブロックの場合)を例示する。尚、図9に示されるような予測モード毎の2D−1D変換の具体的な設計手法は、後述される。各予測モードに対応する2D−1D変換部によって2D−1D変換された量子化変換係数列117の係数順(スキャン順)を示すインデックス(idx)と、対応する量子化変換係数121の要素(cij)とを示している。尚、図9において、cijは、量子化変換係数(行列)121中の座標(i,j)の要素を示している。また、図9において、各予測モードは、その名称によって表されているが、予測モードインデックスとの対応は図4Aに示す通りである。このように、予測モード毎の個別の2D−1D変換を適用すれば、例えば予測モード毎の量子化変換係数121における非零係数の発生傾向に適合した順序で係数がスキャンされるので符号化効率が向上する。
尚、簡単化のために4×4画素ブロックに関する例を示したが、8×8画素ブロック、16×16画素ブロックなどに関しても同様に、予測モード毎の個別の2D−1D変換を規定できる。また、画素ブロックがM×Nで表現される矩形ブロックであるならば、2D−1D変換を行うブロックサイズとしてM×Nを用いることもできる。この場合には、矩形ブロックに関して、予測モード毎に図9に例示されるような個別の2D−1D変換を規定すればよい。
更に別の例として、係数順制御部113は、2D−1D変換におけるスキャン順を動的に更新してもよい。このような動作を行う係数順制御部113は、図5Bに例示される。この係数順制御部113は、選択スイッチ501と、9種類の予測モード毎の個別の2D−1D変換部502,・・・,510と、発生頻度カウント部511と、係数順更新部512とを含む。選択スイッチ501は、図5Aに関して説明した通りである。9種類の予測モード毎の個別の2D−1D変換部502,・・・,510は、そのスキャン順が係数順更新部512によって更新される点で図5Aとは異なる。
発生頻度カウント部511は、予測モード毎に、量子化変換係数列117の各要素における非零係数の発生回数のヒストグラムを作成する。発生頻度カウント部511は、作成したヒストグラム513を係数順更新部512に入力する。
係数順更新部512は、予め定められたタイミングで、ヒストグラム513に基づいて係数順の更新を行う。上記タイミングは、例えば、コーディングツリーユニットの符号化処理が終了したタイミング、コーディングツリーユニット内の1ライン分の符号化処理が終了したタイミングなどである。
具体的には、係数順更新部512は、ヒストグラム513を参照して、非零係数の発生回数が閾値以上にカウントされた要素を持つ予測モードに関して係数順の更新を行う。例えば、係数順更新部512は、非零係数の発生が16回以上カウントされた要素を持つ予測モードに関して更新を行う。このような発生回数に閾値を設けることによって、係数順の更新が大域的に実施されるので、局所的な最適解に収束しにくくなる。
係数順更新部512は、更新対象となる予測モードに関して、非零係数の発生頻度の降順に要素をソーティングする。ソーティングは、例えばバブルソート、クイックソートなどの既存のアルゴリズムによって実現できる。そして、係数順更新部512は、ソーティングされた要素の順序を示す係数順更新情報514を、更新対象となる予測モードに対応する2D−1D変換部に入力する。
係数順更新情報514が入力されると、2D−1D変換部は更新後のスキャン順に従って2D−1D変換を行う。尚、スキャン順を動的に更新する場合には、各2D−1D変換部の初期スキャン順を予め定めておく必要がある。例えば、ジグザグスキャンまたは図9に例示したスキャン順が、初期スキャン順として利用できる。
このように、動的にスキャン順を更新することにより、予測画像の性質、量子化情報(量子化パラメータ)などの影響に応じて、量子化変換係数121における非零係数の発生傾向が変化する場合にも、安定的に高い符号化効率を期待できる。具体的には、エントロピー符号化部114におけるランレングス符号化の発生符号量を抑制できる。
尚、簡単化のためにH.264を例示して予測モードが9種類の場合を説明したが、予測モードが17種類、33種類などに拡張された場合にも、拡張された各予測モードに対応する2D−1D変換部を追加すれば予測モード毎の個別の2D−1D変換を行うことができる。
以下、図10A及び図10Bを用いて、図1の画像符号化装置が符号化対象ブロック(コーディングツリーユニット)に対して行う処理を説明する。尚、図10A及び図10Bの例では、本実施形態に係る直交変換及び逆直交変換(即ち、1D変換行列セット情報129に基づく適応的な直交変換及び逆直交変換)が有効であることを前提としている。しかしながら、後述するようにシンタクスによって本実施形態に係る直交変換及び逆直交変換が無効となることが規定されてもよい。
入力画像118が符号化対象ブロック単位で図1の画像符号化装置に入力されると、符号化対象ブロックの符号化処理が開始する(ステップS601)。イントラ予測部108及びインター予測部109は、参照画像メモリ107に保存されている参照画像125を用いて、イントラ予測画像及びインター予測画像を生成する(ステップS602)。符号化制御部116は前述の符号化コストなどの観点から最適な予測モードを判定し、予測情報126を生成する(ステップS603)。予測情報126は、予測選択部110から前述のように各要素に入力される。ステップS603において生成された予測情報126がイントラ予測を示唆するのであれば処理はステップS605に進み、インター予測を示唆するのであれば処理はステップS605’に進む。
ステップS605では、減算部101が符号化対象ブロックから(イントラ)予測画像127を減算して予測誤差119を生成し、処理はステップS606に進む。一方、ステップS605’でも同様に、減算部101が符号化対象ブロックから(インター)予測画像127を減算して予測誤差119を生成し、処理はステップS614’に進む。
ステップS606では、1D変換行列セット部112が、ステップS603において生成された予測情報126に含まれる予測モード情報を抽出する。1D変換行列セット部112は、抽出した予測モード情報に基づいて(例えば、図4Aのテーブルを参照して)1D変換行列セット情報129を生成する(ステップS607)。1D変換行列セット部112は、1D変換行列セット情報129を直交変換部102及び逆直交変換部105に入力する。
直交変換部102内の選択スイッチ201は、1D変換行列セット情報129に基づいて1D直交変換部A206または1D直交変換部B207を選択する(ステップS608、ステップS609及びステップS610)。一方、直交変換部102内の選択スイッチ204は、1D変換行列セット情報129に基づいて1D直交変換部A208または1D直交変換部B209を選択する(ステップS611、ステップS612及びステップS613)。その後、処理はステップS614に進む。
例えば、1D変換行列セット情報129の一例である変換インデックス(TransformIdx)が0の場合、選択スイッチ201は垂直変換部202内の1D直交変換部A206を選択し(ステップS609)、選択スイッチ204は水平変換部205内の1D直交変換部A208を選択する(ステップS612)。TransformIdxが1の場合、選択スイッチ201は垂直変換部202内の1D直交変換部A206を選択し(ステップS609)、選択スイッチ204は水平変換部205内の1D直交変換部B209を選択する(ステップS613)。TransformIdxが2の場合、選択スイッチ201は垂直変換部202内の1D直交変換部B207を選択し(ステップS610)、選択スイッチ204は水平変換部205内の1D直交変換部A208を選択する(ステップS612)。TransformIdxが3の場合、選択スイッチ201は垂直変換部202内の1D直交変換部B207を選択し(ステップS610)、選択スイッチ204は水平変換部205内の1D直交変換部B209を選択する(ステップS613)。
ステップS614では、直交変換部102が予測誤差119に対して、ステップS608,・・・,ステップS613による設定に応じた垂直変換及び水平変換を夫々行って、変換係数120を生成する。続いて、量子化部103がステップS614において生成された変換係数120に量子化を行って量子化変換係数121を生成し(ステップS615)、処理はステップS616に進む。
一方、ステップS614’では、直交変換部102が予測誤差119に対して、例えばDCTなどの固定的な直交変換を行って、変換係数120を生成する。続いて、量子化部103がステップS614’において生成された変換係数120に量子化を行って量子化変換係数121を生成し(ステップS615’)、処理はステップS617’に進む。尚、ステップS614’において行われる直交変換は、図示しないDCT部などによって実現されてもよいし、1D直交変換部B207及び1D直交変換部B209によって実現されてもよい。
ステップS616では、係数順制御部113が、ステップS603において生成された予測情報126に含まれる予測モード情報に基づいてスキャン順(即ち、図5A及び図5Bの例であれば、選択スイッチ501の接続先)を設定し、処理はステップS617に進む。但し、係数制御部113が予測モードに関わらず共通の2D−1D変換を行うのであれば、ステップS616は省略可能である。
ステップS617では、係数順制御部113が量子化変換係数121に対して、ステップS616における設定に応じた2D−1D変換を行って量子化変換係数列117を生成する。続いて、エントロピー符号化部114が、この量子化変換係数列117を含む符号化パラメータをエントロピー符号化する(ステップS618)。符号化データ130は、符号化制御部116によって管理される適切なタイミングで出力される。一方、逆量子化部104は量子化変換係数121に逆量子化を行って復元変換係数122を生成し(ステップS619)、処理はステップS620に進む。
ステップS617’では、係数順制御部113が量子化変換係数121に対して、例えばジグザグスキャンまたは図9のIntra_NxN_DCに対応する2D−1D変換などの固定的な2D−1D変換を行って量子化変換係数列117を生成する。続いて、エントロピー符号化部114が、この量子化変換係数列117を含む符号化パラメータをエントロピー符号化する(ステップS618’)。符号化データ130は、符号化制御部116によって管理される適切なタイミングで出力される。一方、逆量子化部104は量子化変換係数121に逆量子化を行って復元変換係数122を生成し(ステップS619’)、処理はステップS626’に進む。
逆直交変換部105内の選択スイッチ301は、1D変換行列セット情報129に基づいて1D逆直交変換部A306または1D逆直交変換部B307を選択する(ステップS620、ステップS621及びステップS622)。一方、逆直交変換部105内の選択スイッチ304は、1D変換行列セット情報129に基づいて1D逆直交変換部A308または1D逆直交変換部B309を選択する(ステップS623、ステップS624及びステップS625)。その後、処理はステップS626に進む。
例えば、1D変換行列セット情報129の一例である変換インデックス(TransformIdx)が0の場合、選択スイッチ301は垂直逆変換部302内の1D逆直交変換部A306を選択し(ステップS621)、選択スイッチ304は水平逆変換部305内の1D逆直交変換部A308を選択する(ステップS624)。TransformIdxが1の場合、選択スイッチ301は垂直逆変換部302内の1D逆直交変換部A306を選択し(ステップS621)、選択スイッチ304は水平逆変換部305内の1D逆直交変換部B309を選択する(ステップS625)。TransformIdxが2の場合、選択スイッチ301は垂直逆変換部302内の1D逆直交変換部B307を選択し(ステップS622)、選択スイッチ304は水平逆変換部305内の1D逆直交変換部A308を選択する(ステップS624)。TransformIdxが3の場合、選択スイッチ301は垂直逆変換部302内の1D逆直交変換部B307を選択し(ステップS622)、選択スイッチ304は水平逆変換部305内の1D逆直交変換部B309を選択する(ステップS625)。
ステップS626では、逆直交変換部105が復元変換係数122に対して、ステップS620,・・・,ステップS625による設定に応じた垂直逆変換及び水平逆変換を夫々行って復元予測誤差123を生成し、処理はステップS627に進む。ステップS626’では、逆直交変換部105が復元変換係数122に対して、例えばIDCTなどの逆直交変換を行って復元予測誤差123を生成し、処理はステップS627に進む。尚、ステップS626’において行われる固定的な逆直交変換は、図示しないIDCT部などによって実現されてもよいし、1D逆直交変換部B307及び1D逆直交変換部B309によって実現されてもよい。
ステップS627において、加算部106はステップS626またはステップS626’において生成された復元予測誤差123と予測画像127と加算して局所復号画像124を生成し、この局所復号画像124が参照画像として参照画像メモリ107に保存され、符号化対象ブロックの符号化処理が終了する(ステップS628)。
以下、前述の1D変換行列A及び1D変換行列Bの設計手法について説明する。H.264の4×4画素ブロック及び8×8画素ブロックでは、夫々9種類の予測モードが定義されており、16x16画素ブロックでは4種類の予測モードが定義されている。
まず、各予測モードの予測誤差119を夫々生成する。各予測モードの予測誤差119のうち、参照画素からの距離が大きくなるにつれて予測誤差の絶対値が大きくなるという前述の傾向を垂直方向または水平方向に示すものを夫々収集する。そして、この傾向を示す方向を縦に設定して予測誤差119を横に並べた行列に対して特異値分解を行うことにより、係る行列の垂直方向の相関を除去する1D直交基底を設計する。この1D直交基底を行ベクトルとし縦に並べて1D変換行列Aが生成される。
一方、係る傾向を示さない方向を縦に設定して予測誤差119を横に並べた行列に対して、特異値分解を行うことにより、係る行列の垂直方向の相関を除去する1D直交基底を生成する。この1D直交基底を行ベクトルとし縦に並べて1D変換行列Bが生成される。尚、この1D変換行列Bは、単にDCTのための行列で代用することも可能である。簡単化のために4×4画素ブロックに関する設計を例示したが、8×8画素ブロック及び16×16画素ブロックのための1D変換行列も同様に設計可能である。また、説明した設計手法は一例であり、前述の予測残差の性質を考慮して適宜設計を行う余地がある。
以下、図9に例示されるような予測モード毎の2D−1D変換(スキャン順)の具体的な設計手法について説明する。予測モード毎のスキャン順は、量子化部103によって生成される量子化変換係数121に基づいて設計される。例えば、4×4画素ブロックに関する設計では、複数の訓練画像を用意して9種類の各予測モードの予測残差119を夫々生成する。この予測残差119の各々に対して数式(3)及び数式(4)に示す直交変換を行って変換係数120を生成し、更にこれを量子化する。量子化変換係数121に対して、4×4画素ブロック内の各要素について非零係数の発生回数を累積加算する。この累積加算は全ての訓練画像に対して行われ、4×4画素ブロックの16個の要素毎に非零係数の発生頻度を示すヒストグラムが作成される。このヒストグラムに基づいて、発生頻度の高い要素から昇順にインデックス0〜15が与えられる。このようなインデックスの割り当てが、全ての予測モードについて個別に行われる。割り当てられたインデックスの順序が、各予測モードに対応するスキャン順として使用される。
簡単化のために4×4画素ブロックに関する設計を例示したが、8×8画素ブロック及び16×16画素ブロックのスキャン順も同様に設計可能である。また、予測モードが17種類、33種類及び任意の数に拡張しても同様の手法で設計可能である。尚、スキャン順を動的に更新する手法については、図5Bに関して説明した通りである。
以下、図1の画像符号化装置が利用するシンタクスについて説明する。
シンタクスは、画像符号化装置が動画像データを符号化する際の符号化データ(例えば、図1の符号化データ130)の構造を示している。この符号化データを復号化する際に、同じシンタクス構造を参照して画像復号化装置がシンタクス解釈を行う。図1の画像符号化装置が利用するシンタクス700を図11に例示する。
シンタクス700は、ハイレベルシンタクス701、スライスレベルシンタクス702及びコーディングツリーレベルシンタクス703の3つのパートを含む。ハイレベルシンタクス701は、スライスよりも上位のレイヤのシンタクス情報を含む。スライスとは、フレームまたはフィールドに含まれる矩形領域もしくは連続領域を指す。スライスレベルシンタクス702は、各スライスを復号化するために必要な情報を含む。コーディングツリーレベルシンタクス703は、各コーディングツリー(即ち、各コーディングツリーユニット)を復号化するために必要な情報を含む。これら各パートは、更に詳細なシンタクスを含む。
ハイレベルシンタクス701は、シーケンスパラメータセットシンタクス704及びピクチャパラメータセットシンタクス705などの、シーケンス及びピクチャレベルのシンタクスを含む。スライスレベルシンタクス702は、スライスヘッダーシンタクス706及びスライスデータシンタクス707などを含む。コーディングツリーレベルシンタクス703は、コーディングツリーユニットシンタクス708及びプレディクションユニットシンタクス709などを含む。
コーディングツリーユニットシンタクス708は、四分木構造を持つことができる。具体的には、コーディングツリーユニットシンタクス708のシンタクス要素として、更にコーディングツリーユニットシンタクス708を再帰呼び出しすることができる。即ち、1つのコーディングツリーユニットを四分木で細分化することができる。また、コーディングツリーユニットシンタクス708内にはトランスフォームユニットシンタクス710が含まれている。トランスフォームユニットシンタクス710は、四分木の最末端の各コーディングツリーユニットシンタクス708において呼び出される。トランスフォームユニットシンタクス710は、逆直交変換及び量子化などに関わる情報が記述されている。
図12は、本実施形態に係るスライスヘッダーシンタクス706を例示する。図12に示されるslice_directional_unified_transform_flagは、例えば、当該スライスに関して本実施形態に係る直交変換及び逆直交変換の有効/無効を示すシンタクス要素である。
slice_directional_unified_transform_flagが0である場合、当該スライス内での本実施形態に係る直交変換及び逆直交変換は無効である。故に、直交変換部102及び逆直交変換部105は、DCT及びIDCTなどの固定的な直交変換及び逆直交変換を行う。この固定的な直交変換及び逆直交変換は、1D直交変換部B207、1D直交変換部B209、1D逆直交変換部307及び1D逆直交変換部309によって(即ち、1D変換行列Bによって)行われてもよいし、図示しないDCT部及びIDCT部によって行われてもよい。また、係数順制御部113でも固定的な2D−1D変換(例えば、ジグザグスキャン)が行われる。この固定的な2D−1D変換は、2D−1D変換部(モード2)504によって行われてもよいし、図示しない2D−1D変換部によって行われてもよい。
一例として、slice_directional_unified_transform_flagが1である場合には、当該スライス内全域で本実施形態に係る直交変換及び逆直交変換が有効となる。即ち、当該スライス内全域で図10A及び図10Bに関して説明した符号化フローチャートに従って符号化処理が行われる。即ち、選択スイッチ201は、1D変換行列セット情報129に基づいて1D直交変換部A206または1D直交変換部B207を選択する。選択スイッチ204は、1D変換行列セット情報129に基づいて1D直交変換部A208または1D直交変換部B209を選択する。また、選択スイッチ301は、1D変換行列セット情報129に基づいて1D逆直交変換部A306または1D逆直交変換部B307を選択する。選択スイッチ304は、1D変換行列セット情報129に基づいて1D逆直交変換部A308または1D逆直交変換部B309を選択する。更に、選択スイッチ501は、予測情報126に含まれる予測モード情報に従って、2D−1D変換部502,・・・,510のいずれかを選択する。
また、別の例として、slice_directional_unified_transform_flagが1である場合には、より下位のレイヤ(コーディングツリーユニット、トランスフォームユニットなど)のシンタクスにおいて当該スライス内部の局所領域毎に本実施形態に係る直交変換及び逆直交変換の有効/無効が規定されてもよい。
図13は、本実施形態に係るコーディングツリーユニットシンタクス708を例示する。図13に示されるctb_directional_unified_transform_flagは、当該コーディングツリーユニットに関して本実施形態に係る直交変換及び逆直交変換の有効/無効を示すシンタクス要素である。また、図13に示されるpred_modeはプレディクションユニットシンタクス709に含まれるシンタクス要素の1つであり、当該コーディングツリーユニットもしくはマクロブロック内の符号化タイプを示している。MODE_INTRAは、符号化タイプがイントラ予測であることを示す。ctb_directional_unified_transform_flagは、前述のslice_directional_unified_transform_flagが1であって、かつ、コーディングツリーユニットの符号化タイプがイントラ予測の時にのみ符号化される。
ctb_directional_unified_transform_flagが0である場合、当該コーディングツリーユニット内での本実施形態に係る直交変換及び逆直交変換は無効である。故に、直交変換部102及び逆直交変換部105は、DCT及びIDCTなどの固定的な直交変換及び逆直交変換を行う。この固定的な直交変換及び逆直交変換は、1D直交変換部B207、1D直交変換部B209、1D逆直交変換部307及び1D逆直交変換部309によって(即ち、1D変換行列Bによって)行われてもよいし、図示しないDCT部及びIDCT部によって行われてもよい。また、係数順制御部113でも固定的な2D−1D変換(例えば、ジグザグスキャン)が行われる。この固定的な2D−1D変換は、2D−1D変換部(モード2)504によって行われてもよいし、図示しない2D−1D変換部によって行われてもよい。
一方、ctb_directional_unified_transform_flagが1である場合、当該コーディングツリーユニット内で本実施形態に係る直交変換及び逆直交変換が有効となり、図10A及び図10Bで説明した符号化フローチャートに従って符号化処理が行われる。即ち、選択スイッチ201は、1D変換行列セット情報129に基づいて1D直交変換部A206または1D直交変換部B207を選択する。選択スイッチ204は、1D変換行列セット情報129に基づいて1D直交変換部A208または1D直交変換部B209を選択する。また、選択スイッチ301は、1D変換行列セット情報129に基づいて1D逆直交変換部A306または1D逆直交変換部B307を選択する。選択スイッチ304は、1D変換行列セット情報129に基づいて1D逆直交変換部A308または1D逆直交変換部B309を選択する。更に、選択スイッチ501は、予測情報126に含まれる予測モード情報に従って、2D−1D変換部502,・・・,510のいずれかを選択する。
図13の例のように、コーディングツリーユニットシンタクス708において、本実施形態に係る直交変換及び逆直交変換の有効/無効を規定するフラグを符号化すると、このフラグを符号化しない場合に比べて情報量(符号量)は増大する。しかしながら、このフラグを符号化することにより、局所領域(即ち、コーディングツリーユニット)毎に最適な直交変換を行うことが可能となる。
図14は、本実施形態に係るトランスフォームユニットシンタクス710を例示する。図14に示されるtu_directional_unified_transform_flagは、当該トランスフォームユニットに関して本実施形態に係る直交変換及び逆直交変換の有効/無効を示すシンタクス要素である。また、図14に示されるpred_modeはプレディクションユニットシンタクス709に含まれるシンタクス要素の1つであり、当該コーディングツリーユニットもしくはマクロブロック内の符号化タイプを示している。MODE_INTRAは、符号化タイプがイントラ予測であることを示す。tu_directional_unified_transform_flagはslice_directional_unified_transform_flagが1であって、かつ、コーディングツリーユニットの符号化タイプがイントラ予測の時にのみ符号化される。
tu_directional_unified_transform_flagが0である場合、当該トランスフォームユニット内での本実施形態に係る直交変換及び逆直交変換は無効である。故に、直交変換部102及び逆直交変換部105は、DCT及びIDCTなどの固定的な直交変換及び逆直交変換を行う。この固定的な直交変換及び逆直交変換は、1D直交変換部B207、1D直交変換部B209、1D逆直交変換部307及び1D逆直交変換部309によって(即ち、1D変換行列Bによって)行われてもよいし、図示しないDCT部及びIDCT部によって行われてもよい。また、係数順制御部113でも固定的な2D−1D変換(例えば、ジグザグスキャン)が行われる。この固定的な2D−1D変換は、2D−1D変換部(モード2)504によって行われてもよいし、図示しない2D−1D変換部によって行われてもよい。
一方、tu_directional_unified_transform_flagが1である場合、当該トランスフォームユニット内での本実施形態に係る直交変換及び逆直交変換が有効となり、図10A及び図10Bで説明した符号化フローチャートに従って符号化処理が行われる。即ち、選択スイッチ201は、1D変換行列セット情報129に基づいて1D直交変換部A206または1D直交変換部B207を選択する。選択スイッチ204は、1D変換行列セット情報129に基づいて1D直交変換部A208または1D直交変換部B209を選択する。また、選択スイッチ301は、1D変換行列セット情報129に基づいて1D逆直交変換部A306または1D逆直交変換部B307を選択する。選択スイッチ304は、1D変換行列セット情報129に基づいて1D逆直交変換部A308または1D逆直交変換部B309を選択する。更に、選択スイッチ501は、予測情報126に含まれる予測モード情報に従って、2D−1D変換部502,・・・,510のいずれかを選択する。
図14の例のように、トランスフォームユニットシンタクス710において、本実施形態に係る直交変換及び逆直交変換の有効/無効を規定するフラグを符号化すると、このフラグを符号化しない場合に比べて情報量(符号量)は増大する。しかしながら、このフラグを符号化することにより、局所領域(即ち、トランスフォームユニット)毎に最適な直交変換を行うことが可能となる。
尚、図12、図13及び図14に例示するシンタクステーブルの行間には、本実施形態において規定していないシンタクス要素が挿入されてもよいし、その他の条件分岐に関する記述が含まれていてもよい。また、シンタクステーブルを複数のテーブルに分割したり、複数のシンタクステーブルを統合したりしてもよい。また、例示した各シンタクス要素の用語は、任意に変更可能である。
以上説明したように、本実施形態に係る画像符号化装置は、参照画素からの距離が大きくなるにつれて予測精度が低下するというイントラ予測の傾向を利用する。この画像符号化装置は、各予測モードの垂直方向及び水平方向を上記傾向の有無に従って2つのクラスに分類し、垂直方向及び水平方向の夫々について適応的に1D変換行列Aまたは1D変換行列Bを適用する。1D変換行列Aは、参照画素群のラインに直交する方向(垂直方向または水平方向)について1D直交変換を行う際の係数集密度が高くなる(即ち、量子化変換係数121における非零係数の割合が小さくなる)ように共通の変換基底を予め設計することによって生成される。一方、1D変換行列Bは、このような性質を持たない汎用的な変換行列を設計することによって生成される。例えば、汎用的な変換はDCTである。故に、本実施形態に係る画像符号化装置によれば、各予測モードに一律にDCTなどの固定的な直交変換を施す場合に比べて、高い変換効率が達成される。
また、本実施形態に係る直交変換部102及び逆直交変換部105は、ハードウェア実装及びソフトウェア実装のいずれにも好適である。
数式(3)乃至数式(6)は固定行列の乗算を表しているので、直交変換部及び逆直交変換部をハードウェア実装する場合には、乗算器よりもむしろハードワイヤードロジックによって構成されることが想定される。
仮に、9種類のイントラ予測モードの夫々について専用の変換基底を用いて直交変換及び逆直交変換を行うとすれば、9個の2D直交変換部または図15に示すように18(=9×2)個の1D直交変換部を用意する必要がある。これら9個の2D直交変換部または18個の1D直交変換部は、夫々異なる変換行列を乗算するので、結果的に、H.264で必要なDCTのための専用ハードウェアに加えて、追加で9個の2D直交変換部または18個の1D直交変換部のための専用ハードウェアを設けることとなり、回路規模が増大する。
一方、本実施形態に係る直交変換部及び逆直交変換部は、図2及び図3に示す通り、2個(垂直(逆)変換部及び水平(逆)変換部を時分割で共有する場合)の1D直交変換部と、行列の転置を行う回路との組み合わせによって4種類の2次元の直交変換を実行する。故に、本実施形態に係る直交変換部及び逆直交変換部によれば、ハードウェア実装における回路規模の増加を大幅に抑制できる。
また、ソフトウェア実装に関して、仮に9種類のイントラ予測モードの夫々について専用の変換基底を用いて直交変換及び逆直交変換を行うとすれば、9個の2D直交変換行列または18(=9×2)個の1D直交変換行列をメモリに保持しておき、これら変換行列を予測モード毎に呼び出して汎用乗算機を用いて直交変換を実現することが想定される。故に、変換行列を保存するためのメモリサイズの増加によるコスト増を招いたり、変換の度に変換行列をメモリにロードすることによるメモリバンド幅の増加に繋がったりするおそれがある。
一方、本実施形態に係る直交変換部及び逆直交変換部は、図2及び図3に示す通り、2個の1D直交変換行列を利用した垂直変換及び水平変換を組み合わせることにより4種類の2次元の直交変換を実行する。故に、本実施形態に係る直交変換部及び逆直交変換部によれば、ソフトウェア実装におけるメモリサイズの増加を大幅に抑制できる。
また、本実施形態において説明したように予測モード毎に個別のスキャン順を用意することは、符号化効率の向上に寄与する。量子化変換係数121は要素毎に非零係数の発生傾向が偏る性質を持つ。係る非零係数の発生傾向は、イントラ予測の予測方向毎に異なる。更に、予測方向が同一であれば、異なる入力画像118の画素ブロックを符号化した場合にも、非零係数の発生傾向は類似する。故に、係数順制御部113は、量子化係数121のうち非零係数の発生確率が高い要素から順に1次元の量子化変換係数列122に変換することによって、量子化変換係数列122において零係数が高確率で密集する。即ち、エントロピー符号化部114におけるランレングス符号化による発生符号量を削減できる。係数順制御部113は、図5A及び図5Bに関して説明した通り、予測モード毎に予め学習されたスキャン順を固定的に利用してもよいし、符号化処理中に動的にスキャン順を更新して利用してもよい。予測モード毎に最適化されたスキャン順を利用すれば、例えばH.264と比較して演算量の大幅な増加を引き起こすことなく、量子化変換係数列122に基づく発生符号量を削減できる。
(第2の実施形態)
第2の実施形態に係る画像符号化装置は、前述の第1の実施形態に係る画像符号化装置と直交変換及び逆直交変換の詳細において異なる。以降の説明では、本実施形態において第1の実施形態と同一部分には同一符号を付して示し、異なる部分を中心に説明する。本実施形態に係る画像符号化装置に対応する画像復号化装置は、第5の実施形態において説明する。
本実施形態に係る画像符号化装置は、図2に例示した直交変換部102の代わりに、図16に例示する直交変換部102を含む。図16の直交変換部102は、選択スイッチ801、垂直変換部802、転置部203、選択スイッチ804及び水平変換部805を有する。垂直変換部802は、1D直交変換部C806、1D直交変換部D807及び1D直交変換部E808を含む。水平変換部805は、1D直交変換部C809、1D直交変換部D810及び1D直交変換部E811を含む。尚、垂直変換部802及び水平変換部805の順序は、一例であり、これらは逆順であっても構わない。
1D直交変換部C806及び1D直交変換部C809は、入力される行列に対して1D変換行列Cを乗算する点で共通の機能を持つ。1D直交変換部D807及び1D直交変換部D810は、入力される行列に対して1D変換行列Dを乗算する点で共通の機能を持つ。1D直交変換部E808及び1D直交変換部E811は、入力される行列に対して1D変換行列Eを乗算する点で共通の機能を持つ。
以下、本実施形態に係る1D変換行列C、1D変換行列D及び1D変換行列Eについて説明する。
前述のように、予測誤差119は参照画素からの距離が大きくなるにつれて絶対値が大きくなる傾向を持つ。係る傾向は予測方向に関わらず同様であるが、DC予測モードの予測画素119は垂直方向及び水平方向のいずれにも係る傾向を示すとはいえない。本実施形態では、DC予測モードに関して後述する1D変換行列Eを利用する。一方、DC予測モード以外の予測モードについては、前述の第1の実施形態と同様に上記傾向の有無に応じて夫々1D変換行列C及び1D変換行列Dを適応的に利用する。
具体的には、1D変換行列Cは、前述の1D変換行列Aと同じ設計手法によって生成することができる。また、1D変換行列Dは、前述の1D変換行列Bと類似の設計手法によって生成することができる。即ち、1D変換行列Dは、DC予測モードを除外したうえで、前述の1D変換行列Bの設計手法を実施すれば生成できる。
1D変換行列Eは、DCTのための行列であってもよい。或いは、1D変換行列Eは、1D変換行列Dに比べて、DC予測モードの予測誤差119に対して垂直方向及び水平方向で1D直交変換を行う際の係数集密度が高くなる(即ち、量子化変換係数121における非零係数の割合が小さくなる)ように共通の変換基底を予め設計することによって生成されてもよい。
本実施形態に係る画像符号化装置は、図3に例示した逆直交変換部105の代わりに、図17に例示する逆直交変換部105を含む。図17の逆直交変換部105は、選択スイッチ901、垂直逆変換部902、転置部303、選択スイッチ904及び水平逆変換部905を有する。垂直逆変換部902は、1D逆直交変換部C906、1D逆直交変換部D907及び1D逆直交変換部E908を含む。水平逆変換部905は、1D逆直交変換部C909、1D逆直交変換部D910及び1D逆直交変換部E911を含む。尚、垂直逆変換部902及び水平逆変換部905の順序は、一例であり、これらは逆順であっても構わない。
1D逆直交変換部C906及び1D逆直交変換部C909は、入力される行列に対して1D変換行列Cの転置行列を乗算する点で共通の機能を持つ。1D逆直交変換部D907及び1D逆直交変換部D910は、入力される行列に対して1D変換行列Dの転置行列を乗算する点で共通の機能を持つ。1D逆直交変換部E908及び1D逆直交変換部E911は、入力される行列に対して1D変換行列Eの転置行列を乗算する点で共通の機能を持つ。
以下、1D変換行列セット部112が生成する、本実施形態に係る1D変換行列セット情報129の詳細を説明する。
1D変換行列セット情報129は、垂直直交変換及び垂直逆直交変換のために使用される変換行列を選択するための垂直変換インデックスと、水平直交変換及び水平逆直交変換のために使用される変換行列を選択するための水平変換インデックスとを直接的または間接的に示す。例えば、1D変換行列セット情報129は、図18Dに示す変換インデックス(TransformIdx)で表現することができる。図18Dのテーブルを参照すれば、変換インデックスから垂直変換インデックス(Vertical Transform Idx)及び水平変換インデックス(Horizontal Transform Idx)を導出できる。
図18Bに示すように、垂直変換インデックスが「0」であれば、垂直直交変換または垂直逆直交変換のために前述の1D変換行列C(1D_Transform_Matrix_C)またはその転置行列が選択される。一方、垂直変換インデックスが「1」であれば、垂直直交変換または垂直逆直交変換のために前述の1D変換行列D(1D_Transform_Matrix_D)またはその転置行列が選択される。更に、垂直変換インデックスが「2」であれば、垂直直交変換または垂直逆直交変換のために前述の1D変換行列E(1D_transform_Matrix_E)またはその転置行列が選択される。
図18Cに示すように、水平変換インデックスが「0」であれば、水平直交変換または水平逆直交変換のために前述の1D変換行列C(1D_Transform_Matrix_C)またはその転置行列が選択される。一方、水平変換インデックスが「1」であれば、水平直交変換または水平逆直交変換のために前述の1D変換行列D(1D_Transform_Matrix_D)またはその転置行列が選択される。更に、水平変換インデックスが「2」であれば、水平直交変換または水平逆直交変換のために前述の1D変換行列E(1D_Transform_Matrix_E)またはその転置行列が選択される。
また、各(イントラ)予測モードのインデックス(IntraNxNPredModeIndex)と、その名称(Name of IntraNxNPredMode)と、対応する垂直変換インデックス及び水平変換インデックスを図18Aに例示する。尚、図18Aにおいて、「NxN」は予測対象ブロックのサイズを表している(N=4,8,16など)。予測対象ブロックのサイズは、「MxN」(即ち、正方形以外の矩形)に拡張することもできる。
ここで、図18Aと図18Dを統合した、各予測モードのインデックスとその名称と、対応する変換インデックスを図18Eに例示する。
1D変換行列セット部112は、予測情報126に含まれる予測モード情報から予測モードのインデックスを検出し、対応する1D変換行列セット情報129を生成する。尚、図18A、図18B、図18C、図18D及び図18Eに示す各種テーブルは一例であり、1D変換行列セット部112はこれらのテーブルの一部または全部を使用することなく1D変換行列セット情報129を生成してよい。
例えば、TrasnformIdxが0を示す場合、Vertical Transform indexが0を、Horizontal Transform indexが0を示すことを意味する。つまり、垂直直交変換には1D変換行列Cを、水平直交変換には1D変換行列Cを使用することを意味する。また、垂直逆直交変換には1D変換行列Cの転置行列を、水平逆直交変換には1D変換行列Cの転置行列を使用することを意味する。
TrasnformIdxが1を示す場合、Vertical Transform indexが0を、Horizontal Transform indexが1を示すことを意味する。つまり、垂直直交変換には1D変換行列Cを、水平直交変換には1D変換行列Dを使用することを意味する。また、垂直逆直交変換には1D変換行列Cの転置行列を、水平逆直交変換には1D変換行列Dの転置行列を使用することを意味する。
TrasnformIdxが2を示す場合、Vertical Transform indexが1を、Horizontal Transform indexが0を示すことを意味する。つまり、垂直直交変換には1D変換行列Dを、水平直交変換には1D変換行列Cを使用することを意味する。また、垂直逆直交変換には1D変換行列Dの転置行列を、水平逆直交変換には1D変換行列Cを使用することを意味する。
TrasnformIdxが3を示す場合、Vertical Transform indexが2をHorizontal Transform indexが2を示すことを意味する。つまり、垂直直交変換には1D変換行列Eを、水平直交変換には1D変換行列Eを使用することを意味する。また、垂直逆直交変換には1D変換行列Eの転置行列を、水平逆直交変換には1D変換行列Eの転置行列を使用することを意味する。
ここで、予測対象ブロックがM×Nで表現される矩形ブロックである場合、直交変換を行うブロックサイズもまたM×Nであってもよい。
図18Aに示すテーブルは、前述の各イントラ予測モードの傾向を考慮して1D変換行列セット情報129を割り当てている。即ち、DC予測モードには、Vertical Transform index及びHorizontal Transofrm indexに共に2を割り当てている。故に、DC予測モードについて前述の1D変換行列Eまたはその転置行列を用いて垂直方向及び水平方向の直交変換または逆直交変換が行われ、高い変換効率が達成される。
DC予測モードを除く予測モードに関して、予測誤差の垂直方向に上記傾向を示すならばVertical Transform indexに0が、水平方向に上記傾向を示すならばHorizontal Transform indexに0が割り当られている。一方、上記傾向を示さない方向には、夫々1が割り当られている。DC予測モードを除く予測モードに関して、各予測モードの垂直方向及び水平方向を上記傾向の有無に従って2つのクラスに分類し、垂直方向及び水平方向の夫々について適応的に1D変換行列Cまたは1D変換行列Dを適用することにより、高い変換効率が達成される。
以上説明したように、本実施形態に係る画像符号化装置は、第1の実施形態と同様に参照画素からの距離が大きくなるにつれて予測精度が低下するというイントラ予測の傾向を利用しつつ、DC予測を区別して直交変換及び逆直交変換を適用する。この画像符号化装置は、各予測モードの垂直方向及び水平方向を上記傾向の有無に従って2つのクラスに分類し、垂直方向及び水平方向の夫々について適応的に1D変換行列Cまたは1D変換行列Dを適用する。この画像符号化装置は、DC予測モードには1D変換行列Eを適用する。1D変換行列Cは、参照画素群のラインに直交する方向(垂直方向または水平方向)について1D直交変換を行う際の係数集密度が高くなる(即ち、量子化変換係数121における非零係数の割合が小さくなる)ように共通の変換基底を予め設計することによって生成される。1D変換行列Dは、DC予測モードを除外したうえで、このような性質を持たない汎用的な変換行列を設計することによって生成される。1D変換行列Eは、DCTのための行列であってもよい。或いは、1D変換行列Eは、DC予測モードの予測誤差119に対して垂直方向及び水平方向で1D直交変換を行う際の係数集密度が高くなる(即ち、量子化変換係数121における非零係数の割合が小さくなる)ように共通の変換基底を予め設計することによって生成される。故に、本実施形態に係る画像符号化装置によれば、各予測モードに一律にDCTなどの固定的な直交変換を施す場合に比べて、高い変換効率が達成される。
(第3の実施形態)
第3の実施形態に係る画像符号化装置は、前述の第1の実施形態及び第2の実施形態に係る画像符号化装置と直交変換及び逆直交変換の詳細において異なる。以降の説明では、本実施形態において第1の実施形態または第2の実施形態と同一部分には同一符号を付して示し、異なる部分を中心に説明する。本実施形態に係る画像符号化装置に対応する画像復号化装置は、第6の実施形態において説明する。
本実施形態に係る画像符号化装置は、図2に例示した直交変換部102の代わりに、図19に例示する直交変換部102を含む。図19の直交変換部102は、選択スイッチ1201、垂直変換部1202、転置部203、選択スイッチ1204及び水平変換部1205を有する。垂直変換部1202は、1D直交変換部F1206、1D直交変換部G1207及び1D直交変換部H1208を含む。水平変換部1205は、1D直交変換部F1209、1D直交変換部G1210及び1D直交変換部H1211を含む。尚、垂直変換部1202及び水平変換部1205の順序は、一例であり、これらは逆順であっても構わない。
1D直交変換部F1206及び1D直交変換部F1209は、入力される行列に対して1D変換行列Fを乗算する点で共通の機能を持つ。1D直交変換部G1207及び1D直交変換部G1210は、入力される行列に対して1D変換行列Gを乗算する点で共通の機能を持つ。1D直交変換部H1208及び1D直交変換部H1211は、入力される行列に対して1D変換行列Hを乗算する点で共通の機能を持つ。
以下、本実施形態に係る1D変換行列F、1D変換行列G及び1D変換行列Hについて説明する。
前述のように、予測誤差119は参照画素からの距離が大きくなるにつれて絶対値が大きくなる傾向を持つ。係る傾向は予測方向に関わらず同様であるが、イントラ予測モードには予測対象ブロックの左隣接ライン上の参照画素群のみまたは上隣接ライン上の参照画素群のみを参照(参照画素値のコピーまたは参照画素値からの補間)する予測モードもあれば、予測対象ブロックの左隣接ライン及び上隣接ライン上の参照画素群を参照する予測モードもある。1ライン上の参照画素群のみを参照する予測モードと、2ライン上の参照画素群を参照する予測モードとでは、上記傾向の現れ方に差が生じるといえる。従って、本実施形態では、1ライン上の参照画素群のみを参照する予測モードと、2ライン上の参照画素群を参照する予測モードとを区別して直交変換及び逆直交変換を行う。具体的には、2ライン上の参照画素群を参照する予測モードについては、後述する1D変換行列Hを利用する。一方、1ライン上の参照画素群のみを参照する予測モードについては、前述の第1の実施形態と同様に上記傾向の有無に応じて夫々1D変換行列F及び1D変換行列Gを適応的に利用する。
具体的には、1D変換行列Fは、前述の1D変換行列Aと類似の設計手法によって生成することができる。即ち、1D変換行列Fは、2ライン上の参照画素群を参照する予測モード(例えば、図7Aのモード4、モード5及びモード6)を除外したうえで、前述の1D変換行列Aの設計手法を実施すれば生成できる。また、1D変換行列Gは、前述の1D変換行列Bと同一の設計手法によって生成することができる。或いは、1D変換行列Gは、DCTのための行列であってよい。
1D変換行列Hは、2ライン上の参照画素群を参照する予測モードの予測誤差119に対して垂直方向及び水平方向で1D直交変換を行う際の係数集密度が高くなる(即ち、量子化変換係数121における非零係数の割合が小さくなる)ように共通の変換基底を予め設計することによって生成することができる。
本実施形態に係る画像符号化装置は、図3に例示した逆直交変換部105の代わりに、図20に例示する逆直交変換部105を含む。図20の逆直交変換部105は、選択スイッチ1301、垂直逆変換部1302、転置部303、選択スイッチ1304及び水平逆変換部1305を有する。垂直逆変換部1302は、1D逆直交変換部F1306、1D逆直交変換部G1307及び1D逆直交変換部H1308を含む。水平逆変換部1305は、1D逆直交変換部F1309、1D逆直交変換部G1310及び1D逆直交変換部H1311を含む。尚、垂直逆変換部1302及び水平逆変換部1305の順序は、一例であり、これらは逆順であっても構わない。
1D逆直交変換部F1306及び1D逆直交変換部F1309は、入力される行列に対して1D変換行列Fの転置行列を乗算する点で共通の機能を持つ。1D逆直交変換部G1307及び1D逆直交変換部G1310は、入力される行列に対して1D変換行列Gの転置行列を乗算する点で共通の機能を持つ。1D逆直交変換部H1308及び1D逆直交変換部H1311は、入力される行列に対して1D変換行列Hの転置行列を乗算する点で共通の機能を持つ。
以下、1D変換行列セット部112が生成する、本実施形態に係る1D変換行列セット情報129の詳細を説明する。
1D変換行列セット情報129は、垂直直交変換及び垂直逆直交変換のために使用される変換行列を選択するための垂直変換インデックスと、水平直交変換及び水平逆直交変換のために使用される変換行列を選択するための水平変換インデックスとを直接的または間接的に示す。例えば、1D変換行列セット情報129は、図21Dに示す変換インデックス(TransformIdx)で表現することができる。図21Dのテーブルを参照すれば、変換インデックスから垂直変換インデックス(Vertical Transform Idx)及び水平変換インデックス(Horizontal Transform Idx)を導出できる。
図21Bに示すように、垂直変換インデックスが「0」であれば、垂直直交変換または垂直逆直交変換のために前述の1D変換行列F(1D_Transform_Matrix_F)またはその転置行列が選択される。一方、垂直変換インデックスが「1」であれば、垂直直交変換または垂直逆直交変換のために前述の1D変換行列G(1D_Transform_Matrix_G)またはその転置行列が選択される。更に、垂直変換インデックスが「2」であれば、垂直直交変換または垂直逆直交変換のために前述の1D変換行列H(1D_transform_Matrix_H)またはその転置行列が選択される。
図21Cに示すように、水平変換インデックスが「0」であれば、水平直交変換または水平逆直交変換のために前述の1D変換行列F(1D_Transform_Matrix_F)またはその転置行列が選択される。一方、水平変換インデックスが「1」であれば、水平直交変換または水平逆直交変換のために前述の1D変換行列G(1D_Transform_Matrix_G)またはその転置行列が選択される。更に、水平変換インデックスが「2」であれば、水平直交変換または水平逆直交変換のために前述の1D変換行列H(1D_Transform_Matrix_H)またはその転置行列が選択される。
また、各(イントラ)予測モードのインデックス(IntraNxNPredModeIndex)と、その名称(Name of IntraNxNPredMode)と、対応する垂直変換インデックス及び水平変換インデックスを図21Aに例示する。尚、図21Aにおいて、「NxN」は予測対象ブロックのサイズを表している(N=4,8,16など)。予測対象ブロックのサイズは、「MxN」(即ち、正方形以外の矩形)に拡張することもできる。
ここで、図21Aと図21Dを統合した、各予測モードのインデックスとその名称と、対応する変換インデックスを図21Eに例示する。
1D変換行列セット部112は、予測情報126に含まれる予測モード情報から予測モードのインデックスを検出し、対応する1D変換行列セット情報129を生成する。尚、図21A、図21B、図21C、図21D及び図21Eに示す各種テーブルは一例であり、1D変換行列セット部112はこれらのテーブルの一部または全部を使用することなく1D変換行列セット情報129を生成してよい。
例えば、TrasnformIdxが0を示す場合、Vertical Transform indexが2を、Horizontal Transform indexが2を示すことを意味する。つまり、垂直直交変換には1D変換行列Hを、水平直交変換には1D変換行列Hを使用することを意味する。また、垂直逆直交変換には1D変換行列Hの転置行列を、水平逆直交変換には1D変換行列Hの転置行列を使用することを意味する。
TrasnformIdxが1を示す場合、Vertical Transform indexが0を、Horizontal Transform indexが1を示すことを意味する。つまり、垂直直交変換には1D変換行列Fを、水平直交変換には1D変換行列Gを使用することを意味する。また、垂直逆直交変換には1D変換行列Fの転置行列を、水平逆直交変換には1D変換行列Gの転置行列を使用することを意味する。
TrasnformIdxが2を示す場合、Vertical Transform indexが1を、Horizontal Transform indexが0を示すことを意味する。つまり、垂直直交変換には1D変換行列Gを、水平直交変換には1D変換行列Fを使用することを意味する。また、垂直逆直交変換には1D変換行列Gの転置行列を、水平逆直交変換には1D変換行列Fを使用することを意味する。
TrasnformIdxが3を示す場合、Vertical Transform indexが1をHorizontal Transform indexが1を示すことを意味する。つまり、垂直直交変換には1D変換行列Gを、水平直交変換には1D変換行列Gを使用することを意味する。また、垂直逆直交変換には1D変換行列Gの転置行列を、水平逆直交変換には1D変換行列Gの転置行列を使用することを意味する。
ここで、予測対象ブロックがM×Nで表現される矩形ブロックである場合、直交変換を行うブロックサイズもまたM×Nであってもよい。
図21Aに示すテーブルは、前述の各イントラ予測モードの傾向を考慮して1D変換行列セット情報129を割り当てている。即ち、2ライン上の参照画素群を参照する予測モードには、Vertical Transform index及びHorizontal Transofrm indexに共に2を割り当てている。故に、2ライン上の参照画素群を参照する予測モードについて前述の1D変換行列Hまたはその転置行列を用いて垂直方向及び水平方向の直交変換または逆直交変換が行われ、高い変換効率が達成される。
2ライン上の参照画素群を参照する予測モードを除く予測モードに関して、予測誤差の垂直方向に上記傾向を示すならば、Vertical Transform indexに0が、水平方向に上記傾向を示すならば、Horizontal Transform indexに0が割り当てられている。一方、上記傾向を示さない方向には、夫々1が割り当てられている。2ライン上の参照画素群を参照する予測モードを除く予測モードに関して、各予測モードの垂直方向及び水平方向を上記傾向の有無に従って2つのクラスに分類し、垂直方向及び水平方向の夫々について適応的に1D変換行列Fまたは1D変換行列Gを適用することにより、高い変換効率が達成される。
以上説明したように、本実施形態に係る画像符号化装置は、第1の実施形態と同様に参照画素からの距離が大きくなるにつれて予測精度が低下するというイントラ予測の傾向を利用しつつ、各予測モードを参照画素群のライン数によって区別して直交変換及び逆直交変換を適用する。この画像符号化装置は、2ライン上の参照画素群を参照する予測モードを除く予測モードに関して、垂直方向及び水平方向を上記傾向の有無に従って2つのクラスに分類し、垂直方向及び水平方向の夫々について適応的に1D変換行列Fまたは1D変換行列Gを適用する。一方、この画像符号化装置は、2ライン上の参照画素群を参照する各予測モードには1D変換行列Hを適用する。1D変換行列Fは、1ライン上の参照画素群のみを参照する各予測モードに関して、参照画素群のラインに直交する方向(垂直方向または水平方向)について1D直交変換を行う際の係数集密度が高くなる(即ち、量子化変換係数121における非零係数の割合が小さくなる)ように共通の変換基底を予め設計することによって生成される。一方、1D変換行列Gは、このような性質を持たない汎用的な変換行列を設計することによって生成される。更に、1D変換行列Hは、2ライン上の参照画素群を参照する各予測モードの予測誤差119に対して垂直方向及び水平方向で1D直交変換を行う際の係数集密度が高くなる(即ち、量子化変換係数121における非零係数の割合が小さくなる)ように共通の変換基底を予め設計することによって生成される。故に、本実施形態に係る画像符号化装置によれば、各予測モードに一律にDCTなどの固定的な直交変換を施す場合に比べて、高い変換効率が達成される。
第1乃至第3の実施形態では、2種類または3種類の1D変換行列を夫々用意し、予測モードに応じて垂直変換(または垂直逆変換)及び水平変換(または水平逆変換)のための1D変換行列を選択する。しかしながら、前述の2種類または3種類の1D変換行列は、例示であり、更に多くの変換行列を用意して符号化効率を向上させることも可能である。例えば、第2の実施形態と第3の実施形態とを組み合わせて4種類の1D変換行列を用意することも可能である。但し、用意する変換行列の種類の増加に伴って更なるハードウェアなどが必要となるので、変換行列の種類の増加に伴うデメリットと符号化効率とのバランスを考慮することが望ましい。
(第4の実施形態)
第4の実施形態は、画像復号化装置に関する。本実施形態に係る画像復号化装置に対応する画像符号化装置は、第1の実施形態において説明した通りである。即ち、本実施形態に係る画像復号化装置は、例えば第1の実施形態に係る画像符号化装置によって生成された符号化データを復号化する。
図22に示すように、本実施形態に係る画像復号化装置は、入力バッファ401、エントロピー復号化部402、係数順制御部403、逆量子化部404、逆直交変換部405、加算部406、参照画像メモリ407、イントラ予測部408、インター予測部409、選択スイッチ410、1D変換行列セット部411及び出力バッファ412を含む。
図22の画像復号化装置は、入力バッファ401に蓄積される符号化データ414を復号し、復号画像419を出力バッファ412に蓄積して出力画像425として出力する。符号化データ414は、例えば図1の画像符号化装置などから出力され、図示しない蓄積系または伝送系を経て、入力バッファ401に一時的に蓄積される。
エントロピー復号化部402は、符号化データ414の復号化のために、1フレームまたは1フィールド毎にシンタクスに基づいて解読を行う。エントロピー復号化部402は、各シンタクスの符号列を順次エントロピー復号化し、予測モード情報421を含む予測情報424、量子化変換係数列415などの符号化対象ブロックの符号化パラメータを再生する。符号化パラメータとは、予測情報424、変換係数に関する情報、量子化に関する情報、などの復号に必要となるパラメータである。量子化変換係数列415は、係数順制御部403へ入力される。また、予測情報424に含まれる予測モード情報421も同様に、係数順制御部403へ入力される。予測情報424は、1D変換行列セット部411及び選択スイッチ410に入力される。
係数順制御部403は、1次元表現である量子化変換係数列415を、2次元表現である量子化変換係数416に変換し、逆量子化部404に入力する。尚、係数制御部403の詳細は後述される。
逆量子化部404は、係数順制御部403からの量子化変換係数416に逆量子化を行って、復元変換係数417を得る。具体的には、逆量子化部404は、エントロピー復号化部402によって復号化された量子化に関する情報に従って逆量子化を行う。逆量子化部404は、復元変換係数417を逆直交変換部405に入力する。
逆直交変換部405は、逆量子化部404からの復元変換係数417に対して、符号化側において行われた直交変換に対応する逆直交変換を行い、復元予測誤差418を得る。逆直交変換部405は、復元予測誤差418を加算部406に入力する。
具体的には、本実施形態に係る逆直交変換部405は、図3の逆直交変換部105と実質的に同一または類似の要素なのでその詳細な説明を省略する。特に、本実施形態に係る逆直交変換部405は、図3の逆直交変換部105と共通の1D変換行列A及び1D変換行列Bを利用する。尚、図3における復元変換係数122、1D変換行列セット情報129及び復元予測誤差123は、本実施形態における復元変換係数417、1D変換行列セット情報422及び復元予測誤差信号418に夫々対応している。
加算部406は、復元予測誤差418と、対応する予測画像423とを加算し、復号画像419を生成する。復号画像419は、出力画像425のために出力バッファ412に一時的に蓄積されると共に、参照画像420のために参照画像メモリ407にも保存される。参照画像メモリ407に保存された復号画像419は、参照画像420としてイントラ予測部408及びインター予測部409によって必要に応じてフレーム単位またはフィールド単位で参照される。出力バッファ412に一時的に蓄積された復号画像419は、復号化制御部413によって管理される出力タイミングに従って出力される。
イントラ予測部408、インター予測部409及び選択スイッチ410は、図1のイントラ予測部108、インター予測部109及び選択スイッチ111と実質的に同一または類似の要素なのでその詳細な説明を省略する。復号化制御部413は、図22の画像復号化装置の各要素を制御する。具体的には、復号化制御部413は、上述の動作を含む復号化処理のための種々の制御を行う。
1D変換行列セット部411は、エントロピー復号化部402からの予測情報424に含まれる予測モード情報に基づいて1D変換行列セット情報422を生成し、逆直交変換部405に入力する。
具体的には、本実施形態に係る1D変換行列セット部411は、第1の実施形態に係る1D変換行列セット部112と実質的に同一または類似の要素なのでその詳細な説明を省略する。即ち、本実施形態に係る1D変換行列セット部411は、例えば図4A、図4B、図4C、図4D及び図4Eのテーブルを利用して、1D変換行列セット情報422を生成する。尚、第1の実施形態における予測情報126及び1D変換行列セット情報129は、本実施形態における予測情報424及び1D変換行列セット情報422に夫々対応している。
また、図22の画像復号化装置は、図11、図12、図13及び図14に関して説明したシンタクスと同一または類似のシンタクスを利用するのでその詳細な説明を省略する。
以下、係数順制御部403の詳細を説明する。
係数順制御部403は、1次元表現である量子化変換係数列415の各要素を所定の順序(即ち、符号化側と対応する順序)に従って配列することにより、2次元表現である量子化変換係数416に変換する。一例として、符号化側において予測モードに関わらず共通の2D−1D変換が行われているならば、係数順制御部403は予測モードに関わらず共通の1D−2D変換を行うことができる。具体的には、係数制御部403は、H.264と同様に逆ジグザグスキャンを利用できる。逆ジグザグスキャンは、前述のジグザグスキャンに対応する1D−2D変換である
別の例として、符号化側において予測モード毎の個別の2D−1D変換が行われているならば、係数順制御部403もまた予測モード毎の個別の1D−2D変換を行うことができる。このような動作を行う係数順制御部403は、図23Aに例示されている。この係数順制御部403は、選択スイッチ1001と、9種類の予測モード毎の個別の1D−2D変換部1002,・・・,1010とを含む。選択スイッチ1001は、予測情報424に含まれる予測モード情報(例えば、図4Aの予測モードのインデックス)に従って量子化変換係数列415を、予測モードに応じた1D−2D変換部(1002,・・・,1010のうちいずれか1つ)に導く。例えば、予測モードインデックスが0であれば、選択スイッチ1001は量子化変換係数列415を1D−2D変換部1002に導く。図23Aにおいて、各予測モードと1D−2D変換部とは1対1に対応しており、量子化変換係数列415は予測モードに応じた1つの1D−2D変換部に導かれ、量子化変換係数416に変換される。
更に別の例として、符号化側において2D−1D変換におけるスキャン順が動的に更新されるならば、係数順制御部403もまた1D−2D変換におけるスキャン順を符号化側と対応するように動的に更新してもよい。このような動作を行う係数順制御部403は、図23Bに例示されている。この係数順制御部403は、選択スイッチ1001と、9種類の予測モード毎の個別の1D−2D変換部1002,・・・,1010と、発生頻度カウント部1011と、係数順更新部1012とを含む。選択スイッチ1001は、図23Aに関して説明した通りである。9種類の予測モード毎の個別の1D−2D変換部1002,・・・,1010は、そのスキャン順が係数順更新部1012によって更新される点で図23Aとは異なる。
発生頻度カウント部1011は、予測モード毎に、量子化変換係数416の各要素における非零係数の発生回数のヒストグラムを作成する。発生頻度カウント部1011は、作成したヒストグラム1013を係数順更新部1012に入力する。
係数順更新部1012は、予め定められたタイミングで、ヒストグラム1013に基づいて係数順の更新を行う。上記タイミングは、例えば、コーディングツリーユニットの復号化処理が終了したタイミング、コーディングツリーユニット内の1ライン分の復号化処理が終了したタイミングなどである。
具体的には、係数順更新部1012は、ヒストグラム1013を参照して、非零係数の発生回数が閾値以上にカウントされた要素を持つ予測モードに関して係数順の更新を行う。例えば、係数順更新部1012は、非零係数の発生が16回以上カウントされた要素を持つ予測モードに関して更新を行う。このような発生回数に閾値を設けることによって、係数順の更新が大域的に実施されるので、局所的な最適解に収束しにくくなる。
係数順更新部1012は、更新対象となる予測モードに関して、非零係数の発生頻度の降順に要素をソーティングする。ソーティングは、例えばバブルソート、クイックソートなどの既存のアルゴリズムによって実現できる。そして、係数順更新部1012は、ソーティングされた要素の順序を示す係数順更新情報1014を、更新対象となる予測モードに対応する1D−2D変換部に入力する。
係数順更新情報1014が入力されると、1D−2D変換部は更新後のスキャン順に従って1D−2D変換を行う。尚、スキャン順を動的に更新する場合には、各1D−2D変換部の符号化側と対応する初期スキャン順を予め定めておく必要がある。
尚、簡単化のためにH.264を例示して予測モードが9種類の場合を説明したが、予測モードが17種類、33種類などに拡張された場合にも、拡張された各予測モードに対応する1D−2D変換部を追加すれば予測モード毎の個別の1D−2D変換を行うことができる。
以上説明したように、本実施形態に係る画像復号化装置は、前述の第1の実施形態に係る画像符号化装置と同一または類似の逆直交変換部を持つ。故に、本実施形態に係る画像復号化装置によれば、前述の第1の実施形態に係る画像符号化装置と同一または類似の効果が得られる。
(第5の実施形態)
第5の実施形態に係る画像復号化装置は、前述の第4の実施形態に係る画像復号化装置と逆直交変換の詳細において異なる。以降の説明では、本実施形態において第4の実施形態と同一部分には同一符号を付して示し、異なる部分を中心に説明する。本実施形態に係る画像復号化装置に対応する画像符号化装置は、第2の実施形態において説明した通りである。
本実施形態に係る逆直交変換部405は、図17の逆直交変換部105と実質的に同一または類似の要素なのでその詳細な説明を省略する。特に、本実施形態に係る逆直交変換部405は、図17の逆直交変換部105と共通の1D変換行列C、1D変換行列D及び1D変換行列Eを利用する。尚、図17における復元変換係数122、1D変換行列セット情報129及び復元予測誤差123は、本実施形態における復元変換係数417、1D変換行列セット情報422及び復元予測誤差信号418に夫々対応している。
本実施形態に係る1D変換行列セット部411は、第2の実施形態に係る1D変換行列セット部112と実質的に同一または類似の要素なのでその詳細な説明を省略する。即ち、本実施形態に係る1D変換行列セット部411は、例えば図18A、図18B、図18C図18D及び図18Eのテーブルを利用して、1D変換行列セット情報422を生成する。尚、第2の実施形態における予測情報126及び1D変換行列セット情報129は、本実施形態における予測情報424及び1D変換行列セット情報422に夫々対応している。
以上説明したように、本実施形態に係る画像復号化装置は、前述の第2の実施形態に係る画像符号化装置と同一または類似の逆直交変換部を持つ。故に、本実施形態に係る画像復号化装置によれば、前述の第2の実施形態に係る画像符号化装置と同一または類似の効果が得られる。
(第6の実施形態)
第6の実施形態に係る画像復号化装置は、前述の第4の実施形態及び第5の実施形態に係る画像復号化装置と逆直交変換の詳細において異なる。以降の説明では、本実施形態において第4の実施形態または第5の実施形態と同一部分には同一符号を付して示し、異なる部分を中心に説明する。本実施形態に係る画像復号化装置に対応する画像符号化装置は、第3の実施形態において説明した通りである。
本実施形態に係る逆直交変換部405は、図20の逆直交変換部105と実質的に同一または類似の要素なのでその詳細な説明を省略する。特に、本実施形態に係る逆直交変換部405は、図20の逆直交変換部105と共通の1D変換行列F、1D変換行列G及び1D変換行列Hを利用する。尚、図20における復元変換係数122、1D変換行列セット情報129及び復元予測誤差123は、本実施形態における復元変換係数417、1D変換行列セット情報422及び復元予測誤差信号418に夫々対応している。
本実施形態に係る1D変換行列セット部411は、第3の実施形態に係る1D変換行列セット部112と実質的に同一または類似の要素なのでその詳細な説明を省略する。即ち、本実施形態に係る1D変換行列セット部411は、例えば図21A、図21B、図21C、図21D及び図21Eのテーブルを利用して、1D変換行列セット情報422を生成する。尚、第3の実施形態における予測情報126及び1D変換行列セット情報129は、本実施形態における予測情報424及び1D変換行列セット情報422に夫々対応している。
以上説明したように、本実施形態に係る画像復号化装置は、前述の第3の実施形態に係る画像符号化装置と同一または類似の逆直交変換部を持つ。故に、本実施形態に係る画像復号化装置によれば、前述の第3の実施形態に係る画像符号化装置と同一または類似の効果が得られる。
第4乃至第6の実施形態では、2種類または3種類の1D変換行列を夫々用意し、予測モードに応じて垂直逆変換及び水平逆変換のための1D変換行列を選択する。しかしながら、前述の2種類または3種類の1D変換行列は、例示であり、更に多くの変換行列を用意して符号化効率を向上させることも可能である。例えば、第5の実施形態と第6の実施形態とを組み合わせて4種類の1D変換行列を用意することも可能である。但し、用意する変換行列の種類の増加に伴って更なるハードウェアなどが必要となるので、変換行列の種類の増加に伴うデメリットと符号化効率とのバランスを考慮することが望ましい。
以下、各実施形態の変形例を列挙して紹介する。
第1乃至第6の実施形態において、フレームを16×16画素サイズなどの矩形ブロックに分割し、画面左上のブロックから右下に向かって順に符号化/復号化を行う例について説明している(図6Aを参照)。しかしながら、符号化順序及び復号化順序はこの例に限定されない。例えば、右下から左上に向かって順に符号化及び復号化が行われてもよいし、画面中央から画面端に向かって渦巻を描くように符号化及び復号化が行われてもよい。更に、右上から左下に向かって順に符号化及び復号化が行われてもよいし、画面端から画面中央に向かって渦巻きを描くように符号化及び復号化が行われてもよい。
第1乃至第6の実施形態において、4×4画素ブロック、8×8画素ブロック、16×16画素ブロックなどの予測対象ブロックサイズを例示して説明を行ったが、予測対象ブロックは均一なブロック形状でなくてもよい。例えば、予測対象ブロックサイズは、16×8画素ブロック、8×16画素ブロック、8×4画素ブロック、4×8画素ブロックなどであってもよい。また、1つのコーディングツリーユニット内で全てのブロックサイズを統一させる必要はなく、複数の異なるブロックサイズを混在させてもよい。1つのコーディングツリーユニット内で複数の異なるブロックサイズを混在させる場合、分割数の増加に伴って分割情報を符号化または復号化するための符号量も増加する。そこで、分割情報の符号量と局部復号画像または復号画像の品質との間のバランスを考慮して、ブロックサイズを選択することが望ましい。
第1乃至第6の実施形態において、簡単化のために、輝度信号と色差信号とを区別せず、色信号成分に関して包括的な説明を記述した。しかしながら、予測処理が輝度信号と色差信号との間で異なる場合には、同一または異なる予測方法が用いられてよい。輝度信号と色差信号との間で異なる予測方法が用いられるならば、色差信号に対して選択した予測方法を輝度信号と同様の方法で符号化または復号化できる。
第1乃至第6の実施形態において、簡単化のために、輝度信号と色差信号とを区別せず、色信号成分に関して包括的な説明を記述した。しかしながら、直交変換処理が輝度信号と色差信号との間で異なる場合には、同一または異なる直交変換方法が用いられてよい。輝度信号と色差信号との間で異なる直交変換方法が用いられるならば、色差信号に対して選択した直交変換方法を輝度信号と同様の方法で符号化または復号化できる。
以上説明したように、各実施形態は、ハードウェア実装及びソフトウェア実装における困難性を緩和しつつ、高効率な直交変換及び逆直交変換を実現する。故に、各実施形態によれば、符号化効率が向上し、ひいては主観画質も向上する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
例えば、上記各実施形態の処理を実現するプログラムを、コンピュータで読み取り可能な記憶媒体に格納して提供することも可能である。記憶媒体としては、磁気ディスク、光ディスク(CD−ROM、CD−R、DVD等)、光磁気ディスク(MO等)、半導体メモリなど、プログラムを記憶でき、かつ、コンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
また、上記各実施形態の処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ(サーバ)上に格納し、ネットワーク経由でコンピュータ(クライアント)にダウンロードさせてもよい。