以下、必要に応じて図面を参照しながら、本発明の実施形態に係る画像符号化及び画像復号化の方法及び装置を説明する。なお、以下の実施形態では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
(第1の実施形態)
図1は、本発明の第1の実施形態に係る画像符号化装置の構成を概略的に示している。この画像符号化装置は、図1に示されるように、画像符号化部100、符号化制御部150及び出力バッファ120を備えている。この画像符号化装置は、LSIチップなどのハードウェアにより実現されてもよく、或いは、コンピュータに画像符号化プログラムを実行させることにより実現されても構わない。
画像符号化部100には、動画像又は静止画像である原画像(入力画像信号)10が、例えば原画像を分割した画素ブロック単位で、入力される。画像符号化部100は、後に詳細に説明するように、入力画像信号10を圧縮符号化して、符号化データ14を生成する。生成された符号化データ14は、出力バッファ120に一時的に格納され、符号化制御部150が管理する出力タイミングで、図示しない蓄積系(蓄積メディア)又は伝送系(通信回線)へ送出される。
符号化制御部150は、発生符号量のフィードバック制御、量子化制御、予測モード制御及びエントロピー符号化制御といった画像符号化部100の符号化処理全般を制御する。具体的には、符号化制御部150は、符号化制御情報50を画像符号化部100に与え、画像符号化部100からフィードバック情報51を適宜受け取る。符号化制御情報50には、予測情報、動き情報18及び量子化パラメータ情報などが含まれる。予測情報は、予測モード情報及びブロックサイズ情報を含む。動き情報18は、動きベクトル、参照フレーム番号及び予測方向(単方向予測、双方向予測)を含む。量子化パラメータ情報は、量子化幅(量子化ステップサイズ)等の量子化パラメータ及び量子化マトリクスを含む。フィードバック情報51は、画像符号化部100による発生符号量を含み、例えば、量子化パラメータを決定するのに使用される。
画像符号化部100は、原画像を分割した画素ブロック(例えば、マクロブロック、サブブロック、1画素など)を単位として、入力画像信号10を符号化する。このため、入力画像信号10は、原画像を分割した画素ブロック単位で画像符号化部100へ順次に入力される。本実施形態では、符号化の処理単位をマクロブロックとし、入力画像信号10に対応する、符号化対象である画素ブロック(マクロブロック)を単に符号化対象ブロックと称す。また、符号化対象ブロックを含む画像フレーム、即ち、符号化対象の画像フレームを符号化対象フレームと称す。
このような符号化対象ブロックは、例えば、図2Aに示すような16×16画素ブロックであってもよく、図2Bに示すような64×64画素ブロックであっても構わない。また、符号化対象ブロックは、32×32画素ブロック、8×8画素ブロックなどであっても構わない。また、マクロブロックの形状は、図2A及び図2Bに示されるような正方形状の例に限らず、矩形状などの任意形状に設定されても構わない。さらに、上記処理単位は、マクロブロックのような画素ブロックに限らず、フレーム又はフィールドであっても構わない。
なお、符号化対象フレーム内の各画素ブロックに対する符号化処理は、いかなる順序で実行されても構わない。本実施形態では、説明を簡単にするために、図3に示すように、符号化対象フレームの左上の画素ブロックから右下の画素ブロックに向かって一行毎に、即ち、ラスタスキャン順に、画素ブロックに対して符号化処理が実行されるものとする。
図1に示した画像符号化部100は、予測部101、減算器102、変換・量子化部103、可変長符号化部104、逆量子化・逆変換部105、加算器106、フレームメモリ107、動き情報メモリ108及び利用可能ブロック取得部109を備えている。
画像符号化部100において、入力画像信号10は、予測部101及び減算器102へ入力される。減算器102は、入力画像信号10を受け取るとともに、後述する予測部101から予測画像信号11を受け取る。減算器102は、入力画像信号10と予測画像信号11との差分を算出して、予測誤差画像信号12を生成する。
変換・量子化部103は、減算器102から予測誤差画像信号12を受け取り、受け取った予測誤差画像信号12に対して変換処理を施して、変換係数を生成する。変換処理は、例えば、離散コサイン変換(DCT:Discrete Cosine Transform)等の直交変換である。他の実施形態では、変換・量子化部103は、離散コサイン変換に代えて、ウェーブレット変換及び独立成分解析などの手法を利用して、変換係数を生成しても構わない。さらに、変換・量子化部103は、符号化制御部150によって与えられた量子化パラメータに基づいて、生成した変換係数を量子化する。量子化された変換係数(変換係数情報)13は、可変長符号化部104及び逆量子化・逆変換部105へ出力される。
逆量子化・逆変換部105は、符号化制御部150によって与えられた量子化パラメータ、即ち、変換・量子化部103と同じ量子化パラメータに従って、量子化された変換係数13を逆量子化する。続いて、逆量子化・逆変換部105は、逆量子化された変換係数に対して逆変換を施して、復号予測誤差信号15を生成する。逆量子化・逆変換部105による逆変換処理は、変換・量子化部103による変換処理の逆変換処理に一致する。例えば、逆変換処理は、逆離散コサイン変換(IDCT:Inverse Discrete Cosine Transform)又は逆ウェーブレット変換などである。
加算器106は、逆量子化・逆変換部105から復号予測誤差信号15を受け取り、さらに、予測部101から予測画像信号11を受け取る。加算器106は、復号予測誤差信号15と予測画像信号11とを加算して、局所復号画像信号16を生成する。生成された局所復号画像信号16は、フレームメモリ107に参照画像信号17として格納される。フレームメモリ107に格納されている参照画像信号17は、その後の符号化対象ブロックを符号化する際に、予測部101によって読み出されて参照される。
予測部101は、フレームメモリ107から参照画像信号17を受け取るとともに、後述する利用可能ブロック取得部109から利用可能ブロック情報30を受け取る。さらに、予測部101は、後述する動き情報メモリ108から参照動き情報19を受け取る。予測部101は、参照画像信号17、参照動き情報19及び利用可能ブロック情報30に基づいて、符号化対象ブロックの予測画像信号11、動き情報18及び選択ブロック情報31を生成する。具体的には、予測部101は、利用可能ブロック情報30及び参照動き情報19に基づいて、動き情報18及び選択ブロック情報31を生成する動き情報選択部118、並びに、動き情報18に基づいて、予測画像信号11を生成する動き補償部113を備えている。予測画像信号11は、減算器102及び加算器106へ送られる。動き情報18は、その後の符号化対象ブロックに対する予測処理のために、動き情報メモリ108に格納される。また、選択ブロック情報31は、可変長符号化部104へ送られる。予測部101については、後に詳細に説明する。
動き情報メモリ108には、動き情報18が参照動き情報19として一時的に格納される。図4には、動き情報メモリ108の構成の一例が示されている。図4に示されるように、動き情報メモリ108には、参照動き情報19がフレーム単位で保持されており、参照動き情報19が動き情報フレーム25を形成している。動き情報メモリ108には、符号化済みのブロックに関する動き情報18が順次入力され、その結果、動き情報メモリ108は、符号化時間の異なる複数の動き情報フレーム25を保持する。
参照動き情報19は、所定のブロック単位(例えば、4×4画素ブロック単位)で動き情報フレーム25内に保持される。図4に示す動きベクトルブロック28は、符号化対象ブロック、利用可能ブロック及び選択ブロックなどと同じサイズの画素ブロックを示し、例えば、16×16画素ブロックである。動きベクトルブロック28には、例えば4×4画素ブロック毎に、動きベクトルが割り当てられている。動きベクトルブロックを利用したインター予測処理を、動きベクトルブロック予測処理と称する。動き情報メモリ108が保持する参照動き情報19は、予測部101によって、動き情報18を生成する際に読み出される。後述するような利用可能ブロックが有する動き情報18とは、動き情報メモリ108中の利用可能ブロックが位置する領域に保持された参照動き情報19を指す。
なお、動き情報メモリ108は、4×4画素ブロック単位で参照動き情報19を保持する例に限らず、他の画素ブロック単位で参照動き情報19を保持しても構わない。例えば、参照動き情報19に関する画素ブロック単位は、1画素であってもよく、2×2画素ブロックであっても構わない。また、参照動き情報19に関する画素ブロックの形状は、正方形状の例に限らず、任意形状とすることができる。
図1の利用可能ブロック取得部109は、動き情報メモリ108から参照動き情報19を取得し、取得した参照動き情報19に基づいて、既に符号化が完了している複数のブロックから、予測部101の予測処理に利用することができる利用可能ブロックを選択する。選択された利用可能ブロックは、利用可能ブロック情報30として予測部101及び可変長符号化部104へ送られる。利用可能ブロックを選択するための候補となる符号化済みのブロックを、動き参照ブロックと称す。動き参照ブロック及び利用可能ブロックの選択方法については、後に詳細に説明する。
可変長符号化部104は、変換係数情報13に加えて、予測部101から選択ブロック情報31を、符号化制御部150から予測情報及び量子化パラメータなどの符号化パラメータを、利用可能ブロック取得部109から利用可能ブロック情報30を受け取る。可変長符号化部104は、量子化された変換係数13、選択ブロック情報31、利用可能ブロック情報30及び符号化パラメータをエントロピー符号化(例えば、等長符号化、ハフマン符号化又は算術符号化など)して、符号化データ14を生成する。符号化パラメータは、選択ブロック情報31及び予測情報とともに、変換係数に関する情報、量子化に関する情報などの復号の際に必要になるあらゆるパラメータを含む。生成された符号化データ14は、出力バッファ120に一時的に格納され、図示しない蓄積系又は伝送系へ送出される。
図5は、入力画像信号10の処理手順を示している。図5に示されるように、まず、予測画像信号11が予測部101によって生成される(ステップS501)。ステップS501の予測画像信号11の生成においては、後述する利用可能ブロックのうちの1つが選択ブロックとして選択され、選択ブロック情報31、選択ブロックが有する動き情報及び参照画像信号17を用いて、予測画像信号11が作成される。予測画像信号11と入力画像信号10との差分が減算器102により計算され、予測誤差画像信号12が生成される(ステップS502)。
続いて、予測誤差画像信号12に対して変換・量子化部103により直交変換及び量子化が施され、変換係数情報13が生成される(ステップS503)。変換係数情報13及び選択ブロック情報31は、可変長符号化部104に送られ、可変長符号化が施され、符号化データ14が生成される(ステップS504)。また、ステップS504では、選択ブロック情報31に応じて、利用可能ブロックの数と等しい数のエントリーをコード表に持つように符号表が切り替えられ、選択ブロック情報31が可変長符号化される。符号化データのビットストリーム20は、図示しない蓄積系あるいは伝送路へ送出される。
ステップS503で生成された変換係数情報13は、逆量子化・逆変換部105によって逆量子化され、逆変換処理が施されて、復号予測誤差信号15となる(ステップS505)。復号予測誤差信号15は、ステップS501で使用された参照画像信号17に加算され、局所復号画像信号16となり(ステップS506)、フレームメモリ107に参照画像信号として記憶される(ステップS507)。
次に、上述した画像符号化部100の各構成をより詳細に説明する。
図1の画像符号化部100には、複数の予測モードが用意されており、各予測モードは、予測画像信号11の生成方法及び動き補償ブロックサイズが互いに異なる。予測部101が予測画像信号11を生成する方法としては、具体的には大きく分けて、符号化対象フレーム(又は、フィールド)に関する参照画像信号17を用いて予測画像を生成するイントラ予測(フレーム内予測)と、1以上の符号化済みの参照フレーム(参照フィールド)に関する参照画像信号17を用いて予測画像を生成するインター予測(フレーム間予測)とがある。予測部101は、イントラ予測及びインター予測を選択的に切り替えて、符号化対象ブロックの予測画像信号11を生成する。
図6Aは、動き補償部113によるインター予測の一例を示している。インター予測では、図6Aに示されるように、既に符号化が完了している1フレーム前の参照フレーム内のブロックであって、符号化対象ブロックと同じ位置のブロック(予測ブロックともいう)23から、動き情報18に含まれる動きベクトル18aに応じて空間的にシフトした位置のブロック24に関する参照画像信号17を使用して、予測画像信号11が生成される。即ち、予測画像信号11の生成では、符号化対象ブロックの位置(座標)、及び動き情報18に含まれる動きベクトル18aで特定される、参照フレーム内のブロック24に関する参照画像信号17が使用される。インター予測では、少数画素精度(例えば、1/2画素精度又は1/4画素精度)の動き補償が可能であり、参照画像信号17に対してフィルタリング処理を行うことによって、補間画素の値が生成される。例えば、H.264では、輝度信号に対して1/4画素精度までの補間処理が可能である。1/4画素精度の動き補償を行う場合、動き情報18の情報量は、整数画素精度の4倍となる。
なお、インター予測では、図6Aに示されるような1フレーム前の参照フレームを使用する例に限らず、図6Bに示されるように、いずれの符号化済みの参照フレームが使用されても構わない。時間位置が異なる複数の参照フレームに関する参照画像信号17が保持されている場合、どの時間位置の参照画像信号17から予測画像信号11を生成したかを示す情報は、参照フレーム番号で表わされる。参照フレーム番号は、動き情報18に含まれる。参照フレーム番号は、領域単位(ピクチャ、ブロック単位など)で変更することができる。即ち、画素ブロック毎に異なる参照フレームが使用されることができる。一例として、符号化済みの1フレーム前の参照フレームを予測に使用した場合、この領域の参照フレーム番号は、0に設定され、符号化済みの2フレーム前の参照フレームを予測に使用した場合、この領域の参照フレーム番号は、1に設定される。他の例として、1フレーム分だけの参照画像信号17がフレームメモリ107に保持されている(参照フレームの数が1である)場合、参照フレーム番号は、常に0に設定される。
さらに、インター予測では、複数の動き補償ブロックの中から符号化対象ブロックに適したブロックサイズを選択することができる。即ち、符号化対象ブロックが複数の小画素ブロックに分割され、小画素ブロック毎に動き補償が行われても構わない。図7Aから図7Cは、マクロブロック単位の動き補償ブロックのサイズを示し、図7Dは、サブブロック(8×8画素以下の画素ブロック)単位の動き補償ブロックのサイズを示す。図7Aに示されるように、符号化対象ブロックが64×64画素である場合、動き補償ブロックとして、64×64画素ブロック、64×32画素ブロック、32×64画素ブロック又は32×32画素ブロックなどが選択されることができる。また、図7Bに示されるように、符号化対象ブロックが32×32画素である場合、動き補償ブロックとして、32×32画素ブロック、32×16画素ブロック、16×32画素ブロック又は16×16画素ブロックなどが選択されることができる。さらに、図7Cに示されるように、符号化対象ブロックが16×16画素である場合、動き補償ブロックは、16×16画素ブロック、16×8画素ブロック、8×16画素ブロック又は8×8画素ブロックなどに設定されることができる。さらにまた、図7Dに示されるように、符号化対象ブロックが8×8画素である場合、動き補償ブロックは、8×8画素ブロック、8×4画素ブロック、4×8画素ブロック又は4×4画素ブロックなどが選択されることができる。
前述したように、インター予測に使用する参照フレーム内の小画素ブロック(例えば、4×4画素ブロック)が動き情報18を有しているので、入力画像信号10の局所的な性質に従って、最適な動き補償ブロックの形状及び動きベクトルを利用することができる。また、図7Aから図7Dのマクロブロック及びサブマクロブロックは、任意に組み合わせることができる。符号化対象ブロックが図7Aに示されるような64×64画素ブロックである場合、64×64画素ブロックを分割した4つの32×32画素ブロックの各々に対して、図7Bに示す各ブロックサイズを選択することで、階層的に64×64〜16×16画素のブロックを利用することができる。同様にして、図7Dに示されるブロックサイズまで選択可能とする場合、階層的に64×64〜4×4のブロックサイズを利用することができる。
次に、図8Aから図8Fを参照して、動き参照ブロックについて説明する。
動き参照ブロックは、図1の画像符号化装置及び後述する画像復号化装置の両方によって取り決められた方法に従って、符号化対象フレーム及び参照フレーム内の符号化済みの領域(ブロック)の中から選択される。図8Aは、符号化対象ブロックの位置に応じて選択される動き参照ブロックの配置の一例を示している。図8Aの例では、9つの動き参照ブロックA〜D及びTA〜TEが符号化対象フレーム及び参照フレーム内の符号化済みの領域から選択される。具体的には、符号化対象フレームからは、符号化対象ブロックの左、上、右上、左上に隣接する4つのブロックA,B,C,Dが動き参照ブロックとして選択され、参照フレームからは、符号化対象ブロックと同一位置のブロックTA、並びにこのブロックTAの右、下、左及び上に隣接する4つの画素ブロックTB,TC,TD,TEが動き参照ブロックとして選択される。本実施形態では、符号化対象フレームから選択された動き参照ブロックを空間方向動き参照ブロックと称し、参照フレームから選択された動き参照ブロックを時間方向動き参照ブロックと称す。図8Aの各動き参照ブロックに付与されている記号pは、動き参照ブロックのインデクスを示す。このインデクスは、時間方向、空間方向の動き参照ブロックの順にナンバリングされているが、これに限らず、インデクスが重複しなければ、必ずしもこの順序でなくても構わない。例えば、時間方向及び空間方向の動き参照ブロックは、順序がばらばらにナンバリングされていても構わない。
なお、空間方向動き参照ブロックは、図8Aに示す例に限らず、図8Bに示すように、符号化対象ブロックに隣接する画素a,b,c,dが属するブロック(例えば、マクロブロック又はサブマクロブロック等)であっても構わない。この場合、符号化対象ブロック内の左上画素eから各画素a,b,c,dへの相対位置(dx,dy)は、図8Cに示されるように、設定される。ここで、図8A及び図8Bに示される例では、マクロブロックは、N×N画素ブロックであるものとして示されている。
また、図8Dに示されるように、符号化対象ブロックに隣接する全てのブロックA1〜A4,B1,B2,C,Dが空間方向動き参照ブロックとして選択されても構わない。図8Dの例では、空間方向動き参照ブロックの数は8となる。
さらに、時間方向動き参照ブロックは、図8Eに示されるように、各ブロックTA〜TEの一部が重なり合っていてもよく、図8Fに示されるように、各ブロックTA〜TEが離れて配置されていても構わない。図8Eでは、時間方向動き参照ブロックTA及びTBが重なりあっている部分が斜線で示されている。さらにまた、時間方向動き参照ブロックは、必ずしも符号化対象ブロックに対応する位置(Collocate位置)のブロック及びその周囲に位置するブロックである例に限らず、参照フレーム内のいずれの位置に配置されているブロックであっても構わない。例えば、参照ブロックの位置、及び符号化対象ブロックに隣接するいずれかの符号化済みのブロックが有する動き情報18で特定される、参照フレーム内のブロックを中心ブロック(例えば、ブロックTA)として、この中心ブロック及びその周囲のブロックが時間方向動き参照ブロックとして選択されても構わない。さらに、時間方向参照ブロックは、中心ブロックから等間隔に配置されていなくても構わない。
上述したいずれの場合においても、符号化装置及び復号化装置で空間方向及び時間方向動き参照ブロックの数及び位置を予め取り決めておけば、動き参照ブロックの数及び位置は、どのように設定されても構わない。また、動き参照ブロックのサイズは、必ずしも符号化対象ブロックと同じサイズである必要はない。例えば、図8Dに示されるように、動き参照ブロックのサイズが符号化対象ブロックより大きくてもよく、小さくても構わない。さらに、動き参照ブロックは、正方形状に限らず、長方形状等の任意形状に設定されても構わない。また、動き参照ブロックは、いかなるサイズに設定されても構わない。
また、動き参照ブロック及び利用可能ブロックは、時間方向及び空間方向のいずれか一方のみに配置されていても構わない。また、Pスライス、Bスライスといったスライスの種類に従って、時間方向の動き参照ブロック及び利用可能ブロックを配置しても構わないいし、空間方向の動き参照ブロック及び利用可能ブロックを配置しても構わない。
図9は、利用可能ブロック取得部109が動き参照ブロックの中から利用可能ブロックを選択する方法を示している。利用可能ブロックは、符号化対象ブロックへ動き情報を適用可能なブロックであり、互いに異なる動き情報を有している。利用可能ブロック取得部109は、参照動き情報19を参照して、図9に示す方法に従って、動き参照ブロックが各々利用可能ブロックであるか否かを判定し、利用可能ブロック情報30を出力する。
図9に示されるように、まず、インデクスpがゼロである動き参照ブロックが選択される(S800)。図9の説明では、インデクスpが0からM−1(Mは、動き参照ブロックの数を示す。)まで順番に動き参照ブロックを処理する場合を想定している。また、インデクスpが0からp−1までの動き参照ブロックに対する利用可能判定処理が終了し、利用可能か否かを判定する対象となっている動き参照ブロックのインデクスがpであるものとして説明する。
利用可能ブロック取得部109は、動き参照ブロックpが動き情報18を有しているか否か、即ち、少なくとも1つの動きベクトルが割り当てられているか否かを判定する(S801)。動き参照ブロックpが動きベクトルを有していない場合、即ち、時間方向動き参照ブロックpが、動き情報を有していないIスライス内のブロックであるか、或いは、時間方向動き参照ブロックp内の全ての小画素ブロックがイントラ予測符号化されたものである場合、ステップS805に進む。ステップS805において、動き参照ブロックpは、利用不可能ブロックと判定される。
ステップS801において動き参照ブロックpが動き情報を有している場合、ステップS802に進む。利用可能ブロック取得部109は、既に利用可能ブロックに選択されている動き参照ブロックq(利用可能ブロックq)を選定する。ここで、qは、pよりも小さい値である。続いて、利用可能ブロック取得部109は、動き参照ブロックpの動き情報18と、利用可能ブロックqの動き情報18とを比較して、同一の動き情報を有するか否かを判定する(S803)。動き参照ブロックpの動き情報18と利用可能ブロックに選択されている動き参照ブロックqの動き情報18とが同一であると判定された場合、ステップS805に進み、動き参照ブロックpが利用不可能ブロックと判定される。
q<pを満たす全ての利用可能ブロックqに対して、ステップS803で動き参照ブロックpの動き情報18と、利用可能ブロックqの動き情報18とが同一でないと判定された場合、ステップS804に進む。ステップS804において、利用可能ブロック取得部109は、動き参照ブロックpを利用可能ブロックとして判定する。
動き参照ブロックpが利用可能ブロック又は利用不可能ブロックであると判定されると、利用可能ブロック取得部109は、全ての動き参照ブロックに対して利用可能判定が実行されたか否かを判定する(S806)。利用可能判定が実行されていない動き参照ブロックが存在する場合、例えば、p<M−1である場合、ステップS807に進む。続いて、利用可能ブロック取得部109は、インデクスpを1インクリメントして(ステップS807)、ステップS801からステップS806を再度実行する。ステップS806で全ての動き参照ブロックに対して利用可能判定が実行されると、利用可能判定処理は、終了となる。
上述した利用可能判定処理を実行することにより、各動き参照ブロックが利用可能ブロックであるか、又は利用不可能ブロックであるかが判定される。利用可能ブロック取得部109は、利用可能ブロックに関する情報を含む利用可能ブロック情報30を生成する。このように、動き参照ブロックの中から利用可能ブロックを選択することによって、利用可能ブロック情報30に関する情報量が低減され、結果として、符号化データ14の量を低減することができる。
図8Aに示した動き参照ブロックに対して、利用可能判定処理を実行した結果の一例を図10に示す。図10では、2つの空間方向動き参照ブロック(p=0,1)及び2つの時間方向動き参照ブロック(p=5,8)が利用可能ブロックであると判定されている。図10の例に関する利用可能ブロック情報30の一例を図11に示す。図11に示されるように、利用可能ブロック情報30は、動き参照ブロックのインデクス、利用可能性及び動き参照ブロック名称を含む。図11の例では、インデクスp=0,1,5,8が利用可能ブロックであり、利用可能ブロック数は4である。予測部101は、これらの利用可能ブロックの中から最適な1つ利用可能ブロックを選択ブロックとして選択し、選択ブロックに関する情報(選択ブロック情報)31を出力する。選択ブロック情報31は、利用可能ブロックの数及び選択された利用可能ブロックのインデクス値を含む。例えば、利用可能ブロックの数が4である場合、応じた選択ブロック情報31は、最大のエントリーが4である符号表を用いて、可変長符号化部104によって符号化される。
なお、図9のステップS801において、時間方向動き参照ブロックp内のブロックのうちの少なくとも1つがイントラ予測符号化されたブロックであった場合、利用可能ブロック取得部109は、動き参照ブロックpを利用不可能ブロックと判定しても構わない。即ち、時間方向動き参照ブロックp内の全てのブロックがインター予測で符号化されている場合のみ、ステップS802に進むようにしても構わない。
図12Aから図12Eは、ステップS803の動き情報18の比較において、動き参照ブロックpの動き情報18と、利用可能ブロックqの動き情報18とが同一であると判定される例を示す。図12Aから図12Eには、各々、斜線が施された複数のブロックと、2つの白塗りのブロックとが示されている。図12Aから図12Eでは、説明を簡単にするために、斜線が施されたブロックを考慮せずに、これらの2つの白塗りのブロックの動き情報18を比較する場合を想定している。2つの白塗りのブロックの一方が、動き参照ブロックpであり、他方が既に利用可能と判定されている動き参照ブロックq(利用可能ブロックq)であるものとする。特に断りのない限り、2つの白色ブロックのいずれが動き参照ブロックpであっても構わない。
図12Aは、動き参照ブロックp及び利用可能ブロックqの両方が空間方向のブロックである例を示している。図12Aの例では、ブロックA及びBの動き情報18が同一であれば、動き情報18が同一であると判定される。このとき、ブロックA及びBのサイズが同一である必要はない。
図12Bは、動き参照ブロックp及び利用可能ブロックqの一方が空間方向のブロックAであり、他方が時間方向のブロックTBである例を示している。図12Bでは、時間方向のブロックTB内に動き情報を有するブロックが1つある。時間方向のブロックTBの動き情報18と空間方向のブロックAの動き情報18とが同一であれば、動き情報18が同一であると判定される。このとき、ブロックA及びTBのサイズが同一である必要はない。
図12Cは、動き参照ブロックp及び利用可能ブロックqの一方が空間方向のブロックAであり、他方が時間方向のブロックTBである他の例を示している。図12Cは、時間方向のブロックTBが複数の小ブロックに分割されていて、動き情報18を有する小ブロックが複数ある場合を示している。図12Cの例では、動き情報18を有する全てのブロックが同じ動き情報18を有し、その動き情報18が空間方向のブロックAの動き情報18と同一であれば、動き情報18が同一であると判定される。このとき、ブロックA及びTBのサイズが同一である必要はない。
図12Dは、動き参照ブロックp及び利用可能ブロックqがともに時間方向のブロックである例を示している。この場合、ブロックTB及びTEの動き情報18が同一であれば、動き情報18が同一であると判定される。
図12Eは、動き参照ブロックp及び利用可能ブロックqがともに時間方向のブロックである他の例を示している。図12Eは、時間方向のブロックTB及びTEが各々複数の小ブロックに分割されていて、各々に動き情報18を有する小ブロックが複数ある場合を示している。この場合、ブロック内の小ブロック毎に動き情報18を比較して、全ての小ブロックに対し動き情報18が同一であれば、ブロックTBの動き情報18とブロックTEの動き情報18とが同一であると判定される。
図12Fは、動き参照ブロックp及び利用可能ブロックqがともに時間方向のブロックであるさらに他の例を示している。図12Fは、時間方向のブロックTEが複数の小ブロックに分割されていて、ブロックTEに動き情報18を有する小ブロックが複数ある場合を示している。ブロックTEの全ての動き情報18が同一の動き情報18であり、且つ、ブロックTDが有する動き情報18と同一である場合、ブロックTDとTEの動き情報18が同一であると判定される。
このようにして、ステップS803では、動き参照ブロックpの動き情報18と利用可能ブロックqの動き情報18とが同一であるか否かが判定される。図12Aから図12Fの例では、動き参照ブロックpと比較する利用可能ブロックqの数を1として説明したが、利用可能ブロックqの数が2以上の場合においては、動き参照ブロックpの動き情報18と、各々の利用可能ブロックqの動き情報18とを比較しても構わない。また、後述するスケーリングを適用する場合、スケーリング後の動き情報18が上記説明の動き情報18となる。
なお、動き参照ブロックpの動き情報と利用可能ブロックqの動き情報とが同一であるという判定は、動き情報に含まれる各動きベクトルが完全に一致する場合に限定されることはない。例えば、2つの動きベクトルの差のノルムが所定の範囲内であれば、動き参照ブロックpの動き情報と利用可能ブロックqの動き情報とが実質的に同一であるとみなしても構わない。
図13は、予測部101のより詳細な構成を示している。この予測部101は、前述したように、利用可能ブロック情報30、参照動き情報19及び参照画像信号17を入力として、予測画像信号11、動き情報18及び選択ブロック情報31を出力する。動き情報選択部118は、図13に示されるように、空間方向動き情報取得部110、時間方向動き情報取得部111及び動き情報切替スイッチ112を備えている。
空間方向動き情報取得部110には、利用可能ブロック情報30、及び空間方向動き参照ブロックに関する参照動き情報19が入力される。空間方向動き情報取得部110は、空間方向に位置する各利用可能ブロックが有する動き情報及び利用可能ブロックのインデクス値を含む動き情報18Aを出力する。図11に示した情報が利用可能ブロック情報30として入力される場合、空間方向動き情報取得部110は、2つの動き情報出力18Aを生成し、各動き情報出力18Aは、利用可能ブロック及びこの利用可能ブロックが有する動き情報19を含む。
時間方向動き情報取得部111には、利用可能ブロック情報30及び時間方向動き参照ブロックに関する参照動き情報19が入力される。時間方向動き情報取得部111は、利用可能ブロック情報30で特定される利用可能な時間方向動き参照ブロックが有する動き情報19及び利用可能ブロックのインデクス値を動き情報18Bとして出力する。時間方向動き参照ブロックは複数の小画素ブロックに分割されていて、各小画素ブロックが動き情報19を有している。時間方向動き情報取得部111が出力する動き情報18Bは、図14に示すように、利用可能ブロック内の各小画素ブロックが有する動き情報19の群を含む。動き情報18Bが動き情報19の群を含む場合、符号化対象ブロックを分割した小画素ブロック単位で、符号化対象ブロックに対して動き補償予測を実行することができる。図11に示した情報が利用可能ブロック情報30として入力される場合、時間方向動き情報取得部111は、2つの動き情報出力18Bを生成し、各動き情報出力は、利用可能ブロック及びこの利用可能ブロックが有する動き情報19の群を含む。
なお、時間方向動き情報取得部111は、各画素小ブロックが有する動き情報19に含まれる動きベクトルの平均値又は代表値を求め、動きベクトルの平均値又は代表値を動き情報18Bとして出力しても構わない。
図13の動き情報切替スイッチ112は、空間方向動き情報取得部110及び時間方向動き情報取得部111から出力される動き情報18A及び18Bに基づいて、適切な1つの利用可能ブロックを選択ブロックとして選択し、選択ブロックに対応する動き情報18(又は、動き情報18の群)を動き補償部113に出力する。また、動き情報切替スイッチ112は、選択ブロックに関する選択ブロック情報31を出力する。選択ブロック情報31は、インデクスp又は動き参照ブロックの名称などを含み、単に選択情報とも称される。選択ブロック情報31は、インデクスp及び動き参照ブロックの名称に限定されず、選択ブロックの位置を特定することができれば、いかなる情報であっても構わない。
動き情報切替スイッチ112は、例えば、下記数式1に示すコスト式によって導出される符号化コストが最小になる利用可能ブロックを選択ブロックとして選択する。
ここで、Jは符号化コストを示し、Dは入力画像信号10と参照画像信号17との間の二乗誤差和を表す符号化歪みを示す。また、Rは仮符号化によって見積もられる符号量を示し、λは。量子化幅等によって定められるラグランジュ未定係数を示す。数式1に代えて、符号量R又は符号化歪みDのみを使用して、符号化コストJを算出してもよく、符号量R又は符号化歪みDを近似した値を使用して数式1のコスト関数を作成しても構わない。さらに、符号化歪みDは、二乗誤差和に限らず、予測誤差の絶対値和(SAD:sums of absolute difference)であっても構わない。符号量Rは、動き情報18に関する符号量のみを使用しても構わない。また、符号化コストが最小になる利用可能ブロックが選択ブロックとして選択される例に限定されず、符号化コストが最も小さい値以上のある範囲内の値を有する1つの利用可能ブロックが選択ブロックとして選択されても構わない。
動き補償部113は、動き情報選択部118が選択した選択ブロックが有する動き情報(又は、動き情報の群)に基づいて、参照画像信号17が予測画像信号11として取り出される画素ブロックの位置を導出する。動き補償部113に動き情報の群が入力された場合、動き補償部113は、参照画像信号17が予測画像信号11として取り出される画素ブロックを小画素ブロック(例えば、4×4画素ブロック)に分割し、かつ、これら小画素ブロックの各々に、対応する動き情報18を適用することによって、参照画像信号17から予測画像信号11を取得する。予測画像信号11が取得されるブロックの位置は、例えば図4Aに示されるように、小画素ブロックから、動き情報18に含まれる動きベクトル18aに応じて空間方向にシフトした位置となる。
符号化対象ブロックに対する動き補償処理は、H.264の動き補償処理と同様のものを使用することができる。ここでは、一例として、1/4画素精度の補間手法を具体的に説明する。1/4画素精度の補間では、動きベクトルの各成分が4の倍数である場合、動きベクトルは、整数画素位置を指し示す。それ以外の場合、動きベクトルは、分数精度の補間位置に対応する予測位置を指し示す。
ここで、x及びyは、予測対象ブロックの先頭位置(例えば、左上頂点)を示す垂直及び水平方向のインデクスを示し、x_pos及びy_posは、参照画像信号17の対応する予測位置を示す。(mv_x,mv_y)は、1/4画素精度を持つ動きベクトルを示す。次に、割り出した画素位置に対して、参照画像信号17の対応する画素位置の補填又は補間処理によって予測画素を生成する。図15に、H.264の予測画素生成の一例が示されている。図15において大文字のアルファベットで示される正方形(斜線が施された正方形)は、整数位置の画素を示しており、網掛けで表示されている正方形は、1/2画素位置の補間画素を示している。また、白塗りで表示された正方形は1/4画素位置に対応する補間画素を示している。例えば、図15において、アルファベットb、hの位置に対応する1/2画素の補間処理は、下記数式3で算出される。
ここで、数式3及び下記数式4に示されるアルファベット(例えば、b,h,C1等)は、図16において同じアルファベットを付与された画素の画素値を示す。また、「>>」は、右シフト演算を示し、「>> 5」は、32で除算することに相当する。即ち、1/2画素位置の補間画素は、6タップFIR(Finite Impulse Response)フィルタ(タップ係数:(1,−5,20,20,−5,1)/32)を用いて算出される。
また、図15でアルファベットa、dの位置に対応する1/4画素の補間処理は、下記数式4で算出される。
このように、1/4画素位置の補間画素は、2タップの平均値フィルタ(タップ係数:(1/2,1/2))を用いて算出される。4つの整数画素位置の中間に存在するアルファベットjに対応する1/2画素の補間処理は、垂直方向6タップ及び水平方向6タップの両方向を用いて生成される。説明した以外の画素位置に対しても同様の方法で、補間画素値が生成される。
なお、補間処理は、数式3及び数式4の例に限らず、他の補間係数を用いて生成されても構わない。また、補間係数は、符号化制御部150から与えられる固定の値を用いてもよく、或いは、前述の符号化コストに基づいて、フレーム毎に補間係数を最適化し、最適化された補間係数を用いて生成されても構わない。
また、本実施形態では、動き参照ブロックがマクロブロック(例えば、16×16画素ブロック)単位での動きベクトルブロック予測処理に関する処理について述べたが、マクロブロックに限らず、16×8画素ブロック単位、8×16画素ブロック単位、8×8画素ブロック単位、8×4画素ブロック単位、4×8画素ブロック単位又は4×4画素ブロック単位で予測処理が実行されても構わない。この場合、動きベクトルブロックに関する情報は、画素ブロック単位で導出される。また、32×32画素ブロック単位、32×16画素ブロック単位、64×64画素ブロック単位など、16×16画素ブロックより大きい単位で上記の予測処理を行っても構わない。
動きベクトルブロック内の参照動きベクトルを、符号化対象ブロック内の小画素ブロックの動きベクトルとして代入する際には、(A)参照動きベクトルのマイナス値(反転ベクトル)を代入してもよく、或いは(B)小ブロックに対応する参照動きベクトルと、この参照動きベクトルに隣接する参照動きベクトルを用いた加重平均値若しくはメディアン値、最大値、最小値を代入しても構わない。
図16は、予測部101の動作を概略的に示している。図16に示されるように、まず、時間方向参照動きブロックを含む参照フレーム(動き参照フレーム)を取得する(ステップS1501)。動き参照フレームは、典型的には、符号化対象フレームと時間的距離が最も小さい参照フレームであって、時間的に過去の参照フレームである。例えば、動き参照フレームは、符号化対象フレームの直前に符号化されたフレームである。他の例では、動き情報メモリ108に動き情報18が保存されているいずれの参照フレームが動き参照フレームとして取得されても構わない。次に、空間方向動き情報取得部110及び時間方向動き情報取得部111は、各々、利用可能ブロック取得部109から出力された利用可能ブロック情報30を取得する(ステップS1502)。次に、動き情報切替スイッチ112は、例えば数式1に従って、利用可能ブロックの中から1つを選択ブロックとして選択する(ステップS1503)。続いて、動き補償部113は、選択された選択ブロックが有する動き情報を符号化対象ブロックにコピーする(ステップS1504)。このとき、選択ブロックが空間方向参照ブロックである場合には、図17に示されるように、この選択ブロックが有する動き情報18が符号化参照ブロックへコピーされる。また、選択ブロックが時間方向参照ブロックである場合には、この選択ブロックが有する動き情報18の群が位置情報とともに符号化対象ブロックへコピーされる。次に、動き補償部113によってコピーされた動き情報18又は動き情報18の群を用いて、動き補償を実行し、予測画像信号11及び動き補償予測に用いた動き情報18を出力する。
図18は、可変長符号化部104のより詳細な構成を示している。可変長符号化部104は、図18に示されるように、パラメータ符号化部114、変換係数符号化部115、選択ブロック符号化部116及び多重化部117を備えている。パラメータ符号化部114は、変換係数情報13及び選択ブロック情報31を除く、予測モード情報、ブロックサイズ情報、量子化パラメータ情報などの復号に必要になるパラメータを符号化し、符号化データ14Aを生成する。変換係数符号化部115は、変換係数情報13を符号化して、符号化データ14Bを生成する。また、選択ブロック符号化部116は、利用可能ブロック情報30を参照して、選択ブロック情報31を符号化し、符号化データ14Cを生成する。
利用可能ブロック情報30が、図19に示すように、インデクスとインデクスに対応する動き参照ブロックの利用可能性とを含む場合、予め設定された複数の動き参照ブロックのうち、利用不可能である動き参照ブロックを除外して、利用可能である動き参照ブロックのみをシンタクス(stds_idx)に変換する。図19では、9つの動き参照ブロックのうちの5つの動き参照ブロックが利用不可能であるので、これらを除外した4つの動き参照ブロックに対して、シンタクスstds_idxが0から順番に割り当てられる。この例では、符号化すべき選択ブロック情報は、9つから選択するのではなく、4つの利用可能ブロックから選択することになるので、割り当てる符号量(bin数)は、平均的に少なく済む。
図20は、シンタクスstds_idx及びシンタクスstds_idxの2値情報(bin)を示す符号表の一例を示す。図18に示されるように、利用可能な動き参照ブロックの数が少なければ少ないほど、シンタクスstds_idxの符号化に必要な平均のbin数は、低減される。例えば、利用可能ブロックの数が4である場合、シンタクスstds_idxは、3ビット以下で表わすことができる。シンタクスstds_idxの2値情報(bin)は、利用可能ブロック数毎に全てのstds_idxが同じbin数となるよう2値化されてもよく、事前学習によって定められた2値化方法に従って2値化されても構わない。また、複数の2値化方法が用意され、符号化対象ブロック毎に適用的に切り替えられても構わない。
これらの符号化部114、115、116には、エントロピー符号化(例えば等長符号化、ハフマン符号化若しくは算術符号化など)が適用されることができ、生成された符号化データ14A、14B、14Cは、多重化部117によって多重化されて出力される。
本実施形態では、符号化対象フレームより1フレーム前に符号化されたフレームを参照フレームとして参照する例を想定して説明しているが、選択ブロックが有する参照動き情報19中の動きベクトル及び参照フレーム番号を用いて、動きベクトルをスケーリング(又は、正規化)して、参照動き情報19が符号化対象ブロックへ適用されても構わない。
このスケーリング処理について、図21を参照して具体的に説明する。図21に示すtcは、符号化対象フレームと動き参照フレームとの時間距離(POC(ディスプレイ順序を示す番号)距離)を示し、下記数式5により算出される。図21に示すtr[i]は、動き参照フレームと選択ブロックが参照するフレームiとの時間距離を示し、下記数式6により算出される。
ここで、curPOCは符号化対象フレームのPOC(Picture Order Count)を示し、colPOCは動き参照フレームのPOCを示し、refPOCは選択ブロックが参照するフレームiのPOCを示している。また、Clip(min,max,target)はtargetがminより小さい値になる場合にはminを出力し、maxより大きい値になる場合にはmaxを出力し、それ以外の場合にはtargetを出力するクリップ関数である。また、DiffPicOrderCnt(x,y)は2つのPOCの差分を計算する関数である。
選択ブロックの動きベクトルをMVr=(MVr_x,MVr_y)とし、符号化対象ブロックへ適用する動きベクトルをMV=(MV_x,MV_y)とすると、下記数式7により動きベクトルMVが算出される。
ここで、Abs(x)はxの絶対値を取り出す関数を示す。このようにして、動きベクトルのスケーリングでは、選択ブロックに割り当てられている動きベクトルMVrが符号化対象フレームと動き第1参照フレームとの間の動きベクトルMVに変換される。
また、動きベクトルのスケーリングに関する他の例を以下に説明する。
まず、スライス又はフレーム毎に、下記数式8に従って、動き参照フレームが取りうる全ての時間距離trに関してスケーリング係数(DistScaleFactor[i])を求める。スケーリング係数の数は、選択ブロックが参照するフレームの数、即ち、参照フレームの数と等しい。
数式8に示すtxの計算については、予めテーブル化しておいても構わない。
符号化対象ブロック毎のスケーリングの際には、下記数式9を用いることにより、乗算、加算、シフト演算のみで動きベクトルMVを計算することができる。
このようなスケーリング処理を施した場合、予測部101とともに利用可能ブロック取得部109の処理に、スケーリング後の動き情報18を適用する。スケーリング処理を施した場合、符号化対象ブロックが参照する参照フレームは、動き参照フレームとなる。
図22は、画像符号化部100におけるシンタクス構造を示している。図22に示されるように、シンタクスは、主に3つのパート、即ち、ハイレベルシンタクス901、スライスレベルシンタクス904及びマクロブロックレベルシンタクス907を含む。ハイレベルシンタクス901は、スライス以上の上位レイヤのシンタクス情報を保持している。スライスレベルシンタクス904は、スライス毎に必要な情報を保持し、マクロブロックレベルシンタクス907は、図7Aから図7Dに示されるマクロブロック毎に必要とされるデータを保持している。
各パートは、さらに詳細なシンタクスを含む。ハイレベルシンタクス901は、シーケンスパラメータセットシンタクス902及びピクチャパラメータセットシンタクス903などのシーケンス及びピクチャレベルのシンタクスを含む。スライスレベルシンタクス904は、スライスヘッダーシンタクス905及びスライスデータシンタクス906などを含む。さらに、マクロブロックレベルシンタクス907は、マクロブロックレイヤーシンタクス908及びマクロブロックプレディクションシンタクス909などを含む。
図23A及び図23Bは、マクロブロックレイヤーシンタクスの例を示している。図23A及び図23Bに示すavailable_block_numは、利用可能ブロックの数を示しており、これが1より大きい値の場合は、選択ブロック情報の符号化が必要となる。さらに、stds_idxは、選択ブロック情報を示しており、前述した利用可能ブロック数に応じた符号表を用いてstds_idxを符号化する。
図23Aは、mb_typeの後に選択ブロック情報を符号化する場合のシンタクスを示している。mb_typeが示すモードが定められたサイズや定められたモード(TARGET_MODE)の場合で、かつavailable_block_numが1より大きい値の場合に、stds_idxを符号化する。例えば、選択ブロックの動き情報が利用可能となるのが、ブロックサイズが64×64画素、32×32画素、16×16画素の場合や、ダイレクトモードの場合にstds_idxを符号化する。
図23Bは、mb_typeの前に選択ブロック情報を符号化する場合のシンタクスを示している。available_block_numが1より大きい値の場合に、stds_idxを符号化する。また、available_block_num が0ならば、H.264に代表される従来の動き補償を行うのでmb_typeを符号化する。
なお、図23A及び図23Bに示す表の行間には、本発明で規定していないシンタクス要素が挿入されることも可能であるし、それ以外の条件分岐に関する記述が含まれていても構わない。或いは、シンタクステーブルを複数のテーブルに分割、統合することも可能である。また、必ずしも同一の用語を用いる必要は無く、利用する形態によって任意に変更しても構わない。更に、当該マクロブロックレイヤーシンタクスに記述されている各々のシンタクスエレメントは、後述するマクロブロックデータシンタクスに明記されるように変更しても構わない。
また、stds_idxの情報を利用することでmb_typeの情報を削減することが可能である。図24Aは、H.264におけるBスライス時のmb_type及びmb_typeに対応する符号表である。図24Aに示されるNは、16,32,64などの、符号化対象ブロックのサイズを表す値であり、MはNの半分の値である。従って、mb_typeが4〜21である場合、符号化対象ブロックは長方形ブロックであることを示している。また、図24AのL0,L1,Biは、夫々単方向予測(List0方向のみ)、単方向予測(List1方向のみ)、双方向予測を示している。符号化対象ブロックが長方形ブロックである場合、mb_typeは、符号化対象ブロック内の2つの長方形ブロックの各々に対して、L0,L1,Biのいずれの予測が行われたかを示す情報を含む。また、B_Subは、マクロブロックを4分割した画素ブロックの各々に対して上記処理を行うことを意味する。例えば、符号化対象ブロックが64×64画素マクロブロックである場合、符号化対象ブロックは、このマクロブロックを4分割して得られる4つの32×32画素ブロック毎に、mb_typeをさらに割り当てられて符号化される。
ここで、stds_idxが示す選択ブロックがSpatial Left(符号化対象ブロックの左側に隣接する画素ブロック)である場合には、符号化対象ブロックの左側に隣接する画素ブロックの動き情報を符号化対象ブロックの動き情報とするので、stds_idxは、図24Aのmb_type=4,6,8,10,12,14,16,18,20が示す横長の長方形ブロックを使用して、符号化対象ブロックに対して予測を実行することと等しい意味を持つ。また、stds_idxが示す選択ブロックがSpatial Upの場合には、符号化対象ブロックの上側に隣接する動き情報を符号化対象ブロックの動き情報とするので、stds_idxは、図24Aのmb_type=5,7,9,11,13,15,17,19,21が示す縦長の長方形ブロックで予測を実行することと等しい意味を持つ。従って、stds_idxを利用することにより、図24Bに示すような図24Aのmb_type=4〜21の欄を削減した符号表を作成することが可能である。同様に、図24Cに示すH.264におけるPスライス時のmb_type及びmb_typeに対応する符号表に関しても、図24Dに示すようなmb_typeの数を削減した符号表を作成することが可能である。
また、stds_idxの情報をmb_typeの情報に含めて符号化しても構わない。図25Aは、stds_idxの情報をmb_typeの情報に含めた場合の符号表であって、Bスライスにおけるmb_type及びmb_typeに対応する符号表の一例を示している。図25AのB_STDS_X(X=0,1,2)は、stds_idxに相当するモードを示し、利用可能ブロック数の分だけB_STDS_Xが追加される(図25Aでは、利用可能ブロック数は3である)。同様にPスライスに関するmb_typeの他の例を図25Bに示す。図25Bの説明は、Bスライスと同様であるために省略する。
mb_typeの順序及び2値化方法(bin化)は、図25A及び図25Bに示す例に限られず、他の順序及び2値化方法に従ってmb_typeが符号化されても構わない。B_STDS_X及びP_STDS_Xは、連続している必要はなく、各mb_typeの間に配置されていても構わない。また、2値化方法(bin化)は、予め学習された選択頻度に基づいて設計しても構わない。
本実施形態では、マクロブロックを複数個まとめて動き補償予測を行う拡張マクロブロックにおいても、本発明は適応可能である。また、本実施形態では、符号化のスキャン順についてはどのような順序でも構わない。例えば、ラインスキャン又はZスキャンなどに対しても、本発明は適応可能である。
以上のように、本実施形態に係る画像符号化装置は、複数の動き参照ブロックから利用可能ブロックを選択し、選択した利用可能ブロックの数に応じて、符号化対象ブロックに適用する動き参照ブロックを特定するための情報を生成し、この情報を符号化している。従って、本実施形態に係る画像符号化装置によれば、動きベクトル情報に関する符号量を削減しながらも、符号化対象ブロックよりも細かな小画素ブロック単位で動き補償を行えるため、高い符号化効率を実現することができる。
(第2の実施形態)
図26は、本発明の第2の実施形態に係る画像符号化装置を示している。第2の実施形態では、第1の実施形態と異なる部分及び動作について主に説明する。本実施形態に係る画像符号化部200は、図26に示されるように、第1の実施形態とは予測部201及び可変長符号化部204の構成が異なる。予測部201は、図27に示すように、第1予測部101及び第2予測部202を備え、これら第1及び第2予測部101、202を選択的に切り替えて予測画像信号11を生成する。第1予測部101は、第1の実施形態に係る予測部101(図1)と同じ構成を有し、選択ブロックが有する動き情報18を用いて動き補償する予測方式(第1予測方式)に従って、予測画像信号11を生成する。第2予測部202は、符号化対象ブロックに対して、1つの動きベクトルを用いて動き補償する、H.264のような予測方式(第2予測方式)に従って、予測画像信号11を生成する。第2予測部202は、入力画像信号10及びフレームメモリからの参照画像信号17を使用して、予測画像信号11Bを生成する。
図28は、第2予測部202の構成を概略的に示している。第2予測部202は、図28に示されるように、入力画像信号10及び参照画像信号17を使用して動き情報21を生成する動き情報取得部205、並びに、参照画像信号17及び動き情報21を使用して予測画像信号11Aを生成する動き補償部113(図1)を備えている。この動き情報取得部205は、入力画像信号10及び参照画像信号17に基づいて、例えばブロックマッチングによって、符号化対象ブロックに割り当てるべき動きベクトルを求める。マッチングの評価基準としては、入力画像信号10とマッチング後の補間画像との差分を画素毎に累積した値を用いる。
なお、動き情報取得部205は、予測画像信号11と入力画像信号10との差分を変換した値を使用して、最適な動きベクトルを決定しても構わない。また、動きベクトルの大きさ、並びに、動きベクトル及び参照フレーム番号の符号量を考慮して、或いは、数式1を使用して最適な動きベクトルが決定されても構わない。マッチング方法は、画像符号化装置の外部から提供される探索範囲情報に基づいて実行されてもよく、画素精度毎に階層的に実行されても構わない。また、探索処理を行わず、符号化制御部150によって与えられた動き情報を動き情報取得部205の出力21としても構わない。
図27の予測部101は、第1予測部101からの予測画像信号11A及び第2予測部202からの予測画像信号11Bのいずれか一方を選択して出力する予測方法切替スイッチ203をさらに備えている。例えば、予測方法切替スイッチ203は、予測画像信号11A及び11B毎に、入力画像信号10を使用して、例えば数式1に従って、符号化コストを求め、符号化コストがより小さくなるように、予測画像信号11A及び11Bのいずれか一方を選択して予測画像信号11として出力する。さらに、予測方法切替スイッチ203は、動き情報18及び選択ブロック情報31とともに、出力した予測画像信号11が第1予測部101及び第2予測部202のいずれかから出力されたものかを示す予測切替情報32も出力する。出力された動き情報18は、可変長符号化部204によって符号化された後、符号化データ14に多重化される。
図29は、可変長符号化部204の構成を概略的に示している。図29に示した可変長符号化部204は、図18に示した可変長符号化部104の構成に加えて、動き情報符号化部217を備えている。また、図29の選択ブロック符号化部216は、図18の選択ブロック符号化部116と異なり、予測切替情報32を符号化して、符号化データ14Dを生成する。予測処理を第1予測部101が実行した場合には、選択ブロック符号化部216は、利用可能ブロック情報30及び選択ブロック情報31をさらに符号化する。符号化された利用可能ブロック情報30及び選択ブロック情報31は、符号化データ14Dに含まれる。予測処理を第2予測部202が実行した場合には、動き情報符号化部217が動き情報18を符号化し、符号化データ14Eを生成する。選択ブロック符号化部216及び動き情報符号化部217は、各々、予測画像が選択ブロックの動き情報を用いた動き補償予測により生成されたかどうかを示す予測切替情報32に基づいて、予測処理を第1予測部101及び第2予測部202のどちらが実行されたかを判定する。
多重化部117は、パラメータ符号化部114、変換係数符号化部115、選択ブロック符号化部216及び動き情報符号化部から符号化データ14A,B,D,Eを受け取り、受け取った符号化データ14A,B,D,Eを多重化する。
図30A及び図30Bは、各々、本実施形態に係るマクロブロックレイヤーシンタクスの例を示している。図30Aに示されるavailable_block_numは、利用可能ブロックの数を示し、これが1より大きい値の場合、選択ブロック符号化部216は、選択ブロック情報31を符号化する。また、stds_flagは、動き補償予測において選択ブロックの動き情報を符号化対象ブロックの動き情報として使用したか否かを示すフラグ、即ち、予測方法切替スイッチ203が第1予測部101及び第2予測部202のどちらを選択したかを示すフラグである。利用可能ブロックの数が1より大きく、かつ、stds_flagが1である場合、選択ブロックが有する動き情報を動き補償予測に使用したことを示す。また、stds_flagが0の場合、選択ブロックが有する動き情報を利用せずに、H.264と同様に動き情報18の情報を直接もしくは予測した差分値を符号化する。さらに、stds_idxは、選択ブロック情報を示しており、利用可能ブロック数に応じた符号表は、前述したとおりである。
図30Aは、mb_typeの後に選択ブロック情報を符号化する場合のシンタクスを示している。mb_typeが示すモードが定められたサイズや定められたモードの場合にのみ、stds_flag及びstds_idxを符号化する。例えば、選択ブロックの動き情報が利用可能となるのが、ブロックサイズが64×64、32×32、16×16の場合や、ダイレクトモードの場合に、stds_flag及びstds_idxを符号化する。
図30Bは、mb_typeの前に選択ブロック情報を符号化する場合のシンタクスを示している。例えばstds_flagが1である場合、mb_typeは符号化される必要はない。stds_flagが0である場合、mb_typeは符号化される。
以上のように、第2の実施形態に係る画像符号化装置は、符号化コストが小さくなるように、第1の実施形態に係る第1予測部101と、H.264等の予測方式を利用する第2予測部202とを、選択的に切り替えて、入力画像信号を圧縮符号化している。従って、第2の実施形態に係る画像符号化装置においては、第1の実施形態の画像符号化装置より符号化効率が向上している。
(第3の実施形態)
図31は、第3の実施形態に係る画像復号化装置を概略的に示している。この画像復号化装置は、図31に示されるように、画像復号化部300、復号化制御部350及び出力バッファ308を備えている。画像復号化部300は、復号化制御部350により制御される。第3の実施形態に係る画像復号化装置は、第1の実施形態に係る画像符号化装置に対応する。即ち、図31の画像復号化装置による復号処理は、図1の画像符号化処理による符号化処理と相補的な関係を有している。図31の画像復号化装置は、LSIチップなどのハードウェアにより実現されてもよく、或いは、コンピュータに画像復号化プログラムを実行させることにより実現されても構わない。
図31の画像復号化装置は、符号化列復号化部301、逆量子化・逆変換部302、加算器303、フレームメモリ304、予測部305、動き情報メモリ306及び利用可能ブロック取得部307を備えている。画像復号化部300において、図示しない蓄積系又は伝送系からの符号化データ80は、符号化列復号化部301に入力される。この符号化データ80は、例えば、図1の画像符号化装置から多重化された状態で送出された符号化データ14に対応する。
本実施形態では、復号化対象である画素ブロック(例えば、マクロブロック)を単に復号化対象ブロックと称す。また、復号化対象ブロックを含む画像フレームを復号化対象フレームと称す。
符号化列復号化部301では、1フレーム又は1フィールド毎に、シンタクスに基づいて、構文解析による解読が行われる。具体的には、符号化列復号化部301は、各シンタクスの符号列を順次、可変長復号化し、変換係数情報33、選択ブロック情報61、並びにブロックサイズ情報及び予測モード情報などの予測情報を含む、復号化対象ブロックに関する符号化パラメータなどを復号する。
本実施形態において、復号化パラメータは、変換係数33、選択ブロック情報61及び予測情報を含み、変換係数に関する情報、量子化に関する情報などの復号の際に必要になるあらゆるパラメータを含む。予測情報、変換係数に関する情報、及び量子化に関する情報は、制御情報71として復号化制御部350へ入力される。復号化制御部350は、予測情報及び量子化パラメータなどの復号化に必要なパラメータを含む復号化制御情報70を、画像復号化部300の各部に与える。
さらに、符号化列復号化部301は、後に説明するように、符号化データ80を同時に復号化して、予測情報及び選択ブロック情報61を得る。動きベクトル及び参照フレーム番号を含む動き情報38は、復号化されなくても構わない。
符号化列復号化部301によって解読された変換係数33は、逆量子化・逆変換部302へ送られる。符号化列復号化部301によって解読された量子化に関する種々の情報、即ち、量子化パラメータ及び量子化マトリクスは、復号化制御部350に与えられ、逆量子化する際に逆量子化・逆変換部302にロードされる。逆量子化・逆変換部302は、ロードされた量子化に関する情報に従って、変換係数33を逆量子化し、続いて逆変換処理(例えば、逆離散コサイン変換など)を施して、予測誤差信号34を得る。図31の逆量子化・逆変換部302による逆変換処理は、図1の変換・量子化部による変換処理の逆変換である。例えば、画像符号化装置(図1)によりウェーブレット変換が施される場合、逆量子化・逆変換部302は、対応する逆量子化及び逆ウェーブレット変換を実行する。
逆量子化・逆変換部302によって復元された予測誤差信号34は、加算器303へ入力される。加算器303は、予測誤差信号34と、後述する予測部305で生成された予測画像信号35と加算して、復号画像信号36を生成する。生成された復号画像信号36は、画像復号化部300から出力されて、出力バッファ308に一旦蓄積された後、復号化制御部350が管理する出力タイミングに従って、出力される。また、この復号画像信号36は、フレームメモリ304に参照画像信号37として格納される。参照画像信号37は、フレームメモリ304から、フレーム毎或いはフィールド毎に順次読み出され、予測部305へ入力される。
利用可能ブロック取得部307は、後述する動き情報メモリ306から参照動き情報39を受け取り、利用可能ブロック情報60を出力する。利用可能ブロック取得部307の動作は、第1の実施形態で説明した利用可能ブロック取得部109(図1)と同様である。
動き情報メモリ306は、予測部305から動き情報38を受け取り、参照動き情報39として一時的に格納する。動き情報メモリ306は、予測部305から出力された動き情報38を参照動き情報39として一時保存する。図4は、動き情報メモリ306の一例を示す。動き情報メモリ306は、符号化時間の異なる複数の動き情報フレーム26を保持している。復号化が終了した動き情報38又は動き情報38の群は、参照動き情報39として復号化時間に対応した動き情報フレーム26に保存される。動き情報フレーム26では、参照動き情報39は、例えば4×4画素ブロック単位で保存されている。動き情報メモリ306が保持している参照動き情報39は、予測部305によって、復号化対象ブロックの動き情報38を生成する際に読み出され参照される。
次に、本実施形態に係る動き参照ブロック及び利用可能ブロックを説明する。動き参照ブロックは、既に復号化済みの領域の中から前述の画像符号化装置及び画像復号化装置によって予め定められた方法に従って選択される候補ブロックである。図8Aは、利用可能ブロックに関する一例を示している。図8Aでは、復号化対象フレーム内の4つの動き参照ブロック及び参照フレーム内の5つの動き参照ブロックの、合計9つの動き参照ブロックが配置されている。図8Aの復号化対象フレーム内の動き参照ブロックA,B,C,Dは、復号化対象ブロックに対して、左、上、右上、左上に隣接するブロックである。本実施形態では、復号化対象ブロックを含む復号化対象フレームの中から選択された動き参照ブロックを、空間方向動き参照ブロックと称す。また、参照フレーム内の動き参照ブロックTAは、参照フレーム内の、復号化対象ブロックと同じ位置の画素ブロックであり、この動き参照ブロックTAに接している画素ブロックTB,TC,TD,TEが動き参照ブロックとして選択される。参照フレーム内の画素ブロックの中から選択された動き参照ブロックを、時間方向動き参照ブロックと称す。また、時間方向動き参照ブロックが位置するフレームを動き参照フレームと称す。
空間方向動き参照ブロックは、図8Aに示される例に限らず、図8B示すように、復号化対象ブロックに隣接する画素a,b,c,dが属する画素ブロックが、空間方向動き参照ブロックとして選択されても構わない。この場合、復号化対象ブロック内の左上画素に対する画素a,b,c,dの相対位置(dx,dy)は、図8Cに示される。
また、図8Dに示されるように、復号化対象ブロックに隣接するすべての画素ブロックA1〜A4,B1,B2,C,Dが、空間方向動き参照ブロックとして選択されても構わない。図8Dでは、空間方向動き参照ブロックの数は8である。
また、時間方向動き参照ブロックTA〜TEは、図8Eに示すように、互いに部分的に重なり合っていてもよく、図8Fに示すように、各々が互いに離れていても構わない。また、時間方向動き参照ブロックは、必ずしもCollocate位置のブロック及びその周囲に位置する必要はなく、動き参照フレーム内であればいずれの位置の画素ブロックであっても構わない。例えば、復号化対象ブロックに隣接する既に復号化済みのブロックの動き情報を利用して、動き情報に含まれる動きベクトルが指し示す参照ブロックを動き参照ブロックの中心(例えば、ブロックTA)として選択しても構わない。さらに、時間方向の参照ブロックは、等間隔に配置されていなくても構わない。
上述したような動き参照ブロックを選択する方法においては、画像復号化装置及び画像復号化装置の両方で空間方向及び時間方向動き参照ブロックの数及び位置に関する情報を共有していれば、動き参照ブロックがいずれの数及び位置から選択されても構わない。また、動き参照ブロックのサイズは、必ずしも復号化対象ブロックと同じサイズである必要はない。例えば図8Dに示すように、動き参照ブロックのサイズが復号化対象ブロックのサイズよりも大きくてもよく、小さくてもよく、任意のサイズであっても構わない。また、動き参照ブロックの形状は、正方形状に限らず、長方形状であっても構わない。
次に、利用可能ブロックについて説明する。利用可能ブロックは、動き参照ブロックの中から選択された画素ブロックであって、復号化対象ブロックへ動き情報を適用可能な画素ブロックである。利用可能ブロックは、互いに異なる動き情報を有している。利用可能ブロックは、例えば図8Aに示されるような復号化対象フレーム及び参照フレーム内の合計9つの動き参照ブロックに対して、図9に示す利用可能ブロック判定処理を実行することによって、選択される。図10は、図9に示す利用可能ブロック判定処理を実行した結果を示している。図10では、斜線を施された画素ブロックが利用不可能ブロックを示し、白塗りのブロックが利用可能ブロックを示す。即ち、空間方向動き参照ブロックの中から2つ、時間方向動き参照ブロックの中から2つの、合計4つが利用可能ブロックとして判定されている。予測部305内の動き情報選択部314は、選択ブロック復号化部323から受け取った選択ブロック情報61に従って、時間及び空間方向に配置されているこれらの利用可能ブロックの中から最適な1つ利用可能ブロックを選択ブロックとして選択する。
次に、利用可能ブロック取得部307について説明する。利用可能ブロック取得部307は、第1の実施形態の利用可能ブロック取得部109と同一の機能を持ち、参照動き情報39を動き情報メモリ306から取得し、動き参照ブロック毎に利用可能ブロック又は利用不可能ブロックを示す情報である利用可能ブロック情報60を出力する。
利用可能ブロック取得部307の動作を図9のフローチャートを参照して説明する。まず、利用可能ブロック取得部307は、動き参照ブロック(インデクスp)が動き情報を有するか否かを判定する(ステップS801)。即ち、ステップS801では、動き参照ブロックp内の少なくとも1つの小画素ブロックが動き情報を有しているか否かが判定される。動き参照ブロックpが動き情報を有していないと判定された場合、即ち、時間方向動き参照ブロックが動き情報のないIスライス内のブロックあるか、或いは、時間方向動き参照ブロック内の全ての小画素ブロックがイントラ予測復号化されている場合、ステップS805に進む。ステップS805において、この動き参照ブロックpは、利用不可能ブロックと判定される。
ステップS801で動き参照ブロックpが動き情報を有すと判定された場合、利用可能ブロック取得部307は、既に利用可能ブロックと判定されている動き参照ブロックq(利用可能ブロックqと称す)を選定する(ステップS802)。ここで、qはpより小さい値である。続いて、利用可能ブロック取得部307は、全てのqに対して、この動き参照ブロックpの動き情報と、利用可能ブロックqの動き情報とを比較して、動き参照ブロックpが利用可能ブロックqと同一の動き情報を有しているか否かを判定する(S803)。動き参照ブロックpが利用可能ブロックqと同一の動きベクトルを有している場合、ステップS805に進み、ステップS805において、この動き参照ブロックpは、利用可能ブロック取得部307によって、利用不可能ブロックと判定される。動き参照ブロックpが全ての利用可能ブロックqと異なる動き情報を有している場合、ステップS804において、この動き参照ブロックpは、利用可能ブロック取得部307によって、利用可能ブロックと判定される。
上述した利用可能ブロック判定処理を全ての動き参照ブロックに対して実行することにより、動き参照ブロック毎に利用可能ブロックか利用不可能ブロックかが判定され、利用可能ブロック情報60が生成される。利用可能ブロック情報60の一例が、図11に示されている。利用可能ブロック情報60は、図11に示されるように、動き参照ブロックのインデクスp及び利用可能性を含む。図11では、利用可能ブロック情報60は、インデクスpが0,1,5及び8である動き参照ブロックが利用可能ブロックとして選択されたことを示し、利用可能ブロックの数は4である。
なお、図9のステップS801において、時間方向動き参照ブロックp内のブロックのうちの少なくとも1つがイントラ予測符号化されたブロックであった場合、利用可能ブロック取得部307は、動き参照ブロックpを利用不可能ブロックと判定しても構わない。即ち、時間方向動き参照ブロックp内の全てのブロックがインター予測で符号化されている場合のみ、ステップS802に進むようにしても構わない。
図12Aから図12Eは、ステップS803の動き情報38の比較において、動き参照ブロックpの動き情報38と、利用可能ブロックqの動き情報38とが同一であると判定される例を示す。図12Aから図12Eには、各々、斜線が施された複数のブロックと、2つの白塗りのブロックとが示されている。図12Aから図12Eでは、説明を簡単にするために、斜線が施されたブロックを考慮せずに、これらの2つの白塗りのブロックの動き情報38を比較する場合を想定している。2つの白塗りのブロックの一方が、動き参照ブロックpであり、他方が既に利用可能と判定されている動き参照ブロックq(利用可能ブロックq)であるものとする。特に断りのない限り、2つの白色ブロックのいずれが動き参照ブロックpであっても構わない。
図12Aは、動き参照ブロックp及び利用可能ブロックqの両方が空間方向のブロックである例を示している。図12Aの例では、ブロックA及びBの動き情報38が同一であれば、動き情報38が同一であると判定される。このとき、ブロックA及びBのサイズが同一である必要はない。
図12Bは、動き参照ブロックp及び利用可能ブロックqの一方が空間方向のブロックAであり、他方が時間方向のブロックTBである例を示している。図12Bでは、時間方向のブロックTB内に動き情報を有するブロックが1つある。時間方向のブロックTBの動き情報38と空間方向のブロックAの動き情報38とが同一であれば、動き情報38が同一であると判定される。このとき、ブロックA及びTBのサイズが同一である必要はない。
図12Cは、動き参照ブロックp及び利用可能ブロックqの一方が空間方向のブロックAであり、他方が時間方向のブロックTBである他の例を示している。図12Cは、時間方向のブロックTBが複数の小ブロックに分割されていて、動き情報38を有する小ブロックが複数ある場合を示している。図12Cの例では、動き情報38を有する全てのブロックが同じ動き情報38を有し、その動き情報38が空間方向のブロックAの動き情報38と同一であれば、動き情報38が同一であると判定される。このとき、ブロックA及びTBのサイズが同一である必要はない。
図12Dは、動き参照ブロックp及び利用可能ブロックqがともに時間方向のブロックである例を示している。この場合、ブロックTB及びTEの動き情報38が同一であれば、動き情報38が同一であると判定される。
図12Eは、動き参照ブロックp及び利用可能ブロックqがともに時間方向のブロックである他の例を示している。図12Eは、時間方向のブロックTB及びTEが各々複数の小ブロックに分割されていて、各々に動き情報38を有する小ブロックが複数ある場合を示している。この場合、ブロック内の小ブロック毎に動き情報38を比較して、全ての小ブロックに対し動き情報38が同一であれば、ブロックTBの動き情報38とブロックTEの動き情報38とが同一であると判定される。
図12Fは、動き参照ブロックp及び利用可能ブロックqがともに時間方向のブロックであるさらに他の例を示している。図12Fは、時間方向のブロックTEが複数の小ブロックに分割されていて、ブロックTEに動き情報38を有する小ブロックが複数ある場合を示している。ブロックTEの全ての動き情報38が同一の動き情報38であり、且つ、ブロックTDが有する動き情報38と同一である場合、ブロックTDとTEの動き情報38が同一であると判定される。
このようにして、ステップS803では、動き参照ブロックpの動き情報38と利用可能ブロックqの動き情報38とが同一であるか否かが判定される。図12Aから図12Fの例では、動き参照ブロックpと比較する利用可能ブロックqの数を1として説明したが、利用可能ブロックqの数が2以上の場合においては、動き参照ブロックpの動き情報38と、各々の利用可能ブロックqの動き情報38とを比較しても構わない。また、後述するスケーリングを適用する場合、スケーリング後の動き情報38が上記説明の動き情報38となる。
なお、動き参照ブロックpの動き情報と利用可能ブロックqの動き情報とが同一であるという判定は、動き情報に含まれる各動きベクトルが完全に一致する場合に限定されることはない。例えば、2つの動きベクトルの差のノルムが所定の範囲内であれば、動き参照ブロックpの動き情報と利用可能ブロックqの動き情報とが実質的に同一であるとみなしても構わない。
図32は、符号化列復号化部301をより詳細に示すブロック図である。符号化列復号化部301は、図32に示されるように、符号化データ80をシンタクス単位に分離する分離部320、変換係数を復号化する変換係数復号化部322、選択ブロック情報を復号化する選択ブロック復号化部323、並びに、予測ブロックサイズ及び量子化に関するパラメータなどを復号化するパラメータ復号化部321を備えている。
パラメータ復号化部321は、分離部から、予測ブロックサイズ及び量子化に関するパラメータを含む符号化データ80Aを受け取り、符号化データ80Aを復号化して制御情報71を生成する。変換係数復号化部322は、分離部320から、符号化されている変換係数80Bを受け取り、この符号化されている変換係数80Bを復号化し、変換係数情報33を得る。選択ブロック復号化部323は、選択ブロックに関する符号化データ80C及び利用可能ブロック情報60を入力として、選択ブロック情報61を出力する。入力の利用可能ブロック情報60は、図11に示すように、動き参照ブロック毎の利用可能性を示す。
次に、図33を参照して、予測部305を詳細に説明する。
予測部305は、図33に示すように、動き情報選択部314及び動き補償部313を備え、動き情報選択部314は、空間方向動き情報取得部310、時間方向動き情報取得部311及び動き情報切替スイッチ312を備える。予測部305は、基本的には、第1の実施形態で説明した予測部101と同一の構成及び機能を持つ。
予測部305は、利用可能ブロック情報60、選択ブロック情報61、参照動き情報39及び参照画像信号37を入力として、予測画像信号35及び動き情報38を出力する。空間方向動き情報取得部310及び時間方向動き情報取得部311は、夫々第1の実施形態で説明した空間方向動き情報取得部110及び時間方向動き情報取得部111と同一の機能を持つ。空間方向動き情報取得部310は、利用可能ブロック情報60及び参照動き情報39を使用して、空間方向に位置する各利用可能ブロックの動き情報及びインデクスを含む動き情報38Aを生成する。時間方向動き情報取得部311は、利用可能ブロック情報60及び参照動き情報39を使用して、時間方向に位置する各利用可能ブロックの動き情報及びインデクスを含む動き情報(又は、動き情報の群)38Bを生成する。
動き情報切替スイッチ312では、選択ブロック情報61に従って、空間方向動き情報取得部310からの動き情報38A及び時間方向動き情報取得部311からの動き情報(又は、動き情報の群)38Bの中から1つを選択し、動き情報38を得る。選択された動き情報38は、動き補償部313及び動き情報メモリ306へ送られる。動き補償部313は、選択された動き情報38に従って、第1の実施形態で説明した動き補償部113と同様に動き補償予測を行い、予測画像信号35を生成する。
動き補償部313の動きベクトルのスケーリング機能においては、第1の実施形態に説明したものと同様であるので説明を省略する。
図22は、画像復号化部300におけるシンタクス構造を示している。図22に示されるように、シンタクスは、主に3つのパート、即ち、ハイレベルシンタクス901、スライスレベルシンタクス904及びマクロブロックレベルシンタクス907を含む。ハイレベルシンタクス901は、スライス以上の上位レイヤのシンタクス情報を保持している。スライスレベルシンタクス904は、スライス毎に必要な情報を保持し、マクロブロックレベルシンタクス907は、図7Aから図7Dに示されるマクロブロック毎に必要とされるデータを保持している。
各パートは、さらに詳細なシンタクスを含む。ハイレベルシンタクス901は、シーケンスパラメータセットシンタクス902及びピクチャパラメータセットシンタクス903などのシーケンス及びピクチャレベルのシンタクスを含む。スライスレベルシンタクス904は、スライスヘッダーシンタクス905及びスライスデータシンタクス906などを含む。さらに、マクロブロックレベルシンタクス907は、マクロブロックレイヤーシンタクス908及びマクロブロックプレディクションシンタクス909などを含む。
図23A及び図23Bは、マクロブロックレイヤーシンタクスの例を示している。図23A及び図23Bに示すavailable_block_numは、利用可能ブロックの数を示しており、これが1より大きい値の場合は、選択ブロック情報の復号化が必要となる。さらに、stds_idxは、選択ブロック情報を示しており、前述した利用可能ブロック数に応じた符号表を用いてstds_idxを符号化する。
図23Aは、mb_typeの後に選択ブロック情報を復号化する場合のシンタクスを示している。mb_typeが示す予測モードが定められたサイズや定められたモード(TARGET_MODE)の場合で、かつavailable_block_numが1より大きい値の場合に、stds_idxを復号化する。例えば、選択ブロックの動き情報が利用可能となるのが、ブロックサイズが64×64画素、32×32画素、16×16画素の場合や、ダイレクトモードの場合にstds_idxを符号化する。
図23Bは、mb_typeの前に選択ブロック情報を復号化する場合のシンタクスを示している。available_block_numが1より大きい値の場合に、stds_idxを復号化する。また、available_block_num が0ならば、H.264に代表される従来の動き補償を行うのでmb_typeを符号化する。
図23A及び図23Bに示す表の行間には、本発明で規定していないシンタクス要素が挿入されることも可能であるし、それ以外の条件分岐に関する記述が含まれていても構わない。或いは、シンタクステーブルを複数のテーブルに分割、統合することも可能である。また、必ずしも同一の用語を用いる必要は無く、利用する形態によって任意に変更しても構わない。更に、当該マクロブロックレイヤーシンタクスに記述されている各々のシンタクスエレメントは、後述するマクロブロックデータシンタクスに明記されるように変更しても構わない。
以上のように、本実施形態に係る画像復号化装置は、前述した第1の実施形態に係る画像符号化装置によって符号化された画像を復号化している。従って、本実施形態に係る画像復号化は、比較的小さな符号化データから高画質な復号画像を再生することができる。
(第4の実施形態)
図34は、第4の実施形態に係る画像復号化装置を概略的に示している。画像復号化装置は、図34に示されるように、画像復号化部400、復号化制御部350及び出力バッファ308を備える。第4の実施形態に係る画像復号化装置は、第2の実施形態に係る画像符号化装置に対応する。第4の実施形態では、第3の実施形態と異なる部分及び動作について主に説明する。本実施形態に係る画像復号化部400は、図34に示されるように、第3の実施形態とは符号化列復号化部401及び予測部405が異なる。
本実施の形態の予測部405は、選択ブロックが有する動き情報を用いて動き補償する予測方式(第1予測方式)と、H.264のような、復号化対象ブロックに対して1つの動きベクトルを用いて動き補償する予測方式(第2予測方式)と、を選択的に切り替えて、予測画像信号35を生成する。
図35は、符号化列復号化部401をより詳細に示すブロック図である。図35に示す符号化列復号化部401は、図32に示す符号化列復号化部301の構成に加えて、動き情報復号化部424を備えている。また、図35に示した選択ブロック復号化部423は、図32に示した選択ブロック復号化部323と異なり、選択ブロックに関する符号化データ80Cを復号化して、予測切替情報62を得る。予測切替情報62は、図1の画像符号化装置内の予測部101が第1及び第2予測方式のどちらを使用したかを示す。予測部101が第1予測方式を使用したことを予測切替情報62が示す場合、即ち、復号化対象ブロックが第1予測方式で符号化されている場合、選択ブロック復号化部423は、符号化データ80C中の選択ブロック情報を復号化して、選択ブロック情報61を得る。予測部101が第2予測方式を使用したことを予測切替情報62が示す場合、即ち、復号化対象ブロックが第2予測方式で符号化されている場合、選択ブロック復号化部423は選択ブロック情報を復号化せずに、動き情報復号化部424が符号化されている動き情報80Dを復号化し、動き情報40を得る。
図36は、予測部405をより詳細に示すブロック図である。図34に示した予測部405は、第1予測部305、第2予測部410及び予測方法切替スイッチ411を備えている。第2予測部410は、符号化列復号化部401によって復号化された動き情報40及び参照画像信号37を用いて、図33の動き補償部313と同様の動き補償予測を行い、予測画像信号35Bを生成する。第1予測部305は、第3の実施形態で説明した予測部305と同じであり、予測画像信号35Bを生成する。また、予測方法切替スイッチ411は、予測切替情報62に基づいて、第2予測部410からの予測画像信号35B及び第1予測部305からの予測画像信号35Aのうちのいずれか一方を選択して予測部405の予測画像信号35として出力する。同時に、予測方法切替スイッチ411は、選択された第1予測部305若しくは第2予測部410で用いられた動き情報を動き情報38として動き情報メモリ306に送る。
次に、本実施の形態に関するシンタクス構造について、第3の実施形態と異なる点を主に説明する。
図30A及び図30Bは、各々、本実施形態に係るマクロブロックレイヤーシンタクスの例を示している。図30Aに示されるavailable_block_numは、利用可能ブロックの数を示し、これが1より大きい値の場合、選択ブロック復号化部423は、符号化データ80C中の選択ブロック情報を復号化する。また、stds_flagは、動き補償予測において選択ブロックの動き情報を復号化対象ブロックの動き情報として使用したか否かを示すフラグ、即ち、予測方法切替スイッチ411が第1予測部305及び第2予測部410のどちらを選択したかを示すフラグである。利用可能ブロックの数が1より大きく、かつ、stds_flagが1である場合、選択ブロックが有する動き情報を動き補償予測に使用したことを示す。また、stds_flagが0の場合、選択ブロックが有する動き情報を利用せずに、H.264と同様に動き情報の情報を直接もしくは予測した差分値を符号化する。さらに、stds_idxは、選択ブロック情報を示しており、利用可能ブロック数に応じた符号表は、前述したとおりである。
図30Aは、mb_typeの後に選択ブロック情報を復号化する場合のシンタクスを示している。mb_typeが示す予測モードが定められたブロックサイズや定められたモードの場合にのみ、stds_flag及びstds_idxを復号化する。例えば、ブロックサイズが64×64、32×32、16×16である場合、或いは、ダイレクトモードの場合、stds_flag及びstds_idxを復号化する。
図30Bは、mb_typeの前に選択ブロック情報を復号化する場合のシンタクスを示している。例えばstds_flagが1である場合、mb_typeは復号化される必要はない。stds_flag が0である場合、mb_typeは復号化される。
以上のように、本実施形態に係る画像復号化装置は、前述した第2の実施形態に係る画像符号化装置によって符号化された画像を復号化している。従って、本実施形態に係る画像復号化は、比較的小さな符号化データから高画質な復号画像を再生することができる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても構わない。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても構わない。
この一例として、上述した第1から第4の実施形態を次のように変形しても同様の効果が得られる。
(1)第1から第4の実施形態では、処理対象フレームを16×16画素ブロックなどの矩形ブロックに分割し、図4に示したような画面左上の画素ブロックから右下の画素ブロックに向かう順序で、符号化又は復号化する場合を例にとって説明しているが、符号化又は復号化順序は、この例に制限されることはない。例えば、符号化又は復号化順序は、画面右下から左上に向かう順序でもよく、右上から左下に向かう順序でも構わない。また、符号化又は復号化順序は、画面の中央部から周辺部に渦巻状に向かう順序であってもよく、画面の周辺部から中心部に向かう順序であっても構わない。
(2)第1から第4の実施形態では、輝度信号と色差信号とを分割せず、一方の色信号成分に限定した場合を例にとって説明している。しかしながら、輝度信号及び色差信号に対して、異なる予測処理を使用してもよく、或いは、同一の予測処理を使用しても構わない。異なる予測処理を使用する場合、色差信号に対して選択した予測方法を、輝度信号と同様の方法で符号化/復号化する。
その他、本発明の要旨を逸脱しない範囲で種々の偏見を施しても同様に実施可能であることはいうまでもない。