(57)【特許請求の範囲】
【請求項１】
現画像内の複数の画素からなる処理対象ブロックと、当該現画像に対して時間的に前となる前画像の所定の参照領域データ内の複数の画素からなる参照ブロックとの間で、ブロックマッチングを行い動きベクトルを検出する動きベクトル検出装置において、
前記処理対象ブロック、及び前記参照領域データのアドレスを生成する第１のアドレス生成部と、
前記第１のアドレス生成部により指示された参照領域データを保持する第１の記憶部と、
前記第１のアドレス生成部により指示された処理対象ブロックのデータを保持する第２の記憶部と、
前記第１の記憶部、及び前記第２の記憶部から出力するデータのアドレスを生成する第２のアドレス生成部と、
前記第１の記憶部より出力されたデータ、及び第２の記憶部より出力されたデータを用いて動きベクトルを検出する動きベクトル検出部とを具備し、
前記第２のアドレス生成部は、横方向の画素アドレスをカウントするロウカウンタと、
縦方向のアドレスをカウントするカラムカウンタと、
画素データのアドレスを保持するアドレス保持部とを有し、
前記カラムカウンタのカウント値のＬＳＢ（最下位ビット）の反転値を画素データのアドレスに加算することにより、前記参照ブロック及び前記処理対象ブロックの画像イメージに対する画素並びに対して市松模様となるようにサブサンプリングすることを特徴とする動きベクトル検出装置。
【請求項２】
請求項１に記載の動きベクトル検出装置において、
前記動きベクトル検出部は、前記第１の記憶部から出力されたデータ、及び第２の記憶部から出力されたデータより整数精度の動きベクトルを検出する整数精度動きベクトル検出部であることを特徴とする動きベクトル検出装置。
【請求項３】
請求項１に記載の動きベクトル検出装置において、
前記動きベクトル検出部は、前記第１の記憶部からの出力データを入力とし、少数精度の画素データを生成する補間画素生成部と、
前記補間画素生成部から出力されたデータ、及び第２の記憶部から出力されたデータより少数精度の動きベクトルを検出する少数精度動きベクトル検出部とからなることを特徴とする動きベクトル検出装置。
【請求項４】
請求項１に記載の動きベクトル検出装置において、
前記動きベクトル検出部は、前記第１の記憶部から出力されたデータ、及び第２の記憶部から出力されたデータより整数精度の動きベクトルを検出する整数精度動きベクトル検出部と、
前記第１の記憶部からの出力データを入力とし、少数精度の画素データを生成する補間画素生成部と、
前記補間画素生成部から出力されたデータ、及び第２の記憶部から出力されたデータより少数精度の動きベクトルを検出する少数精度動きベクトル検出部とからなることを特徴とする動きベクトル検出装置。
【請求項５】
現画像内の複数の画素からなる処理対象ブロックと、当該現画像に対して時間的に前となる前画像の所定の参照領域データ内の複数の画素からなる参照ブロックとの間で、ブロックマッチングを行い動きベクトルを検出する動きベクトル検出方法において、
前記処理対象ブロック、及び前記参照領域データのアドレスを生成する第１のアドレス生成ステップと、
前記第１のアドレス生成ステップにより指示された参照領域データを保持する第１の記憶ステップと、
前記第１のアドレス生成ステップにより指示された処理対象ブロックのデータを保持する第２の記憶ステップと、
前記保持された参照領域データ、及び処理対象ブロックのデータから出力する画素データのアドレスを生成する第２のアドレス生成ステップと、
前記参照領域データ、及び処理対象ブロックのデータを用いて動きベクトルを検出する動きベクトル検出ステップとを有し、
前記第２のアドレス生成ステップは、横方向の画素アドレスをカウントする第１のカウントステップと、
縦方向のアドレスをカウントする第２のカウントステップと、
画素データのアドレスを保持するアドレス保持ステップとを有し、
前記第２のカウントステップのカウント値のＬＳＢ（最下位ビット）の反転値を画素データのアドレスに加算することにより、前記参照ブロック及び前記処理対象ブロックの画像イメージに対する画素並びに対して市松模様となるようにサブサンプリングすることを特徴とする動きベクトル検出方法。
【請求項６】
請求項５に記載の動きベクトル検出方法において、
前記動きベクトル検出ステップは、前記参照領域データ、及び処理対象ブロックのデータを用いて整数精度の動きベクトルを検出する整数精度動きベクトル検出ステップであることを特徴とする動きベクトル検出方法。
【請求項７】
請求項５に記載の動きベクトル検出方法において、
前記動きベクトル検出ステップは、前記参照領域データを構成する画素データを入力とし、少数精度の画素データを生成する補間画素生成ステップと、
前記補間画素生成ステップから出力されたデータ、及び処理対象ブロックのデータを用いて少数精度の動きベクトルを検出する少数精度動きベクトル検出ステップとからなることを特徴とする動きベクトル検出方法。
【請求項８】
請求項５に記載の動きベクトル検出方法において、
前記動きベクトル検出ステップは、前記参照領域データ、及び処理対象ブロックのデータを用いて整数精度の動きベクトルを検出する整数精度動きベクトル検出ステップと、
前記参照領域データを構成する画素データを入力とし、少数精度の画素データを生成する補間画素生成ステップと、
前記補間画素生成ステップから出力されたデータ、及び処理対象ブロックのデータを用いて少数精度の動きベクトルを検出する少数精度動きベクトル検出ステップとからなることを特徴とする動きベクトル検出方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像圧縮処理に関するものであり、特に、画像通信を目的とした低ビットレート向けの規格であるＨ．２６１、Ｈ．２６３、ＭＰＥＧ４等に適用可能な動きベクトル検出処理に関するものである。
【０００２】
【従来の技術】
現在、Ｈ．２６１、Ｈ．２６３、ＭＰＥＧ４等、画像通信を目的とした低ビットレート向けの規格では、フレーム間の相互を用いた圧縮のために動きベクトルの検出を行う。この動きベクトル検出処理は、一般に、現画像内の複数の画素からなるブロックを処理対象とし、この処理対象ブロックが、当該現画像に対する時間的に前の画像のどの位置に存在するかをいわゆるブロックマッチング法により調べ、画像の動きの方向、及び量を示す動きベクトルを検出するものである。
【０００３】
図３１は、従来の一般的な動きベクトル検出処理を説明するための説明図である。図において、処理対象ブロックＴとは、ＮＸ×ＮＹ画素からなる現画像内の符号化の対象となるブロックであり、参照領域とは、処理対象ブロックＴと同一空間位置近傍で、且つ当該処理対象ブロックよりも大きい、ＭＸ×ＭＹ画素からなる前画像の探索領域である。また、参照ブロックＩとは、ＮＸ×ＮＹ画素からなる前記参照領域上の任意の位置におけるブロックである。
【０００４】
一般的な、ブロックマッチング法による動きベクトル検出は、処理対象ブロックＴと、参照領域内の参照ブロックＩとの比較を行い、処理対象ブロックＴと最もマッチングの取れている参照ブロックＩの位置を求める。その後、前記処理対象ブロックＴの位置と、前記参照領域内の最もマッチングが取れている参照ブロックＩの位置との間の距離、及び方向を動きベクトルとして検出する。なお、処理対象ブロックＴと参照ブロックＩとのマッチングは、以下に示す数式（１）に示すような、ブロックを構成する画素が有する画素値の差分の絶対値の和である絶対差分誤差和を用いることにより行われる。
【０００５】
絶対差分誤差和＝Σ｜Ｒｅｆ（Ｍｘ＋ｘ，Ｍｙ＋ｙ）−Ｓｒｃ（ｘ，ｙ）｜・・・（１）
ここで、数式（１）の式中のＲｅｆ（Ｍｘ＋ｘ，Ｍｙ＋ｙ）は、参照ブロックの画素位置を示し、Ｓｒｃ（ｘ，ｙ）は処理対象ブロックの画素位置を表わす。
また、より正確な動きベクトルを検出したい場合には、参照領域の画素データ間の位置における画素値を補間処理を行うことにより求め、当該位置について処理対象ブロックとのマッチングを行う場合もある。
【０００６】
【発明が解決しようとする課題】
前述した絶対差分誤差和の計算は、処理対象ブロックを構成するＮＸ×ＮＹ画素の画素値の差分の絶対値の和であり、同様の処理を参照領域内のすべての参照ブロックに行うことは、膨大な計算量が必要となる。
【０００７】
通常、ある探索位置における絶対差分誤差和の値が比較的大きな場合には、絶対差分誤差和の計算途中で既に最小の絶対差分誤差和の値を超えてしまう。そのため、当該探索領域の位置を動きベクトルを検出する探索位置の候補から除外できるにもかかわらず、無駄な演算を実行していたため、演算速度や消費電力の点においてロスが発生していた。
【０００８】
また、動きベクトルは、一般的に動きベクトルの探索を行った処理対象ブロックの周辺では、ほとんど変化が見られないことが多く、特に、高解像度の画像が要求されない場合においても、周辺ブロックに対しても同様に動きベクトルの探索が行われており、演算速度や消費電力の点においてロスが発生していた。
【０００９】
一方、このロスを解消する為に、専用演算機構を用いて演算する前に、汎用演算機構で変化の有無を調べてから探索を実行するか否かを決定する場合があるが、この場合は、汎用演算部に負荷を負わせてしまう。
【００１０】
また、一方、この負荷を解消するために、一回のみ絶対差分誤差和を算出する機能を専用演算部に持たせた場合、もし、変化が無く探索の必要が無いときは、改めて専用演算機構を動作させ、その結果を得るのは、演算速度、消費電力の点でロスが発生していた。
【００１１】
また、処理対象ブロックに対する参照ブロックの探索は、例えば、処理対象ブロックの周囲参照ブロックに対して絶対差分誤差和が最小となる方向に進めていく場合、一旦、探索した参照ブロックに対して、２重に探索する場合が有り、演算速度や消費電力の点においてロスが発生していた。
【００１２】
また、絶対差分誤差和は、ブロックを構成する全ての画素に対して、その画素値の差分の絶対値の和を求めることにより算出されるため、高解像度の映像が要求されない場合であっても必要以上の演算を行い、演算速度や消費電力の点においてロスが発生する。
【００１３】
また、このロスを解消するために、ブロックを構成する画素に対して、一列置き等にサブサンプリングを行い、演算量を軽減するものもあるが、この場合には、動きベクトル検出のために使用される画素データが読込んだ画素データのうちの一部となるため、せっかく読込んだ、動きベクトル検出に使用されない他の画素データを破棄することになり、消費電力の点でロスが発生する。
【００１４】
また、処理対象ブロックの位置が画像データの有効領域範囲の端の位置に来たとき、参照領域内には、動きベクトル探索を実行できない領域が混在しているため、この領域にデータを転送しても探索に活用されずに、消費電力の点でロスが発生していた。
【００１５】
また、近隣の処理対象ブロックの参照領域同士には、オーバーラップする領域が存在するため、各処理ブロックの探索毎に参照領域全体の画素データを本専用演算部に読み込むのは、演算速度、消費電力の点でロスが発生していた。
【００１６】
また、処理ブロックの位置が画像データの有効領域範囲の端に来たとき、動きベクトルの位置によっては、演算に使用する参照領域の画像データが有効領域範囲内から出てしまい、動きベクトル探索ができないという問題点を有していた。
【００１７】
また、補間処理を行い参照ブロックを構成する画素間の位置における画素値を求める場合には、一般に、参照ブロックを構成する画素データの読み出しを一方向の読み出し方向をもって、読み出していたため、たとえば、横方向に画素データを読み出したときには、縦方向の画素間の位置における画素値を求めるために、縦方向の補間処理に必要な画素が揃うまで、数サイクル待つことが必要となり、演算速度の点でロスが発生していた。
【００１８】
本発明は、前記問題点に鑑みてなされたものであり、動きベクトル検出処理の高速化、低電力化を図ることができる動きベクトル検出装置を提供することを目的とする。
【００１９】
【課題を解決するための手段】
前述した問題点を解決するために、本発明の請求項１に記載の動きベクトル検出装置は、現画像内の複数の画素からなる処理対象ブロックと、当該現画像に対して時間的に前となる前画像の所定の参照領域データ内の複数の画素からなる参照ブロックとの間で、ブロックマッチングを行い動きベクトルを検出する動きベクトル検出装置において、前記処理対象ブロック、及び前記参照領域データのアドレスを生成する第１のアドレス生成部と、前記第１のアドレス生成部により指示された参照領域データを保持する第１の記憶部と、前記第１のアドレス生成部により指示された処理対象ブロックのデータを保持する第２の記憶部と、前記第１の記憶部、及び前記第２の記憶部から出力するデータのアドレスを生成する第２のアドレス生成部と、前記第１の記憶部より出力されたデータ、及び第２の記憶部より出力されたデータを用いて動きベクトルを検出する動きベクトル検出部とを具備し、前記第２のアドレス生成部は、横方向の画素アドレスをカウントするロウカウンタと、縦方向のアドレスをカウントするカラムカウンタと、画素データのアドレスを保持するアドレス保持部とを有し、前記カラムカウンタのカウント値のＬＳＢ（最下位ビット）の反転値を画素データのアドレスに加算することにより、前記参照ブロック及び前記処理対象ブロックの画像イメージに対する画素並びに対して市松模様となるようにサブサンプリングすることを特徴とするものである。
【００２６】
また、本発明の請求項２に記載の動きベクトル検出装置は、請求項１に記載の動きベクトル検出装置において、前記動きベクトル検出部は、前記第１の記憶部から出力されたデータ、及び第２の記憶部から出力されたデータより整数精度の動きベクトルを検出する整数精度動きベクトル検出部であることを特徴とするものである。
【００２７】
また、本発明の請求項３に記載の動きベクトル検出装置は、請求項１に記載の動きベクトル検出装置において、前記動きベクトル検出部は、前記第１の記憶部からの出力データを入力とし、少数精度の画素データを生成する補間画素生成部と、前記補間画素生成部から出力されたデータ、及び第２の記憶部から出力されたデータより少数精度の動きベクトルを検出する少数精度動きベクトル検出部とからなることを特徴とするものである。
【００２８】
また、本発明の請求項４に記載の動きベクトル検出装置は、請求項１に記載の動きベクトル検出装置において、前記動きベクトル検出部は、前記第１の記憶部から出力されたデータ、及び第２の記憶部から出力されたデータより整数精度の動きベクトルを検出する整数精度動きベクトル検出部と、前記第１の記憶部からの出力データを入力とし、少数精度の画素データを生成する補間画素生成部と、前記補間画素生成部から出力されたデータ、及び第２の記憶部から出力されたデータより少数精度の動きベクトルを検出する少数精度動きベクトル検出部とからなることを特徴とするものである。
【００４２】
また、本発明の請求項５に記載の動きベクトル検出方法は、現画像内の複数の画素からなる処理対象ブロックと、当該現画像に対して時間的に前となる前画像の所定の参照領域データ内の複数の画素からなる参照ブロックとの間で、ブロックマッチングを行い動きベクトルを検出する動きベクトル検出方法において、前記処理対象ブロック、及び前記参照領域データのアドレスを生成する第１のアドレス生成ステップと、前記第１のアドレス生成ステップにより指示された参照領域データを保持する第１の記憶ステップと、前記第１のアドレス生成ステップにより指示された処理対象ブロックのデータを保持する第２の記憶ステップと、前記保持された参照領域データ、及び処理対象ブロックのデータから出力する画素データのアドレスを生成する第２のアドレス生成ステップと、前記参照領域データ、及び処理対象ブロックのデータを用いて動きベクトルを検出する動きベクトル検出ステップとを有し、前記第２のアドレス生成ステップは、横方向の画素アドレスをカウントする第１のカウントステップと、縦方向のアドレスをカウントする第２のカウントステップと、画素データのアドレスを保持するアドレス保持ステップとを有し、前記第２のカウントステップのカウント値のＬＳＢ（最下位ビット）の反転値を画素データのアドレスに加算することにより、前記参照ブロック及び前記処理対象ブロックの画像イメージに対する画素並びに対して市松模様となるようにサブサンプリングすることを特徴とするものである。
【００４９】
また、本発明の請求項６に記載の動きベクトル検出方法は、請求項５に記載の動きベクトル検出方法において、前記動きベクトル検出ステップは、前記参照領域データ、及び処理対象ブロックのデータを用いて整数精度の動きベクトルを検出する整数精度動きベクトル検出ステップであることを特徴とするものである。
【００５０】
また、本発明の請求項７に記載の動きベクトル検出方法は、請求項５に記載の動きベクトル検出方法において、前記動きベクトル検出ステップは、前記参照領域データを構成する画素データを入力とし、少数精度の画素データを生成する補間画素生成ステップと、前記補間画素生成ステップから出力されたデータ、及び処理対象ブロックのデータを用いて少数精度の動きベクトルを検出する少数精度動きベクトル検出ステップとからなることを特徴とするものである。
【００５１】
また、本発明の請求項８に記載の動きベクトル検出方法は、請求項５に記載の動きベクトル検出方法において、前記動きベクトル検出ステップは、前記参照領域データ、及び処理対象ブロックのデータを用いて整数精度の動きベクトルを検出する整数精度動きベクトル検出ステップと、前記参照領域データを構成する画素データを入力とし、少数精度の画素データを生成する補間画素生成ステップと、前記補間画素生成ステップから出力されたデータ、及び処理対象ブロックのデータを用いて少数精度の動きベクトルを検出する少数精度動きベクトル検出ステップとからなることを特徴とするものである。
【００６４】
【発明の実施の形態】
（実施の形態１）
以下に、本発明の実施の形態１による動きベクトル検出装置について、図１から図４を用いて説明する。
図１は、本発明の実施の形態１による動きベクトル検出装置の構成を示すブロック図である。図１において、動きベクトル検出装置は、データ保持部１０１と、第１のアドレス生成部１０２と、第１の記憶部１０３と、第２の記憶部１０４と、第２のアドレス生成部１０５と、整数精度動きベクトル検出部１０６とからなる。
【００６５】
データ保持部１０１は、画像データを保持する大容量メモリであり、第１のアドレス生成部の指示に従い、参照領域のデータを第１の記憶部に、処理対象ブロックのデータを第２の記憶部に出力する。
【００６６】
第１のアドレス生成部１０２は、データ保持部１０１内に保持されている画像データより、符号化対象となるデータである処理対象ブロックのデータ、及び処理対象ブロックとブロックマッチングを行なう参照ブロックの探索を行う領域である参照領域データのアドレスを生成する。
【００６７】
なお、以下に説明する本発明の動きベクトル検出装置において、処理対象ブロック、及び参照ブロックは複数の画素群からなる画像単位であり、ここでは、例えば、１ブロックが縦１６画素、横１６画素の全２５６画素により構成されるものを例にとって説明する。
【００６８】
第１の記憶部１０３は、第１のアドレス生成部１０２により指示された参照領域データを保持する格納領域であり、第２のアドレス生成部１０５の指示に従い、処理対象ブロックとのブロックマッチングを行う参照ブロックの画素データを出力する。
【００６９】
なお、以下に説明する本発明の動きベクトル検出装置において、動きベクトル検出装置が検出を行なう動きベクトルの範囲を−１６〜＋１５．５とし、当該動きベクトルの範囲に対応する探索領域として、第１の記憶部１０３が保持する参照領域の画素データは、処理対象ブロック位置を中心とした縦４８画素、横４８画素により構成さるものを例にとって説明する。
【００７０】
第２の記憶部１０４は、第１のアドレス生成部１０２により指示された処理対象ブロックのデータを保持する格納領域であり、第２のアドレス生成部１０５の指示に従い、処理対象ブロックの画素データを出力する。
第２のアドレス生成部１０５は、第１の記憶部１０３、及び第２の記憶部１０４から出力する画素データのアドレスを生成するとともに、探索処理が終了した旨を整数精度動きベクトル検出部１０６に出力する。
【００７１】
なお、この探索処理とは、処理対象ブロックと絶対差分誤差が最小となる参照ブロックを参照領域内から探索する処理であり、この探索処理は、特定の個数の参照ブロックとの比較が終了することにより、又は探索領域範囲内の全ての参照ブロックとの比較が終了すること、或は、処理対象ブロックに対して、特定位置の参照ブロックの絶対差分誤差がその上下左右に位置する参照ブロックの絶対差分誤差よりも小さることが検出されること等により終了する。
【００７２】
整数精度動きベクトル検出部１０６は、第１の記憶部１０３から出力される参照ブロックの画素データ、及び第２の記憶部１０４から出力される処理対象ブロックの画素データを用いて、処理対象ブロックに対する参照ブロックの絶対差分誤差和を計算し、当該絶対差分誤差和が最小となる参照ブロックを探索して、動きベクトル検出する。
【００７３】
次に、本発明の実施の形態１による動きベクトル検出装置の特徴部分である第２のアドレス生成部１０５について詳細に説明する。
以下に、第２のアドレス生成部１０５による画素データのアドレス生成処理について図２から図４を用いて説明することにする。なお、本実施の形態１による第２のアドレス生成部１０５は、画像イメージにおける画素の並びに対して市松模様にサンプリングを行なうものである。
【００７４】
図２は、本発明の実施の形態１による第２のアドレス生成部１０５の構成を示すブロック図であり、図３は、本発明の実施の形態１による第２のアドレス生成部１０５がサブサンプリングを行うマクロブロックの一例を示す図である。なお、図３に示すように各画素のアドレスは、初期値を０として、０から２５５までのアドレス値が設定されている。
【００７５】
図２において、第２のアドレス生成部１０５は、カラムカウンタ１１と、ロウカウンタ１２と、アドレス保持部１３と、加算器１４とからなる。
ロウカウンタ１１、及びカラムカウンタ１２は、ともにダウンカウンタであり、図３に示すように、ロウカウンタ値、及びカラムカウンタ値がそれぞれ設定されている。また、ロウカウンタ１１は、第２のアドレス生成部１０５から画素データのアドレスが出力される毎にデクリメントされる。一方、カラムカウンタ１２は、ロウカウンタ１１が０になった時にデクリメントされるものであり、また、ロウカウンタ１１がデクリメントされる毎に、加算器１４に対してカラムカウンタ値のＬＳＢ（最下位ビット）を反転して出力する。
【００７６】
アドレス保持部１３は、アドレス値（以下、予め保持するアドレス値を初期アドレス値と称する。）を保持し、ロウカウンタ１１がデクリメントされると、アドレス保持部１３が保持する初期アドレス値にプラス２をしたアドレス値を加算器１４に出力するとともに、アドレス保持部１３が保持する初期アドレス値を、加算器１４に出力したアドレス値に更新する。なお、アドレス保持部１３が保持する初期アドレス値の初期値は０である。
【００７７】
加算器１４は、アドレス保持部１３から出力されたアドレス値に、カラムカウンタ１２から出力されたカラムカウンタ値のＬＳＢ（最下位ビット）の反転値を加算して画素データアドレス値として出力する。すなわち、カラムカウンタ１２から出力されたカラムカウンタ１２のＬＳＢ（最下位ビット）が「０」、すなわちカラムカウンタ値が偶数の場合には、アドレス保持部１３から出力されたアドレス値に「０」を反転した「１」を加算し、画素データアドレス値として出力する。一方、カラムカウンタ１２から出力されたカラムカウンタ１２のＬＳＢ（最下位ビット）が「１」、すなわちカラムカウンタ値が奇数の場合には、アドレス保持部１３から出力されたアドレス値に、「１」を反転した「０」を加算し、画素データアドレス値として出力する。
【００７８】
次に、第２のアドレス生成部１０５の動作について図３、図４を用いて説明する。
図４は、本発明の実施の形態１による第２のアドレス生成部１０５の画素データのアドレス生成処理を説明するためのフローチャートである。
ロウカウンタ１１がデクリメントされる（ステップＳ１０１）と、カラムカウンタ１２は、ロウカウンタ値が「０」であるか否かの判断を行なう（ステップＳ１０２）。
【００７９】
この時、ロウカウンタ値が「０」である場合には、カラムカウンタ１２をデクリメント（ステップＳ１０３）し、デクリメントしたカラムカウンタ値のＬＳＢ（最下位ビット）の反転値を加算器１４に出力する（ステップＳ１０４）。
また、ロウカウンタ値が「０」でない場合には、カラムカウンタ１２のカラムカウンタ値の変更を行わず、カラムカウンタ値のＬＳＢ（最下位ビット）の反転値を加算部１４に出力する（ステップＳ１０４）。
【００８０】
一方、アドレス保持部１３は、ロウカウンタ１１がデクリメントされる（ステップＳ１０１）と、保持された初期アドレス値に２を加算した値を加算器１４に出力するとともに、アドレス保持部１３が保持する初期アドレス値を、アドレス保持部１３から出力されたアドレス値、すなわちアドレス保持部１３が保持していた初期アドレス値に２を加えたものに更新する（ステップ１０５）。
【００８１】
次に、加算器１４は、アドレス保持部１３から出力されたアドレス値に、ステップＳ１０４によりカラムカウンタ１２から出力されたカラムカウンタ値のＬＳＢ（最下位ビット）の反転値を加算して（ステップＳ１０６）、画素データアドレス値として出力する（ステップＳ１０７）。
【００８２】
このように、ロウカウンタ１１、カラムカウンタ１２、アドレス保持部１３、加算器１４を備えることにより、画像イメージにおける画素並びに対して市松模様に画素データの位置をサブサンプリングすることができ、マクロブロックを構成する全ての画素に対して絶対差分誤差和を求める場合と比較して、比較的高圧縮の場合には同等程度の精度を得ることができ、かつ絶対差分誤差和を求めるために必要とする計算量を、半分にすることができ、処理速度の向上や消費電力の削減につながる。
【００８３】
また、水平成分、或は垂直成分のみをサブサンプリングし、データの処理量を軽減するものに比べ、画素分布による影響を受けることが少ない。また、水平方向、及び垂直方向に同じ比率によりサブサンプルを行い、データの処理量を軽減するものに比べ、正確に絶対差分誤差和を求めることができ、精度よく動きベクトルを求めることができる。
【００８４】
なお、本実施の形態１では、第２のアドレス生成部１０５が画像イメージにおける画素並びに対して市松模様に画素データの位置をサンプリングするものについて説明したが、これに限定されず、本実施の形態１による第２のアドレス生成部１０５によれば、ロウカウンタ１１、カラムカウンタ１２、アドレス保持部１３の設定値を任意に変更することにより、画像イメージにおける画素並びに対して自由にサブサンプリングを行うことができる。
【００８５】
（実施の形態２）
以下、本発明の実施の形態２による動きベクトル検出装置について、図５から図７を用いて説明する。
図５は、本発明の実施の形態２による動きベクトル検出装置の構成の一例を示すブロック図である。図５において、動きベクトル検出装置は、データ保持部１０１と、第１のアドレス生成部１０２と、第１の記憶部１０３と、第２の記憶部１０４と、第２のアドレス生成部１０５と、整数精度動きベクトル検出部２０６とからなる。
【００８６】
なお、本実施の形態２による動きベクトル検出装置は、整数精度動きベクトル検出部２０６に特徴を有する点においてのみ、前述した実施の形態１による動きベクトル検出装置と相違する。そのため、前述した実施の形態１による動きベクトル検出装置と同様の構成要素については同じ符号を付し、説明を省略する。
【００８７】
以下に、本発明の実施の形態２による動きベクトル検出装置の特徴部分である、整数精度動きベクトル検出部２０６について図６、図７を用いて説明する。
図６は、本発明の実施の形態２による整数精度動きベクトル検出部２０６の構成を示すブロック図である。図６において、整数精度動きベクトル検出部２０６は、絶対差分誤差値計算部２１と、減算器２２と、カウンタ２３と、絶対差分誤差和計算部２４と、動きベクトル生成部２５とからなる。
【００８８】
絶対差分誤差値計算部２１は、入力された処理対象ブロックの画素データと、当該処理対象ブロックの画素データに対応する参照ブロックの画素データとの画素値の差分の絶対値を計算し、当該差分の絶対値を絶対差分誤差値として減算器２２に出力する。
【００８９】
減算器２２は、絶対差分誤差値計算部２１により絶対差分誤差値の出力がある毎に、絶対差分誤差和計算部２４が保持する閾値から絶対差分誤差値を、順次、減算して行く。なお、以下の説明では、減算器２２による減算が開始される前の閾値を初期閾値と称する。
【００９０】
カウンタ２３は、特定のカウント数を有するアップカウンタであり、減算器２２によって、閾値からの絶対差分誤差値が減算される毎にカウンタ２３をインクリメントする。なお、本実施の形態２によるカウンタ２３は、０から１２７までをカウント有する。これは、第２のアドレス生成部１０５により、処理対象とする１６画素×１６画素のマクロブロックに対して市松模様にサンプリングを行った画素データを用いて、整数精度動きベクトル検出部２０６が絶対差分誤差和を算出するためである。
【００９１】
絶対差分誤差和計算部２４は、初期閾値を保持するとともに、減算器２２により、絶対差分誤差値が減算された閾値を保持する。
また、絶対差分誤差和計算部２４は、減算器２２による減算の結果、閾値の値が負になった場合には、カウンタ２３を０にセットし、絶対差分誤差値計算部２１、減算器２２の処理を中止し、当該参照ブロックの位置を、絶対差分誤差和の最小値位置の候補から除外する旨の信号を第２アドレス生成部１０５に出力する。
【００９２】
一方、減算器２２による減算の結果、閾値の値が正である場合には、カウンタ２３の値が「１２７」になるまで減算器２１による減算が繰り返される。減算器２２による減算の結果、閾値の値が正のままであり、且つカウンタ２３の値が「１２７」になると、カウンタ２３を０にセットし、絶対差分誤差和計算部２４が保持する初期閾値から、当該正の値の閾値を減算し、当該減算した値を絶対差分誤差和計算部２４が保持する新たな初期閾値として設定する。
【００９３】
また、当該参照ブロックは絶対差分誤差和が最小となる参照ブロックの候補となるため、第２のアドレス生成部１０５から出力された当該参照ブロックの位置と処理対象ブロックの位置を表わすデータを動きベクトル生成部２５に出力する。なお、絶対差分誤差和計算部２４による閾値の値が負になったか否かの判定は、絶対差分誤差和計算部２４の閾値のＭＳＢ（最上位ビット）が「１」（負であることを示すビットとする。）であるか否かのみを判断することにより判定することができる。
また、絶対差分誤差和計算部２４は、第２のアドレス生成部１０５から探索処理が終了した旨の信号を受けた場合には、絶対差分誤差和計算部２４が保持する初期閾値を評価関数として出力する。
【００９４】
動きベクトル生成部２５は、絶対差分誤差和計算部２４から参照ブロックの位置と処理対象ブロックの位置を表わすデータを受けると、その変化量から動きベクトルを生成する。なお、動きベクトル生成部２５は、絶対差分誤差和計算部２４からの出力を受ける毎に動きベクトルを生成するものであり、以前に生成した動きベクトルが存在する場合には、当該動きベクトルを新たに生成した動きベクトルに更新する。
【００９５】
また、動きベクトル生成部２５は、第２のアドレス生成部１０５から探索処理が終了した旨の信号を受けた場合には、動きベクトル生成部２４が保持する動きベクトルを、処理対象ブロックの動きベクトルとして出力する。
【００９６】
次に、整数精度動きベクトル検出部２０６の動作について図７を用いて説明する。
図７は、本発明の実施の形態２による整数精度動きベクトル検出部２０６の動作を説明するためのフローチャートである。なお、図７により示されたフローチャートにおける整数精度動きベクトル検出部２０６の動作は、処理対象ブロックに対する特定の参照ブロックの絶対差分誤差和を計算するためのものであり、処理対象ブロックと参照ブロックの対応する画素データが入力されることにより開始される処理である。
【００９７】
処理対象ブロックの画素データと、当該処理対象ブロックの画素データに対応する参照ブロックの画素データの入力があると、絶対差分誤差値計算部２１は、処理対象ブロックの画素データと参照ブロックの画素データとの画素値の差分の絶対値を計算し、絶対差分誤差値として減算器２２に出力する（ステップＳ２０１）。
【００９８】
減算器２２は、絶対値差分誤差計算部２１から絶対差分誤差値の出力があると、絶対差分誤差和計算部２４が保持する閾値から、当該絶対差分誤差値を減算する（ステップＳ２０２）。
【００９９】
減算器２２によって閾値から絶対差分誤差値が減算されると、カウンタ２３は、カウンタの値をインクリメントする（ステップＳ２０３）。
【０１００】
次に、絶対差分誤差和計算部２４は、ステップＳ２０２により、閾値から絶対差分誤差値が減算された結果、閾値の値が負の値になっていないか否かを、閾値のＭＳＢ（最上位ビット）が「１」であるか否かにより判断する（ステップＳ２０４）。なお、ＭＳＢ（最上位ビット）が「１」は、閾値が負、ＭＳＢ（最上位ビット）が「０」は、閾値が正であることを示すものとする。
【０１０１】
この時、閾値のＭＳＢ（最上位ビット）が「１」である場合には、当該参照ブロックの絶対差分誤差和は、最小の絶対差分誤差和となり得ないため、カウンタ２３の値を「０」にセット（ステップＳ２０９）して、当該参照ブロックに対する処理を最後まで行わず、終了する。
【０１０２】
一方、閾値のＭＳＢ（最上位ビット）が「１」でない場合には、カウンタ２３の値が「１２７」であるか否か、すなわち、処理が行われる全ての画素の絶対差分誤差値が閾値から減算されたか否かの判断を行なう（ステップＳ２０５）。
【０１０３】
この時、カウンタ２３の値が「１２７」でない場合には、ステップＳ２０１に行き、残りの画素についての絶対差分誤差値を計算（ステップＳ２０１）し、以後、同様の処理を行なう（ステップＳ２０２からＳ２０５）。
【０１０４】
一方、カウンタ２３の値が「１２７」である場合には、絶対差分誤差和計算部２４は、処理対象ブロックに対する参照ブロックが絶対差分誤差和が最小となる参照ブロックの候補となるため、第２のアドレス生成部１０５から出力された当該参照ブロックの位置と処理対象ブロックの位置を表わすデータを動きベクトル生成部２５に出力する（ステップＳ２０７）。
【０１０５】
動きベクトル生成部２５は、参照ブロックの位置と処理対象ブロックの位置を表わすデータを受けると、その変化量から動きベクトルを生成する（ステップＳ２０７）。なお、この時、以前に生成した動きベクトルが存在する場合には、以前に生成した動きベクトルを新たに生成した動きベクトルに更新する。
【０１０６】
また、絶対差分誤差和計算部２４は、絶対差分誤差和計算部２４が保持する初期閾値からカウンタ２３の値が「１２７」となった時の正の閾値の値を減算し、当該減算した値を絶対差分誤差和計算部２４が保持する新たな初期閾値として更新（ステップＳ２０８）する。
その後、絶対差分誤差和計算部２４は、カウンタ２３の値を「０」にセット（ステップＳ２０９）して、当該参照ブロックに対する処理を終了する。
【０１０７】
このように、整数精度動きベクトル検出部２０６は、図７を用いて説明した処理対象ブロックに対する参照ブロックの絶対差分誤差和が最小となるの参照ブロックの検索処理を動きベクトル探索領域範囲内の他の参照ブロックに対して同様に行う。
【０１０８】
また、処理対象ブロックに対して、参照領域内の参照ブロックの探索が終了すると、第２のアドレス生成部１０５から探索処理が終了した旨の信号が整数精度動きベクトル検出部２０６に出力され、絶対差分誤差和計算部２４は、絶対差分誤差和計算部２４が保持する初期閾値を評価関数として出力し、動きベクトル生成部２６は、動きベクトル生成部が保持する動きベクトルを、処理対象ブロックの動きベクトルとして出力する。
【０１０９】
このように、整数精度動きベクトル検出部２０６が閾値から絶対差分誤差値を順次減算し、閾値の値が負となった時点で、処理対象ブロックに対する最小の絶対差分誤差和となる参照ブロックの候補から除外し、途中で計算を中止することにより、処理速度の向上や消費電力の削減を図ることができる。
【０１１０】
また、処理を行っている参照ブロックが処理対象ブロックに対する最小の絶対差分誤差和を有する参照ブロックの候補となるか否かの判断を、閾値からの減算結果が負になるか否かによって判断するため、当該判断を絶対差分誤差和計算部２４の閾値のＭＳＢ（最上位ビット）の値のみによって行うことができ、より一層の処理速度の向上や消費電力の削減を図ることができる。
【０１１１】
なお、本発明の実施の形態２では、動きベクトル検出装置が市松模様にサブサンプリングした参照ブロックの画素データと処理対象ブロックの画素データを用いて動きベクトルを検出するものについて説明したが、これに限定されず、動きベクトル検出装置が参照ブロックの画素データと処理対象ブロックの画素データを用いて動きベクトルを検出するものであれば同様の効果を得ることができる。
【０１１２】
（実施の形態３）
以下、本発明の実施の形態３による動きベクトル検出装置について、図８から図１０を用いて説明する。
図８は、本発明の実施の形態３による動きベクトル検出装置の構成の一例を示すブロック図である。図８において、動きベクトル検出装置は、データ保持部１０１と、第１のアドレス生成部１０２と、第１の記憶部１０３と、第２の記憶部１０４と、第２のアドレス生成部１０５と、整数精度動きベクトル検出部２０６と、探索履歴保持部３０１とからなる。
【０１１３】
なお、本実施の形態３による動きベクトル検出装置は、探索が終了した参照ブロックの履歴を保持し、同じ参照ブロックの２重探索を防止する点においてのみ、前述した実施の形態２による動きベクトル検出装置と相違する。そのため、前述した実施の形態２による動きベクトル検出装置と同様の構成要素については同じ符号を付し、説明を省略する。
【０１１４】
探索履歴保持部３０１は、整数精度動きベクトル検出部２０６により探索が行われた参照ブロックの履歴を保持する。なお、本実施の形態３では、探索対象の位置、及びその周辺位置８ヶ所の計９つ分の参照ブロックの履歴を持つものについて説明する。
【０１１５】
以下に、本発明の実施の形態３における動きベクトル検出装置による探索履歴を利用した、絶対差分誤差和が最小となる参照ブロックの探索処理の一例について、図９、図１０を用いて説明する。
図９は、本実施の形態３による動きベクトル検出装置の第２のアドレス生成部１０５による探索処理の一例を説明するための説明図である。図９において、実線は、処理対象ブロックを示し、点線は、参照ブロックを示す。なお、この探索処理とは、処理対象ブロックと絶対差分誤差が最小となる参照ブロックを参照領域内から探索する処理である。
【０１１６】
図９に示すように、本実施の形態３による動きベクトル検出装置の第２のアドレス生成部１０５による探索処理の一例として、まず、第２のアドレス生成部１０５は、処理対象ブロック内の注目画素ｘに対して、同じ位置、及び上下左右に１画素分ずらした５つ参照ブロックに対して探索を行うよう画素アドレスを生成し、整数精度動きベクトル検出部２０６により、当該参照ブロックに対する探索が行われる。
【０１１７】
その結果は第２のアドレス生成部１０５に出力され、アドレス生成部１０５は、上下左右の何れかの絶対差分誤差和が最小となった場合には、次に、当該絶対差分誤差和が最小となる参照ブロックを中心として、上下左右に１画素分ずらした参照ブロックに対して同様の処理を行う。この処理は、真ん中に位置する参照ブロックの絶対差分誤差和が最小となるまで繰り返され、絶対差分誤差和が最小となる真ん中に位置する参照ブロックが検出されると、当該参照ブロックを、処理対象ブロックに対して最小の絶対差分誤差和となる参照ブロックとして検出し、探索を終了する。
【０１１８】
図１０は、探索履歴保持部３０１内のデータ構造を示す図であり、ａからｌは、参照ブロックを示す符号である。太線１で囲まれた範囲は探索履歴保持部３０１が保持する履歴の範囲であり、実線２は探索が終了した参照ブロックを示すものであり、点線３は未探索の参照ブロックを示す。
【０１１９】
例えば、処理対象ブロック位置がｈの位置にあるとすると、まず、前述したように、処理対象ブロックに対する５つの参照ブロックに対して探索が行われる。探索が終了すると、探索履歴保持部３０１は、探索が行われた参照ブロックｅ、参照ブロックｇ、参照ブロックｈ、参照ブロックｉ、参照ブロックｋに対してフラグを立てる（図１０（Ａ））。
【０１２０】
次に、整数精度動きベクトル検出部２０６による探索の結果、例えば、処理対象ブロックに対する、参照ブロックｅ、参照ブロックｇ、参照ブロックｈ、参照ブロックｉ、参照ブロックｋの絶対差分誤差和の内、参照ブロックｅの絶対差分誤差が最小となった場合には、探索履歴保持部３０１は、探索履歴保持部３０１が保持する履歴を全て下方向にシフトさせる（図１０（Ｂ））。
【０１２１】
これにより、探索履歴保持部３０１が保持する履歴は、次の探索で中心の参照ブロックである参照ブロックｅを中心としたものに、書き換えられたことになる（図１０（Ｃ））。
【０１２２】
第２のアドレス生成部１０５は、当該参照ブロックｅを中心とした、参照ブロックｂ、参照ブロックｄ、参照ブロックｅ、参照ブロックｆ、参照ブロックｈに対して探索を行う際には、探索履歴保持部３０１内のフラグの有無を判断し、フラグが立っていない、参照ブロックｂ、参照ブロックｄ、参照ブロックｆの画素データのみの画素アドレスを生成する。そのため、整数精度動きベクトル検出部２０６は、既に探索が行われた参照ブロックｅ、参照ブロックｈの探索処理を２重に行うことがない。
【０１２３】
このように、探索履歴保持部３０１を設け、既に探索を行った参照ブロックに対して探索履歴を残すことにより、同じ参照ブロックに対して２重の探索を行うことを防止することができる。これにより、処理速度の向上を可能にするとともに、消費電力を削減することができる。
【０１２４】
なお、本実施の形態３において、第２のアドレス生成部１０５による探索処理は、上下左右に位置する参照ブロックの内、絶対差分誤差和が最小となる方向に探索を進めるものについて説明したが、これに限定されず、探索履歴保持部３０１を具備し、探索履歴保持部３０１が保持する探索履歴に基づいて第２のアドレス生成部が探索処理を行うものであれば何でもよい。
【０１２５】
（実施の形態４）
以下、本発明の実施の形態４による動きベクトル検出装置について、図１１から図１４を用いて説明する。
図１１は、本発明の実施の形態４による動きベクトル検出装置の構成の一例を示すブロック図である。図１１において、動きベクトル検出装置は、データ保持部１０１と、第１のアドレス生成部１０２と、第１の記憶部１０３と、第２の記憶部１０４と、第２のアドレス生成部１０５と、整数精度動きベクトル検出部１０６と、転送ルール保持部４０１と、転送ルール検出部４０２とからなる。
【０１２６】
なお、本実施の形態４による動きベクトル検出装置は、データ保持部１０１により保持されている画像データ上で、第１の記憶部１０３に出力される参照領域データがどの位置に存在するかにより、データ保持部１０１から第１の記憶部１０３に転送される参照領域データの転送ルールを変更する点においてのみ、前述した実施の形態１による動きベクトル検出装置と相違する。そのため、前述した実施の形態１による動きベクトル検出装置と同様の構成要素については同じ符号を付し、説明を省略する。
【０１２７】
転送ルール保持部４０１は、領域判定コードと転送ルールとを対にして保持する。
転送ルール検出部４０２は、第１のアドレス生成部１０２により出力された領域判定コードに基づき転送ルールを検出し、第１のアドレス生成部１０２、及び第２のアドレス生成部１０５に出力する。
【０１２８】
ここで、前記領域判定コードについて図１２を用いて説明する。
図１２は、画像データを示す図であり、本発明の実施の形態４による領域判定コードは、現時点での動きベクトルの探索を行う参照領域が画像データ上のどの位置に対応するかを示す、４ビットからなるコードである。各ビットは、各ビットは上位から、上端・下端・左端・右端を示しており、例えば上端を示すビットが「１」である場合は、前記参照領域が画像データの上端にあることを示し、ビットが「０」である場合は、前記参照領域が画像データの上端でないことを示している。なお、この領域判定コードは、画像データのアドレスを制御する第１のアドレス生成部１０２が保持している。
【０１２９】
以下に、本発明の実施の形態４による動きベクトル検出装置の第１のアドレス生成部１０２による参照領域データの転送処理について、図１２、図１３、図１４を用いて説明する。
図１３は、転送ルール保持部４０１内に格納されている領域判定コードと転送ルールの一例を示す図であり、図１４は、参照領域データを構成する４８×４８画素のアドレスを示したものである。
【０１３０】
第１のアドレス生成部１０２から領域判定コードが転送ルール検出部４０２に出力されると、転送ルール検出部４０２は、転送ルール保持部４０１内に保持されている領域判定コードに対応する転送ルールを検出する。
転送ルール検出部４０２により検出された転送ルールは、第１のアドレス生成部１０２に出力される。第１のアドレス生成部１０２は、検出された転送ルールに基づいて第１の記憶部１０３に出力する参照領域データの転送アドレスを生成する。
【０１３１】
例えば、領域判定コードが「００００」の場合には、第１のアドレス生成部は、図１２に示した転送開始アドレス位置から、水平方向に１画素ずつ、矩形の水平方向の長さが４８、即ち画素アドレスが０から４７までの４８画素についてのデータを読み出す。即ち、図１４に示すように、画素アドレスが０から４７までの４８画素分のデータの読み出しが終了すると、転送開始アドレス位置から画像イメージに対して垂直方向に１画素分シフトして、左端から画素アドレスが４８から９５までの水平方向４８画素分のデータを同様に読み出す。この垂直方向へのシフトは、矩形の垂直方向の長さが４８、即ち縦方向に４８画素分移動するまで継続される。
【０１３２】
また、例えば、領域判定コードが「１０１０」の場合には、図１４に示すように、画素アドレスが７８４の位置から画素データの読み出しが開始され、水平方向に１画素ずつ、矩形の水平方向の長さが３２、即ち画素アドレスが７８４から８１５までの３２画素分のデータを読み出す。画素アドレスが７８４から８１５までの３２画素分のデータを読み出しが終了すると、画素アドレス７８４の位置から画像イメージに対して垂直方向に１画素分シフトして、画素アドレスが８３２から８６３までの水平方向３２画素分のデータを同様に読み出す。この垂直方向へのシフトは、矩形の垂直方向の長さが３２、即ち縦方向に３２画素分移動するまで継続される。
【０１３３】
なお、領域判定コードが「０００１」、「００１０」、「０１００」、「０１０１」、「０１１０」、「１０００」、「１００１」の場合の参照領域データの転送処理は、前述した領域判定コードが「００００」、「１０１０」の場合の説明、及び図１３から明らかであるので説明を省略する。
【０１３４】
このように、画像データ上の参照領域データの位置に応じて、第１のアドレス生成部１０２が第１の記憶部１０３に出力する参照領域データの転送ルールを変更することにより、第１の記憶部１０３に転送するデータ量を必要最小限にすることができ、処理速度の向上、及び消費電力を削減することができる。
【０１３５】
なお、本実施の形態４による動きベクトル検出装置において、領域判定コードを第１のアドレス生成部１０２が保持しているものについて説明したが、これに限定されず、例えば、ユーザが領域判定コードを転送ルール検出部４０２に直接入力するもの等であってもよい。
また、本発明の実施の形態４による動きベクトル検出装置は、領域判定コードに対応する転送ルールの例として、図１３に示すような転送ルールを示したが、これに限定されず、領域判定コードに対応する転送ルールに基づいて、第１のアドレス生成部１０２がデータの転送アドレスを生成するものであればなんでもよい。
【０１３６】
（実施の形態５）
以下、本発明の実施の形態５による動きベクトル検出装置について、図１５から図１７を用いて説明する。
図１５は、本発明の実施の形態５による動きベクトル検出装置の構成の一例を示すブロック図である。図１５において、動きベクトル検出装置は、データ保持部１０１と、第１のアドレス生成部１０２と、第１の記憶部１０３と、第２の記憶部１０４と、第２のアドレス生成部１０５と、整数精度動きベクトル検出部１０６と、転送ルール検出部４０２と、転送ルール保持部４０１と、記憶データ制御部５０１とからなる。
【０１３７】
なお、本実施の形態５による動きベクトル検出装置は、第１の記憶部１０３がダブルバッファ構造を有する動きベクトル検出装置であって、第１の記憶部１０３内のデータを記憶データ制御部５０１が制御する点においてのみ、前述した実施の形態４による動きベクトル検出装置と相違する。そのため、前述した実施の形態１による動きベクトル検出装置と同様の構成要素については同じ符号を付し、説明を省略する。
【０１３８】
なお、まずここで、第１の記憶部１０３内のメモリ構造であるダブルバッファ構造について、図１６を用いて説明することにする。
図１６は、本発明の実施の形態５による第１の記憶部１０３のメモリ構造を説明する説明図であり、図１６において、第１の記憶部１０３は、メモリＸとメモリＹの２つのバファメモリを保持している。この２つのメモリは、例えば、メモリＹに対してデータの読み込み読み込みが行われている際には、他方のメモリＸでは、データの読み出しが行われている。また、両処理が終了するとメモリＸとメモリＹを入れ替えて、メモリＸに対してデータの読み込み読み込みを行うと同時に、メモリＹに書き込まれたデータを読み出す。これにより、データの入出力を効率的に行うことができるものである。
【０１３９】
次に、本発明の実施の形態５による記憶データ制御部５０１の動作の動作について説明する。
一般的に、画像データを構成する複数のブロックに対して動きベクトルを求める場合には、画像データに対して左上端に位置するブロックから順次右側に１ブロックずつシフトさせ、それぞれの処理対象ブロックに対して動きベクトルを検出する。そのため、前述したようなダブルバッファ構造を有する第１の記憶部１０３を用いて、探索を行う領域である参照領域データの入出力を行う場合には、画素データがメモリＸとメモリＹとの間でオーバーラップすることになり、処理対象ブロックが変わる毎に重複したデータ転送を行ってしまう。
【０１４０】
よって、本発明の実施の形態５による動きベクトル検出装置の記憶データ制御部５０１は、図１７に示すように、ダブルバッファ構造を有する第１の記憶部１０３に格納されたデータのうち、メモリＹに必要なデータであり且つメモリＸ上に格納されているデータをメモリＸからメモリＹに転送する。その後メモリＹに必要なデータをデータ保持部１０１から読み込む。なお、同様の処理は、メモリＹからメモリＸへの転送においても同様に行われる。
【０１４１】
なお、この記憶データ制御部５０１により、コピーが行われる第１の記憶部１０３内のデータの範囲は、第１のアドレス生成部１０２から出力される領域判定コードに基づいて決定されるものであり、領域判定コードは、前記実施の形態４により説明したものと同様であるため説明を省略する。
【０１４２】
以下に、本実施の形態５による記憶データ制御部５０１の動作の具体例について図１８を用いて説明する。
図１８は、領域判定コードと、第１の記憶部１０３が新たに読み込むデータ、及び第１の記憶部１０３内でコピーするデータとの対応を示す図である。
例えば、図１８に示すように、メモリＹに対してデータの読み込みを行なう領域判定コードが「００００」の場合には、記憶データ制御部５０１は、第１の記憶部１０３内のメモリＸのデータのうち、右の６ブロック分のデータをメモリＹの左にコピーする。これにより、データ記憶部１０３は、残りの右３ブロック分のデータのみをデータ保持部１０１から新たに読込めばよい。
【０１４３】
また、メモリＹに対してデータの読み込みを行なう領域判定コードが「０００１」の場合には、記憶データ制御部５０１は、図１８に示すように、第１の記憶部１０３内のメモリＸのデータのうち、右の６ブロック分のデータをメモリＹの左にコピーする。また、領域判定コードが「０００１」の場合、即ち右端のビットが「１」の場合には、右側に位置するブロックのデータが存在しないため、データの読み込みを行わない。
【０１４４】
また、メモリＹに対してデータの読み込みを行なう領域判定コードが「００１０」の場合には、記憶データ制御部５０１は、図１８に示すように、データのコピーを行わない。これは、前述したように、複数のブロックに対して動きベクトルを求める場合に、処理を行なう処理対象ブロックを右側に順次シフトさせながら動きベクトル検出を行なうため、領域判定コードが「００１０」の場合、即ち、右から２つ目のビットが「１」の場合には、動きベクトルを検出する処理対象ブロックの位置が画像データの左端に位置するため、前回の探索で用いたデータを用いることができないためである。
なお、他の領域判定コードの場合の記憶データ制御部５０１の動作は、前述した領域判定コード「００００」、「０００１」、「００１０」、及び図１８から明らかであるので、説明を省略する。
【０１４５】
このように、領域判定コードを用いて、記憶データ制御部５０１が、第１の記憶部１０３内に記憶されたデータの制御を行うことにより、データ保持部１０１から読込むデータの量を軽減することができ、処理速度の向上が可能となるとともに、消費電力の軽減につながる。
【０１４６】
なお、本実施の形態５による動きベクトル検出装置において、領域判定コードを第１のアドレス生成部１０２が保持しているものについて説明したが、これに限定されず、例えば、ユーザが領域判定コードを記憶データ制御部５０１に直接入力するもの等であってもよい。
【０１４７】
また、本実施の形態５による動きベクトル検出装置は、少なくとも、第１の記憶部１０３のメモリ構造がダブルバッファ構造をしているものであればよく、データ保持部１０１や、第２の記憶部１０４のメモリ構造は、どのようなものであってもよい。
【０１４８】
また、本発明の実施の形態１から５において、動きベクトルを検出する動きベクトル検出部が整数精度の動きベクトルを検出する整数精度動きベクトル検出部１０６であるものについて説明したが、これに限定されず、例えば、動きベクトルを検出部が少数精度の動きベクトルを求めるものや、整数精度の動きベクトルと少数精度の動きベクトルをともに求めるもの等であってもよい。なお、少数精度の動きベクトル検出については、後述する実施の形態６で説明することにする。
【０１４９】
（実施の形態６）
以下、本発明の実施の形態６による動きベクトル検出装置について、図１９から図２２を用いて説明する。
図１９は、本発明の実施の形態６による動きベクトル検出装置の構成の一例を示すブロック図である。図１９において、動きベクトル検出装置は、データ保持部１０１と、第１のアドレス生成部１０２と、第１の記憶部１０３と、第２の記憶部１０４と、第２のアドレス生成部１０５と、補間画素生成部６０１と、少数精度動きベクトル検出部６０２と、読み出し方向決定部６０３とからなる。
【０１５０】
補間画素生成部６０１は、第１の記憶部内に保持される参照領域データの画素間の任意の位置における画素値の補間処理を行うことによって求めるものである。なお、本発明の実施の形態６では、説明を簡単にするため、各画素間の真ん中の位置における画素値である半画素を生成するものを例にとって説明する。
【０１５１】
図２０は、本発明の実施の形態６による動きベクトル検出装置の補間画素生成部６０１を説明するための説明図であり、黒丸は画素の位置、白丸は補間画素生成部６０１により求められた半画素の位置を示す。例えば、半画素ｍを生成するためには、画素Ａ、画素Ｂ、画素Ｃ、及び画素Ｄの周囲４画素分の画素値のデータが必要であり、補間画素生成部６０１は、半画素ｍ＝（画素Ａ＋画素Ｂ＋画素Ｃ＋画素Ｄ）／４を計算することにより半画素ｍの画素値を求める。また、半画素ｎを生成するためには、縦方向に存在する画素Ｂと画素Ｄの２画素分の画素値のデータが必要であり、補間画素生成部６０１は、半画素ｎ＝（画素Ｂ＋画素Ｄ）／２を計算することにより半画素ｎの画素値を求める。さらに、半画素ｏを生成するためには、横方向に存在する画素Ｃと画素Ｄの２画素分の画素値のデータが必要であり、補間画素生成部６０１は、半画素ｏ＝（画素Ｃ＋画素Ｄ）／２を計算することにより半画素ｏの画素値を求める。
【０１５２】
少数精度動きベクトル検出部６０２は、第１の記憶部１０３から出力された参照ブロックの画素データを用いて補間画素生成部６０１が生成した半画素データ、及び第２の記憶部１０４から出力される処理対象ブロックの画素データを用いて、処理対象ブロックと、参照ブロックから１／２画素分ずれた半画素精度の参照ブロックとの絶対差分誤差和を計算し、当該絶対差分誤差和が最小となる半画素精度の参照ブロックを探索して、動きベクトル検出する。なお、本実施の形態６による少数精度動きベクトル検出装置６０２による前記半画素精度の参照ブロックを探索は、処理対象ブロック位置の周辺における最小の半画素精度の参照ブロックが存在する方向に探索を進めるものとし、当該探索方向は、探索位置ベクトルとして読み出し方向決定部６０３に出力される。
【０１５３】
読み出し方向決定部６０３は、補間画素生成部６０１で生成を行なう半画素データの位置によって、第１の記憶部１０３から出力する参照領域の画素データの読み出し方向を決定する。なお、この補間画素生成部６０１により生成が行われる半画素データの位置は、前述した少数精度動きベクトル検出部６０２から出力される探索位置ベクトルに基づいて決定される。
【０１５４】
以下に、本発明の実施の形態６による動きベクトル検出装置のハーフペル生成処理について図２１、図２２を用いて説明する。
図２１、図２２は、本発明の実施の形態６による補間画素生成部６０１による半画素データの生成を説明するための説明図である。図２１、図２２において、補間画素生成部６０１は、図示するように、補間処理部８１とシフトレジスタ群８２とからなる。
補間処理部８１は、シフトレジスタ８２が保持する画素データの補間処理を行い、画素間の位置における画素値を算出する。シフトレジスタ群８２は、２１個のシフトレジスタからなり、画素データの入力がある毎に読込んだ画素データをシフトさせる。なお、本実施の形態６では、画素間の中心の位置である半画素精度の画素値を求めるものである。
【０１５５】
この補間画素生成部６０１により、参照ブロックに対して左、右、右上、右下、左上、左下の何れかの方向に１／２画素ずれた半画素精度の参照ブロックを作成する場合には、読み出し方向決定部６０３は、第１の記憶部１０３内に格納された参照領域のデータを横方向に読み出す旨の指示を第２のアドレス生成部１０５に対して行う。第２のアドレス生成部１０５は、図２１に示すように、第１の記憶部１０３内に格納された参照領域の画素データから、横方向に位置するデータを１８画素づつ、縦方向に１８回読み出す。
【０１５６】
読み出された画素データは、補間画素生成部６０１内のシフトレジスタ群８２に入り、補間処理部８１により補間処理が行われる。
また、補間画素生成部６０１のシフトレジスタ群８２は、少なくとも、（横方向に読み出すデータ数＋２）個のシフトレジスタを保持することにより、斜め方向に半画素ずれた画素データを生成する場合であっても、改めて、データの読み出しを行なうことなく、斜め方向に半画素ずれた画素データの補間処理を行うことができ、処理速度向上とともに消費電力の削減を図ることができる。
【０１５７】
一方、この補間画素生成部６０１により、参照ブロックに対して上、下、右上、右下、左上、左下の何れかの方向に１／２画素ずれた半画素精度の参照ブロックを作成する場合には、読み出し方向決定部６０３は、第１の記憶部１０３内に格納された参照領域のデータを縦方向に読み出す旨の指示を第２のアドレス生成部１０５に対して行う。第２のアドレス生成部１０５は、図２２に示すように、第１の記憶部１０３内に格納された参照領域の画素データから、縦方向に位置するデータを１８画素づつ、横方向に１８回読み出す。
読み出された画素データは、補間画素生成部６０１内のシフトレジスタ群８２に入り、補間処理部８１により補間処理が行われる。
【０１５８】
このように、縦方向に読み出した画素データを用いて、縦方向に半画素ずれた画素データを生成することにより、縦方向に半画素ずれた画素データの補間処理を行なうための演算量を減らすことができ、処理速度向上とともに消費電力の削減を図ることができる。
【０１５９】
また、補間画素生成部６０１のシフトレジスタ群８２は、少なくとも、（縦方向に読み出すデータ数＋２）個のシフトレジスタを保持することにより、斜め方向に半画素ずれた画素データを生成する場合であっても、改めて、データの読み出しを行なうことなく、斜め方向に半画素ずれた画素データの補間処理を行うことができ、処理速度向上とともに消費電力の削減を図ることができる。
【０１６０】
すなわち、画素の補間位置によって画像イメージに対するデータの読み出し方向を変更することにより、補間画素生成部６０１の構成を変更することなく縦方向、または横方向に半画素ずれた半画素ｎ、ｏを高速に、且つ同タイミングで生成することが可能となり、処理速度向上とともに消費電力の削減を図ることが出来る。さらに斜め方向に半画素ずれた半画素ｍを生成する際にも、少なくともシフトレジスタ群８２が２０個のシフトレジスタを有することにより、高速に、且つ同タイミングで半画素データを生成することが可能となり、データ転送量の削減、処理速度向上とともに消費電力の削減を図ることが出来る。
【０１６１】
なお、図２１、図２２では、補間画素生成部６０１が２１個のシフトレジスタを有するシフトレジスタ群８２を示したが、これに限定されず、例えば、上下左右方向に半画素ずれた画素データを生成する場合には、少なくとも、２個のシフトレジスタを保持するものであればよく、また、斜め方向へ半画素ずれた画素データを生成するためには、少なくとも２０個のシフトレジスタを保持するものであればよい。
【０１６２】
（実施の形態７）
以下、本発明の実施の形態７による動きベクトル検出装置について、図２３、及び図２４を用いて説明する。
図２３は、本発明の実施の形態７による動きベクトル検出装置の構成の一例を示すブロック図である。図２３において、動きベクトル検出装置は、データ保持部１０１と、第１のアドレス生成部１０２と、第１の記憶部１０３と、第２の記憶部１０４と、第２のアドレス生成部１０５と、補間画素生成部６０１と、読み出し方向決定部６０３と、少数精度動きベクトル検出部７０１とからなる。
【０１６３】
なお、本実施の形態７による動きベクトル検出装置は、少数精度動きベクトル検出部７０２が絶対差分誤差和を計算する絶対差分誤差和演算部を２つ搭載し、処理対象ブロックに対する２つ分の少数精度参照ブロックのブロックマッチングを同時に行う点においてのみ、前述した実施の形態６による動きベクトル検出装置と相違する。そのため、前述した実施の形態６による動きベクトル検出装置と同様の構成要素については同じ符号を付し、説明を省略する。
【０１６４】
以下に、本発明の実施の形態７による動きベクトル検出装置による少数精度動きベクトル検出処理について説明する。
前記実施の形態１において説明したように、第２のアドレス生成部１０５は、処理対象ブロック、及び参照ブロックに対して市松模様にサブサンプリングした画素データのアドレスを発生する。
【０１６５】
しかし、本実施の形態７による補間画素生成部６０１において、第２の記憶部１０４から出力される市松模様にサブサンプリングされた処理対象ブロックの画素データに対応する半画素精度参照ブロックを生成するためには、前記実施の形態６で説明したように参照ブロックを構成する全画素データ、及びその周辺の一画素分の画素データを読込む必要がある。
【０１６６】
そこで、補間画素生成部６０１は、第１の記憶部１０３から読込んだ参照ブロックを構成する全画素データ、及びその周辺の一画素分のデータを用いて、市松模様にサンプリングされた処理対象ブロックと対応する２つの半画素精度処理対象ブロック、例えば、整数精度の参照ブロックから上と下、左と右、右斜め上と右斜め下、左斜め上と左斜め下、右斜め上と左斜め上、右斜め下と左斜め下にそれぞれ半画素分ずれた２つ半画素精度参照ブロックの少数精度画素のデータを生成し、少数精度動きベクトル検出部７０１に出力する。
【０１６７】
なお、このとき、整数精度の参照ブロックから、例えば上下に半画素分ずれた少数精度の参照ブロックの画素データは、少数精度の参照ブロックを構成する画素列の上端列及び下端列の画素データがそれぞれ異なるのみであり、それ以外の重複部分は同じ値を用いることができる。そのため、補間画素生成部６０１のデータ処理量を軽減することができる。これは、左と右、右斜め上と右斜め下、左斜め上と左斜め下、右斜め上と左斜め上、右斜め下と左斜め下にそれぞれ半画素分ずれた２つ半画素精度参照ブロックの少数精度画素のデータを生成するときも同様である。
【０１６８】
以下に、少数精度動きベクトル検出部７０１に構成について、図２４を用いて説明する。
図２４は、本発明の実施の形態７による動きベクトル検出装置の少数精度動きベクトル検出部７０１の構成を説明するブロック図である。図において、少数精度動きベクトル検出部７０１は、第１の絶対差分誤差和演算部７１と、第２の絶対差分誤差和演算部７２と、動きベクトル生成部７３とからなる。
【０１６９】
第１の絶対差分誤差和演算部７１、及び第２の絶対差分誤差和演算部７２は、ともに、市松模様にサブサンプリングされた処理対象ブロックの画素データと、当該処理対象ブロックの画素データに対応する半画素精度の参照ブロックの画素データを用いて、処理対象ブロック、及び半画素精度参照ブロックを構成する画素データの絶対値の差分の和である絶対差分誤差和を求める演算部である。
【０１７０】
動きベクトル生成部７３は、第１の絶対差分誤差和演算部７１、及び第２の絶対差分誤差和演算部７２により演算された、処理対象ブロックに対して絶対差分誤差和が小さくなる少数精度の参照ブロックの位置から動きベクトルを生成する。
【０１７１】
例えば、少数精度動きベクトル検出部７０１により、市松模様にサブサンプリングされた処理対象ブロックに対して左右に半画素分ずれた２つの半画素精度の参照ブロックについてのブロックマッチングを行なう場合には、補間画素生成部６０１から左側に半画素ずれた半画素精度の処理対象ブロックの画素データ、及び処理対象ブロックの画素データが第１の絶対差分誤差和演算部７１に入力され、右側に半画素ずれた半画素精度の処理対象ブロックの画素データ、処理対象ブロックの画素データが第２の絶対差分誤差和演算部７１に入力される。
【０１７２】
第１の絶対差分誤差和演算部７１、及び第２の絶対差分誤差和演算部７２では、市松模様にサブサンプリングされた処理対象ブロックに対して右側、及び左側に半画素分ずれた少数精度の参照ブロックの絶対差分誤差和がそれぞれ演算され、動きベクトル生成部７３に出力される。
【０１７３】
動きベクトル生成部７３は、第１の絶対差分誤差和演算部７１、及び第２の絶対差分誤差和演算部７２から出力された絶対差分誤差和を比較し、絶対差分誤差和の値が小さい方の少数精度の参照ブロックに対する動きベクトルを検出する。
【０１７４】
このように、サブサンプリングを行った処理対象ブロックに対して、少数精度の動きベクトルの検出に用いる少数精度の補間画素を生成するために第１の記憶部１０３内に記憶された参照ブロックを構成する全画素データを読み出した場合であっても、少数精度動きベクトル検出部７０１が絶対差分誤差和演算部を２つ搭載し、補間画素生成部６０１が２つの半画素精度参照ブロックを同時生成することにより、上と下、左と右、右斜め上と右斜め下、左斜め上と左斜め下、右斜め上と左斜め上、右斜め下と左斜め下等に半画素分ずれた２つ半画素精度処理対象ブロックの絶対差分誤差和の演算処理を同時に行うことができ、補間画素生成部６０１の処理量を軽減することができるとともに、第１の記憶部１０３から読み出すデータ量を軽減することができ、処理速度を向上することができるとともに、消費電力の削減につながる。
【０１７５】
なお、本発明の実施の形態７による動きベクトル検出装置では、第２のアドレス生成部１０５が処理対象ブロックに対して市松模様となるように画素のアドレスを生成するものについて説明したが、これに限定されず、例えば、第２のアドレス生成部１０５が処理対象ブロックを構成する全ての画素のアドレスを生成するもの等、第２のアドレス生成部１０５が生成する画素アドレスの方式には限定されない。
【０１７６】
（実施の形態８）
以下、本発明の実施の形態８による動きベクトル検出装置について、図１２、図２５、図２６を用いて説明する。
図２５は、本発明の実施の形態８による動きベクトル検出装置の構成の一例を示すブロック図である。図２５において、動きベクトル検出装置は、データ保持部１０１と、第１のアドレス生成部１０２と、第１の記憶部１０３と、第２の記憶部１０４と、第２のアドレス生成部１０５と、整数精度動きベクトル検出部１０６と、転送ルール保持部４０１と、転送ルール検出部４０２と、探索可否条件保持部８０１と、探索可否条件検出部８０２とからなる。
【０１７７】
なお、本実施の形態８による動きベクトル検出装置は、第２のアドレス生成部１０５が探索可否条件検出部８０２により検出された探索可否条件に基づいて、第１の記憶部１０３から出力する参照ブロックの画素データのアドレスを生成する点においてのみ、前述した実施の形態４による動きベクトル検出装置と相違する。そのため、前述した実施の形態４による動きベクトル検出装置と同様の構成要素については同じ符号を付し、説明を省略する。
【０１７８】
探索可否条件保持部８０１は、領域判定コードと探索を行うことができる位置か否かを判断するための条件である探索可否条件とを対にして保持する。
探索可否条件検出部８０２は、第１のアドレス生成部１０２により出力された領域判定コードに基づき探索可否条件保持部８０１から探索可否条件を検出し、第２のアドレス生成部１０５に出力する。
なお、領域判定コードは、前記本発明の実施の形態４において、図１２を用いて説明した領域判定コードと同様であるため、説明を省略する。
【０１７９】
以下に、本発明の実施の形態８による動きベクトル検出装置の第２のアドレス生成部１０５による参照ブロックの画素データのアドレス生成処理について、図２５、図２６を用いて説明する。
図２６（ａ）は、探索可否条件保持部８０１内に格納されている領域判定コードと探索可否条件の一例を示す図である。これは、図２６（ｂ）に示すように、右方向を正とする横軸をｘ軸、下方向を正とする縦軸をｙ軸とし、画素ｐの位置を原点とした場合の探索可否条件保持部８０１が保持する探索可否条件を示したものである。なお、図２６（ａ）に示された領域可否条件は、探索を行うことができる領域を示したものである。
【０１８０】
第１のアドレス生成部１０２より領域判定コードが探索可否条件検出部８０２に出力されると、探索可否条件検出部８０２は、探索可否条件保持部８０１内から当該領域判定コードに対応する探索可否条件を検出し、第２のアドレス生成部１０５に出力する。
第２のアドレス生成部１０５は、探索可否条件検出部８０２から出力された探索可否条件に基づいて、第１の記憶部１０３から出力する画素データのアドレスを生成する。
【０１８１】
次に、本発明の実施の形態８による動きベクトル検出装置の具体例について説明する。
例えば、第１のアドレス生成部１０２より出力された領域判定コードが「００００」の場合には、探索可否条件検出部８０２は、探索可否条件保持部８０１から探索可否条件である（−１６≦ｘ≦１５、−１６≦ｙ≦１５）を検出し、第２のアドレス生成部１０５に出力する。
第２のアドレス生成部１０５は、前記探索可否条件検出部８０２もより検出された探索可否条件を用い、−１６≦ｘ≦１５、−１６≦ｙ≦１５の範囲内となるように画素アドレスを生成する。
【０１８２】
なお、領域判定コードが「０００１」「００１０」「０１００」「０１０１」「０１１０」「１０００」「１００１」「１０１０」の場合についても、前述した領域判定コードが「００００」の場合と同様であるため説明を省略する。
【０１８３】
このように、探索可否条件検出部８０２が探索可否条件保持部８０１から領域判定コードを用いて、探索可否条件を検出し、当該探索可否条件に基づき第２のアドレス生成部１０５が第１の記憶部１０３から出力する画素データのアドレスを生成することにより、有効な探索を行なうことができる領域の画素アドレスを正確に生成することができ、無駄な探索処理を行なうことなく高速に処理を行うことができる。
【０１８４】
（実施の形態９）
以下、本発明の実施の形態９による動きベクトル検出装置について、図２７を用いて説明する。
図２７は、本発明の実施の形態９による動きベクトル検出装置の構成の一例を示すブロック図である。図２７において、動きベクトル検出装置は、データ保持部１０１と、第１のアドレス生成部１０２と、第１の記憶部１０３と、第２の記憶部１０４と、第２のアドレス生成部１０５と、整数精度動きベクトル検出部１０６と、転送ルール保持部４０１と、転送ルール検出部４０２と、補間画素生成部６０１と、少数精度動きベクトル検出部６０２と、読み出し方向決定部６０３と、探索可否条件保持部８０１と、探索可否条件検出部８０２とからなる。
【０１８５】
なお、本発明の実施の形態９は、前記本実施の形態８における動きベクトル検出装置の整数精度動きベクトル検出時に用いられる探索可否条件保持部８０１と探索可否条件検出部８０２を、少数精度動きベクトルの検出時にも用いるものであり、整数精度動きベクトル検出時、及び少数精度動きベクトル検出時に、それぞれ探索可否条件検出部８０２により探索可否条件を検出し、第２のアドレス生成部１０５が、当該探索可否条件検出部８０２により検出された探索可否条件を用いて画素アドレスを生成するものである。なお、各構成要素は、前記実施の形態６及び８で説明した動きベクトル検出装置と同様であるため、説明を省略する。
【０１８６】
このように、整数精度動きベクトル検出に用いられる探索可否条件保持部８０１と探索可否条件検出部８０２を、少数精度動きベクトル検出にも併用することにより、回路規模の縮小を図るとともに、製造コスト削減につながる。
【０１８７】
（実施の形態１０）
以下、本発明の実施の形態１０による動きベクトル検出装置について、図２８を用いて説明する。
図２８は、本発明の実施の形態１０による動きベクトル検出装置の構成の一例を示すブロック図である。図２８において、動きベクトル検出装置は、データ保持部１０１と、第１のアドレス生成部１０２と、第１の記憶部１０３と、第２の記憶部１０４と、第２のアドレス生成部９０５と、整数精度動きベクトル検出部１０６と、転送ルール保持部４０１と、転送ルール検出部４０２と、補間画素生成部６０１と、少数精度動きベクトル検出部６０２と、読み出し方向決定部６０３と、探索可否条件保持部８０１と、探索可否条件検出部８０２とからなる。
【０１８８】
なお、本発明の実施の形態１０における動きベクトル検出装置は、整数精度動きベクトル検出時に、探索可否条件検出部８０２により検出された探索可否条件を用いて、整数精度の動きベクトル探索を行い、整数精度の動きベクトルを検出する。その後、少数精度動きベクトルの検出を行う場合には、前記整数精度動きベクトル検出時の探索可否の結果を用いて少数精度の動きベクトル検出を行うものである。なお、各構成要素は、前記実施の形態６及び８で説明した動きベクトル検出装置と同様であるため、説明を省略する。
【０１８９】
第２のアドレス生成部９０５は、探索可否条件検出部８０２により検出された探索可否条件に基づいて、整数精度動きベクトル検出に用いる画素データのアドレスを生成すると共に、整数精度動きベクトル検出時に探索を行うことができたか否かの情報である、探索可否データを各参照ブロック位置毎に保持する。また、整数精度の動きベクトル検出後、少数精度動きベクトル検出を行う場合には、当該探索可否データを用いて少数精度の動きベクトル検出時の探索可否を判断する。
【０１９０】
以下に、本発明の実施の形態１０による動きベクトル検出装置の動作について図２９を用いて説明する。
図２９は、整数精度動きベクトル検出時の動きベクトル探索の一例を示したものであり、特定位置における参照ブロック（中心に位置するブロック）から上下左右に一画素分ずれた位置における参照ブロック（図中、点線で表わす）の位置を示す図である。なお、本発明の実施の形態１０による動きベクトル検出装置の整数精度動きベクトル検出は、図２９に示すような位置関係にある参照ブロックのうち、中心に位置する参照ブロックの絶対差分誤差和が最小となった場合に、当該参照ブロック位置を整数精度の動きベクトル検出の対象位置とするものである。
【０１９１】
第２のアドレス生成部９０５は、整数精度動きベクトル検出時に、この動きベクトル検出の対象位置の上下左右に位置する参照ブロックの探索の可否を４ビットからなる探索可否データとして保持する。具体的には、例えば、図２９に示すように左端ビットから上下左右の位置を表わすものとし、探索を行うことができなかった参照ブロック位置のビットを「１」、探索を行うことができた参照ブロック位置のビットを「０」として保持する。
【０１９２】
これにより、整数精度の動きベクトル探索終了後、さらに正確な動きベクトルを求めるために、整数精度の動きベクトル検出時に探索を行った領域の範囲内で少数精度の動きベクトル探索を行う場合にでも、第２のアドレス生成部９０５は、前記４ビットからなる探索可否データに基づいて、第１の記憶部１０３から出力する画素アドレスを生成することができる。これにより、少数精度の動きベクトルの検出時に改めて探索可否条件の検出を行うことなく、探索の可否を判断することができ、処理速度の向上を図ることができる。また、整数精度の動きベクトル検出時の探索結果を少数精度動きベクトル検出時にも用いるため、回路規模の縮小を図るとともに、製造コスト削減につながる。
【０１９３】
（実施の形態１１）
以下、本発明の実施の形態１１による動きベクトル検出装置について、図３０を用いて説明する。
図３０は、本発明の実施の形態１１による動きベクトル検出装置とその周辺の構成の一例を示すブロック図である。図３０において、動きベクトル検出装置は、データ保持部１０１と、第１のアドレス生成部１０２と、第１の記憶部１０３と、第２の記憶部１０４と、第２のアドレス生成部１００５と、整数精度動きベクトル検出部１０６と、探索実行可否決定部１００１とからなる。なお、前記実施の形態１で説明した動きベクトル検出装置を構成する各構成要素の内、同一のものについては、同一の符号を付し、説明を省略する。
【０１９４】
探索実行可否決定部１００１は、前回の動きベクトル検出で検出された動きベクトルを保持するとともに、整数精度動きベクトル検出部１０６により算出された絶対差分誤差と特定の閾値とを比較することにより探索実行の可否を決定する。
【０１９５】
第２のアドレス生成部１００５は、第１の記憶手段１０３、及び第２の記憶手段１０４から出力するデータのアドレスを生成すると共に、第１の記憶手段１０３から動きベクトル検出位置での画素データを整数精度動きベクトル検出部１０６をスルーして外部に出力するためのスルーパスを与える。
【０１９６】
次に、本発明の実施の形態１１による動きベクトル検出装置の動作について説明する。
第２のアドレス生成部１００５は、探索実行可否決定部１００１が保持する前回の探索で検出された動きベクトルを用いて、第１の記憶部１０３より出力する画素データ、及び第２の記憶部１０４より出力する画素データのアドレスを生成する。
即ち、一般的に検出される動きベクトルは、探索を行った処理対象ブロックの周辺では、ほとんど変化が見られないことが多いため、第２アドレス生成部１００５は、まず、可能性の高い位置（たとえば、直前に探索したブロックの動きベクトルと同位置）の参照ブロックに対してブロックマッチングするように画素データのアドレスを生成する。
【０１９７】
整数精度動きベクトル検出部１０６は、第２のアドレス生成部１０５により第１の記憶部１０３から読み出された参照ブロックの画素データ、及び第２の記憶部１０４から読み出された処理対象ブロックの画素データとを入力として、当該処理対象ブロックと参照ブロックとの絶対差分誤差和計算し、探索実行可否決定部１００１に出力する。
【０１９８】
この探索実行可否決定部１００１では、整数精度動きベクトル検出部１０６により算出された絶対差分誤差が特定の閾値以下であるか否かが判断され、特定の閾値以下であれば、第２のアドレス生成部１００５が前回の探索で検出された動きベクトルを用いて決定した参照ブロックの位置を動きベクトル検出位置と決定し、動きベクトルの探索処理を終了する。
【０１９９】
一方、絶対差分誤差が特定の閾値以上の場合には、その後、他の参照ブロックに対して動きベクトル探索処理を実行するように第２のアドレス生成部１００５に出力する。
【０２００】
このように、動きベクトルが検出される可能性の高い位置（たとえば、直前に探索したブロックの動きベクトルと同位置）の参照ブロックに対してブロックマッチングを行い、そのマッチング結果（絶対差分誤差和）により、その後の探索実行の可否を判断することにより、処理速度の向上や消費電力の削減を図ることができる。
【０２０１】
また、この際、前記の判断の結果、動きベクトル探索を実行しない場合には、動きベクトル検出処理以降で用いる画素データとしては、第１の記憶部１０３に格納されている参照ブロック中で、前回の探索で検出された動きベクトル位置で示されている画素データが必要となる。
【０２０２】
そのため、本実施の形態１１の動きベクトル検出装置では、探索実行可否決定部１００１により、第２のアドレス生成部１００５に対して、前回の探索で検出された動きベクトル位置の画素データを整数精度動きベクトル検出部１０６をスルーして外部に出力するためのパスであるスルーパスを与える旨の指示が出力され、第２のアドレス生成部１００５は、第１の記憶部にスルーパスを与え、格納されている参照ブロックの画素データを整数精度動きベクトル検出部１０６をスルーして外部装置に出力する。
【０２０３】
このように、前回の動きベクトル探索で検出された動きベクトルを用いる場合であっても、第２のアドレス生成部１００５によりスルーパスを与えることにより、動きベクトル検出処理以降で用いる、前回の探索で検出された動きベクトル位置で示されている画素データを外部装置に出力することができる。
【０２０４】
なお、本発明の実施の形態１１による動きベクトル検出装置では、動きベクトルを検出する手段として、整数性どの動きベクトルを検出する整数精度動きベクトル検出部１０６のみを有するものについて説明したが、これに限定されず、少数精度の動きベクトルを検出するための、少数精度の画素データを生成する補間画素生成部と、前記補間画素生成部から出力されたデータ、及び第２の記憶部から出力されたデータより少数精度の動きベクトルを検出する少数精度動きベクトル検出部とをさらに具備するものであってもよい。
【０２０５】
（実施の形態１２）
また、本発明の動きベクトル検出装置は、前記実施の形態１から実施の形態１１以外にも、前記実施の形態１から実施の形態１１の内の少なくとも２つ以上を組み合わせたものであってもよく、前記実施の形態１から実施の形態１１のそれぞれの効果と同様の効果を得ることができる。
【０２０６】
【発明の効果】
本発明の請求項１、または請求項５に記載の動きベクトル検出装置、及び方法によれば、画像イメージにおける画素並びに対して市松模様に画素データの位置をサブサンプリングすることにより、マクロブロックを構成する全ての画素に対して絶対差分誤差和を求める場合と比較して、比較的高圧縮の場合には同等程度の精度を得ることができ、かつ絶対差分誤差和を求めるために必要とする計算量を、半分にすることができ、処理速度の向上や消費電力の削減につながる。
【０２１３】
また、本発明の請求項２、または請求項６に記載の動きベクトル検出装置、及び方法によれば、整数精度の動きベクトルを検出する動きベクトル検出装置において、前記請求項１、５に記載の発明と同様の効果を得ることができる。
【０２１４】
また、本発明の請求項３、または請求項７に記載の動きベクトル検出装置、及び方法によれば、少数精度の動きベクトルを検出する動きベクトル検出装置において、前記請求項１、５に記載の発明と同様の効果を得ることができる。
【０２１５】
また、本発明の請求項４、または請求項８に記載の動きベクトル検出装置、及び方法によれば、整数精度の動きベクトル、及び少数精度の動きベクトルを検出可能な動きベクトル検出装置において、前記請求項１、５に記載の発明と同様の効果を得ることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１による動きベクトル検出装置の構成を示すブロック図である。
【図２】本発明の実施の形態１による第２のアドレス生成部の構成を示すブロック図である。
【図３】本発明の実施の形態１による第２のアドレス生成部がサブサンプリングを行うマクロブロックの一例を示す図である
【図４】本発明の実施の形態１による第２のアドレス生成部の画素データのアドレス生成処理を説明するためのフローチャートである。
【図５】本発明の実施の形態２による動きベクトル検出装置の構成を示すブロック図である。
【図６】本発明の実施の形態２による動きベクトル検出部の構成を示すブロック図である。
【図７】本発明の実施の形態２による整数精度動きベクトル検出部の動作を説明するためのフローチャートである。
【図８】本発明の実施の形態３による動きベクトル検出装置の構成を示すブロック図である。
【図９】本発明の実施の形態３における動きベクトル検出装置による動きベクトル探索処理の一例を説明するための説明図である。
【図１０】本発明の実施の形態３による探索履歴保持部内のデータ構造を示す図である。
【図１１】本発明の実施の形態４による動きベクトル検出装置の構成を示すブロック図である。
【図１２】領域判定コードを説明するための説明図である。
【図１３】本発明の実施の形態４による転送ルール保持部内に格納されている領域判定コードと転送ルールの一例を示す図である。
【図１４】参照領域データの画素アドレスの一例を示す図である。
【図１５】本発明の実施の形態５による動きベクトル検出装置の構成を示すブロック図である。
【図１６】本発明の実施の形態５による第１の記憶部のメモリ構造を説明するための説明図である。
【図１７】本発明の実施の形態５による第１の記憶部内のデータ処理を説明するための説明図である。
【図１８】領域判定コードと、第１の記憶部が新たに読込むデータ、及び第１の記憶部内でコピーするデータとの対応を示す図である。
【図１９】本発明の実施の形態６による動きベクトル検出装置の構成を示すブロック図である。
【図２０】本発明の実施の形態６による補間画素生成部を説明するための説明図である。
【図２１】本発明の実施の形態６による補間画素生成部による半画素データの生成を説明するための説明図である。
【図２２】本発明の実施の形態６による補間画素生成部による半画素データの生成を説明するための説明図である。
【図２３】本発明の実施の形態７による動きベクトル検出装置の構成を示すブロック図である。
【図２４】本発明の実施の形態７による少数精度動きベクトル検出部の構成を説明するブロック図である。
【図２５】本発明の実施の形態８による動きベクトル検出装置の構成を示すブロック図である。
【図２６】（ａ）本発明の実施の形態８による探索可否条件保持部内に格納されている領域判定コードと探索可否条件の一例を示す図である。（ｂ）図２６（ａ）に示した探索可否条件を説明するための説明図である。
【図２７】本発明の実施の形態９による動きベクトル検出装置の構成を示すブロック図である。
【図２８】本発明の実施の形態１０による動きベクトル検出装置の構成を示すブロック図である。
【図２９】整数精度動きベクトル検出時の動きベクトル探索の一例を示す図である。
【図３０】本発明の実施の形態１１による動きベクトル検出装置の構成を示すブロック図である。
【図３１】従来の一般的な動きベクトル検出処理を説明するための説明図である。
【符号の説明】
１０１  データ保持部
１０２  第１のアドレス生成部
１０３  第１の記憶部
１０４  第２の記憶部
１０５、９０５、１００５  第２のアドレス生成部
１０６、２０６  整数精度動きベクトル検出部
３０１  探索履歴保持部
４０１  転送ルール保持部
４０２  転送ルール検出部
５０１  記憶データ制御部
６０１  補間画素生成部
６０２、７０１  少数精度動きベクトル検出部
６０３  読み出し方向決定部
１００１  探索実行可否決定部
１１    カラムカウンタ
１２    ロウカウンタ
１３    アドレス保持部
１４    加算器
２１    絶対差分誤差値計算部
２２    減算器
２３    カウンタ
２４    絶対差分誤差和計算部
２５、７３    動きベクトル検出部
７１    第１の絶対差分誤差和演算部
７２    第２の絶対差分誤差和演算部
８１    補間処理部
８２    シフトレジスタ群
【図１】
0003611507.tif 000002
【図２】
0003611507.tif 000003
【図３】
0003611507.tif 000004
【図４】
0003611507.tif 000005
【図５】
0003611507.tif 000006
【図６】
0003611507.tif 000007
【図７】
0003611507.tif 000008
【図８】
0003611507.tif 000009
【図９】
0003611507.tif 000010
【図１０】
0003611507.tif 000011
【図１１】
0003611507.tif 000012
【図１２】
0003611507.tif 000013
【図１３】
0003611507.tif 000014
【図１４】
0003611507.tif 000015
【図１５】
0003611507.tif 000016
【図１６】
0003611507.tif 000017
【図１７】
0003611507.tif 000018
【図１８】
0003611507.tif 000019
【図１９】
0003611507.tif 000020
【図２０】
0003611507.tif 000021
【図２１】
0003611507.tif 000022
【図２２】
0003611507.tif 000023
【図２３】
0003611507.tif 000024
【図２４】
0003611507.tif 000025
【図２５】
0003611507.tif 000026
【図２６】
0003611507.tif 000027
【図２７】
0003611507.tif 000028
【図２８】
0003611507.tif 000029
【図２９】
0003611507.tif 000030
【図３０】
0003611507.tif 000031
【図３１】
0003611507.tif 000032