(57)【要約】    【課題】画像圧縮の動きベクトル検出において、参照画像データバッファに２バンク方式を採用した場合、容量を小さくすると、隣り合う対象ブロックの動きベクトル検出で参照フレームメモリから参照画像データバッファへの重複転送が発生している。    【解決手段】個別に制御可能な４個のメモリから構成される参照画像データバッファに、記憶されている画像データの重複が無いように順次画像データを書き込み、並行して参照画像データバッファ内の動きベクトルの検出領域を、順次変更していくことで、参照画像データバッファの容量を小さくすることと、重複転送の削減を両立する。【選択図】  図１２
2005210647.tif 000002
【特許請求の範囲】
【請求項１】
参照フレーム画像を参照して、対象フレーム画像内の対象ブロック画像の動きベクトルを検出する動きベクトル検出装置であって、
所定数の参照ブロック画像から構成される参照フレーム画像を記憶している参照フレーム記憶手段と、
対象フレーム画像内の１個の対象ブロック画像を記憶している対象ブロック記憶手段と、
前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を記憶している検出領域と、予備領域とを備える参照ブロック記憶手段と、
前記対象ブロック画像に隣接する次対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像のうち、前記検出領域に含まれていない参照ブロック画像を前記参照フレーム記憶手段から読み出し、読み出した前記参照ブロック画像を、前記予備領域に書き込む書込手段と、
前記検出領域に記憶されている前記参照ブロック画像を参照して前記対象ブロック画像の動きベクトルを検出する検出手段と
を備えることを特徴とする動きベクトル検出装置。
【請求項２】
前記検出手段は、前記書込手段による前記書込みと並行して、前記対象ブロック画像の動きベクトルを検出する
ことを特徴とする請求項１に記載の動きベクトル検出装置。
【請求項３】
参照フレーム画像に基づいて、対象フレーム画像内の対象ブロック画像の動きベクトルを検出する動きベクトル検出装置であって、
所定数の参照ブロック画像から構成される参照フレーム画像を記憶している参照フレーム記憶手段と、
対象フレーム画像内の１個の対象ブロック画像を記憶している対象ブロック記憶手段と、
前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を記憶している参照ブロック記憶手段と、
前記参照ブロック記憶手段において、前記対象ブロック画像の前記対象フレーム画像内の位置に基づいて、前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を含む検出領域と、その他の予備領域とを設定する設定手段と、
前記対象ブロック画像に隣接する次対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像のうち、前記検出領域に含まれていない参照ブロック画像を前記参照フレーム記憶手段から読み出し、読み出した前記参照ブロック画像を、前記予備領域に書き込む書込手段と、
前記検出領域に記憶されている前記参照ブロック画像に基づいて前記対象ブロック画像の動きベクトルを検出する検出手段と
を備えることを特徴とする動きベクトル検出装置。
【請求項４】
前記検出手段は、前記書込手段による前記書込みと並行して、前記対象ブロック画像の動きベクトルを検出する
ことを特徴とする請求項３に記載の動きベクトル検出装置。
【請求項５】
前記設定手段は、前記対象ブロック画像に対応する参照ブロック画像が、前記検出領域の中央に位置するように、前記検出領域を設定する
ことを特徴とする請求項４に記載の動きベクトル検出装置。
【請求項６】
前記参照ブロック記憶手段に記憶されている各参照ブロック画像は、前記参照ブロック記憶手段内における当該参照ブロック画像の位置を示す物理アドレスにより識別され、
前記検出手段は、
前記検出領域内における参照ブロック画像の位置を示す論理アドレスを指定する指定部と、
指定された前記論理アドレスを変換して、前記物理アドレスを生成する変換部と、
生成された物理アドレスにより識別される参照ブロック画像を画素単位で前記参照ブロック記憶手段から読み出す読出部と、
前記検出領域内における全ての参照ブロック画像について、前記指定部、前記変換部及び前記読出部に対して、前記指定と前記変換と前記読出しとをするように繰り返し制御する繰返制御部と、
得られた前記参照ブロック画像と、前記対象ブロック画像とを用いて、前記対象ブロック画像の動きベクトルを算出する算出部と
を含むことを特徴とする請求項５に記載の動きベクトル検出装置。
【請求項７】
前記参照ブロック記憶手段は、対象フレーム画像の端部に接している前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を記憶しており、
前記設定手段は、前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を算出範囲として設定し、
前記検出手段は、前記検出領域内の前記算出範囲に記憶されている前記参照ブロック画像に基づいて動きベクトルを検出する
ことを特徴とする請求項６に記載の動きベクトル検出装置。
【請求項８】
前記参照フレーム記憶手段は、行列状に配置された複数の記憶素子から構成され、各記憶素子は、行アドレスと列アドレスとによりその位置が特定され、前記参照フレーム画像を構成する各参照ブロック画像は、同一の行アドレスによりその位置が特定される複数の記憶素子において記憶されており、
前記書込手段は、同一の行アドレスにより位置が特定される複数の記憶素子から、前記参照ブロック画像を読み出す
ことを特徴とする請求項３に記載の動きベクトル検出装置。
【請求項９】
前記参照ブロック記憶手段は、３行４列分の参照ブロック画像を記憶するための領域を備え、
前記設定手段は、３行３列分の参照ブロック画像を記憶するための前記検出領域と、３行１列分の参照ブロック画像を記憶するための前記予備領域とを設定する
ことを特徴とする請求項３に記載の動きベクトル検出装置。
【請求項１０】
前記参照ブロック記憶手段は、３行５列分の参照ブロック画像を記憶するための領域を備え、
前記設定手段は、３行３列分の参照ブロック画像を記憶するための前記検出領域と、３行２列分の参照ブロック画像を記憶するための前記予備領域とを設定する
ことを特徴とする請求項３に記載の動きベクトル検出装置。
【請求項１１】
参照フレーム画像に基づいて、対象フレーム画像内の対象ブロック画像の動きベクトルを検出する動きベクトル検出方法であって、
所定数の参照ブロック画像から構成される参照フレーム画像を記憶している参照フレーム記憶ステップと、
対象フレーム画像内の１個の対象ブロック画像を記憶している対象ブロック記憶ステップと、
前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を記憶している参照ブロック記憶ステップと、
前記参照ブロック記憶手段において、前記対象ブロック画像の前記対象フレーム画像内の位置に基づいて、前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を記憶している検出領域と、その他の予備領域とを設定する設定ステップと、
前記対象ブロック画像に隣接する次対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像のうち、前記検出領域に含まれていない参照ブロック画像を前記参照フレーム記憶手段から読み出し、読み出した前記参照ブロック画像を、前記予備領域に書き込む書込ステップと、
前記検出領域に記憶されている前記参照ブロック画像に基づいて前記対象ブロック画像の動きベクトルを検出する検出ステップと
を備えることを特徴とする動きベクトル検出方法。
【請求項１２】
参照フレーム画像に基づいて、対象フレーム画像内の対象ブロック画像を動き補償予測を用いて圧縮する動画撮影装置であって、
所定数の参照ブロック画像から構成される参照フレーム画像を記憶している参照フレーム記憶手段と、
対象フレーム画像内の１個の対象ブロック画像を記憶している対象ブロック記憶手段と、
前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を記憶している参照ブロック記憶手段と、
前記参照ブロック記憶手段において、前記対象ブロック画像の前記対象フレーム画像内の位置に基づいて、前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を含む検出領域と、その他の予備領域とを設定する設定手段と、
前記対象ブロック画像に隣接する次対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像のうち、前記検出領域に含まれていない参照ブロック画像を前記参照フレーム記憶手段から読み出し、読み出した前記参照ブロック画像を、前記予備領域に書き込む書込手段と、
前記検出領域に記憶されている前記参照ブロック画像に基づいて前記対象ブロック画像の動きベクトルを検出する検出手段と
を備えることを特徴とする動画撮影装置。
【発明の詳細な説明】
【技術分野】
【０００１】
動画圧縮方法の１つである動き補償予測符号化において動きベクトルを検出する技術に関する。
【背景技術】
【０００２】
高い圧縮率で画像を圧縮することのできる技術が発達し、ディジタルカメラやディジタルビデオカメラに用いられている。
動画像の圧縮方法として、ＭＰＥＧ(Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ)が一般的に知られている。ＭＰＥＧにおいて、被写体の変位と画像の差分データのみを符号化することで効率よく画像データを圧縮する動き補償予測が用いられている。動き補償予測では、被写体の変位を示す動きベクトルをブロックマッチング法をはじめとする算出方法で算出する。
【０００３】
特許文献１では、第１バンクと第２バンクとを備える参照画像データバッファが開示されており、第１バンクは、参照フレーム画像内の１６画素×８ラインのブロック画像を水平方向に４３個分含む単位処理領域内の画像データを記憶している。第１バンクに記憶されている画像データを読み出し、動きベクトルを算出すると同時に、第２バンクに参照フレーム画像上の次の単位処理領域内の画像データを書き込む。次に、第１バンクと第２バンクを切り替え、第２バンクから画像データを読み出して動きベクトルを算出すると同時に、第１バンクに参照フレーム画像内の次の単位処理領域の画像データを書き込む。以下同様の動作を繰り返し行う。
【０００４】
ここで、特許文献１で開示される方法において参照画像データバッファの容量をできる限り小さくした場合を想定する。１個のフレーム画像は１２８画素×１２８ラインの画像データから構成されている。１個のフレーム画像は、縦に８等分、横に８等分された６４個のマクロブロックに分割されており、フレーム上の左から右、上から下の順にマクロブロックに番号が割り振られている。１個のマクロブロックは１６画素×１６ライン分の画像データを含む。以下の説明において、この番号をブロック番号と呼び、参照フレーム画像上でブロック番号ｎのマクロブロックを参照ブロック「ｎ」、対象フレーム画像上でブロック番号ｎのマクロブロックを対象ブロック「ｎ」などと表現する。また、参照フレーム画像を構成するマクロブロックを参照ブロック、対象フレーム画像を構成するマクロブロックを対象ブロックと呼ぶ。
【０００５】
図２５に示すように参照画像データバッファ２００は、第１バンク５０と第２バンク５１を備えている。各バンクは、それぞれ９個の領域から構成され、１個の領域は１個のマクロブロック分の容量を備える。
１個の対象ブロックの動きベクトル検出において、対象ブロックと同じブロック番号の参照ブロックを中央に含む参照フレーム画像上の３行×３列分の参照ブロックを含む領域を参照領域とする。参照フレーム画像は参照フレームメモリに記憶されているとする。
【０００６】
まず、図２５（ａ）のように、第１バンク５０の領域５０ｅ、５０ｆ、５０ｈ、５０ｉにそれぞれ、参照ブロック「１」、参照ブロック「２」、参照ブロック「９」、参照ブロック「１０」が記憶されている。これらの参照ブロックは、対象ブロック「１」の参照領域に含まれる参照ブロックである。
次に、図２５（ｂ）のように、第１バンク５０に書き込まれている参照ブロックを内において、動きベクトルを検出すると同時に、対象ブロック「２」の参照領域に含まれる参照ブロック「１」、参照ブロック「２」、参照ブロック「３」、参照ブロック「９」、参照ブロック「１０」、参照ブロック「１１」が、参照フレームメモリから第２バンクの領域５１ｄ〜５１ｉにそれぞれ転送される。
【０００７】
次に、第１バンク５０と第２バンク５１を切り替え、図２５（ｃ）のように、対象ブロック「３」の参照領域に含まれる参照ブロック「２」、参照ブロック「３」、参照ブロック「４」、参照ブロック「１０」、参照ブロック「１１」、参照ブロック「１２」、が参照フレームメモリから第１バンクの領域５０ｄ〜５０ｉに転送され、これと並行して第２バンクに書き込まれている参照ブロックを内において、動きベクトルを検出する。
【０００８】
このようにして、動きベクトル検出の演算が繰り返される。
【特許文献１】特開平３−８５８８５
【発明の開示】
【発明が解決しようとする課題】
【０００９】
このとき、図２５（ｂ）では、第１バンク５０の領域５０ｆに記憶されている参照ブロック「２」と第２バンク５１の領域５１ｅに記憶されている参照ブロック「２」とが重複している。また、第１バンク５０の領域５０ｉに記憶されている参照ブロック「１０」と第２バンク５１の領域５１ｈに記憶されている参照ブロック「１０」とが重複している。図２５（ｃ）でも同様に、第１バンク５０、第２バンク５１双方に参照ブロック「２」、参照ブロック「３」、参照ブロック「１０」、参照ブロック「１１」が記憶されている。
【００１０】
参照画像データバッファ２００に記憶されている参照ブロックは参照フレームメモリから随時転送されている。つまり、参照フレームメモリから参照画像データバッファへ同じデータを複数回転送するという無駄が生じる。
この問題点を解決するために、本発明は、参照フレームメモリから参照画像データバッファへのデータの重複転送を削減することのできる動きベクトル検出装置、動き検出方法及び動画撮影装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
前記の課題を解決するために、本発明は、参照フレーム画像に基づいて、対象フレーム画像内の対象ブロック画像の動きベクトルを検出する動きベクトル検出装置であって、所定数の参照ブロック画像から構成される参照フレーム画像を記憶している参照フレーム記憶手段と、対象フレーム画像内の１個の対象ブロック画像を記憶している対象ブロック記憶手段と、前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を記憶している検出領域と、予備領域とを備える参照ブロック記憶手段と、前記対象ブロック画像に隣接する次対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像のうち、前記検出領域に含まれていない参照ブロック画像を前記参照フレーム記憶手段から読み出し、読み出した前記参照ブロック画像を、前記予備領域に書き込む書込手段と、前記検出領域に記憶されている前記参照ブロック画像に基づいて前記対象ブロック画像の動きベクトルを検出する検出手段とを備える。
【発明の効果】
【００１２】
上記の構成によると、前記対象ブロック画像の動きベクトル検出に必要な参照ブロックと重複なく、前記次対象ブロックの動きベクトル検出に必要な参照ブロックを参照フレーム記憶手段から参照ブロック記憶手段へ転送することができる。
また、前記検出手段は、前記書込手段による前記書込みと並行して、前記対象ブロック画像の動きベクトルを検出することを特徴とする。
【００１３】
この機能により、動きベクトル検出処理を高速化することができる。
本発明は、参照フレーム画像に基づいて、対象フレーム画像内の対象ブロック画像の動きベクトルを検出する動きベクトル検出装置であって、所定数の参照ブロック画像から構成される参照フレーム画像を記憶している参照フレーム記憶手段と、対象フレーム画像内の１個の対象ブロック画像を記憶している対象ブロック記憶手段と、前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を記憶している参照ブロック記憶手段と、前記参照ブロック記憶手段において、前記対象ブロック画像の前記対象フレーム画像内の位置に基づいて、前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を含む検出領域と、その他の予備領域とを設定する設定手段と、前記対象ブロック画像に隣接する次対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像のうち、前記検出領域に含まれていない参照ブロック画像を前記参照フレーム記憶手段から読み出し、読み出した前記参照ブロック画像を、前記予備領域に書き込む書込手段と、前記検出領域に記憶されている前記参照ブロック画像に基づいて前記対象ブロック画像の動きベクトルを検出する検出手段とを備えることを特徴とする。
【００１４】
この構成により、前記参照ブロック記憶手段内の任意の領域を検出領域に設定することができ、対象フレーム上で隣接する対象ブロック画像の動きベクトル検出を連続して行うことができる。
本発明において、前記検出手段は、前記書込手段による前記書込みと並行して、前記対象ブロック画像の動きベクトルを検出することを特徴とする。
【００１５】
この機能により、動きベクトル検出処理を高速化することができる。
また、前記設定手段は、前記対象ブロック画像に対応する参照ブロック画像が、前記検出領域の中央に位置するように、前記検出領域を設定することを特徴とする。
この機能により、各対象ブロックの動きベクトルを正確に検出することができる。
本発明において、前記参照ブロック記憶手段に記憶されている各参照ブロック画像は、前記参照ブロック記憶手段内における当該参照ブロック画像の位置を示す物理アドレスにより識別され、前記検出手段は、前記検出領域内における参照ブロック画像の位置を示す論理アドレスを指定する指定部と、指定された前記論理アドレスを変換して、前記物理アドレスを生成する変換部と、生成された物理アドレスにより識別される参照ブロック画像を前記参照ブロック記憶手段から読み出す読出部と、前記検出領域内における全ての参照ブロック画像について、前記指定部、前記変換部及び前記読出部に対して、前記指定と前記変換と前記読出しとをするように繰り返し制御する繰返制御部と、得られた前記参照ブロック画像と、前記対象ブロック画像とを用いて、前記対象ブロック画像の動きベクトルを算出する算出部とを含むことを特徴とする。
【００１６】
この機能により、本発明では、前記参照ブロック記憶手段内で検出領域がどの位置であっても、動きベクトル検出することができるため、前記参照ブロック記憶手段を無駄なく活用することができる。
本発明において、前記参照ブロック記憶手段は、対象フレーム画像の端部に接している前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を記憶しており、前記設定手段は、前記対象ブロック画像に対応する参照ブロック画像を含む複数の参照ブロック画像を算出範囲として設定し、前記検出手段は、前記検出領域内の前記算出範囲に記憶されている前記参照ブロック画像に基づいて動きベクトルを検出することを特徴とする。
【００１７】
この構成により、対象フレーム画像内の端部に接する対象ブロック画像も正確に動きベクトル検出することができる。
前記参照フレーム記憶手段は、行列状に配置された複数の記憶素子から構成され、各記憶素子は、行アドレスと列アドレスとによりその位置が特定され、前記参照フレーム画像を構成する各参照ブロック画像は、同一の行アドレスによりその位置が特定される複数の記憶素子において記憶されており、前記書込手段は、同一の行アドレスにより位置が特定される複数の記憶素子から、前記参照ブロック画像を読み出すことを特徴とする。
【００１８】
この構成により、１個の行アドレスを指定し、列アドレスのみを指定しなおすことで参照ブロック画像をより高速に読み出すことができる。
前記動き検出装置において、前記参照ブロック記憶手段は、３行４列分の参照ブロック画像を記憶するための領域を備え、前記設定手段は、３行３列分の参照ブロック画像を記憶するための前記検出領域と、３行１列分の参照ブロック画像を記憶するための前記予備領域とを設定することを特徴とする。
【００１９】
この構成により、対象フレーム画像内の水平方向に１列分の対象ブロック画像の動きベクトル検出を連続して行うことができる。
前記動き検出装置において、前記参照ブロック記憶手段は、３行５列分の参照ブロック画像を記憶するための領域を備え、前記設定手段は、３行３列分の参照ブロック画像を記憶するための前記検出領域と、３行２列分の参照ブロック画像を記憶するための前記予備領域とを設定することを特徴とする。
【００２０】
この構成により、１対象フレーム画像を構成する対象ブロック画像の動きベクトル検出を連続して行うことができる。
【発明を実施するための最良の形態】
【００２１】
１．第１の実施の形態
本発明に係る１個の実施の形態としての動画撮影装置１００について説明する。
１．１  動画撮影装置１００の構成
動画撮影装置１００は図１に示すように、撮像部１０１、並替処理部１０２、スイッチ１０３、ＤＣＴ処理部１０５、量子化処理部１０６、可変長符号化部１０７、バッファメモリ１０８、レート制御部１０９、メインメモリ１１０、表示部１１２、予測画像生成部１２３、加算処理部１２４、逆ＤＣＴ処理部１２５、逆量子化処理部１２６、スイッチ１２７、動き検出部１３０及び参照フレームメモリ１３１から構成される。
【００２２】
撮像部１０１は、検出した光から、一定時間ごとに、１２８画素×１２８ラインのフレーム画像信号を生成し、生成したフレーム画像信号から、輝度信号Ｙ、色差信号Ｃｒ、Ｃｂからなるフレーム画像を生成し、生成したフレーム画像を、並替処理部１０２へ出力する。
並替処理部１０２は、撮像部１０１からフレーム画像を受け取り、受け取ったフレーム画像を、フレーム内符号化するＩピクチャ（Ｉｎｔｒａ  ｃｏｄｅｄ  ｐｉｃｔｕｒｅ）、フレーム間符号化をするＰピクチャ（Ｐｒｅｄｉｃｔｉｖｅ  ｐｉｃｔｕｒｅ）及びＢピクチャ（Ｂｉｄｉｒｅｃｔｉｏｎａｌｌｙ  ｐｉｃｔｕｒｅ）のいずれかに決定し、Ｉピクチャを減算処理部１０４へ出力し、次にＰピクチャとＢピクチャとを減算処理部１０４及び動き検出部１３０へ出力する。並替処理部１０２で扱う全てのフレーム画像は、図２に示すように、フレーム画像３００を縦に８等分、横に８等分に分割して生成された６４個のマクロブロックを含み、各マクロブロックは１６画素×１６ライン分の画素データより構成される。１行目に位置する８個のマクロブロックには左から順に１〜８、２行目に位置する８個のマクロブロックには左から順に９〜１６と、いうように各マクロブロックに１〜６４のブロック番号が割り当てられている。ブロック番号は、フレーム画像内での各マクロブロックの位置と符号化処理の順番とを示している。
【００２３】
また、並替処理部１０２は、Ｐピクチャ又はＢピクチャのマクロブロックのうち、ブロック番号１のマクロブロックを出力するときに、１フレーム画像の始まりを示す制御信号を動き検出部１３０へ出力する。
並替処理部１０２、減算処理部１０４、ＤＣＴ処理部１０５、量子化処理部１０６、可変長符号化部１０７、予測画像生成部１２３、加算処理部１２４、逆ＤＣＴ処理部１２５、逆量子化処理部１２６、動き検出部１３０及び参照フレームメモリ１３１において、フレーム画像はマクロブロックごとに扱われる。
【００２４】
減算処理部１０４は、並替処理部１０２からＩピクチャのマクロブロックを受け取り、受け取ったＩピクチャのマクロブロックをそのままＤＣＴ処理部１０５へ出力する。また、並替処理部１０２からＰピクチャ又はＢピクチャのマクロブロックを受け取り、予測画像生成部１２３からＰピクチャ又はＢピクチャのマクロブロックの予測画像を受け取り、並替処理部１０２から受け取ったマクロブロックから予測画像生成部１２３から受け取った予測画像を減じて、差分データを生成する。減算処理部１０４は、生成したＰピクチャ又はＢピクチャのマクロブロックの差分データをＤＣＴ処理部１０５へ出力する。
【００２５】
ＤＣＴ処理部１０５は、減算処理部１０４からＩピクチャのマクロブロックを受け取る。また、減算処理部１０４からＰピクチャ又はＢピクチャのマクロブロックの差分データを受け取る。ＤＣＴ処理部１０５は、受け取ったＩピクチャのマクロブロック、Ｐピクチャのマクロブロックの差分データ又はＢピクチャのマクロブロックの差分データにＤＣＴ（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）処理を施し、ＤＣＴ係数を生成し、生成したＤＣＴ係数を量子化処理部１０６へ出力する。
【００２６】
量子化処理部１０６は、ＤＣＴ処理部からＩピクチャのマクロブロックのＤＣＴ係数、Ｐピクチャのマクロブロックの差分データのＤＣＴ係数、Ｂピクチャのマクロブロックの差分データのＤＣＴ係数を受け取り、受け取ったＤＣＴ係数に量子化処理を施し量子化ＤＣＴ係数を生成し、生成したＩピクチャのマクロブロックの量子化ＤＣＴ係数とＰピクチャのマクロブロックの差分データの量子化ＤＣＴ係数を可変長符号化部１０７と逆量子化処理部１２６とへ出力する。また、生成したＢピクチャのマクロブロックの差分データの量子化ＤＣＴ係数を可変長符号化部１０７へ出力する。
【００２７】
可変長符号化部１０７は、量子化処理部１０６からＩピクチャのマクロブロックの量子化ＤＣＴ係数、Ｐピクチャのマクロブロックの差分データの量子化ＤＣＴ係数又はＢピクチャのマクロブロックの量子化ＤＣＴ係数を受け取り、動き検出部１３０からＰピクチャ又はＢピクチャのマクロブロックの動きベクトルを受け取り、それぞれの発生頻度に応じて、発生頻度の高いものには短符号を、発生頻度の低いものには長符号を割当て符号化して、可変長符号を生成する。次に生成した可変長符号をバッファメモリ１０８へ出力する。
【００２８】
バッファメモリ１０８は、可変長符号化部１０７から可変長符号を受け取り記憶する。バッファメモリ１０８に記憶された可変長符号は、メインメモリ１１０へ出力される。
レート制御部１０９は、バッファメモリ１０８に送られてきた可変長符号のビット量を監視し、量子化処理部１０６の量子化スケールを最適化する。
メインメモリ１１０は、バッファメモリ１０８から可変長符号を受け取り、記憶する。なお、メインメモリ１１０に記憶されている可変長符号は、外部記憶装置（ＣＤ−Ｒ、メモリカードなど）へ出力される。
【００２９】
逆量子化処理部１２６は、量子化処理部１０６から、Ｉピクチャのマクロブロックの量子化ＤＣＴ係数又はＰピクチャのマクロブロックの差分データの量子化ＤＣＴ係数を受け取り、受け取った量子化ＤＣＴ係数に逆量子化処理を施し、ＤＣＴ係数を生成する。次に、生成したＩピクチャのマクロブロックのＤＣＴ係数又はＰピクチャのマクロブロックの差分データのＤＣＴ係数を逆ＤＣＴ処理部１２５へ出力する。
【００３０】
逆ＤＣＴ処理部１２５は、逆量子化処理部１２６からＩピクチャのマクロブロックのＤＣＴ係数又はＰピクチャのマクロブロックの差分データのＤＣＴ係数を受け取り、受け取ったＤＣＴ係数に逆ＤＣＴ処理を施し、Ｉピクチャのマクロブロック又はＰピクチャのマクロブロックの差分データを生成する。次に、逆ＤＣＴ処理部１２５は、生成したＩピクチャのマクロブロック又はＰピクチャのマクロブロックの差分データを加算処理部１２４へ出力する。
【００３１】
加算処理部１２４は、逆ＤＣＴ処理部からＩピクチャのマクロブロック又はＰピクチャのマクロブロックの差分データを受け取り、予測画像生成部１２３からＰピクチャのマクロブロックの予測画像を受け取る。次に、受け取ったＩピクチャのマクロブロックをそのまま参照フレームメモリ１３１へ出力する。また、受けとったＰピクチャのマクロブロックの差分データとＰピクチャのマクロブロックの予測画像を加算処理し、Ｐピクチャのマクロブロックを生成し、生成したＰピクチャのマクロブロックを参照フレームメモリ１３１へ出力する。
【００３２】
参照フレームメモリ１３１は、加算処理部１２４からＩピクチャとＰピクチャのマクロブロックを受け取り記憶する。
動き検出部１３０は、並替処理部１０２からＰピクチャ又はＢピクチャのマクロブロックを受け取り、参照フレームメモリ１３１に記憶されているＩピクチャ又はＰピクチャのマクロブロックを基に受け取ったＰピクチャ又はＢピクチャのマクロブロックの動きベクトルを検出し、検出した動きベクトルを可変長符号化部１０７と予測画像生成部１２３へ出力する。動き検出部１３０については、後で詳細に説明する。
【００３３】
予測画像生成部１２３は、動き検出部１３０からＰピクチャ又はＢピクチャのマクロブロックの動きベクトルを受け取り、受け取った動きベクトルと参照フレームメモリ１３１に記憶されているＩピクチャ又はＰピクチャのマクロブロックを基に、Ｐピクチャ又はＢピクチャのマクロブロックの予測画像を生成する。次に、生成したＰピクチャのマクロブロックの予測画像を減算処理部１０４と加算処理部１２４へ出力する。また、Ｂピクチャのマクロブロックの予測画像を減算処理部１０４へ出力する。
【００３４】
１．２  参照フレームメモリ１３１  
参照フレームメモリ１３１は、ＲＡＭから構成され、動き補償予測符号化において動きベクトル検出と予測画像生成の基になるＩピクチャとＰピクチャのフレーム画像を記憶している。加算部１２４から出力され、参照フレームメモリ１３１に記憶されるＩピクチャとＰピクチャを参照フレームと呼び、参照フレームを構成するマクロブロックを参照ブロックと呼ぶ。
【００３５】
１．３  動き検出部１３０
動き検出部１３０は、図３に示すように、動き検出制御部１３２、参照フレームメモリ制御部１３３、参照画像データバッファ１３４、対象画像データバッファ１３５、動きベクトル演算部１３６、入力部１３７及び出力部１３８から構成される。
（１）入力部１３７
入力部１３７は、並替処理部１０２から動きベクトルの検出対象となるＰピクチャ又はＢピクチャのマクロブロック（以下対象ブロックと呼ぶ）を受け取り、受け取った対象ブロックを対象画像データバッファ１３５へ転送するとともに、動き検出制御部１３２へ、対象ブロックの受信を示す制御信号を送る。特に、並替処理部１０２から、対象ブロックと供に１フレーム画像の始まりを示す制御信号を受け取ると、受け取った１フレーム画像の始まりを示す制御信号を動き検出制御部１３２へ出力する。
【００３６】
（２）参照画像データバッファ１３４及び対象画像データバッファ１３５
参照画像データバッファ１３４は、図３に示すように、１６画素×４８ライン分の容量を持つ４つのメモリ１４１〜１４４を備え、それぞれのメモリ１４１〜１４４が個別のバス１４６〜１４９で動きベクトル演算部及び参照フレームメモリ制御部１３３と接続されている。また、メモリ１４１〜１４４は、動き検出制御部１３２とも、それぞれ個別のバス１５１〜１５４で接続されている。
【００３７】
図４に示すように、参照画像データバッファ１３４内は、３行×４列の行列状に配列された１２個のブロック領域１〜１２により構成され、各ブロック領域は、１個のマクロブロック分の容量を備えている。メモリ１４１は１列目のブロック領域１、５、９から構成され、メモリ１４２は２列目のブロック領域２、６、１０から構成され、メモリ１４３は３列目のブロック領域３、７、１１から構成され、メモリ１４４は４列目のブロック領域４、８、１２から構成される。
【００３８】
また、１行目のブロック領域１〜４には、それぞれ物理アドレス「１」、「２」、「３」、「４」が割り当てられ、２行目のブロック領域５〜８には、それぞれ物理アドレス「５」、「６」、「７」、「８」が割り当てられ、３行目のブロック領域９〜１２には、それぞれ物理アドレス「９」、「１０」、「１１」、「１２」が割り当てられており、物理アドレスにより各ブロック領域の位置が示される。
【００３９】
また、各ブロック領域は、１６行×１６列の行列状に配置されたメモリセルから構成されている。各メモリセルには、セルアドレスが割り当てられている。具体的には、物理アドレス「１」のブロック領域の１行目のメモリセル１６個にはそれぞれセルアドレス０〜１５、物理アドレス「２」のブロック領域の１行目のメモリセルにはそれぞれセルアドレス１６〜３１、物理アドレス「３」のブロック領域の１行目のメモリセルにはそれぞれセルアドレス３２〜４７、物理アドレス「４」のブロック領域の１行目のメモリセルにはそれぞれセルアドレス４８〜６３が割り当てられている。また、物理アドレス「１」のブロック領域の２行目のメモリセル１６個には６４〜７９、物理アドレス「２」のブロック領域の２行目のメモリセルには８０〜９５、物理アドレス「３」のブロック領域の２行目のメモリセルにはそれぞれセルアドレス９６〜１１１、物理アドレス「４」のブロック領域の２行目のメモリセルにはそれぞれセルアドレス１１２〜１２７が割り当てられている。同様にして、各行のメモリセル６４個に連続するセルアドレスが割り当てられ、参照画像データバッファ１３４内の３０７２個のメモリセルそれぞれにセルアドレス０〜３０７１が割り当てられている。
【００４０】
参照画像データバッファ１３４は、参照フレームメモリ制御部１３３から参照ブロックを受け取り、受け取った参照ブロックを記憶する。
対象画像データバッファ１３５は、１マクロブロック分の容量を持ち、入力部１３７から対象ブロックを受け取り、受け取った対象ブロックを記憶する。
（３）動き検出制御部１３２
動き検出制御部１３２は、以下に示すように、動きベクトル検出の動作全体を制御する。
【００４１】
以下に説明する動きベクトル検出において、対象ブロックと同じブロック番号の参照ブロックを中央に含む参照フレーム画像上の３行×３列分の参照ブロックを含む領域を参照領域とする。
（１フレームの動きベクトル検出の制御）
以下の説明において、フレーム画像内の１行分のマクロブロックからなる領域をマクロブロックラインと呼ぶ。また、ブロック番号ｎの参照ブロックを参照ブロック「ｎ」、ブロック番号ｎの対象ブロックを対象ブロック「ｎ」と表現する。
【００４２】
動き検出制御部１３２は、以下に示す（ｉ）〜（iii）の手順で、１フレーム画像の動きベクトル検出を制御する。
（ｉ）初期設定
動き検出制御部１３２は、入力部１３７を介して並替処理部１０２から1フレーム画像の始まりを示す制御信号を受け取り、ブロック変数ｎ＝１を設定し、ブロック変数ｎ＝１を用いてＰＡＴフラグを設定する。
【００４３】
動き検出制御部１３２は、動きベクトル検出処理の対象となっている対象ブロックのブロック番号を示すブロック変数ｎを記憶しており、入力部１３７から対象ブロックの受信を示す制御信号を受け取ると、ブロック変数ｎに１を加算する。
特に、入力部１３７から、１フレーム画像の始まりを示す制御信号を受け取ると、ブロック変数ｎを１に設定する。
【００４４】
ＰＡＴフラグについては、後述する。
（ii）マクロブロックラインの繰り返し
対象フレーム内の１マクロブロックラインごとに以下の（Ａ）〜（Ｃ）を繰り返す。
（Ａ）マクロブロックラインの先頭の対象ブロックの動きベクトル検出に必要な参照ブロックを参照画像データバッファ１３４へ書き込む。
【００４５】
（Ｂ）マクロブロックラインを構成する対象ブロックのうち１〜７番目までの各対象ブロックについて、以下の（ａ）と（ｂ）の処理を繰り返す。
（ａ）各対象ブロックについて、以下の（ａ-１）と（ａ-２）の処理を並行して行う。
（ａ−１）各対象ブロックの動きベクトルの検出
（ａ−２）次の対象ブロックに対応する参照ブロックの書込
（ｂ）入力部１３７から次に動きベクトル検出の対象となる対象ブロックの受信を示す制御信号を受け取りブロック変数ｎに１を加算する。次に、加算後のブロック変数ｎを用いてＰＡＴフラグを設定する。
【００４６】
（Ｃ）マクロブロックラインの８番目の対象ブロックの動きベクトル検出を行い、入力部１３７から次に動きベクトル検出の対象となる対象ブロックの受信を示す制御信号を受け取りブロック変数に１を加算する。次に、加算後のブロック変数を用いてＰＡＴフラグを設定する。
（iii）対象ブロック「６４」について、動きベクトル検出処理を行う。次に、１対象フレームの動きベクトル検出処理を終了する。
【００４７】
以下に上記の（ｉ）〜（iii）について、詳細を説明する。
（ｉ）初期設定
動き検出制御部１３２は、入力部１３７から、１フレーム画像の始まりを示す制御信号を受け取り、ブロック変数ｎを１に設定する。
次に、４ビットのＰＡＴフラグを設定する。以下にＰＡＴフラグの詳細な説明をする。
【００４８】
図５に示すように、対象フレーム３１０は、６４個のマクロブロックに分割されており、各対象ブロックが上下左右のフレーム端部に接するか否かで、対象フレーム３２０の示すように９つの領域３２０ａ〜３２０ｉに区分される。領域３２０ａは、上側端部と左側端部の両方に接する対象ブロック「１」を含んでおり、領域３２０ｂは、上側端部に接している対象ブロック「２」〜「７」を含んでおり、領域３２０ｃは、左側端部に接している対象ブロック「９」、「１７」・・・「４９」を含み、領域３２０ｄは、いずれの端部にも接していない対象ブロック「１０」〜「１５」、「１８」〜「２３」・・・「５０」〜「５５」を含み、領域３２０ｅは、下側端部と左側端部の端部に接している対象ブロック「５７」を含み、領域３２０ｆは、下側端部の端部に接している対象ブロック「５８」〜「６３」を含み、領域３２０ｇは、上側端部と右側端部の端部に接している対象ブロック「８」を含み、領域３２０ｈは、右側端部の端部に接している対象ブロック「１６」、「２４」・・・「５６」を含み、領域３２０ｉは右側端部と下側端部の端部に接している対象ブロック「６４」を含む。
【００４９】
ＰＡＴフラグは、第１ビット、第２ビット、第３ビット及び第４ビットから構成され、第１ビットは、対象ブロックが対象フレームの上側端部に接していれば１、接していなければ０の値をとる。第２ビットは、対象ブロックが対象フレームの下側端部に接していれば１、接していなければ０の値をとる。第３ビットは、対象ブロックが対象フレームの左側端部に接していれば１、接していなければ０の値をとる。第１ビットは、対象ブロックが対象フレームの下側端部に接していれば１、接していなければ０の値をとる。
【００５０】
対象フレーム３２０の領域３２０ａに含まれる対象ブロック「１」は、上側端部と左側端部の両方に接しているため第１ビットと第３ビットとが１、第２ビットと第４ビットとが０となり、ＰＡＴフラグは１０１０である。領域３２０ｂに含まれる対象ブロック「２」〜「７」は、上側端部に接しているため、第１ビットが１、第２ビット〜第４ビットが０となり、ＰＡＴフラグは１０００である。領域３２０ｃに含まれる対象ブロック「９」、「１７」、・・・「４９」は、左側端部に接しているため、第３ビットが１、第１ビット、第２ビット及び第４ビットが０となり、ＰＡＴフラグは００１０である。領域３２０ｄを構成する対象ブロック「１０」〜「１５」、「１８」〜「２３」・・・「５０」〜「５５」は、いずれの端部にも接していないため、全てのビットが０となり、ＰＡＴフラグは００００である。領域３２０ｅ内の対象ブロック「５７」は下側端部と左側端部の両方に接しているため、第２ビットと第３ビットとが１、第１ビットと第４ビットとが０となり、ＰＡＴフラグは０１１０である。領域３２０ｆ内の対象ブロック「５８」〜「６３」は下側端部に接しているため、第２ビットが１、第１ビット、第３ビット及び第４ビットが０となり、ＰＡＴフラグは０１００である。領域３２０ｇ内の対象ブロック「８」は上側端部と右側端部の両方に接しているため、第１ビットと第４ビットとが１、第２ビットと第３ビットとが０となり、ＰＡＴフラグは１００１である。領域３２０ｈ内の対象ブロック「１６」、「２４」・・・「５６」は右側端部に接しているため、第３ビットが１、第１ビット、第２ビット及び第４ビットが０となり、ＰＡＴフラグは００１０となる。領域３２０ｉ内の対象ブロック「６４」は下側端部と右側端部の両方に接しているため、第２ビットと第４ビットとが１、第１ビットと第３ビットとが０となり、ＰＡＴフラグは０１０１である。
【００５１】
動き検出制御部１３２は、ブロック変数ｎを用いて、以下のようにしてＰＡＴフラグの各ビットに０又は１を割り当てる。
ｎ≦８であるかどうかを判断し、ｎ≦８であれば第１ビットを１、ｎ≦８でなければ第１ビットを０とする。ｎ≧５７か否かを判断し、ｎ≧５７であれば第２ビットを１、ｎ≧５７でなければ第２ビットを０とする。次に、ｎ／８の余りを算出し、ｎ／８の余りが１であれば第３ビットを１、ｎ／８の余りが１でなければ第３ビットを０とする。ｎ／８の余りが０であるか否かを判断し、ｎ／８の余りが０であれば第４ビットを１、ｎ／８の余りが０でなければ第４ビットを０とする。
【００５２】
動きベクトル検出部１３２は、ブロック変数ｎを更新するたびに、更新したブロック変数ｎに対応するＰＡＴフラグを上記のような算出方法で設定する。
以後の動きベクトル検出処理において、動き検出制御部１３２は、ＰＡＴフラグに従って制御を行う。
（ii）マクロブロックラインごとの繰り返し
対象フレーム内の１マクロブロックラインごとに以下の（Ａ）〜（Ｃ）を繰り返す。
【００５３】
（Ａ）動き検出制御部１３２は、参照フレームメモリ制御部１３３へ、マクロブロックラインの先頭の対象ブロックのブロック変数ｎと設定したＰＡＴフラグを出力し、対象ブロック「ｎ」の動きベクトル検出に必要な参照ブロックの読出しと、読み出した参照ブロックの参照画像データバッファ１３４への出力とを指示する。
次に、参照フレームメモリ制御部１３３により出力された参照ブロックを、参照画像データバッファ１３４内のあらかじめ書込先に設定されているブロック領域に格納する。参照フレームメモリ制御部１３３により出力される参照ブロックについては、後の参照フレームメモリ制御部１３３の説明で詳細に説明する。
【００５４】
また、後続の対象ブロックに対応する参照ブロックの参照画像データバッファ１３４上への書込先となるブロック領域の物理アドレスを算出するためのパラメータｔ（詳細は以下の（ａ−２）で説明する）を、マクロブロックラインの先頭の対象ブロックに対応する参照ブロックの書込先に設定されているブロック領域のうち右上に位置するブロック領域の物理アドレスに設定する。
【００５５】
具体的には、領域３２０ａ内の対象ブロック（ＰＡＴフラグ１０１０）に対応する参照ブロック４個を、参照画像データバッファ１３４内の物理アドレス「６」、「７」、「１０」、「１１」のブロック領域に格納し、パラメータｔを７に設定する。
領域３２０ｃ内の対象ブロック（ＰＡＴフラグ００１０）に対する参照ブロック６個を参照画像データバッファ１３４内の物理アドレス「２」、「３」、「６」、「７」、「１０」、「１１」のブロック領域に格納し、パラメータｔを３に設定する。
【００５６】
領域３２０ｅ内の対象ブロック（ＰＡＴフラグ０１１０）に対する参照ブロック４個を参照画像データバッファ１３４内の物理アドレス「２」、「３」、「６」、「７」のブロック領域に格納し、パラメータｔを３に設定する。
次に、動き検出制御部１３２は動きベクトル検出時に参照ブロックを読み出すためのパラメータｋを初期値ｋ＝０に設定する。パラメータｋについての詳細は以下の（ａ−１）で説明する。
【００５７】
（Ｂ）次に、ブロック番号ｎのＰＡＴフラグに従い、ＰＡＴフラグが１０１０、１０００、００１０、００００、０１００のいずれか（マクロブロックライン１〜７番目の対象ブロック）であれば、以下の（１）と（２）の処理を繰り返し行う。ＰＡＴフラグが１００１または０００１（マクロブロックラインの最後の対象ブロック）であれば、（Ｃ）の処理に移る。ＰＡＴフラグが０１０１（対象ブロック「６４」）であれば、（iii）の処理に移る。
【００５８】
（ａ）各対象ブロックについて以下の（ａ−１）と（ａ−２）の処理を並行して行う。
なお、動き検出制御部１３２と参照画像データバッファ１３４内のメモリ１４１〜１４４は、個別のバス１５１〜１５４で接続されているため、動き検出制御部１３２は、メモリ１４１〜１４４を個別に制御可能であり、検出領域に指定したブロック領域を含むメモリからの読み出しと、検出領域外のブロック領域を含むメモリへの書き込みを同時に行うことができるため、（ａ−１）と（ａ−２）の処理を並行して行うことができる。
【００５９】
（ａ−１）  各対象ブロックの動きベクトル検出
以下の（ア）〜（エ）の手順で各対象ブロックの動きベクトル検出を制御する。
（ア）先ず、動き検出制御部１３２は、参照画像データバッファ１３４内で対象ブロック「ｎ」の動きベクトル検出に必要な参照ブロックが書き込まれているブロック領域を検出領域に指定する。以下に詳細を説明する。
【００６０】
動きベクトル検出において、図６に示すように、動きベクトル演算部１３６が演算に用いる論理アドレス空間２３４は、３行×３列の行列状に並べたに論理ブロック領域により構成され、１行目の３つの論理ブロック領域には、左から順に論理アドレス「１」、「２」、「３」が割り当てられており、２行目の３つの論理ブロック領域には、左から順に論理アドレス「４」、「５」、「６」が割り当てられており、３行目の３つの論理ブロック領域には、左から順に論理アドレス「７」、「８」、「９」が割り当てられている。
【００６１】
論理アドレスと物理アドレスとは異なるため、動き検出制御部１３２は、論理アドレス「ｉ」（ｉ＝１〜９）に対応する物理アドレス「ｍ」（ｍ＝１〜１２）を、ｍ＝ｉ＋Ｉ＋ｋと示される式で算出する。算出された９個の物理アドレス「ｍ」のブロック領域によって構成される部分が対象ブロック「ｎ」の検出領域であり、対象ブロックと同じブロック番号の参照ブロックが論理アドレス空間の中央になるように、検出領域内のブロック領域と論理アドレス空間内の論理ブロック領域が対応付けられている。パラメータＩは論理アドレス「ｉ」により決定されるパラメータであり、ｉ＝１〜３のときＩ＝０、ｉ＝４〜６のときＩ＝１、ｉ＝７〜９のときＩ＝２となる。ただし、ｉ＝１〜３のときｍ＞４ならばｍ＝ｍ−４、ｉ＝４〜６のときｍ＞８ならばｍ＝ｍ−４、ｉ＝７〜９のときｍ＞１２ならばｍ＝ｍ−４とする。
【００６２】
パラメータｋは、０〜３の値をとる変数で、各対象ブロックの動きベクトル検出処理を行うごとに１を加算され、参照画像データバッファ１３４内の検出領域が１列ずつ移動していくことを示すパラメータである。
パラメータｋが変化したときの検出領域の変化を図６を用いて説明する。
ｋ＝０のとき、論理アドレス「ｉ」と物理アドレス「ｍ」はｍ＝ｉ＋Ｉと関係付けられ、図６Ａに示すように、物理アドレス「１」、「２」、「３」、「５」、「６」、「７」、「９」、「１０」、「１１」のブロック領域を含む領域３０が検出領域となる。ｋ＝１のとき、論理アドレス「ｉ」と物理アドレス「ｍ」はｍ＝ｉ＋Ｉ＋１と関係付けられ、図６Ｂに示すように物理アドレス「２」、「３」、「４」、「６」、「７」、「８」、「１０」、「１１」、「１２」のブロック領域を含む領域３１が検出領域となる。ｋ＝２のとき、論理アドレス「ｉ」と物理アドレス「ｍ」はｍ＝ｉ＋Ｉ＋２と関係付けられ、図６Ｃの示すように、物理アドレス「３」、「４」、「７」、「８」、「１１」、「１２」のブロック領域を含む３２ａと物理アドレス「１」、「５」、「９」のブロック領域を含む領域３２ｂとが検出領域となる。ｋ＝３のとき、論理アドレス「ｉ」と物理アドレス「ｍ」はｍ＝ｉ＋Ｉ＋２と関係付けられ、図６Ｄの示すように、物理アドレス「４」、「８」、「１２」のブロック領域を含む領域３３ａと物理アドレス「１」、「２」、「５」、「６」、「９」、「１０」のブロック領域を含む領域３３ｂとが検出領域となる。
【００６３】
（イ）ただし、論理アドレス空間は、対象ブロック「ｎ」と同じブロック番号の参照ブロックを記憶しているブロック領域と対応する論理ブロックを中心に３×３個の論理ブロック領域により構成されるが、領域３２０ａに含まれる対象ブロックの動きベクトル検出に必要な参照ブロックが記憶されているブロック領域と対応する論理ブロック領域は、論理アドレス「５」、「６」、「８」、「９」の論理ブロック領域のみであり、領域３２０ｂに含まれる対象ブロックの動きベクトル検出に必要な参照ブロックが記憶されているブロック領域と対応する論理ブロック領域は、論理アドレス「４」、「５」、「６」、「７」、「８」、「９」の論理ブロック領域のみであり、領域３２０ｃに含まれる対象ブロックの動きベクトル検出に必要な参照ブロックが記憶されているブロック領域と対応する論理ブロック領域は、論理アドレス「２」、「３」、「５」、「６」、「８」、「９」の論理ブロック領域のみであり、領域３２０ｅに含まれる対象ブロックの動きベクトル検出に必要な参照ブロックが記憶されているブロック領域と対応する論理ブロック領域は、論理アドレス「２」、「３」、「５」、「６」の論理ブロック領域のみであり、領域３２０ｆに含まれる対象ブロックの動きベクトル検出に必要な参照ブロックが記憶されているブロック領域と対応する論理ブロック領域は、論理アドレス「１」、「２」、「３」、「４」、「５」、「６」の論理ブロック領域のみであり、領域３２０ｇに含まれる対象ブロックの動きベクトル検出に必要な参照ブロックが記憶されているブロック領域と対応する論理ブロック領域は、論理アドレス「４」、「５」、「７」、「８」の論理ブロック領域のみであり、領域３２０ｈに含まれる対象ブロックの動きベクトル検出に必要な参照ブロックが記憶されているブロック領域と対応する論理ブロック領域は、論理アドレス「１」、「２」、「４」、「５」、「７」、「８」の論理ブロック領域のみであり、領域３２０ｉに含まれる対象ブロックの動きベクトル検出に必要な参照ブロックが記憶されているブロック領域と対応する論理ブロック領域は、論理アドレス「１」、「２」、「４」、「５」の論理ブロック領域のみである。従って、上記の論理アドレス以外の論理ブロック領域を動きベクトル検出に用いないために動き検出制御部１３２は、検出領域内に算出範囲を指定する。具体的には、後述するブロックマッチング法において、対象ブロックの変位（ｘ，ｙ）に、以下のような算出範囲を指定する。
【００６４】
領域３２０ａ内の対象ブロック（ＰＡＴフラグが１０１０）のとき、動き検出制御部１３２は、０≦ｘ≦１６、０≦ｙ≦１６を算出範囲に指定する。領域３２０ｂ内の対象ブロック（ＰＡＴフラグが１０００）のとき、−１６≦ｘ≦１６、０≦ｙ≦１６を算出範囲に指定する。領域３２０ｃ内の対象ブロック（ＰＡＴフラグが００１０）のとき、０≦ｘ≦１６、−１６≦ｙ≦１６を算出範囲に指定する。領域３２０ｄ内の対象ブロック（ＰＡＴフラグが００００）のとき、−１６≦ｘ≦１６、−１６≦ｙ≦１６を算出範囲に指定する。領域３２０ｅ内の対象ブロック（ＰＡＴフラグが０１１０）のとき、０≦ｘ≦１６、−１６≦ｙ≦０を算出範囲に指定する。領域３２０ｆ内の対象ブロック（ＰＡＴフラグが０１００）のとき、−１６≦ｘ≦１６、−１６≦ｙ≦０に制御する。領域３２０ｇ内の対象ブロック（ＰＡＴフラグが１００１）のとき、−１６≦ｘ≦０、０≦ｙ≦１６を算出範囲に指定する。領域３２０ｈ内の対象ブロック（ＰＡＴフラグが０００１）のとき、−１６≦ｘ≦０、−１６≦ｙ≦１６を算出範囲に指定する。領域３２０ｉ内の対象ブロック（ＰＡＴフラグが０１０１）のとき、−１６≦ｘ≦０、−１６≦ｙ≦０を算出範囲に指定する。
【００６５】
（ウ）次に、動き検出制御部１３２は、動きベクトル演算部１３６に対し、上記のように指定した算出領域と動きベクトル検出の指示を出力する。
次に、動きベクトル演算部１３６から動きベクトル検出終了の制御信号を受け取るまで、以下の（ウ−１）〜（ウ−４）を繰り返し、動きベクトル演算部から動きベクトル検出終了の制御信号を受け取ると、出力部１３８に、検出された動きベクトルの予測画像生成部１２３と可変長符号化部１０７とへの出力を指示する。
【００６６】
（ウ−１）先ず、動きベクトル演算部１３６から対象ブロック上の画素位置（ｐ，ｊ）と、論理アドレス空間上の座標（ｘ’，ｙ’）を受け取る。（画素位置（ｐ，ｊ）、座標（ｘ’，ｙ’）については後で詳細に説明する。）
（ウ−２）対象画像データバッファ１３５から、受け取った画素位置（ｐ，ｊ）に対応する画素データを読み出し、読み出した画素データを動きベクトル演算部１３６へ出力する。
【００６７】
（ウ−３）次に、動き検出制御部１３２は、以下のような計算を行って、受け取った論理アドレス空間上の座標（ｘ’，ｙ’）を、セルアドレスに変換する。
先ず、パラメータｋの値を判断し、ｋ＝０のとき、Ｘ＝ｘ’＋１６、Ｙ＝ｙ’＋１６を算出する。ｋ＝１のとき、Ｘ＝ｘ’＋３２、Ｙ＝ｙ’＋１６を算出し、ｋ＝２のとき、Ｘ＝ｘ’＋４８（ｘ’≦１５）、Ｘ＝ｘ’−１６（ｘ’≧１６）、Ｙ＝ｙ’＋１６を算出し、ｋ＝３のとき、Ｘ＝ｘ’＋６４（ｘ’≦−１）、Ｘ＝ｘ’（ｘ’≧０）、Ｙ＝ｙ’＋１６を算出する。
【００６８】
ここで、Ｘは、参照画像データバッファ１３４を構成する４８行×６４列のメモリセルの各列と１対１に対応しており、算出しようとしているセルアドレスのメモリセルの存在する列を示している。Ｙは、参照画像データバッファ１３４を構成する４８行×６４列のメモリセルの各行と１対１に対応しており、求めるセルアドレスのメモリセルの存在する行を示している。（０≦Ｘ≦６３、０≦Ｙ≦４７）
次に、セルアドレス＝Ｘ＋６４Ｙを算出する。
【００６９】
（ウ−４）次に、算出したセルアドレスのメモリセルに記憶されている画素データを読み出し、読み出した画素データを動きベクトル演算部１３６へ出力する。
（エ）次に、動き検出制御部１３２は、パラメータｋに１を加算する。次に、パラメータｋ＝４であるか否かを判断し、ｋ＝４であればｋ＝０とし、ｋ＝４でなければ、そのまま次の処理へ移行する。
【００７０】
（ａ−２）  対象ブロック「ｎ＋１」に対応する参照ブロックの書込
以下の手順で次に動きベクトル検出の対象となる対象ブロック「ｎ＋１」の、動きベクトル検出のために必要な参照ブロックを参照画像データバッファ１３４へ書き込む。
先ず、動き検出制御部１３２はブロック変数ｎに１を加算したｎ’＝ｎ＋１を計算する。次に、ブロック変数ｎ’のＰＡＴフラグを上記（ｉ）で説明した方法で設定する。
【００７１】
次にブロック変数ｎ’の値と設定したブロック変数ｎ’のＰＡＴフラグとを参照フレームメモリ制御部１３３へ出力し、参照ブロックの読み出しと、読み出した参照ブロックの参照画像データバッファへ１３４への出力を制御する。
次に、動き検出制御部１３２は、ブロック変数ｎ’のＰＡＴフラグに従って、参照画像データバッファ１３４内における、参照ブロックの書込先をパラメータｔを用いて選定する。
【００７２】
パラメータｔは、領域３２０ａと３２０ｂ内の対象ブロックに対しては４〜７の値を取り、領域３２０ｃ〜３２０ｆ内の対象ブロックに対しては０〜３の値をとり、１個の対象ブロックに対応する参照ブロックを参照画像データバッファ１３４へ書き込むたびに１を加算され、参照画像データバッファ１３４内への参照ブロックの書き込み位置が１列ずつ移動していくことを示すパラメータである。
【００７３】
ブロック変数ｎ’のＰＡＴフラグが１０００の場合、パラメータｔ＝８か否かを判定し、ｔ＝８であればｔ＝４に設定し、ｔ＝８でなければそのまま次の処理に移る。次に、物理アドレス「ｔ＋１」と「ｔ＋５」のブロック領域とを書込先に指定し、パラメータｔに１を加算する。
ブロック変数ｎ’のＰＡＴフラグが００００又は０１００の場合、パラメータｔ＝４か否かを判定し、ｔ＝４であればｔ＝０とし、ｔ＝４でなければそのまま次の処理に移る。次に、物理アドレス「ｔ＋１」、「ｔ＋５」及び「ｔ＋９」のブロック領域を書込先に指定し、パラメータｔに１を加算する。
【００７４】
ｔに１を加算した後、動き検出制御部１３２は、参照フレームメモリ制御部１３３により出力された参照ブロックを、書込先に指定したブロック領域に書き込む。
（ｂ）次に、入力部１３７から対象ブロックの受信を示す制御信号を受け取りブロック変数に１を加算する。次に、加算後のブロック変数を用いてＰＡＴフラグを設定する。
（Ｃ）上記の（ａ−１）と同様の手順でマクロブロックラインの８番目の対象ブロックの動きベクトル検出を行う。次に、入力部１３７から対象ブロックの受信を示す制御信号を受け取りブロック変数に１を加算し、加算後のブロック変数を用いてＰＡＴフラグを設定する。
【００７５】
（iii）対象ブロック「６４」について、上記（ａ−１）と同様の手順で動きベクトルを検出し、１フレームの動きベクトル検出処理を終了する。
（４）参照フレームメモリ制御部１３３
参照フレームメモリ制御部１３３は、動き検出制御部１３２からブロック変数ｎとブロック変数ｎから算出されたＰＡＴフラグとを受け取り、参照ブロックの読出と出力の指示を受ける。
【００７６】
参照フレームメモリ制御部１３３は、受け取ったＰＡＴフラグに応じて、以下のような演算を行い、参照画像データバッファ１３４内に記憶される参照ブロックに重複のないように、新たに参照フレームメモリ１３１から参照画像データバッファ１３４へ転送する参照ブロックを選定する。
領域３２０ａ内の対象ブロック（ＰＡＴフラグが１０１０）のとき、ブロック番号ｎ、ｎ+１、ｎ+８、ｎ+９の参照ブロックを選定する。
【００７７】
領域３２０ｂ内の対象ブロック（ＰＡＴフラグが１０００）のとき、ブロック番号ｎ+１、ｎ+９、の参照ブロックを選定する。
領域３２０ｃ内の対象ブロック（ＰＡＴフラグが００１０）のときブロック番号ｎ−８、ｎ−７、ｎ、ｎ+１、ｎ+８、ｎ+９の参照ブロックを選定する。
領域３２０ｄ内の対象ブロック（ＰＡＴフラグが００００）のとき、ブロック番号ｎ−７、ｎ+１、ｎ+９の参照ブロックを選定する。
【００７８】
領域３２０ｅ内の対象ブロック（ＰＡＴフラグが０１１０）のとき、ブロック番号ｎ−８、ｎ−７、ｎ+９の参照ブロックを選定する。
領域３２０ｆ内の対象ブロック（ＰＡＴフラグが０１００）のとき、ブロック番号ｎ−７、ｎ+１の参照ブロックを選定する。  
領域３２０ｇ〜３２０ｉ内の対象ブロック（ＰＡＴフラグが１００１、０００１、０１０１のいずれか）であれば、参照ブロックの選定をせずに次の処理に移る。
【００７９】
次に、選定した参照ブロックを参照フレームメモリ１３１から読み出し、読み出した参照ブロックを参照画像データバッファ１３４へ出力する。
（５）動きベクトル演算部１３６
動きベクトルを算出するにあたって、論理アドレス空間上の論理アドレス「５」の論理ブロック領域の左上の画素の位置のを原点（０，０）として、行方向右をｘ’軸正の方向、列方向下をｙ’軸正の方向として座標軸を設定し、各画素を座標で示すことができるように定義する。このとき、論理アドレス空間上の各画素は、−１６≦ｘ’≦３１、−１６≦ｙ’≦３１の範囲内に存在する。
【００８０】
上記のように定義した論理アドレス空間内で、対象ブロックの位置を平行移動させ、その変位を（ｘ，ｙ）と表現し、対象ブロックと論理アドレス「５」の論理ブロック領域が一致しているとき変位（０，０）と定義する。対象ブロックは、−１６≦ｘ≦１６、−１６≦ｙ≦１６の範囲内を変位する。
また、対象ブロック内の１６行×１６列の画素に行方向に左から順に０〜１５の座標値ｐと、列方向に上から順に０〜１５の座標値ｊを定義し、各画素の画素位置を（ｐ，ｊ）と表現する。また、画素位置（ｐ，ｊ）の画素データをoriginal（ｐ，ｊ）と表現する。
【００８１】
論理アドレス空間上で対象ブロックの変位が（ｘ，ｙ）のとき、対象ブロック上の画素位置（ｐ，ｊ）と、一致している論理アドレス空間上の画素の座標は（ｐ+ｘ，ｊ+ｙ）と表現できる。また、論理アドレス空間上の座標（ｐ＋ｘ，ｊ＋ｙ）に対応している参照ブロック上の画素データをprevious（ｐ＋ｘ，ｊ＋ｙ）と表現する。
動きベクトル演算部１３６は、動き検出制御部１３２から算出範囲と動きベクトル検出の指示とを受け取る。動きベクトル演算部１３６は、（ｉ）（ii）の手順で動きベクトルを検出する。以下に（ｉ）（ii）を説明する。
【００８２】
（ｉ）動きベクトル検出
動き検出制御部１３２により指定された検出範囲内の全ての変位（ｘ，ｙ）について以下の（ａ）（ｂ）の手順で、動きベクトルを検出する。
（ａ）誤差値Ｓ（ｘ，ｙ）の算出
全てのｐ、ｊ（０≦ｐ≦１５、０≦ｊ≦１５）について以下の（ａ−１）〜（ａ−３）を繰り返し、変位（ｘ，ｙ）に対する誤差値Ｓ（ｘ，ｙ）を算出する。ここで、誤差値の一例として数１を用いて、平均絶対誤差を算出する。
【００８３】
（ａ−１）動きベクトル演算部１３６は、対象ブロック上の画素位置（ｐ，ｊ）と対象ブロック上の画素位置（ｐ，ｊ）に一致する論理アドレス空間上の座標（ｐ＋ｘ，ｊ＋ｙ）とを動き検出制御部１３２へ出力する。（説明の便宜上  ｘ’＝ｐ＋ｘ、ｙ’＝ｊ＋ｙとする。）
（ａ−２）次に、動き検出制御部１３２から、画素位置（ｐ，ｊ）に対応する対象ブロック「ｎ」上の画素データoriginal（ｐ，ｊ）と座標（ｘ’，ｙ’）に対応する参照ブロック上の画素データ previous（ｘ’，ｙ’）とを受け取る。
【００８４】
（ａ−３）受け取った画素データを数１へ代入する。
【００８５】
【数１】
2005210647.tif 000003
（ｂ）各変位（ｘ，ｙ）について算出した誤差値Ｓ（ｘ，ｙ）を比較し、値の最小となる変位（ｘ，ｙ）を判断する。
（ii）動きベクトルの出力
次に動きベクトル演算部１３６は、（ｉ）において誤差値Ｓ（ｘ，ｙ）が最小と判断された変位（ｘ，ｙ）を対象ブロック「ｎ」の動きベクトルとして出力部１３８へ出力し、動き検出制御部１３２へ、検出終了を示す制御信号を送る。
【００８６】
上記のようにして、動きベクトルを算出する方法を一般にブロックマッチング法と呼ぶ。
（６）出力部１３８  
出力部１３８は、動きベクトル演算部１３６により算出された動きベクトルを受け取り、動き検出制御部１３２の指示により、受け取った動きベクトルを予測画像生成部１２３と可変長符号化部１０７とへ出力する。
【００８７】
1．４  動き検出部１３０の動作
（１）１フレームの動きベクトル検出処理
１フレームの動きベクトル検出処理について、図７〜８に示すフローチャートを用いて説明する。
入力部１３７は、並替処理部から、対象ブロック「１」と、１フレーム画像の始まりを示す制御信号を受け取り、受け取った対象ブロック「１」を対象画像データバッファ１３５へ書き込み、動き検出制御部１３２へ１フレーム画像の始まりを示す制御信号を転送する。動き検出制御部１３２は、ブロック変数をｎ＝１に設定し、ブロック変数から算出したＰＡＴフラグ１０１０を設定する（ステップＳ３０１）。
【００８８】
ステップＳ３０２からステップＳ３３８において、対象フレーム内の全てのマクロブロックの動きベクトル検出が終了するまで、マクロブロックラインごとにステップＳ３０３からステップＳ３３７の処理を繰り返す。
動き検出制御部１３２は、設定したＰＡＴフラグとブロック変数ｎとを参照フレームメモリ制御部１３３に出力し、参照ブロックの出力を指示する（ステップＳ３０３）。
【００８９】
参照フレームメモリ制御部１３３は、動き検出制御部１３２から受け取ったＰＡＴフラグとブロック変数ｎとから読出の必要な参照ブロックを選定する（ステップＳ３０４）。次に、選定した参照ブロックを参照フレームメモリ１３１から読み出し、読み出した参照ブロックを参照画像データバッファ１３４へ出力する（ステップＳ３０５）。
次に、動き検出制御部１３２は、設定したＰＡＴフラグを識別する（ステップＳ３０６）。
【００９０】
識別したＰＡＴフラグが１０１０であれば（ステップＳ３０６）、参照画像データバッファ１３４内における、ステップＳ３０５で出力された参照ブロックの書込先を物理アドレス「６」、「７」、「１０」、「１１」のブロック領域に指定し、指定されたブロック領域に参照ブロックを書き込む（ステップＳ３０７）。
次に、ステップＳ３０７で指定した書込先のブロック領域のうち右上に位置するブロック領域の物理アドレス７を、パラメータｔの値に設定する（ステップＳ３０８）。
【００９１】
識別したＰＡＴフラグが００１０であれば（ステップＳ３０６）、参照画像データバッファ１３４内における、ステップＳ３０５で出力された参照ブロックの書込先を物理アドレス「２」、「３」、「６」、「７」、「１０」、「１１」のブロック領域に指定し、指定されたブロック領域に参照ブロックを書き込む（ステップＳ３１０）。
次に、ステップＳ３１０で指定した書込先のうち右上に位置するブロック領域の物理アドレス３を、パラメータｔの値に設定する（ステップＳ３１１）。
【００９２】
識別したＰＡＴフラグが０１１０であれば（ステップＳ３０６）、参照画像データバッファ１３４における、ステップＳ３０５で出力された参照ブロックの書込先を物理アドレス「２」、「３」、「６」、「７」のブロック領域に指定し、指定されたブロック領域に参照ブロックを書き込む（ステップＳ３１２）。
次に、ステップＳ３１２で指定した書込先のうちの右上に位置するブロック領域の物理アドレス３を、パラメータｔの値に設定する（ステップＳ３１３）。
【００９３】
次に、パラメータｋをｋ＝０に設定する（ステップＳ３１５）。
次に、動き検出制御部１３２はＰＡＴフラグを判定し（ステップＳ３２１）、判定したＰＡＴフラグが１０１０、１０００、００１０、００００、０１１０、０１００のいずれかであれば（ステップＳ３２１）、動き検出制御部１３２は、参照画像データバッファ１３４内の検出領域から参照ブロックを読み出し、対象画像データバッファ１３５から対象ブロック「ｎ」を読み出し、読み出した参照ブロックと対象ブロック「ｎ」とを動きベクトル演算部１３６へ出力し、動きベクトル演算部１３６は動きベクトルを算出する（ステップＳ３２２）。
【００９４】
ステップＳ３２２と並行して、ステップＳ３２４からステップＳ３２９の処理を行う。
動き検出制御部１３２は、ブロック番号ｎに１を加算したｎ’を算出しブロック変数ｎ’からＰＡＴフラグを設定する（ステップＳ３２４）。
次に、動き検出制御部１３２は、算出したブロック変数ｎ’とブロック変数ｎ’のＰＡＴフラグとを参照フレームメモリ制御部１３３に出力し、対象ブロック「ｎ’」に対応する参照ブロックの読出と出力とを制御する（ステップＳ３２５）。
【００９５】
参照フレームメモリ制御部１３３は、受け取ったＰＡＴフラグとブロック変数ｎ’から読み出す参照ブロックを選定し（ステップＳ３２６）、選定した参照ブロックを参照フレームメモリ１３１から読み出し、読み出した参照ブロックを参照画像データバッファ１３４へ出力する（ステップＳ３２７）。
次に、動き検出制御部１３２は、ブロック変数ｎ’のＰＡＴフラグとパラメータｋから参照画像データバッファ１３４内の書込先となるブロック領域を選定し（ステップＳ３２８）、選定したブロック領域にステップＳ３２７で出力された参照ブロックを書き込む（ステップＳ３２９）。
【００９６】
入力部１３７は、並替処理部１０２から、対象ブロック「ｎ＋１」を受け取り、受け取った対象ブロック「ｎ＋１」を対象画像データバッファ１３５へ書き込み、動き検出制御部１３２へ対象ブロックの受信を示す制御信号を送る。動き検出制御部１３２は、ブロック変数ｎに１を加算し、ブロック変数ｎを用いてＰＡＴフラグを設定する（ステップＳ３３０）。
【００９７】
判定したＰＡＴフラグが１００１又は０００１であれば（ステップＳ３２１）、動き検出制御部１３２は、参照画像データバッファ１３４内の検出領域から参照ブロックを読み出し、対象画像データバッファ１３５から対象ブロック「ｎ」を読み出し、読み出した参照ブロックと対象ブロック「ｎ」とを動きベクトル演算部１３６へ出力し、動きベクトル演算部１３６は参照ブロックと対象ブロック「ｎ」とを受け取り、受け取った参照ブロックと対象ブロック「ｎ」とから動きベクトルを算出する（ステップＳ３３５）。
【００９８】
次に、入力部１３７は、並替処理部１０２から、対象ブロックを受け取り、受け取った対象ブロックを対象画像データバッファ１３５へ書き込み、動き検出制御部１３２へ対象ブロックの受信を示す制御信号を送る。動き検出制御部１３２は、ブロック変数をｎに１を加算し、ブロック変数を用いてＰＡＴフラグを設定する（ステップＳ３３６）。
判定したＰＡＴフラグが０１０１であれば（ステップＳ３２１）、参照画像データバッファ１３４内の検出領域から参照ブロックを読み出し、対象画像データバッファ１３５から対象ブロック「ｎ」を読み出し、読み出した参照ブロックと対象ブロック「ｎ」とを動きベクトル演算部１３６へ出力し、動きベクトル演算部１３６は参照ブロックと対象ブロック「ｎ」とを受け取り、受け取った参照ブロックと対象ブロック「ｎ」とから動きベクトルを算出し（ステップＳ３３７）、１フレームの動きベクトル検出を終了する。
【００９９】
（２）参照フレームメモリ制御部１３３による参照ブロックの選定
参照フレームメモリ１３１から参照画像データバッファ１３４へ転送する参照ブロックの選定手順を図９のフローチャートを用いて説明する。なお、以下に説明する内容は図７のステップＳ３０４、図８のステップＳ３２６の詳細である。
参照フレームメモリ制御部１３３は、動き検出制御部１３２からブロック変数ｎとＰＡＴフラグを受け取ると、受け取ったＰＡＴフラグに従って以下の処理を行う（ステップＳ２５０）。
【０１００】
ＰＡＴフラグが１０１０であれば（ステップＳ２５０）、ブロック番号ｎ、ｎ+１、ｎ+８、ｎ+９の参照ブロックを選定する（ステップＳ２５１）。
ＰＡＴフラグが１０００であれば（ステップＳ２５０）、ブロック番号ｎ+１、ｎ+９、の参照ブロックを選定する（ステップＳ２５２）。
ＰＡＴフラグが００１０であれば（ステップＳ２５０）、ブロック番号ｎ-８、ｎ-７、ｎ、ｎ＋１、ｎ＋８、ｎ＋９の参照ブロックを選定する（ステップＳ２５３）。
【０１０１】
ＰＡＴフラグが００００であれば（ステップＳ２５０）、ブロック番号ｎ-７、ｎ＋１、ｎ＋９の参照ブロックを選定する（ステップＳ２５４）。
ＰＡＴフラグが０１１０であれば、ブロック番号ｎ-８、ｎ-７、ｎ、ｎ＋１の参照ブロックを選定する（ステップＳ２５５）。
ＰＡＴフラグが０１００であれば（ステップＳ２５０）、ブロック番号ｎ-７、ｎ＋１の参照ブロックを選定する（ステップＳ２５６）。
【０１０２】
ＰＡＴフラグが、１００１、０００１、０１０１のいずれかであれば、参照ブロックの選定は行わず次の処理に移行する。
（３）各対象ブロックの動きベクトル検出
各対象ブロックの動きベクトル算出の手順を図１０に示すフローチャートを用いて説明する。なお、以下に説明する内容は、図８のステップＳ３２２、ステップＳ３３５及びステップＳ３３７の詳細である。
【０１０３】
パラメータＩとパラメータｋを用いて、論理アドレス「ｉ」（ｉ＝１〜９）に対応する物理アドレス「ｍ」を、式ｍ＝ｉ＋Ｉ＋ｋから求める（ステップＳ３４1）。パラメータＩは論理アドレス「ｉ」によって変化し、ｉ＝１〜３のときＩ＝０、ｉ＝４〜６のときＩ＝１、ｉ＝７〜９のときＩ＝２の値をとる。パラメータｋは初期値０で０〜３のいずれかの値を取る変数である。ただし、ｉ＝１〜３のときｍ＞４ならばｍ＝ｍ−４、ｉ＝４〜６のときｍ＞８ならばｍ＝ｍ−４、ｉ＝７〜９のときｍ＞１２ならばｍ＝ｍ−４とする。この式によって求められる９個の物理アドレスの示す領域によって構成される部分が検出領域である。
【０１０４】
次に、動き検出制御部１３２は、動きベクトル演算部１３６へ、ＰＡＴフラグ対応して設定されている算出範囲と動きベクトルの検出の指示を出力する。（ステップＳ３４２）。
動きベクトル演算部１３６は、動き検出制御部１３２の指示を受け、受け取った算出範囲内で動きベクトルを検出する（ステップＳ３４３）。
【０１０５】
動きベクトルの検出が終わると、動き検出制御部１３２は、検出した動きベクトルを出力部１３８を介して予測画像生成部１２３と可変長符号化部１０７へ出力する（ステップＳ３４４）。
次に、動き検出制御部１３２はパラメータｋに１を加算する（ステップＳ３４５）。このとき、ｋ＝４であるか否かを判定し（ステップＳ３４６）、ｋ＝４であればｋ＝０とする（ステップＳ３４７）。ｋ＝４でなければ（ステップＳ３４６）、そのまま、各対象ブロックの動きベクトル検出の処理を終了する。
【０１０６】
（４）参照ブロックの書込先の選定
動き検出制御部１３２が、参照画像データバッファ１３４内において、参照フレームメモリ制御部１３３により出力された参照ブロックの書込先となるブロック領域を選定する手順を、図１１のフローチャートを用いて説明する。なお、以下の説明は図８のフローチャートのステップＳ３２８の詳細である。
【０１０７】
動き検出制御部１３２は、ブロック変数ｎ’から算出し設定したＰＡＴフラグにより以下の処理を行う（ステップＳ３５１）。
ＰＡＴフラグが１０００の場合（ステップＳ３５１）、パラメータｔ＝８であるか否かを判断し（ステップＳ３５２）、ｔ＝８ならばｔ＝４とし（ステップＳ３５３）、ｔ＝８でなければ、そのままステップＳ３５４へ処理を移す。
【０１０８】
次に、参照画像データバッファ１３４内の物理アドレス「ｔ＋１」と「ｔ＋５」のブロック領域を、参照ブロックの書込先に指定し（ステップＳ３５４）、ステップＳ３６３へ制御を移す。
ＰＡＴフラグが００００又は０１００の場合（ステップＳ３５１）、先ずパラメータｔがｔ＝４であるか否かを判断し（ステップＳ３６０）、ｔ＝４であればｔ＝０とし（ステップＳ３６１）、ｔ＝４でなければ、そのままステップＳ３６２へ処理を移す。
【０１０９】
次に、参照画像データバッファ１３４内の物理アドレス「ｔ＋１」、「ｔ＋５」及び「ｔ＋９」のブロック領域を、参照ブロックの書込先に指定する（ステップＳ３６２）。
次に、パラメータｔに１を加算し（ステップＳ３６３）、ステップS３２９の処理へ移行する。
（４）動き検出制御部１３２による検出領域の移行手順
参照画像データバッファ１３４内の、検出領域と参照ブロックの書込先は上記のような算出方法で設定され、１個の対象ブロックの処理ごとに順次移動していく。図１２は、対象フレーム上の１行目のマクロブロックライン上の対象ブロックの動きベクトル検出の進行に伴う、検出領域と参照ブロックの書込先の移行を示しており、図中の数字は各ブロック領域に記憶されている参照ブロックのブロック番号である。以下、図１２を用いて、参照画像データバッファ１３４における、参照ブロック書込領域と動きベクトルの検出領域の移行手順を説明する。
【０１１０】
まず、参照フレームメモリ制御部１３３がブロック変数ｎ＝１とＰＡＴフラグ１０１０に従って対象ブロック「１」の動きベクトル検出に必要な参照ブロックを出力し、出力された参照ブロック「１」、「２」、「９」、「１０」は、図１２（ａ）に示すようにそれぞれ物理アドレス「６」、「７」、「１０」、「１１」のブロック領域に書き込まれている。
【０１１１】
次に、図１２（ｂ）の示すように、参照ブロック「１」を記憶しているブロック領域を中心に３行×３列分のブロック領域からなる領域１３が検出領域として、動き検出制御部１３２によって設定され、動きベクトル演算部１３６によって動きベクトルが算出される。同時に、対象ブロック「２」の動きベクトル検出に必要な参照ブロックのうち、参照画像データバッファ１３４内に記憶されていない参照ブロック「３」、「１１」が、図１２（ｂ）の示すように物理アドレス「８」、「１２」のブロック領域にそれぞれ書き込まれる。
【０１１２】
次に、対象ブロック「１」の動きベクトル検出が終了すると図１２（ｃ）に示すように参照ブロック「２」を記憶しているブロック領域を中心に３行×３列分のブロック領域を含む領域１５が検出領域として動き検出制御部１３２によって設定される。これと同時に、対象ブロック「３」の動きベクトル検出に必要な参照ブロックのうち、参照画像データバッファ１３４内に記憶されていない参照ブロック「４」、「１２」が物理アドレス「５」、「９」のブロック領域にそれぞれ書き込まれる。
【０１１３】
次に、対象ブロック「２」の動きベクトル検出が終了すると図１２（ｄ）に示すように、参照ブロック「３」を記憶しているブロック領域を含む３行×２列分のブロック領域を含む領域１７ａと、３行×１列分のブロック領域を含む領域１７ｂとが検出領域として動き検出制御部１３２によって設定され、動きベクトル演算部により動きベクトルが検出される。このとき、検出領域は１７ａと１７ｂに分離しているが、上述したように論理アドレス空間上に再配置されるため問題はない。同時に、対象ブロック「４」の動きベクトル検出に必要な参照ブロックのうち、参照画像データバッファ１３４内に記憶されていない参照ブロック「５」、「１３」が図１２（ｄ）に示すように、物理アドレス「６」、「１０」のブロック領域にそれぞれ書き込まれる。
【０１１４】
次に、対象ブロック「３」の動きベクトル検出が終了すると図１２（ｅ）に示すように、３行×１列分のブロック領域を含む領域１９ａと、参照ブロック「４」を記憶しているブロック領域を含む３行×２列分のブロック領域から構成される領域１９ｂが検出領域として動き検出制御部１３２によって設定され、動きベクトル演算部により動きベクトルが算出される。同時に、対象ブロック「５」の動き検出に必要な参照ブロックのうち、参照画像データバッファ１３４内に記憶されていない参照ブロック「６」、「１４」が図１２（ｅ）に示すように物理アドレス「７」、「１１」のブロック領域に書き込まれる。
【０１１５】
次に、対象ブロック「４」の動きベクトル検出が終了すると図１２（ｆ）の示すように参照ブロック「５」を記憶しているブロック領域を中心に３行×３列分のブロック領域を含む領域２１が検出領域として動き検出制御部１３２によって設定され、動きベクトルが算出される。同時に、対象ブロック「６」の動き検出に必要参照ブロックのうち、参照画像データバッファ１３４内に記憶されていない参照ブロック「７」、「１５」が、図１２（ｆ）に示すように物理アドレス「８」、「１２」のブロック領域に書き込まれる。
【０１１６】
以上のように検出領域を１列ずつずらし、検出領域外のブロック領域に、新たに参照ブロックを書き込む動作が繰り返し行われる。
１．５  効果・まとめ
以上、本発明によると、参照画像データバッファ１３４は、動き検出制御部１３２により個別に制御できる４つのメモリ１４１〜１４４から構成される。
【０１１７】
動き検出制御部１３２は、参照画像データバッファ１３４内に検出領域を指定し、検出領域に記憶されている参照ブロックを１画素データずつ読み出し、動きベクトル演算部１３６へ出力する。同時に検出領域に指定されていない領域に、次の対象ブロックの動きベクトル検出に必要な参照ブロックを書き込む。このとき、参照画像データバッファ１３４内の参照ブロックに重複が無いように、参照フレームメモリ制御部１３３が、参照ブロックを選択する。
【０１１８】
図１３は、対象フレームの上の各対象ブロックの動きベクトル検出に際して、参照フレームメモリ１３１から参照画像データバッファ１３４へ新たに転送する参照ブロックの数を表している。参照フレームメモリ１３１から参照画像データバッファ１３４へ転送される参照ブロックの延べ数は、従来技術の場合、１対象フレームあたり４８４個であり、本発明の場合、１対象フレームあたり、１７６個である。このようにして、参照画像データバッファ１３４の容量を小さくした状態で、参照ブロックの重複転送を減少させ、転送するデータ総量を大幅に削減することができる。
２．第２の実施の形態
本発明に係る１個の実施の形態としての動画撮影装置１００について説明する。
【０１１９】
２．１  動画撮影装置１００の構成
動画撮影装置１００は、撮像部１０１、並替処理部１０２、スイッチ１０３、ＤＣＴ処理部１０５、量子化処理部１０６、可変長符号化部１０７、バッファメモリ１０８、レート制御部１０９、メインメモリ１１０、予測画像生成部１２３、加算処理部１２４、逆ＤＣＴ処理部１２５、逆量子化処理部１２６、スイッチ１２７、動き検出部１３０ｂ、参照フレームメモリ１３１から構成される。撮像部１０１、並替処理部１０２、スイッチ１０３、ＤＣＴ処理部１０５、量子化処理部１０６、可変長符号化部１０７、バッファメモリ１０８、レート制御部１０９、メインメモリ１１０、復号部１１１、表示部１１２、予測画像生成部１２３、加算処理部１２４、逆ＤＣＴ処理部１２５、逆量子化処理部１２６、スイッチ１２７、参照フレームメモリ１３１の構成と動作は実施の形態１と同じであるので、説明を省略する。 
【０１２０】
２．２  動き検出部１３０ｂ
動き検出部１３０ｂは、図１４に示すように、動き検出制御部１３２ｂ、参照フレームメモリ制御部１３３、参照画像データバッファ１３４ｂ、対象画像データバッファ１３５、動きベクトル演算部１３６、入力部１３７、出力部１３８から構成される。参照フレームメモリ制御部１３３、動きベクトル演算部１３６、入力部１３７、出力部１３８の構成と動作は、実施の形態１と同じであり、対象画像データバッファ１３５の構成は、実施の形態１と同じであるので説明を省略する。
【０１２１】
（１）参照画像データバッファ１３４ｂ
参照画像データバッファ１３４ｂは、図１４に示すように１６画素×４８ライン分の容量を持つ５つのメモリ１６１〜１６５を備え、それぞれのメモリ１６１〜１６５が個別のバス１６６〜１７０で動きベクトル演算部及び参照フレームメモリ制御部１３３と接続されている。また、メモリ１６１〜１６５は、動き検出制御部１３２ｂとも、それぞれ個別のバス１７１〜１７５で接続されている。
【０１２２】
また、参照画像データバッファ１３４ｂは、図１５に示すように、３行×５列の行列状に配列された１５個のブロック領域８１〜９５により構成され、１個のブロック領域は、１個のマクロブロック分の容量を備えている。メモリ１６１は１列目のブロック領域８１、８６、９１から構成され、メモリ１６２は２列目のブロック領域８２、８７、９２から構成され、メモリ１６３は３列目のブロック領域８３、８８、９３から構成され、メモリ１６４は４列目のブロック領域８４、８９、９４から構成され、メモリ１６５は５列目のブロック領域８５、９０、９５から構成される。
【０１２３】
また、１行目のブロック領域８１〜８５には、それぞれ物理アドレス「１」、「２」、「３」、「４」、「５」が割り当てられ、２行目のブロック領域８６〜９０には、それぞれ物理アドレス「６」、「７」、「８」、「９」、「１０」が割り当てられ、３行目のブロック領域９１〜９５には、それぞれ物理アドレス「１１」、「１２」、「１３」、「１４」、「１５」が割り当てられており、物理アドレスにより各ブロック領域の位置が示される。
【０１２４】
また、各ブロック領域は１６行×１６列の行列上に配置されたメモリセルから構成される。各メモリセルには、セルアドレスが設定されている。具体的には、ブロックアドレス「１」のブロック領域８１の１行目の１６個のメモリセルにはそれぞれセルアドレス０〜１５、ブロックアドレス「２」のブロック領域８２の１行目のメモリセルにはそれぞれセルアドレス１６〜３１、ブロックアドレス「３」のブロック領域８３の１行目のメモリセルにはそれぞれセルアドレス３２〜４７、ブロックアドレス「４」のブロック領域８４の１行目のメモリセルにはそれぞれセルアドレス４８〜６３、ブロックアドレス「５」のブロック領域８５の１行目のメモリセルにはそれぞれセルアドレス６４〜７９が割り当てられている。また、ブロックアドレス「１」のブロック領域８１の２行目のメモリセルにはそれぞれセルアドレス８０〜９５、ブロックアドレス「２」のブロック領域８２の２行目のメモリセルにはそれぞれセルアドレス９６〜１１１、ブロックアドレス「３」のブロック領域８３の２行目のメモリセルにはそれぞれセルアドレス１１２〜１２７、ブロックアドレス「４」のブロック領域８４の２行目のメモリセルにはそれぞれセルアドレス１２８〜１４３、ブロックアドレス「５」のブロック領域８５の１行目のメモリセルにはそれぞれセルアドレス１４４〜１５９が割り当てられている。同様にして、１行を構成する８０個のメモリセルに連続するセルアドレスが割り当てられ、参照画像データバッファ１３４ｂを構成する３８４０個のメモリセルに、それぞれ０〜３８３９のセルアドレスが割り当てられている。
【０１２５】
参照画像データバッファ１３４ｂは、参照フレームメモリ制御部１３３から参照ブロックを受け取り、受け取った参照ブロックを記憶する。
（２）動き検出制御部１３２ｂ
（１フレームの動きベクトル検出処理）
動き検出制御部１３２ｂは、以下に示す（ｉ）、（ii）の手順で１フレーム画像の動きベクトル検出を制御する。
【０１２６】
なお、以下に説明する動きベクトル検出において、対象ブロックと同じブロック番号の参照ブロックを中央に含む参照フレーム画像上の３行×３列分の参照ブロックを含む領域を参照領域とする。
（ｉ）初期設定
動き検出制御部１３２ｂは、入力部１３７から、１フレーム画像の始まりを示す制御信号を受け取ると、ブロック変数ｎ＝１とＰＡＴフラグを設定し、対象ブロック「１」の動きベクトル検出に必要な参照ブロックの参照画像データバッファ１３４ｂへの書き込みを制御する。
【０１２７】
動き検出制御部１３２ｂは、動きベクトル検出処理の対象となっている対象ブロックのブロック番号を示すブロック変数ｎを記憶しており、入力部１３７から対象ブロックの受信を示す制御信号を受け取ると、ブロック変数ｎに１を加算する。特に、入力部１３７から、１フレーム画像の始まりを示す制御信号を受け取ると、ブロック変数ｎを１に設定する。
【０１２８】
ＰＡＴフラグは、実施の形態１と同様の方法で設定するので、説明を省略する。
（ii）各対象ブロックの処理の繰り返し
対象ブロック「１」〜「６４」まで、以下の（ａ）と（ｂ）の処理を並行して繰り返す
（ａ）各対象ブロックの動きベクトル検出
（ｂ）次の対象ブロックに対応する参照ブロックの書込
以下に、上記の（ｉ）、（ii）の詳細を説明する。
【０１２９】
（ｉ）初期設定
動き検出制御部１３２ｂは、入力部１３７から、１フレーム画像の始まりを示す制御信号を受け取ると、ブロック変数ｎ＝１を設定し、設定したブロック番号ｎ＝１を用いてＰＡＴフラグ１０１０を設定する。
次に、動き検出制御部１３２ｂは設定したＰＡＴフラグ１０１０とブロック番号ｎ＝１を参照フレームメモリ制御部１３３に出力し、参照ブロックの読出と出力を指示する。
【０１３０】
ＰＡＴフラグに従って、あらかじめ書込先に設定されている参照画像データバッファ１３４内の物理アドレス、「７」、「８」、「１２」、「１３」のブロック領域に、参照フレームメモリ制御部１３３により出力された４個の参照ブロックを格納する。
次に、後続の対象ブロックに対応する参照画像データバッファ１３４ｂ内の書込先となるブロック領域の物理アドレスを算出するためのパラメータｔを８に設定する。パラメータｔは５〜９の値をとる変数で、１個の対象ブロックに対応する参照ブロックを参照画像データバッファ１３４へ書き込むたびに１または２加算され、参照画像データバッファ１３４内への参照ブロックの書込み位置が１列又は２列ずつ移動していくことを示すパラメータである。
【０１３１】
また、動き検出制御部１３２ｂは動きベクトル検出時に参照ブロックを読み出すためのパラメータｋを初期値ｋ＝０に設定する。パラメータｋは、動きベクトル検出処理を行うごとに１又は２加算され、参照画像データバッファ１３４内の検出領域が１列又は２列ずつ移動していくことを示すパラメータである。
（ii）各対象ブロックの処理の繰り返し
対象ブロック「１」〜「６４」まで、以下の（ａ）と（ｂ）の処理を並行して繰り返す。動き検出制御部１３２ｂと参照画像データバッファ１３４ｂ内のメモリ１６１〜１６５は、個別のバス１７１〜１７５で接続されており、動き検出制御部１３２ｂは、メモリ１６１〜１６５を個別に制御可能であり、検出領域に指定したブロック領域からの読み出しと、検出領域外のブロック領域への書き込みを同時に行うことができる。
【０１３２】
（ａ）各対象ブロックの動きベクトル検出
動き検出制御部１３２ｂは、以下の（ア）〜（ウ）手順で、対象ブロック「ｎ」の動きベクトル検出を制御する。
（ア）動きベクトル検出において、図１６に示すように、動きベクトル演算部１３６が、演算に用いる論理アドレス空間２３４ｂは、３行×３列の行列状に並べた論理ブロック領域により構成され、１行目の３つの論理ブロック領域には、左から順に論理アドレス「１」、「２」、「３」が割り当てられており、２行目の３つの論理ブロック領域には、左から順に論理アドレス「４」、「５」、「６」が割り当てられており、３行目の３つの論理ブロック領域には、左から順に論理アドレス「７」、「８」、「９」が割り当てられている。
【０１３３】
論理アドレスと参照画像データバッファ１３４ｂの物理アドレスとに違いがあるため、動き検出制御部１３２ｂは、論理アドレス「ｉ」（ｉ＝１〜９）に対応する物理アドレス「ｍ」（ｍ＝１〜１５）を、ｍ＝ｉ＋Ｉ＋ｋと示される式で算出する。算出された９個の物理アドレス「ｍ」の領域によって構成される部分が対象ブロック「ｎ」の検出領域であり、対象ブロックと同じブロック番号の参照ブロックが中央になるように検出領域内のブロック領域と論理アドレス空間内の論理ブロック領域が対応付けられている。パラメータＩは論理アドレス「ｉ」より決定されるパラメータであり、ｉ＝１〜３のときＩ＝Ｉ＝０、ｉ＝４〜６のときＩ＝２、ｉ＝７〜９のときＩ＝４となる。ただし、ｉ＝１〜３のときｍ＞５ならばｍ＝ｍ−５、ｉ＝４〜６のときｍ＞１０ならばｍ＝ｍ−５、ｉ＝７〜９のときｍ＞１５ならばｍ＝ｍ−５とする。
【０１３４】
パラメータｋは、上述したように、検出領域が１列又は２列ずつ移動していくことを示すパラメータである。以下にパラメータｋの値が変化したときの検出領域の変化を図１６を用いて説明する。
ｋ＝０のとき、論理アドレス「ｉ」と物理アドレス「ｍ」はｍ＝ｉ＋Ｉと関係付けられ、図１６Ａに示すように物理アドレス「１」、「２」、「３」、「６」、「７」、「８」、「１１」、「１２」、「１３」のブロック領域からなる領域７０が検出領域となる。
【０１３５】
ｋ＝１のとき、論理アドレス「ｉ」と物理アドレス「ｍ」はｍ＝ｉ＋Ｉ＋１と関係付けられ、図１６Ｂに示すように物理アドレス「２」、「３」、「４」、「７」、「８」、「９」、「１２」、「１３」、「１４」のブロック領域からなる領域７１が検出領域となる。ｋ＝２のとき、論理アドレス「ｉ」と物理アドレス「ｍ」はｍ＝ｉ＋Ｉ＋２と関係付けられ、図１６Ｃに示すように物理アドレス「３」、「４」、「５」、「８」、「９」、「１０」、「１３」、「１４」、「１５」のブロック領域からなる領域７２が検出領域となる。ｋ＝３のとき、論理アドレス「ｉ」と物理アドレス「ｍ」はｍ＝ｉ＋Ｉ＋３と関係付けられ、図１６Ｄに示すように物理アドレス「４」、「５」、「９」、「１０」、「１４」、「１５」のブロック領域からなる領域７３ａと、物理アドレス「１」、「６」、「１１」のブロック領域からなる領域７３ｂとが検出領域となる。ｋ＝４のとき、論理アドレス「ｉ」と物理アドレス「ｍ」はｍ＝ｉ＋Ｉ＋４と関係付けられ、図１６Ｅに示すように物理アドレス「５」、「１０」、「１５」のブロック領域からなる領域７４ａと、物理アドレス「１」、「２」、「６」、「７」、「１１」、「１２」、のブロック領域からなる領域７４ｂとが検出領域となる。
【０１３６】
（イ）次に、動き検出制御部１３２ｂは、動きベクトル演算部１３６へ算出範囲と動きベクトル検出の指示を出力する。算出範囲の詳細は実施の形態１と同様であるので、説明を省略する。
次に、動きベクトル演算部１３６から動きベクトル検出終了の制御信号を受け取るまで、以下の（イ−１）〜（イ−４）を繰り返し、動きベクトル演算部から動きベクトル検出終了の制御信号を受け取ると、出力部１３８に、検出された動きベクトルの予測画像生成部１２３と可変長符号化部１０７とへの出力を指示する。
【０１３７】
（イ−１）  動き検出制御部１３２ｂは、動きベクトル演算部１３６から、対象ブロックの画素位置（ｐ，ｊ）と論理アドレス空間上の座標（ｘ’，ｙ’）とを受け取る。対象ブロックの画素位置（ｐ，ｊ）と論理アドレス空間上の座標（ｘ’，ｙ’）については、実施の形態１と同様であるので、説明を省略する。
（イ−２）次に、対象画像データバッファ１３５から、受け取った画素位置（ｐ，ｊ）に対応する画素データを読み出し、読み出した画素データを動きベクトル演算部１３６へ出力する。
【０１３８】
（イ−３）次に、動き検出制御部１３２ｂは、受け取った論理アドレス空間上の座標（ｘ’，ｙ’）をセルアドレスに変換する。
具体的には、先ず、パラメータｋの値を判断し、ｋ＝０のとき、Ｘ＝ｘ’＋１６、Ｙ＝ｙ’＋１６を算出する。ｋ＝１のとき、Ｘ＝ｘ’＋３２、Ｙ＝ｙ’＋１６を算出し、ｋ＝２のとき、Ｘ＝ｘ’＋４８、Ｙ＝ｙ’＋１６を算出し、ｋ＝３のとき、Ｘ＝ｘ’＋６４（ｘ’≦１５）、Ｘ＝ｘ’−１６（ｘ’≧１６）、Ｙ＝ｙ’＋１６を算出し、ｋ＝４のとき、Ｘ＝ｘ’＋８０（ｘ’≦−１）、Ｘ＝ｘ’（ｘ’≧０）、Ｙ＝ｙ’＋１６を算出する。
【０１３９】
ここで、Ｘは、参照画像データバッファ１３４を構成する４８行×８０列のメモリセルの各列と１対１に対応しており、算出しようとしているセルアドレスのメモリセルの存在する列を示している。Ｙは、参照画像データバッファ１３４を構成する４８行×８０列のメモリセルの各行と１対１に対応しており、求めるセルアドレスのメモリセルの存在する行を示している。（０≦Ｘ≦７９、０≦Ｙ≦４７）
次に、セルアドレス＝Ｘ＋８０×Ｙを算出する。
【０１４０】
（イ−４）
次に、動き検出制御部１３２ｂは、算出したセルアドレスに記憶されている画素データを読み出し、読み出した画素データを動きベクトル演算部１３６へ出力する。
（ウ）次に、動き検出制御部１３２ｂは、ＰＡＴフラグを判定する。
ＰＡＴフラグが１００１又は０００１（つまりマクロブロックラインの最後の対象ブロック）と判断すると、パラメータｋに２を加算する。ＰＡＴフラグが、１０１０、１０００、００１０、００００、０１１０、０１００のいずれかであれば、パラメータｋに１を加算する。
【０１４１】
上記の加算処理の後、動き検出制御部１３２ｂは、パラメータｋ≧５であるか否かを判断し、ｋ≧５であればｋから５減算し、ｋ≧５でなければそのまま次の処理に移行する。
ＰＡＴフラグが０１０１（対象ブロック「６４」）と判断すると、上記の加算は行わず、１個の対象フレームの動きベクトル検出を終了する。
（ｂ）次の対象ブロックに対応する参照ブロックの書込
動き検出制御部１３２ｂは、以下の手順で次に動きベクトル検出の対象となる対象ブロックに対応する参照ブロックを参照画像データバッファ１３４ｂに書き込む。
【０１４２】
動き検出制御部１３２ｂは、フラグが０１０1（対象ブロック「６４」）であるか否かを判定し、０１０１であれば、（ａ）の処理が終了するとともに、１フレームの動きベクトル検出処理を終了する。
ＰＡＴフラグが０１０１でなければ、ブロック番号ｎに１を加算したブロック変数ｎ’＝ｎ＋１を計算し、次に、ブロック変数ｎ’を用いてＰＡＴフラグを設定する。
【０１４３】
次にブロック変数ｎ’の値と設定したブロックＰＡＴフラグとを参照フレームメモリ制御部１３３へ出力し、参照ブロックの読み出しと、読み出した参照ブロックの参照画像データバッファ１３４ｂへの出力を制御する。
次に、動き検出制御部１３２ｂは、以下の手順で、参照画像データバッファ１３４ｂへ出力された参照ブロックの書込先を選定する。
【０１４４】
まず、パラメータｔ≧１０か否かを判定し、ｔ≧１０であればｔから５を減じ、ｔ≧１０でなければ前述の減算を省略し、次の処理に移る。
次に、動き検出制御部１３２ｂは、ブロック変数ｎ’のＰＡＴフラグに従い、以下のように、参照画像データバッファ１３４ｂ内の参照ブロックの書込先を選定する。
ブロック変数ｎ’のＰＡＴフラグが１０００の場合、書込先を物理アドレス「ｔ＋１」と「ｔ＋６」のブロック領域に指定する。次にパラメータｔに１を加算する。
【０１４５】
ブロック変数ｎ’のＰＡＴフラグが００１０の場合、書込先を物理アドレス「ｔ−４」、「ｔ−３」、「ｔ＋１」、「ｔ＋２」、「ｔ＋６」及び「ｔ＋７」のブロック領域に指定する。ここで、ｔ＋７≧１６であるか否かを判断し、ｔ＋７≧１６であれば、物理アドレス「ｔ＋７」のブロック領域に代わって物理アドレス「ｔ−８」のブロック領域を書込先に指定する。ｔ＋７≧１６でなければそのまま次の処理に移る。次に、パラメータｔに２を加算する。
【０１４６】
ブロック変数ｎ’のＰＡＴフラグが００００の場合、書込先を「ｔ−４」、「ｔ＋１」及び「ｔ＋６」のブロック領域に指定する。次にパラメータｔに１を加算する。
ブロック変数ｎ’のＰＡＴフラグが０１１０の場合、書込先を物理アドレス「ｔ−４」、「ｔ−３」、「ｔ＋１」及び「ｔ＋２」のブロック領域に指定する。ここで、ｔ＋２≧１１であるか否かを判断し、ｔ＋２≧１１であれば、物理アドレス「ｔ＋２」のブロック領域に代わって、物理アドレス「ｔ−８」のブロック領域を書込先に指定する。ｔ＋２≧１１でなければそのまま次の処理に移る。次に、パラメータｔに２を加算する。
【０１４７】
ブロック変数ｎ’のＰＡＴフラグが０１００の場合、書込先を物理アドレス「ｔ−４」、「ｔ＋１」のブロック領域に指定する。次にパラメータｔに１を加算する。
ブロック変数ｎ’のＰＡＴフラグが１００１又は０００１の場合、書込先を指定せず、パラメータｔに１を加算する。
以上のようにして、ｎ’のＰＡＴフラグに応じて、書込先を指定した後、動き検出制御部１３２ｂは、書込先に指定したブロック領域に参照フレームメモリ制御部１３３により出力された参照ブロックを書き込む。
【０１４８】
次に、動き検出制御部１３２ｂは、入力部１３７から対象ブロック受信の制御信号を受け取ると、ブロック変数ｎに１を加算し、加算後のブロック変数ｎからＰＡＴフラグを設定する。
２．３  動き検出部１３０ｂの動作
（１）１フレーム画像の動きベクトル検出処理
１フレーム画像の動きベクトル検出処理について、図１７〜１８に示すフローチャートを用いて説明する。
【０１４９】
入力部１３７は、並替処理部１０２から対象ブロック「１」と１フレーム画像の始まりを示す制御信号を受け取ると、受け取った対象ブロック「１」を対象画像データバッファ１３５へ書き込み、受け取った１フレームの始まりを示す制御信号を動き検出制御部１３２ｂに出力する。動き検出制御部１３２ｂは、１フレーム画像の始まりを示す制御信号を受け取るとブロック変数ｎをｎ＝１に設定し、ブロック変数から算出したＰＡＴフラグ１０１０を設定する（ステップＳ４０１）。
【０１５０】
次に、設定したＰＡＴフラグ１０１０とブロック番号ｎ＝１とを参照フレームメモリ制御部１３３へ出力し、参照ブロックの読出と読み出した参照ブロックの参照画像データバッファ１３４ｂへの出力とを制御する（ステップＳ４０２）。
参照フレームメモリ制御部１３３は、動き検出制御部１３２ｂから受け取ったＰＡＴフラグとブロック番号ｎ＝１とから必要な参照ブロックのブロック番号を選定する（ステップＳ４０３）。  次に、選定した参照ブロックを読み出し、読み出した参照ブロックを参照画像データバッファ１３４ｂへ出力する（ステップＳ４０４）。参照フレームメモリ制御部１３３による参照ブロックの選定手順は実施の形態１と同様であるので説明を省略する。
【０１５１】
次に、ステップＳ４０４で出力された参照ブロックを参照画像データバッファ１３４ｂ内の物理アドレス「７」、「８」、「１２」、「１３」のブロック領域に書き込む（ステップＳ４０５）。
次に、パラメータｔ＝８を設定し、パラメータｋ＝０を設定する（ステップＳ４０６）。
【０１５２】
次に、ステップＳ４０７からステップＳ４２８において、１対象フレームを構成するブロック番号１〜６４の全ての対象ブロックの処理が終了するまで、ステップＳ４１０からステップＳ４２７の処理を繰り返す。
動き検出制御部１３２ｂは、動きベクトル演算部１３６へ動きベクトル検出を指示し、動きベクトル演算部１３６は動きベクトルを算出する（ステップＳ４１０）。
【０１５３】
ステップＳ４１０と並行して、ステップＳ４２０からステップＳ４２７の処理を行う。まず、ブロック変数ｎのＰＡＴフラグが０１０１であるか否かを判断し（ステップＳ４２０）、０１０１であると判断すると、ステップＳ４１０の処理の終了とともに各対象ブロックの動きベクトル検出の繰り返しを終了する（ステップＳ４２８）。
動き検出制御部１３２ｂは、ＰＡＴフラグが０１０１でないと判断すると（ステップＳ４２０）、ブロック変数ｎ’＝ｎ＋１を算出しブロック変数ｎ’のＰＡＴフラグを設定する（ステップＳ４２１）。
【０１５４】
次に、動き検出制御部１３２ｂは、ブロック変数ｎ’と設定したｎ’のＰＡＴフラグとを参照フレームメモリ制御部１３３へ出力する（ステップＳ４２２）。
参照フレームメモリ制御部１３３は受け取ったＰＡＴフラグとブロック変数ｎ’とから、必要な参照ブロックを選定し（ステップＳ４２３）、選定した参照ブロックを参照画像データバッファ１３４ｂへ出力する（ステップＳ４２４）。
【０１５５】
次に、動き検出制御部１３２ｂは、ステップＳ４２４で出力された参照ブロックを書き込むための、参照画像データバッファ１３４ｂ内の書込先を選定する（ステップＳ４２５）。
動き検出制御部１３２ｂは、ステップＳ４２４で出力された参照ブロックを、ステップＳ４２５で書込先に選定したブロック領域に格納する（ステップＳ４２６）。
【０１５６】
次に、入力部１３７は並替処理部１０２から対象ブロック「ｎ＋１」を受け取り、受け取った対象ブロック「ｎ＋１」を対象画像データバッファ１３５に書き込み、対象ブロック受信の制御信号を動き検出制御部１３２ｂへ出力する。動き検出制御部１３２ｂは、対象ブロック受信の制御信号を受け取ると、ブロック変数ｎに１を加算し、加算後のブロック変数ｎを用いてＰＡＴフラグを設定する（ステップＳ４２７）。
【０１５７】
なお、図１８のステップＳ４０３、図１９のステップＳ４２３の参照ブロックの選定は、実施の形態１と同様であるので説明を省略する。
（２）１個の対象ブロックの動きベクトル検出
対象ブロック１個の動きベクトル算出の手順を図１９に示すフローチャートを用いて説明する。なお、以下の説明は、図１８のステップＳ４１０の詳細である。
【０１５８】
動き検出制御部１３２ｂは、パラメータＩとパラメータｋを用いて、論理アドレス「ｉ」に対応する物理アドレス「ｍ」を、式ｍ＝ｉ＋Ｉ＋ｋから求める（ステップＳ４４０）。Ｉは論理アドレス「ｉ」によって変化するパラメータで、ｉ＝１〜３のときＩ＝０、ｉ＝４〜６のときＩ＝２、ｉ＝７〜９のときＩ＝４となる。ｋは１フレーム内の動きベクトル検出処理の進行にしたがって変わるパラメータでｋ＝０〜４の値をとる。ただし、ｉ＝１〜３のときｍ＞５ならばｍ＝ｍ−５とする。ｉ＝４〜６のときｍ＞１０ならばｍ＝ｍ−５とする。ｉ＝７〜９のときｍ＞１５ならばｍ＝ｍ−１５とする。この式によって求められる９個の物理アドレスの示す領域によって構成される部分が検出領域である。
【０１５９】
次に、動き検出制御部１３２ｂは、動きベクトル演算部１３６に、算出範囲と動きベクトル検出の指示を出力する。（ステップＳ４４１）。
動きベクトル演算部１３６は、動き検出制御部１３２ｂの指示を受け取り、算出範囲内で動きベクトルを算出する（ステップＳ４４２）。
動きベクトルの算出が終わると、動き検出制御部１３２ｂは、出力部１３８を介して算出した動きベクトルを予測画像生成部１２３と可変長符号化部１０７へ出力する（ステップＳ４４３）。
【０１６０】
次に、動き検出制御部１３２ｂは、ブロック変数ｎのＰＡＴフラグを判断し（ステップＳ４４５）、ＰＡＴフラグが１００１又は０００１であれば、パラメータｋに２を加算する（ステップＳ４４６）。ＰＡＴフラグが１０１０、１０００、００１０、００００、０１１０、０１００のいずれかであれば、パラメータｋに１を加算する（ステップＳ４４７）。このとき、ｋ≧５であるか否かを判定し（ステップＳ４５０）、ｋ≧５であればｋから５減算する（ステップＳ４５１）。ｋ≧５でなければ（ステップＳ４５０）、そのまま、１個の対象ブロックの動きベクトル検出の処理を終了し、ステップＳ４２８へ処理を移す。
【０１６１】
判定したフラグが０１０１であれば（ステップＳ４４５）、そのままステップＳ４２８へ処理を移す。
（３）参照ブロックの書込先選定
参照ブロックを参照画像データバッファ１３４ｂに書き込む際の書込先となるブロック領域の選定の動作を図２０に示すフローチャートを用いて説明する。なお、以下の説明は、図１８のステップＳ４２５の詳細である。
【０１６２】
動き検出制御部１３２ｂは、ブロック変数ｎ’のＰＡＴフラグとパラメータｔとから書込先選定する。
先ず、パラメータｔの値がｔ≧１０であるか否かを判断し（ステップＳ４６０）、ｔ≧１０の場合は、パラメータｔから５減算しｔ＝ｔ−５とし（ステップＳ４６１）、ｔ≧１０でないと判断すると、そのままステップＳ４６２へ処理を移す。
【０１６３】
次に、ブロック変数ｎ’のＰＡＴフラグを判別し（ステップＳ４６２）、ＰＡＴフラグに応じて、書込先を選定する。
ブロック変数ｎ’のＰＡＴフラグが、１０００であると判別すると（ステップＳ４６２）、書込先を物理アドレス「ｔ＋１」と「ｔ＋６」のブロック領域に指定し（ステップＳ４６３）、パラメータｔに１を加算し、（ステップＳ４６４）書込先選定の処理を終了し、ステップＳ４２６へ処理を移す。
【０１６４】
ブロック変数ｎ’のＰＡＴフラグが、００１０であると判別すると（ステップＳ４６２）、書込先を物理アドレス「ｔ−４」、「ｔ−３」、「ｔ＋１」、「ｔ＋２」、「ｔ＋６」、「ｔ＋７」のブロック領域に指定する（ステップＳ４６５）。次に、ｔ＋７≧１６であるか否かを判断し（ステップＳ４６６）、ｔ＋７≧１６であれば、物理アドレス「ｔ＋７」のブロック領域に代わって物理アドレス「ｔ−８」のブロック領域を書込先に指定する（ステップＳ４６７）。ｔ＋７≧１６でなければ、そのままステップＳ４６８へ処理を移す。次に、パラメータｔに２を加算し（ステップＳ４６８）、書込先選定の処理を終了し、ステップＳ４２６へ処理を移す。
【０１６５】
ブロック変数ｎ’のＰＡＴフラグが、００００であると判別すると（ステップＳ４６２）、書込先を物理アドレス「ｔ−４」、「ｔ＋１」、「ｔ＋６」のブロック領域に指定し（ステップＳ４７０）、パラメータｔに１を加算し（ステップＳ４７１）、書込先選定の処理を終了し、ステップＳ４２６へ処理を移す。
ブロック変数ｎ’のＰＡＴフラグが、０１１０であると判別すると（ステップＳ４６２）、書込先を物理アドレス「ｔ−４」、「ｔ−３」、「ｔ＋１」、「ｔ＋２」のブロック領域に指定する（ステップＳ４７５）。次に、ｔ＋２≧１１であるか否かを判断し（ステップＳ４７６）、ｔ＋２≧１１であれば、物理アドレス「ｔ＋２」に代わって物理アドレス「ｔ−８」のブロック領域を書込先に指定する（ステップＳ４７７）。ｔ＋２≧１１でなければ、そのままステップＳ４７８へ処理を移す。次に、パラメータｔに２を加算し（ステップＳ４７８）、書込先選定の処理を終了し、ステップＳ４２６へ処理を移す。  
【０１６６】
ブロック変数ｎ’のＰＡＴフラグが、０１００であると判別すると（ステップＳ４６２）、書込先を物理アドレス「ｔ−４」、「ｔ＋１」のブロック領域に指定し（ステップＳ４８０）、次に、パラメータｔに１を加算し（ステップＳ４８１）、書込先選定の処理を終了し、ステップＳ４２６へ処理を移す。
ブロック変数ｎ’のＰＡＴフラグが、１００１又は０００１であると判別すると（ステップＳ４６２）、書込先の指定は行わず、ステップＳ４８１へ処理を移す。
【０１６７】
（４）  動き検出制御部１３２ｂによる検出領域の移行手順
参照画像データバッファ１３４ｂ内の検出領域と、参照ブロックの書込先となるブロック領域は、上記のような算出方法で設定され、１対象フレーム内の対象ブロックの処理が進行するにつれて、順次移動していく。図２１は、１対象フレーム内の対象ブロックの動きベクトル検出の進行に伴う、検出領域と参照ブロックの書込先の移行を示しており、図中に書き込まれている数字は、各ブロック領域に記憶されている参照ブロックのブロック番号である。以下、図２１を用いて、参照画像データバッファ１３４ｂにおける、検出領域と参照ブロックの書込先となるブロック領域の移行手順を説明する。
【０１６８】
対象ブロック「１」〜「６」までの動きベクトル検出は実施の形態１と同様に、検出領域と書込先となるブロック領域が１列ずつ移動していくので説明を省略し、対象ブロック「７」の動きベクトル検出の場面から説明する。
図２１（ａ）に示すように、参照ブロック「６」を記憶しているブロック領域を中心に３行×３列分のブロック領域からなる領域４０が検出領域に指定され、対象ブロック「６」の動きベクトル検出が行われる。同時に、対象ブロック「７」の動きベクトル検出に必要の参照ブロックのうち参照画像データバッファ１３４ｂ内に記憶されていない参照ブロック「８」と「１６」が物理アドレス「９」と「１４」のブロック領域にそれぞれ書き込まれる。
【０１６９】
対象ブロック「６」の動きベクトル検出が終了すると、図２１（ｂ）に示すように参照ブロック「７」を記憶しているブロック領域中心に３行×３列分のブロック領域からなる領域４２が検出領域に指定され、対象ブロック「７」の動きベクトル検出が行われる。このとき、対象ブロック「８」の動きベクトル検出に必要な参照ブロックは既に書き込まれているため、参照フレームメモリ１３１からの参照画像データバッファ１３４ｂへの転送は発生しない。
【０１７０】
次に、対象ブロック「７」の動きベクトル検出が終了すると図２１（ｃ）に示すように参照ブロック「８」を記憶しているブロック領域を中心に３行×３列分のブロック領域からなる領域４３が検出領域として設定され、対象ブロック「８」の動きベクトル検出が行われる。同時に、対象ブロック「９」の動きベクトル検出に必要となる参照ブロック「１」、「２」、「９」、「１０」、「１７」、「１８」が物理アドレス「１」、「２」、「６」、「７」、「１１」、「１２」のブロック領域にそれぞれ書き込まれる。
【０１７１】
次に、対象ブロック「８」の動きベクトル検出が終了すると図２１（ｄ）に示すように３行×１列分のブロック領域からなる領域４５ａと、参照ブロック「９」を記憶しているブロック領域を含む３行×２列分のブロック領域からなる４５ｂとが検出領域として設定され、動きベクトル検出が行われる。同時に、対象ブロック「１０」の動きベクトル検出に必要な参照ブロックのうち参照画像データバッファ１３４ｂ内に記憶されていない参照ブロック「３」、「１１」、「１９」が、物理アドレス「３」、「８」、「１３」のブロック領域にそれぞれ書き込まれる。
【０１７２】
以下、同様にして、１フレームを構成する６４個の対象ブロックの動きベクトル検出が終了するまで、検出領域と書込先となるブロック領域を１列通信又は２列ずつずらしながら設定することを繰り返す。
２．５  第２の実施の形態による効果
本発明によると、参照画像データバッファ１３４ｂは、動き検出制御部１３２ｂにより個別に制御できる５つのメモリ１６１〜１６５から構成される。
【０１７３】
動き検出制御部１３２ｂは、参照画像データバッファ１３４ｂ内に検出領域を指定し、検出領域に記憶している参照ブロックを読み出し、読み出した参照ブロックを動きベクトル演算部１３６へ出力する。同時に検出領域に指定されていない領域に、次の動きベクトル検出に必要な参照ブロックを書き込む。このとき、参照画像データバッファ１３４内の参照ブロックに重複が無いように、参照フレームメモリ制御部１３３が、参照ブロックを選択する。
【０１７４】
この、構成により、実施の形態１と同様に１対象フレームにつき、参照フレームメモリ１３１から参照画像データバッファ１３４ｂへ転送する参照ブロックの延べ数は１７６個であり、転送データ量を大幅に削減することができる。
さらに、実施の形態２の構成によると、第１の実施の形態よりも１フレーム画像の動きベクトル検出を高速化することができる。
【０１７５】
各対象ブロックの動きベクトル検出のために新たに参照フレームメモリ１３１から参照画像データバッファ１３４ｂへ転送する参照ブロックの数は、図１３に示すように、マクロブロックラインの先頭の対象ブロックでは４個又は６個であるが、実施の形態１において、参照画像データバッファ１３４は３行×４列分のブロック領域を備えており、検出領域に指定されていないブロック領域は３マクロブロック分しかない。よって、マクロブロックラインの最後の対象ブロックの動きベクトル検出中に、次のマクロブロックラインの先頭の対象ブロックに対応する参照ブロックを参照画像データバッファ１３４へ書き込むことはできない。このため、実施の形態１では、マクロブロックラインの最後の対象ブロックの動きベクトル検出が終了するまで待ってから、次のマクロブロックラインの先頭の対象ブロックに対応する参照ブロックを参照画像データバッファへ書き込むことになり、ここで時間の無駄が生じる。
【０１７６】
実施の形態２の場合は、参照画像データバッファ１３４ｂは３行×５列分のブロック領域を備えているため、検出領域に指定されていないブロック領域が常に６マクロブロック分存在する。ゆえに、マクロブロックラインの最後の対象ブロックの動きベクトル検出中に、次のマクロブロックラインの先頭の対象ブロックに対応する参照ブロックを参照画像データバッファ１３４へ書き込むことができるため、実施の形態１で生じるような待ち時間は発生せず、対象フレームを構成する６４個の対象ブロックすべてにおいて、動きベクトル検出と次の対象ブロックに対応する参照ブロックの書込とを並行して処理することができる。
【０１７７】
よって、１フレーム画像の動きベクトル検出をより高速化することができる。
３．その他の実施の形態
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。  
（１）上記第１、第２の実施の形態において、参照フレームメモリ１３１への書込と参照フレームメモリ１３１からの読出について、以下のようにしてもよい。
【０１７８】
（Ａ）  参照フレームメモリ１３１
参照フレームメモリ１３１は、一例として、図２２に示すように、６４行×２５６列の行列状に配置された１６９６０個のメモリセルから構成され、各メモリセルは列方向に１〜６４のｒｏｗアドレスと、行方向に１〜２５６のｃｏｌｕｍｎアドレスによってその位置が特定される。各メモリセルは、８バイトの記憶容量を備える。以下の説明において、簡略化のためにｒｏｗアドレスｒ（ｒ＝1〜６４）をｒｏｗ「ｒ」、ｃｏｌｕｍｎアドレスｃ（ｃ＝１〜２５６）をｃｏｌｕｍｎ「ｃ」と表現する。所要
参照ブロック「１」を構成する１６行×１６列の画素データのうち、１行目の１６個の画素データは、ｒｏｗ「1」、ｃｏｌｕｍｎ「１」〜「１６」で特定される１６個のメモリセルにそれぞれ格納されており、２行目の１６個の画素データは、ｒｏｗ「１」、ｃｏｌｕｍｎ「１７」〜「３２」で特定される１６個のメモリセルにそれぞれ格納されており、同様にして、３列目〜１６列目までの画素データは、ｒｏｗ「１」、ｃｏｌｕｍｎ「３３」〜「２５６」で特定されるメモリセルにそれぞれ格納されている。
【０１７９】
参照ブロック「１」と同様に、参照ブロック「２」を構成する画素データは、ｒｏｗ「２」、ｃｏｌｕｍｎ「１」〜「２５６」で特定される２５６個のメモリセルに記憶されている。
同様にして参照フレーム内の参照ブロック「３」〜「６４」が、それぞれｒｏｗ「３」〜「６４」で特定される、２５６個のメモリセルからなる１行分のメモリセルに記憶されている。
【０１８０】
（Ｂ）加算処理部１２４
加算処理部１２４は、以下に示すようにして、参照ブロックを構成する１６行×１６画素の画素データを、１行目から１６行目の順に参照フレームメモリ１３１へ出力する。
図２３に示すように、加算処理部１２４は、クロック信号２３１に同期して、命令２４１、アドレス２５１及びデータ２６１を出力している。
【０１８１】
命令２４１ａは動作の開始を示す命令ＡＣＴＩＶＥの出力を示している。命令２４１ｂは、参照フレームメモリ１３１に出力される読出又は書込の命令を示しており、読出のときＲＥＡＤ、書込のときにＷＲＩＴＥを出力することを表現している。
（ｉ）ページモードによる書込
以下に示すように、ｒｏｗを固定し、ｃｏｌｕｍｎのみを出力し直すことで、同一行のメモリセルにアクセスするページモードによる書込を図２３を用いて、以下に説明する。
【０１８２】
加算処理部１２４は、参照フレームメモリ１３１へ、時刻ｔ１に動作の開始を示す命令２４１ａ（ＡＣＴＩＶＥ）を出力し、同時に、書込をするメモリセルのｒｏｗアドレス２５１ａ（ｒｏｗ「１」）を出力する。
時刻ｔ３に、命令２４１ｂ（ＷＲＩＴＥ）を出力し、同時に書込をするメモリセルのｃｏｌｕｍｎアドレス２５１ｂ（ｃｏｌｕｍｎ「１」）を出力する。
【０１８３】
時刻ｔ５に、１個分の画素データ２６１ａを出力する。
時刻ｔ７に、次に出力をするメモリセルのｃｏｌｕｍｎアドレス２５１ｃ（ｃｏｌｕｍｎ「２」）を出力し、時刻ｔ９に、１個の画素データ２６１ｄを出力する。
以下同様に、クロック信号２３１の周期に合わせて、ｃｏｌｕｍｎの出力と、画素データの出力とを繰り返すことにより、ｒｏｗ「１」とｃｏｌｕｍｎ「３」〜「２５６」の各メモリセルに画素データが記憶される。参照ブロック「１」を構成する２５６個の画素データが、ｒｏｗ「１」とｃｏｌｕｍｎ「１」〜「２５６」によって特定される２５６個のメモリセルに記憶されると、加算処理部１２４は、ｒｏｗ「２」を出力し、参照ブロック「２」を構成する画素データの出力に移る。
【０１８４】
参照ブロック「３」〜「６４」についても、同様にして参照フレーム１３１のｒｏｗ「３」〜「６４」のメモリセルにそれぞれ出力し、参照フレームを構成する６４個の参照ブロック全てを参照フレームメモリ１３１に書き込む。
また、以下に示す（ii）の方法でもよい
（ii）バーストモードによる書込
以下に示すように、アクセスを開始するメモリセルのｒｏｗとｃｏｌｕｍｎのみを出力し、それに続く複数のメモリセルに連続してアクセスするバーストモードによる書込を図２４を用いて説明する。
【０１８５】
図２４に示すように、加算処理部１２４はクロック信号２３２に同期して、命令２４２、アドレス２５２及び画素データ２６２を参照フレームメモリ１３１へ出力する。
命令２４２ａは、動作の開始を示す命令ＡＣＴＩＶＥの出力を示している。命令２４２ｂは、参照フレームメモリ１３１に出力される読出又は書込の命令を示しており、読出のときＲＥＡＤ、書込のときにＷＲＩＴＥを出力することを表現している。
【０１８６】
加算処理部１２４は、時刻ｔ１に命令２４２ａ（ＡＣＴＩＶＥ）を出力し、同時に書込をするメモリセルのｒｏｗアドレス２５２ａ（ｒｏｗ「１」）を出力する。次に、時刻ｔ３に命令２４２ｂ（ＷＲＩＴＥ）を出力し、同時に書込をするメモリセルのｃｏｌｕｍｎアドレス２５２ｂ（ｃｏｌｕｍｎ「１」）を出力する。
時刻ｔ５に、１個分の画素データ２６２ａを出力し、時刻ｔ６に、画素データ２６２ｂを出力する。同様にして、クロック信号２３２に合わせて、画素データ２６２ｃ、２６２ｄ、２６２ｅ・・・を順次出力する。出力された画素データ２６２ａ、２６２ｂ、２６２ｃ・・・は、ｒｏｗ「１」とｃｏｌｕｍｎ「１」〜「２５６」のメモリセルにそれぞれ記憶される。
【０１８７】
参照ブロック「１」を構成２５６個の画素データ全てが、ｒｏｗ「１」とｃｏｌｕｍｎ「１」〜「２５６」の２５６個のメモリセルに記憶されると、加算処理部１２４は、ｒｏｗ「２」を出力し、参照ブロック「２」を構成する画素データの出力に移る。
参照ブロック「３」〜「６４」についても、同様にして参照フレーム１３１のｒｏｗ「３」〜「６４」のメモリセルにそれぞれ出力し、参照フレームを構成する６４個の参照ブロック全てを参照フレームメモリ１３１に書き込む。    
【０１８８】
（Ｃ）参照フレームメモリ制御部１３３
上述したように、参照フレームメモリ制御部１３３は、動き検出制御部１３２から受け取ったブロック変数とＰＡＴフラグに応じて、参照フレームメモリ１３１から参照画像データバッファ１３４へ転送する参照ブロックを選定する。
次に選定した参照ブロックを、以下に説明するように、参照フレームメモリ１３１から読み出す。
【０１８９】
一例として、ブロック変数１、ＰＡＴフラグ１０１０を受け取った場合を考える。このとき、参照フレームメモリ制御部１３３は、参照ブロック「１」、「２」、「９」、「１０」を選択し、参照フレームメモリ１３１から読み出す。
（ｉ）ページモードによる読出
参照フレームメモリ制御部１３３による、参照フレームメモリ１３１からの読出方法を図２３を用いて説明する。
【０１９０】
参照フレームメモリ制御部１３３は、参照フレームメモリ１３１へ、時刻ｔ１に動作の開始を示す命令２４１ａ（ＡＣＴＩＶＥ）を出力し、同時に、読出をするメモリセルのｒｏｗアドレス２５１ａ（ｒｏｗ「１」）を出力する。
時刻ｔ３に、命令２４１ｂ（ＲＥＡＤ）を出力し、同時に読出をするメモリセルのｃｏｌｕｍｎアドレス２５１ｂ（ｃｏｌｕｍｎ「１」）を出力する。
【０１９１】
時刻ｔ５に、画素データ２６１ａを受け取る。
時刻ｔ７に、次に読出をするメモリセルのｃｏｌｕｍｎアドレス２５１ｃ（ｃｏｌｕｍｎ「２」）を出力し、時刻ｔ９に、画素データ２６１ｄ受け取る。
以下同様に、クロック信号２３１の周期に合わせて、ｃｏｌｕｍｎを出力し、画素データを受け取ることを繰り返すことにより、ｒｏｗ「１」とｃｏｌｕｍｎ「３」〜「２５６」の各メモリセルに記憶されている画素データを受け取る。
【０１９２】
ｒｏｗ「１」とｃｏｌｕｍｎ「１」〜「２５６」とにより特定される２５６個のメモリセルから、参照ブロック「１」を構成する２５６個の画素データ全てが出力されると、参照フレームメモリ制御部１３３は、ｒｏｗ「２」を出力し、ｒｏｗ「２」、ｃｏｌｕｍｎ「１」〜「２５６」の２５６個のメモリセルに記憶されている参照ブロック「２」の読出に移行する。
【０１９３】
参照ブロック「２」に続いて、参照ブロック「９」と「１０」についでも同様にして読み出す。
また、以下に説明する（ii）の方法でもよい。
（ii）バーストモードによる読出
以下に、バーストモードによる、参照フレームメモリ１３１からの読出方法を図２４を用いて説明する。
【０１９４】
参照フレームメモリ制御部１３３は、時刻ｔ１に命令２４２ａ（ＡＣＴＩＶＥ）を出力し、同時に読出をするメモリセルのｒｏｗアドレス２５２ａ（ｒｏｗ「１」）を出力する。次に、時刻ｔ３に命令２４２ｂ（ＲＥＡＤ）を出力し、同時に読出をするメモリセルのｃｏｌｕｍｎアドレス２５２ｂ（ｃｏｌｕｍｎ「１」）を出力する。
時刻ｔ５に、１個分の画素データ２６２ａを受け取り、時刻ｔ６に、画素データ２６２ｂを受け取る。同様にして、クロック信号２３２に合わせて、画素データ２６２ｃ、２６２ｄ、２６２ｅ・・・を順次受け取る。ｒｏｗ「１」、ｃｏｌｕｍｎ「１」〜「２５６」の２５６個のメモリセルに記憶されている、参照ブロック１を構成する２５６個の画素データが出力されると、参照フレームメモリ制御部１３３は、ｒｏｗ「２」を出力し、ｒｏｗ「２」、ｃｏｌｕｍｎ「１」〜「２５６」の２５６個のメモリセルに記憶されている参照ブロック「２」の読出に移行する。
【０１９５】
参照ブロック「２」の読出が終了すると、参照ブロック「９」、「１０」についても、同様にして参照フレームメモリ１３１から読み出す。
（Ｄ）変形例（１）の効果
（ｉ）ページモードによる読出及び書込の場合、１行分のメモリセルの書込又は読出を行う際、ｃｏｌｕｍｎ「２」〜「２５６」までのメモリセルについては、加算処理部１２４又は参照フレームメモリ制御部１３３からｒｏｗの出力を行う必要がないため、２５５個のメモリセルのｒｏｗの出力を削減することができる。
【０１９６】
（ii）バーストモードによる読出及び書込の場合、１行分のメモリセルのうち、先頭のメモリセルを特定するｒｏｗと、ｃｏｌｕｍｎ「１」を出力すると、後に続くｃｏｌｕｍｎ「２」〜「２５６」で特定されるメモリセルについてはアドレスの出力が必要無いため、２５５個のメモリセルのｒｏｗとｃｏｌｕｍｎの出力を削減することができる。
よって、アドレスの出力の削減により、読出及び書込の時間を削減することができる。
【０１９７】
（２）上記の実施の形態１において、参照画像データバッファ１３４は４個のメモリ１４１〜１４４から構成され、それぞれのメモリが個別のバスで参照フレームメモリ１３１と動き検出制御部１３２と接続されているが、この構成は１例であり他の構成を用いてもよい。
一例として、参照画像データバッファ１３４は、３行×４列の行列状に配置された１２個のブロック領域から構成され、読み出し用のポートと書き込み用のポートを１個ずつ備えている。参照画像データバッファ１３４は、動き検出制御部１３２と参照フレームメモリ１３１と一本のバスで接続されているとしてもよい。実施の形態１において説明したように、参照画像データバッファ１３４内の検出領域から読み出しを行い、検出領域以外のブロック領域に書き込みを行うため、１個のブロック領域に書き込みと読み出しが同時に起こることはない。
【０１９８】
また、実施の形態２においても同様に、参照画像データバッファ１３４ｂは、３行×５列の行列状に配置された１５個のブロック領域から構成され、読み出し用のポートと書き込み用のポートとを１個ずつ備えており、動き検出制御部１３２ｂと参照フレームメモリ１３１と１本のバスで接続されているとしてもよい。
（３）上記実施の形態において、参照フレーム上の参照領域は、動きベクトルの検出対象となる対象ブロックと同じブロック番号の参照ブロックを中心に３行×３列分の参照ブロックとなっているが、５行×５列分の参照ブロックとしてもよい。
【０１９９】
このとき、参照画像データバッファ１３４は、５行×６列の行列状に配列されたブロック領域から構成される。
以下、実施の形態１と同様の方法で、動きベクトルを検出する。
（４）本発明は、上記に示す方法であるとしてもよい。
また、上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０２００】
本発明は、デジタルカメラやカメラ付きの携帯電話のような、動画撮影機能を持つ機器を生産し、販売する産業において、また、画像コンテンツを作成又は使用する産業、例えば映画産業、報道産業などにおいて、経営的に、また継続的かつ反覆的に利用することができる。
【図面の簡単な説明】
【０２０１】
【図１】動画撮影装置１００の構成を示すブロック図である。
【図２】動画撮影装置１００で処理されるフレーム画像の１例を示す。
【図３】動き検出部１３０の構成を示すブロック図である。
【図４】実施の形態１における参照画像データバッファ１３４の構成を示す。
【図５】各対象ブロックの対象フレーム上の位置による領域区分を示している。
【図６】実施の形態１において、参照画像データバッファ１３４の物理アドレスと、動きベクトル演算部で用いられる論理アドレス空間２３４の対応を表した図である。
【図７】動き検出部１３０による、１フレームを構成する対象ブロックの動きベクトル検出の動作を表すフローチャートである。図８へ続く。
【図８】動き検出部１３０による、１フレームを構成する対象ブロックの動きベクトル検出の動作を表すフローチャートである。図７から続く。
【図９】参照フレームメモリ制御部１３３による参照ブロック選定の動作を表すフロ−チャートである。
【図１０】動き検出部による、各対象ブロックの動きベクトル検出の動作を表したフローチャートである。
【図１１】動き検出制御部１３２による書込先選定の動作を表したフローチャートである。
【図１２】参照画像データバッファ１３４内の検出領域の移行手順を示す。
【図１３】実施の形態１による効果を示す。
【図１４】実施の形態２における動き検出部１３０ｂの構成を示すブロック図である。
【図１５】実施の形態２における参照画像データバッファ１３４ｂの構成を示す。
【図１６】実施の形態２において、参照画像データバッファ１３４ｂの物理アドレスと、動きベクトル演算部で用いられる論理アドレス空間２３４ｂの対応を表した図である。
【図１７】動き検出部１３０ｂによる、１フレームを構成する対象ブロックの動きベクトル検出の動作を表すフローチャートである。図１８へ続く。
【図１８】動き検出部１３０による、１フレームを構成する対象ブロックの動きベクトル検出の動作を表すフローチャートである。図１７から続く。
【図１９】動き検出部１３０ｂによる、１個の対象ブロックの動きベクトル検出の動作を表すフローチャートである。
【図２０】動き検出制御部１３２ｂによる書込先選定の動作を表すフローチャートである。
【図２１】参照画像データバッファ１３４ｂ内の検出領域の移行手順を示す。
【図２２】変形例（１）において、参照フレームメモリ１３１に記憶されている参照フレームの一例。
【図２３】ページモードで参照フレームメモリ１３１へ書込又は読出をする場合、時間の経過に伴って、参照フレームメモリへ出力されるクロック信号、命令の種類、アドレスの種類及び参照フレームメモリへ入出力される画素データを示している。
【図２４】バーストモードで参照フレームメモリ１３１へ書込又は読出をする場合、時間の経過に伴って、参照フレームメモリへ出力されるクロック信号、命令の種類、アドレスの種類及び参照フレームメモリへ入出力される画素データを示している。
【図２５】従来技術における参照画像データバッファ２００の構成と検出領域の移行手順を示す。
【符号の説明】
【０２０２】
１〜１２  ブロック領域
５０    第１バンク
５１    第２バンク
８１〜９５  ブロック領域
１００    動画撮影装置
１０１    撮像部
１０２    並替処理部
１０３    スイッチ
１０４    減算処理部
１０５    ＤＣＴ処理部
１０６    量子化処理部
１０７    可変長符号化部
１０８    バッファメモリ
１０９    レート制御部
１１０    メインメモリ
１２３    予測画像生成部
１２４    加算処理部
１２５    逆ＤＣＴ処理部
１２６    逆量子化処理部
１２７    スイッチ
１３０    動き検出部
１３０ｂ  動き検出部
１３１    参照フレームメモリ
１３２    動き検出制御部
１３２ｂ  動き検出制御部
１３３    参照フレームメモリ制御部
１３４    参照画像データバッファ
１３４ｂ  参照画像データバッファ
１３５    対象画像データバッファ
１３６    動きベクトル演算部
１３７    入力部
１３８    出力部
１４１〜１４４  メモリ
１４６〜１４９  バス
１５１〜１５４  バス
１６１〜１６５  メモリ
１６６〜１７０  バス
１７１〜１７５  バス
２００    参照画像データバッファ
２３１    クロック信号
２３２    クロック信号
２３４    論理アドレス空間
２３４ｂ  論理アドレス空間
２４１    命令
２４２    命令
２５１    アドレス
２５２    アドレス
２６１    画素データ
２６２    画素データ
３００    フレーム画像
３１０    対象フレーム
３２０    対象フレーム
【図１】
2005210647.tif 000004
【図２】
2005210647.tif 000005
【図３】
2005210647.tif 000006
【図４】
2005210647.tif 000007
【図５】
2005210647.tif 000008
【図６】
2005210647.tif 000009
【図７】
2005210647.tif 000010
【図８】
2005210647.tif 000011
【図９】
2005210647.tif 000012
【図１０】
2005210647.tif 000013
【図１１】
2005210647.tif 000014
【図１２】
2005210647.tif 000015
【図１３】
2005210647.tif 000016
【図１４】
2005210647.tif 000017
【図１５】
2005210647.tif 000018
【図１６】
2005210647.tif 000019
【図１７】
2005210647.tif 000020
【図１８】
2005210647.tif 000021
【図１９】
2005210647.tif 000022
【図２０】
2005210647.tif 000023
【図２１】
2005210647.tif 000024
【図２２】
2005210647.tif 000025
【図２３】
2005210647.tif 000026
【図２４】
2005210647.tif 000027
【図２５】
2005210647.tif 000028