(57)【要約】【課題】  ベクトル予測とＤＣ／ＡＣ予測とを行うために必要なメモリ領域のトータルの用量を小さくする。【解決手段】  本発明に係る画像符号化装置１０は、ＤＣ係数及びＡＣ係数を受け取ってＤＣ係数予測値及びＡＣ係数予測値を算出するＤＣ／ＡＣ予測器４と、動きベクトルを受け取って差分動きベクトルを算出する動きベクトル予測器１３と、ＤＣ／ＡＣ予測器４と動きベクトル予測器１３との両方からアクセス可能な共用メモリ１４とを備えている。【選択図】  図６
2006262188.tif 000002
【特許請求の範囲】
【請求項１】
ＤＣ係数及びＡＣ係数を受け取ってＤＣ係数予測値及びＡＣ係数予測値を算出するＤＣ／ＡＣ予測器と、
動きベクトルを受け取って差分動きベクトルを算出する動きベクトル予測器と、
前記ＤＣ／ＡＣ予測器と前記動きベクトル予測器との両方からアクセス可能なメモリ
とを備える
画像符号化装置。
【請求項２】
請求項１に記載の画像符号化装置であって、
前記ＤＣ／ＡＣ予測器は、前記ＤＣ係数及び前記ＡＣ係数を前記メモリに保存し、且つ、前記メモリに保存された前記ＤＣ係数及びＡＣ係数を用いて前記ＤＣ係数予測値及びＡＣ係数予測値を算出するように構成され、
前記動きベクトル予測器は、前記動きベクトルを前記メモリに保存し、且つ、前記メモリに保存された前記動きベクトルを用いて前記差分動きベクトルを算出するように構成された
画像符号化装置。
【請求項３】
請求項２に記載の画像符号化装置であって、
前記メモリは、複数のマクロブロックにそれぞれに対応付けられている複数のメモリエリアを備え、
前記メモリエリアのそれぞれは、前記ＤＣ係数及び前記ＡＣ係数、又は、前記動きベクトルの一方を、排他的に記憶するように構成された
画像符号化装置。
【請求項４】
請求項３に記載の画像符号化装置であって、
前記ＤＣ／ＡＣ予測器は、ある対象ブロックの前記ＤＣ係数予測値及び前記ＡＣ係数予測値を算出するときに、前記対象ブロックについて定められた参照ブロックに対応するデータを前記複数のメモリエリアから取り出し、前記取り出されたデータが前記ＤＣ係数及び前記ＡＣ係数、又は、前記動きベクトルのいずれであるかを判別し、前記取り出されたデータが前記動きベクトルである場合、前記取り出されたデータを無視して前記ＤＣ係数予測値及び前記ＡＣ係数予測値を算出するように構成された
画像符号化装置。
【請求項５】
請求項３又は請求項４に記載の画像符号化装置であって、
前記動きベクトル予測器は、ある対象ブロックの前記差分動きベクトルを算出するときに、前記対象ブロックについて定められた参照ブロックに対応するデータを前記複数のメモリエリアから取り出し、前記取り出されたデータが前記ＤＣ係数及び前記ＡＣ係数、又は、前記動きベクトルのいずれであるかを判別し、前記取り出されたデータが前記ＤＣ係数及び前記ＡＣ係数である場合、前記取り出されたデータを無視して前記差分動きベクトルを算出するように構成された
画像符号化装置。
【請求項６】
請求項３に記載の画像符号化装置であって、
前記メモリエリアのそれぞれは、対応するマクロブロックの下側２つのブロックにそれぞれに対応付けられている２つのメモリブロックを備え、
前記メモリブロックは、対応する前記ブロックについて算出されている前記ＤＣ係数及び前記ＡＣ係数、又は、前記動きベクトルの一方を、排他的に記憶するように構成された
画像符号化装置。
【請求項７】
請求項６に記載の画像符号化装置であって、
前記ＤＣ／ＡＣ予測器は、前記画像符号化装置の符号化の対象である対象マクロブロックの各ブロックのＤＣ係数及びＡＣ係数、及び前記対象マクロブロックの左に隣接するブロックのＤＣ係数及びＡＣ係数を保存するテンポラリメモリを備え、
前記メモリエリアの前記メモリブロックに保存されている前記ＤＣ係数及び前記ＡＣ係数は、前記対象マクロブロックの上に隣接しているブロックラインに位置するブロックのＤＣ係数及びＡＣ係数である
画像符号化装置。
【請求項８】
請求項６に記載の画像符号化装置であって、
前記動ベクトル予測器は、前記画像符号化装置の符号化の対象である対象マクロブロックの各ブロックの動きベクトル、及び前記対象マクロブロックの左に隣接するブロックの動きベクトルを保存するテンポラリメモリを備え、
前記メモリエリアの前記メモリブロックに保存されている前記動きベクトルは、前記対象マクロブロックの上に隣接しているブロックラインに位置するブロックの動きベクトルである
画像符号化装置。
【請求項９】
ＤＣ係数予測値及びＡＣ係数予測値を受け取って、前記ＤＣ係数予測値及び前記ＡＣ係数予測値からＤＣ係数及びＡＣ係数を復元するＤＣ／ＡＣ逆予測器と、
差分動きベクトルを受け取って、前記差分動きベクトルから動きベクトルを復元する動きベクトル逆予測器と、
前記ＤＣ／ＡＣ逆予測器と前記動きベクトル逆予測器との両方からアクセス可能なメモリ
とを具備する
画像復号化装置。
【請求項１０】
請求項９に記載の画像復号化装置であって、
前記ＤＣ係数予測値は、第１及び第２ＤＣ係数予測値を含み、
前記ＡＣ係数予測値は、第１及び第２ＡＣ係数予測値を含み、
前記ＤＣ係数は、第１及び第２ＤＣ係数を含み、
前記ＡＣ係数は、第１及び第２ＡＣ係数を含み、
前記差分動きベクトルは、第１及び第２差分動きベクトルを含み、
前記動きベクトルは、第１及び第２動きベクトルを含み、
前記ＤＣ／ＡＣ逆予測器は、前記第１ＤＣ係数予測値及び前記第１ＡＣ係数予測値から前記第１ＤＣ係数及び前記第１ＡＣ係数を復元して前記メモリに格納し、且つ、前記メモリに格納された前記第１ＤＣ係数及び前記第１ＡＣ係数を用いて、前記第２ＤＣ係数予測値及び前記第２ＡＣ係数予測値から前記第２ＤＣ係数及び前記第２ＡＣ係数を復元するように構成され、
前記動きベクトル逆予測器は、前記第１差分動きベクトルから前記第１動きベクトルを復元して前記メモリに格納し、且つ、前記メモリに格納された前記第１動きベクトルを用いて前記第２差分動きベクトルから前記第２動きベクトルを復元するように構成された
画像復号化装置。
【請求項１１】
請求項１０に記載の画像復号化装置であって、
前記メモリは、複数のマクロブロックにそれぞれに対応付けられている複数のメモリエリアを備え、
前記メモリエリアのそれぞれは、前記第１ＤＣ係数及び前記第１ＡＣ係数、又は、前記第１動きベクトルの一方を、排他的に記憶するように構成された
画像復号化装置。
【請求項１２】
請求項１１に記載の画像復号化装置であって、
前記メモリエリアのそれぞれは、対応するマクロブロックの下側２つのブロックにそれぞれに対応付けられている２つのメモリブロックを備え、
前記メモリブロックは、対応する前記ブロックについて算出されている前記ＤＣ係数及び前記ＡＣ係数、又は、前記動きベクトルの一方を、排他的に記憶するように構成された
画像復号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像符号化器、及び画像復号器に関しており、特に、ベクトル予測（motion vector prediction）とＤＣ／ＡＣ予測（DC/AC prediction）の両方を行う画像符号化方式に対応する画像符号化器、及び画像復号器に関する。
【背景技術】
【０００２】
画像符号化には、大きく分けて、フレーム間予測とフレーム内予測との２つの手法がある。フレーム間予測は、時間的に近接する２つのフレームの画像には、多くの場合強い相関関係があることを利用した画像符号化である。動画像に急激な変化がない限り、動画像の多くの部分は、対象フレームとそれに時間的に近接するフレームとでほぼ同じである。従って、フレーム間の画像の変化を表すデータを符号化することにより、効率的な画像符号化を行うことができる。動き検出（motion estimation）は、フレーム間予測による画像符号化の典型例である。動き検出では、対象フレームの画像（入力画像）と参照画像との変化を表す動きベクトル（motion vector）が生成され、その動きベクトルが符号化される。
【０００３】
一方、フレーム内予測とは、一のフレーム内における隣接する又は近傍の画素の階調は、互いに強い相関を有していることを利用した画像符号化である。ＤＣＴ（discrete cosine translation）は、フレーム内予測による画像符号化の典型例である。
【０００４】
多くの画像符号化技術は、フレーム間予測とフレーム内予測とを併用している。例えば、ＭＰＥＧ４  ＳＰ（Moving Picture Experts Group 4 Simple Profile）に準拠した動画像データは、フレーム内予測のみを用いて生成されるＩ−ＶＯＰ（Video Object Plane）と、フレーム間予測と順方向フレーム内予測とを用いて生成されるＰ−ＶＯＰとで動画像を表現する。また、ＭＰＥＧ４  ＡＳＰ（Advanced Simple Profile）に準拠した動画データは、Ｉ−ＶＯＰ、Ｐ−ＶＯＰに加え、双方向フレーム間予測とフレーム内予測とを用いて生成されるＢ−ＶＯＰと、Ｓ−ＶＯＰ（スプライトＶＯＰ）とで動画像を表現する。ＭＰＥＧ４では、フレーム内予測による画像符号化はイントラモードと呼ばれ、フレーム間予測による画像符号化はインターモードと呼ばれることに留意されたい。
【０００５】
フレーム間予測において使用される画像符号化技術の一つが、ベクトル予測である。ベクトル予測とは、動き検出によって算出された動きベクトルを、更に差分符号化によって符号化することによって画像の圧縮を行う技術である。
【０００６】
一方、フレーム内予測において使用される画像符号化技術の一つが、ＤＣ／ＡＣ予測（DC/AC prediction）である。ＤＣ／ＡＣ予測とは、画像のＤＣ成分及びＡＣ成分を、差分符号化によって符号化することにより画像の圧縮を行う技術である。フレーム内予測において、ＤＣＴが使用される場合には、ＤＣＴによって算出されたＤＣ係数およびＡＣ係数が差分符号化によって符号化される。
【０００７】
上述のＭＰＥＧ４は、ベクトル予測とＤＣ／ＡＣ予測の両方を採用している。以下では、ＭＰＥＧ４に規定されたベクトル予測の手順とＤＣ／ＡＣ予測の手順とが概略的に説明される。
【０００８】
ＭＰＥＧ４に規定されたベクトル予測、ＤＣ／ＡＣ予測では、一のフレーム画像が、図１に示されているフォーマットを有していることを基礎としている。ＭＰＥＧ４は、一のフレーム画像を１６×１６の画素から構成されるマクロブロック（ＭＢ）に分割し、更に、一のマクロブロックを２行２列のブロックに分割する。一のブロックは、８×８の画素から構成される。例えば、一のフレーム画像が、横７２０×縦４８０画素で構成される場合、一のフレーム画像は、３０行４５列のマクロブロックで構成される。この場合、一のフレーム画像は、６０行９０列のブロックで構成されると表現することもできる。以下において、一のフレーム画像の横方向に並ぶ１行のマクロブロックはマクロブロックラインと呼ばれることがあり、１行のブロックは、ブロックラインと呼ばれることがある。ＭＰＥＧ４に規定されたベクトル予測、ＤＣ／ＡＣ予測では、ブロック毎に処理が行われる。
【０００９】
図２Ａ乃至図２Ｂは、ＭＰＥＧ４に規定されたベクトル予測の手順の概略図である。ＭＰＥＧ４によれば、ある対象マクロブロックのある対象ブロックのベクトル予測は、３つの参照ブロックの動きベクトルを参照して行われる；図２Ａ乃至図２Ｂでは、対象ブロックが記号「ＭＶ」、参照ブロックが記号「ＭＶ１」、「ＭＶ２」、「ＭＶ３」によって参照されている。ベクトル予測では、３つの参照ブロックについて算出された動きベクトルの中央値が求められ、その中央値と対象ブロックの動きベクトルの差分が、最終的に差分動きベクトルとして算出される。
【００１０】
差分動きベクトルには、いずれの参照ブロックから当該差分動きベクトルが生成されたかを示す制御データ（即ち、差分動きベクトルの生成に使用された中央値が、いずれの参照ブロックの動きベクトルであるかを示す制御データ）が添付される。この制御データは、差分動きベクトルから元の動きベクトルを復元する、即ち、ベクトル逆予測を行うために使用される。ベクトル逆予測は、制御データに示されている参照ブロックの動きベクトルに差分動きベクトルを加算することによって行われる。
【００１１】
参照ブロックと対象ブロックとの相対位置は、対象ブロックの対象マクロブロック内の位置に応じて異なる。図２Ａに示されているように、対象ブロックＭＶが対象マクロブロックの左上に位置する場合、対象ブロックＭＶの左に隣接するブロックＭＶ１、上に隣接するブロックＭＶ２、及び、ブロックＭＶ２から２ブロックだけ右に位置するブロックＭＶ３が参照ブロックとして使用される。図２Ｂに示されているように、対象ブロックＭＶが、マクロブロックの右上に位置する場合、対象ブロックＭＶの左に隣接するブロックＭＶ１、上に隣接するブロックＭＶ２、及び、ブロックＭＶ２の右に隣接するブロックＭＶ３が、参照ブロックとして使用される。図２Ｃに示されているように、対象ブロックＭＶが、マクロブロックの左下に位置する場合、対象ブロックＭＶの左に隣接するブロックＭＶ１、上に隣接するブロックＭＶ２、及び、ブロックＭＶ２の右に隣接するブロックＭＶ３が、参照ブロックとして使用される。更に、図２Ｄに示されているように、対象ブロックＭＶが、マクロブロックの右下に位置する場合、対象ブロックＭＶの左に隣接するブロックＭＶ１、ブロックＭＶ１の上に隣接するブロックＭＶ２、及び、対象ブロックＭＶの上に隣接するブロックＭＶ３が、参照ブロックとして使用される。
【００１２】
ただし、動きベクトルが算出されていないブロックが参照ブロックとして選択された場合には、その参照ブロックは存在しないものとして対象ブロックＭＶに対するベクトル予測が行われる。例えば、図２Ａを参照して、参照ブロックＭＶ１に対して動きベクトルが算出されていない場合には、対象ブロックＭＶの差分動きベクトルは、参照ブロックＭＶ２、ＭＶ３の動きベクトルから算出される。このような状況は、対象マクロブロックに隣接するマクロブロックが、インターモードで符号化されている場合や、対象マクロブロックが画像の端に位置している場合に起こり得る。
【００１３】
図２Ａ乃至図２Ｄから理解されるように、ある対象マクロブロックの４つのブロックについてベクトル予測を行うためには、対象マクロブロックの４つのブロックの動きベクトルに加え、図２Ｅに図示された位置にある対象マクロブロックの周囲の５つのブロック（即ち、対象マクロブロックの左隣の２つのブロックと、対象マクロブロックの上に隣接するブロックラインの３つのブロック）の動きベクトルが必要である。ベクトル予測を行うためには、これらのブロックの動きベクトルを一時的にワークエリアに保存しておく必要がある。
【００１４】
一方、ある対象マクロブロックについてベクトル逆予測を行うためには、その対象マクロブロックに含まれる各対象ブロックに対応する参照ブロックについて復元された動きベクトルをワークエリアに保存する必要がある。参照ブロックは上記の５つのブロックから選択され得るから、対象マクロブロックに対するベクトル逆予測を行うためには、当該５つのブロックについて復元された動きベクトルを一時的にワークエリアに保存しておく必要がある。
【００１５】
一方、図３Ａ乃至図３Ｄは、ＭＰＥＧ４に規定されたＤＣ／ＡＣ予測の手順の概略図である。ＭＰＥＧ４によれば、ある対象マクロブロックのある対象ブロックのＤＣ／ＡＣ予測は、３つの参照ブロックのＤＣ係数及びＡＣ係数を参照して行われる。ベクトル予測とは異なり、ＤＣ／ＡＣ予測における３つの参照ブロックと対象ブロックとの相対位置は、対象ブロックのマクロブロック内の位置に無関係である。図３Ａ〜３Ｄに示されているように、対象ブロックＸが対象マクロブロックのいずれの位置にあるかに無関係に、ある対象ブロックＸのＤＣ／ＡＣ予測では、対象ブロックＸの左隣のブロックＡ、ブロックＡの上隣のブロックＢ、及び対象ブロックＸの上隣のブロックＣが参照ブロックとして使用される。参照ブロックＡ、Ｂ、Ｃについて算出されたＤＣ係数に基づいて、ＤＣ係数予測値及びＡＣ係数予測値の算出に使用されるブロックが参照ブロックＡ、Ｃのいずれかから選択される。選択されたブロックのＤＣ係数及びＡＣ係数と、対象ブロックＸのＤＣ係数及びＡＣ係数との差分が、ＤＣ係数予測値及びＡＣ係数予測値として算出される。
【００１６】
ただし、ＤＣ係数及びＡＣ係数が算出されていないブロックが参照ブロックとして選択された場合には、その参照ブロックは存在しないものとして対象ブロックＸに対するＤＣ／ＡＣ予測が行われる。例えば、図３Ａを参照して、参照ブロックＢに対してＤＣ係数及びＡＣ係数が算出されていない場合には、対象ブロックＭＶのＤＣ係数予測値及びＡＣ係数予測値は、参照ブロックＭＶ１、ＭＶ３のＤＣ係数及びＡＣ係数から算出される。このような状況は、対象マクロブロックに隣接するマクロブロックが、イントラモードで符号化されている場合や、対象マクロブロックが画像の端に位置している場合に起こり得る。
【００１７】
算出されたＤＣ係数予測値及びＡＣ係数予測値には、いずれの参照ブロックから当該ＤＣ係数予測値及びＡＣ係数予測値が生成されたかを示す制御データが添付される。この制御データは、ＤＣ係数予測値及びＡＣ係数予測値から元の動きＤＣ係数及びＡＣ係数を復元する、即ち、ＤＣ／ＡＣ逆予測を行うために使用される。ＤＣ／ＡＣ逆予測は、制御データに示されている参照ブロックのＤＣ係数及びＡＣ係数にＤＣ係数予測値及びＡＣ係数予測値を加算することによって行われる。
【００１８】
図３Ａ乃至図３Ｄから理解されるように、ある対象マクロブロックの４つのブロックについてＤＣ／ＡＣ予測を行うためには、対象マクロブロックの４つのブロックのＤＣ係数及びＡＣ係数の組に加え、図３Ｅに図示された位置にある対象マクロブロックの周囲の５つのブロック（即ち、対象マクロブロックの左隣の２つのブロックと、対象マクロブロックの上に隣接するブロックラインの３つのブロック）のＤＣ係数及びＡＣ係数の組が必要である。ベクトル予測を行うためには、これらのブロックのＤＣ係数及びＡＣ係数を一時的にワークエリアに保存しておく必要がある。
【００１９】
一方、ある対象マクロブロックについてＤＣ／ＡＣ逆予測を行うためには、その対象マクロブロックに含まれる各対象ブロックに対応する参照ブロックについて復元されたＤＣ／ＡＣ係数をワークエリアに保存する必要がある。参照ブロックは上記の５つのブロックから選択され得るから、対象マクロブロックに対するＤＣ／ＡＣ逆予測を行うためには、当該５つのブロックについて復元されたＤＣ係数及びＡＣ係数一時的にワークエリアに保存しておく必要がある。
【００２０】
動画像の符号化及び復号化を小さいハードウエアで実現する、とりわけ、符号化処理及び復号化処理のワークエリアとして使用されるメモリの容量を抑制することは、画像符号化装置、及び画像復号化装置において最も重要な要求の一つである。ＭＰＥＧ４を初めとする多くの動画符号化規格では、動画像の符号化及び復号化を行うためのハードウエアの実装形態については何ら規定されていないから、効率的なハードウエアの実装形態を開発することは、画像符号化装置、及び画像復号化装置のメーカにとって重要である。
【００２１】
例えば、特開２００４−２７４４１１号公報（特許文献１）は、ベクトル予測のワークエリアとして使用される動きベクトルメモリの容量を、１マクロブロックライン分の動きベクトルを保存可能な容量にまで減少させるための技術を開示している。この技術では、必要に応じて動きベクトルメモリの内部で動きベクトルをコピーすることにより、動きベクトルメモリの容量を減少させている。
【００２２】
一方、特開２００２−１１８８５３号公報（特許文献２）は、ＤＣ／ＡＣ予測の参照値を保存するメモリ領域の容量を、１マクロブロックライン分のＤＣ／ＡＣ予測処理に必要な容量まで減少させるための画像復号装置を開示している。この技術では、復元されたＤＣ成分とＡＣ成分とをライン部に複写することにより、メモリ領域の容量を小さくしている。
【特許文献１】特開２００４−２７４４１１号公報
【特許文献２】特開２００２−１１８８５３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２３】
しかしながら、従来技術には、ベクトル予測とＤＣ／ＡＣ予測とを行うために必要なメモリ領域のトータルの容量が充分に小さくないという課題がある。更に、従来技術には、ベクトル逆予測とＤＣ／ＡＣ逆予測とを行うために必要なメモリ領域のトータルの容量が充分に小さくないという課題がある。上記の２つの従来技術を併用しても、ベクトル予測とＤＣ／ＡＣ予測とを行うために必要なメモリ領域の容量は、２マクロブロックライン分の予測処理に必要な容量までにしか減少されない。ベクトル逆予測及びＤＣ／ＡＣ逆予測についても同様である。
【課題を解決するための手段】
【００２４】
上記の課題を解決するために、本発明は、ＤＣ／ＡＣ予測とベクトル予測とが排他的に行われることを利用する。具体的には、本発明に係る画像符号化装置は、一のメモリをＤＣ／ＡＣ予測とベクトル予測のワークエリアとして兼用し、これによって、これらの処理の実行に必要なメモリ領域を削減する。同様に、本発明に係る画像復号化装置は、一のメモリをＤＣ／ＡＣ逆予測とベクトル逆予測のワークエリアとして兼用し、これによって、これらの処理の実行に必要なメモリ領域を削減する。
【００２５】
具体的には、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、［特許請求の範囲］の記載と［発明を実施するための最良の形態］の記載との対応関係を明らかにするために、［発明を実施するための最良の形態］で使用される番号・符号が付加されている。但し、付加された番号・符号は、［特許請求の範囲］に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【００２６】
本発明の一の観点において、本発明に係る画像符号化装置（１０）は、ＤＣ係数及びＡＣ係数を受け取ってＤＣ係数予測値及びＡＣ係数予測値を算出するＤＣ／ＡＣ予測器（４）と、動きベクトルを受け取って差分動きベクトルを算出する動きベクトル予測器（１３）と、ＤＣ／ＡＣ予測器（４）と動きベクトル予測器（１３）との両方からアクセス可能なメモリ（１４）とを備えている。
【００２７】
好適な実施形態では、ＤＣ／ＡＣ予測器（４）は、前記ＤＣ係数及びＡＣ係数を前記メモリに保存し、且つ、前記メモリに保存された前記ＤＣ係数及びＡＣ係数を用いて前記ＤＣ係数予測値及びＡＣ係数予測値を算出するように構成される。一方、動きベクトル予測器（１３）は、前記動きベクトルをメモリ（１４）に保存し、且つ、前記メモリ（１４）に保存された前記動きベクトルを用いて前記差分動きベクトルを算出するように構成される。
【００２８】
他の観点において、本発明に係る画像復号化装置（４０）は、ＤＣ係数予測値及びＡＣ係数予測値を受け取って、前記ＤＣ係数予測値及び前記ＡＣ係数予測値からＤＣ係数及びＡＣ係数を復元するＤＣ／ＡＣ逆予測器（４２）と、差分動きベクトルを受け取って、前記差分動きベクトルから動きベクトルを復元する動きベクトル逆予測器（４６）と、ＤＣ／ＡＣ逆予測器（４２）と動きベクトル逆予測器（４６）との両方からアクセス可能なメモリ（４９）とを具備する。
【００２９】
好適な実施形態では、ＤＣ／ＡＣ逆予測器（４２）は、第１ＤＣ係数予測値及び第１ＡＣ係数予測値から第１ＤＣ係数及び第１ＡＣ係数を復元してメモリ（４９）に格納し、且つ、メモリ（４９）に格納された第１ＤＣ係数及び第１ＡＣ係数を用いて、第２ＤＣ係数予測値及び前記第２ＡＣ係数予測値から前記第２ＤＣ係数及び前記第２ＡＣ係数を復元するように構成される。一方、動きベクトル逆予測器（４６）は、前記第１差分動きベクトルから前記第１動きベクトルを復元して前記メモリ（４９）に格納し、且つ、メモリ（４９）に格納された前記第１動きベクトルを用いて前記第２差分動きベクトルから前記第２動きベクトルを復元するように構成される。
【発明の効果】
【００３０】
本発明によれば、ベクトル予測とＤＣ／ＡＣ予測とを行うために必要なメモリ領域のトータルの容量を小さくすることができる。
【発明を実施するための最良の形態】
【００３１】
以下、添付図面を参照しながら、本発明による画像符号化装置及び画像復号化装置の好適な実施形態が詳細に説明される。
【００３２】
第１  処理対象の画像のフォーマット
図４、図５は、本実施の形態に係る画像符号化装置及び画像復号化装置によって処理される動画像のフォーマットを示している。本実施の形態に係る画像符号化装置及び画像復号化装置は、ＭＰＥＧ４  ＳＰに準拠した動画像のフォーマットに対応している。図４に示されているように、ＭＰＥＧ４  ＳＰに準拠した動画像は、一連のＶＯＰで構成されている。
【００３３】
各ＶＯＰは、図５に示されているように、Ｍ行Ｎ列のマクロブロックに分割され、各マクロブロックは、更に、２行２列のブロックに分割される；これは、処理される画像が、２Ｍ行２Ｎ列のブロックに分割されていることを意味している。既述のように、各マクロブロックは、１６×１６画素で構成され、各ブロックは、８×８画素で構成されている。
【００３４】
以下、本明細書において、第ｉ番目の行、第ｊ番目の列に位置するマクロブロックは、マクロブロックＭＢ（ｉ，ｊ）と記述される。更に、第ｐ番目の行、第ｑ番目のブロックは、ブロックＢ（ｐ，ｑ）と記述される。このような記述法によると、マクロブロックＭＢ（ｉ，ｊ）は、４つのブロックＢ（２ｉ−１，２ｊ−１），Ｂ（２ｉ−１，２ｊ），Ｂ（２ｉ，２ｊ−１），Ｂ（２ｉ，２ｊ）で構成されることになる。
【００３５】
図４を再度に参照して、ＭＰＥＧ４  ＳＰに準拠した動画像のＶＯＰには、Ｉ−ＶＯＰとＰ−ＶＯＰの２種類がある。Ｉ−ＶＯＰは、イントラモードのみを使用して（即ち、フレーム内予測のみを使用して）符号化されるＶＯＰであり、Ｐ−ＶＯＰは、イントラモードとインターモードの両方を使用して（即ち、フレーム内予測と順方向フレーム間予測との両方を使用して）符号化されるＶＯＰである。Ｐ−ＶＯＰの各マクロブロックは、イントラモードと、インターモードとのうちのいずれかの圧縮モードによって圧縮される。後述されるように、イントラモードに設定されたマクロブロックは、ＤＣＴと、量子化と、ＤＡ／ＡＣ予測と、可変長符号化とを用いて符号化される。一方、イントラモードに設定されたマクロブロックは、動き補償と、動きベクトル予測と、可変長符号化とを用いて符号化される。
【００３６】
第２  画像符号化装置
１．画像符号化装置の全体構成と動作の概略
図６は、本実施の形態に係る画像符号化装置１０の構成を示すブロック図である。当該画像符号化装置は、ＭＰＥＧ４  ＳＰに準拠した動画像の符号化に対応した構成を有している。具体的には、当該画像符号化装置１０は、減算器１と、ＤＣＴ演算器２と、量子化器３と、ＤＣ／ＡＣ予測器４と、可変長符号器５と、逆量子化器６と、逆ＤＣＴ演算器７と、加算器８と、ビデオメモリ９と、動き検出ブロック１１と、動き補償ブロック１２と、動きベクトル予測器１３とを備えている。
【００３７】
減算器１は、符号化の対象であるマクロブロックの圧縮モードに応じて、外部から入力される入力画像の画像データと、動き補償ブロック１２から出力される予測画像データとの差分を算出し、或いは外部入力画像素データをそのまま出力する機能を有している；符号化の対象であるマクロブロックは、以下、対象マクロブロックといい、外部から入力される入力画像の画像データは、以下、外部入力画像データという。対象マクロブロックがイントラモードで符号化されるマクロブロックである場合、減算器１は、外部入力画像データをそのままＤＣＴ演算器２に出力する。一方、対象マクロブロックがインターモードで符号化されるマクロブロックである場合、減算器１は、外部入力画像データと予測画像データとの差分をＤＣＴ演算器２に出力する。
【００３８】
ＤＣＴ演算器２は、減算器１から供給される画像データに対して離散コサイン変換（ＤＣＴ）を施してＤＣ係数及びＡＣ係数を算出し、量子化器３に出力する。
【００３９】
量子化器３は、ＤＣ係数及びＡＣ係数を量子化する。量子化されたＤＣ係数及びＡＣ係数は、ＤＣ／ＡＣ予測器４及び逆量子化器６に送られる。
【００４０】
ＤＣ／ＡＣ予測器４は、量子化器３から送られてくる量子化されたＤＣ係数及びＡＣ係数についてＭＰＥＧ４に規定されたＤＣ／ＡＣ予測を行い、ＤＣ係数予測値及びＡＣ係数予測値を算出する。ＤＣ／ＡＣ予測器４は、テンポラリメモリ２１を備えており、そのテンポラリメモリ２１を用いてＤＣ／ＡＣ予測を行う。ＤＣ／ＡＣ予測によって算出されたＤＣ係数予測値及びＡＣ係数予測値は、可変長符号器５に送られる。画像符号化装置１０には、更に、ＤＣ／ＡＣ予測器４をバイパスするデータスルーパス４ａが設けられている。このデータスルーパス４ａは、ＤＣ／ＡＣ予測が行われないとき（即ち、インターモードで対象マクロブロックを符号化するとき）に使用される。
【００４１】
逆量子化器６、逆ＤＣＴ演算器７、加算器８、ビデオメモリ９、動き検出ブロック１１、及び動き補償ブロック１２は、動き補償を行うための回路群である。逆量子化器６は、量子化器３から送られてくる量子化されたＤＣ係数及びＡＣ係数に対して逆量子化を行う。逆ＤＣＴ演算器７は、逆量子化されたＤＣ係数及びＡＣ係数に対して逆離散コサイン変換を行い、画像データを再生する。加算器８は、動き補償ブロック１２から出力される画像データと、逆ＤＣＴ演算器７から出力される画像データとを加算して、動き補償の際に参照される参照画像の画像データを再生する。ビデオメモリ９は、加算器８から出力される参照画像の画像データを保存する。動き検出ブロック１１は、外部から入力される外部入力画像データとビデオメモリ９に保存されている参照画像の画像データとを使用して参照画像から入力画像への動き検出を行い、動きベクトルを算出する。動き検出ブロック１１によって算出された動きベクトルは、動き補償ブロック１２と動きベクトル予測器１３に送られる。動き補償ブロック１２は、動き検出ブロック１１によって算出された動きベクトルを使用してビデオメモリ９に保存されている参照画像について動き補償（motion compensation）を行い、予測画像データが生成される。予測画像データは、減算器１と加算器８に供給される。
【００４２】
動きベクトル予測器１３は、動き検出ブロック１１によって算出された動きベクトルについてベクトル予測を行い、差分動きベクトルを算出する。動きベクトル予測器１３は、テンポラリメモリ２４を備えており、そのテンポラリメモリ２４を用いてベクトル予測を行う。ベクトル予測によって算出された差分動きベクトルは、可変長符号器５に送られる。
【００４３】
可変長符号器５は、ＤＣ／ＡＣ予測器４から送られるＤＣ係数予測値及びＡＣ係数予測値、並びに、動きベクトル予測器１３から送られる差分動きベクトルについて可変長符号化を行い、符号化データを最終的に生成する。
【００４４】
画像符号化装置１０は、更に、ＤＣ／ＡＣ予測器４と動きベクトル予測器１３の両方からアクセス可能な共用メモリ１４を備えている。共用メモリ１４は、符号化の対象である対象マクロブロックの上に隣接するブロックについて算出されたＤＣ係数、ＡＣ係数や、動きベクトルを保存するために使用されるワークエリアである；ＤＣ／ＡＣ予測器４と動きベクトル予測器１３は、この共用メモリ１４をワークエリアとして共有している。図２Ｅ、及び図３Ｅに図示されているように、ＤＣ／ＡＣ予測及びベクトル予測には、対象マクロブロックの上に隣接するブロックのＤＣ係数、ＡＣ係数や、動きベクトルが使用されることに留意されたい。より具体的には、ＤＣ／ＡＣ予測器４と動きベクトル予測器１３は、選択器１５を介して共用メモリ１４に接続されている。選択器１５は、制御信号Ｃに応じてＤＣ／ＡＣ予測器４と動きベクトル予測器１３の一方を選択し、選択された一方の予測器が共用メモリ１４に接続される。後述されるように、ＤＣ／ＡＣ予測器４と動きベクトル予測器１３とが共用メモリ１４をワークメモリとして共有していることが、メモリ領域の容量をなるべく小さくするために重要である。
【００４５】
このような構成の画像符号化装置１０は、対象マクロブロックの圧縮モードに応じて異なる動作を行う。対象マクロブロックがイントラモードで符号化される場合、対象マクロブロックは、ＤＣＴと、量子化と、ＤＡ／ＡＣ予測と、可変長符号化とを用いて符号化される。詳細には、減算器１は、動き補償ブロック１２の出力を無視し、注目マクロブロックの外部入力画像データをそのままＤＣＴ演算器２に出力する。その外部入力画像データについて、ＤＣＴ演算器２によって離散コサイン変換が行われ、量子化器３によって量子化が行われ、ＤＣ／ＡＣ予測器４によってＤＣ／ＡＣ予測が行われ、更に、可変長符号器５によって可変長符号化される。可変長符号器５の出力が、目的とする符号化データである。
【００４６】
一方、対象マクロブロックがインターモードで符号化される場合、対象マクロブロックは、動き検出と、ベクトル予測と、可変長符号化とを用いて符号化される。より具体的には、減算器１の出力について、ＤＣＴ演算器２と、量子化器３とによってＤＣＴ及び量子化が行われ、量子化された画像データが、データスルーパス４ａを介して可変長符号器５に送られる。更に、量子化器３から出力される画像データから、逆量子化器６と、逆ＤＣＴ演算器７と、加算器８と、動き補償ブロック１２とによって参照画像の画像データが生成され、生成された画像データがビデオメモリ９に格納される。更に、ビデオメモリ９に格納された参照画像の画像データと外部入力画像データとから、動き検出ブロック１１によって動きベクトルが算出される。算出された動きベクトルに対して、動きベクトル予測器１３によってベクトル予測が行われて差分動きベクトルが算出される。量子化器３から出力される画像データと、差分動きベクトルとが、更に、可変長符号器５によって可変長符号化される。可変長符号器５の出力が、目的とする符号化データである。
【００４７】
本実施の形態に係る画像符号化装置１０の最も重要な特徴は、当該画像符号化装置１０は、ＤＣ／ＡＣ予測器４と動きベクトル予測器１３との両方からアクセス可能な共用メモリ１４を備えていることである。共用メモリ１４がＤＣ／ＡＣ予測器４と動きベクトル予測器１３との両方からアクセス可能であることにより、ＤＣ／ＡＣ予測器４及び動きベクトル予測器１３が、ＤＣ／ＡＣ予測及びベクトル予測を行うために使用するトータルのメモリ領域の容量、（即ち、共用メモリ１４と、ＤＣ／ＡＣ予測器４に搭載されるテンポラリメモリ２１と、動きベクトル予測器１３のテンポラリメモリ２４の容量の和）を小さくすることができる。
【００４８】
詳細には、本実施の形態に係る画像符号化装置１０は、対象マクロブロックの上に隣接するブロックラインのデータを共用メモリ１４に格納し、対象マクロブロックのデータ、及び、対象マクロブロックの左に隣接する２つのブロックのデータをＤＣ／ＡＣ予測器４と動きベクトル予測器１３のテンポラリメモリ２１、２４に保存するアーキテクチャを採用している。本実施の形態に係る画像符号化装置１０は、かかるアーキテクチャの採用とともに、共用メモリ１４とテンポラリメモリ２１、２４の間のデータ転送を最適化することにより、ＤＣ／ＡＣ予測及びベクトル予測を行うために使用するトータルのメモリ領域の容量を小さくしている。
【００４９】
２．  共用メモリ及びテンポラリメモリの構成と、それを用いたＤＣ／ＡＣ予測処理及びベクトル予測処理
（１）共用メモリ、及びテンポラリメモリの構成
図７は、ＤＣ／ＡＣ予測器４と動きベクトル予測器１３に共通に使用される共用メモリ１４のメモリマップを示している。既述のとおり、共用メモリ１４は、一ブロックライン分のＤＣ係数及びＡＣ係数、並びに動きベクトルを格納可能であるように構成されている。
【００５０】
より具体的には、共用メモリ１４は、マクロブロックにそれぞれに対応付けられたＮ個のメモリエリア３１１〜３１Ｎを備えている；メモリエリア３１１〜３１Ｎの数が、一マクロブロックラインに含まれるマクロブロックの数と同一であることに留意されたい。各メモリエリア３１ｊは、第ｊ列に位置する、あるマクロブロックに対応している。
【００５１】
メモリエリア３１１〜３１Ｎのそれぞれは、２つのメモリブロック３２と、一つのフラグ領域３３とを備えている。メモリエリア３１ｊに含まれる２つのメモリブロック３２は、以下、メモリブロック３２２ｊ−１、３２２ｊと記載され、メモリエリア３１ｊに含まれるフラグ領域３３は、フラグ領域３３ｊと記載される。言い換えれば、共用メモリ１４は、メモリブロック３２１〜３２２Ｎと、フラグ領域３３１〜３３Ｎとを備えている。
【００５２】
メモリブロック３２１〜３２２Ｎは、ブロックにそれぞれに対応付けられており、対応するブロックについて算出された（量子化後の）ＤＣ係数及びＡＣ係数、又は、動きベクトルを格納するために使用される。メモリブロック３２の数が、一ブロックラインに含まれるブロックの数２Ｎと同一であることに留意されたい。
【００５３】
より具体的には、あるメモリエリア３１ｊがイントラモードで符号化されるマクロブロックに対応付けられている場合、そのメモリエリア３１ｊに含まれる２つのメモリブロック３２２ｊ−１、３２２ｊには、メモリブロック３２２ｊ−１、３２２ｊがそれぞれに対応するブロックのＤＣ係数及びＡＣ係数が格納される。図７の例では、メモリブロック３２１、３２２に、対応するブロックのＤＣ係数（ＤＣ［１１：０］）及びＡＣ係数（ＡＣ１［１１：０］〜ＡＣ７［１１：０］）が格納されている。ＤＣ係数、ＡＣ係数は、いずれも１２ビットのデータである。
【００５４】
一方、あるメモリエリア３１ｊがインターモードで符号化されるマクロブロックに対応付けられている場合、そのメモリエリア３１ｊに含まれる２つのメモリブロック３２２ｊ−１、３２２ｊには、メモリブロック３２２ｊ−１、３２２ｊがそれぞれに対応するブロックの動きベクトルが格納される；図７の例では、メモリブロック３２５、３２５に、対応するブロックの動きベクトルＭＶＸ［７：０］、ＭＶＹ［７：０］が格納されている；ＭＶＸ［７：０］は、ｘ方向の動きベクトルであり、ＭＶＹ［７：０］は、ｙ方向の動きベクトルである。動きベクトルＭＶＸ［７：０］、ＭＶＹ［７：０］は、いずれも、８ビットのデータである。
【００５５】
各メモリブロック３２は、対応するブロックのＤＣ係数、及びＡＣ係数を格納可能なだけの容量を有している。このような容量があれば、各メモリブロック３２は、対応するブロックの動きベクトルを格納可能である。一のブロックについて算出される動きベクトルを格納するために必要な容量は、一のブロックについて算出されるＤＣ係数、及びＡＣ係数を格納するために必要な容量よりも小さい。
【００５６】
各メモリブロック３２には、無効データが格納されることも許される。無効データとは、ＤＣ係数及びＡＣ係数、動きベクトルのいずれでもないデータであり、ＤＣ／ＡＣ予測、ベクトル予測のいずれが行われる場合も無視されるデータである。例えば、最上列のマクロブロックラインについて、ＤＣ／ＡＣ予測及びベクトル予測が行われる場合、全てのメモリブロック３２１〜３２２Ｎに無効データが書き込まれる。
【００５７】
各フラグ領域３３には、それが格納しているデータの種類を示すフラグが格納される。各フラグ領域３３に格納されているフラグにより、各メモリブロック３２に格納されているデータが、ＤＣ係数及びＡＣ係数なのか、動きベクトルなのか、あるいは無効データなのかが判別可能である。
【００５８】
既述のように、ＤＣ／ＡＣ予測には、共用メモリ１４に加えてＤＣ／ＡＣ予測器４に内蔵されているテンポラリメモリ２１が使用される。テンポラリメモリ２１は、対象マクロブロックに含まれる４つのブロック、及び対象マクロブロックの左隣の２つのブロックのＤＣ係数及びＡＣ係数を格納するために使用される。図３Ｅから理解されるように、ＤＣ／ＡＣ予測には、対象マクロブロックの左隣の２つのブロックのＤＣ係数及びＡＣ係数が必要であることに留意されたい。
【００５９】
図８は、テンポラリメモリ２１の具体的な構成を示すブロック図である。テンポラリメモリ２１は、それぞれが一のブロックのＤＣ係数及びＡＣ係数を格納可能に構成された６つのメモリブロック：対象メモリブロック２２１〜２２４及び参照メモリブロック２３１、２３２を備えている。対象メモリブロック２２１、２２２、２２３、２２４は、それぞれ、対象マクロブロックの左上、右上、左下、右下に位置するブロックのＤＣ係数及びＡＣ係数を保存するためのワークエリアである。一方、参照メモリブロック２３１は、対象マクロブロックの左上のブロックの左隣に位置するブロックのＤＣ係数及びＡＣ係数を保存するためのワークエリアであり、参照メモリブロック２３２は、対象マクロブロックの左下に位置するブロックの左隣に位置するブロックのＤＣ係数及びＡＣ係数を保存するためのワークエリアである。
【００６０】
同様に、ベクトル予測には、共用メモリ１４に加えて動きベクトル予測器１３に内蔵されているテンポラリメモリ２４が使用される。テンポラリメモリ２４は、対象マクロブロックに含まれる４つのブロック、及び対象マクロブロックの左隣の２つのブロックの動きベクトルを格納するために使用される。図２Ｅから理解されるように、ベクトル予測には、対象マクロブロックの左隣の２つのブロックの動きベクトルが必要であることに留意されたい。
【００６１】
図９は、テンポラリメモリ２４の具体的な構成を示すブロック図である。テンポラリメモリ２４は、それぞれが一のブロックの動きベクトルを格納可能に構成された６つのメモリブロック：対象メモリブロック２５１〜２５４及び参照メモリブロック２６１、２６２を備えている。対象メモリブロック２５１、２５２、２５３、２５４は、それぞれ、対象マクロブロックの左上、右上、左下、右下に位置するブロックの動きベクトルを保存するためのワークエリアである。一方、参照メモリブロック２６１は、対象マクロブロックの左上のブロックの左隣に位置するブロックの動きベクトルを保存するためのワークエリアであり、参照メモリブロック２６２は、対象マクロブロックの左下に位置するブロックの左隣に位置するブロックの動きベクトルを保存するためのワークエリアである。
【００６２】
このようなアーキテクチャでは、ＤＣ／ＡＣ予測及びベクトル予測においてワークエリアとして使用されるメモリの容量は、１ブロックラインと６ブロック分のＤＣ係数及びＡＣ係数を格納するのに必要な容量、６ブロック分の動きベクトルを格納するのに必要な容量、及び、フラグ領域の容量の和である。このアーキテクチャの有用性は、従来技術によってＤＣ／ＡＣ予測及びベクトル予測を行うためには、２マクロブロックライン分のデータを格納するのに必要な容量が必要であったことと比較すれば明白である。
【００６３】
以下では、上記のアーキテクチャにより、ＤＣ／ＡＣ予測及びベクトル予測を実行できることを実証する。
【００６４】
（２）  ＤＣ／ＡＣ予測及びベクトル予測の処理手順
図１０Ａ乃至図１５Ｂは、第ｉ行に位置するマクロブロックＭＢ（ｉ，１）〜ＭＢ（ｉ，Ｎ）に対してＤＣ／ＡＣ予測及びベクトル予測を行う好適な手順を示す概念図である。
【００６５】
図１０Ａ（及び図１１Ａ）に示されているように、第ｉ行に位置するマクロブロックＭＢ（ｉ，１）〜（ｉ，Ｎ）に対するＤＣ／ＡＣ予測及びベクトル予測の開始前には、第ｉ行に位置するマクロブロックＭＢ（ｉ，１）〜ＭＢ（ｉ，Ｎ）の上に隣接するブロックラインに属するブロックＢ（２ｉ−２，１）〜ブロックＢ（２ｉ−１，２Ｎ）のデータ（即ち、ＤＣ係数及びＡＣ係数、又は動きベクトル）が共用メモリ１４に格納されている。詳細には、ブロックＢ（２ｉ−１，１）〜（２ｉ−１，２Ｎ）のデータは、それぞれ、共用メモリ１４のメモリブロック３２１〜３２２Ｎに格納されている。ただし、最も上の行（第１行）に位置するマクロブロックＭＢ（１，１）〜（１，Ｎ）に対するＤＣ／ＡＣ予測及びベクトル予測の開始前には、共用メモリ１４の全てのメモリブロック３２は、無効データが書き込まれてリセットされる。これは、マクロブロックＭＢ（１，１）〜（１，Ｎ）に対するＤＣ／ＡＣ予測及びベクトル予測の際には、参照されるべきブロックがその上側に存在しないからである。このような前提が妥当であることは、以下に述べられるＤＣ／ＡＣ予測及びベクトル予測の処理が回帰的であることから理解されるであろう。なお、以下において、あるメモリブロックに無効データを書き込んでリセットすることは、単にリセットする、と表記されることに留意されたい。
【００６６】
第ｉ行に位置するマクロブロックＭＢ（ｉ，１）〜ＭＢ（ｉ，Ｎ）の各ブロックのＤＣ／ＡＣ予測及びベクトル予測は、左に位置するマクロブロックから順に行われる。ＤＣ／ＡＣ予測及びベクトル予測の手順は、いずれのマクロブロックでも概略的には同じであるが、ＤＣ／ＡＣ予測及びベクトル予測の際に行われるデータ転送が、マクロブロックの位置に応じて多少異なる。以下では、各マクロブロックについてのＤＣ／ＡＣ予測及びベクトル予測の詳細を説明する。
【００６７】
（２−Ａ）左端のマクロブロックＭＢ（ｉ，１）の処理
図１０Ａ、１０Ｂ、図１１Ａ、図１１Ｂは、左端のマクロブロックＭＢ（ｉ，１）の処理を示す概念図である。
【００６８】
図１０Ａ（及び図１１Ａ）に示されているように、第ｉ行に位置するマクロブロックＭＢ（ｉ，１）のＤＣ／ＡＣ予測及びベクトル予測は、ＤＣ／ＡＣ予測器４のテンポラリメモリ２１の参照メモリブロック２３１、２３２をリセットし、動きベクトル予測器１３のテンポラリメモリ２４の参照メモリブロック２６１、２６２をリセットすることで開始される。これは、最も左に位置する対象マクロブロックＭＢ（ｉ，１）の左隣には、ＤＣ／ＡＣ予測、ベクトル予測の際に参照されるべきブロックが存在しないことに基づいている。図において、無効データが書き込まれたメモリブロックは、記号”Ｘ”によって示されている。
【００６９】
続いて、対象マクロブロックＭＢ（ｉ，１）の圧縮モードが判別され、共用メモリ１４が、判別された圧縮モードに応じてＤＣ／ＡＣ予測器４と動きベクトル予測器１３のいずれかに接続される。
【００７０】
対象マクロブロックＭＢ（ｉ，１）の圧縮モードがイントラモードである場合には、図１０Ａに示されているように、対象マクロブロックＭＢ（ｉ，１）の４つのブロックＢ（２ｉ−１，１）、Ｂ（２ｉ−１，２），Ｂ（２ｉ，１）、Ｂ（２ｉ，２）のＤＣ係数、及びＡＣ係数が、それぞれ、ＤＣ／ＡＣ予測器４のテンポラリメモリ２１の対象メモリブロック２２１〜２２４に格納される。一方、動きベクトル予測器１３のテンポラリメモリ２４の対象メモリブロック２５１〜２５４はリセットされる。
【００７１】
更に、共用メモリ１４のメモリブロック３２１、３２２から対象マクロブロックＭＢ（ｉ，１）の上に隣接する２つのブロックＢ（２ｉ−２，１）、Ｂ（２ｉ−２，２）のデータが読み出され、読み出されたこれらのデータを参照しながらマクロブロックＭＢ（ｉ，１）の４つのブロックのそれぞれのＤＣ係数予測値、ＡＣ係数予測値が算出される；ＤＣ／ＡＣ予測の際に参照されるブロックのデータを保存するメモリブロックは、図１０Ａにおいて、ハッチングによって示されていることに留意されたい。ただし、読み出されたデータがＤＣ係数とＡＣ係数の組でない場合（即ち、動きベクトル又は無効データである場合）、そのデータは無視される。算出されたＤＣ係数予測値、ＡＣ係数予測値は、可変長符号器５に送られて符号化される。
【００７２】
本来、ある対象マクロブロックの４つのブロックのＤＣ／ＡＣ予測には当該４つのブロックのＤＣ係数及びＡＣ係数の組以外に対象メモリブロックの周囲の５つのブロックのＤＣ係数及びＡＣ係数の組が必要であるが（図３Ｅ参照）、左端に位置するマクロブロックＭＢ（ｉ，１）についてのＤＣ／ＡＣ予測では、５つのブロックのうちの２つのブロックのデータしか使用されない。これは、対象マクロブロックＭＢ（ｉ，１）が左端に位置するために、参照されるべきブロックが２つしかないからである。
【００７３】
ＤＣ係数予測値、ＡＣ係数予測値の算出の後、図１０Ｂに示されているように、共用メモリ１４及びテンポラリメモリ２１の間でデータ転送が行われ、共用メモリ１４及びテンポラリメモリ２１の内容が更新される；データ転送先のメモリブロックはハッチングによって図示されていることに留意されたい。まず、対象マクロブロックＭＢ（ｉ，１）の左下のブロックＢ（２ｉ，１）のＤＣ係数及びＡＣ係数が、テンポラリメモリ２１の対象メモリブロック２２３から共用メモリ１４のメモリブロック３２１に転送される。更に、対象マクロブロックＭＢ（ｉ，１）の右側２つのブロックＢ（２ｉ−１，２）、Ｂ（２ｉ，２）のＤＣ係数及びＡＣ係数が、テンポラリメモリ２１の対象メモリブロック２２２、２２４から参照メモリブロック２３１、２３２に転送される。これにより、マクロブロックＭＢ（ｉ，１）のＤＣ／ＡＣ予測処理が完了する。
【００７４】
マクロブロックＭＢ（ｉ，１）のＤＣ／ＡＣ予測が完了した後では、動きベクトル予測器１３のテンポラリメモリ２４の参照メモリブロック２６１、２６２に無効データが保存されていることに留意されたい。動きベクトル予測器１３は、引き続き行われるマクロブロックＭＢ（ｉ，２）の処理において、マクロブロックＭＢ（ｉ，１）がイントラモードで符号化されたことを参照メモリブロック２６１、２６２に無効データが保存されていることから認識することができる。
【００７５】
一方、対象マクロブロックＭＢ（ｉ，１）の圧縮モードがインターモードである場合には、図１１Ａに示されているように、対象マクロブロックＭＢ（ｉ，１）の４つのブロックＢ（２ｉ−１，１）、Ｂ（２ｉ−１，２），Ｂ（２ｉ，１）、Ｂ（２ｉ，２）の動きベクトルが、それぞれ、動きベクトル予測器１３のテンポラリメモリ２４の対象メモリブロック２５１〜２５４に格納される。一方、ＤＣ／ＡＣ予測器４のテンポラリメモリ２１の対象メモリブロック２２１〜２２４はリセットされる。
【００７６】
更に、共用メモリ１４のメモリブロック３２１、３２２、３２３から対象マクロブロックＭＢ（ｉ，１）の上に隣接する３つのブロックＢ（２ｉ−２，１）、Ｂ（２ｉ−２，２）、Ｂ（２ｉ−２，３）のデータが読み出され、読み出されたこれらのデータを用いてマクロブロックＭＢ（ｉ，１）の４つのブロックのそれぞれの差分動きベクトルが算出される；ベクトル予測の際に参照されるブロックのデータを保存するメモリブロックは、図１１Ａにおいて、ハッチングによって示されていることに留意されたい。ただし、読み出されたデータが動きベクトルでない場合（即ち、ＤＣ係数とＡＣ係数の組又は無効データである場合）、そのデータは無視される。算出された差分動きベクトルは、可変長符号器５に送られて符号化される。
【００７７】
本来、ある対象マクロブロックの４つのブロックのベクトル予測にはその４つのブロックの動きベクトル以外に対象メモリブロックの周囲の５つのブロックの動きベクトルが必要であるにもかかわらず、左端に位置するマクロブロックＭＢ（ｉ，１）についての動きベクトルでは、５つのブロックのうちの３つのブロックのデータしか使用されない。これは、対象マクロブロックＭＢ（ｉ，１）が左端に位置するために、参照されるべきブロックが３つしかないからである。
【００７８】
差分動きベクトルの算出の後、図１１Ｂに示されているように、共用メモリ１４とテンポラリメモリ２４の間でデータ転送が行われ、その内容が更新される。まず、対象マクロブロックＭＢ（ｉ，１）の左下のブロックＢ（２ｉ，１）の動きベクトルが、テンポラリメモリ２４の対象メモリブロック２５３から共用メモリ１４のメモリブロック３２１に転送される。更に、対象マクロブロックＭＢ（ｉ，１）の右側２つのブロックＢ（２ｉ−１，２）、Ｂ（２ｉ，２）のＤＣ動きベクトルが、テンポラリメモリ２４の対象メモリブロック２５２、２５４から参照メモリブロック２６１、２６２に転送される。これにより、マクロブロックＭＢ（ｉ，１）のベクトル予測処理が完了する。
【００７９】
マクロブロックＭＢ（ｉ，１）のベクトル予測が完了した後では、ＤＣ／ＡＣ予測器４のテンポラリメモリ２１の参照メモリブロック２３１、２３２に無効データが保存されていることに留意されたい。ＤＣ／ＡＣ予測器４は、引き続き行われるマクロブロックＭＢ（ｉ，２）の処理において、マクロブロックＭＢ（ｉ，１）がインターモードで符号化されたことを参照メモリブロック２３１、２３２に無効データが保存されていることから認識することができる。
【００８０】
（２−Ｂ）中間のマクロブロックＭＢ（ｉ，２）〜ＭＢ（ｉ，Ｎ−１）の処理
図１２Ａ、１２Ｂ、図１３Ａ、図１３Ｂは、中間のマクロブロックＭＢ（ｉ，ｊ）（ｊは２以上、Ｎ−１以下の任意の自然数）の処理を示す概念図である。
【００８１】
図１２Ａ（及び図１３Ａ）に図示されているように、第ｉ行の左からｊ番目に位置するマクロブロックＭＢ（ｉ，ｊ）のＤＣ／ＡＣ予測又はベクトル予測の開始時には、共用メモリ１４のメモリブロック３２１〜３２２ｊ−３にブロックＢ（２ｉ，１）〜Ｂ（２ｉ、２ｊ−３）のデータ（即ち、次のマクロブロックラインの処理に使用されるデータ）が格納され、メモリブロック３２２ｊ−２〜３２２Ｎには、ブロックＢ（２ｉ−２，１）〜Ｂ（２ｉ−２、２ｊ−３）のデータが格納されている。このことがｊ＝２について成立することは、図１０Ｂ，図１１Ｂから理解されるであろうし、また、２より大きくＮ−１以下であるｊについても成立することは、以下に述べられる処理が回帰的であることから理解されるであろう。
【００８２】
更に、ＤＣ／ＡＣ予測器４のテンポラリメモリ２１の参照メモリブロック２３１、２３２には、対象マクロブロックＭＢ（ｉ，ｊ）の左隣の２つのブロックＢ（２ｉ−１，２ｊ−２）、Ｂ（２ｉ，２ｊ−２）のＤＣ係数とＡＣ係数の組、又は、それらが算出されていない場合には無効データが格納される。同様に、動きベクトル予測器１３のテンポラリメモリ２４の参照メモリブロック２６１、２６２には、対象マクロブロックＭＢ（ｉ，ｊ）の左隣の２つのブロックの動きベクトル、又は、それらが算出されていない場合には無効データが格納される。このことがｊ＝２について成立することは、図１０Ｂ，図１１Ｂから理解されるであろうし、また、２より大きくＮ−１以下であるｊについても成立することは、以下に述べられる処理が回帰的であることから理解されるであろう。図１２Ａには、参照メモリブロック２３１、２３２にＤＣ係数とＡＣ係数の組が格納され、参照メモリブロック２６１、２６２に無効データが格納されている場合が図示されており、図１３Ａには、参照メモリブロック２３１、２３２に無効データが格納され、参照メモリブロック２６１、２６２に動きベクトルが格納されている場合が図示されている。
【００８３】
マクロブロックＭＢ（ｉ，１）についてのＤＣ係数予測値とＡＣ係数予測値の算出、及び差分動きベクトルの算出の処理手順は、概略的には、上述されたマクロブロックＭＢ（ｉ，１）について行われた処理手順と同一である。具体的には、まず、マクロブロックＭＢ（ｉ，ｊ）の圧縮モードが判別され、判別された圧縮モードに応じて、共用メモリ１４がＤＣ／ＡＣ予測器４と動きベクトル予測器１３のいずれかに接続される。
【００８４】
対象マクロブロックＭＢ（ｉ，ｊ）がイントラモードで圧縮される場合には、図１２Ａに示されているように、対象マクロブロックＭＢ（ｉ，ｊ）の４つのブロックＢ（２ｉ−１，２ｊ−１）、Ｂ（２ｉ−１，２ｊ），Ｂ（２ｉ，２ｊ−１）、Ｂ（２ｉ，２ｊ）のＤＣ係数及びＡＣ係数が、それぞれ、ＤＣ／ＡＣ予測器４のテンポラリメモリ２１の対象メモリブロック２２１〜２２４に格納される。一方、動きベクトル予測器１３のテンポラリメモリ２４の対象メモリブロック２５１〜２５４はリセットされる。
【００８５】
更に、共用メモリ１４のメモリブロック３２２ｊ−２、３２２ｊ−１、３２２ｊから対象マクロブロックＭＢ（ｉ，ｊ）の上に隣接する３つのブロックＢ（２ｉ−２，２ｊ−２）、Ｂ（２ｉ−２，２ｊ−１）、Ｂ（２ｉ−２，２ｊ）のデータが読み出され、更にＤＣ／ＡＣ予測器４のテンポラリメモリ２１の参照メモリブロック２３１、２３２からデータが読み出され、読み出されたこれらのデータを用いてマクロブロックＭＢ（ｉ，ｊ）の４つのブロックのそれぞれのＤＣ係数予測値、ＡＣ係数予測値が算出される；ＤＣ／ＡＣ予測の際に参照されるブロックのデータを保存するメモリブロックは、図１２Ａにおいて、ハッチングによって示されていることに留意されたい。ただし、読み出されたデータがＤＣ係数とＡＣ係数の組でない場合（即ち、動きベクトル又は無効データである場合）、そのデータは無視される。
【００８６】
参照メモリブロック２３１、２３２には、対象マクロブロックＭＢ（ｉ，ｊ）の左に隣接するブロックＢ（２ｉ−１，２ｊ−２），Ｂ（２ｉ，２ｊ−２）のＤＣ係数及びＡＣ係数の組が保存されている場合もあるし、無効データが保存されている場合もあることに留意されたい；対象マクロブロックＭＢ（ｉ，ｊ）の左隣のマクロブロックＭＢ（ｉ，ｊ−１）がインターモードで符号化されている場合には、参照メモリブロック２３１、２３２に無効データが保存され、従って参照メモリブロック２３１、２３２に保存されているデータは無視される。
【００８７】
ＤＣ係数予測値、ＡＣ係数予測値の算出の後、図１２Ｂに示されているように、共用メモリ１４及びテンポラリメモリ２１、２４の間でデータ転送が行われ、共用メモリ１４及びテンポラリメモリ２１、２４の内容が更新される；中間のマクロブロックＭＢ（ｉ，ｊ）について行われるデータ転送は、左端のマクロブロックＭＢ（ｉ，１）について行われるデータ転送（図１０Ｂ参照）と異なっていることに留意されたい。
【００８８】
詳細には、図１２Ｂに示されているように、対象マクロブロックＭＢ（ｉ，ｊ）の左下に位置するブロックの左隣のブロックＢ（２ｉ，２ｊ−２）のデータが、共用メモリ１４のメモリブロック３２２ｊ−２に転送される。ブロックＢ（２ｉ，２ｊ−２）のデータは、対象マクロブロックＭＢ（ｉ，ｊ）の左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）の圧縮モードに応じて、ＤＣ／ＡＣ予測器４のテンポラリメモリ２１の参照メモリブロック２３２、又は動きベクトル予測器１３のテンポラリメモリ２４の参照メモリブロック２６２のうちの一方から転送される；対象マクロブロックＭＢ（ｉ，ｊ）の左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がイントラモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）のデータはＤＣ係数及びＡＣ係数の組である。ＤＣ／ＡＣ予測器４は、そのＤＣ係数及びＡＣ係数の組を参照メモリブロック２３２からメモリブロック３２２ｊ−２に転送する。一方、左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がインターモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）のデータは動きベクトルである。動きベクトル予測器１３は、その動きベクトルを参照メモリブロック２６２からメモリブロック３２２ｊ−２に転送する。
【００８９】
更に、対象マクロブロックＭＢ（ｉ，ｊ）の左下のブロックＢ（２ｉ，２ｊ−１）のＤＣ係数及びＡＣ係数が、テンポラリメモリ２１の対象メモリブロック２２３から共用メモリ１４のメモリブロック３２２ｊ−１に転送される。更に、対象マクロブロックＭＢ（ｉ，ｊ）の右側２つのブロックＢ（２ｉ−１，２ｊ）、Ｂ（２ｉ，２ｊ）のＤＣ係数及びＡＣ係数が、テンポラリメモリ２１の対象メモリブロック２２２、２２４から参照メモリブロック２３１、２３２に転送される。
【００９０】
加えて、無効データが、動きベクトル予測器１３のテンポラリメモリ２４の対象メモリブロック２５２、２５４から参照メモリブロック２６１、２６２に転送される。これは、次のマクロブロックＭＢ（ｉ，ｊ＋１）の処理の際に、マクロブロックＭＢ（ｉ，ｊ）がイントラモードで処理されたことを動きベクトル予測器１３に認識させる役割を有している。これにより、マクロブロックＭＢ（ｉ，ｊ）のＤＣ／ＡＣ予測処理が完了する。
【００９１】
一方、対象マクロブロックＭＢ（ｉ，１）の圧縮モードがインターモードである場合には、図１３Ａに示されているように、対象マクロブロックＭＢ（ｉ，１）の４つのブロックＢ（２ｉ−１，１）、Ｂ（２ｉ−１，２），Ｂ（２ｉ，１）、Ｂ（２ｉ，２）の動きベクトルが、それぞれ、動きベクトル予測器１３のテンポラリメモリ２４の対象メモリブロック２５１〜２５４に格納される。一方、ＤＣ／ＡＣ予測器４のテンポラリメモリ２１の対象メモリブロック２２１〜２２４はリセットされる。
【００９２】
更に、共用メモリ１４のメモリブロック３２２ｊ−１、３２２ｊ、３２２ｊ＋１から対象マクロブロックＭＢ（ｉ，ｊ）の上に隣接する３つのブロックＢ（２ｉ−２，２ｊ−１）、Ｂ（２ｉ−２，２ｊ）、Ｂ（２ｉ−２，２ｊ＋１）のデータが読み出され、更に動きベクトル予測器１３のテンポラリメモリ２４の参照メモリブロック２６１、２６２からデータが読み出され、読み出されたこれらのデータを用いてマクロブロックＭＢ（ｉ，１）の４つのブロックのそれぞれの差分動きベクトルが算出される；ＤＣ／ＡＣ予測の際に参照されるブロックのデータを保存するメモリブロックは、図１３Ａにおいて、ハッチングによって示されていることに留意されたい。ただし、読み出されたデータが動きベクトルでない場合（即ち、ＤＣ係数とＡＣ係数の組又は無効データである場合）、そのデータは無視される。
【００９３】
参照メモリブロック２６１、２６２には、対象マクロブロックＭＢ（ｉ，ｊ）の左に隣接するブロックＢ（２ｉ−１，２ｊ−２），Ｂ（２ｉ，２ｊ−２）の動きベクトルが保存されている場合もあるし、無効データが保存されている場合もあることに留意されたい；対象マクロブロックＭＢ（ｉ，ｊ）の左隣のマクロブロックＭＢ（ｉ，ｊ−１）がイントラモードで符号化されている場合には、参照メモリブロック２６１、２６２に無効データが保存され、従って参照メモリブロック２６１、２６２に保存されているデータは無視される。
【００９４】
差分動きベクトルの算出の後、図１３Ｂに示されているように、共用メモリ１４及びテンポラリメモリ２１、２４の間でデータ転送が行われ、その内容が更新される。まず、イントラモードの場合と同様の過程により、対象マクロブロックＭＢ（ｉ，ｊ）の左下に位置するブロックの左隣のブロックＢ（２ｉ，２ｊ−２）のデータが、共用メモリ１４のメモリブロック３２２ｊ−２に転送される。対象マクロブロックＭＢ（ｉ，ｊ）の左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がイントラモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）のデータはＤＣ係数及びＡＣ係数の組であり、そのＤＣ係数及びＡＣ係数の組は、ＤＣ／ＡＣ予測器４の参照メモリブロック２３２からメモリブロック３２２ｊ−２に転送される。一方、左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がインターモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）のデータは動きベクトルであり、その動きベクトルは、動きベクトル予測器１３の参照メモリブロック２６２からメモリブロック３２２ｊ−２に転送される。
【００９５】
更に、対象マクロブロックＭＢ（ｉ，ｊ）の左下のブロックＢ（２ｉ，２ｊ−１）の動きベクトルが、テンポラリメモリ２４の対象メモリブロック２５３から共用メモリ１４のメモリブロック３２２ｊ−１に転送される。更に、対象マクロブロックＭＢ（ｉ，ｊ）の右側２つのブロックＢ（２ｉ−１，２ｊ）、Ｂ（２ｉ，２ｊ）の動きベクトルが、テンポラリメモリ２４の対象メモリブロック２５２、２５４から参照メモリブロック２６１、２６２に転送される。
【００９６】
加えて、無効データが、ＤＣ／ＡＣ予測器４のテンポラリメモリ２１の対象メモリブロック２２２、２２４から参照メモリブロック２３１、２３２に転送される。これは、次のマクロブロックＭＢ（ｉ，ｊ＋１）の処理の際に、マクロブロックＭＢ（ｉ，ｊ）がインターモードで処理されたことをＤＣ／ＡＣ予測器４に認識させる役割を有している。これにより、マクロブロックＭＢ（ｉ，ｊ）のベクトル予測処理が完了する。
【００９７】
以上に述べられているＤＣ／ＡＣ予測処理又はベクトル予測処理が、マクロブロックＭＢ（ｉ，２）〜ＭＢ（ｉ，Ｎ−１）について順次に行われる。
【００９８】
（２−Ｃ）右端のマクロブロックＭＢ（ｉ，Ｎ）の処理
図１４Ａ、１４Ｂ、図１５Ａ、図１５Ｂは、右端のマクロブロックＭＢ（ｉ，Ｎ）の処理を示す概念図である。右端のマクロブロックＭＢ（ｉ，Ｎ）の処理は、ＤＣ／ＡＣ予測及びベクトル予測の処理については上述された中間のマクロブロックの処理と同一である（図１４Ａ、図１５Ａ参照）；しかし、共用メモリ１４とテンポラリメモリ２１、２４の間で特別なデータ転送が行われる点で相違する。
【００９９】
図１４Ｂ、及び図１５Ｂに示されているように、マクロブロックＭＢ（ｉ，Ｎ）がイントラモード、インターモードのいずれで符号化されたかに関わらず、マクロブロックＭＢ（ｉ，Ｎ）のＤＣ／ＡＣ予測又はベクトル予測が完了すると、まず、対象マクロブロックＭＢ（ｉ，ｊ）の左下に位置するブロックの左隣のブロックＢ（２ｉ，２ｊ−２）のデータが、共用メモリ１４のメモリブロック３２２ｊ−２に転送される。詳細には、対象マクロブロックＭＢ（ｉ，ｊ）の左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がイントラモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）のデータはＤＣ係数及びＡＣ係数の組であり、そのＤＣ係数及びＡＣ係数の組は、ＤＣ／ＡＣ予測器４の参照メモリブロック２３２からメモリブロック３２２ｊ−２に転送される。一方、左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がインターモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）のデータは動きベクトルであり、その動きベクトルは、動きベクトル予測器１３の参照メモリブロック２６２からメモリブロック３２２ｊ−２に転送される。
【０１００】
更に、図１４Ｂに示されているように、マクロブロックＭＢ（ｉ，Ｎ）がイントラモードで符号化された場合には、対象マクロブロックＭＢ（ｉ，ｊ）の下側の２つのブロックＢ（２ｉ，２Ｎ−１）、Ｂ（２ｉ，２Ｎ）のＤＣ係数及びＡＣ係数が、テンポラリメモリ２１の対象メモリブロック２２３、２２４から共用メモリ１４のメモリブロック３２２Ｎ−１、３２２Ｎに転送される。これにより、共用メモリ１４には、第ｉ行のマクロブロックＭＢ（ｉ，１）〜ＭＢ（ｉ，Ｎ）の下側のブロックラインのデータが完成し、次の行のマクロブロックＭＢ（ｉ＋１，１）〜ＭＢ（ｉ＋１，Ｎ）の処理の準備が完了する。
【０１０１】
一方、マクロブロックＭＢ（ｉ，Ｎ）がインターモードで符号化された場合には、マクロブロックＭＢ（ｉ，Ｎ）のベクトル予測の完了に続いて、対象マクロブロックＭＢ（ｉ，ｊ）の下側の２つのブロックＢ（２ｉ，２Ｎ−１）、Ｂ（２ｉ，２Ｎ）の動きベクトルが、テンポラリメモリ２４の対象メモリブロック２５３、２５４から共用メモリ１４のメモリブロック３２２Ｎ−１、３２２Ｎに転送される。これにより、共用メモリ１４には、第ｉ行のマクロブロックＭＢ（ｉ，１）〜ＭＢ（ｉ，Ｎ）の下側のブロックラインのデータが完成し、次の行のマクロブロックＭＢ（ｉ＋１，１）〜ＭＢ（ｉ＋１，Ｎ）の処理の準備が完了する。
【０１０２】
３．小括及び補足
以上に説明された手順によれば、少ないメモリ資源によって、即ち、図７乃至図９に示されているような共用メモリ１４及びテンポラリメモリ２１、２４のアーキテクチャによって、ＤＣ／ＡＣ予測及びベクトル予測を実現することができる。これは、画像符号化装置１０のハードウエアの縮小に有効である。
【０１０３】
なお、本実施の形態の画像符号化装置１０は、ＭＰＥＧ４  ＳＰに準拠するように構成されているが、本発明は、適宜の構成の変更によってＤＣ／ＡＣ予測及びベクトル予測の両方を行う画像符号化装置に適用可能であることは当業者には明らかである。
【０１０４】
例えば、本実施の形態の画像符号化装置１０は、双方向予測を行うことができるようにその構成を変更することにより、ＭＰＥＧ４  ＡＳＰ（advanced simple profile）にも適用可能である。図６を参照して、画像符号化装置１０が双方向予測に対応するように構成される場合には、ビデオメモリ９、動き検出ブロック１１、及び動き補償ブロック１２の構成が、双方向予測を行うことができるように変更される；双方向予測の技術は当業者に周知であり、双方向予測に対応するための構成の変更は、当業者には自明的であろう。この場合、動き検出ブロック１１は、各ブロックについて、順方向の動きベクトルと逆方向の動きベクトルとを算出して動きベクトル予測器１３に送る。動きベクトル予測器１３は、順方向の動きベクトルと逆方向の動きベクトルを、必要に応じて共用メモリ１４に保存する。
【０１０５】
図１６は、双方向予測に対応するように構成が変更された場合の共用メモリ１４のメモリマップを示している。注目されるべきことは、双方向予測への対応するために共用メモリ１４の容量を増加する必要がないことである。１ブロックについて算出された順方向の動きベクトルと逆方向の動きベクトルとを格納するために必要な容量は、１ブロックについて算出されたＤＣ係数及びＡＣ係数を格納するために必要な容量よりも小さい。これは、共用メモリ１４の容量を増加させることなく、メモリマップの変更のみで双方向予測に対応可能であることを意味している。
【０１０６】
第３  画像復号化装置
１．画像復号化装置の全体構成と動作の概略
図１７は、本実施の形態に係る画像復号化装置４０の構成を示すブロック図である。以下に詳細に述べられるように、上述された共有メモリ及びテンポラリメモリのアーキテクチャは、画像復号化装置４０にも適用可能である。
【０１０７】
具体的には、画像復号化装置４０は、可変長復号器４１と、ＤＣ／ＡＣ逆予測器４２と、逆量子化器４３と、逆ＤＣＴ演算器４４と、加算器４５と、動きベクトル逆予測器４６と、ビデオメモリ４７と、動き補償ブロック４８とを備えている。
【０１０８】
可変長復号器４１は、外部から入力される符号化データに対して可変長復号化を行う。復号化の対象である対象マクロブロックがイントラモードで符号化されている場合には、符号化データの対象マクロブロックに対応する部分からＤＣ係数予測値及びＡＣ係数予測値が取り出される。対象マクロブロックがインターモードで符号化されている場合には、符号化データの対象マクロブロックに対応する部分から差分動きベクトルが取り出される。取り出されたＤＣ係数予測値及びＡＣ係数予測値は、ＤＣ／ＡＣ逆予測器４２に送られ、差分動きベクトルは、動きベクトル逆予測器４６に送られる。
【０１０９】
ＤＣ／ＡＣ逆予測器４２は、ＤＣ係数予測値及びＡＣ係数予測値に対してＤＣ／ＡＣ逆予測を行い、量子化されたＤＣ係数及びＡＣ係数を再生する。ＤＣ／ＡＣ逆予測器４２は、テンポラリメモリ５１を備えており、そのテンポラリメモリ５１を用いてＤＣ係数及びＡＣ係数を再生する。画像復号化装置４０には、更に、ＤＣ／ＡＣ逆予測器４２をバイパスするデータスルーパス４２ａが設けられている。このデータスルーパス４２ａは、ＤＣ／ＡＣ逆予測が行われないとき（即ち、インターモードで符号化されているマクロブロックを復号化するとき）に使用される。
【０１１０】
逆量子化器４３は、ＤＣ／ＡＣ逆予測器４２から送られる（量子化された）ＤＣ係数及びＡＣ係数に対して逆量子化を行い、ＤＣ係数及びＡＣ係数を再生する。
【０１１１】
逆ＤＣＴ演算器４４は、逆量子化器４３によって再生されたＤＣ係数及びＡＣ係数に対して逆離散コサイン変換を行い、画像データを得る。
【０１１２】
加算器４５は、復号化の対象マクロブロックの圧縮モードに応じて、逆ＤＣＴ演算器４４から送られる画像データをそのまま出力し、又は、逆ＤＣＴ演算器４４から送られる画像データと動き補償ブロック４８から出力される動き補償された画像データとの和を出力する。加算器４５の出力が、最終的な復号化データである。
【０１１３】
動きベクトル逆予測器４６は、可変長復号器４１によって取り出された差分動きベクトルに対して動きベクトル逆予測を行い、動きベクトルを再生する。動きベクトル逆予測器４６は、テンポラリメモリ５４を備えており、そのテンポラリメモリ５４を用いて動きベクトルを再生する。
【０１１４】
ビデオメモリ４７は、加算器４５から出力される画像データを参照画像の画像データとして格納する。
【０１１５】
動き補償ブロック４８は、動きベクトル逆予測器４６から出力される動きベクトルを用いて、ビデオメモリ４７から出力される参照画像の画像データに対して動き補償を行う。既述のように、動き補償ブロック４８の出力は加算器４５に接続されている。
【０１１６】
画像復号化装置４０は、更に、ＤＣ／ＡＣ逆予測器４２と動きベクトル逆予測器４６の両方からアクセス可能な共用メモリ４９を備えている。共用メモリ４９は、復号化の対象である対象マクロブロックの上に隣接するブロックについて算出されたＤＣ係数、ＡＣ係数や、動きベクトルを保存するために使用されるワークエリアであり、ＤＣ／ＡＣ逆予測器４２と動きベクトル逆予測器４６は、この共用メモリ４９をワークエリアとして共有している。共用メモリ４９は、選択器５０を介してＤＣ／ＡＣ逆予測器４２と動きベクトル逆予測器４６とに接続されており、制御信号Ｃによって選択された一方の予測器が共用メモリ４９にアクセス可能である。
【０１１７】
このような構成の画像復号化装置４０は、対象マクロブロックの符号化に用いられた圧縮モードに応じて異なる動作を行う。対象マクロブロックがイントラモードで符号化されている場合、対象マクロブロックは、可変長復号化と、ＤＣ／ＡＣ逆予測と、逆量子化と、逆ＤＣＴとを用いて復号化される。詳細には、可変長復号器４１によってＤＣ係数予測値及びＡＣ係数予測値が再生され、そのＤＣ係数予測値及びＡＣ係数予測値からＤＣ／ＡＣ逆予測器４２によって（量子化された）ＤＣ係数及びＡＣ係数が再生される。更に、そのＤＣ係数及びＡＣ係数が、逆量子化器４３によって逆量子化され、更に、逆ＤＣＴ演算器４４によって逆離散コサイン変換され、これにより対象マクロブロックの復号化データが生成される；加算器４５は、逆ＤＣＴ演算器４４の出力をそのまま復号化データとして出力する。
【０１１８】
一方、対象マクロブロックがインターモードで符号化されている場合、動き補償によって復号化が行われる。詳細には、可変長復号器４１によって差分動きベクトルが再生され、その差分動きベクトルから動きベクトルが再生される。更に、ビデオメモリ４７から出力される参照画像の画像データに対して、動きベクトル逆予測器４６から出力される動きベクトルを用いて動き補償が行われ、動き補償が行われた画像データが、可変長復号化と、逆量子化と、逆ＤＣＴとを用いて復号化され、復号化データとして出力される。
【０１１９】
本実施の形態に係る画像復号化装置４０の最も重要な特徴は、既述の画像符号化装置１０と同様に、ＤＣ／ＡＣ逆予測器４２と動きベクトル逆予測器４６との両方からアクセス可能な共用メモリ４９を、ＤＣ／ＡＣ逆予測器４２と動きベクトル逆予測器４６のワークエリアとして備えていることである。詳細には、本実施の形態に係る画像復号化装置４０は、対象マクロブロックの上に隣接するブロックラインのデータを共用ライン４９に格納し、対象マクロブロックのデータ、及び、対象マクロブロックの左に隣接する２つのブロックのデータをＤＣ／ＡＣ逆予測器４２と動きベクトル逆予測器４６のテンポラリメモリ５１、５４に保存するアーキテクチャを採用している。本実施の形態に係る画像復号化装置４０は、かかるアーキテクチャの採用とともに、共用メモリ４９とテンポラリメモリ５１、５４の間のデータ転送を最適化することにより、ＤＣ／ＡＣ逆予測及びベクトル逆予測を行うために使用するトータルのメモリ領域の容量を小さくしている。以下では、共用メモリ４９とテンポラリメモリ５１、５４を用いたＤＣ／ＡＣ逆予測処理及びベクトル逆予測処理について説明する。
【０１２０】
２．  ＤＣ／ＡＣ逆予測及びベクトル逆予測の処理手順
図１８Ａ乃至図２３Ｂは、第ｉ行に位置するマクロブロックＭＢ（ｉ，１）〜ＭＢ（ｉ，Ｎ）に対してＤＣ／ＡＣ逆予測及びベクトル逆予測を行う好適な手順を示す概念図である。
【０１２１】
図１８Ａを参照して、共用メモリ４９、テンポラリメモリ５１、５４の構成は、画像符号化装置１０に搭載されている共用メモリ１４、テンポラリメモリ２１、２４の構成と同様である。詳細には、共用メモリ４９は、画像符号化装置１０の共用メモリ１４と同様に、２Ｎ個のメモリブロック６２１〜６２２Ｎを備えている。共用メモリ１４と同様に、２つのメモリブロック６２２ｊ−１、６２２ｊは一のメモリエリアに格納され、そのメモリエリアにはメモリブロック６２２ｊ−１、６２２ｊに格納されているデータの種類を示すフラグが格納されたフラグ領域が用意されているが、メモリエリア及びフラグ領域は図示されていない。更に、画像符号化装置１０のＤＣ／ＡＣ予測器４のテンポラリメモリ２１と同様に、ＤＣ／ＡＣ逆予測器４２のテンポラリメモリ５１は対象メモリブロック５２１〜５２４と参照メモリブロック５３１、５３２とを備えている。同様に、動きベクトル逆予測器４６のテンポラリメモリ５４は対象メモリブロック５５１〜５５４と参照メモリブロック５６１、５６２とを備えている。ＤＣ／ＡＣ逆予測及びベクトル逆予測の処理では、このように構成された共用メモリ４９、及びテンポラリメモリ５１、５４の間でデータ転送が行われる。
【０１２２】
加えて、第ｉ行に位置するマクロブロックＭＢ（ｉ，１）〜ＭＢ（ｉ，Ｎ）に対してＤＣ／ＡＣ逆予測及びベクトル逆予測を行う手順は、ＤＣ／ＡＣ予測の代わりにＤＣ／ＡＣ逆予測が行われ、ベクトル予測の代わりにベクトル逆予測が行われる点を除けば、第ｉ行に位置するマクロブロックＭＢ（ｉ，１）〜ＭＢ（ｉ，Ｎ）に対してＤＣ／ＡＣ予測及びベクトル予測を行う手順とほぼ同様である。以下、ＤＣ／ＡＣ逆予測及びベクトル逆予測の手順が詳細に説明される。
【０１２３】
（２−Ａ）左端のマクロブロックＭＢ（ｉ，１）の処理
図１８Ａ（及び図１９Ａ）に示されているように、第ｉ行に位置するマクロブロックＭＢ（ｉ，１）〜（ｉ，Ｎ）に対するＤＣ／ＡＣ逆予測及びベクトル逆予測の開始前には、共用メモリ４９には、マクロブロックＭＢ（ｉ，１）の上に隣接するブロックラインに属するブロックＢ（２ｉ−２，１）〜ブロックＢ（２ｉ−１，２Ｎ）についてＤＣ／ＡＣ逆予測及びベクトル逆予測が行われることによって得られた復元データ（即ち、復元されたＤＣ係数及びＡＣ係数、又は動きベクトル）が格納されている。詳細には、ブロックＢ（２ｉ−１，１）〜（２ｉ−１，２Ｎ）の復元データは、それぞれ、共用メモリ１４のメモリブロック６２１〜６２２Ｎに格納されている。ただし、最も上の行（第１行）のマクロブロックＭＢ（１，１）に対するＤＣ／ＡＣ逆予測及びベクトル逆予測の開始時には、共用メモリ４９の全てのメモリブロック６２は、無効データが書き込まれてリセットされる。このような前提が妥当であることは、以下に述べられるＤＣ／ＡＣ予測及びベクトル予測の処理が回帰的であることから理解されるであろう。
【０１２４】
第ｉ行に位置するマクロブロックＭＢ（ｉ，１）〜（ｉ，Ｎ）に対するＤＣ／ＡＣ逆予測及びベクトル逆予測では、まず、左端のマクロブロックＭＢ（ｉ，１）の処理が行われる。図１８Ａ、１８Ｂ、図１９Ａ、図１９Ｂは、左端のマクロブロックＭＢ（ｉ，１）の処理を示す概念図である。
【０１２５】
図１８Ａ（及び図１９Ａ）に示されているように、第ｉ行に位置するマクロブロックＭＢ（ｉ，１）のＤＣ／ＡＣ逆予測及びベクトル逆予測は、ＤＣ／ＡＣ逆予測器４２のテンポラリメモリ５１、及び動きベクトル逆予測器４６のテンポラリメモリ５４をリセットすることで開始される。
【０１２６】
続いて、対象マクロブロックＭＢ（ｉ，１）がイントラモードで圧縮されている場合には、可変長復号器４１からＤＣ／ＡＣ逆予測器４２にＤＣ係数予測値、ＡＣ係数予測値、及び制御データが送られ、これらからＤＣ係数及びＡＣ係数が復元される；既述のとおり、制御データとは、いずれの参照ブロックを用いてＤＣ係数予測値、ＡＣ係数予測値を算出したかを示すデータである。具体的には、図１８Ａに示されているように、制御データによって指定されているブロックについて復元されたＤＣ係数及びＡＣ係数が、対応するメモリブロックから読み出され、読み出されたＤＣ係数及びＡＣ係数と、ＤＣ係数予測値及びＡＣ係数予測値から、対象マクロブロックＭＢ（ｉ，１）の各ブロックのＤＣ係数及びＡＣ係数が復元される。図１８Ａにおいて、ＤＣ係数及びＡＣ係数が読み出され得るメモリブロックは、ハッチングによって示されている。
【０１２７】
例えば、マクロブロックＭＢ（ｉ，１）の左上のブロックＢ（２ｉ−１，１）のＤＣ係数及びＡＣ係数の復元の際、制御データによってブロックＢ（２ｉ−１，１）の上に隣接するブロックＢ（２ｉ−２，１）のＤＣ係数及びＡＣ係数を復元に使用するように指示されている場合を考える。この場合、共用メモリ４９のメモリブロック６２１からブロックＢ（２ｉ−１，１）のＤＣ係数及びＡＣ係数が読み出され、そのＤＣ係数及びＡＣ係数と、ＤＣ係数予測値及びＡＣ係数予測値から、ブロックＢ（２ｉ−１，１）のＤＣ係数及びＡＣ係数が復元される。対象マクロブロックＭＢ（ｉ，１）の他のブロックについても同様である。
【０１２８】
復元されたＤＣ係数及びＡＣ係数は、図１８Ｂに示されているように、ＤＣ／ＡＣ逆予測器４２のテンポラリメモリ５１の対象メモリブロック５２１〜５２４に格納される。具体的には、ブロックＢ（２ｉ−１，１）のＤＣ係数及びＡＣ係数が復元されると、復元されたＤＣ係数及びＡＣ係数は、対象メモリブロック５２１に格納される。同様に、ブロックＢ（２ｉ−１，２）、Ｂ（２ｉ，１）、Ｂ（２ｉ，２）のＤＣ係数及びＡＣ係数が復元されると、復元されたＤＣ係数及びＡＣ係数は、それぞれ、対象メモリブロック５２２、５２３、５２４に格納される。復元されたＤＣ係数及びＡＣ係数は、対象メモリブロック５２１〜５２４から逆量子化器４３に送られる。
【０１２９】
続いて、図１８Ｂに示されているように、共用メモリ４９及びテンポラリメモリ５１の間でデータ転送が行われ、共用メモリ４９及びテンポラリメモリ５１の内容が更新される；データ転送先のメモリブロックはハッチングによって図示されていることに留意されたい。まず、対象マクロブロックＭＢ（ｉ，１）の左下のブロックＢ（２ｉ，１）について復元されたＤＣ係数及びＡＣ係数が、テンポラリメモリ５１の対象メモリブロック５２３から共用メモリ４９のメモリブロック６２１に転送される。更に、対象マクロブロックＭＢ（ｉ，１）の右側２つのブロックＢ（２ｉ−１，２）、Ｂ（２ｉ，２）について復元されたＤＣ係数及びＡＣ係数が、テンポラリメモリ５１の対象メモリブロック５２２、５２４から参照メモリブロック５３１、５３２に転送される。これにより、マクロブロックＭＢ（ｉ，１）のＤＣ／ＡＣ逆予測処理が完了する。
【０１３０】
一方、図１９Ａに示されているように、対象マクロブロックＭＢ（ｉ，１）の圧縮モードがインターモードである場合には、可変長復号器４１から動きベクトル逆予測器４６に差分動きベクトルと制御データとが送られ、これらから動きベクトルが復元される；既述のとおり、制御データとは、いずれの参照ブロックを用いて差分動きベクトルを算出したかを示すデータである。具体的には、制御データによって指定されているブロックについて復元された動きベクトルが、対応するメモリブロックから読み出され、読み出された動きベクトルと、差分動きベクトルから、対象マクロブロックＭＢ（ｉ，１）の各ブロックの動きベクトルが復元される。図１９Ａにおいて、動きベクトルが読み出され得るメモリブロックは、ハッチングによって示されている。
【０１３１】
復元された動きベクトルは、図１９Ｂに示されているように、動きベクトル逆予測器４６のテンポラリメモリ５４の対象メモリブロック５５１〜５５４に格納される。具体的には、ブロックＢ（２ｉ−１，１）の動きベクトルが復元されると、復元された動きベクトルは対象メモリブロック５２１に格納される。同様に、ブロックＢ（２ｉ−１，２）、Ｂ（２ｉ，１）、Ｂ（２ｉ，２）の動きベクトルが復元されると、復元された動きベクトルは、それぞれ、対象メモリブロック５５２、５５３、５５４に格納される。復元された動きベクトルは、対象メモリブロック５５１〜５５４から動き補償ブロック４８に送られる。
【０１３２】
続いて、図１９Ｂに示されているように、共用メモリ４９及びテンポラリメモリ５４の間でデータ転送が行われ、共用メモリ４９及びテンポラリメモリ５４の内容が更新される；データ転送先のメモリブロックはハッチングによって図示されていることに留意されたい。まず、対象マクロブロックＭＢ（ｉ，１）の左下のブロックＢ（２ｉ，１）について復元された動きベクトルが、テンポラリメモリ５４の対象メモリブロック５５３から共用メモリ４９のメモリブロック６２１に転送される。更に、対象マクロブロックＭＢ（ｉ，１）の右側２つのブロックＢ（２ｉ−１，２）、Ｂ（２ｉ，２）について復元された動きベクトルが、テンポラリメモリ５４の対象メモリブロック５５２、５５４から参照メモリブロック５６１、５６２に転送される。これにより、マクロブロックＭＢ（ｉ，１）のベクトル逆予測処理が完了する。
【０１３３】
（２−Ｂ）中間のマクロブロックＭＢ（ｉ，２）〜ＭＢ（ｉ，Ｎ−１）の処理
図２０Ａ、２０Ｂ、図２１Ａ、図２１Ｂは、中間のマクロブロックＭＢ（ｉ，ｊ）（ｊは２以上、Ｎ−１以下の任意の自然数）の処理を示す概念図である。
【０１３４】
図２０Ａ（及び図２１Ａ）に図示されているように、第ｉ行の左からｊ番目に位置するマクロブロックＭＢ（ｉ，ｊ）のＤＣ／ＡＣ逆予測又はベクトル逆予測の開始時には、共用メモリ４９のメモリブロック６２１〜６２２ｊ−３には、ブロックＢ（２ｉ，１）〜Ｂ（２ｉ、２ｊ−３）のデータ（即ち、次のマクロブロックラインの処理に使用されるデータ）が格納され、メモリブロック６２２ｊ−２〜６２２Ｎには、ブロックＢ（２ｉ−２，１）〜Ｂ（２ｉ−２、２ｊ−３）のデータが格納されている。このことがｊ＝２について成立することは、図１８Ｂ，図１９Ｂから理解されるであろうし、また、２より大きくＮ−１以下であるｊについても成立することは、以下に述べられる処理が回帰的であることから理解されるであろう。
【０１３５】
更に、ＤＣ／ＡＣ逆予測器４２のテンポラリメモリ５１の参照メモリブロック５３１、５３２には、対象マクロブロックＭＢ（ｉ，ｊ）の左隣の２つのブロックＢ（２ｉ−１，２ｊ−２）、Ｂ（２ｉ，２ｊ−２）について復元されたＤＣ係数とＡＣ係数の組、又は、それらが算出されていない場合には無効データが格納される。同様に、動きベクトル逆予測器４６のテンポラリメモリ５４の参照メモリブロック５６１、５６２には、対象マクロブロックＭＢ（ｉ，ｊ）の左隣の２つのブロックの動きベクトル、又は、それらが算出されていない場合には無効データが格納される。このことがｊ＝２について成立することは、図１８Ｂ，図１９Ｂから理解されるであろうし、また、２より大きくＮ−１以下であるｊについても成立することは、以下に述べられる処理が回帰的であることから理解されるであろう。図２０Ａには、参照メモリブロック５３１、５３２にＤＣ係数とＡＣ係数の組が格納され、参照メモリブロック５６１、５６２に無効データが格納されている場合が図示されており、図２１Ａには、参照メモリブロック５３１、５３２に無効データが格納され、参照メモリブロック５６１、５６２に動きベクトルが格納されている場合が図示されている。
【０１３６】
マクロブロックＭＢ（ｉ，１）についてのＤＣ係数予測値とＡＣ係数予測値の算出、及び差分動きベクトルの算出の処理手順は、概略的には、上述されたマクロブロックＭＢ（ｉ，１）について行われた処理手順と同一である。
【０１３７】
図２０Ａに示されているように、対象マクロブロックＭＢ（ｉ，１）がイントラモードで圧縮されている場合には、可変長復号器４１からＤＣ／ＡＣ逆予測器４２にＤＣ係数予測値、ＡＣ係数予測値、及び制御データが送られ、これらからＤＣ係数及びＡＣ係数が復元される；既述のとおり、制御データとは、いずれの参照ブロックを用いてＤＣ係数予測値、ＡＣ係数予測値を算出したかを示すデータである。具体的には、制御データによって指定されているブロックについて復元されたＤＣ係数及びＡＣ係数が、対応するメモリブロックから読み出され、読み出されたＤＣ係数及びＡＣ係数と、ＤＣ係数予測値及びＡＣ係数予測値から、対象マクロブロックＭＢ（ｉ，１）の各ブロックのＤＣ係数及びＡＣ係数が復元される。図２０Ａにおいて、ＤＣ係数及びＡＣ係数が読み出され得るメモリブロックは、ハッチングによって示されている。
【０１３８】
復元されたＤＣ係数及びＡＣ係数は、図２０Ｂに示されているように、ＤＣ／ＡＣ逆予測器４２のテンポラリメモリ５１の対象メモリブロック５２１〜５２４に格納される。具体的には、ブロックＢ（２ｉ−１，２ｊ−１）のＤＣ係数及びＡＣ係数が復元されると、復元されたＤＣ係数及びＡＣ係数は、対象メモリブロック５２１に格納される。同様に、ブロックＢ（２ｉ−１，２ｊ）、Ｂ（２ｉ，２ｊ−１）、Ｂ（２ｉ，２ｊ）のＤＣ係数及びＡＣ係数が復元されると、復元されたＤＣ係数及びＡＣ係数は、それぞれ、対象メモリブロック５２２、５２３、５２４に格納される。復元されたＤＣ係数及びＡＣ係数は、対象メモリブロック５２１〜５２４から逆量子化器４３に送られる。
【０１３９】
ＤＣ係数予測値、ＡＣ係数予測値の算出の後、図２０Ｂに示されているように、共用メモリ４９及びテンポラリメモリ５１、５４の間でデータ転送が行われ、共用メモリ４９及びテンポラリメモリ５１、５４の内容が更新される；中間のマクロブロックＭＢ（ｉ，ｊ）について行われるデータ転送は、左端のマクロブロックＭＢ（ｉ，１）について行われるデータ転送（図１０Ｂ参照）と異なっていることに留意されたい。
【０１４０】
詳細には、図２０Ｂに示されているように、対象マクロブロックＭＢ（ｉ，ｊ）の左下に位置するブロックの左隣のブロックＢ（２ｉ，２ｊ−２）のデータが、共用メモリ４９のメモリブロック６２２ｊ−２に転送される。ブロックＢ（２ｉ，２ｊ−２）のデータは、対象マクロブロックＭＢ（ｉ，ｊ）の左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）の圧縮モードに応じて、ＤＣ／ＡＣ逆予測器４２のテンポラリメモリ５１の参照メモリブロック５３２、又は動きベクトル逆予測器４６のテンポラリメモリ５４の参照メモリブロック５６２のうちの一方から転送される；対象マクロブロックＭＢ（ｉ，ｊ）の左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がイントラモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）のデータはＤＣ係数及びＡＣ係数の組である。ＤＣ／ＡＣ逆予測器４２は、そのＤＣ係数及びＡＣ係数の組を参照メモリブロック５３２からメモリブロック６２２ｊ−２に転送する。一方、左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がインターモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）のデータは動きベクトルである。動きベクトル逆予測器４６は、その動きベクトルを参照メモリブロック５６２からメモリブロック６２２ｊ−２に転送する。
【０１４１】
更に、対象マクロブロックＭＢ（ｉ，ｊ）の左下のブロックＢ（２ｉ，２ｊ−１）のＤＣ係数及びＡＣ係数が、テンポラリメモリ５１の対象メモリブロック５２３から共用メモリ４９のメモリブロック６２２ｊ−１に転送される。更に、対象マクロブロックＭＢ（ｉ，ｊ）の右側２つのブロックＢ（２ｉ−１，２ｊ）、Ｂ（２ｉ，２ｊ）のＤＣ係数及びＡＣ係数が、テンポラリメモリ５１の対象メモリブロック５２２、５２４から参照メモリブロック５３１、５３２に転送される。
【０１４２】
加えて、無効データが、動きベクトル逆予測器４６のテンポラリメモリ５４の対象メモリブロック５５２、５５４から参照メモリブロック５６１、５６２に転送される。これは、次のマクロブロックＭＢ（ｉ，ｊ＋１）の処理の際に、マクロブロックＭＢ（ｉ，ｊ）がイントラモードで処理されたことを動きベクトル逆予測器４６に認識させる役割を有している。これにより、マクロブロックＭＢ（ｉ，ｊ）のＤＣ／ＡＣ逆予測処理が完了する。
【０１４３】
一方、図２１Ａに示されているように、対象マクロブロックＭＢ（ｉ，ｊ）の圧縮モードがインターモードである場合には、可変長復号器４１から動きベクトル逆予測器４６に差分動きベクトルと制御データとが送られ、これらから動きベクトルが復元される；既述のとおり、制御データとは、いずれの参照ブロックを用いて差分動きベクトルを算出したかを示すデータである。具体的には、制御データによって指定されているブロックについて復元された動きベクトルが、対応するメモリブロックから読み出され、読み出された動きベクトルと、差分動きベクトルから、対象マクロブロックＭＢ（ｉ，ｊ）の各ブロックの動きベクトルが復元される。図２１Ａにおいて、動きベクトルが読み出され得るメモリブロックは、ハッチングによって示されている。
【０１４４】
復元された動きベクトルは、図２１Ｂに示されているように、動きベクトル逆予測器４６のテンポラリメモリ５４の対象メモリブロック５５１〜５５４に格納される。具体的には、ブロックＢ（２ｉ−１，１）の動きベクトルが復元されると、復元された動きベクトルは対象メモリブロック５２１に格納される。同様に、ブロックＢ（２ｉ−１，２）、Ｂ（２ｉ，１）、Ｂ（２ｉ，２）の動きベクトルが復元されると、復元された動きベクトルは、それぞれ、対象メモリブロック５５２、５５３、５５４に格納される。復元された動きベクトルは、対象メモリブロック５５１〜５５４から動き補償ブロック４８に送られる。
【０１４５】
差分動きベクトルの算出の後、図２０Ｂに示されているように、共用メモリ４９及びテンポラリメモリ５１、５４の間でデータ転送が行われ、その内容が更新される。まず、イントラモードの場合と同様の過程により、対象マクロブロックＭＢ（ｉ，ｊ）の左下に位置するブロックの左隣のブロックＢ（２ｉ，２ｊ−２）のデータが、共用メモリ４９のメモリブロック６２２ｊ−２に転送される。対象マクロブロックＭＢ（ｉ，ｊ）の左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がイントラモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）のデータはＤＣ係数及びＡＣ係数の組であり、そのＤＣ係数及びＡＣ係数の組は、ＤＣ／ＡＣ逆予測器４２の参照メモリブロック５３２からメモリブロック６２２ｊ−２に転送される。一方、左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がインターモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）のデータは動きベクトルであり、その動きベクトルは、動きベクトル逆予測器４６の参照メモリブロック５６２からメモリブロック６２２ｊ−２に転送される。
【０１４６】
更に、対象マクロブロックＭＢ（ｉ，ｊ）の左下のブロックＢ（２ｉ，２ｊ−１）の動きベクトルが、テンポラリメモリ５４の対象メモリブロック５５３から共用メモリ４９のメモリブロック６２２ｊ−１に転送される。更に、対象マクロブロックＭＢ（ｉ，ｊ）の右側２つのブロックＢ（２ｉ−１，２ｊ）、Ｂ（２ｉ，２ｊ）の動きベクトルが、テンポラリメモリ５４の対象メモリブロック５５２、５５４から参照メモリブロック５６１、５６２に転送される。
【０１４７】
加えて、無効データが、ＤＣ／ＡＣ逆予測器４２のテンポラリメモリ５１の対象メモリブロック５２２、５２４から参照メモリブロック５３１、５３２に転送される。これは、次のマクロブロックＭＢ（ｉ，ｊ＋１）の処理の際に、マクロブロックＭＢ（ｉ，ｊ）がインターモードで処理されたことをＤＣ／ＡＣ逆予測器４２に認識させる役割を有している。これにより、マクロブロックＭＢ（ｉ，ｊ）のベクトル逆予測処理が完了する。
【０１４８】
（２−Ｃ）右端のマクロブロックＭＢ（ｉ，Ｎ）の処理
図２２Ａ、２２Ｂ、図２３Ａ、図２３Ｂは、右端のマクロブロックＭＢ（ｉ，Ｎ）の処理を示す概念図である。右端のマクロブロックＭＢ（ｉ，Ｎ）の処理における、ＤＣ／ＡＣ逆予測及びベクトル逆予測の処理は、上述された中間のマクロブロックの処理と同一である；ただし、共用メモリ４９とテンポラリメモリ５１、５４の間で特別なデータ転送が行われる点で相違している。
【０１４９】
図２２Ｂ、及び図２３Ｂに示されているように、マクロブロックＭＢ（ｉ，Ｎ）がイントラモード、インターモードのいずれで符号化されたかに無関係に、マクロブロックＭＢ（ｉ，Ｎ）のＤＣ／ＡＣ逆予測又はベクトル逆予測が完了すると、まず、対象マクロブロックＭＢ（ｉ，ｊ）の左下に位置するブロックの左隣のブロックＢ（２ｉ，２ｊ−２）の復元データが、共用メモリ４９のメモリブロック６２２ｊ−２に転送される。詳細には、対象マクロブロックＭＢ（ｉ，ｊ）の左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がイントラモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）の復元データはＤＣ係数及びＡＣ係数の組であり、そのＤＣ係数及びＡＣ係数の組は、ＤＣ／ＡＣ逆予測器４２の参照メモリブロック５３２からメモリブロック６２２ｊ−２に転送される。一方、左に隣接するマクロブロックＭＢ（ｉ，ｊ−１）がインターモードで符号化されている場合、ブロックＢ（２ｉ，２ｊ−２）の復元データは動きベクトルであり、その動きベクトルは、動きベクトル逆予測器４６の参照メモリブロック５６２からメモリブロック６２２ｊ−２に転送される。
【０１５０】
更に、図２２Ｂに示されているように、マクロブロックＭＢ（ｉ，Ｎ）がイントラモードで符号化された場合には、対象マクロブロックＭＢ（ｉ，ｊ）の下側の２つのブロックＢ（２ｉ，２Ｎ−１）、Ｂ（２ｉ，２Ｎ）について復元されたＤＣ係数及びＡＣ係数が、テンポラリメモリ５１の対象メモリブロック５２３、５２４から共用メモリ４９のメモリブロック６２２Ｎ−１、６２２Ｎに転送される。これにより、共用メモリ４９には、第ｉ行のマクロブロックＭＢ（ｉ，１）〜ＭＢ（ｉ，Ｎ）の下側のブロックラインのデータが完成し、次の行のマクロブロックＭＢ（ｉ＋１，１）〜ＭＢ（ｉ＋１，Ｎ）の処理の準備が完了する。
【０１５１】
一方、マクロブロックＭＢ（ｉ，Ｎ）がインターモードで符号化された場合には、マクロブロックＭＢ（ｉ，Ｎ）のベクトル逆予測の完了に続いて、対象マクロブロックＭＢ（ｉ，ｊ）の下側の２つのブロックＢ（２ｉ，２Ｎ−１）、Ｂ（２ｉ，２Ｎ）の動きベクトルが、テンポラリメモリ５４の対象メモリブロック５５３、５５４から共用メモリ４９のメモリブロック６２２Ｎ−１、６２２Ｎに転送される。これにより、共用メモリ４９には、第ｉ行のマクロブロックＭＢ（ｉ，１）〜ＭＢ（ｉ，Ｎ）の下側のブロックラインのデータが完成し、次の行のマクロブロックＭＢ（ｉ＋１，１）〜ＭＢ（ｉ＋１，Ｎ）の処理の準備が完了する。
３．小括及び補足
以上に説明された手順によれば、少ないメモリ資源によって、ＤＣ／ＡＣ逆予測及びベクトル逆予測を実現することができる。これは、画像復号化装置４０のハードウエアの縮小に有効である。
【０１５２】
なお、本実施の形態の画像復号化装置４０は、ＭＰＥＧ４  ＳＰに準拠するように構成されているが、本発明は、適宜の構成の変更によってＤＣ／ＡＣ逆予測及びベクトル逆予測の両方を行う画像符号化装置に適用可能であることは当業者には明らかである。
【０１５３】
例えば、本実施の形態の画像復号化装置４０は、双方向予測に対応するにその構成を変更することにより、ＭＰＥＧ４  ＡＳＰ（advanced simple profile）にも適用可能である。双方向予測が行われる場合には、差分動きベクトルから、順方向の動きベクトルと逆方向の動きベクトルとが復元されて動き補償ブロック４８に送る。動き補償ブロック４８は、順方向の動きベクトルと逆方向の動きベクトルから、動き補償された画像データを生成する。
【図面の簡単な説明】
【０１５４】
【図１】図１は、ＭＰＥＧ４に準拠した動画像のフレーム画像のフォーマットを示す図である。
【図２Ａ】図２Ａは、ＭＰＥＧ４に規定されたベクトル予測処理を説明する概念図である。
【図２Ｂ】図２Ｂは、ＭＰＥＧ４に規定されたベクトル予測処理を説明する概念図である。
【図２Ｃ】図２Ｃは、ＭＰＥＧ４に規定されたベクトル予測処理を説明する概念図である。
【図２Ｄ】図２Ｄは、ＭＰＥＧ４に規定されたベクトル予測処理を説明する概念図である。
【図２Ｅ】図２Ｅは、ある対象マクロブロックのベクトル予測処理において参照され得る、対象マクロブロックの周囲のブロックを示す概念図である。
【図３Ａ】図３Ａは、ＭＰＥＧ４に規定されたＤＣ／ＡＣ予測処理を説明する概念図である。
【図３Ｂ】図３Ｂは、ＭＰＥＧ４に規定されたＤＣ／ＡＣ予測処理を説明する概念図である。
【図３Ｃ】図３Ｃは、ＭＰＥＧ４に規定されたＤＣ／ＡＣ予測処理を説明する概念図である。
【図３Ｄ】図３Ｄは、ＭＰＥＧ４に規定されたＤＣ／ＡＣ予測処理を説明する概念図である。
【図３Ｅ】図３Ｅは、ある対象マクロブロックのＤＣ／ＡＣ予測処理において参照され得る、対象マクロブロックの周囲のブロックを示す概念図である。
【図４】図４は、本発明の実施の一形態に係る画像符号化装置及び画像復号化装置によって処理される動画像のフォーマットを示す概念図である。
【図５】図５は、本実施形態に係る画像符号化装置及び画像復号化装置によって処理される動画像の各フレーム画像のフォーマットを示す概念図である。
【図６】図６は、本実施の形態に係る画像符号化装置の構成を示すブロック図である。
【図７】図７は、本実施の形態に係る画像符号化装置の共用メモリのフォーマットを示す概念図である。
【図８】図８は、本実施の形態に係る画像符号化装置のＤＣ／ＡＣ予測器に搭載されるテンポラリメモリの構成を示す概念図である。
【図９】図９は、本実施の形態に係る画像符号化装置の動きベクトル予測器に搭載されるテンポラリメモリの構成を示す概念図である。
【図１０Ａ】図１０Ａは、左端のマクロブロックＭＢ（ｊ，１）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図１０Ｂ】図１０Ｂは、左端のマクロブロックＭＢ（ｊ，１）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図１１Ａ】図１１Ａは、左端のマクロブロックＭＢ（ｊ，１）に対するベクトル予測処理の手順を示す概念図である。
【図１１Ｂ】図１１Ｂは、左端のマクロブロックＭＢ（ｊ，１）に対するベクトル予測処理の手順を示す概念図である。
【図１２Ａ】図１２Ａは、中間のマクロブロックＭＢ（ｊ，ｊ）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図１２Ｂ】図１２Ｂは、中間のマクロブロックＭＢ（ｊ，ｊ）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図１３Ａ】図１３Ａは、中間のマクロブロックＭＢ（ｊ，ｊ）に対するベクトル予測処理の手順を示す概念図である。
【図１３Ｂ】図１３Ｂは、中間のマクロブロックＭＢ（ｊ，ｊ）に対するベクトル予測処理の手順を示す概念図である。
【図１４Ａ】図１４Ａは、右端のマクロブロックＭＢ（ｊ，Ｎ）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図１４Ｂ】図１４Ｂは、右端のマクロブロックＭＢ（ｊ，Ｎ）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図１５Ａ】図１５Ａは、右端のマクロブロックＭＢ（ｊ，Ｎ）に対するベクトル予測処理の手順を示す概念図である。
【図１５Ｂ】図１５Ｂは、右端のマクロブロックＭＢ（ｊ，Ｎ）に対するベクトル予測処理の手順を示す概念図である。
【図１６】図１６は、双方向予測に対応するように構成された場合の、本実施の形態に係る画像符号化装置の共用メモリのフォーマットを示す概念図である。
【図１７】図１７は、本実施の形態に係る画像復号化装置の構成を示すブロック図である。
【図１８Ａ】図１８Ａは、左端のマクロブロックＭＢ（ｊ，１）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図１８Ｂ】図１８Ｂは、左端のマクロブロックＭＢ（ｊ，１）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図１９Ａ】図１９Ａは、左端のマクロブロックＭＢ（ｊ，１）に対するベクトル予測処理の手順を示す概念図である。
【図１９Ｂ】図１９Ｂは、左端のマクロブロックＭＢ（ｊ，１）に対するベクトル予測処理の手順を示す概念図である。
【図２０Ａ】図２０Ａは、中間のマクロブロックＭＢ（ｊ，ｊ）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図２０Ｂ】図２０Ｂは、中間のマクロブロックＭＢ（ｊ，ｊ）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図２１Ａ】図２１Ａは、中間のマクロブロックＭＢ（ｊ，ｊ）に対するベクトル予測処理の手順を示す概念図である。
【図２１Ｂ】図２１Ｂは、中間のマクロブロックＭＢ（ｊ，ｊ）に対するベクトル予測処理の手順を示す概念図である。
【図２２Ａ】図２２Ａは、右端のマクロブロックＭＢ（ｊ，Ｎ）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図２２Ｂ】図２２Ｂは、右端のマクロブロックＭＢ（ｊ，Ｎ）に対するＤＣ／ＡＣ予測処理の手順を示す概念図である。
【図２３Ａ】図２３Ａは、右端のマクロブロックＭＢ（ｊ，Ｎ）に対するベクトル予測処理の手順を示す概念図である。
【図２３Ｂ】図２３Ｂは、右端のマクロブロックＭＢ（ｊ，Ｎ）に対するベクトル予測処理の手順を示す概念図である。
【符号の説明】
【０１５５】
１：減算器
２：ＤＣＴ演算器
３：量子化器
４：ＤＣ／ＡＣ予測器
５：可変長符号器
６：逆量子化器
７：逆ＤＣＴ演算器
８：加算器
９：ビデオメモリ
１０：画像符号化装置
１１：動き検出ブロック
１２：動き補償ブロック
１３：動きベクトル予測器
１４：共用メモリ
１５：選択器
２１：テンポラリメモリ
２２１〜２２４：対象メモリブロック
２３１、２３２：参照メモリブロック
２４：テンポラリメモリ
２５１〜２５４：対象メモリブロック
２６１、２６２：参照メモリブロック
３１１〜３１Ｎ：メモリエリア
３２１〜３２２Ｎ：メモリブロック
３３１〜３３Ｎ：フラグ領域
４０：画像復号化装置
４１：可変長復号器
４２：ＤＣ／ＡＣ逆予測器
４３：逆量子化器
４４：逆ＤＣＴ演算器
４５：加算器
４６：動きベクトル逆予測器
４７：ビデオメモリ
４８：動き補償ブロック
４９：共用メモリ
５０：選択器
５１：テンポラリメモリ
５２１、５２２、５２３、５２４：対象メモリブロック
５３１、５３２、５６１、５６２：参照メモリブロック
５４：テンポラリメモリ
５５１、５５２、５５３、５５４：対象メモリブロック
５６１、５６２：参照メモリブロック
６２１〜６２２Ｎ：メモリブロック
【図１】
2006262188.tif 000003
【図２Ａ】
2006262188.tif 000004
【図２Ｂ】
2006262188.tif 000005
【図２Ｃ】
2006262188.tif 000006
【図２Ｄ】
2006262188.tif 000007
【図２Ｅ】
2006262188.tif 000008
【図３Ａ】
2006262188.tif 000009
【図３Ｂ】
2006262188.tif 000010
【図３Ｃ】
2006262188.tif 000011
【図３Ｄ】
2006262188.tif 000012
【図３Ｅ】
2006262188.tif 000013
【図４】
2006262188.tif 000014
【図５】
2006262188.tif 000015
【図６】
2006262188.tif 000016
【図７】
2006262188.tif 000017
【図８】
2006262188.tif 000018
【図９】
2006262188.tif 000019
【図１０Ａ】
2006262188.tif 000020
【図１０Ｂ】
2006262188.tif 000021
【図１１Ａ】
2006262188.tif 000022
【図１１Ｂ】
2006262188.tif 000023
【図１２Ａ】
2006262188.tif 000024
【図１２Ｂ】
2006262188.tif 000025
【図１３Ａ】
2006262188.tif 000026
【図１３Ｂ】
2006262188.tif 000027
【図１４Ａ】
2006262188.tif 000028
【図１４Ｂ】
2006262188.tif 000029
【図１５Ａ】
2006262188.tif 000030
【図１５Ｂ】
2006262188.tif 000031
【図１６】
2006262188.tif 000032
【図１７】
2006262188.tif 000033
【図１８Ａ】
2006262188.tif 000034
【図１８Ｂ】
2006262188.tif 000035
【図１９Ａ】
2006262188.tif 000036
【図１９Ｂ】
2006262188.tif 000037
【図２０Ａ】
2006262188.tif 000038
【図２０Ｂ】
2006262188.tif 000039
【図２１Ａ】
2006262188.tif 000040
【図２１Ｂ】
2006262188.tif 000041
【図２２Ａ】
2006262188.tif 000042
【図２２Ｂ】
2006262188.tif 000043
【図２３Ａ】
2006262188.tif 000044
【図２３Ｂ】
2006262188.tif 000045