トップ :: H 電気 :: H04 電気通信技術




【発明の名称】 フレーム間予測処理装置、フレーム間予測方法、画像符号化装置及び画像復号装置
【発明者】 【氏名】仲石 英典

【要約】 【課題】様々なブロックサイズのマクロブロック処理を高速化する。

【構成】マクロブロックごとに、予測値算出部2は、対象のマクロブロックの隣接マクロブロックをアドレス算出部3へ指示する。アドレス算出部3は、指定された隣接マクロブロックのブロックサイズに応じて規定される動きベクトルデータが格納される参照画像記憶部1のアドレスを算出する。予測値算出部2は、取得したアドレスに基づいて、参照画像記憶部1から隣接マクロブロックの動きベクトルデータを読み出し、対象マクロブロックの動きベクトル予測値を算出する。
【特許請求の範囲】
【請求項1】
動画像を所定の領域に分割した動きベクトル検出単位でフレーム間予測処理を行うフレーム間予測処理装置において、
必要に応じて所定のサイズに設定される動きベクトル検出単位ごとに生成された動きベクトルデータを格納する動きベクトル格納領域が、前記動きベクトル検出単位の最小単位に応じて用意される参照画像記憶部と、
指定された前記動きベクトル検出単位の動きベクトルデータが格納される前記参照画像記憶部のアドレスを指定された前記動きベクトル検出単位のサイズに基づいて算出するアドレス算出部と、
前記アドレス算出部に対して対象動きベクトル検出単位のフレーム間予測で参照する前記対象動きベクトル検出単位に隣接する隣接動きベクトル検出単位を指示して前記隣接動きベクトル検出単位について生成された前記動きベクトルデータが格納されるアドレスを取得し、取得した前記アドレスに基づいて前記参照画像記憶部より前記隣接動きベクトル検出単位の前記動きベクトルデータを読み出し、前記対象動きベクトル検出単位の動きベクトル予測値を算出する予測値算出部と、
前記動きベクトル予測値の算出のために参照される前記隣接動きベクトル検出単位の前記動きベクトルデータを、前記隣接動きベクトル検出単位に対応する前記動きベクトル格納領域の所定の領域に格納する参照画像格納部と、
を具備することを特徴とするフレーム間予測処理装置。
【請求項2】
前記アドレス算出部は、
前記隣接動きベクトル検出単位のサイズ及び前記隣接動きベクトル検出単位の指定と、前記動きベクトルデータが格納される前記参照画像記憶部のアドレスとを対応付けた変換テーブルを有し、前記変換テーブルに基づいて前記予測値算出部からの入力情報を前記アドレスに変換する、
ことを特徴とする請求項1記載のフレーム間予測処理装置。
【請求項3】
前記参照画像記憶部は、前記対象動きベクトル検出単位の前記動きベクトルデータを格納するブロック内データ格納領域と、前記対象動きベクトル検出単位に隣接する他の動きベクトル検出単位の前記動きベクトルデータを格納する隣接ブロックデータ格納領域とを有し、
前記参照画像格納部は、次の動きベクトル検出単位に処理対象が移行するまでに、前記対象動きベクトル検出単位の前記動きベクトルデータを、前記対象動きベクトル検出単位に対応する前記隣接ブロックデータ格納領域に格納する、
ことを特徴とする請求項1記載のフレーム間予測処理装置。
【請求項4】
前記アドレス算出部は、
前記隣接動きベクトル検出単位のサイズ及び前記隣接動きベクトル検出単位の指定と、前記動きベクトルデータが格納される前記ブロック内データ格納領域のアドレスとを対応付けた第1の変換テーブルと、
前記隣接動きベクトル検出単位のサイズ及び前記隣接動きベクトル検出単位の指定と、前記隣接ブロックデータ格納領域のアドレスとを対応付けた第2の変換テーブルとを有し、
前記第1の変換テーブル及び前記第2の変換テーブルに基づいて前記予測値算出部からの入力情報を前記アドレスに変換する、
ことを特徴とする請求項3記載のフレーム間予測処理装置。
【請求項5】
動画像を所定の領域に分割した動きベクトル検出単位でフレーム間予測処理を行うフレーム間予測方法において、
予測値算出部が、対象動きベクトル検出単位のフレーム間予測で参照する前記対象動きベクトル検出単位に隣接する隣接動きベクトル検出単位を指示し、
アドレス算出部が、必要に応じて所定のサイズに設定される動きベクトル検出単位ごとに生成された動きベクトルデータを格納する動きベクトル格納領域が前記動きベクトル検出単位の最小単位に応じて用意される参照画像記憶部において、指定された前記動きベクトル検出単位の動きベクトルデータが格納されるアドレスを指定された前記動きベクトル検出単位のサイズに基づいて算出し、
前記予測値算出部が、前記アドレス算出部から前記隣接動きベクトル検出単位について生成された前記動きベクトルデータが格納されるアドレスを取得し、取得した前記アドレスに基づいて前記参照画像記憶部より前記隣接動きベクトル検出単位の前記動きベクトルデータを読み出して前記対象動きベクトル検出単位の動きベクトル予測値を算出し、
算出画像格納部が、次以降の処理対象の動きベクトル検出単位に関する前記動きベクトル予測値の算出のために参照される前記隣接動きベクトル検出単位の前記動きベクトルデータを、前記隣接動きベクトル検出単位に対応する前記動きベクトル格納領域の所定の領域に格納する、
処理を行うことを特徴とするフレーム間予測方法。
【請求項6】
基本処理単位の動きベクトル検出単位ごとに、入力画像について所定の参照画像からの動き補償を行って生成した予測誤差を圧縮符号化する画像符号化装置において、
必要に応じて所定のサイズに設定される動きベクトル検出単位ごとに生成された動きベクトルデータを格納する動きベクトル格納領域が、前記動きベクトル検出単位の最小単位に応じて用意される参照画像記憶部と、
指定された前記動きベクトル検出単位の動きベクトルデータが格納される前記参照画像記憶部のアドレスを指定された前記動きベクトル検出単位のサイズに基づいて算出するアドレス算出部と、
前記アドレス算出部に対して対象動きベクトル検出単位のフレーム間予測で参照する前記対象動きベクトル検出単位に隣接する隣接動きベクトル検出単位を指示して前記隣接動きベクトル検出単位について生成された前記動きベクトルデータが格納されるアドレスを取得し、取得した前記アドレスに基づいて前記参照画像記憶部より前記隣接動きベクトル検出単位の前記動きベクトルデータを読み出して前記対象動きベクトル検出単位の動きベクトル予測値を算出し、算出した前記対象動きベクトル検出単位の動きベクトル予測値と、前記対象動きベクトル検出単位について検出された前記動きベクトルデータとの予測差分値を算出して符号化対象とするフレーム間予測部と、
前記動きベクトル予測値の算出のために参照される前記隣接動きベクトル検出単位の前記動きベクトルデータを、前記隣接動きベクトル検出単位に対応する前記動きベクトル格納領域の所定の領域に格納する参照画像格納部と、
を具備することを特徴とする画像符号化装置。
【請求項7】
基本処理単位の動きベクトル検出単位ごとに、入力画像について所定の参照画像からの動き補償を行って生成した予測誤差を圧縮符号化した画像符号化信号を入力し、元の動画像を復元する画像復号装置において、
必要に応じて所定のサイズに設定される動きベクトル検出単位ごとに生成された動きベクトルデータを格納する動きベクトル格納領域が、前記動きベクトル検出単位の最小単位に応じて用意される参照画像記憶部と、
指定された前記動きベクトル検出単位の動きベクトルデータが格納される前記参照画像記憶部のアドレスを指定された前記動きベクトル検出単位のサイズに基づいて算出するアドレス算出部と、
前記アドレス算出部に対して対象動きベクトル検出単位のフレーム間予測で参照する前記対象動きベクトル検出単位に隣接する隣接動きベクトル検出単位を指示して前記隣接動きベクトル検出単位について生成された前記動きベクトルデータが格納されるアドレスを取得し、取得した前記アドレスに基づいて前記参照画像記憶部より前記隣接動きベクトル検出単位の前記動きベクトルデータを読み出して前記対象動きベクトル検出単位の動きベクトル予測値を算出し、算出した前記対象動きベクトル検出単位の動きベクトル予測値と復号された予測差分値とを用いて前記対象動きベクトル検出単位の前記動きベクトルを復号するフレーム間予測部と、
前記フレーム間予測部によって復号され、前記動きベクトル予測値の算出のために参照される前記対象動きベクトル検出単位の前記動きベクトルデータを、前記隣接動きベクトル検出単位に対応する前記動きベクトル格納領域の所定の領域に格納する参照画像格納部と、
を具備することを特徴とする画像復号装置。
【発明の詳細な説明】【技術分野】
【0001】
本発明は、フレーム間予測処理装置、フレーム間予測方法、画像符号化装置及び画像復号装置に関し、特に動画像を所定の領域に分割した動きベクトル検出単位でフレーム間予測処理を行うフレーム間予測処理装置とフレーム間予測方法、及びこのようなフレーム間予測処理装置を具備する画像符号化装置と画像復号装置に関する。
【背景技術】
【0002】
動画像信号の圧縮符号化方式として、MPEG(Moving Picture Expert Group)や、H.264などが知られている。このような圧縮符号化方式では、入力画像データを動きベクトル検出単位に分割し、これを単位として符号化・復号処理が行われる。このような動きベクトル検出単位は、マクロブロックと呼ばれる。符号化処理では、入力画像に対して直交変換、量子化などで画面内の冗長性を取り除くフレーム内予測と、過去の複数のフレームから動き補償した予測残差を抽出することでフレーム間の冗長性を取り除くフレーム間予測とが行われ、それぞれ算出された値をエントロピー符号化する。また、復号処理では、その逆動作が行われる。
【0003】
アルゴリズム処理の大部分は、フレーム間予測のための動きベクトル処理で占められており、その処理の効率化と高速化とが求められてきた。このため、たとえば、参照画像メモリの容量を減らすため、次のフレームで動きベクトルを用いてインター符号化することが決定されたマクロブロック位置に対する参照画像マクロブロックのみ、参照画像メモリに格納する動画符号化方法が提案されている(たとえば、特許文献1参照)。
【0004】
ところで、輪郭を多く含むマクロブロックなどでは、予測精度を向上させるために、マクロブロックをより小さな領域に分割し、分割したマクロブロックを動きベクトルの検出単位として動き予測処理を行うことがある。基本的なマクロブロックのブロックサイズは、16×16画素サイズであるが、たとえば、H.264では、必要に応じて4×4画素サイズのマクロブロックを用いることができる。
【0005】
図24は、H.264におけるマクロブロックのブロックサイズを示した図である。なお、矢印は、処理の順番を示している。
マクロブロック91は、基本の16×16画素サイズのマクロブロックである。以下、所定の画素サイズのマクロブロックを「MB(画素サイズ)」と表記する。たとえば、マクロブロック91は、MB(16×16)91と表す。
【0006】
MB(16×8)92は、MB(16×16)91を横方向に2分割した形状の16×8画素サイズ、MB(8×16)93は、MB(16×16)91を縦方向に2分割した形状の8×16画素サイズ、MB(8×8)94は、MB(16×16)91を4等分した形状の8×8画素サイズのマクロブロックである。なお、マクロブロック間の処理順は図に示したように、MB(16×8)92は上から下、MB(8×16)93は左から右、MB(8×8)94は、左上、右上、左下、右下の順に処理を行う。
【0007】
さらに、H.264では、MB(8×8)94のマクロブロックをさらに分割したサブマクロブロック分割を指定することもできる。マクロブロックと同様に、所定の画素サイズのサブマクロブロックを「サブMB(画素サイズ)」と表記する。サブMB(8×4)95aは8×4画素サイズ、サブMB(4×8)95bは4×8画素サイズ、サブMB(4×4)95cは4×4画素サイズで構成される。サブマクロブロック内の処理順は、図に示したように、同一形状のマクロブロックと同じになる。
【0008】
このように、より小さい単位のブロックサイズのマクロブロックを利用することよって、より激しい、あるいは、細かい動きへの追従性が向上するが、ベクトルの符号量が増える。そこで、マクロブロックを小領域単位に分割して個々に動き補償を行う場合において、動きベクトル検出単位(マクロブロック)の大きさに応じて仮想サンプルの精度を決定し、仮想サンプル生成に必要なメモリバンド幅を削減する画像符号化装置が提案されている(たとえば、特許文献2参照)。
【特許文献1】特開2004−266731号公報
【特許文献2】特開2004−48552号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかし、従来のフレーム間予測処理では、マクロブロックの様々なブロックサイズに対応できるように、最も小さいブロックサイズに合わせて参照画像データを設定しなければならないという問題点があった。
【0010】
画像符号化装置では、マクロブロック単位で検出された動きベクトル(以下、MVとする。MV:Motion Vector)と、このマクロブロックの周辺領域のMVを予測値とする動きベクトル予測値(以下、MVPとする。MVP:MV Predictor)との予測差分値(以下、MVDとする。MVD:MV Difference)を符号化対象とし、マクロブロック情報とともに符号化して画像復号装置へ送る。画像復号装置では、符号化されたMVDとマクロブロック情報とを復号し、MVPとMVDとからMVを生成して元の画像を復元する。このとき、MVPは、既に復元された周辺領域のMVを参照して生成される。
【0011】
以下、画像復号装置のMV生成処理の場合を例にとって説明する。
図25は、従来の画像復号装置における動きベクトル生成処理部の構成図である。
画像復号装置では、メモリ901、MVP生成制御902、MV生成制御903、4×4サイズ格納処理904、隣接マクロブロックA(以下、隣接MB[A]とする)格納制御905、及び隣接マクロブロックB,C,D(以下、隣接MB[BCD]とする)格納制御906を具備する。メモリ901には、参照用としてマクロブロックの最小サイズ(4×4)に応じたMV格納領域が用意されており、既に復号された周辺領域、すなわち、対象マクロブロック及び隣接マクロブロックのMVが格納されている。
【0012】
動作を説明する。マクロブロックサイズ(以下、MBサイズとする)、サブMBサイズ、及び復号されたMVDが入力され、MV生成処理が開始される。MVP生成制御902は、メモリ901の対象マクロブロックに隣接する隣接マクロブロックのMVを読み出し、読み出したMVに基づいて対象マクロブロックのMVPを生成する。このとき、読み出しMVに対応する隣接マクロブロックは、最小ブロック単位で指定される。MV生成制御903は、算出されたMVPとMVDからMVを復元する。4×4サイズ格納処理904は、復元されたMVを、ブロックサイズの最小単位である4×4画素サイズに応じてメモリ901のMV格納領域に展開する。また、メモリ901には、隣接マクロブロックのMV格納領域が用意されている。これもマクロブロックと同様に、マクロブロックの最小サイズ単位に応じて領域が確保されている。隣接MB[A]格納制御905及び隣接MB[BCD]906では、以降の処理に用いるため、隣接マクロブロックのMV格納領域に4×4画素サイズに合わせてMVを展開する処理が行われる。
【0013】
図26は、MB(16×16)の隣接マクロブロックと、MV展開処理とを示した図である。
以下、現処理対象のマクロブロック部分(Part)をCu(Current Part)とする。
【0014】
処理対象のCuの隣接マクロブロックは、Cuの左隣の隣接MB[A]、真上の隣接MB[B]、右上の隣接MB[C]、及び左上の隣接MB[D]になる。MVP生成制御902では、参照MVを読み出す隣接マクロブロックの指定は、最小ブロック単位で行われる。
【0015】
すなわち、(A)MB(16×16)910がCuの場合には、隣接MB[A]911は、Cu910の左に隣接する最上段のサブMB(4×4)になる。同様に、隣接MB[B]912は、上に隣接する最も左のサブMB(4×4)、隣接MB[C]913は、右上に隣接するサブMB(4×4)、及び隣接MB[D]914は、左上に隣接するサブMB(4×4)になる。こうして読み出されたMVに基づいてMVPが算出され、このMVPとMVDからCu910のMV(MV0とする)が生成された。生成されたMV0は、4×4サイズ格納処理904によって、Cu910に用意されたMV格納領域910−1に格納される。
【0016】
前述のように、メモリ901のMV格納領域910−1には、最小ブロック単位に合わせてMV格納領域が確保されている。すなわち、16×16画素サイズを最小ブロック単位(4×4画素)に分割した場合を想定し、16のMV格納領域が用意されている。4×4展開処理では、この16のMV格納領域すべてにMV0を格納する。なお、図は、MV格納領域とマクロブロック構成との対応を説明するものであり、実際のメモリ構成を示すものではない。
【0017】
このようにMV0を全領域展開しておくことにより、たとえば、Cu910が隣接MB[A]となった場合、右上のMV格納領域911−1からデータを読み出すことができる。同様に、隣接MB[B]912と、隣接MB[C]913の場合は、左下のMV格納領域912−1からデータを読み出すことができ、隣接MB[D]914の場合は、MV格納領域914−1からデータを読み出すことができる。
【0018】
図27は、MB(16×8)の隣接マクロブロックを示した図である。
MB(16×8)921がCuの場合、隣接MB[A]921a、隣接MB[B]921b、隣接MB[C]921c、及び隣接MB[D]921dが参照され、MVが算出される。続いて、MB(16×8)922がCuになると、隣接MB[A]922a、隣接MB[B]922b、及び隣接MB[D]922dが参照され、MVが算出される。隣接MB[B]922bは、Cu921について算出されたMVになる。したがって、Cu921について生成されたMVを、Cu921に対応する全MV格納領域に格納しておけば、以降の処理で隣接マクロブロックとして読み出すことができる。
【0019】
以上のように、従来の処理では、以降の処理で、隣接マクロブロックのブロックサイズによらずMVを読み出すことができるように、4×4展開処理を行って、MVを対応する全MV格納領域に展開していた。
【0020】
図28は、MVの展開処理を示す図である。(A)は、16×16サイズのMV展開のシーケンス図であり、(B)は、16×8サイズのMV展開のシーケンス図である。
(A)MB(16×16)の場合、Cu910に対して生成されるMVは、MV0のみであるので、MV0を全16のMV格納領域に格納する。図の例では、書き込み許可信号(EN)が立ち上がると、MV0を書き込みアドレス(WAD)の0から15までに対応するMV格納領域に順次書き込む。これにより、以降の処理において、WAD0から15の任意のMV格納領域からMV読み出しを行っても、MV0を読み出すことができるようになる。
【0021】
(B)MB(16×8)の場合、Cu921に対応するMV0と、Cu922に対応するMV1が算出される。そこで、Cu921の領域に対応するMV格納領域にMV0を書き込み、Cu922の領域に対応するMV格納領域にMV1を書き込む。図の例では、書き込み許可信号(EN)が立ち上がると、MV0をWADの0から7までに対応するMV格納領域に順次書き込み、続いてMV1をWADの8から15に対応するMV格納領域に順次書き込む。これにより、以降の処理において、Cu921に対応するWAD0から7の任意のMV格納領域からMV0が読み出せる。そして、Cu922に対応するWAD8から15の任意のMV格納領域からMV1が読み出せる。
【0022】
このようにMVを展開しておくことにより、次以降のCuの処理において、16×16サイズのマクロブロックに対応する任意のMV格納領域から参照MVを読み出すことが可能となる。しかしながら、16×16サイズのマクロブロックに対応する全MV格納領域にMVを展開するために、処理時間がかかるという問題点がある。なお、他の形状のマクロブロックの場合も同様の処理が行われ、そのマクロブロックに属する全MV格納領域に、MVが展開される。
【0023】
また、隣接MB[A]格納制御905は、メモリ901上に予め用意されている隣接MB[A]の値を格納する領域に次の処理で参照する隣接MB[A]に相当するデータを格納する。この場合も、4×4サイズに対応して処理を行うための展開処理が行われる。
【0024】
以上のように、参照用の隣接MBデータにも同様の処理を行わなければならないため、MV生成処理にさらに時間がかかってしまうという問題点もある。
また、H.264では、予測精度を上げるため、未来方向、過去方向を含む複数の2フレームを参照フレームとして用いることができる。この場合、MV格納領域がさらに増えることとなり、処理時間が増大する。さらに、画像サイズ(画素数)が大きくなった場合、処理するマクロブロックの数も多くなることから、MVの展開処理に要する時間も増大する。近年、予測精度の向上や画像サイズの増加が求められており、これにともなってMVP生成に要する処理の高速化が要求されている。
【0025】
本発明はこのような点に鑑みてなされたものであり、様々なブロックサイズが任意に選択されるマクロブロックの画像処理を高速化するフレーム間予測処理装置とフレーム間予測方法を提供することにある。さらに、このフレーム間予測処理装置を具備する画像符号化装置と画像復号装置を提供することを目的とする。
【課題を解決するための手段】
【0026】
本発明では、上記課題を解決するために、図1に示すようなフレーム間予測処理装置が提供される。本発明に係るフレーム間予測処理装置は、参照画像記憶部1、予測値算出部2、アドレス算出部3、及び参照画像格納部4を具備し、所定の領域に分割した動きベクトル検出単位でフレーム間予測処理を行う。
【0027】
参照画像記憶部1には、必要に応じて所定のサイズに設定される動きベクトル検出単位ごとに生成された動きベクトルデータを格納する動きベクトル格納領域を有する。この動きベクトル格納領域は、最もサイズが小さい、動きベクトル検出単位の最小単位の場合にも動きベクトルデータを格納することができるように領域が確保されている。アドレス算出部3は、指定された動きベクトル検出単位の動きベクトルデータが格納される参照画像記憶部1のアドレスを、指定された動きベクトル検出単位のブロックサイズに基づいて算出する。予測値算出部2は、アドレス算出部3に対して隣接動きベクトル検出単位を指示し、隣接動きベクトル検出単位の動きベクトルデータが格納される参照画像記憶部1のアドレスを取得する。隣接動きベクトル検出単位は、対象動きベクトル検出単位に隣接し、対象動きベクトル検出単位のフレーム間予測処理において参照される動きベクトルデータが生成された動きベクトル検出単位を指す。そして、取得したアドレスに基づいて、参照画像記憶部1に格納される動きベクトルデータを読み出し、この対象動きベクトル検出単位を単位とする動きベクトル予測値を算出する。参照画像格納部4は、以降の処理で参照するため、隣接動きベクトル検出単位の動きベクトルデータを、隣接動きベクトル検出単位に対応する動きベクトル格納領域の所定の領域に格納する。
【0028】
このようなフレーム間予測処理装置によれば、参照画像記憶部1には、動きベクトル検出単位の最小サイズに応じた動きベクトル格納領域が確保されている。動きベクトルデータは、参照画像格納部4によって、動きベクトルデータが生成された動きベクトル検出単位のサイズに応じて、動きベクトル格納領域のうちの予め指定された所定の領域に格納されている。予測値算出部2は、アドレス算出部3に対して隣接動きベクトル検出単位を指定する。アドレス算出部3では、指定された隣接動きベクトル検出単位のサイズに応じて、その隣接動きベクトル検出単位に関する動きベクトルデータが格納される動きベクトル格納領域の参照画像記憶部1におけるアドレスを算出し、予測値算出部2へ返す。予測値算出部2では、取得したアドレスに基づいて参照画像記憶部1から動きベクトルデータを読み出して対象動きベクトル検出単位の動きベクトル予測値を算出する。以上の手順を、所定の処理順に従って、動きベクトル検出単位ごとに実行する。
【0029】
また、本発明では、上記課題を解決するために、基本処理単位の動きベクトル検出単位ごとに、入力画像について所定の参照画像からの動き補償を行って生成した予測誤差を圧縮符号化する画像符号化装置において、必要に応じて所定のサイズに設定される動きベクトル検出単位ごとに生成された動きベクトルデータを格納する動きベクトル格納領域が、動きベクトル検出単位の最小単位に応じて用意される参照画像記憶部と、指定された動きベクトル検出単位の動きベクトルデータが格納される参照画像記憶部のアドレスを指定された動きベクトル検出単位のサイズに基づいて算出するアドレス算出部と、アドレス算出部に対して対象動きベクトル検出単位のフレーム間予測で参照する対象動きベクトル検出単位に隣接する隣接動きベクトル検出単位を指示して隣接動きベクトル検出単位について生成された動きベクトルデータが格納されるアドレスを取得し、取得した前記アドレスに基づいて、参照画像記憶部より隣接動きベクトル検出単位の動きベクトルデータを読み出し、対象動きベクトル検出単位の動きベクトル予測値を算出し、算出した対象動きベクトル検出単位の動きベクトル予測値と、対象動きベクトル検出単位について検出された動きベクトルデータとの予測差分値を算出して符号化対象とするフレーム間予測部と、動きベクトル予測値の算出のために参照される隣接動きベクトル検出単位の動きベクトルデータを、隣接動きベクトル検出単位に対応する動きベクトル格納領域の所定の領域に格納する参照画像格納部と、を具備することを特徴とする画像符号化装置、が提供される。
【0030】
このような画像符号化装置によれば、入力画像を分割した動きベクトル検出単位ごとに、フレーム間予測部が、参照画像格納部の所定のアドレスに格納される参照対象の周辺領域の動きベクトルデータの格納アドレスをアドレス算出部より取得する。参照画像格納部には、参照画像格納部によって、動きベクトルデータの対象の動きベクトル検出単位に対応する動きベクトルデータ格納領域内の1の格納アドレスに動きベクトルデータが設定されている。そして、取得したアドレスより読み出した周辺領域の動きベクトルデータから動きベクトル予測値を算出し、さらに、動きベクトルデータとの予測差分値を算出する。算出した予測差分値は、符号化対象として、以降の処理において符号化される。
【0031】
また、本発明では、上記課題を解決するために、基本処理単位の動きベクトル検出単位ごとに、入力画像について所定の参照画像からの動き補償を行って生成した予測誤差を圧縮符号化した画像符号化信号を入力し、元の動画像を復元する画像復号装置において、必要に応じて所定のサイズに設定される動きベクトル検出単位ごとに生成された動きベクトルデータを格納する動きベクトル格納領域が、動きベクトル検出単位の最小単位に応じて用意される参照画像記憶部と、指定された動きベクトル検出単位の動きベクトルデータが格納される参照画像記憶部のアドレスを指定された動きベクトル検出単位のサイズに基づいて算出するアドレス算出部と、アドレス算出部に対して対象動きベクトル検出単位のフレーム間予測で参照する対象動きベクトル検出単位に隣接する隣接動きベクトル検出単位を指示して隣接動きベクトル検出単位について生成された動きベクトルデータが格納されるアドレスを取得し、取得した前記アドレスに基づいて参照画像記憶部より隣接動きベクトル検出単位の動きベクトルデータを読み出して対象動きベクトル検出単位の動きベクトル予測値を算出し、算出した対象動きベクトル検出単位の動きベクトル予測値と復号された予測差分値とを用いて対象動きベクトル検出単位の動きベクトルを復号するフレーム間予測部と、フレーム間予測部によって復号され、動きベクトル予測値の算出のために参照される対象動きベクトル検出単位の動きベクトルデータを、隣接動きベクトル検出単位に対応する動きベクトル格納領域の所定の領域に格納する参照画像格納部と、を具備することを特徴とする画像復号装置、が提供される。
【0032】
このような画像復号装置によれば、入力画像を分割した動きベクトル検出単位ごとに、符号化された画像信号が入力されると、復号された予測差分値と動きベクトル検出単位情報に基づいてフレーム間予測部が、参照画像格納部の所定のアドレスに格納される参照対象の周辺領域の動きベクトルデータの格納アドレスをアドレス算出部より取得する。参照画像格納部には、参照画像格納部によって、対象の動きベクトル検出単位に対応する動きベクトルデータ格納領域内の1の格納アドレスに、既に復号された周辺領域の動きベクトルデータが設定されている。そして、取得したアドレスより読み出した周辺領域の動きベクトルデータから動きベクトル予測値を算出し、予測差分値とから動きベクトルデータを生成する。
【発明の効果】
【0033】
本発明に係るフレーム間予測処理装置では、フレーム間予測処理において参照される動きベクトルデータが格納されているアドレスを自動的に算出し、データを読み出すことができる。このため、動きベクトル検出単位のサイズによらずどこからでも読み出すことができるように、最も小さい分割単位に合わせて動きベクトル検出単位に対応する全領域に動きベクトルデータを展開する必要がなくなる。この結果、全領域に動きベクトルデータを展開するために要していた処理時間を省くことができ、全体の処理時間を短くすることができる。
【0034】
また、このようなフレーム間予測処理装置を搭載した画像符号化装置及び画像復号装置は、動き補償に要する処理時間が短縮され、結果として画像処理時間を短縮することができる。
【発明を実施するための最良の形態】
【0035】
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。なお、以下の説明では、画素サイズを省略し、たとえば、16×16画素サイズは、16×16と表記する。
【0036】
図1は、実施の形態に適用される発明の概念図である。本発明は、画像を所定のサイズの動きベクトル検出単位に分割し、順次画像処理を行う画像符号化装置及び画像復号装置に適用される。以下、このような動きベクトル検出単位をマクロブロックと呼び、1つのマクロブロックが占有する領域の大きさをブロックサイズと呼ぶ。ブロックサイズは、画像の変化や形状の細かさなど、必要に応じて、複数用意されたブロックサイズから任意に選択することができる。ブロックサイズの決定処理については公知であるので、ここでは言及しない。なお、以下の説明では、特に、16×16のマクロブロックを基本マクロブロックと呼ぶこととする。
【0037】
本発明に係るフレーム間予測処理装置は、参照画像記憶部1、予測値算出部2、アドレス算出部3、及び参照画像格納部4を具備し、周辺領域の動きベクトルデータ(MV)を参照して対象マクロブロックの動きベクトル予測値(MVP)を算出する。
【0038】
参照画像記憶部1は、MVP算出時に参照する周辺領域の隣接マクロブロックを含む所定のマクロブロックについて生成されたMVを格納するメモリである。参照画像記憶部1は、少なくとも、現時点で処理対象の基本マクロブロックに含まれるマクロブロックのMVを格納するMV格納領域と、参照される周辺領域に属する隣接マクロブロックのMVを格納する隣接マクロブロックMV格納領域とを有する。また、それぞれの基本マクロブロックについて、分割可能な最小のMBサイズに応じた最大数のMVを格納できるように、MV格納領域が確保されている。たとえば、H.264であれば、基本単位の16×16のマクロブロックを、最小の4×4に分割した場合を想定し、基本マクロブロックに対し、16のMV格納領域が用意される。各マクロブロックのMVは、基本マクロブロックに対応する16のMV格納領域のうちの所定の1つの領域に格納される。たとえば、MB(16×16)に対してMVが生成された場合は、対応する16のMV格納領域のうちの所定の1つの領域にMVが格納される。どの領域に格納されるかは、予め決められた規則に応じて、マクロブロックの形状ごとに一意に決められる。以下、MVが格納されるMV格納領域を代表MV格納領域、そのMVを代表MVと呼ぶこととする。
【0039】
予測値算出部2は、アドレス算出部3に対して隣接マクロブロックを指定して、代表MV格納領域の参照画像記憶部1におけるアドレスを取得する。そして、取得したアドレスに基づいて参照画像記憶部1から代表MVを読み出し、読み出したMVに基づいてMVPを算出する。画像符号化の場合には、このMVPとMVとの差分であるMVD(予測差分値)が圧縮符号化され、復号装置へ送られる。また、復号の場合には、算出されたMVPと、復号されたMVDとを用いてMVが復元される。MVは、画像の復号に用いられる。
【0040】
アドレス算出部3は、予測値算出部2から、隣接マクロブロックの指定を受け取ると、隣接マクロブロックのブロックサイズに基づき、代表MVが格納される参照画像記憶部1のアドレスを算出する。隣接マクロブロックについて実行されたMV生成処理では、隣接マクロブロックのブロックサイズに応じた代表MV格納領域のみに、代表MVを格納している。この代表MV格納領域は、そのマクロブロックのブロックサイズに応じて一意に決まるので、入力された隣接マクロブロック指定からそのブロックサイズを検出し、対応する参照画像記憶部1のアドレスを算出する。算出した代表MV格納領域のアドレスは、予測値算出部2へ出力する。詳細は後述するが、隣接マクロブロックのサイズに応じて代表MV格納領域が一意に決まる変換テーブルを予め用意しておき、変換テーブルに基づいてアドレスを導出してもよい。
【0041】
参照画像格納部4は、以降の処理で参照されるマクロブロックの代表MVを所定の隣接マクロブロックMV格納領域に格納する。隣接マクロブロックMV格納領域は、次以降の処理の対象マクロブロックに対するMVP算出時に用いられるMVを格納するために参照画像記憶部1に設けられた領域である。
【0042】
このようなフレーム間予測処理装置の動作及びフレーム間予測方法について説明する。
予測値算出部2は、入力画像のマクロブロック処理順に応じて指定された対象マクロブロックのMVPを算出する。当該マクロブロックについての処理が行われるまでに、参照画像記憶部1には、参照される隣接マクロブロックの代表MVが、所定の代表MV格納領域に格納されている。予測値算出部2は、隣接マクロブロックを指定してアドレス算出部3へ代表MV格納領域のアドレス算出を依頼する。アドレス算出部3は、指定された隣接マクロブロックのブロックサイズに基づいて代表MV格納領域のアドレスを算出し、予測値算出部2へ通知する。予測値算出部2は、取得したアドレスを用いて参照画像記憶部1からMVを読み出し、MVPを生成する。MVPは、符号化装置では、符号化対象データであるMVD(予測差分値)を算出するために用いられる。また、復号装置では、復号されたMVDを用いてMVを復元するために用いられる。
【0043】
さらに、対象ブロックのMVは、参照画像格納部4によって、次以降の処理における隣接マクロブロックのMVとして参照できるように、隣接マクロブロックMV格納領域に格納される。
【0044】
このように、本発明に係るフレーム間予測処理装置では、アドレス算出部3が、必要に応じて様々なブロックサイズをとるマクロブロックのMVP生成に利用する周辺領域のMVが格納される代表MV格納領域のアドレスを算出する。このように、代表MV格納領域のアドレスが特定されるため、最小のブロックサイズに合わせて、参照画像記憶部1にMVを展開しておく必要がなくなり、処理に要する時間を短縮することが可能となる。
【0045】
以下、実施の形態を、H.264に基づく符号化及び復号処理を行う画像符号化装置と画像復号装置に適用した場合を例に図面を参照して詳細に説明する。H.264では、16×16の基本マクロブロックに加え、16×8、8×16、及び8×8の4種類のマクロブロックが選択可能となっている。さらに、8×8サイズのマクロブロックについては、8×8、8×4、4×8、4×4の4種類のサブブロック分割を指定することもできる。基本的なアルゴリズムは、符号化処理では、フレームを基本処理単位のマクロブロックに分割し、マクロブロックごとに、フレーム内の空間的冗長性を利用したフレーム内予測と、フレーム間の時間的冗長性を利用したフレーム間予測とを適宜切り替えて、入力画像の符号化を行う。復号処理では、その逆動作が行われる。なお、H.264では、両方向の参照フレームを用いることができるが、以下では、片方向の場合で説明する。両方向の場合には、両方向のMVを格納するための領域が増えるが、処理は片方向と同様に行われる。
【0046】
図2は、本発明の実施の形態の画像符号化装置の構成を示したブロック図である。
本発明の実施の形態の画像符号化装置100は、MB分割101、動きベクトル検出102、過去のフレームバッファ103、フレーム間予測104、フレーム内予測105、現フレームバッファ106、予測モード選択107、減算器108、直交変換量子化109、エントロピー符号化110、逆量子化逆直交変換111、加算器112、デブロッキングフィルタ113、及びフレームバッファ管理114を有する。
【0047】
このような画像符号化装置100では、入力画像は、MB分割101によって所定の大きさのマクロブロックに分割される。動きベクトル検出102は、入力したMB単位の画像信号と、過去のフレームバッファ103に格納される参照画像とを用いて、対象マクロブロックのMVを検出する。MVは、通常、周辺領域との相関が高いので、フレーム間予測104では、周辺領域のMVを予測値として、周辺のMVに基づいてMVPを算出し、MVとの間のMVDを算出する。フレーム内予測105は、現フレームバッファ106のフレーム内予測を行う。予測モード選択107は、フレーム間予測104とフレーム内予測105の予測誤差を比較するなどして、当該マクロブロックを最も効率よく符号化することができる符号化モードを選択し、符号化モード情報を生成する。この符号化モード情報も、符号化対象情報として、エントロピー符号化110へ受け渡される。符号化モード情報には、マクロブロックを分割した分割マクロブロックのサイズと、分割マクロブロックをさらに分割したサブマクロブロックのサイズが含まれる。
【0048】
予測モード選択107としてフレーム内予測105が選択される場合は、MB分割101を経由したマクロブロックの入力画像がそのまま直交変換量子化109へ出力され、直交変換と量子化が施される。こうして生成された直交変数係数データは、エントロピー符号化110へ受け渡される。また、この直交変換係数データは、逆量子化逆直交変換111によってデコードされ、現フレームバッファ106に書き込まれる。
【0049】
予測モード選択107としてフレーム間予測104が選択される場合は、フレーム間予測104が算出したMVDが符号化対象として選択され、エントロピー符号化110へ受け渡される。また、予測モード選択107経由でMVPに基づく予測画像が減算器108へ出力される。減算器108では、マクロブロック単位の入力画像と、予測画像との差分が算出され、直交変換量子化109へ出力される。この出力は、逆量子化逆直交変換111によってデコードされ、加算器112によって予測モード選択107からの予測画像を加算した後、現フレームバッファ106に書き込まれる。
【0050】
エントロピー符号化110は、符号化対象データのエントロピー符号化を行い、画像圧縮符号化信号として出力する。また、現フレームバッファ106に格納される参照画像は、デブロッキングフィルタ113によりマクロブロック境界が平滑化され、フレームバッファ管理114を経由して、過去のフレームバッファ103に格納される。
【0051】
次に、画像復号装置について説明する。
図3は、本発明の実施の形態の画像復号装置の構成を示したブロック図である。
本発明の実施の形態の画像復号装置200は、エントロピー復号201、逆量子化逆直交変換202、加算器203、現フレームバッファ204、フレーム内予測205、予測モード選択206、デブロッキングフィルタ207、フレームバッファ管理208、過去のフレームバッファ209、及びフレーム間予測210、を具備し、図2に示した画像符号化装置100が生成した画像圧縮符号化信号を復号する。
【0052】
画像圧縮符号化信号は、エントロピー復号201によってエントロピー復号が施された後、逆量子化逆直交変換202によって逆量子化と逆直交変換が施される。フレーム間予測104によって符号化されている場合は、MVDの形式で符号化されている動きベクトルデータを復号する。予測モード選択206は、逆量子化逆直交変換202によって復元された符号化モード情報に基づき、フレーム内予測205またはフレーム間予測210を選択する。
【0053】
予測モード選択206としてフレーム内予測205が選択される場合は、逆量子化逆直交変換202によって復元された画像が現フレームバッファ204に書き込まれる。
予測モード選択206としてフレーム間予測210が選択される場合は、MVDの形式で復号された動きベクトルを、各動きベクトル適用単位領域、すなわち、分割マクロブロックの領域ごとに、各動きベクトル適用単位領域で使用された動きベクトルデータ(MV)へ復号する。復号されたMVに基づいて予測画像が復元され、予測モード選択206経由で加算器203に入力する。そして、逆量子化逆直交変換202により復号された予測誤差と加算されることによって、画像が復号され、現フレームバッファ204に格納される。
【0054】
現フレームバッファ204に格納された画像データは、デブロッキングフィルタ207、フレームバッファ管理208を経由して、過去のフレームバッファ209に格納される。
【0055】
次に、上記の画像復号装置のフレーム間予測210における動きベクトルの復号について説明する。図4は、本実施の形態の画像復号装置のフレーム間予測における動きベクトル生成処理を示した機能ブロック図である。
【0056】
フレーム間予測210は、対象マクロブロックと隣接マクロブロックのMVを格納するメモリ211、MVP生成部212、アドレス変換部213、MV生成部214、隣接MB[A]格納部215、及び隣接MB[BCD]格納部216を具備し、対象マクロブロックのMVを生成する。なお、前述のように、処理対象のCuの隣接マクロブロックは、Cuの左隣を隣接MB[A]、真上を隣接MB[B]、右上を隣接MB[C]、及び左上を隣接MB[D]とする。また、隣接MB[BCD]は、隣接MB[B]、隣接MB[C]、及び隣接MB[D]をまとめて示す場合の表記とする。
【0057】
メモリ211には、対象マクロブロックのMVと、対象マクロブロックのMVPの生成時に参照する隣接マクロブロックのMVが格納される。詳細は後述する。
MVP生成部212は、隣接マクロブロックを指定して、アドレス変換部213から、隣接マクロブロックの代表MVが格納される代表MV格納領域のメモリ211におけるアドレスを取得する。そして、代表MVを読み出し、代表MVからMVPを算出する。MVP算出には、種々の方法があるが、ここでは、隣接マクロブロックのMVの中間値をMVPとする。隣接MB[A]のMVをMVA、隣接MB[B]のMVをMVB、隣接MB[C]のMVをMVC、及び隣接MB[D]のMVをMVDとすると、CuのMVPは、
MVP=Median(MVA,MVB,MVC) ・・・(1)
と表すことができる。なお、画面端などでMVCが存在しない場合、MVDを使用する。
【0058】
中間値の生成式は、3値x,y,zを用いて、
Median(x,y,z)=x+y+z−Min(x,Min(y,z))
−Max(x,Max(y,z)) ・・・(2)
によって表すことができる。Min(x,y)は、小さい方の値をとることを表し、Max(x,y)は、大きい方の値をとることを表す。
【0059】
アドレス変換部213は、隣接マクロブロックのサイズ(MBサイズとサブMBサイズ)から、その代表MV格納領域のアドレスに変換する。
MV生成部214は、MVP生成部212によって算出されたMVPと復号されたMVDとからMVを復元する。MVは、
MV=MVP+MVD ・・・(3)
によって算出することができる。算出されたMVは、この対象マクロブロックに対応するメモリ211内の代表MV格納領域に書き込む。
【0060】
隣接MB[A]格納部215は、以降のマクロブロック処理で参照される隣接MB[A]に相当する対象マクロブロックのMVをメモリ211から読み出し、メモリ211に用意された隣接MB[A]格納領域に設定する。
【0061】
隣接MB[BCD]格納部216は、以降のマクロブロック処理で参照される隣接MB[B],MB[C],MB[D]に相当する対象マクロブロックのMVをメモリ211から読み出し、メモリ211に用意された隣接MB[BCD]格納領域に設定する。
【0062】
以下、このような構成のフレーム間予測210の動作及びフレーム間予測方法について説明する。
ここで、フレーム構成と、メモリ211内のMV格納領域について説明する。図5は、本発明の実施の形態のMV格納領域とフレーム構成との関係を示した図である。
【0063】
フレーム300は、基本マクロブロックであるMB(16×16)301に分割されてフレーム間予測処理が行われる。マクロブロックのブロックサイズは、必要に応じて可変に設定することもできる。
【0064】
メモリ211は、Cu310内のMVを格納するブロック内データ格納領域と、隣接MB[A]320のMVと、隣接MB[BCD]331,332のMVとを格納する隣接ブロックデータ格納領域とを有する。Cu310については、マクロブロックの最小単位であるサブMB(4×4)によって、Cu310が占める領域を16に分割し、分割されたそれぞれのブロックに対応付けて、16のMV格納領域が確保される。
【0065】
隣接MB[A]320については、Cu310の左に隣接する4段のサブMB(4×4)に対応する4つのMV格納領域が確保される。隣接MB[A]格納部215は、Cu310のMV生成が終了すると、Cu310に関するMVが格納されるMV格納領域から、最も右の4段のサブMB(4×4)に対応するMVを読み出し、そのデータを隣接MB[A]320に格納する。
【0066】
隣接MB[BCD]331,332については、少なくとも、隣接MB[B]、隣接MB[C]、及び隣接MB[D]を含む、Cu310が属するフレーム行の上側に隣接するサブMB(4×4)に対応するMV格納領域と、Cu310が属するフレーム行の最下段のサブMB(4×4)に対応するMV格納領域が確保される。隣接MB[BCD]格納部216では、Cu310のMV生成処理が終了すると、Cu310に関するMVが格納されるMV格納領域の最下段のサブMB(4×4)を隣接MB[BCD]332に格納する。したがって、処理対象のフレーム行が下に移動した場合には、隣接MB[BCD]332に格納されるMVは、処理対象のCu310の上側の隣接する隣接マクロブロックのデータになる。
【0067】
上記の構成のメモリ211のMV格納領域に格納されるMVは、Cuが移動するごとに順次更新されていく。たとえば、処理対象がCu310から右隣のマクロブロック311移ると、Cu310のMVを格納していた領域は、新たにCuとなるマクロブロック311のMVを格納する領域になる。また、隣接MB[A]320には、Cu310の最も左側のブロックのMVが格納される。隣接MB[BCD]331,332も同様に書き換わる。
【0068】
ここで、説明のため、基本マクロブロックを最小単位の4×4で分割した領域に対し、便宜的に番号を割り振る。図6は、16×16のマクロブロックと、ブロック番号の関係を示した図である。
【0069】
図に示したように、基本マクロブロックであるMB(16×16)340を、最小単位の4×4で分割した16ブロックについて、MB(8×8)の4つの領域に分割し、左上、右上、左下、右下と順に番号を割り振る。さらにMB(8×8)を4つの領域に分割したサブMB(4×4)のブロックについても左上、右上、左下、右下の順に番号を割り振る。具体的には、左上のMB(8×8)のサブMB(4×4)について、左上、右上、左下、右下の順にb0、b1、b2、b3を割り振る。次に、右上のMB(8×8)のサブMB(4×4)について、左上、右上、左下、右下の順にb4からb7を割り振る。同様に、左下のMB(8×8)のサブMB(4×4)にb8からb11を、右下のMB(8×8)のサブMB(4×4)にb12からb15を割り振る。
【0070】
次に、本発明の実施の形態のMV生成処理と、メモリ211へのMV格納処理について説明する。MVP生成部212は、参照する隣接マクロブロックのMVが格納されるメモリ211のアドレスをアドレス変換部213より取得する。そして、取得したアドレスからMVを読み出し、式(1)によりMVPを算出する。続いて、MV生成部214が、式(3)により、算出されたMVPと復号されたMVDからMVを生成し、メモリ211の代表MV格納領域に書き込む。ここでは、処理対象のマクロブロックの左上の4×4のマクロブロックを代表MV格納領域とする。
【0071】
図7は、本発明の実施の形態のMB(16×16)の場合のMV生成処理と格納処理を示した図である。(A)は、代表MVの生成、(B)は、MVの書き込みシーケンスを示している。
【0072】
MB(16×16)のCu400は、Cu400に隣接する隣接MB[A]のb5(400a)、隣接MB[B]のb10(400b)、隣接MB[C]のb10(400c)、及び隣接MB[D]のb15(400d)のMVを読み出し、式(1)に基づいてMVPを算出する。そして、MVPと、復号されたMVDを用いて、式(3)によりMVを生成する。これをMV0とする。MV0は、Cu400の左上のb0(401)に格納される。
【0073】
格納処理を(B)のシーケンス図で見ると、EN信号により、MV0は、WAD=0のb0に書き込まれる。このMVが以降のMVP生成処理で参照される場合には、アドレス変換部213が格納アドレスを自動的に算出するので、メモリ211にMVを展開する必要はなく、書き込みは1ブロック分で終了する。したがって、16ブロック分の書き込みを行っていた従来と比較し、処理時間を大幅に短縮することができる。
【0074】
図8は、本発明の実施の形態のMB(16×8)の場合のMV生成処理と格納処理を示した図である。(A)は、代表MVの生成、(B)は、MVの書き込みシーケンスを示している。
【0075】
MB(16×8)の上側のCu0(411)は、Cu0(411)に隣接する隣接MB[A]のb5(411a)、隣接MB[B]のb10(411b)、隣接MB[C]のb10(411c)、及び隣接MB[D]のb15(411d)のMVを読み出してMVPを算出し、MV0を生成する。MV0は、Cu0(411)の左上のb0(412)に格納される。続いて、下側のCu1(413)に対し、Cu1(413)に隣接する隣接MB[A]のb13(413a)、隣接MB[B]に相当するCu0(411)のb2(413b)、及び隣接MB[D]のb15(413d)のMVを読み出してMVPを算出し、MV1を生成する。なお、隣接MB[C]に相当する図のX(413c)には、MVが存在しない。この場合、式(1)に従って、MVA、MVB、MVDよりMVが算出される。算出されたMV1は、Cu1(413)の左上のb8(414)に格納される。
【0076】
格納処理を(B)のシーケンス図で見ると、EN信号により、MV0はWAD=0のb0に書き込まれ、MV1はWAD=8のb8に書き込まれる。書き込みは2ブロック分で終了する。
【0077】
図9は、本発明の実施の形態のMB(8×16)の場合のMV生成処理と格納処理を示した図である。(A)は、代表MVの生成、(B)は、MVの書き込みシーケンスを示している。
【0078】
MB(8×16)の左側のCu0(421)は、Cu0(421)に隣接する隣接MB[A]のb5(421a)、隣接MB[B]のb10(421b)、隣接MB[C]のb14(421c)、及び隣接MB[D]のb15(421d)のMVを読み出してMVPを算出し、MV0を生成する。MV0は、Cu0(421)の左上のb0(422)に格納される。続いて、右側のCu1(423)に対し、Cu0(421)のb1(423a)、Cu1(423)の隣接MB[B]のb14(423b)、隣接MB[C]のb10(423c)、及び隣接MB[D]のb11(423d)のMVを読み出してMVPを算出し、MV1を生成する。MV1は、Cu1(423)の左上のb4(424)に格納される。
【0079】
格納処理を(B)のシーケンス図で見ると、EN信号により、MV0はWAD=0のb0に書き込まれ、MV1はWAD=4のb4に書き込まれる。書き込みは2ブロック分で終了する。
【0080】
図10は、本発明の実施の形態のMB(8×8)の場合のMV生成処理と格納処理を示した図である。(A)は、代表MVの生成、(B)は、MVの書き込みシーケンスを示している。
【0081】
MB(8×8)の左上のCu0(431)は、Cu0(431)に隣接する隣接MB[A]のb5(431a)、隣接MB[B]のb10(431b)、隣接MB[C]のb14(431c)、及び隣接MB[D]のb15(431d)のMVを読み出してMVPを算出し、MV0を生成する。MV0は、Cu0(431)の左上のb0(432)に格納される。右上のCu1(433)に対し、Cu0(431)のb1(433a)、Cu1(433)の隣接MB[B]のb14(433b)、隣接MB[C]のb10(433c)、及び隣接MB[D]のb14(433d)のMVを読み出してMVPを算出し、MV1を生成する。MV1は、Cu1(433)の左上のb4(434)に格納される。左下のCu2(435)に対し、Cu2(435)に隣接する隣接MB[A]のb13(435a)、Cu0(431)のb2(435b)、Cu1(433)のb6(435c)、及び隣接MB[B]のb7(435d)のMVを読み出してMVPを算出し、MV3を生成する。MV3は、Cu2(435)の左上のb8(436)に格納される。右下のCu3(437)に対し、Cu2(435)のb9(437a)、Cu1(433)のb6(437b)、及びCu0(431)のb3(437d)を読み出してMVPを算出し、MV4を生成する。隣接MB[C]のX(437c)は参照しない。MV4は、Cu3(437)の左上のb12(438)に格納される。
【0082】
格納処理を(B)のシーケンス図で見ると、EN信号により、MV0はWAD=0のb0、MV1はWAD=4のb4、MV2はWAD=8のb8、及びMV3はWAD=12のb12に書き込まれる。書き込みは4ブロック分で終了する。
【0083】
図11及び図12は、本発明の実施の形態のサブマクロブロック分割の場合のMV生成処理と格納処理を示した図である。図11の(A)は、サブマクロブロック分割、(B−1)は、サブマクロブロック0から2までの代表MVの生成処理を示している。図12の(B−2)は、サブマクロブロック3の代表MVの生成、(C)は、MVの書き込みシーケンスを示している。
【0084】
図11の(A)は、MB(8×8)をさらに分割したサブマクロブロック分割の一例を示した図である。左上のMB(8×8)は、8×8のSB0(441)の1ブロックで構成される。右上のMB(8×8)は、8×4のSB1−0(451)と、SB1−1(453)の2ブロックで構成される。左下のMB(8×8)は、4×8のSB2−0(461)と、SB2−1(463)の2ブロックで構成される。右下のMB(8×8)は、4×4のSB3−0(471)、SB3−1(472)、SB3−2(473)、及びSB3−3(474)の4つのブロックで構成される。
【0085】
各サブマクロブロックのMV生成処理について説明する。
SB0(441)は、隣接マクロブロックから読み出したMVに基づいてMV0を生成し、SB0(441)の左上のb0(442)に格納する。SB1−0(451)は、隣接マクロブロックから読み出したMVに基づいてMV1を生成し、SB1−0の左上のb4(452)に格納する。SB1−1(453)も同様にしてMV2を生成し、SB1−1(453)の左上のb6(454)に格納する。SB2−0(461)について生成されるMV3は、b8(462)に格納され、SB2−1(463)について生成されるMV4は、b9(464)に格納される。
【0086】
図12を用いて説明する。
最小単位のサブマクロブロックで構成されるSB3−0(471)、SB3−1(472)、SB3−2(473)、及びSB3−3(474)について生成されたMVは、それぞれのサブマクロブロック(b12,b13,b14,b15)に格納される。
【0087】
格納処理を(C)のシーケンス図で見ると、EN信号により、MV0はWAD=0のb0、MV1はWAD=4のb4、MV2はWAD=6のb6、MV3はWAD=8のb8、MV4はWAD=9のb9、MV5はWAD=12のb12、MV6はWAD=13のb13、MV7はWAD=14のb14、及びMV8はWAD=15のb15に書き込まれる。書き込みは9ブロック分で終了する。
【0088】
以上のように、本発明の実施の形態のMV生成では、生成されたMVは、MVが生成されたマクロブロック範囲を代表するMV格納領域(ここでは、左上のブロックに相当するMV格納領域)にのみ書き込みが行われる。図から明らかなように、MB(8×8)までは、最大4ブロックの書き込みで処理が終了する。16ブロックの書き込みが行われるのは、すべてのブロックが4×4の場合のみであり、多くの場合、より少ない書き込みブロック数で処理が終了する。これにより、従来のMV処理では、16ブロックに対応する全てのMV格納領域に対して行われていた格納処理時間を大幅に短縮することができる。
【0089】
以上の処理手順が実行されることにより、図5に示したように、現在処理中のCu310と、その隣接MB[A]320、及び隣接MB[BCD]331,332の動きベクトルデータが格納される。
【0090】
次に、アドレス変換部213によるアドレス変換処理について説明する。
アドレス変換部213では、MVP生成部212が指示した隣接マクロブロックの代表MV格納領域を指示するアドレスに変換し、MVP生成部212へアドレスを通知する。MVP生成部212からは、参照する隣接マクロブロック(4×4)を指示する情報が入力される。たとえば、16×16の基本マクロブロックは、識別番号が付与されており、その識別番号と図6に示したb0からb15のブロック番号などから隣接マクロブロックを指示する指示情報を生成し、アドレス変換部213へ引き渡す。アドレス変換部213では、指定された隣接マクロブロックのMBサイズ及びサブMBサイズと、代表MV格納領域とを対応付けたアドレス変換テーブルを用意しておき、アドレス変換テーブルに基づいてアドレスを導出する。
【0091】
本発明の実施の形態では、図5に示したように、Cu310内の処理マクロブロックで参照するMVが、Cu310の外部のMVである場合には、隣接MB[A]320、及び隣接MB[BCD]331,332に対応付けられたMV格納領域からデータを読み出す必要がある。たとえ処理マクロブロックの形状が同じであっても、配置される場所に応じて参照するMVが外部であるか内部であるかは異なってしまう。そこで、最初に、参照されるMVが内部の場合について説明し、続いて、隣接MB[A]320、及び隣接MB[BCD]331,332に参照されるMVが格納されている場合について説明する。
【0092】
まず、内部のMVを参照する場合について説明する。以下の説明では、実際には、外部のMVを参照する場合であっても、内部と同等に処理できるとする。すなわち、すべてのマクロブロックのMVが、図5に示したCu310と同様に格納されているとして説明する。
【0093】
図13及び図14は、本発明の実施の形態のアドレス変換テーブルの機能を示した図である。図13は、隣接マクロブロックのMBサイズが16×16と16×8の場合である。図14は、隣接マクロブロックのMBサイズが8×16と8×8の場合と、サブMBサイズが8×4、4×8、及び4×4の場合とを示している。
【0094】
図13に示した隣接マクロブロックが、MB(16×16)の場合は、b0からb15が指定される可能性がある。これに対し、図7で説明したように、代表MVは、b0に対応するMV格納領域に格納されている。したがって、指示された隣接マクロブロックが16×16の場合は、このマクロブロックの代表MV格納領域であるb0に相当するMV格納領域を指示するアドレスに変換し、MVP生成部212へ通知する。なお、隣接マクロブロックは、既に処理が終了したマクロブロックであり、ブロックサイズなどは既知である。たとえば、この情報を保存しておけば、指定された隣接マクロブロックのサイズを知ることができる。
【0095】
同様に、隣接マクロブロックがMB(16×8)であって、MB(16×16)範囲の上側に位置する場合は、b0からb7が指定される可能性がある。この場合の代表MV格納領域は、図8に示したようにb0になる。したがって、指示された隣接マクロブロックが16×8で、b0からb7が指定された場合、代表MV格納領域であるb0に相当するMV格納領域を指示するアドレスに変換し、MVP生成部212へ通知する。
【0096】
なお、図示していないが、隣接マクロブロックが16×8で、b8からb15が指定された場合は、基本マクロブロック範囲で下側のMB(16×8)であるので、代表MV格納領域は、図8に示したように、b8になる。そこで、この場合は、b8に相当するMV格納領域を指示するアドレスに変換し、MVP生成部212へ通知する。
【0097】
図14で説明する。
図14に示した隣接マクロブロックがMB(8×16)であって、MB(16×16)範囲の左上に位置する場合は、b0,b1,b2,b3,b8,b9,b10,b11が指定される。図9に示したように、代表MV格納領域は、b0に相当するMV格納領域であるので、そこを指示するアドレスに変換し、MVP生成部212へ通知する。また、MB(16×8)の場合と同様に、隣接マクロブロックが8×16で、上記以外のb4,b5,b6,b7,b12,b13,b14,b15が指定された場合は、代表MV格納領域は、図9に示したように、b4に対応するMV格納領域になる。
【0098】
基本マクロブロック範囲で左上に位置するMB(8×8)の場合は、隣接マクロブロックとしてb0,b1,b2,b3が指定される。図10に示したように、代表MV格納領域は、b0に相当するMV格納領域であるので、そこを指示するアドレスに変換し、MVP生成部212へ通知する。また、他と同様に、隣接マクロブロックが8×16で、b4,b5,b6,b7が指定された場合の代表MV格納領域はb4,b8,b9,b10,b11が指定された場合の代表MV格納領域はb8、そしてb12,b13,b14,b15が指定された場合の代表MV格納領域はb12になる。それぞれの指定ブロックに対応するMV格納領域を指示するアドレスに変換し、MVP生成部212に通知する。
【0099】
以下、サブマクロブロック構成の場合について説明する。簡単のため、それぞれ左上のMB(8×8)に属する1つのサブマクロブロックを例にとり説明する。上記と同様に、他のサブマクロブロックについても、サイズと指定ブロックとにより、代表MV格納領域を一意に特定することができる。
【0100】
基本マクロブロック単位で左上に位置するMB(8×8)を横方向に2分割した上側のサブMB(8×4)の場合、隣接マクロブロックとしてb0とb1が指定される。したがって、MBサイズが8×8、サブMBサイズが8×4、そしてb0またはb1が指定された場合は、代表MV格納領域としてb0に対応するMV格納領域のアドレスを通知する。
【0101】
基本マクロブロック単位で左上に位置するMB(8×8)を縦方向に2分割した左側のサブMB(8×4)の場合、隣接マクロブロックとしてb0とb2が指定される。したがって、MBサイズが8×8、サブMBサイズが4×8、そしてb0またはb2が指定された場合は、代表MV格納領域としてb0に対応するMV格納領域のアドレスを通知する。
【0102】
基本マクロブロック単位で左上に位置するMB(8×8)を4分割した左上のサブMB(4×4)の場合、隣接マクロブロックとしてb0が指定される。したがって、MBサイズが8×8、サブMBサイズが4×4、そしてb0が指定された場合は、代表MV格納領域としてb0に対応するMV格納領域のアドレスを通知する。
【0103】
以上のように、代表MV格納領域は、隣接マクロブロックのMBサイズとサブMBサイズ、及び指定ブロック(b0〜b15)と、代表MV格納領域のアドレスとを対応付けた変換テーブルによって導出することができる。これにより、MVP生成部212によってMV生成部214が代表MV格納領域にのみに格納されたMVを読み出すことができる。
【0104】
なお、図13及び図14には、変換テーブル例を示さなかったが、上記のように隣接マクロブロックのMBサイズとサブMBサイズ、及び指定ブロック(b0〜b15)と、代表MV格納領域のアドレスとが対応付けられ、隣接マクロブロックのサイズとブロック指定をアドレスが導出できるものであれば、どのような形式であってもよい。
【0105】
以下、参照するMVがCu外にある場合について説明する。たとえば、上記の処理マクロブロックが16×16の場合、参照するMVは、すべて隣接MB[A]320と、隣接MB[BCD]331,332に対応するMV格納領域に格納されている。
【0106】
まず、隣接MB[A]及び隣接MB[BCD]について、どの領域が代表MV格納領域となるのかを説明する。
図15は、本発明の実施の形態における隣接マクロブロックMB[A]のMV格納処理を示した図である。
【0107】
Cu501は、隣接MB[A](A0,A1,A2,A3)を参照する現処理マクロブロックであり、マクロブロック502は、Cu501の前に処理対象であったマクロブロックである。隣接MB[A]格納部215は、マクロブロック502のMV生成処理によって生成された代表MVを読み出し、隣接MB[A](A0,A1,A2,A3)に格納する。このとき、水平方向に代表MVが複数存在する場合は、最も右に位置するマクロブロックに対し生成された代表MVを選択し、隣接MB[A]に格納する。たとえば、8×16のマクロブロックが左右に並ぶ場合、A0に対応するマクロブロックのb0とb4に対応するMV格納領域にそれぞれ代表MVが格納されている。この場合、b4に対応する代表MVが選択され、A0に格納される。
【0108】
図16は、本発明の実施の形態における隣接マクロブロックMB[BCD]のMV格納処理を示した図である。
Cu501は、隣接MB[BCD](N0,N1,N2,N3,N4,N5)を参照する現処理マクロブロックである。マクロブロック503,504,505は、既にMV生成処理が終了したマクロブロックである。隣接MB[BCD]格納部216は、たとえば、マクロブロック503のMV生成処理によって生成された代表MVを読み出し、隣接MB[BCD](N1,N2,N3,N4)に格納する。N0は、マクロブロック504のMV生成処理後に、N5は、マクロブロック505のMV生成処理後に、同様に代表MVが設定される。このとき、垂直方向に代表MVが複数存在する場合、最も下に位置するマクロブロックの代表MVを選択し、隣接MB[BCD]に格納する。たとえば、16×8のマクロブロックが上下に並ぶ場合、N1に対応するマクロブロックb0とb8に対応するMV格納領域に、それぞれの代表MVが格納されている。この場合、b8に対応する代表MVが選択され、N1に格納される。
【0109】
ブロックサイズごとに代表MVが格納されるアドレスが異なるので、以下、ブロックサイズごとのMV格納処理について説明する。
図17から図19は、本発明の実施の形態の隣接MBの代表MV格納領域を示している。
【0110】
図17(A)は、隣接MB(16×16)の代表MV格納領域を示している。
MV生成対象のマクロブロックが、MB(16×16)510の場合、代表MV0は、b0に格納される。隣接MB[A]格納部215では、b0に格納される代表MV0を読み出し、b0を水平移動した位置に対応する隣接MB[A]のA0(511)に格納する。また、隣接MB[BCD]格納部216では、b0に格納される代表MV0を、b0を垂直移動した位置に対応する隣接MB[BCD]のN1(512)に格納する。
【0111】
図17(B)は、隣接MB(16×8)の代表MV格納領域を示している。
MV生成対象のマクロブロックが、MB(16×8)520の場合、2つの代表MVが生成され、代表MV0はb0、代表MV8はb8に格納される。隣接MB[A]格納部215では、b0に格納される代表MV0を読み出し、b0を水平移動した位置に対応するMB[A]のA0(521)に格納するとともに、同様にして、MV8をA2(522)に格納する。また、隣接MB[BCD]格納部216では、2つの代表MVのうち、下に位置するb8に格納される代表MV8を、b0を垂直移動した位置に対応するMB[BCD]のN1(523)に格納する。
【0112】
図18(C)は、隣接MB(8×16)の代表MV格納領域を示している。
MV生成対象のマクロブロックが、MB(8×16)530の場合、2つの代表MVが生成され、代表MV0はb0、代表MV4はb4に格納される。隣接MB[A]格納部215では、b0とb4のうち、右側に格納されるb4の代表MV4を読み出し、b4を水平移動した位置に対応するMB[A]のA0(531)に格納する。また、隣接MB[BCD]格納部216では、b0に格納されるMV0を、b0を垂直移動した位置に対応するMB[BCD]のN1(532)に格納し、b4に格納されるMV4を、b4を垂直移動した位置に対応するMB[BCD]のN3(533)に格納する。
【0113】
図18(D)は、隣接MB(8×8)の代表MV格納領域を示している。
MV生成対象のマクロブロックが、MB(8×8)540の場合、4つの代表MVが生成され、代表MV0はb0、代表MV4はb4、代表MV8はb8、そして代表MV12はb12に格納される。隣接MB[A]格納部215では、b0とb4のうち、右側に位置するb4の代表MV4を読み出し、A0(541)に格納する。また、b8とb12のうち、右側に位置するb12の代表MV12を選択し、A2(542)に格納する。隣接MB[BCD]格納部216では、b0とb8のうち、下に位置するb8を選択し、その代表MV8を、隣接MB[BCD]のN1(543)に格納する。また、b4とb12のうち、下に位置するb12を選択し、隣接MB[BCD]のN3(544)に格納する。
【0114】
図19(E)は、隣接MB(4×4)の代表MV格納領域を示している。
MV生成対象のマクロブロックが、サブMB(4×4)550の場合、MV0からMV15の16の代表MVが生成される。代表MVは、それぞれ対応するブロック番号に格納される。隣接MB[A]格納部215では、代表MVのうち、最も右側に位置するMV5,MV7,MV13,MV15を選択し、それぞれMB[A]のA0,A1,A2,A3に格納する。隣接MB[BCD]格納部216では、代表MVのうち、下に位置するMV10,MV11,MV14,MV15を選択し、MB[BCD]のN1,N2,N3,N4に格納する。なお、詳細は省略するが、MB(8×4),MB(4×8)についても同様の処理が行われる。
【0115】
以上のように、隣接MB[A]格納部215と、隣接MB[BCD]格納部216によって、隣接MB[A]及び隣接MB[BCD]の所定の領域に代表MVが格納される。
次に、MVP生成部212が、隣接MB[A]または隣接MB[BCD]に格納される外部のMVを参照する場合について説明する。
【0116】
MVP生成部212から、参照する隣接マクロブロック(4×4)を指示する情報が入力されると、アドレス変換部213は、指示された隣接マクロブロックが、隣接MB[A]320、または隣接MB[BCD]331,332にあるのかどうかを判定する。ない場合は、上記の図13、図14に示した変換テーブルを用いてアドレスを算出する。隣接MB[A]320、または隣接MB[BCD]331,332にある場合は、以下に説明する図20から図23の変換テーブルを用いてアドレス算出を行う。
【0117】
図20及び図21は、本発明の実施の形態の隣接MB[A]格納領域を参照する場合のアドレス変換テーブルの機能を示した図である。図20は、隣接MB[A]のMVを生成した隣接マクロブロックが、MB(16×16)、MB(16×8)、MB(8×16)、及びMB(8×8)の場合を示した図である。図21は、隣接MB[A]のMVを生成した隣接マクロブロックが、サブMB(8×4)、サブMB(4×8)、及びサブMB(4×4)の場合を示した図である。
【0118】
隣接マクロブロックのMBサイズが16×16の場合、A0に対応するMV格納領域のみにMV0が格納されている。隣接MB[A]として、A0,A1,A2,A3が指定される可能性があるか、いずれの場合もA0に対応するMV格納領域のアドレスに変換する。これにより、隣接MB[A]のMBサイズが16×16の場合は、常に、MV0を読み出すことができる。
【0119】
隣接マクロブロックのMBサイズが16×8の場合、A0に対応するMV格納領域にMV0、A2に対応するMV格納領域にMV8が格納されている。隣接MB[A]として、A0,A1が指定された場合には、A0に対応するMV格納領域のアドレスに変換する。また、A2,A3が指定された場合には、A2に対応するMV格納領域のアドレスに変換する。これにより、隣接MB[A]のMBサイズが16×8の場合は、A0またはA1が指定されるとMV0、A2またはA3が指定されるとMV2を読み出すことができる。
【0120】
隣接マクロブロックのMBサイズが8×16の場合、A0に対応するMV格納領域にMV4が格納されている。隣接MB[A]として、A0,A1,A2、またはA3が指定された場合は、A0に対応するMV格納領域のアドレスに変換する。これにより、隣接MB[A]のMBサイズが8×16の場合は、常に、MV0を読み出すことができる。
【0121】
隣接マクロブロックのMBサイズが8×8の場合、A0に対応するMV格納領域にMV4、A2に対応するMV格納領域にMV12が格納されている。隣接MB[A]として、A0,A1が指定された場合には、A0に対応するMV格納領域のアドレスに変換する。また、A2,A3が指定された場合には、A2に対応するMV格納領域のアドレスに変換する。これにより、隣接MB[A]のMBサイズが8×8の場合は、A0またはA1が指定されるとMV4、A2またはA3が指定されるとMV12を読み出すことができる。
【0122】
図21により説明する。図21は、サブブロック分割の場合の隣接MB[A]のアドレス変換を示している。なお、基本マクロブロック範囲における左半分がどのような構成であっても、隣接MB[A]に代表MVとして格納される値は同じであるので、図では左半分を省略している。
【0123】
隣接マクロブロックのMBサイズが8×4の場合、A0に対応するMV格納領域にMV4、A1に対応するMV格納領域にMV6、A2に対応するMV格納領域にMV12、そしてA3に対応するMV格納領域にMV14が格納されている。この場合は、隣接MB[A]として指定されたA0,A1,A2、またはA3に対応するMV格納領域のアドレスに変換する。
【0124】
隣接マクロブロックのMBサイズが4×8の場合、A0に対応するMV格納領域にMV5、A2に対応するMV格納領域にMV13が格納されている。この場合は、隣接MB[A]として、A0,A1が指定された場合には、A0に対応するMV格納領域のアドレスに変換する。また、A2,A3が指定された場合には、A2に対応するMV格納領域のアドレスに変換する。
【0125】
隣接マクロブロックのMBサイズが4×4の場合、A0に対応するMV格納領域にMV6、A1に対応するMV格納領域にMV7、A2に対応するMV格納領域にMV13、そしてA3に対応するMV格納領域にMV15が格納されている。この場合は、隣接MB[A]として指定されたA0,A1,A2、またはA3に対応するMV格納領域のアドレスに変換する。
【0126】
このように、アドレス変換部213では、隣接MB[A]が指定されると、図20及び図21に示したアドレス変換を行って、指定された隣接MB[A]の代表MV格納領域のアドレスに変換し、MVP生成部212へ提供する。
【0127】
次に、隣接MB[BCD]に関するアドレス変換について説明する。
図22及び図23は、本発明の実施の形態の隣接MB[BCD]格納領域を参照する場合のアドレス変換テーブルの機能を示した図である。図22は、隣接MB[BCD]のMVを生成した隣接マクロブロックが、MB(16×16)、MB(16×8)、MB(8×16)、及びMB(8×8)の場合を示した図である。図23は、隣接MB[BCD]のMVを生成した隣接マクロブロックが、サブMB(8×4)、サブMB(4×8)、及びサブMB(4×4)の場合を示した図である。
【0128】
隣接マクロブロックのMBサイズが16×16の場合、N1に対応するMV格納領域のみにMV0が格納されている。隣接MB[BCD]として、N1,N2,N3,N4が指定されるが、いずれの場合もN1に対応するMV格納領域のアドレスに変換する。これにより、隣接MB[BCD]のMBサイズが16×16の場合は、常に、MV0を読み出すことができる。
【0129】
隣接マクロブロックのMBサイズが16×8の場合、N1に対応するMV格納領域にMV8が格納されている。隣接MB[BCD]として、N1,N2,N3、またはN4が指定された場合は、N1に対応するMV格納領域のアドレスに変換する。これにより、隣接MB[BCD]のMBサイズが16×8の場合は、常に、MV0を読み出すことができる。
【0130】
隣接マクロブロックのMBサイズが8×16の場合、N1に対応するMV格納領域にMV0、N3に対応するMV格納領域にMV4が格納されている。隣接MB[BCD]として、N1,N2が指定された場合には、N1に対応するMV格納領域のアドレスに変換する。また、N3,N4が指定された場合には、N3に対応するMV格納領域のアドレスに変換する。これにより、隣接MB[BCD]のMBサイズが8×16の場合は、N1またはN2が指定されるとMV0、N3またはN4が指定されるとMV4を読み出すことができる。
【0131】
隣接マクロブロックのMBサイズが8×8の場合、N1に対応するMV格納領域にMV8、N3に対応するMV格納領域にMV12が格納されている。隣接MB[BCD]として、N1,N2が指定された場合には、N1に対応するMV格納領域のアドレスに変換する。また、N3,N4が指定された場合には、N3に対応するMV格納領域のアドレスに変換する。これにより、隣接MB[BCD]のMBサイズが8×8の場合は、N1またはN2が指定されるとMV8、N3またはN4が指定されるとMV12を読み出すことができる。
【0132】
図23により説明する。図23は、サブブロック分割の場合の隣接MB[BCD]のアドレス変換を示している。なお、基本マクロブロック範囲における上半分がどのような構成であっても、隣接MB[BCD]に代表MVとして格納される値は同じであるので、図では上半分を省略している。
【0133】
隣接マクロブロックのMBサイズが8×4の場合、N1に対応するMV格納領域にMV8、及びN3に対応するMV格納領域にMV12が格納されている。この場合は、隣接MB[BCD]として、N1,N2が指定された場合には、N1に対応するMV格納領域のアドレスに変換する。また、N3,N4が指定された場合には、N3に対応するMV格納領域のアドレスに変換する。
【0134】
隣接マクロブロックのMBサイズが4×8の場合、N1に対応するMV格納領域にMV8、N2に対応するMV格納領域にMV9、N3に対応するMV格納領域にMV12、そしてN4に対応するMV格納領域にMV13が格納されている。この場合は、隣接MB[BCD]として指定されたN1,N2,N3、またはN4に対応するMV格納領域のアドレスに変換する。
【0135】
隣接マクロブロックのMBサイズが4×4の場合、N1に対応するMV格納領域にMV10、N2に対応するMV格納領域にMV11、N3に対応するMV格納領域にMV14、そしてN4に対応するMV格納領域にMV15が格納されている。この場合は、隣接MB[BCD]として指定されたN1,N2,N3、またはN4に対応するMV格納領域のアドレスに変換する。
【0136】
このように、アドレス変換部213では、隣接MB[BCD]が指定されると、図22及び図23に示したアドレス変換を行って、指定された隣接MB[BCD]の代表MV格納領域のアドレスに変換し、MVP生成部212へ提供する。
【0137】
以上説明したように、本発明の実施の形態では、アドレス変換部213によってMVP生成部212によるMV参照時には、参照されるMVが格納されるアドレスを算出するので、参照用のMVをメモリに展開しておく必要がなくなり、不要なデータの格納サイクルをなくすことができる。この結果、MV処理の処理時間を短縮することができる。
【0138】
たとえば、MBサイズが16×16の場合、従来のMV処理では、MVの格納に16サイクル、隣接MB[A]の格納に4サイクル、及び隣接MB[BCD]の格納に4サイクルの計24サイクルが必要であった。これに対し、本実施の形態では、MVの格納に1サイクル、隣接MB[A]の格納に1サイクル、及び隣接MB[BCD]の格納に1サイクルの計3サイクルで処理が終了する。したがって、最大21サイクル削減することができる。
【0139】
また、MBサイズが8×8の場合、従来のMV処理では、16×16と同様に計24サイクルが必要であった。これに対し、本実施の形態では、MVの格納に8サイクル、隣接MB[A]の格納に2サイクル、及び隣接MB[BCD]の格納に2サイクルの計12サイクルで処理が終了する。したがって、最大12サイクル削減することができる。
【0140】
サイクル数の削減は、1マイクロブロックのMBサイズが大きいほど、また、処理対象の画面サイズが大きいほど、効果が大きくなる。
【図面の簡単な説明】
【0141】
【図1】実施の形態に適用される発明の概念図である。
【図2】本発明の実施の形態の画像符号化装置の構成を示したブロック図である。
【図3】本発明の実施の形態の画像復号装置の構成を示したブロック図である。
【図4】本実施の形態の画像復号装置のフレーム間予測における動きベクトル生成処理を示した機能ブロック図である。
【図5】本発明の実施の形態のMV格納領域とフレーム構成との関係を示した図である。
【図6】16×16のマクロブロックと、ブロック番号の関係を示した図である。
【図7】本発明の実施の形態のMB(16×16)の場合のMV生成処理と格納処理を示した図である。
【図8】本発明の実施の形態のMB(16×8)の場合のMV生成処理と格納処理を示した図である。
【図9】本発明の実施の形態のMB(8×16)の場合のMV生成処理と格納処理を示した図である。
【図10】本発明の実施の形態のMB(8×8)の場合のMV生成処理と格納処理を示した図である。
【図11】本発明の実施の形態のサブマクロブロック分割の場合のMV生成処理と格納処理を示した図(サブマクロブロック分割と代表MV生成処理)である。
【図12】本発明の実施の形態のサブマクロブロック分割の場合のMV生成処理と格納処理を示した図(代表MVの生成と書き込みシーケンス)である。
【図13】本発明の実施の形態のアドレス変換テーブル(MB(16×16),MB(16×8))の機能を示した図である。
【図14】本発明の実施の形態のアドレス変換テーブル(MB(8×16),MB(8×8),サブMB)の機能を示した図である。
【図15】本発明の実施の形態における隣接マクロブロックMB[A]のMV格納処理を示した図である。
【図16】本発明の実施の形態における隣接マクロブロックMB[BCD]のMV格納処理を示した図である。
【図17】本発明の実施の形態の隣接MB(MB(16×16)とMB(16×8))の代表MV格納領域を示している。
【図18】本発明の実施の形態の隣接MB(MB(8×16)とMB(8×8))の代表MV格納領域を示している。
【図19】本発明の実施の形態の隣接MB(MB(4×4))の代表MV格納領域を示している。
【図20】本発明の実施の形態の隣接MB[A]格納領域を参照する場合のアドレス変換テーブルの機能を示した図である。
【図21】本発明の実施の形態の隣接MB[A]格納領域を参照する場合のアドレス変換テーブルの機能を示した図である。
【図22】本発明の実施の形態の隣接MB[BCD]格納領域を参照する場合のアドレス変換テーブルの機能を示した図である。
【図23】本発明の実施の形態の隣接MB[BCD]格納領域を参照する場合のアドレス変換テーブルの機能を示した図である。
【図24】H.264におけるマクロブロックのブロックサイズを示した図である。
【図25】従来の画像復号装置における動きベクトル生成処理部の構成図である。
【図26】MB(16×16)の隣接マクロブロックと、MV展開処理とを示した図である。
【図27】MB(16×8)の隣接マクロブロックを示した図である。
【図28】MVの展開処理を示す図である。
【符号の説明】
【0142】
1 参照画像記憶部
2 予測値算出部
3 アドレス算出部
4 参照画像格納部

【出願人】 【識別番号】000005223
【氏名又は名称】富士通株式会社
【出願日】 平成18年8月17日(2006.8.17)
【代理人】 【識別番号】100092152
【弁理士】
【氏名又は名称】服部 毅巖


【公開番号】 特開2008−48200(P2008−48200A)
【公開日】 平成20年2月28日(2008.2.28)
【出願番号】 特願2006−222395(P2006−222395)