以下、必要に応じて図面を参照しながら、実施形態に係る画像符号化方法及び画像復号化方法を説明する。なお、以降の説明において、「画像」という用語は、「映像」「画素」「画像信号」、「画像データ」などの用語として適宜読み替えることができる。また、以下の実施形態では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
(第1の実施形態)
図1は、第1の実施形態に係る画像符号化装置を概略的に示している。この画像符号化装置は、図1に示されるように、画像符号化部100、符号化制御部150及び出力バッファ110を備えている。図1の画像符号化装置は、LSIチップなどのハードウェアにより実現されてもよく、或いは、コンピュータに画像符号化プログラムを実行させることにより実現されてもよい。
画像符号化部100には、動画像又は静止画像の入力画像信号10が、例えば原画像を分割した画素ブロック単位で、入力される。画像符号化部100は、後に詳細に説明するように、入力画像信号10を圧縮符号化して符号化データ14を生成する。生成された符号化データ14は、出力バッファ110に一時的に格納され、符号化制御部150が管理する出力タイミングで、図示しない蓄積系(蓄積メディア)又は伝送系(通信回線)へ送出される。
符号化制御部150は、発生符号量のフィードバック制御、量子化制御、予測モード制御及びエントロピー符号化制御といった画像符号化部100の符号化処理全般を制御する。具体的には、符号化制御部150は、符号化制御情報50を画像符号化部100に与え、画像符号化部100からフィードバック情報51を適宜受け取る。符号化制御情報50には、予測情報、動き情報18及び量子化パラメータ情報などが含まれる。予測情報は、予測モード情報及びブロックサイズ情報を含む。動き情報18は、動きベクトル、参照フレーム番号及び予測方向(単方向予測、双方向予測)を含む。量子化パラメータ情報は、量子化幅(量子化ステップサイズ)等の量子化パラメータ及び量子化マトリクスを含む。フィードバック情報51は、画像符号化部100による発生符号量を含み、例えば、量子化パラメータを決定するのに使用される。
画像符号化部100は、画素ブロック(例えば、コーディングツリーユニット、マクロブロック、サブブロック、1画素など)を単位として入力画像信号10を符号化する。このため、入力画像信号10は、原画像を分割した画素ブロック単位で画像符号化部100へ順次に入力される。本実施形態では、符号化の処理単位がコーディングツリーユニットである例を説明し、符号化の対象になっているコーディングツリーユニットを符号化対象ブロックと称する。
なお、符号化の処理単位は、コーディングツリーユニットの例に限らず、マクロブロック、サブブロック又は1画素であってもよく、以下の説明において、コーディングツリーユニットをマクロブロック、サブブロック又は1画素と読み替えることが可能である。また、本実施形態では、符号化対象ブロックを含む画像フレーム、即ち、符号化対象の画像フレームを符号化対象フレームと称す。
コーディングツリーユニットは、典型的には、図2Aに示す128×128画素ブロック、図2Bに示す64×64画素ブロック、図2Cに示す32×32画素ブロック、図2Dに示す16×16画素ブロック、図2Eに示す8×8画素ブロック、又は図2Fに示す4×4画素ブロックである。
なお、コーディングツリーユニットは、図2Aから図2Fに示される画素ブロックの例に限らず、128×128画素ブロックより大きい画素ブロックであってもよく、4×4画素ブロックより小さい画素ブロックであってもよい。また、コーディングツリーユニットの形状は、図2Aから図2Fに示されるような正方形の例に限らず、32×16画素ブロックといった長方形状の画素ブロック(N×M画素ブロック)のように、任意形状に設定されてもよい。
図3Aから図3Dは、コーディングツリーユニットの具体例を示している。図3Aでは、64画素×64画素のコーディングツリーユニットCU0が示されている。本実施形態では、コーディングツリーユニットのサイズを2N画素×2N画素と定義する。このNは、基準となるコーディングツリーユニットのサイズを表す。図3AのコーディングツリーユニットCU0では、N=32である。
コーディングツリーユニットCU0は、四分木構造を持ち、N画素×N画素である4つの画素ブロックに分割することができる。コーディングツリーユニットが分割される場合、4つの画素ブロックに対してZスキャン順でインデックスが付与される。図3Bに、図3Aの64×64画素ブロックを四分木分割した例を示す。図3Bに示される0から3までの番号がZスキャンの順番を表している。さらに、コーディングツリーユニットでは、四分木分割されて得られた画素ブロックを再帰的に四分木分割することが可能である。本実施形態では、分割の深さをDepthで定義する。図3AのコーディングツリーユニットCU0は、Depth=0のコーディングツリーユニットである。
図3Cは、Depth=1のコーディングツリーユニットCU1を示す。このコーディングツリーユニットCU1のサイズは、32画素×32画素(N=16)である。コーディングツリーユニットCU1を四分木分割する場合、図3Dに示すように、16画素×16画素の4つの画素ブロックに分割される。同様に、Depth=2のコーディングツリーユニット(図示しない)のサイズは、16画素×16画素(N=8)であり、8画素×8画素の4つの画素ブロックに分割されることが可能である。このように分割の深さDepthが大きくなるほど、コーディングツリーユニットのサイズが小さくなる。
このようなコーディングツリーユニットのうちの最も大きいユニットをラージコーディングツリーユニットと称し、この単位で入力画像信号10が順次に入力されて符号化される。典型的な例では、ラージコーディングツリーユニットのサイズを64画素×64画素(N=32)、最小コーディングツリーユニットのサイズを8画素×8画素(N=4)として、コーディングツリーユニットを再帰的に四分木分割する。ラージコーディングツリーユニットのサイズ及び最小コーディングツリーユニットのサイズは、ラージコーディングツリーユニットのサイズが最小コーディングツリーユニットのサイズ以上であるという条件を満たせば、任意のサイズであってもよい。また、ラージコーディングツリーユニットのサイズ及び最小コーディングツリーユニットのサイズは、シーケンス、ピクチャ、スライス、及びスライス内の領域毎に変更してもよい。また、Iスライス、Bスライス、Pスライスといったスライスタイプに応じて、ラージコーディングツリーユニット及び最小コーディングツリーユニットのサイズを適応的に切り替えてもよい。
なお、符号化対象フレーム内の各コーディングツリーユニットに対する符号化処理は、いかなる順序で実行されてもよい。本実施形態では、説明を簡単にするために、図4に示すように、符号化対象フレームの左上のコーディングツリーユニットから右下のコーディングツリーユニットに向かって一行毎に、即ち、ラスタスキャン順に符号化処理が実行されるものとする。
本実施形態の画像符号化部100は、プレディクションユニットと称する画素ブロックを単位として、後述する予測処理を行うことができる。プレディクションユニットは、典型的には、コーディングツリーユニットと同一の画素ブロック、若しくはコーディングツリーユニットを分割した画素ブロックである。
なお、プレディクションユニットは、コーディングツリーユニットとは異なる形状の画素ブロックであってもよい。また、プレディクションユニットは、コーディングツリーユニットより大きいサイズの画素ブロックであってもよい。
図5Aから図5Iは、プレディクションユニットの具体例をそれぞれ示している。図5Aから図5Iでは、画素ブロックPUx(x=0,1,2,3)がプレディクションユニットを示す。図5Aは、プレディクションユニットとコーディングツリーユニットが同一のサイズである例を示している。この場合、コーディングツリーユニット内には1つのプレディクションユニットPU0が存在する。
図5Bから図5Iは、コーディングツリーユニット内に複数のプレディクションユニットが存在する例をそれぞれ示している。図5B及び図5Cでは、コーディングツリーユニット内に2つのプレディクションユニットPU0、PU1が存在する。図5Bでは、プレディクションユニットPU0、PU1は、コーディングツリーユニットを縦方向に2分割した画素ブロックであり、図5Cでは、プレディクションユニットPU0、PU1はコーディングツリーユニットを横に2分割した画素ブロックである。図5Dは、プレディクションユニットがコーディングツリーユニットを4分割した画素ブロックである例を示している。
なお、図5E、図5F及び図5Gに示されるように、コーディングツリーユニット内に存在する複数のプレディクションユニットのブロックサイズが異なってもよい。また、プレディクションユニットは、図5H及び図5Iに示されるように、コーディングツリーユニットを任意の線分、若しくは円弧などの曲線で分割して得られる形状の画素ブロックであってもよい。
次に、図1に示した画像符号化部100をより詳細に説明する。
図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による変換処理の逆変換処理に一致する。例えば、変換・量子化部103による変換処理がDCTであれば、逆量子化・逆変換部105による逆変換処理は、逆離散コサイン変換(IDCT:Inverse Discrete Cosine Transform)であり、また、変換・量子化部103による変換処理がウェーブレット変換であれば、逆量子化・逆変換部105による逆変換処理は、逆ウェーブレット変換である。
加算器106は、逆量子化・逆変換部105から復号予測誤差信号15を受け取り、さらに、予測部101から予測画像信号11を受け取る。加算器106は、復号予測誤差信号15と予測画像信号11とを加算して、局所復号画像信号16を生成する。生成された局所復号画像信号16は、フレームメモリ107に参照画像信号17として格納される。フレームメモリ107に格納されている参照画像信号17は、その後の符号化対象ブロックを符号化する際に、予測部101によって読み出されて参照される。
予測部101は、フレームメモリ107から参照画像信号17を受け取るとともに、後述する利用可能ブロック取得部109から利用可能ブロック情報20を受け取る。さらに、予測部101は、後述する動き情報メモリ108から参照動き情報19を受け取る。予測部101は、参照画像信号17、参照動き情報19及び利用可能ブロック情報20に基づいて、予測画像信号11、動き情報18、選択ブロック情報21及び予測切替情報22を生成する。予測画像信号11は、減算器102及び加算器106へ送出される。動き情報18は、可変長符号化部104に送出されるとともに、その後の符号化対象ブロックに対する予測処理のために、動き情報メモリ108に格納される。また、選択ブロック情報21及び予測切替情報22は、可変長符号化部104へ送出される。予測部101については、後に詳細に説明する。
動き情報メモリ108には、動き情報18が参照動き情報19として一時的に格納される。図6Aには、動き情報メモリ108の一例が示されている。図6Aに示されるように、動き情報メモリ108には、参照動き情報19がフレーム単位で保持されており、参照動き情報19が動き情報フレーム25を形成している。図6Aには、符号化対象フレームの動き情報フレーム25の一例が示されており、符号化済みのコーディングツリーユニット及びプレディクションユニットの動き情報18が参照動き情報19として格納されている。
また、図6Bは、動き情報メモリ108の他の例を示している。図6Bでは、符号化対象ブロックに隣接する画素ブロックの参照動き情報19のみが保持されている。このように符号化対象ブロックに隣接する画素ブロックの参照動き情報19のみを保持する場合、図6Aに示すような全ての符号化済みの画素ブロックの参照動き情報19を保持する場合より少ないメモリ量で済む。
参照動き情報19は、所定の領域単位(例えば、4×4画素ブロック単位)で動き情報フレーム25内に保持される。参照動き情報19は、その領域が後述するインター予測で符号化されたのか或いは後述するイントラ予測で符号化されたのかを示す情報をさらに有する。また、コーディングツリーユニット(又はプレディクションユニット)がH.264で規定されるスキップモード、ダイレクトモードのように、動きベクトルの値が符号化されず、符号化済みの領域から予測された動き情報を用いてインター予測される場合においても、当該コーディングツリーユニット(又はプレディクションユニット)の動き情報が参照動き情報19として保持される。
なお、動き情報メモリ108は、4×4画素ブロック単位で参照動き情報19を保持する例に限らず、他の画素ブロック単位で参照動き情報19を保持してもよい。例えば、参照動き情報19を保持する画素ブロック単位は、1画素であってもよく、2×2画素ブロックであってもよい。また、参照動き情報19を保持する画素ブロックの形状は、正方形状の例に限らず、任意形状とすることができる。
図1の可変長符号化部104は、変換・量子化部103から変換係数情報13を受け取り、予測部101から動き情報18、選択ブロック情報21及び予測切替情報22を受け取り、符号化制御部150から予測情報及び量子化パラメータなどの符号化パラメータを受け取り、さらに、利用可能ブロック取得部109から利用可能ブロック情報20を受け取る。可変長符号化部104は、変換係数情報13、動き情報18、選択ブロック情報21、予測切替情報22、及び符号化パラメータをそれぞれエントロピー符号化(例えば、等長符号化、ハフマン符号化又は算術符号化など)し、これらを多重化して符号化データ14を生成する。
具体的には、可変長符号化部104は、図7に示すように、パラメータ符号化部701、変換係数符号化部702、選択ブロック情報・予測切替情報符号化部703、動き情報符号化部704、並びに多重化部705を備える。パラメータ符号化部701は、符号化制御部150から受け取った符号化パラメータを符号化して符号化データ14Aを生成する。変換係数符号化部702は、変換・量子化部103から受け取った変換係数情報13を符号化して符号化データ14Bを生成する。
さらに、選択ブロック情報・予測切替情報符号化部703は、利用可能ブロック取得部109から受け取った利用可能ブロック情報20に基づいて、予測部101から受け取った選択ブロック情報21及び予測切替情報22を符号化して符号化データ14Cを生成する。動き情報符号化部704は、予測部101から受け取った予測切替情報22に基づいて、予測部101から受け取った動き情報18を符号化して符号化データ14Dを生成する。
多重化部705は、符号化データ14A、14B、14C、14Dを多重化して符号化データ14を生成する。生成された符号化データ14は、選択ブロック情報21、予測切替情報22及び予測情報とともに、変換係数に関する情報、量子化に関する情報などの復号の際に必要になるあらゆるパラメータを含む。符号化データ14は、出力バッファ110に一時的に格納され、その後に図示しない蓄積系又は伝送系へ送出される。
なお、予測処理を後述する第1予測部1001(図10に示される)が実行する場合には、動き情報符号化部704は使用されない。また、予測処理を後述する第2予測部1002(図10に示される)が実行する場合には、選択ブロック情報・予測切替情報符号化部703は使用されない。
次に、画像符号化部100の予測処理について説明する。
図1の画像符号化部100には、複数の予測モードが用意されており、各予測モードでは、予測画像信号11の生成方法及び動き補償ブロックサイズが互いに異なる。予測部101が予測画像信号11を生成する方法としては、具体的には大きく分けて、符号化対象フレーム(又は、フィールド)の参照画像信号17を用いて予測画像を生成するイントラ予測(フレーム内予測)と、1以上の符号化済みの参照フレーム(又は、参照フィールド)の参照画像信号17を用いて予測画像を生成するインター予測(フレーム間予測)とがある。予測部101は、イントラ予測及びインター予測を選択的に切り替えて、符号化対象ブロックの予測画像信号11を生成する。
図8Aは、インター予測の一例を示している。インター予測は、典型的にはプレディクションユニットの単位で実行され、プレディクションユニット単位で異なる動き情報18を有することが可能となる。インター予測では、図8Aに示されるように、既に符号化が完了している参照フレーム(例えば、1フレーム前の符号化済みフレーム)内の画素ブロックであって、符号化対象のプレディクションユニットと同じ位置のブロック23から、動き情報18に含まれる動きベクトルに応じて空間的にシフトした位置のブロック24の参照画像信号17を使用して、予測画像信号11が生成される。即ち、予測画像信号11の生成では、符号化対象ブロックの位置(座標)及び動き情報18に含まれる動きベクトルで特定される、参照フレーム内のブロック24の参照画像信号17が使用される。
インター予測では、少数画素精度(例えば、1/2画素精度又は1/4画素精度)の動き補償が可能であり、参照画像信号17に対してフィルタリング処理を行うことによって、補間画素の値が生成される。例えば、H.264では、輝度信号に対して1/4画素精度までの補間処理が可能である。1/4画素精度の動き補償を行う場合、動き情報18の情報量は、整数画素精度の4倍となる。当該補間処理は、H.264で規定されるフィルタリングの他に、任意のフィルタリングを用いることにより実行可能である。
なお、インター予測では、図8Aに示されるような1フレーム前の参照フレームを使用する例に限らず、図8Bに示されるように、いずれの符号化済みの参照フレームが使用されてもよい。時間位置が異なる複数の参照フレームの参照画像信号17が保持されている場合、どの時間位置の参照画像信号17から予測画像信号11を生成したかを示す情報は、参照フレーム番号で表される。参照フレーム番号は、動き情報18に含まれる。参照フレーム番号は、領域単位(ピクチャ、ブロック単位など)で変更することができる。即ち、プレディクションユニット毎に異なる参照フレームが使用されることができる。一例として、符号化済みの1フレーム前の参照フレームを予測に使用した場合、この領域の参照フレーム番号は、0に設定され、符号化済みの2フレーム前の参照フレームを予測に使用した場合、この領域の参照フレーム番号は、1に設定される。他の例として、1フレーム分だけの参照画像信号17がフレームメモリ107に保持されている(保持されている参照フレームの数が1つのみである)場合、参照フレーム番号は、常に0に設定される。
さらに、インター予測では、予め用意される複数のプレディクションユニットのサイズの中から符号化対象ブロックに適したサイズを選択して用いることができる。例えば、図5Aから図5Iに示されるようなコーディングツリーユニットを分割して得られるプレディクションユニット毎に動き補償を行うことが可能である。
前述したように、インター予測に使用する符号化対象フレーム内の符号化済みの画素ブロック(例えば、4×4画素ブロック)の動き情報18は参照動き情報19として保持されているので、入力画像信号10の局所的な性質に従って、最適な動き補償ブロックの形状及び動きベクトル、参照フレーム番号を利用することができる。また、コーディングツリーユニット及びプレディクションユニットは任意に組み合わせることができる。コーディングツリーユニットが64×64画素ブロックである場合、64×64画素ブロックを分割した4つのコーディングツリーユニット(32×32画素ブロック)の各々に対して、さらにコーディングツリーユニットを4つに分割することで階層的に64×64画素ブロックから16×16画素ブロックを利用することができる。同様にして、階層的に64×64画素ブロックから8×8画素ブロックを利用することができる。ここで、プレディクションユニットがコーディングツリーユニットを4つに分割したものであるとすれば、64×64画素ブロックから4×4画素ブロックまでの階層的な動き補償処理を実行することが可能となる。
次に、動き参照ブロック及び利用可能ブロックについて説明する。
動き参照ブロックは、図1の画像符号化装置及び後述する画像復号化装置の両方によって取り決められた方法に従って、符号化対象フレーム及び参照フレーム内の符号化済みのブロックの中から選択される。本実施形態では、図9Aに示すように、符号化対象フレームの符号化済みのブロックの中から、符号化対象ブロックXに対して左方向に隣接する符号化済みのブロックA、及び上方向に隣接する符号化済みのブロックBが動き参照ブロックとして選択される。これらのブロックA及びブロックBは、符号化対象ブロック内の左上画素から、図9Bに示す相対位置で特定される画素a、bがそれぞれ属するブロックである。即ち、ブロックAは、符号化対象ブロック内の左上画素と左方向に隣接する画素aを含むブロックであり、ブロックBは、符号化対象ブロック内の左上画素と上方向に隣接する画素bを含むブロックである。
利用可能ブロックは、利用可能ブロック取得部109によって動き参照ブロックの中から選定される。利用可能ブロックは、動き参照ブロックのうちのインター予測が適用されたブロックである。ただし、インター予測が適用され且つ同じ動き情報を有する動き参照ブロックが複数存在する場合、これらの動き参照ブロックのうちの1つが利用可能ブロックとして選定される。これにより、複数の利用可能ブロックが選定された場合、これらの利用可能ブロックは、互いに異なる動きベクトルを有することになる。
利用可能ブロック取得部109は、動き参照ブロックの中から利用可能ブロックを選定すると、選択した利用可能ブロックを示す利用可能ブロック情報20を出力する。一例として、図9Aに示されるように動き参照ブロックが符号化対象ブロックに隣接するブロックA及びブロックBである場合、利用可能ブロック取得部109は、ブロックA及びブロックBの参照動き情報19を参照してブロックA及びブロックBが利用可能ブロックであるか否かを判定し、判定結果を示す利用可能ブロック情報20を出力する。
なお、動き参照ブロックの数は、図9Aに示される2つの例に限らず、3以上であってもよい。一例として、動き参照ブロックとしては、図9Cに示すように、ブロックA及びブロックB以外の符号化済みの隣接ブロックC及びDが用いられる。図9Dには、符号化対象ブロックX内の左上画素と、図9DのブロックA、B、C、Dにそれぞれ含まれる画素a、b、c、dの相対位置の一例が示されている。ここでは、符号化対象ブロックは、N×N画素ブロックであるとして示されている。ブロックCは、符号化対象ブロックXの内の左上画素から右方向にN画素且つ上方向に1画素だけシフトした位置の画素cを含み、ブロックDは、符号化対象ブロックXの内の左上画素から左方向に1画素且つ上方向に1画素だけシフトした位置の画素dを含む。本実施形態では、図9Aに示されるような符号化対象ブロックに隣接するブロックA及びブロックBが動き参照ブロックとして選択される例を説明する。
次に、本実施形態の予測部101について詳細に説明する。
予測部101は、図10に示すように、第1予測部1001、第2予測部1002及び予測方法切替スイッチ1003を備えている。予測部101は、これら第1予測部1001及び第2予測部1002を選択的に切り替えて予測画像信号11を生成する。
第1予測部1001は、第1予測方式に従って予測画像信号11Aを生成する。具体的には、第1予測部1001は、利用可能ブロック情報20により示される利用可能ブロックの中から予測に用いるブロック(選択ブロック)を選択し、選択ブロックの参照動き情報19を用いて予測画像信号11Aを生成する。また、第1予測部1001は、選択ブロックに関する情報(選択ブロック情報)21を出力する。選択ブロック情報(選択情報ともいう)21は、利用可能ブロックの数及び選択ブロックを識別するための情報を含む。選択ブロック情報21は、利用可能ブロック情報20により示される利用可能ブロックの数に応じて予め定められた符号表を用いて、選択ブロック情報・予測切替情報符号化部703によって符号化される。
図11は、第1予測部1001をより詳細に示している。第1予測部1001は、図11に示されるように、動き情報選択部1101及び動き補償部1104を備えている。第1予測部1001は、利用可能ブロック情報20、参照動き情報19及び参照画像信号17を入力として、予測画像信号11A、動き情報18及び選択ブロック情報21を出力する。
図11に示されるように、動き情報選択部1101は、動き情報取得部1102及び動き情報切替スイッチ1103を備えている。動き情報取得部1102には、利用可能ブロック情報20、及び動き参照ブロックの参照動き情報19が与えられる。動き情報取得部1102は、動き参照ブロックAの参照動き情報19及び利用可能ブロック情報20を含む動き情報18A、及び動き参照ブロックBの参照動き情報19及び利用可能ブロック情報20を含む動き情報18Bを生成する。本実施形態では、図9Aに示されるように、動き参照ブロックAは、符号化対象ブロックに空間的に左方向に隣接するブロックであり、即ち、符号化対象フレームにおいて符号化対象ブロックの左方向に隣接するブロックである。また、動き参照ブロックBは、符号化対象ブロックに空間的に上方向に隣接するブロックであり、即ち、符号化対象フレームにおいて符号化対象ブロックの上方向に隣接するブロックである。
動き情報取得部1102は、利用可能ブロックの数に一致する数だけ動き情報を出力する。本実施形態のように2つの動き参照ブロックA及びBが設定される場合、最大で2つの動き情報が出力される。例えば、動き参照ブロックA及びBの両方が利用可能ブロックとして選定されれば、動き情報18A及び18Bが出力され、動き参照ブロックA及びBの両方とも利用可能ブロックとして選定されなければ動き情報は出力されない。また、図9Cに示されるように動き参照ブロックが4つ設定される場合、利用可能ブロックの数に応じて最大4つの動き情報が出力される。
動き情報切替スイッチ1103は、利用可能ブロックの中から1つの選択ブロックを選択することにより、動き情報18A及び18Bのいずれか一方を動き情報18として動き補償部1104へ送出する。さらに、動き情報切替スイッチ1103は、どの利用可能ブロックを選択ブロックとして選択したかを示す選択ブロック情報21を出力する。動き情報切替スイッチ1103は、例えば、下記数式(1)に示すコスト式によって導出される符号化コストが最小になる利用可能ブロックを選択ブロックとして選択する。
ここで、Jは符号化コストを示し、Dは入力画像信号10と参照画像信号17との間の二乗誤差和を表す符号化歪みを示す。また、Rは仮符号化によって見積もられる符号量を示し、λは。量子化幅等によって定められるラグランジュ未定係数を示す。数式(1)に代えて、符号量R又は符号化歪みDのみを使用して、符号化コストJを算出してもよく、符号量R又は符号化歪みDを近似した値を使用して数式(1)のコスト関数を作成してもよい。さらに、符号化歪みDは、二乗誤差和に限らず、予測誤差の絶対値和(SAD:sums of absolute difference)であっても構わない。符号量Rは、動き情報に関する符号量のみを使用してもよい。また、符号化コストが最小になる利用可能ブロックが選択ブロックとして選択される例に限定されず、符号化コストが最も小さい値以上のある範囲内の値を有する1つの利用可能ブロックが選択ブロックとして選択されてもよい。
動き補償部1104は、動き情報選択部1101が選択した選択ブロックの参照動き情報(又は、参照動き情報の群)に基づいて、参照画像信号17が予測画像信号として取り出される画素ブロックの位置を導出する。動き補償部1104に参照動き情報の群が入力された場合、動き補償部1104は、参照画像信号17が予測画像信号として取り出される画素ブロックを小画素ブロック(例えば、4×4画素ブロック)に分割し、かつ、これら小画素ブロックの各々に、対応する参照動き情報を適用することによって、参照画像信号17から予測画像信号11Aを取得する。予測画像信号11Aが取得されるブロックの位置は、例えば図8Aに示されるように、小画素ブロックから、参照動き情報19に含まれる動きベクトルに応じて空間方向にシフトした位置となる。
このように、動き補償部1104は、動き情報選択部1101からの参照動き情報(参照動き情報19A及び19Bの一方)及びフレームメモリ107からの参照画像信号17を使用して、予測画像信号11Aを生成する。ただし、利用可能ブロックが1つも選定されない場合、第1予測部1001では予測処理が行なわれず、次に説明する第2予測部1002でのみ予測処理が行われることになる。
図10の第2予測部1002は、入力画像信号10及び参照画像信号17から動き情報18を導出して動き補償する第2予測方式に従って、符号化対象ブロックの予測画像信号11Bを生成する。第2予測部1002は、図12に示すように、入力画像信号10及び参照画像信号17を使用して動き情報18を生成する動き情報取得部1201、並びに、参照画像信号17及び動き情報18を使用して予測画像信号11Bを生成する動き補償部1202を備えている。この動き情報取得部1201は、入力画像信号10及び参照画像信号17に基づいて、例えばブロックマッチングによって、符号化対象ブロックに割り当てるべき動きベクトル及び参照フレーム番号を含む動き情報18を求める。マッチングの評価基準としては、入力画像信号10とマッチング後の補間画像との差分を画素毎に累積した値を用いることができる。
予測部101では、図10の予測方法切替スイッチ1003によって、第1予測部1001からの予測画像信号11A及び第2予測部1002からの予測画像信号11Bのいずれか一方が選択される。例えば、予測方法切替スイッチ1003は、予測画像信号11A及び11Bの各々について、入力画像信号10を使用して、例えば数式(1)に従って、符号化コストを求め、符号化コストがより小さくなるように、予測画像信号11A及び11Bのいずれか一方を選択して予測画像信号11として出力する。さらに、予測方法切替スイッチ1003は、予測画像信号11の生成に使用された動き情報18とともに、予測画像信号11が第1予測部1001及び第2予測部1002のいずれにより生成されたかを示す予測切替情報22をさらに出力する。また、予測方法切替スイッチ1003は、予測画像信号11Aを選択した場合、選択ブロック情報21をさらに出力する。
動き補償部1104及び1202による動き補償処理は、H.264の動き補償処理と同様のものを使用することができる。ここでは、一例として、1/4画素精度の補間手法を具体的に説明する。1/4画素精度の補間では、動きベクトルの各成分が4の倍数である場合、動きベクトルは、整数画素位置を指し示す。それ以外の場合、動きベクトルは、分数精度の補間位置に対応する予測位置を指し示す。
ここで、x及びyは、予測対象ブロックの先頭位置(例えば、左上頂点)を示す垂直及び水平方向のインデクスを示し、x_pos及びy_posは、参照画像信号17の対応する予測位置を示す。(mv_x,mv_y)は、1/4画素精度を持つ動きベクトルを示す。次に、割り出した画素位置に対して、参照画像信号17の対応する画素位置の補填又は補間処理によって予測画素を生成する。図13に、H.264の予測画素生成の一例が示されている。図13において大文字のアルファベットで示される正方形(斜線が施された正方形)は、整数位置の画素を示しており、網掛けで表示されている正方形は、1/2画素位置の補間画素を示している。また、白塗りで表示された正方形は1/4画素位置に対応する補間画素を示している。例えば、図13において、アルファベットb、hの位置に対応する1/2画素の補間処理は、下記数式(3)で算出される。
ここで、数式(3)及び下記数式(4)に示されるアルファベット(例えば、b,h,C1等)は、図13において同じアルファベットを付与された画素の画素値を示す。また、「>>」は、右シフト演算を示し、「>> 5」は、32で除算することに相当する。即ち、1/2画素位置の補間画素は、6タップFIR(Finite Impulse Response)フィルタ(タップ係数:(1,−5,20,20,−5,1)/32)を用いて算出される。
また、図13でアルファベットa、dの位置に対応する1/4画素の補間処理は、下記数式(4)で算出される。
このように、1/4画素位置の補間画素は、2タップの平均値フィルタ(タップ係数:(1/2,1/2))を用いて算出される。4つの整数画素位置の中間に存在するアルファベットjに対応する1/2画素の補間処理は、垂直方向6タップ及び水平方向6タップの両方向を用いて生成される。説明した以外の画素位置に対しても同様の方法で、補間画素値が生成される。
なお、補間処理は、数式(3)及び数式(4)の例に限らず、他の補間係数を用いて生成されても構わない。また、補間係数は、符号化制御部150から与えられる固定の値を用いてもよく、或いは、前述の符号化コストに基づいて、フレーム毎に補間係数を最適化し、最適化された補間係数を用いて生成されてもよい。
次に、図14を参照して予測部101の動作を説明する。
図14のステップS1401では、符号化対象ブロックに隣接する動き参照ブロック(例えば、図9AのブロックA及びブロックB)に適用された予測方法がイントラ予測であるか、インター予測であるか、或いは、これらの動き参照ブロックが画面外や符号化前の領域といった参照不可能なブロックであるかを判定する。インター予測が適用されたブロックは参照動き情報19を有しているので、参照動き情報19の有無によりインター予測が適用されたブロックであるか否かを判定することが可能である。ステップS1401においてブロックA及びBの両方ともイントラ予測が適用され若しくは参照不可能である場合、ステップS1405に進み、この場合、利用可能ブロックは1つも選定されない。利用可能ブロックが選定されない場合、第1予測部101による予測処理は実行不可能であり、ステップS1413に進む。
ステップS1413では、第2予測部1002が、H.264等で規定されるブロックマッチングなどにより導出した動き情報18を用いて動き補償処理を行う。利用可能ブロックが選定されない場合、第2予測部1002のみが使用されるために、第1予測部1001及び第2予測部1002を切り替える情報である予測切替情報(merge_flag)22、及び選択ブロック情報(merge_left_flag)21を符号化する必要はない。
ステップS1401において動き参照ブロックA及びBのいずれか一方にインター予測が適用されている場合、ステップS1404に進む。ステップS1404では、インター予測が適用された一方の動き参照ブロックが利用可能ブロックとして選定される。この利用可能ブロックをブロックY(YはA又はB)とする。
ステップS1407では、第1予測部1001を用いて動き補償を行うか否かが判定される。具体的には、符号化対象ブロックに対してブロックYの参照動き情報19を適用して動き補償を行うか、第2予測部1002を用いて動き補償を行うかを、予測切替情報(merge_flag)22を用いて切り替える。予測切替情報22が第1予測部1001の使用を示す(merge_flagがTRUEである)場合、ステップS1412に進む。ステップS1412では、第1予測部1001が、ブロックYの参照動き情報19を用いて、動き補償処理を行う。
ステップS1407において予測切替情報22が第2予測部1002の使用を示す(merge_flagがFALSEである)場合、ステップS1413に進む。ステップS1413では、上述したように第2予測部1002が動き補償を行う。一例として、この切替では、数式(1)で示される符号化コストを計算し、符号化コストが小さくなる方が選択される。
ステップS1401において、動き参照ブロックA及びBの両方ともにインター予測が適用されている場合、ステップS1402に進む。ステップS1402では、動き参照ブロックA及びブロックBの参照動き情報19が同一であるか否かが判定される。動き参照ブロックA及びブロックBの参照動き情報19が同一である場合、ステップS1404に進む。ステップS1404では、動き参照ブロックA及びブロックBのうちの一方が利用可能ブロックYとして選定される。これ以降の処理は上述の通りである。
ステップS1402において動き参照ブロックA及びブロックBの参照動き情報19が異なる場合、ステップS1403に進む。この場合、ステップS1403では、2つの利用可能ブロックが選定される。次に、ステップS1406では、第1予測部1002を用いて動き補償を行うか否かが判定される。具体的には、第1予測部1002を用いて動き補償を行うか、或いは、第2予測部1002を用いて動き補償を行うかを、予測切替情報(merge_flag)22を用いて切り替える。予測切替情報22が第2予測部1002の使用を示す(merge_flagがFALSEである)場合、ステップS1413に進み、第2予測部1002が動き補償を行う。
ステップS1406において、予測切替情報22が第1予測部1001の使用を示す(merge_flagがTRUEである)場合、ステップS1409に進む。ステップS1409では、第1予測部1001の予測処理に動き参照ブロックAを使用するか否かが判定される。具体的には、選択ブロック情報(merge_left_flag)21に基づいて、動き参照ブロックAを用いるか、動き参照ブロックBを用いるかを判定する。一例として、この切替には、数式(1)で示される符号化コストを計算し、符号化コストが小さくなる方が選択される。
動き参照ブロックAを使用する(merge_left_flagがTRUEである)場合、ステップS1410に進む。ステップS1410では、第1予測部1002が、動き参照ブロックAの参照動き情報19を符号化対象ブロックの動き情報18として用いて動き補償処理を行う。一方、動き参照ブロックBを用いる(merge_left_flagがFALSE)場合、ステップS1411に進む。ステップS1411では、第1予測部1001が、動き参照ブロックBの参照動き情報19を符号化対象ブロックの動き情報18として用いて動き補償処理を行う。
このように、利用可能ブロックの数に応じて、予測方法を切り替えるとともに、予測切替情報及び選択ブロック情報の符号化の有無を切り替えることにより、少ない符号量で効率の良い予測方法を実現することができる。
次に、図1の画像符号化装置が利用するシンタクスについて説明する。
シンタクスは、画像符号化装置が動画像データを符号化する際の符号化データ(例えば、図1の符号化データ14)の構造を示す。符号化データを復号化する際には、同じシンタクス構造を参照して画像復号化装置がシンタクス解釈を行う。図1の画像符号化装置が利用するシンタクス1500の一例を図15に示す。
シンタクス1500は、ハイレベルシンタクス1501、スライスレベルシンタクス1502及びコーディングツリーレベルシンタクス1503の3つのパートを含む。ハイレベルシンタクス1501は、スライスよりも上位のレイヤのシンタクス情報を含む。スライスとは、フレーム又はフィールドに含まれる矩形領域若しくは連続領域を指す。スライスレベルシンタクス1502は、各スライスを復号化するために必要な情報を含む。コーディングツリーレベルシンタクス1503は、各コーディングツリーユニットを復号化するために必要な情報を含む。これらのパートの各々は、さらに詳細なシンタクスを含む。
ハイレベルシンタクス1501は、シーケンスパラメータセットシンタクス1504及びピクチャパラメータセットシンタクス1505などのようなシーケンス及びピクチャレベルのシンタクスを含む。スライスレベルシンタクス1502は、スライスヘッダーシンタクス1506及びスライスデータシンタクス1507などを含む。コーディングツリーレベルシンタクス1503は、コーディングツリーユニットシンタクス1508及びプレディクションユニットシンタクス1509などを含む。
コーディングツリーユニットシンタクス1508は、四分木構造を持つことができる。具体的には、コーディングツリーユニットシンタクス1508のシンタクス要素として、さらにコーディングツリーユニットシンタクス1508を再帰呼び出しすることができる。即ち、1つのコーディングツリーユニットを四分木で細分化することができる。また、コーディングツリーユニットシンタクス1508内には、トランスフォームユニットシンタクス1510及びプレディクションユニットシンタクス1509が含まれている。トランスフォームユニットシンタクス1510は、逆直交変換及び量子化などに関わる情報が記述されており、四分木の最末端の各コーディングツリーユニットシンタクス1508において呼び出される。
図16は、本実施形態に係るシーケンスパラメータセットシンタクス1504の一例を示す。図16に示されるinter_merge_flagは、例えば、そのシーケンスにおいて本実施形態の第1予測方式が有効か無効かを示すシンタクス要素である。inter_merge_flagが0である場合、inter_merge_flagはスライス内では第1予測方式が無効であることを示す。この場合、第2予測方式のみが有効となる。従って、以降のmerge_flag及びmerge_left_flagは符号化する必要はない。一例として、inter_merge_flagが1である場合には、スライス内全域で本実施形態に係る第1予測方式が有効となる。
なお、他の例では、図17に示すように、inter_merge_flagがスライスヘッダーシンタクス1506に含まれてもよい。この場合、inter_merge_flagは、そのスライスにおいて第1予測方式が有効か無効かを示すシンタクス要素となる。
図18に、コーディングツリーユニットシンタクス1508の一例を示す。図18に示されるsplit_coding_unit_flagは、コーディングツリーユニットが4分割されるか否かを示すフラグである。split_coding_unit_flagが1である場合、split_coding_unit_flagはコーディングツリーユニットが4分割されることを示す。この場合、コーディングツリーユニットを4分割して得られるコーディングツリーユニットのシンタクスが再帰的に呼び出される。図18のx0、x1y0、y1は4分割されたコーディングツリーユニットの位置を示すために使用されるパラメータであり、splitCodingUnitSizeは、4分割されたコーディングツリーユニットのサイズを示す。
split_coding_unit_flagが0である場合、split_coding_unit_flagは、コーディングツリーユニットが4分割されないことを示す。NumMergeCandidatesは、図14などで導出される利用可能ブロックの数を示す。利用可能ブロックが存在する(NumMergeCandidates>0)場合、予測切替情報22を示すmerge_flagが符号化される。merge_flagは、その値が1である場合、第1予測方式を用いることを示し、その値が0である場合、第2予測方式を用いることを示す。merge_flagが1(TRUE)且つ利用可能ブロックが2つ存在する(NumMergeCandidates>1)場合、動き参照ブロックA及び動き参照ブロックBのどちらを選択ブロックとしたかを示す選択ブロック情報21であるmerge_left_flagが符号化される。merge_flagが0である場合、第2予測方式を用いるため、プレディクションユニットシンタクスが呼び出され、コーディングツリーユニットにおける予測情報(動き情報18など)が符号化される。
merge_flagが1である場合、コーディングツリーユニットにおける予測に関するパラメータ(動き情報18、プレディクションユニット分割情報など)は符号化する必要はない。
なお、図19に示されるように、プレディクションユニットシンタクスにmerge_flag及びmerge_left_flagが含まれてもよく、この場合にも、merge_flag及びmerge_left_flagは図18のmerge_flag及びmerge_left_flagと同様の意味を持つ。
また、図9Cに示されるように動き参照ブロック数が3以上で、利用可能ブロックも数が3以上となる場合には、選択ブロック情報(merge_left_flag)がフラグではなく、複数のシンボルを有する情報とすればよい。
さらに、コーディングツリーユニット(符号化対象ブロック)のサイズに従って、第1予測方式が有効か無効かの切替を行ってもよい。図20は、コーディングツリーユニットのサイズによって第1予測方式が有効か無効かを切り替えるコーディングツリーシンタクスの一例を示している。図20のmerge_available_size()は、符号化対象ブロックのサイズ(currCodingUnitSize)毎の第1予測方式の有効/無効を出力する関数であり、即ち、符号化対象ブロックのサイズに応じて予測切替情報(merge_flag)を符号化するか否かを示すモード符号化情報である。merge_available_size()が1の場合、第1予測方式は有効となる。一方、merge_available_size()が0の場合、第1予測方式は無効となり、第2予測方式のみが有効となる。この場合merge_flag及びmerge_left_flagは、符号化する必要はない。merge_available_size()における切替の情報は、シーケンスパラメータセットシンタクス、ピクチャパラメータセットシンタクス、スライスヘッダーシンタクスにより、予め符号化されていてもよい。また、後述する復号化装置と同一の切替情報を保持しておいてもよい。他の実施形態では、merge_available_size()を0にする代わりに、図18に示されるNumMergeCandidatesを常にゼロとしてもよい。
図20のコーディングツリーシンタクスを使用すると、特定のサイズのコーディングツリーユニットでは第1予測方式を無効にすることが可能となり、予測切替情報及び選択ブロック情報の符号量を削減することができる。
以上のように、第1の実施形態に係る画像符号化装置は、複数の動き参照ブロックから利用可能ブロックを選択し、選択した利用可能ブロックの数に応じて、予測切替情報及び選択ブロック情報の符号化の有無を切り替えることにより、符号量を削減することができ、また、高い符号化効率を実現することができる。さらに、第1の実施形態に係る画像符号化装置においては、符号化対象ブロックのサイズに応じて第1予測方式を使用するか否かを決定し、第1予測方式を使用しないと決定された場合には、予測切替情報及び選択ブロック情報を符号化する必要がないので、符号量を削減することができる。
(第2の実施形態)
次に、第2の実施形態に係る画像符号化装置を説明する。第2の実施形態の画像符号化装置は、図1に示される第1の実施形態と同様の構成を有する。第2の実施形態では、第1の実施形態と異なる部分及び動作について主に説明する。第1の実施形態では、符号化対象のコーディングツリーユニットに対して、第1予測方式を適用しているのに対し、第2の実施形態では、符号化対象のプレディクションユニットに対して、第1予測方式を適用する。本実施形態では、図9Aに示されるブロックXが符号化対象のプレディクションユニットとなり、ブロックA及びブロックBが動き参照ブロックとなる。その他に、利用可能ブロック及び選択ブロックについては、第1の実施形態の第1予測方式に関する記載においてコーディングツリーユニットをプレディクションユニットに置き換えればよい。
図21は、第2の実施形態に係るプレディクションユニットシンタクス1509の一例を示す。図21に示されるNumPuParts(inter_partitioning_idc)は、プレディクションユニットの分割方法を規定するインデクスである。具体的には、NumPuParts(inter_partitioning_idc)は、図5Aから図5Iに示されるように分割されたプレディクションユニットの数を示す。図5Bの例では、NumPuPartsは2となり、図5Dの例では、NumPuPartsは4となる。図21の変数iは、分割されたプレディクションユニットのインデクスである。図21のNumMergeCandidatesは、プレディクションユニットiにおける利用可能ブロックの数である。図21のmerge_flag[i]及びmerge_left_flag[i]は、プレディクションユニットiにおける予測切替情報及び選択ブロック情報をそれぞれ示し、その導出方法は、第1の実施形態と同様である。
以上のように、プレディクションユニットに第1予測方式を適用する第2の実施形態に係る画像符号化装置においても、第1の実施形態と同様の効果を得ることができる。
(第3の実施形態)
図22は、第3の実施形態に係る画像復号化装置を概略的に示している。この画像復号化装置は、図22に示されるように、画像復号化部2200、復号化制御部2250及び出力バッファ2208を備えている。第3の実施形態に係る画像復号化装置は、第1の実施形態に係る画像符号化装置に対応する。即ち、図22の画像復号化装置による復号処理は、図1の画像符号化処理による符号化処理と相補的な関係を有している。図22の画像復号化装置は、LSIチップなどのハードウェアにより実現されてもよく、或いは、コンピュータに画像復号化プログラムを実行させることにより実現されてもよい。
図22の画像復号化装置は、画像復号化部2200、復号化制御部2250及び出力バッファ2208を備えている。この画像復号化部2200は、符号化列復号化部2201、逆量子化・逆変換部2202、加算器2203、フレームメモリ2204、予測部2205、動き情報メモリ2206及び利用可能ブロック取得部2207を備えている。画像復号化部2200において、図示しない蓄積系又は伝送系からの符号化データ30は、符号化列復号化部2201に与えられる。この符号化データ30は、例えば、図1の画像符号化装置から多重化された状態で送出された符号化データ14に対応する。
図22の画像復号化装置は、図9Aに示されるように復号化対象ブロックXに隣接するブロックA及びブロックBが有する参照動き情報を復号化対象ブロックXの動き情報として用いて動き補償する予測方式(第1予測方式)と、H.264のような、復号化対象ブロックに対して1つの動きベクトルを用いて動き補償する予測方式(第2予測方式)とを選択的に切り替えて、符号化データ30を復号化する。
本実施形態では、復号化対象である画素ブロック(例えば、コーディングツリーユニット、プレディクションユニット、マクロブロック、1画素など)を復号化対象ブロックと称す。また、復号化対象ブロックを含む画像フレームを復号化対象フレームと称す。
符号化列復号化部2201では、1フレーム又は1フィールド毎に、シンタクスに基づいて構文解析による解読が行われる。具体的には、符号化列復号化部2201は、各シンタクスの符号列を順次に可変長復号化し、動き情報40、予測切替情報62、選択ブロック情報61、変換係数33、並びにブロックサイズ情報及び予測モード情報などの予測情報を含む、復号化対象ブロックに関する符号化パラメータなどを復号化して復号化パラメータを得る。
本実施形態では、復号化パラメータは、変換係数33、選択ブロック情報61及び予測情報を含み、変換係数に関する情報、量子化に関する情報などの復号化の際に必要になるあらゆるパラメータを含む。予測情報、変換係数に関する情報、及び量子化に関する情報は、制御情報71として復号化制御部2250へ与えられる。復号化制御部2250は、予測情報及び量子化パラメータなどの復号化に必要なパラメータを含む復号化制御情報70を、画像復号化部2200の各部に与える。
図23は、符号化列復号化部2201をより詳細に示している。符号化列復号化部2201は、図23に示されるように、分離部2301、パラメータ復号化部2302、変換係数復号化部2303、予測切替情報・選択ブロック情報復号化部2304及び動き情報復号化部2305を備えている。
分離部2301は、符号化データ30をシンタクス単位に分離して、ブロックサイズ及び量子化に関するパラメータを含む符号化データ30A、変換係数情報を含む符号化データ30B、予測情報及び選択ブロック情報を含む符号化データ30C、動き情報を含む符号化データ30Dを生成する。
パラメータ復号化部2302は、符号化データ30Aを復号化してブロックサイズ情報及び量子化に関するパラメータなどを得る。変換係数復号化部2303は、符号化データ30Bを復号化して変換係数情報31を得る。予測切替情報・選択ブロック情報復号化部2304は、符号化データ30Cを復号化して選択ブロック情報61及び予測切替情報62を得る。
予測切替情報・選択ブロック情報復号化部2304は、利用可能ブロック取得部2207から、利用可能ブロックの数を示す利用可能ブロック情報60を受け取り、利用可能ブロックの数に応じて予め定められた符号表を用いて選択ブロック情報61を復号化する。ただし、利用可能ブロックが1つも選定されてないことを利用可能ブロック情報60が示す場合、予測切替情報・選択ブロック情報復号化部2304は、予測切替情報62及び利用可能ブロック情報60を含む符号化データCを復号化する必要がない。
動き情報復号化部2305は、符号化データ30Dを復号化して動き情報40を得る。動き情報復号化部2305は、予測切替情報・選択ブロック情報復号化部2304から予測切替情報62を受け取って参照する。図1の予測部101が第2予測方式を使用したことを予測切替情報62が示す場合、即ち、復号化対象ブロックが第2予測方式で符号化されている場合、予測切替情報・選択ブロック情報復号化部2304は、符号化データCを復号化する必要がない。
変換係数復号化部2303によって解読された変換係数情報31は、逆量子化・逆変換部2202へ送出される。また、パラメータ復号化部2302によって解読された量子化に関する種々の制御情報(例えば量子化パラメータ及び量子化マトリクス)71は、復号化制御部2250に与えられ、逆量子化する際に逆量子化・逆変換部2202にロードされる。逆量子化・逆変換部2202は、ロードされた量子化に関する情報に従って、変換係数情報31を逆量子化し、続いて逆変換処理(例えば、逆離散コサイン変換など)を施して、予測誤差信号34を生成する。図22の逆量子化・逆変換部2202による逆変換処理は、図1の変換・量子化部103による変換処理の逆変換である。例えば、図1の画像符号化装置によりウェーブレット変換が施される場合、逆量子化・逆変換部2202は、逆量子化及び逆ウェーブレット変換を実行する。
逆量子化・逆変換部2202によって復元された予測誤差信号34は、加算器2203へ送出される。加算器2203は、逆量子化・逆変換部2202からの予測誤差信号34と、後述する予測部2205で生成された予測画像信号35とを加算して、復号画像信号36を生成する。生成された復号画像信号36は、画像復号化部2200から出力されて、出力バッファ2208に一旦蓄積された後、復号化制御部2250が管理する出力タイミングに従って、出力される。また、復号画像信号36は、フレームメモリ2204に参照画像信号37として格納される。参照画像信号37は、予測部2205によってフレーム毎或いはフィールド毎に適宜読み出される。
利用可能ブロック取得部2207は、後述する動き情報メモリ2206から参照動き情報39を受け取り、利用可能ブロック情報60を出力する。利用可能ブロック取得部2207の動作は、第1の実施形態で説明した利用可能ブロック取得部109(図1)と同様であるので、その説明を省略する。
動き情報メモリ2206は、予測部2205から動き情報38を受け取り、参照動き情報39として一時的に格納する。動き情報メモリ2206は、図6Aを参照して上述した動き情報メモリ108と同様の方法で参照動き情報39を格納する。即ち、動き情報メモリ2206には、参照動き情報39がフレーム単位で保持されており、復号化済みのコーディングツリーユニット及びプレディクションユニットの動き情報38が参照動き情報39として格納されている。
なお、動き情報メモリ2206は、図6Bを参照して上述した動き情報メモリ108と同様の方法で参照動き情報39を格納してもよい。即ち、復号化対象ブロックに隣接する画素ブロックの参照動き情報39のみが保持されてもよい。
次に、動き参照ブロック及び利用可能ブロックについて説明する。
動き参照ブロックは、図1の画像符号化装置及び図22の画像復号化装置の両方によって取り決められた方法に従って、復号化対象フレーム及び参照フレーム内の復号化済みのブロックの中から選択される。本実施形態では、図9Aに示すように、復号化対象フレームの復号化済みのブロックの中から、復号化対象ブロックXに対して左方向に隣接する復号化済みのブロックA、及び上方向に隣接する復号化済みのブロックBが動き参照ブロックとして選択される。これらのブロックA及びブロックBは、復号化対象ブロック内の左上画素から、図9Bに示す相対位置で特定される画素a、bがそれぞれ属するブロックである。即ち、ブロックAは、復号化対象ブロック内の左上画素と左方向に隣接する画素aを含むブロックであり、ブロックBは、復号化対象ブロック内の左上画素と上方向に隣接する画素bを含むブロックである。
なお、動き参照ブロックの数は、図9Aに示される2つの例に限らず、3以上であってもよい。一例として、動き参照ブロックとしては、図9Cに示すように、ブロックA及びブロックB以外の復号化済みの隣接ブロックC及びDが用いられる。図9Dには、復号化対象ブロックX内の左上画素と、図9DのブロックA、B、C、Dにそれぞれ含まれる画素a、b、c、dの相対位置の一例が示されている。ここでは、復号化対象ブロックは、N×N画素ブロックであるとして示されている。ブロックCは、復号化対象ブロックXの内の左上画素から右方向にN画素且つ上方向に1画素だけシフトした位置の画素cを含み、ブロックDは、復号化対象ブロックXの内の左上画素から左方向に1画素且つ上方向に1画素だけシフトした位置の画素dを含む。本実施形態では、動き参照ブロックを図9Aに示されるブロックA及びブロックBとする例を説明する。
利用可能ブロックは、利用可能ブロック取得部2207によって動き参照ブロックの中から選定される。利用可能ブロックは、動き参照ブロックのうちのインター予測が適用されたブロックである。ただし、インター予測が適用され且つ同じ動き情報を有する動き参照ブロックが複数存在する場合、これらの動き参照ブロックのうちの1つが利用可能ブロックとして選定される。これにより、複数の利用可能ブロックが選定された場合、これらの利用可能ブロックは、互いに異なる動きベクトルを有している。
利用可能ブロック取得部2207は、動き参照ブロックの中から利用可能ブロックを選定すると、選定した利用可能ブロックを示す利用可能ブロック情報60を出力する。一例として、図9Aに示されるように動き参照ブロックが復号化対象ブロックに隣接するブロックA及びブロックBである場合、利用可能ブロック取得部2207は、ブロックA及びブロックBの参照動き情報39を参照してブロックA及びブロックBが利用可能ブロックであるか否かを判定し、判定結果を示す利用可能ブロック情報60を出力する。
次に、図24を参照して、予測部2205を詳細に説明する。
図24に示されるように、予測部2205は、第1予測部2401、第2予測部2402及び予測方法切替スイッチ2403を備えている。第1予測部2401は、利用可能ブロック情報60、選択ブロック情報61、参照動き情報39及び参照画像信号37を入力として、第1予測方式に従って予測画像信号35Aを生成する。第2予測部2402は、参照画像信号37及び符号化列復号化部2201からの動き情報40を用いて、第1の実施形態で説明した第2予測部1002と同様に動き補償予測を行い、予測画像信号35Bを生成する。予測方法切替スイッチ2403は、予測切替情報62に基づいて、第1予測部2401からの予測画像信号35A及び第2予測部2402からの予測画像信号35Bのうちの一方を選択して予測画像信号35として出力する。同時に、動き情報切替スイッチ2503は、選択した第1予測部2401又は第2予測部2402で用いられた動き情報を動き情報38として動き情報メモリ2206に送出する。
第1予測部2401は、図25に示すように、動き情報選択部2501及び動き補償部2504を備え、動き情報選択部2501は、動き情報取得部2502及び動き情報切替スイッチ2503を備える。第1予測部2401は、基本的には、第1の実施形態で説明した第1予測部1001と同一の構成及び機能を持つ。
第1予測部2401は、利用可能ブロック情報60、選択ブロック情報61、参照動き情報39及び参照画像信号37を入力として、予測画像信号35及び動き情報38を出力する。動き情報取得部2502は、第1の実施形態で説明した動き情報取得部1102と同一の機能を持つ。即ち、動き情報取得部2502は、動き参照ブロックAの参照動き情報39及び利用可能ブロック情報60を含む動き情報38A、及び動き参照ブロックBの参照動き情報39及び利用可能ブロック情報60を含む動き情報38Bを出力する。動き参照ブロックAは、図9Aに示されるように、符号化対象ブロックに空間的に左方向に隣接するブロックであり、動き参照ブロックBは、符号化対象ブロックに空間的に上方向に隣接するブロックである。動き情報取得部2502は、利用可能ブロックの数に一致する数だけ動き情報を出力する。本実施形態では、図9Aに示されるように2つの動き参照ブロックが設定されるので、2つの動き参照ブロックに対応して最大で2つの動き情報が出力される。また、図9Cに示されるように動き参照ブロックが4つ設定される場合、利用可能ブロックの数に応じて最大4つの動き情報が出力される。
動き情報切替スイッチ2503は、選択ブロック情報61に従って、動き情報38A及び38Bのいずれか一方を選択し、動き情報38として動き補償部1104へ送出する。動き補償部2504は、動き情報38及び参照画像信号37を使用して、動き補償部1104と同様の動き補償予測を行い、予測画像信号35Aを生成する。
第2予測部2402は、図26に示すように、参照画像信号37及び符号化列復号化部2201によって得られた動き情報40を用いて、図25の動き補償部2504と同様の動き補償予測を行い、予測画像信号35Bを生成する動き補償部2601を備える。
図24の予測方法切替スイッチ2403は、予測切替情報62に従って、第1予測部2401からの予測画像信号35A及び第2予測部2402からの予測画像信号35Bのうちの一方を選択し、予測画像信号35として出力する。さらに、予測方法切替スイッチ2403は、選択した方の予測画像信号を得るために使用した動き情報を動き情報38として出力する。動き情報38は、動き情報メモリ2206へ送出される。
予測部2205の動作は、図14を参照して第1の実施形態で説明した予測部101と同様の動作を行うためその説明を省略する。ただし、その説明において符号化を復号化に適宜読みかえる必要がある。
次に、図22の画像復号化装置が利用するシンタクスについて説明する。
シンタクスは、画像復号化装置が動画像データを復号化する際の符号化データの構造を示す。図22の画像復号化装置が利用するシンタクス1500の一例を図15に示す。
シンタクス1500は、ハイレベルシンタクス1501、スライスレベルシンタクス1502及びコーディングツリーレベルシンタクス1503の3つのパートを含む。ハイレベルシンタクス1501は、スライスよりも上位のレイヤのシンタクス情報を含む。スライスとは、フレーム又はフィールドに含まれる矩形領域若しくは連続領域を指す。スライスレベルシンタクス1502は、各スライスを復号化するために必要な情報を含む。コーディングツリーレベルシンタクス1503は、各コーディングツリーユニットを復号化するために必要な情報を含む。これらのパートの各々は、さらに詳細なシンタクスを含む。
ハイレベルシンタクス1501は、シーケンスパラメータセットシンタクス1504及びピクチャパラメータセットシンタクス1505などのようなシーケンス及びピクチャレベルのシンタクスを含む。スライスレベルシンタクス1502は、スライスヘッダーシンタクス1506及びスライスデータシンタクス1507などを含む。コーディングツリーレベルシンタクス1503は、コーディングツリーユニットシンタクス1508及びプレディクションユニットシンタクス1509などを含む。
コーディングツリーユニットシンタクス1508は、四分木構造を持つことができる。具体的には、コーディングツリーユニットシンタクス1508のシンタクス要素として、さらにコーディングツリーユニットシンタクス1508を再帰呼び出しすることができる。即ち、1つのコーディングツリーユニットを四分木で細分化することができる。また、コーディングツリーユニットシンタクス1508内には、トランスフォームユニットシンタクス1510及びプレディクションユニットシンタクス1509が含まれている。トランスフォームユニットシンタクス1510は、逆直交変換及び量子化などに関わる情報が記述されており、四分木の最末端の各コーディングツリーユニットシンタクス1508において呼び出される。
図16は、本実施形態に係るシーケンスパラメータセットシンタクス1504の一例を示す。図16に示されるinter_merge_flagは、例えば、そのシーケンスにおいて本実施形態の第1予測方式が有効か無効かを示すシンタクス要素である。inter_merge_flagが0である場合、inter_merge_flagはスライス内では第1予測方式が無効であることを示す。この場合、第2予測方式のみが有効となる。従って、以降のmerge_flag及びmerge_left_flagは復号化する必要はない。一例として、inter_merge_flagが1である場合には、スライス内全域で本実施形態に係る第1予測方式が有効となる。
なお、他の例では、図17に示すように、inter_merge_flagがスライスヘッダーシンタクス1506に含まれてもよい。この場合、inter_merge_flagは、そのスライスにおいて第1予測方式が有効か無効かを示すシンタクス要素となる。
図18に、コーディングツリーユニットシンタクス1508の一例を示す。図18に示されるsplit_coding_unit_flagは、コーディングツリーユニットが4分割されるか否かを示すフラグである。split_coding_unit_flagが1である場合、split_coding_unit_flagはコーディングツリーユニットが4分割されることを示す。この場合、コーディングツリーユニットを4分割して得られるコーディングツリーユニットのシンタクスが再帰的に呼び出される。図18のx0、x1y0、y1は4分割されたコーディングツリーユニットの位置を示すために使用されるパラメータであり、splitCodingUnitSizeは、4分割されたコーディングツリーユニットのサイズを示す。
split_coding_unit_flagが0である場合、split_coding_unit_flagは、コーディングツリーユニットが4分割されないことを示す。NumMergeCandidatesは、図14などで導出される利用可能ブロックの数を示す。利用可能ブロックが存在する(NumMergeCandidates>0)場合、予測切替情報62を示すmerge_flagが復号化される。merge_flagは、その値が1である場合、第1予測方式を用いることを示し、その値が0である場合、第2予測方式を用いることを示す。merge_flagが1(TRUE)且つ利用可能ブロックが2つ存在する(NumMergeCandidates>1)場合、動き参照ブロックA及び動き参照ブロックBのどちらを選択ブロックとしたかを示す選択ブロック情報61であるmerge_left_flagが復号化される。merge_flagが0である場合、第2予測方式を用いるため、プレディクションユニットシンタクスが呼び出され、コーディングツリーユニットにおける予測情報(動き情報38など)が復号化される。
merge_flagが1である場合、コーディングツリーユニットにおける予測に関するパラメータ(動き情報38、プレディクションユニット分割情報など)は復号化する必要はない。
なお、図19に示されるように、プレディクションユニットシンタクスにmerge_flag及びmerge_left_flagが含まれてもよく、この場合にも、merge_flag及びmerge_left_flagは図18のmerge_flag及びmerge_left_flagと同様の意味を持つ。
また、図9Cに示されるように動き参照ブロック数が3以上で、利用可能ブロックも数が3以上となる場合には、選択ブロック情報(merge_left_flag)がフラグではなく、複数のシンボルを有する情報とすればよい。
さらに、コーディングツリーユニット(符号化対象ブロック)のサイズに従って、第1予測方式が有効か無効かの切替を行ってもよい。図20は、コーディングツリーユニットのサイズによって第1予測方式が有効か無効かを切り替えるコーディングツリーシンタクスの一例を示している。図20のmerge_available_size()は、符号化対象ブロックのサイズ(currCodingUnitSize)毎の第1予測方式の有効/無効を出力する関数であり、即ち、符号化対象ブロックのサイズに応じて予測切替情報(merge_flag)を符号化するか否かを示すモード符号化情報である。merge_available_size()が1の場合、第1予測方式は有効となる。一方、merge_available_size()が0の場合、第1予測方式は無効となり、第2予測方式のみが有効となる。この場合merge_flag及びmerge_left_flagは、復号化する必要はない。merge_available_size()における切替の情報は、シーケンスパラメータセットシンタクス、ピクチャパラメータセットシンタクス、スライスヘッダーシンタクスにより、予め復号化されていてもよい。また、後述する復号化装置と同一の切替情報を保持しておいてもよい。他の実施形態では、merge_available_size()を0にする代わりに、図18に示されるNumMergeCandidatesを常にゼロとしてもよい。
図20のコーディングツリーシンタクスを使用すると、特定のサイズのコーディングツリーユニットでは第1予測方式を無効にすることが可能となり、予測切替情報及び選択ブロック情報を削減することができる。
以上のように、第3の実施形態に係る画像復号化装置は、前述した第1の実施形態に係る画像符号化装置によって符号化された画像を復号化している。従って、本実施形態に係る画像復号化装置は、比較的小さな符号化データから高画質な復号画像を再生することができる。
(第4の実施形態)
次に、第4の実施形態に係る画像復号化装置を説明する。第4の実施形態の画像復号化装置は、図22に示した第3の実施形態と同様の構成を有する。第4の実施形態では、第3の実施形態と異なる部分及び動作について主に説明する。第3の実施形態では、復号化対象のコーディングツリーユニットに対して第1予測方式を適用しているのに対し、第4の実施形態では、復号化対象のプレディクションユニットに対して、第1予測方式を適用する。図9Aに示されるブロックXが復号化対象のプレディクションユニットとなり、ブロックA及びブロックBが動き参照ブロックとなる。その他に、利用可能ブロック及び選択ブロックについては、第3の実施形態の第1予測方式に関する記載においてコーディングツリーユニットをプレディクションユニットに置き換えればよい。
図21は、第2の実施形態に係るプレディクションユニットシンタクス1509の一例を示す。図21に示されるNumPuParts(inter_partitioning_idc)は、プレディクションユニットの分割方法を規定するインデクスである。具体的には、NumPuParts(inter_partitioning_idc)は、図5Aから図5Iに示されるように分割されたプレディクションユニットの数を示す。図5Bの例では、NumPuPartsは2となり、図5Dの例では、NumPuPartsは4となる。図21の変数iは、分割されたプレディクションユニットのインデクスである。図21のNumMergeCandidatesは、プレディクションユニットiにおける利用可能ブロックの数である。図21のmerge_flag[i]及びmerge_left_flag[i]は、プレディクションユニットiにおける予測切替情報及び選択ブロック情報をそれぞれ示し、その導出方法は、第3の実施形態と同様である。
以上のように、プレディクションユニットに第1予測方式を適用する第4の実施形態に係る画像符号化装置においても、第3の実施形態と同様の効果を得ることができる。
以下、各実施形態の変形例を列挙して説明する。
第1乃至第4の実施形態において、図4に示されるように、フレームをコーディングツリーユニットなどの矩形ブロックに分割し、画面左上のブロックから右下に向かって順に符号化/復号化を行う例について説明している。しかしながら、符号化順序及び復号化順序はこの例に限定されない。例えば、右下から左上に向かって順に符号化及び復号化が行われてもよいし、画面中央から画面端に向かって渦巻を描くように符号化及び復号化が行われてもよい。さらに、右上から左下に向かって順に符号化及び復号化が行われてもよいし、画面端から画面中央に向かって渦巻きを描くように符号化及び復号化が行われてもよい。
また、第1乃至第4の実施形態において、1つのコーディングツリーユニット内で全てのブロックサイズを統一させる必要はなく、複数の異なるブロックサイズを混在させてもよい。1つのコーディングツリーユニット内で複数の異なるブロックサイズを混在させる場合、分割数の増加に伴って分割情報を符号化または復号化するための符号量も増加する。そこで、分割情報の符号量と局部復号画像または復号画像の品質との間のバランスを考慮して、ブロックサイズを選択することが望ましい。
さらに、第1乃至第4の実施形態において、簡単化のために、輝度信号と色差信号とを区別せず、色信号成分に関して包括的な説明を記述している。しかしながら、予測処理が輝度信号と色差信号との間で異なる場合には、同一または異なる予測方法が用いられてよい。輝度信号と色差信号との間で異なる予測方法が用いられる場合、色差信号に対して選択した予測方法を輝度信号と同様の方法で符号化又は復号化できる。
さらにまた、第1乃至第4の実施形態において、簡単化のために、輝度信号と色差信号とを区別せず、色信号成分に関して包括的な説明を記述した。しかしながら、直交変換処理が輝度信号と色差信号との間で異なる場合には、同一の直交変換方法が用いられてもよく、異なる直交変換方法が用いられてよい。輝度信号と色差信号との間で異なる直交変換方法が用いられるならば、色差信号に対して選択した直交変換方法を輝度信号と同様の方法で符号化または復号化できる。
さらに、第1乃至第4の実施形態において、シンタクス構成に示す表の行間には、ここで規定していないシンタクス要素が挿入されることも可能であるし、それ以外の条件分岐に関する記述が含まれていてもよい。或いは、シンタクステーブルを複数のテーブルに分割、統合することも可能である。また、必ずしも同一の用語を用いる必要は無く、利用する形態によって任意に変更してもよい。
以上説明したように、各実施形態は、ハードウェア実装及びソフトウェア実装における困難性を緩和しつつ、高効率な直交変換及び逆直交変換を実現する。故に、各実施形態によれば、符号化効率が向上し、ひいては主観画質も向上する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
例えば、上記各実施形態の処理を実現するプログラムを、コンピュータで読み取り可能な記憶媒体に格納して提供することも可能である。記憶媒体としては、磁気ディスク、光ディスク(CD−ROM、CD−R、DVD等)、光磁気ディスク(MO等)、半導体メモリなど、プログラムを記憶でき、かつ、コンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
また、上記各実施形態の処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ(サーバ)上に格納し、ネットワーク経由でコンピュータ(クライアント)にダウンロードさせてもよい。