(57)【要約】【課題】動き探索の演算量を増大することなく動ベクトルの検出精度を高める。【解決手段】  複数のシフトレジスタが直列に接続され、動ベクトル探索範囲内の各画素値をシフトレジスタの初段から最終段へと順次送りながら入力していくようになされるとともに、各シフトレジスタの出力が個別に取り出されるようになされたシフトレジスタ群と、符号化対象ブロック内の所定の画素位置に各々対応して設けられ、上記シフトレジスタ群内の所定のシフトレジスタからの出力を複数入力してその中から何れかを選択的に出力する複数の選択手段と、符号化対象ブロック内の各画素値と、上記選択手段あるいは上記シフトレジスタ群より供給される、動ベクトル探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段と、上記選択手段を所定の制御信号により制御する制御手段とを備える。【選択図】図９
2007151169.tif 000002
【特許請求の範囲】
【請求項１】
ブロックマッチング法により動ベクトルを発生する動ベクトル検出装置であって、
複数のシフトレジスタが直列に接続され、動ベクトル探索範囲内の各画素値を上記直列に接続されたシフトレジスタの初段から最終段へと順次送りながら入力していくようになされるとともに、各シフトレジスタの出力が個別に取り出されるようになされたシフトレジスタ群と、
上記符号化対象ブロック内の所定の画素位置に各々対応して設けられ、上記シフトレジスタ群内の所定のシフトレジスタからの出力を複数入力してその中から何れかを選択的に出力する複数の選択手段と、
上記符号化対象ブロック内の各画素値と、上記選択手段あるいは上記シフトレジスタ群より供給される、上記動ベクトル探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段と、
上記選択手段を所定の制御信号により制御する制御手段とを備えことを特徴とする動ベクトル検出装置。
【請求項２】
上記各画素毎の差分絶対値計算手段により求められた各画素毎の差分絶対値を合算するブロック合算手段と、
上記ブロック合算手段による計算結果に基づいて上記参照ブロックを決定し、動ベクトルを求める動ベクトル発生手段とを備えたことを特徴とする請求項１に記載の動ベクトル検出装置。
【請求項３】
上記シフトレジスタ群に各画素値が入力される上記動ベクトル探索範囲は、上記符号化対象ブロック位置を含む所定の矩形領域内において上記符号化対象ブロックからの距離が遠い領域を除外した範囲であることを特徴とする請求項１に記載の動ベクトル検出装置。
【請求項４】
上記所定の矩形領域は上記符号化対象ブロックと相似または非相似の矩形領域であり、上記動ベクトル探索範囲は上記矩形領域に内接する菱形の領域であることを特徴とする請求項３に記載の動ベクトル検出装置。
【請求項５】
上記動ベクトル探索範囲内の各画素値を含む参照フレームの画像メモリに対して、上記シフトレジスタ群に入力する上記動ベクトル探索範囲内の各画素値の読み出しを制御する読み出し手段を備えたことを特徴とする請求項１〜４の何れか１項に記載の動ベクトル検出装置。
【請求項６】
符号化の方式がＨ．２６１、Ｈ．２６３、ＭＰＥＧ１、ＭＰＥＧ２またはＭＰＥＧ４であることを特徴とする請求項１〜５の何れか１項に記載の動ベクトル検出装置。
【請求項７】
ブロックマッチング法により動ベクトルを発生する動ベクトル検出装置であり、複数のシフトレジスタが直列に接続され、動ベクトル探索範囲内の各画素値を上記直列に接続されたシフトレジスタの初段から最終段へと順次送りながら入力していくようになされるとともに、各シフトレジスタの出力が個別に取り出されるようになされたシフトレジスタ群と、上記符号化対象ブロック内の所定の画素位置に各々対応して設けられ、上記シフトレジスタ群内の所定のシフトレジスタからの出力を複数入力してその中から何れかを選択的に出力する複数の選択手段と、上記符号化対象ブロック内の各画素値と、上記選択手段あるいは上記シフトレジスタ群より供給される、上記動ベクトル探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段とを備えた動ベクトル検出装置を制御するプログラムを記録するコンピュータ読み取り可能な記録媒体であって、
上記選択手段を所定の制御信号により制御する処理をコンピュータに実行させるコンピュータプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動ベクトル検出装置および記録媒体に関するものである。
【背景技術】
【０００２】
動画像信号の符号化においては、情報量を高能率圧縮するために、動画像信号のフレーム間の相関性の高さに着目してフレーム間の差分を符号化する方法（フレーム間符号化）が採用されることが多い。すなわち、差分をとる対象フレームが存在しない最初のフレームについては１画面をそのまま符号化するが、それ以降のフレームについては、符号化した情報を更に復号した１つ前のフレーム（参照フレーム）との差分をとり、その差分を符号化するという方法である。
【０００３】
しかし、この方法では、全てのフレームについて１画面をそのまま符号化する場合に比べれば情報量を少なくできるが、差分をとるフレーム間で画面に動きがあった部分については、差分値が大きくなることがあり、情報量の圧縮という点に関してはまだまだ十分とは言えない。そこで、このような場合も考慮して更に効率的に情報量を圧縮するために、動き補償という方法（動き補償フレーム間符号化）が用いられる。
【０００４】
動き補償を用いないフレーム間符号化においては、フレーム間の差分は、比較される両フレームの空間座標が互いに同一の箇所でとられる。これに対して動き補償を用いる場合は、両フレームの空間座標は必ずしも同一である必要はなく、画面の動きを考慮し、フレーム間の差分がより小さくなるような参照フレームの箇所との間で差分がとられる。このときの符号化対象箇所の座標と参照フレーム内の差分をとる箇所の座標とのずれを表すのが動ベクトルである。これを図面を用いて説明する。
【０００５】
図３は、動き補償フレーム間予測および動ベクトルの説明図である。図３において、３０１は参照フレーム、３０２は符号化対象フレームであり、白抜きの星☆だけが動いていて背景は全く動いていない様子が示されている。符号化対象フレーム３０２は、動き補償フレーム間符号化を行うにあたって複数の小さなブロックに分割され、このブロック単位で符号化が行われる。
【０００６】
例えば、動画像通信の符号化標準であるＩＴＵ−Ｔ勧告Ｈ．２６１やＨ．２６３、動画像蓄積の符号化標準であるＭＰＥＧ１やＭＰＥＧ２、ＭＰＥＧ４では、マクロブロックと呼ばれる縦横１６画素の単位に分割して符号化される。３０３は符号化対象フレーム３０２を複数のマクロブロックに分割した様子を示すものである。
【０００７】
今、符号化対象フレーム３０３の分割された複数のマクロブロックのうち、白抜きの星☆がある３０３ａのブロックに注目する。３０４は３０１と同じ参照フレームであるが、ここでマクロブロック３０３ａと同じ座標のブロックは、３０４ａのブロックとなる。しかし、これらのフレーム間では動きが発生しているので、マクロブロック３０３ａとの差分をとるにあたってその差分値が最も小さくなるのは３０４ｂに位置するブロックである。このとき、ブロック３０４ａの座標とブロック３０４ｂの座標とのずれを表す３０４ｃが動ベクトルとなる。
【０００８】
情報の圧縮という点に関しては、符号化対象フレーム内のマクロブロック３０３ａと参照フレーム内のブロック３０４ａとの差分を符号化するよりも、符号化対象フレーム内のマクロブロック３０３ａと参照フレーム内のブロック３０４ｂとの差分および動ベクトル３０４ｃを符号化した方が効率が良い。
【０００９】
この動ベクトルを検出する方法として、よく用いられる方法の１つにブロックマッチング法がある。これは、符号化対象ブロックの位置を中心にして動ベクトルを検出するための探索範囲をあらかじめ設定し、その探索範囲内の全ての候補ベクトルに対するブロックについて符号化対象ブロックの各画素との差分の絶対値の合計を算出し、その合計値が最小となった候補ブロックを参照ブロック（図３のブロック３０４ｂに相当）として採用するという方法である。これを図面を用いて説明する。
【００１０】
図４は、ブロックマッチング法の説明図であり、簡略化のため、符号化対象ブロックは縦横２画素、探索範囲は符号化対象ブロックを中心にして上下左右とも＋２画素の範囲としている。図４において、４０１は符号化対象フレーム内の符号化対象ブロック位置を示し、４０２は１フレーム前の参照フレーム内の探索範囲を示している。４０３〜４２７は探索範囲４０２内の全ての候補ベクトルに対するブロックである。また、○内の数字は、画素番号を示している。
【００１１】
この例の場合、符号化対象ブロック４０１と探索範囲４０２内の各候補ブロック４０３〜４２７との間で対応する位置の画素間の差分絶対値の合計を算出する。左上の候補ブロック４０３を例にとると、
｜a15-b1｜＋｜a16-b2｜＋｜a21-b7｜＋｜a22-b8｜
を算出することになる。ここで、a** は符号化対象画素の値、b** は参照画素の値であり、**が図４の画素番号に対応している。同様の演算を他の候補ブロック４０４〜４２７についても行い、その結果が最小であったブロックを参照ブロックとして採用する。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
このように動ベクトルを求める圧縮方式においては、画面内における画像の動きが速い場合も考えられることから、動ベクトル検出の精度を高める、すなわち符号化対象ブロックとの間で各画素毎の差分絶対値の合計ができるだけ小さくなる参照ブロックを検出するためには、候補ベクトルがより多く含まれるように探索範囲を広げれば良い。
しかしながら、探索範囲を広げると、それだけ動き探索の演算量が増大し、動ベクトルの検出に要する時間が増加してしまうという問題がある。
【００１３】
本発明はこのような問題を解決するために成されたものであり、例えばＨ．２６１、Ｈ．２６３やＭＰＥＧ１、２、４等のような動ベクトル検出を伴う符号化方式において、動き探索の演算量を増大することなく（演算処理に要する時間を増大することなく）、動ベクトルの検出精度を高めることができるようにすることを目的とする。
【課題を解決するための手段】
【００１４】
本発明の動ベクトル検出装置は、ブロックマッチング法により動ベクトルを発生する動ベクトル検出装置であって、複数のシフトレジスタが直列に接続され、動ベクトル探索範囲内の各画素値を上記直列に接続されたシフトレジスタの初段から最終段へと順次送りながら入力していくようになされるとともに、各シフトレジスタの出力が個別に取り出されるようになされたシフトレジスタ群と、上記符号化対象ブロック内の所定の画素位置に各々対応して設けられ、上記シフトレジスタ群内の所定のシフトレジスタからの出力を複数入力してその中から何れかを選択的に出力する複数の選択手段と、上記符号化対象ブロック内の各画素値と、上記選択手段あるいは上記シフトレジスタ群より供給される、上記動ベクトル探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段と、上記選択手段を所定の制御信号により制御する制御手段とを備えことを特徴とする。
本発明のコンピュータ読み取り可能な記録媒体は、ブロックマッチング法により動ベクトルを発生する動ベクトル検出装置であり、複数のシフトレジスタが直列に接続され、動ベクトル探索範囲内の各画素値を上記直列に接続されたシフトレジスタの初段から最終段へと順次送りながら入力していくようになされるとともに、各シフトレジスタの出力が個別に取り出されるようになされたシフトレジスタ群と、上記符号化対象ブロック内の所定の画素位置に各々対応して設けられ、上記シフトレジスタ群内の所定のシフトレジスタからの出力を複数入力してその中から何れかを選択的に出力する複数の選択手段と、上記符号化対象ブロック内の各画素値と、上記選択手段あるいは上記シフトレジスタ群より供給される、上記動ベクトル探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段とを備えた動ベクトル検出装置を制御するプログラムを記録するコンピュータ読み取り可能な記録媒体であって、上記選択手段を所定の制御信号により制御する処理をコンピュータに実行させるコンピュータプログラムを記録したことを特徴とする。
【発明の効果】
【００１５】
本発明によれば、動き探索の演算量を増大することなく動ベクトルの検出精度を高めることができる。
特に、符号化対象ブロック位置を含む所定の矩形領域内において、符号化対象ブロックからの距離が遠い領域を除外した範囲を動ベクトル探索範囲として計算を行うようにすれば、矩形領域の探索範囲を通常より大きく広げても、その大きな矩形領域内に含まれる動ベクトル探索範囲中で参照ブロックの候補として差分絶対値計算の対象となるブロックの数が増大しないようにすることができる。これにより、動き探索の演算量を増大することなく、探索範囲を広げて動ベクトルの検出精度を高めることができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施形態を図面に基づいて説明する。
一般に、Ｈ．２６１、Ｈ．２６３やＭＰＥＧ１、２、４等の符号化方式においては、動ベクトル検出以降の符号化処理（例えばＤＣＴ処理を含むもの）は、縦横１６画素のマクロブロックを更に４分割したサブブロックと呼ばれる縦横８画素の単位で行われる。特に、Ｈ．２６３やＭＰＥＧ４では、マクロブロック単位の動ベクトルばかりでなく、サブブロック単位の動ベクトルを採用することも可能であり、両方を求めておいて効率の良い方を選ぶことができる。このサブブロック単位の動ベクトルについて図面を用いて説明する。
【００１７】
図５は、サブブロック単位の動ベクトルの説明図であり、簡略化のため、符号化対象マクロブロックは縦横４画素、探索範囲は符号化対象マクロブロックを中心にして上下左右とも＋２画素の範囲としている。図５において、５０１は符号化対象フレーム内の符号化対象マクロブロックを示し、５０２は１フレーム前の参照フレーム内のマクロブロック単位の探索範囲を示している。また、５０３〜５０６は符号化対象マクロブロック５０１を４分割して得られるサブブロックであり、それぞれ縦横２画素で構成されている。
【００１８】
この例の場合、サブブロック単位の動ベクトルは、左上のサブブロック５０３を例にとると、そのサブブロック５０３について上下左右に＋２画素をとった探索範囲５０７において動ベクトル検出を行った結果となる。この動ベクトルの検出法は図４で説明した通りである。同様に、サブブロック５０４〜５０６の動ベクトルは、それらのサブブロックについての探索範囲５０８〜５１０においてそれぞれ動ベクトル検出を行った結果となる。
【００１９】
さらに、Ｈ．２６３やＭＰＥＧ４では、サブブロック単位の動ベクトル検出のための探索範囲の中心を、符号化対象サブブロックの位置と全く同じにせずに、オフセットを加えて所定量だけ移動させることが可能である。これを図面を用いて説明する。
【００２０】
図６は、サブブロック単位の探索範囲にオフセットを加えた場合の動ベクトル検出の説明図である。図６において、５０３は図５に示した左上の符号化対象サブブロックの位置を示す。この符号化対象サブブロック５０３の動ベクトル検出のための探索範囲の原点を、オフセットを加えることで例えば６０１の位置にずらし、サブブロック単位の探索範囲もそれに合わせて６０２の位置にずらすことがＨ．２６３やＭＰＥＧ４では可能である。
【００２１】
なお、オフセットの値は、マクロブロック単位の探索範囲５０２内に制限されることはないので、オフセットの値によっては、サブブロック単位の探索範囲６０２がマクロブロック単位の探索範囲５０２を外れることもあり得る。これによれば、画像の動きが速くて本来の位置の探索範囲内に符号化対象サブブロックの画像と同じ画像がない場合でも、まわりのブロックの動きから予想したオフセットを加えて探索範囲をずらすことにより、符号化対象サブブロックと同じ画像が存在する最適なブロックを参照サブブロックとして採用することができる。
【００２２】
上記のようにサブブロック単位の動ベクトルも採用可能なＨ．２６３やＭＰＥＧ４は、最近になって標準化が成されたばかりであり、これらを応用した製品はまだ数多く存在しないのが現状である。したがって、マクロブロック単位の動ベクトルとサブブロック単位の動ベクトルとの両方を求めて効率の良い方を選ぶようにするための装置をどのように構成するかは、今後の課題とも言える。
【００２３】
そこで本発明では、オフセットを考慮したサブブロック単位の動ベクトルを採用することも可能なＨ．２６３やＭＰＥＧ４の応用化に先駆けて、マクロブロック単位の動ベクトルとサブブロック単位の動ベクトルとをより簡単な構成で求めることが可能な動ベクトル検出装置を提供することを第１の目的とし、以下に述べる第１の実施形態を提案する。
【００２４】
（第１の実施形態）
図１は、第１の実施形態による動ベクトル検出装置の要部構成を示すブロック図であり、簡略化のため、図５に示したように符号化対象マクロブロックが縦横４画素、マクロブロック単位の探索範囲が符号化対象マクロブロックを中心にして上下左右とも＋２画素の範囲の場合を想定している。
【００２５】
図１において、１０１は差分絶対値計算回路、１０２ａ〜１０２ｄはサブブロック合算回路、１０３はマクロブロック合算回路、１０４は最小値決定／動ベクトル発生回路、１０５ａおよび１０５ｂはフレームメモリ、１０６ａおよび１０６ｂは読み出し回路、１０７は制御回路である。
【００２６】
符号化対象フレームの画像は、第１のフレームメモリ１０５ａに格納され、その中から第１の読み出し回路１０６ａより出力されるアドレスに従って符号化対象マクロブロックの各画素値（以下、符号化対象マクロブロックデータという）が読み出されて差分絶対値計算回路１０１に供給される。また、上記符号化対象フレームより１フレーム前の参照フレームの画像は、第２のフレームメモリ１０５ｂに格納され、その中から第２の読み出し回路１０６ｂより出力されるアドレスに従って探索範囲内の各画素値（以下、探索データという）が読み出されて差分絶対値計算回路１０１に供給される。
【００２７】
上記差分絶対値計算回路１０１の内部において、１１ａ〜１１ｐは画素毎の差分絶対値計算回路（以下、ＰＤＣという）、１２ａ〜１２ｇはマルチプレクサ（以下、ＭＰＸという）、１３ａ〜１３ｃは４つのシフトレジスタが直列に接続された４段シフトレジスタである。上記ＰＤＣ１１ａ〜１１ｐの位置は、実際の画面上の符号化対象マクロブロックの画素の位置に対応している。したがって、図１中の点線で囲んだ部分１４ａ〜１４ｄがマクロブロック内の各サブブロックの位置に対応している。
【００２８】
さらに、上記ＰＤＣ１１ａ〜１１ｐの内部構成を図２に示す。図２において、２０１〜２０３はシフトレジスタ、２０４は計算回路である。第１のシフトレジスタ２０１は、第１のフレームメモリ１０５ａから読み出された符号化対象マクロブロックデータの１画素分を保持する。第３のシフトレジスタ２０３は、前段の種々の回路から送られてくる探索データの１画素分を保持する。
【００２９】
計算回路２０４は、上記第１のシフトレジスタ２０１に保持された１画素分の符号化対象マクロブロックデータＡと、シフトレジスタ２０３に保持された１画素分の探索データＢとの差分絶対値｜Ａ−Ｂ｜を計算し、その計算結果を第２のシフトレジスタ２０２に保持する。第２のシフトレジスタ２０２に保持された１画素分の差分絶対値は、４つのサブブロック合算回路１０２ａ〜１０２ｄのうち対応する回路に出力され、第３のシフトレジスタ２０３に保持された探索データＢは、上記差分絶対値が出力されるのと同じタイミングで次段に出力される。
【００３０】
各ＰＤＣ１１ａ〜１１ｐが図２のように構成されているので、差分絶対値計算回路１０１内の各行では、入力された探索データが右から左へと順に送られていく。上から２行目以降の一番左にあるＰＤＣ１１ｃ，１１ｉ，１１ｋから出力された探索データは、それぞれその上の行の右端に送られる。３個の４段シフトレジスタ１３ａ〜１３ｃは、１番下の行を除いた残り３行の各ＰＤＣよりも入力側（右側）に夫々設けられている。
【００３１】
本実施形態では、マクロブロック単位の探索範囲が横方向に８画素であるのに対して、探索範囲内の各候補ブロックの大きさは横方向に４画素で探索範囲より４画素少ないので、各行に設けた３個の４段シフトレジスタ１３ａ〜１３ｃは、候補ブロック内の画素値として使わない各行４画素分の探索データを格納するものとして機能する。
【００３２】
また、ＭＰＸ１２ａは、サブブロック１４ａとサブブロック１４ｂとの間にあり、ＰＤＣ１１ｅからの出力と４段シフトレジスタ１３ａからの出力とのどちらかを選択出力するようになっている。ＭＰＸ１２ｂは、サブブロック１４ａとサブブロック１４ｂとの間にあり、ＰＤＣ１１ｇからの出力と第２のフレームメモリ１０５ｂからの出力とのどちらかを選択出力するようになっている。
【００３３】
ＭＰＸ１２ｃは、４段シフトレジスタ１３ａの前段に設けられ、ＰＤＣ１１ｃからの出力とＰＤＣ１１ｇからの出力とのどちらかを選択出力するようになっている。ＭＰＸ１２ｄは、ＰＤＣ１１ｈの前段に設けられ、４段シフトレジスタ１３ｂからの出力と第２のフレームメモリ１０５ｂからの出力とのどちらかを選択出力するようになっている。
【００３４】
ＭＰＸ１２ｅは、サブブロック１４ｃとサブブロック１４ｄとの間にあり、ＰＤＣ１１ｍからの出力と４段シフトレジスタ１３ｃからの出力とのどちらかを選択出力するようになっている。ＭＰＸ１２ｆは、サブブロック１４ｃとサブブロック１４ｄとの間にあり、ＰＤＣ１１ｏからの出力と第２のフレームメモリ１０５ｂからの出力とのどちらかを選択出力するようになっている。
【００３５】
ＭＰＸ１２ｇは、４段シフトレジスタ１３ｃの前段に設けられ、ＰＤＣ１１ｋからの出力とＰＤＣ１１ｏからの出力とのどちらかを選択出力するようになっている。
以上に述べた各ＭＰＸ１２ａ〜１２ｇは、制御回路１０７から与えられるコントロール信号に応じて切り換えられるようになっており、マクロブロック単位の動ベクトルを求めるときは全て上側の入力が選択される。なお、サブブロック単位の動ベクトルを求めるときの選択状態は後述する。
【００３６】
これにより、マクロブロック単位の動ベクトルを求めるときは、１６個のＰＤＣ１１ａ〜１１ｐが３個の４段シフトレジスタ１３ａ〜１３ｃを途中に介しながら直列に接続され、探索データが右下のＰＤＣ１１ｐから左上のＰＤＣ１１ａへと順に送られていくことになる。一方、サブブロック単位の動ベクトルを求めるときは、各サブブロック単位で４個のＰＤＣが直列に接続され、各サブブロック用の探索データが各サブブロックの右下のＰＤＣから左上のＰＤＣへと順に送られていくことになる。
【００３７】
各サブブロック合算回路１０２ａ〜１０２ｄは、それぞれ対応するサブブロック１４ａ〜１４ｄ内で計算された各画素毎の差分絶対値の合計を求め、その結果をマクロブロック合算回路１０３および最小値決定／動ベクトル発生回路１０４に供給する。マクロブロック合算回路１０３は、各サブブロック合算回路１０２ａ〜１０２ｄから供給されるサブブロック毎の差分絶対値の合計を全て合計する計算を行い、その結果を最小値決定／動ベクトル発生回路１０４に供給する。
【００３８】
最小値決定／動ベクトル発生回路１０４は、各サブブロック合算回路１０２ａ〜１０２ｄあるいはマクロブロック合算回路１０３から各候補ブロック毎に与えられる差分絶対値の合計値の中から最小のものを決定する。そして、その合計値が最小の候補ブロックを参照ブロックとして採用し、動ベクトルを発生する。
【００３９】
ここで、マクロブロック単位の動ベクトルを求めるときはマクロブロック合算回路１０３からの合計値を用いて１個の動ベクトルを求め、サブブロック単位の動ベクトルを求めるときは各サブブロック合算回路１０２ａ〜１０２ｄからの合計値を用いて４個の動ベクトルを求める。最小値決定／動ベクトル発生回路１０４でどちらの合計値を用いるかは、制御回路１０７から与えられるコントロール信号によって制御される。
【００４０】
次に、上記のように構成した本実施形態による動ベクトル検出装置の動作について説明する。
まず、第１のフレームメモリ１０５ａから符号化対象マクロブロックデータが差分絶対値計算回路１０１に入力され、各画素のデータがそれぞれ対応するＰＤＣ１１ａ〜１１ｐ中の第１のシフトレジスタ２０１に保持される。この符号化対象マクロブロックデータは、同一のマクロブロックの処理期間中はそのまま第１のシフトレジスタ２０１に保持される。
【００４１】
なお、第１のフレームメモリ１０５ａからの符号化対象マクロブロックデータの入力は、以下に述べる探索範囲のデータの入力において、最初のデータが図１の一番左上のＰＤＣ１１ａに到着するまでに完了していれば良い。
【００４２】
次に、差分絶対値計算回路１０１に探索範囲のデータを入力するが、最初に、マクロブロック単位の動ベクトルを求める場合について説明する。この場合は、差分絶対値計算回路１０１にマクロブロック単位の探索データが入力される。ここでは、縦横４画素の符号化対象マクロブロックに対して±２画素を探索するので、探索データの大きさは縦横８画素となる（図５の５０２）。
【００４３】
また、図１における全てのＭＰＸ１２ａ〜１２ｇでは、制御回路１０７からのコントロール信号に従って上側の入力を選択する。これにより、差分絶対値計算回路１０１内の４段シフトレジスタ１３ａ〜１３ｃおよび各画素毎のＰＤＣ１１ａ〜１１ｐは、横の行単位で下から上に、各行内では右から左に直列に接続される。
【００４４】
ここで、最終行の入力側からマクロブロック単位の探索データ（図５の探索範囲５０２内のデータ）をラスタスキャン順に入力すると、最初のデータ（探索範囲の左上にある画素番号１のデータ）が左上のＰＤＣ１１ａに到着した時点で、左上の候補ブロック（画素番号１〜４、９〜１２、１７〜２０、２５〜２８の１６画素からなるブロックで、図４で言うところの候補ブロック４０３に相当）のデータが各ＰＤＣ１１ａ〜１１ｐに入力されたことになる。
【００４５】
このとき、各ＰＤＣ１１ａ〜１１ｐ内の計算回路２０４で符号化対象マクロブロックデータとマクロブロック単位の探索データとの差分絶対値が各画素ごとに計算され、その結果が第２のシフトレジスタ２０２に保持される。これらの差分絶対値は各サブブロック１４ａ〜１４ｄごとに対応するサブブロック合算回路１０２ａ〜１０２ｄに入力されて合算されることにより、サブブロック単位の差分絶対値の合計を得る。
【００４６】
さらに、各サブブロック合算回路１０２ａ〜１０２ｄで求められたサブブロック単位の差分絶対値の合計がマクロブロック合算回路１０３に入力されて合算されることにより、マクロブロック単位の差分絶対値の合計を得る。こうして得られたマクロブロック単位の差分絶対値の合計は、最小値決定／動ベクトル発生回路１０４に入力され、図示しない内部のレジスタに保持される。
【００４７】
次に、最終行の入力側から次の探索データを１画素分入力すると、各ＰＤＣ１１ａ〜１１ｐには次の候補ブロック（図４で言うところの候補ブロック４０４に相当）のデータが入力されたことになる。この場合も同様にして、マクロブロック単位の差分絶対値の合計が算出され、それが最小値決定／動ベクトル発生回路１０４に入力される。最小値決定／動ベクトル発生回路１０４では、今回入力された差分絶対値の合計と、前回図示しない内部のレジスタに保持された差分絶対値の合計とを大小比較し、値の小さい方を上記レジスタに保持し直す。
【００４８】
以下同様にして、最終行の入力側から探索データを順次入力していき、マクロブロック単位の差分絶対値の合計を求めていく。ところで、最初の候補ブロックのデータが各ＰＤＣ１１ａ〜１１ｐに入力されたときから数えて、５画素分の探索データを入力すると、水平位置が同じ５個の候補ブロック（図４で言うところの候補ブロック４０３〜４０７に相当）が各ＰＤＣ１１ａ〜１１ｐに順に入力される。
【００４９】
続く３画素分の探索データを入力したときには差分絶対値の合計の計算には無関係になるが、更にそれに続く５画素分の探索データを順に入力すると、先に入力された５個の候補ブロックから水平位置が１画素下がった５個の候補ブロック（図４で言うところの候補ブロック４０８〜４１２に相当）が各ＰＤＣ１１ａ〜１１ｐに順に入力される。このように探索データを順次入力していくことで、全ての候補ブロックの探索データが各ＰＤＣ１１ａ〜１１ｐに順に入力される。
【００５０】
このとき、最小値決定／動ベクトル発生回路１０４は、上述したような大小比較およびレジスタへの更新記憶の処理を各候補ブロックについてマクロブロック単位の差分絶対値の合計が計算されるごとに行うことにより、最終的に各候補ブロックの中で最小の差分絶対値の合計を有する候補ブロックを参照ブロックとして決定する。そして、その決定した参照ブロックに対応する動ベクトルを発生して、マクロブロック単位の動ベクトルとして外部に出力する。
【００５１】
なお、もしサブブロック単位の動ベクトルを検出するための探索範囲の原点がいずれも符号化対象サブブロックと同じ位置であったら（オフセットがなかったら）、最小値決定／動ベクトル発生回路１０４は、各サブブロック合算回路１０２ａ〜１０２ｄで求められたサブブロック単位の差分絶対値の合計を用いて上述したマクロブロック単位の処理と同様の処理を各サブブロック毎に行うことにより、４つのサブブロック単位の動ベクトルを得ることができる。
【００５２】
このように、探索範囲に関するオフセットがない場合には、各ＭＰＸ１２ａ〜１２ｇでの選択を切り換えなくても、マクロブロック単位の動ベクトルとサブブロック単位の動ベクトルとの両方を求めることができる。したがって、オフセットについて何ら考慮しない簡易なシステムを構築しようとする場合には各ＭＰＸ１２ａ〜１２ｇは設ける必要がない。
【００５３】
また、オフセットが付いていても、各サブブロック１４ａ〜１４ｄでオフセットが同じ場合には、第２の読み出し回路１０６ｂの制御によりオフセットに応じたマクロブロック単位の探索データを入力し直すことで、サブブロック単位の動ベクトルを得ることが可能である。
【００５４】
次に、サブブロック単位の動ベクトルを求める場合で、しかも各サブブロック１４ａ〜１４ｄでオフセットが互いに異なる場合の動作を説明する。この場合は、探索データがサブブロック毎に全く異なる場合もあるので、第２のフレームメモリ１０５ｂから差分絶対値計算回路１０１にサブブロック毎に独立して探索データを入力する。この探索データの入力を制御しているのは、第２の読み出し回路１０６ｂである。
【００５５】
最初に、左上のサブブロック１４ａの動ベクトルを求める場合について説明する。この場合、ＭＰＸ１２ａ，１２ｂは下側の入力を選択し、ＭＰＸ１２ｃは上側の入力を選択し、その他のＭＰＸ１２ｄ〜１２ｇは不問（ドントケア）とする。このようにすることで、第２のフレームメモリ１０５ｂから読み出されたサブブロック単位の探索データはＰＤＣ１１ｄに直接入力され、ＰＤＣ１１ｃより出力された探索データはＭＰＸ１２ｃ、４段シフトレジスタ１３ａ、ＭＰＸ１２ａを介してＰＤＣ１１ｂに入力される。
【００５６】
これは、先にマクロブロック単位の動ベクトルを検出する際に構成した縦横４画素分に相当するＰＤＣ１１ａ〜１１ｐの接続を、縦横２画素分に相当するＰＤＣ１１ａ〜１１ｄの接続に縮小したものとなる。したがって、差分絶対値計算回路１０１にサブブロック単位の探索データ（縦横２画素の符号化対象サブブロックデータに対して±２画素を探索するので、探索データの大きさは縦横６画素となる。図５の探索範囲５０７を参照）をラスタースキャン順に入力し、サブブロック合算回路１０２ａの出力についてのみ最小値決定／動ベクトル発生回路１０４で処理を行えば、サブブロック単位での動ベクトルを求めることができる。
【００５７】
以下同様に、右上、左下、右下の各サブブロック１４ｂ〜１４ｄについてもサブブロック単位の動ベクトルを夫々求めることができる。なお、右上のサブブロック１４ｂの動ベクトルを求める場合には、ＭＰＸ１２ｃ，１２ｄで下側の入力を選択するとともに、その他のＭＰＸを不問（ドントケア）として、サブブロック合算回路１０２ｂの出力についてのみ最小値決定／動ベクトル発生回路１０４で処理を行えば良い。
【００５８】
また、左下のサブブロック１４ｃの動ベクトルを求める場合には、ＭＰＸ１２ｅ，１２ｆで下側の入力を選択し、ＭＰＸ１２ｇで上側の入力を選択するとともに、その他のＭＰＸを不問（ドントケア）として、サブブロック合算回路１０２ｃの出力についてのみ最小値決定／動ベクトル発生回路１０４で処理を行えば良い。
【００５９】
さらに、右下のサブブロック１４ｄの動ベクトルを求める場合には、ＭＰＸ１２ｇで下側の入力を選択するとともに、その他のＭＰＸを不問（ドントケア）として、サブブロック合算回路１０２ｄの出力についてのみ最小値決定／動ベクトル発生回路１０４で処理を行えば良い。
以上により、全てのサブブロックについてサブブロック単位の動ベクトルを検出することができる。
【００６０】
以上に述べた一連の動作、すなわち、第１のフレームメモリ１０５ａからの符号化対象マクロブロックデータの読み出し、第２のフレームメモリ１０５ｂからの探索データの読み出し、各ＭＰＸ１２ａ〜１２ｇでの選択切り換え動作および最小値決定／動ベクトル発生回路１０４での処理は、制御回路１０７が制御している。
【００６１】
制御回路１０７は、ハードウェア的に構成しても良いが、例えばＣＰＵ、ＲＯＭおよびＲＡＭなどから成るマイクロコンピュータにより構成することも可能である。この場合、上述のような一連の処理を行うシーケンスを記述したプログラムは上記ＲＯＭに記憶され、このＲＯＭに記憶されたプログラムに従ってＣＰＵが動作する。このＣＰＵの作業プログラムを格納したＲＯＭは、本発明の記録媒体を構成する。
【００６２】
また、上記マイクロコンピュータに周辺インタフェースを介してハードディスクを接続し、このハードディスクに上記ＣＰＵの作業プログラムを格納するようにしても良い。このハードディスクには上記作業プログラムを外部から供給することが可能であり、この場合、ハードディスクや上記作業プログラムを供給するための手段、例えば上記作業プログラムを格納した記録媒体も、本発明の記録媒体を構成する。
【００６３】
上記作業プログラムを格納するための記録媒体としては、ＲＯＭやハードディスクの他に、例えばフレキシブルディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード等を用いることができる。
【００６４】
このように、本実施形態によれば、Ｈ．２６３やＭＰＥＧ４等の符号化方式において、例えば画像の動きに応じてサブブロック毎にオフセットを加えてサブブロック単位の動ベクトルを求めることにより、探索範囲を広げて演算量を増大することなく（演算処理に要する時間を増大することなく）、動ベクトルの検出精度を高め、情報量をより効率的に圧縮することができる。
【００６５】
なお、以上の実施形態では、説明の簡略化のために符号化対象マクロブロックが縦横４画素で、マクロブロック単位の探索範囲が符号化対象マクロブロックを中心にして上下左右とも＋２画素の範囲の場合について述べたが、本発明はこれに限定されない。従来例で述べたように、Ｈ．２６３やＭＰＥＧ４では実際には符号化対象マクロブロックは縦横１６画素で構成されるので、ＰＤＣ、ＭＰＸおよびシフトレジスタ等をその数に応じて構成すれば良い。
【００６６】
また、以上の実施形態では、各サブブロック合算回路１０２ａ〜１０２ｄの出力とマクロブロック合算回路１０３の出力とを両方とも最小値決定／動ベクトル発生回路１０４に入力し、最小値決定／動ベクトル発生回路１０４でどちらの情報を使うかを制御回路１０７からのコントロール信号によって制御していたが、本発明はこれに限定されない。例えば、制御回路１０７が各サブブロック合算回路１０２ａ〜１０２ｄを制御し、その出力先をマクロブロック合算回路１０３にするか最小値決定／動ベクトル発生回路１０４にするかを切り換えるように構成しても良い。
【００６７】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。本発明は、上述したＨ．２６３やＭＰＥＧ４等の符号化方式だけでなく、Ｈ．２６１やＭＰＥＧ１、２等のようにサブブロック単位の動ベクトルを用いない他の符号化方式においても、動き探索の演算量を増大することなく動ベクトルの検出精度を高めることが可能な動ベクトル検出装置を提供することを第２の目的として、以下に述べる第２の実施形態を提案する。
【００６８】
上述したように、動ベクトルの検出精度を高めるために探索範囲を単純に広げると、その分だけ候補ベクトルの数が増大し、動き探索の演算量が大きくなってしまう。そこで、第２の実施形態では、探索範囲を広げる一方でその範囲内の候補ブロックを選別することで、候補ベクトルの数の増加を抑え、動ベクトルの検出に要する時間の増加も抑えることができるようにしている。
【００６９】
図７は、図４の例に示した縦横６画素の探索範囲に比べて探索範囲を縦横８画素に広げる（符号化対象ブロックを中心にして上下左右とも＋３画素の範囲に広げる）代わりに、符号化対象ブロックからの距離が遠いブロックを候補ブロックから外した場合の例である。
【００７０】
図７において、７０１は符号化対象フレーム内の縦横２画素の符号化対象ブロック位置を示し、７０２は１フレーム前の参照フレーム内の縦横８画素の探索範囲を示している。また、点線で囲んだ７０３の範囲は、符号化対象ブロック７０１からの距離が遠いブロックを候補ブロックから外した真の動ベクトル探索範囲であり、７０４〜７２８は上記動ベクトル探索範囲７０３内の全ての候補ベクトルに対するブロックである。また、○内の数字は、画素番号を示している。
【００７１】
また、図８は、探索範囲の横方向に重きをおき、図４の例に比べて探索範囲を符号化対象ブロックを中心にして左右を＋４画素の範囲に広げる代わりに、符号化対象ブロックからの距離が遠いブロックを候補ブロックから外した場合の例である。この図８の例は、画像データを得るべくカメラで撮影するときは、カメラを横方向に動かすことが多いことや、画像の表示画面そのものが横長の形状であることなどから、横方向に画像の相関性が強いことに基づいている。
【００７２】
図８において、８０１は符号化対象フレーム内の縦横２画素の符号化対象ブロック位置を示し、８０２は１フレーム前の参照フレーム内の縦６画素、横１０画素の探索範囲を示している。また、点線で囲んだ８０３の範囲は、符号化対象ブロック８０１からの距離が遠いブロックを候補ブロックから外した真の動ベクトル探索範囲であり、８０４〜８２８は上記動ベクトル探索範囲８０３内の全ての候補ベクトルに対するブロックである。また、○内の数字は、画素番号を示している。
【００７３】
図７および図８の例のように、動ベクトルを求めるための探索範囲を広げる代わりに、その範囲内の候補ブロックを選別することにより、候補ブロックの数を図４の例の場合と同じ２５個にしている。これにより、動き探索の演算量を増大することなく、探索範囲を広げて動ベクトルの検出精度を高めることができるようになる。
【００７４】
以下に、このような正方形または長方形でない動ベクトルの探索範囲にも対応可能な第２の実施形態による動ベクトル検出装置の構成を説明する。
図９は、第２の実施形態による動ベクトル検出装置の要部構成を示すブロック図であり、簡略化のため、図１０に示すように、符号化対象ブロックが縦横４画素、探索範囲が符号化対象ブロックを中心にして上下左右とも＋４画素の範囲（上下左右とも＋２画素としていた図５の場合よりも広い範囲）で、符号化対象ブロックからの距離が遠いブロックを候補から外した場合を想定している。
【００７５】
図１０において、１００１は符号化対象フレーム内の符号化対象ブロックを示し、１００２は１フレーム前の参照フレーム内における、符号化対象ブロックを中心にして上下左右とも＋４画素の広い探索範囲を示している。また、点線で囲んだ１００３の範囲は、上述の広い探索範囲１００２の中から符号化対象ブロック１００１からの距離が遠いブロックを候補から外した真の動ベクトル探索範囲を示し、１００４〜１０４４は上記動ベクトル探索範囲１００３内の全ての候補ベクトルに対するブロックを示している。なお、以下の説明で単に「探索範囲」と言うときは、距離が遠いブロックを候補から外した真の動ベクトル探索範囲１００３を言うものとする。
【００７６】
図９において、９０１ａおよび９０１ｂはフレームメモリ、９０２ａおよび９０２ｂは読み出し回路、９０３は差分絶対値計算回路、９０４はシフトレジスタ群、９０５はブロック合算回路、９０６は最小値決定／動ベクトル発生回路、９０７は制御回路である。
【００７７】
符号化対象フレームの画像は、第１のフレームメモリ９０１ａに格納され、その中から第１の読み出し回路９０２ａより出力されるアドレスに従って符号化対象ブロックの各画素値（以下、符号化対象ブロックデータという）が読み出されて差分絶対値計算回路９０３に供給される。また、上記符号化対象フレームより１フレーム前の参照フレームの画像は、第２のフレームメモリ９０１ｂに格納され、その中から第２の読み出し回路９０２ｂより出力されるアドレスに従って探索範囲内の各画素値（以下、探索データという）が読み出されてシフトレジスタ群９０４に供給される。
【００７８】
上記差分絶対値計算回路９０３の内部構成を図１１に示す。図１１において、１１０１ａ〜１１０１ｌ（エル）はマルチプレクサ（以下、ＭＰＸという）、１１０２ａ〜１１０２ｐは画素毎の差分絶対値計算回路（以下、ＰＤＣという）である。上記ＰＤＣ１１０２ａ〜１１０２ｐの位置は、実際の画面上の符号化対象ブロックの画素の位置、すなわち図１０の符号化対象ブロック１００１の位置に対応している。
【００７９】
上記ＭＰＸ１１０１ａ〜１１０１ｌの入力端子には、シフトレジスタ群９０４からの出力信号が複数入力され、その中から何れか１つが選択される。このＭＰＸ１１０１ａ〜１１０１ｌの出力である各選択信号は、各々対応して設けられたＰＤＣ１１０２ａ〜１１０２ｌ（エル）に入力される。これらのＭＰＸ１１０１ａ〜１１０１ｌは、制御回路９０７から与えられるコントロール信号に応じて切り換えられるようになっている。
【００８０】
１６個のＰＤＣ１１０２ａ〜１１０２ｐのうち、１２個のＰＤＣ１１０２ａ〜１１０２ｌは、各々に対応して設けられたＭＰＸ１１０１ａ〜１１０１ｌで選択されたシフトレジスタ群９０４からの出力信号（探索データ）と、第１のフレームメモリ９０１ａから読み出された符号化対象ブロックデータとの差分絶対値を画素毎に計算し、その計算結果をブロック合算回路９０５に供給する。
【００８１】
また、残り４個のＰＤＣ１１０２ｍ〜１１０２ｐの入力端子には、シフトレジスタ群９０４からの出力信号（探索データ）が直接入力されるようになっている。これら４個のＰＤＣ１１０２ｍ〜１１０２ｐは、シフトレジスタ群９０４から直接入力される探索データと、第１のフレームメモリ９０１ａから読み出された符号化対象ブロックデータとの差分絶対値を画素毎に計算し、その計算結果をブロック合算回路９０５に供給する。
【００８２】
さらに、上記ＰＤＣ１１０２ａ〜１１０２ｐの内部構成を図１２に示す。図１２において、１２０１、１２０３はシフトレジスタ、１２０２は計算回路である。第１のシフトレジスタ１２０１は、第１のフレームメモリ９０１ａから読み出された符号化対象ブロックデータの１画素分を保持する。
【００８３】
計算回路１２０２は、上記第１のシフトレジスタ１２０１に保持された１画素分の符号化対象ブロックデータＡと、ＭＰＸ１１０１ａ〜１１０１ｌまたはシフトレジスタ群９０４から入力された１画素分の探索データＢとの差分絶対値｜Ａ−Ｂ｜を計算し、その計算結果を第２のシフトレジスタ１２０３に保持する。第２のシフトレジスタ１２０３に保持された１画素分の差分絶対値は、ブロック合算回路９０５に出力される。
【００８４】
次に、シフトレジスタ群９０４の内部構成を図１３に示す。図１３において、１３０１〜１３４０はシフトレジスタであり、これら４０個のシフトレジスタ１３０１〜１３４０が直列に接続されている。この図１３の例では、３６個のシフトレジスタ１３０１〜１３３６が、１行内に１２個（探索範囲１００３の水平方向の最大数に対応）並ぶように３ラインにより構成され、その下のラインに残り４個のシフトレジスタ１３３７〜１３４０が設けられている。
【００８５】
シフトレジスタ群９０４がこのように構成されているので、各ラインでは、第２のフレームメモリ９０１ｂより１画素毎に読み出された探索データが、右から左へと順に送られていく。上から２番目以降の一番左にあるシフトレジスタ１３１３、１３２５、１３３７から出力された探索データは、それぞれその上のラインの右端に送られる。これにより、入力された探索データは、右下のシフトレジスタ１３４０から左上のシフトレジスタ１３０１へと順に送られていく。
【００８６】
さらに、探索データが順に送られていく過程で、各シフトレジスタ１３０１〜１３４０の出力が個別に取り出され、図１１に示した差分絶対値計算回路９０３内の各ＭＰＸ１１０１ａ〜１１０１ｌおよびＰＤＣ１１０２ｍ〜１１０２ｐの入力端子に供給されるようになっている。ここで、図１３中に各シフトレジスタ１３０１〜１３４０の後段に近い方の出力から順に付した１〜４０の番号は、図１１中に示した１〜４０の番号に対応しており、各シフトレジスタ１３０１〜１３４０の出力は、ＭＰＸ１１０１ａ〜１１０１ｌおよびＰＤＣ１１０２ｍ〜１１０２ｐの対応する番号の入力端子に入力される。
【００８７】
ブロック合算回路９０５は、各ＰＤＣ１１０２ａ〜１１０２ｐで計算された各画素毎の差分絶対値の合計を求め、その結果を最小値決定／動ベクトル発生回路９０６に供給する。最小値決定／動ベクトル発生回路９０６は、ブロック合算回路９０５から各候補ブロック毎に与えられる差分絶対値の合計値の中から最小のものを決定する。そして、その合計値が最小の候補ブロックを参照ブロックとして採用し、動ベクトルを発生する。
【００８８】
次に、上記のように構成した本実施形態による動ベクトル検出装置の動作について説明する。
まず、第１のフレームメモリ９０１ａから符号化対象ブロックデータが差分絶対値計算回路９０３に入力され、各画素のデータがそれぞれ対応するＰＤＣ１１０２ａ〜１１０２ｐ中の第１のシフトレジスタ１２０１に保持される。この符号化対象ブロックデータは、同一のブロックの処理期間中はそのまま第１のシフトレジスタ１２０１に保持される。
【００８９】
なお、第１のフレームメモリ９０１ａからの符号化対象ブロックデータの入力は、以下に述べる探索データの入力において、最初の候補ブロックに対する探索データがすべてシフトレジスタ群９０４に入力されるまでに完了していれば良い。
【００９０】
次に、第２のフレームメモリ９０１ｂから探索データがシフトレジスタ群９０４に入力される。ここでは、図１０に示した探索範囲１００３内のデータを、水平方向の１ライン毎に上から順番に、かつ同一ラインでは左から右へと１画素ずつ読み出し、シフトレジスタ群９０４に入力する。すなわち、図１０に示した１〜１０４の画素番号順に入力する。
【００９１】
ここで、このような探索データの入力処理を画素番号１〜１０４まで続けたときのシフトレジスタ群９０４の状態遷移の様子を図１４に示す。
図１４において、四角の各枡は、図１３における各シフトレジスタ１３０１〜１３４０に対応している。枡内の斜線で区切られた上側の数字は、各シフトレジスタの番号を示し、同じく下側の数字は、入力された探索データの画素番号を示している。
【００９２】
すなわち、図１１および図１３に示したように、入力段に近い４つのシフトレジスタ１３３７〜１３４０の出力は、各々ＰＤＣ１１０２ｍ〜１１０２ｐに接続されており、これらに有効な探索データ（探索範囲１００３内の候補ブロック１００４〜１０４４として採用可能なブロックの探索データ）が保持されたときの状態を、図１４の１４０１〜１４０９に示している。
【００９３】
これを図１０との対応で説明すると、候補ブロック１００４に対する計算を行える状態が１４０１の状態であり、候補ブロック１００５に対する計算を行える状態が１４０２の状態である。以下、各候補ブロック１００８、１０１３、１０２０、１０２９、１０３６、１０４１、１０４４に対する計算を行える状態が各々１４０３、１４０４、１４０５、１４０６、１４０７、１４０８、１０４９の状態である。
【００９４】
また、図１４において太枠で括った４つの連続する枡内のシフトレジスタは、水平方向に連続する４つのＰＤＣ、すなわち、ＰＤＣ１１０２ａ〜１１０２ｄ，１１０２ｅ〜１１０２ｈ，１１０２ｉ〜１１０２ｌ，１１０２ｍ〜１１０２ｐに各々入力される探索データを保持するシフトレジスタを示している。例えば、１４０１の状態では、シフトレジスタ１３１６〜１３１９，１３２１〜１３２４，１３２８〜１３３１，１３３７〜１３４０から、画素番号１〜４，６〜９，１３〜１６，２２〜２５の探索データが各ＰＤＣ１１０２ａ〜１１０２ｐに入力されることを示している。
【００９５】
この図１４から明らかなように、４つのＰＤＣ１１０２ｍ〜１１０２ｐに入力される探索データを保持するシフトレジスタは、図１３の入力段に近い４つのシフトレジスタ１３３７〜１３４０で固定である（そのためＭＰＸは対応して設けられていない）。これに対して、それ以外のＰＤＣ１１０２ａ〜１１０２ｌに入力される探索データを保持するシフトレジスタは、残りの３６個のシフトレジスタ１３０１〜１３３６の中の何れかであり、固定ではない（そのためにＭＰＸ１１０１ａ〜１１０１ｌが対応して設けられている）。
【００９６】
すなわち、第２のフレームメモリ９０１ｂから探索データを１画素毎に読み出し、それをシフトレジスタ群９０４に順次入力していくと、画素番号１〜２５の２５個の探索データを読み出した時点で、図１４の１４０１の状態となる。この時点で候補ブロック１００４に対する差分絶対値の計算を行える探索データが全て揃い、例えばＰＤＣ１１０２ａ〜１１０２ｄに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３１６〜１３１９となる。
【００９７】
したがって、制御回路９０７は、ＭＰＸ１１０１ａの出力としてシフトレジスタ１３１６からの出力（番号１６の出力）を選択するように、コントロール信号を発生する。また、ＭＰＸ１１０１ｂ〜１１０１ｄの出力としてシフトレジスタ１３１７〜１３１９からの出力（番号１７〜１９の出力）を各々選択するように、コントロール信号を発生する。
【００９８】
また、この図１４の１４０１の状態では、ＰＤＣ１１０２ｅ〜１１０２ｈに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３２１〜１３２４となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｅ〜１１０１ｈの出力としてシフトレジスタ１３２１〜１３２４からの出力（番号２１〜２４の出力）を各々選択するように、コントロール信号を発生する。
【００９９】
さらに、ＰＤＣ１１０２ｉ〜１１０２ｌに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３２８〜１３３１となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｉ〜１１０１ｌの出力としてシフトレジスタ１３２８〜１３３１からの出力（番号２８〜３１の出力）を各々選択するように、コントロール信号を発生する。
【０１００】
このとき、各ＰＤＣ１１０２ａ〜１１０２ｐ内の計算回路１２０２で符号化対象ブロックデータと探索データとの差分絶対値が各画素毎に計算され、その結果が第２のシフトレジスタ１２０３に保持される。これらの差分絶対値はブロック合算回路９０５に入力されて合算されることにより、ブロック単位の差分絶対値の合計を得る。こうして得られたブロック単位の差分絶対値の合計は、最小値決定／動ベクトル発生回路９０６に入力され、図示しない内部のレジスタに保持される。
【０１０１】
次の９クロック間（画素番号２６から９画素分の探索データが新たに入力される間、すなわち、図１４の１４０１の状態から１４０２の状態へ遷移するまでの間）は差分絶対値の計算が行われないので、ＭＰＸ１１０１ａ〜１１０１ｌの選択状態は不問（ドントケア）であるが、１４０２の状態になると、次の候補ブロック１００５に対する差分絶対値の計算を行える探索データが全て揃い、例えばＰＤＣ１１０２ａ〜１１０２ｄに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３１０〜１３１３となる。
【０１０２】
したがって、制御回路９０７は、ＭＰＸ１１０１ａの出力としてシフトレジスタ１３１０からの出力（番号１０の出力）を選択するように、コントロール信号を発生する。また、ＭＰＸ１１０１ｂ〜１１０１ｄの出力としてシフトレジスタ１３１１〜１３１３からの出力（番号１１〜１３の出力）を各々選択するように、コントロール信号を発生する。
【０１０３】
また、この図１４の１４０２の状態では、ＰＤＣ１１０２ｅ〜１１０２ｈに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３１７〜１３２０となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｅ〜１１０１ｈの出力としてシフトレジスタ１３１７〜１３２０からの出力（番号１７〜２０の出力）を各々選択するように、コントロール信号を発生する。
【０１０４】
さらに、ＰＤＣ１１０２ｉ〜１１０２ｌに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３２６〜１３２９となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｉ〜１１０１ｌの出力としてシフトレジスタ１３２６〜１３２９からの出力（番号２６〜２９の出力）を各々選択するように、コントロール信号を発生する。
【０１０５】
この場合も同様にして、各ＰＤＣ１１０２ａ〜１１０２ｐ内の計算回路１２０２およびブロック合算回路９０５によりブロック単位の差分絶対値の合計が算出され、それが最小値決定／動ベクトル発生回路９０６に入力される。最小値決定／動ベクトル発生回路９０６では、今回入力された差分絶対値の合計と、前回図示しない内部のレジスタに保持された差分絶対値の合計とを大小比較し、値の小さい方を上記レジスタに保持し直す。この処理は、以降の全ての候補ブロックに対しても同様に行う。
【０１０６】
これに続く２クロック間は、候補ブロック１００６、１００７に対する差分絶対値の計算を行える探索データが全て揃う。このとき各ＭＰＸ１１０１ａ〜１１０１ｌの選択状態はそのままでいいので、制御回路９０７は、コントロール信号の状態を上記候補ブロック１００５のときと同じ状態に保つようにする。
【０１０７】
次の１０クロック間は差分絶対値の計算が行われないので、ＭＰＸ１１０１ａ〜１１０１ｌの選択状態は不問であるが、１４０３の状態になると、次の候補ブロック１００８に対する差分絶対値の計算を行える探索データが全て揃い、例えばＰＤＣ１１０２ａ〜１１０２ｄに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３０５〜１３０８となる。
【０１０８】
したがって、制御回路９０７は、ＭＰＸ１１０１ａの出力としてシフトレジスタ１３０５からの出力（番号５の出力）を選択するように、コントロール信号を発生する。また、ＭＰＸ１１０１ｂ〜１１０１ｄの出力としてシフトレジスタ１３０６〜１３０８からの出力（番号６〜８の出力）を各々選択するように、コントロール信号を発生する。
【０１０９】
また、この図１４の１４０３の状態では、ＰＤＣ１１０２ｅ〜１１０２ｈに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３１４〜１３１７となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｅ〜１１０１ｈの出力としてシフトレジスタ１３１４〜１３１７からの出力（番号１４〜１７の出力）を各々選択するように、コントロール信号を発生する。
【０１１０】
さらに、ＰＤＣ１１０２ｉ〜１１０２ｌに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３２５〜１３２８となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｉ〜１１０１ｌの出力としてシフトレジスタ１３２５〜１３２８からの出力（番号２５〜２８の出力）を各々選択するように、コントロール信号を発生する。
【０１１１】
これに続く４クロック間は、候補ブロック１００９〜１０１２に対する差分絶対値の計算を行える探索データが全て揃う。このとき各ＭＰＸ１１０１ａ〜１１０１ｌの選択状態はそのままでいいので、制御回路９０７は、コントロール信号の状態を上記候補ブロック１００８のときと同じ状態に保つようにする。
【０１１２】
次の１０クロック間は差分絶対値の計算が行われないので、ＭＰＸ１１０１ａ〜１１０１ｌの選択状態は不問であるが、１４０４の状態になると、次の候補ブロック１０１３に対する差分絶対値の計算を行える探索データが全て揃い、例えばＰＤＣ１１０２ａ〜１１０２ｄに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３０２〜１３０５となる。
【０１１３】
したがって、制御回路９０７は、ＭＰＸ１１０１ａの出力としてシフトレジスタ１３０２からの出力（番号２の出力）を選択するように、コントロール信号を発生する。また、ＭＰＸ１１０１ｂ〜１１０１ｄの出力としてシフトレジスタ１３０３〜１３０５からの出力（番号３〜５の出力）を各々選択するように、コントロール信号を発生する。
【０１１４】
また、この図１４の１４０４の状態では、ＰＤＣ１１０２ｅ〜１１０２ｈに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３１３〜１３１６となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｅ〜１１０１ｈの出力としてシフトレジスタ１３１３〜１３１６からの出力（番号１３〜１６の出力）を各々選択するように、コントロール信号を発生する。
【０１１５】
さらに、ＰＤＣ１１０２ｉ〜１１０２ｌに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３２５〜１３２８となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｉ〜１１０１ｌの出力としてシフトレジスタ１３２５〜１３２８からの出力（番号２５〜２８の出力）を各々選択するように、コントロール信号を発生する。
【０１１６】
これに続く６クロック間は、候補ブロック１０１４〜１０１９に対する差分絶対値の計算を行える探索データが全て揃う。このとき各ＭＰＸ１１０１ａ〜１１０１ｌの選択状態はそのままでいいので、制御回路９０７は、コントロール信号の状態を上記候補ブロック１０１３のときと同じ状態に保つようにする。
【０１１７】
次の１０クロック間は差分絶対値の計算が行われないので、ＭＰＸ１１０１ａ〜１１０１ｌの選択状態は不問であるが、１４０５の状態になると、次の候補ブロック１０２０に対する差分絶対値の計算を行える探索データが全て揃い、例えばＰＤＣ１１０２ａ〜１１０２ｄに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３０１〜１３０４となる。
【０１１８】
したがって、制御回路９０７は、ＭＰＸ１１０１ａの出力としてシフトレジスタ１３０１からの出力（番号１の出力）を選択するように、コントロール信号を発生する。また、ＭＰＸ１１０１ｂ〜１１０１ｄの出力としてシフトレジスタ１３０２〜１３０４からの出力（番号２〜４の出力）を各々選択するように、コントロール信号を発生する。
【０１１９】
また、この図１４の１４０５の状態では、ＰＤＣ１１０２ｅ〜１１０２ｈに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３１３〜１３１６となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｅ〜１１０１ｈの出力としてシフトレジスタ１３１３〜１３１６からの出力（番号１３〜１６の出力）を各々選択するように、コントロール信号を発生する。
【０１２０】
さらに、ＰＤＣ１１０２ｉ〜１１０２ｌに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３２５〜１３２８となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｉ〜１１０１ｌの出力としてシフトレジスタ１３２５〜１３２８からの出力（番号２５〜２８の出力）を各々選択するように、コントロール信号を発生する。
【０１２１】
これに続く８クロック間は、候補ブロック１０２１〜１０２８に対する差分絶対値の計算を行える探索データが全て揃う。このとき各ＭＰＸ１１０１ａ〜１１０１ｌの選択状態はそのままでいいので、制御回路９０７は、コントロール信号の状態を上記候補ブロック１０２０のときと同じ状態に保つようにする。
【０１２２】
次の１１クロック間は差分絶対値の計算が行われないので、ＭＰＸ１１０１ａ〜１１０１ｌの選択状態は不問であるが、１４０６の状態になると、次の候補ブロック１０２９に対する差分絶対値の計算を行える探索データが全て揃い、例えばＰＤＣ１１０２ａ〜１１０２ｄに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３０２〜１３０５となる。
【０１２３】
したがって、制御回路９０７は、ＭＰＸ１１０１ａの出力としてシフトレジスタ１３０２からの出力（番号２の出力）を選択するように、コントロール信号を発生する。また、ＭＰＸ１１０１ｂ〜１１０１ｄの出力としてシフトレジスタ１３０３〜１３０５からの出力（番号３〜５の出力）を各々選択するように、コントロール信号を発生する。
【０１２４】
また、この図１４の１４０６の状態では、ＰＤＣ１１０２ｅ〜１１０２ｈに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３１４〜１３１７となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｅ〜１１０１ｈの出力としてシフトレジスタ１３１４〜１３１７からの出力（番号１４〜１７の出力）を各々選択するように、コントロール信号を発生する。
【０１２５】
さらに、ＰＤＣ１１０２ｉ〜１１０２ｌに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３２６〜１３２９となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｉ〜１１０１ｌの出力としてシフトレジスタ１３２６〜１３２９からの出力（番号２６〜２９の出力）を各々選択するように、コントロール信号を発生する。
【０１２６】
これに続く６クロック間は、候補ブロック１０３０〜１０３５に対する差分絶対値の計算を行える探索データが全て揃う。このとき各ＭＰＸ１１０１ａ〜１１０１ｌの選択状態はそのままでいいので、制御回路９０７は、コントロール信号の状態を上記候補ブロック１０２９のときと同じ状態に保つようにする。
【０１２７】
次の９クロック間は差分絶対値の計算が行われないので、ＭＰＸ１１０１ａ〜１１０１ｌの選択状態は不問であるが、１４０７の状態になると、次の候補ブロック１０３６に対する差分絶対値の計算を行える探索データが全て揃い、例えばＰＤＣ１１０２ａ〜１１０２ｄに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３０５〜１３０８となる。
【０１２８】
したがって、制御回路９０７は、ＭＰＸ１１０１ａの出力としてシフトレジスタ１３０５からの出力（番号５の出力）を選択するように、コントロール信号を発生する。また、ＭＰＸ１１０１ｂ〜１１０１ｄの出力としてシフトレジスタ１３０６〜１３０８からの出力（番号６〜８の出力）を各々選択するように、コントロール信号を発生する。
【０１２９】
また、この図１４の１４０７の状態では、ＰＤＣ１１０２ｅ〜１１０２ｈに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３１７〜１３２０となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｅ〜１１０１ｈの出力としてシフトレジスタ１３１７〜１３２０からの出力（番号１７〜２０の出力）を各々選択するように、コントロール信号を発生する。
【０１３０】
さらに、ＰＤＣ１１０２ｉ〜１１０２ｌに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３２８〜１３３１となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｉ〜１１０１ｌの出力としてシフトレジスタ１３２８〜１３３１からの出力（番号２８〜３１の出力）を各々選択するように、コントロール信号を発生する。
【０１３１】
これに続く４クロック間は、候補ブロック１０３７〜１０４０に対する差分絶対値の計算を行える探索データが全て揃う。このとき各ＭＰＸ１１０１ａ〜１１０１ｌの選択状態はそのままでいいので、制御回路９０７は、コントロール信号の状態を上記候補ブロック１０３６のときと同じ状態に保つようにする。
【０１３２】
次の７クロック間は差分絶対値の計算が行われないので、ＭＰＸ１１０１ａ〜１１０１ｌの選択状態は不問であるが、１４０８の状態になると、次の候補ブロック１０４１に対する差分絶対値の計算を行える探索データが全て揃い、例えばＰＤＣ１１０２ａ〜１１０２ｄに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３１０〜１３１３となる。
【０１３３】
したがって、制御回路９０７は、ＭＰＸ１１０１ａの出力としてシフトレジスタ１３１０からの出力（番号１０の出力）を選択するように、コントロール信号を発生する。また、ＭＰＸ１１０１ｂ〜１１０１ｄの出力としてシフトレジスタ１３１１〜１３１３からの出力（番号１１〜１３の出力）を各々選択するように、コントロール信号を発生する。
【０１３４】
また、この図１４の１４０８の状態では、ＰＤＣ１１０２ｅ〜１１０２ｈに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３２１〜１３２４となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｅ〜１１０１ｈの出力としてシフトレジスタ１３２１〜１３２４からの出力（番号２１〜２４の出力）を各々選択するように、コントロール信号を発生する。
【０１３５】
さらに、ＰＤＣ１１０２ｉ〜１１０２ｌに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３３０〜１３３３となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｉ〜１１０１ｌの出力としてシフトレジスタ１３３０〜１３３３からの出力（番号３０〜３３の出力）を各々選択するように、コントロール信号を発生する。
【０１３６】
これに続く２クロック間は、候補ブロック１０４２，１０４３に対する差分絶対値の計算を行える探索データが全て揃う。このとき各ＭＰＸ１１０１ａ〜１１０１ｌの選択状態はそのままでいいので、制御回路９０７は、コントロール信号の状態を上記候補ブロック１０４１のときと同じ状態に保つようにする。
【０１３７】
次の５クロック間は差分絶対値の計算が行われないので、ＭＰＸ１１０１ａ〜１１０１ｌの選択状態は不問であるが、１４０９の状態になると、次の候補ブロック１０４４に対する差分絶対値の計算を行える探索データが全て揃い、例えばＰＤＣ１１０２ａ〜１１０２ｄに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３１６〜１３１９となる。
【０１３８】
したがって、制御回路９０７は、ＭＰＸ１１０１ａの出力としてシフトレジスタ１３１６からの出力（番号１６の出力）を選択するように、コントロール信号を発生する。また、ＭＰＸ１１０１ｂ〜１１０１ｄの出力としてシフトレジスタ１３１７〜１３１９からの出力（番号１７〜１９の出力）を各々選択するように、コントロール信号を発生する。
【０１３９】
また、この図１４の１４０９の状態では、ＰＤＣ１１０２ｅ〜１１０２ｈに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３２５〜１３２８となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｅ〜１１０１ｈの出力としてシフトレジスタ１３２５〜１３２８からの出力（番号２５〜２８の出力）を各々選択するように、コントロール信号を発生する。
【０１４０】
さらに、ＰＤＣ１１０２ｉ〜１１０２ｌに入力される探索データを保持するシフトレジスタは、シフトレジスタ１３３２〜１３３５となる。したがって、制御回路９０７は、ＭＰＸ１１０１ｉ〜１１０１ｌの出力としてシフトレジスタ１３３２〜１３３５からの出力（番号３２〜３５の出力）を各々選択するように、コントロール信号を発生する。
【０１４１】
以上により、全ての候補ブロック１００４〜１０４４に対する差分絶対値の計算が行われる。このとき、最小値決定／動ベクトル発生回路９０６は、上述したような大小比較およびレジスタへの更新記憶の処理を各候補ブロックについて差分絶対値の合計が計算されるごとに行うことにより、最終的に各候補ブロックの中で最小の差分絶対値の合計を有する候補ブロックを参照ブロックとして決定する。そして、その決定した参照ブロックに対応する動ベクトルを発生する。
【０１４２】
なお、以上の動作においては、シフトレジスタ１３０９および１３３６からの出力は何れのＰＤＣ１１０２ａ〜１１０２ｐでも利用されない。よって、この場合はこれらのシフトレジスタ１３０９および１３３６の出力を個別に取り出すように構成する必要はない。
【０１４３】
以上に述べた一連の動作、すなわち、第１のフレームメモリ９０１ａからの符号化対象ブロックデータの読み出し、第２のフレームメモリ９０１ｂからの探索データの読み出し、各ＭＰＸ１１０１ａ〜１１０１ｌでの選択切り換え動作および最小値決定／動ベクトル発生回路９０６での処理は、制御回路９０７が制御している。
【０１４４】
制御回路９０７は、ハードウェア的に構成しても良いが、例えばＣＰＵ、ＲＯＭおよびＲＡＭなどから成るマイクロコンピュータにより構成することも可能である。この場合、上述のような一連の処理を行うシーケンスを記述したプログラムは上記ＲＯＭに記憶され、このＲＯＭに記憶されたプログラムに従ってＣＰＵが動作する。このＣＰＵの作業プログラムを格納したＲＯＭは、本発明の記録媒体を構成する。
【０１４５】
また、上記マイクロコンピュータに周辺インタフェースを介してハードディスクを接続し、このハードディスクに上記ＣＰＵの作業プログラムを格納するようにしても良い。このハードディスクには上記作業プログラムを外部から供給することが可能であり、この場合、ハードディスクや上記作業プログラムを供給するための手段、例えば上記作業プログラムを格納した記録媒体も、本発明の記録媒体を構成する。
【０１４６】
上記作業プログラムを格納するための記録媒体としては、ＲＯＭやハードディスクの他に、例えばフレキシブルディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード等を用いることができる。
【０１４７】
このように、本実施形態によれば、Ｈ．２６１やＨ．２６３、あるいはＭＰＥＧ１、２、４等の符号化方式において、動ベクトルを求めるための探索範囲を広げる一方で、その範囲内で差分絶対値計算に採用する候補ブロックを選別することにより、探索範囲を広げても演算量を増大することなく（演算処理に要する時間を増大することなく）、動ベクトルの検出精度を高め、情報量をより効率的に圧縮することができる。
【０１４８】
なお、以上の実施形態では、説明の簡略化のために符号化対象ブロックおよび候補ブロックが図１０に示す場合について述べたが、本発明はこれに限定されない。Ｈ．２６１やＨ．２６３、ＭＰＥＧ１、２、４では、実際には符号化対象ブロックは縦横１６画素で構成されるので、ＰＤＣ、ＭＰＸ等をその数に応じて構成すれば良い（この場合はＰＤＣが２５６個、ＭＰＸが２４０個）。また、候補ブロックを含む動ベクトル探索範囲の形状も、図１０のような菱形に限らず、任意の形状とすることが可能である。
【０１４９】
また、候補ブロックの存在する範囲が大きくなる場合には、探索データを入力する方向（上述の実施形態では水平方向）の最大数（上述の実施形態では１２）をｎ、符号化対象ブロックの探索データを入力する方向の大きさ（上述の実施形態では４）をａ、もう一方の大きさ（上述の実施形態では４）をｂとすると、
ｎ×（ｂ−１）＋ａ
で与えられる数のシフトレジスタから成るシフトレジスタ群を用意すれば良い。さらに、候補ブロックの選別方法が異なる場合には、ＭＰＸへの入力数と、ＭＰＸに入力されるシフトレジスタの出力、およびＭＰＸの制御をそれぞれに応じて構成すれば良い。
【図面の簡単な説明】
【０１５０】
【図１】本発明の第１の実施形態による動ベクトル検出装置の要部構成を示すブロック図である。
【図２】図１に示した画素毎の差分絶対値計算回路（ＰＤＣ）の構成図である。
【図３】動き補償フレーム間予測および動ベクトルを説明するための図である。
【図４】動ベクトルを検出する方法の１つであるブロックマッチング法を説明するための図である。
【図５】サブブロック単位の動ベクトルを説明するための図である。
【図６】サブブロック単位の探索範囲にオフセットを加えた場合の動ベクトル検出を説明するための図である。
【図７】本発明の第２の実施形態による動ベクトル検出装置の特徴を説明するための図である。
【図８】本発明の第２の実施形態による動ベクトル検出装置の特徴を説明するための図である。
【図９】本発明の第２の実施形態による動ベクトル検出装置の要部構成を示すブロック図である。
【図１０】本発明の第２の実施形態による動ベクトル検出装置によって行われるブロックマッチング法の一例を説明するための図である。
【図１１】図９に示した差分絶対値計算回路の構成図である。
【図１２】図１１に示した画素毎の差分絶対値計算回路（ＰＤＣ）の構成図である。
【図１３】図９に示したシフトレジスタ群の構成図である。
【図１４】探索データの入力処理を続けたときのシフトレジスタ群の状態遷移の様子を示す図である。
【符号の説明】
【０１５１】
１１ａ〜１１ｐ  ＰＤＣ
１２ａ〜１２ｇ  ＭＰＸ
１３ａ〜１３ｃ  ４段シフトレジスタ
１４ａ〜１４ｄ  サブブロック位置
１０１  差分絶対値計算回路
１０２ａ〜１０２ｄ  サブブロック合算回路
１０３  マクロブロック合算回路
１０４  最小値決定／動ベクトル発生回路
１０５ａ，１０５ｂ  フレームメモリ
１０６ａ，１０６ｂ  読み出し回路
１０７  制御回路
２０１〜２０３  シフトレジスタ
２０４  計算回路
９０１ａ，９０１ｂ  フレームメモリ
９０２ａ，９０２ｂ  読み出し回路
９０３  差分絶対値計算回路
９０４  シフトレジスタ群
９０５  ブロック合算回路
９０６  最小値決定／動ベクトル発生回路
９０７  制御回路
１１０２ａ〜１１０２ｐ  ＰＤＣ
１１０１ａ〜１１０１ｌ  ＭＰＸ
１２０１，１２０３  シフトレジスタ
１２０２  計算回路
１３０１〜１３４０  シフトレジスタ
【図１】
2007151169.tif 000003
【図２】
2007151169.tif 000004
【図３】
2007151169.tif 000005
【図４】
2007151169.tif 000006
【図５】
2007151169.tif 000007
【図６】
2007151169.tif 000008
【図７】
2007151169.tif 000009
【図８】
2007151169.tif 000010
【図９】
2007151169.tif 000011
【図１０】
2007151169.tif 000012
【図１１】
2007151169.tif 000013
【図１２】
2007151169.tif 000014
【図１３】
2007151169.tif 000015
【図１４】
2007151169.tif 000016