(57)【要約】【課題】探索候補の画素ブロックの画素データの伝送回数を低減可能な構成の動きベクトル検出装置を提供する。【解決手段】動きベクトル検出装置１００における制御部１４ａにおいて、複数の探索ポイントに対応する探索候補画素ブロック間において、所定の探索ポイントに対応する画素データを、この画素データに対して重複する画素データ部分がある他の探索ポイントに対応する画素データに対して共用させるために、所定の探索ポイントに対応する画素データを加工して、他のポイントに対応する重複部分を含んだ第１画素データを生成し、当該第１画素データを用いて、所定の探索ポイントに対する画素データの読み込みに対して、他の探索ポイントの差分値和の演算も行うようにした。【選択図】      図１
2007123989.tif 000002
【特許請求の範囲】
【請求項１】
連続する複数フレームによって構成される動画像の所定フレームにおける、縦Ｍ個×横Ｎ個の符号化対象の画素（Ｍ，Ｎは自然数）から構成される符号化対象画素ブロックと、当該符号化対象画素ブロックと時間の隔たったフレームにおける縦Ｊ個×横Ｋ個の画素（Ｊ，Ｋは自然数）から構成される前記符号化対象画素ブロックよりも多い画素数の探索範囲画素ブロックとに基づき、ブロックマッチング法を用いて前記符号化対象画素ブロックに対する動きベクトルを検出する動きベクトル検出装置であって、
前記探索範囲画素ブロックにおける所定画素行又は所定画素列に対して予め設定された複数の探索ポイントの情報に基づき、前記探索範囲画素ブロックから、各探索ポイントにそれぞれ対応する縦Ｍ個×横Ｎ個の画素から構成される探索候補画素ブロックを選択する探索候補画素ブロック選択手段と、
前記選択された探索候補画素ブロックのうち一部の探索候補画素ブロックの画素データを取得し、前記探索ポイントの情報に基づき、前記取得した一部の探索候補画素ブロックの画素データを加工して、当該一部の画素データのうち当該一部以外の他部の探索候補画素ブロックの画素データと重複する部分の画素データを含んでなる第１画素データを生成する第１画素データ生成手段と、
前記第１画素データに基づき前記符号化対象画素ブロックの画素データを加工して、前記符号化対象画素ブロックの前記第１画素データに対応する画素データを含んでなる第２画素データを生成する第２画素データ生成手段と、
前記符号化対象画素ブロックの画素データと、前記一部の探索候補画素ブロックの画素データと、前記第１画素データと、前記第２画素データとに基づき、前記符号化対象画素ブロックの各画素の画素値と、当該各画素に対応する前記選択された各探索候補画素ブロックの各画素の画素値との差分値の絶対値を演算すると共に、当該差分値の絶対値を累積して各探索候補画素ブロックに対する差分値和を演算する差分値和演算手段と、を備えることを特徴とする動きベクトル検出装置。
【請求項２】
前記探索範囲画素ブロックに対する前記探索ポイントの総数よりも少数で、且つ前記差分値和演算手段で演算された差分値和を格納する差分値和格納レジスタと、
前記差分値和の最小値を格納する最小値格納レジスタと、
前記差分値和格納レジスタに格納された差分値和と、前記最小値格納レジスタに格納された差分値和とを比較して、前記差分値和格納レジスタに格納された差分値和の方が前記最小値格納レジスタに格納された差分値和よりも小さい値であったときに、前記最小値格納レジスタに格納された差分値和を前記差分値和格納レジスタに格納された差分値和に更新する最小値更新手段と、を備え、
前記最小値更新手段は、所定の前記差分値和格納レジスタに前記差分値和が格納される毎に、前記最小値格納レジスタの更新処理を行うようになっていることを特徴とする請求項１記載の動きベクトル検出装置。
【請求項３】
前記差分値和格納レジスタを、前記探索範囲画素ブロックにおける画素行方向又は画素列方向の各所定位置に対してそれぞれ設定される複数の探索ポイントの、各画素行又は各画素列における設定数のうち最大数に相当する数だけ備え、
前記各画素行又は各画素列に設定された各探索ポイントに、前記最大数に相当する数の差分値和格納レジスタのいずれかを、そのそれぞれが互いに重複しないように一対一に対応付け、
前記差分値和演算手段は、前記各画素行又は各画素列に設定された前記複数の探索ポイントに対する差分値和の演算処理を並列に行うようになっていることを特徴とする請求項２記載の動きベクトル検出装置。
【請求項４】
前記差分値和演算手段は、前記各画素行又は各画素列の画素データの総ビット数を固定長として各画素データを取り扱うようになっており、
前記第１画素データ生成手段は、前記他部の探索候補画素ブロックの各画素行又は各画素列に対する前記固定長の第１画素データを生成する際に、前記重複する部分の画素データが前記固定長の第１画素データを構成するのに不足しているときに、当該不足分の画素データを特定データで補ったものを生成するようになっており、
前記特定データに対する前記差分値和の演算処理を、前記差分値和演算手段に実行させないようになっていることを特徴とする請求項３記載の動きベクトル検出装置。
【請求項５】
前記差分値和演算手段は、複数の演算ユニットによって、前記複数の探索ポイントに対する差分値和の演算処理を並列に行うようになっており、
前記第１画素データ生成手段は、前記複数の演算ユニットのうち演算を行わないタイミングがある演算ユニットに対して、これとは他の演算ユニットで前記タイミングにおいて演算を行う探索候補画素ブロックの画素データを複数に分割した分割画素データを生成するようになっており、
前記第２画素データ生成手段は、前記分割画素データに基づき、前記符号化対象画素ブロックの画素データを加工して、前記符号化対象画素ブロックの前記分割画素データに対応する画素データを含んでなる第３画素データを生成するようになっており、
前記差分値和演算手段は、前記分割画素データ及び前記第３画素データに基づき、同一の探索候補画素ブロックの画素データに対する演算処理を並列に行うようになっていることを特徴とする請求項３又は請求項４記載の動きベクトル検出装置。
【請求項６】
前記差分値和演算手段は、前記符号化対象画素ブロックにおける各画素行毎又は各画素列毎に順番に前記差分値和の演算処理を行うようになっており、
前記符号化対象画素ブロックの前記各画素行又は前記各画素列を構成する画素の総ビット数を、前記各差分値和格納レジスタに対応する画素のデータを前記差分値和演算手段に伝送するデータ伝送バスのデータ伝送ビット数と同じビット数にしたことを特徴とする請求項１乃至請求項５のいずれか１項に記載の動きベクトル検出装置。
【請求項７】
前記差分値和演算手段は、前記差分値の絶対値に代えて差分値の自乗値を演算し、当該差分値の自乗値を累積して前記差分値和を演算することを特徴とする請求項１乃至請求項６のいずれか１項に記載の動きベクトル検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、比較的広い探索範囲から所定フレームの符号化対象画素ブロックに対する動きベクトルを検出する動きベクトル検出装置に関する。
【背景技術】
【０００２】
従来、ＭＰＥＧ（Motion Picture Experts Group）規格等の動画像圧縮において、連続する複数フレームで構成される動画像の所定フレームにおける符号化対象の画素ブロックに対する動きベクトルを検出して符号化効率を高める技術がある。具体的には、動画像を形成するそれぞれが時間的に離れたフレーム間で、一方のフレーム内の符号化対象のブロックと、他方のフレーム内のサーチエリア（参照画素の範囲）における候補ブロックとのブロックマッチングを行い、相関の最も高いブロックのフレーム内の相対位置を動きベクトルとして検出する。このような技術として、例えば、特許文献１に記載の動きベクトル検出回路及び特許文献２に記載の演算回路などがある。
【０００３】
特許文献１の従来技術は、広範囲のサーチエリアを対象とした動きベクトルの検出処理を行う回路であって、Ｍ×Ｎ個の演算ユニットを用いて、符号化対象ブロックと候補ブロックとのマッチング演算を並列処理する検出回路である。回路構成としては、参照画素データを基準に符号化対象画素データをシフトレジスタを用いて逐次比較し、演算ユニットの出力をそれぞれの差分演算結果レジスタに格納する。
【０００４】
また、特許文献２の従来技術は、符号化対象の画素ブロックと、Ｍ×Ｎ個の探索候補の画素ブロックとに対して、符号化対象の画素ブロックと探索候補の画素ブロックとの差分絶対値和を演算するＭ×Ｎ個の演算ユニットを備え、当該Ｍ×Ｎ個の演算ユニットを行列状に配置して相互接続し、符号化対象の画素ブロック及び探索候補の画素ブロックの画素値を一定の順序で供給して動きベクトルの検出処理を行う演算回路である。このような構成とすることで、演算ユニットにおいて、探索候補の画素ブロックの画素値をレジスタに格納することなく差分絶対値和の計算を行うことができるので、回路規模を縮小することが可能となる。
【０００５】
また、上記特許文献１及び特許文献２などの従来技術においては、外部バッファなどから探索候補の画素データを取得するときに、各探索候補の画素ブロック毎に、当該画素ブロックにおける処理単位（例えば、画素行単位）の画素データを、順次データ伝送バスを介して探索ポイント分全て取得している。
【特許文献１】特開平１０−１３８３７号公報
【特許文献２】特開平６−１４１３０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１及び特許文献２などの従来技術においては、データ伝送バスの使用状況によっては、データ伝送に遅延が生じてしまいデータの取得に多くの時間がかかる恐れがあり、その結果、差分絶対値和の演算処理時間が増大してしまうといった問題が生じる恐れがあった。
また、上記特許文献１の従来技術においては、演算ユニットの出力をそれぞれの差分演算結果レジスタに格納しているため、シフトレジスタや演算結果格納用レジスタが演算対象画素数必要となり、広範囲のサーチエリアを設定した場合に、回路の規模及び回路の製造コストが増加するという問題があった。
【０００７】
また、上記特許文献２の従来技術においても、広範囲のサーチエリアを設定した場合に、探索候補の画素ブロック数（Ｍ×Ｎ個）が増加するため、差分演算用のシフトレジスタ回路と中間演算データを格納するレジスタが増加分に応じた個数必要となり、回路規模及び回路コストが増加するという問題が生じる。
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、探索候補の画素ブロックの画素データの伝送回数を低減可能な構成の動きベクトル検出装置を提供することを第１の目的とし、比較的広い探索範囲から所定フレームの符号化対象画素ブロックに対する動きベクトルを検出する場合に、当該動きベクトルの検出処理に必要なレジスタの個数を従来に比して低減可能な構成の動きベクトル検出装置を提供することを第２の目的としている。
【課題を解決するための手段】
【０００８】
〔形態１〕  上記目的を達成するために、形態１の動きベクトル検出装置は、
連続する複数フレームによって構成される動画像の所定フレームにおける、縦Ｍ個×横Ｎ個の符号化対象の画素（Ｍ，Ｎは自然数）から構成される符号化対象画素ブロックと、当該符号化対象画素ブロックと時間の隔たったフレームにおける縦Ｊ個×横Ｋ個の画素（Ｊ，Ｋは自然数）から構成される前記符号化対象画素ブロックよりも多い画素数の探索範囲画素ブロックとに基づき、ブロックマッチング法を用いて前記符号化対象画素ブロックに対する動きベクトルを検出する動きベクトル検出装置であって、
前記探索範囲画素ブロックにおける所定画素行又は所定画素列に対して予め設定された複数の探索ポイントの情報に基づき、前記探索範囲画素ブロックから、各探索ポイントにそれぞれ対応する縦Ｍ個×横Ｎ個の画素から構成される探索候補画素ブロックを選択する探索候補画素ブロック選択手段と、
前記選択された探索候補画素ブロックのうち一部の探索候補画素ブロックの画素データを取得し、前記探索ポイントの情報に基づき、前記取得した一部の探索候補画素ブロックの画素データを加工して、当該一部の画素データのうち当該一部以外の他部の探索候補画素ブロックの画素データと重複する部分の画素データを含んでなる第１画素データを生成する第１画素データ生成手段と、
前記第１画素データに基づき前記符号化対象画素ブロックの画素データを加工して、前記符号化対象画素ブロックの前記第１画素データに対応する画素データを含んでなる第２画素データを生成する第２画素データ生成手段と、
前記符号化対象画素ブロックの画素データと、前記一部の探索候補画素ブロックの画素データと、前記第１画素データと、前記第２画素データとに基づき、前記符号化対象画素ブロックの各画素の画素値と、当該各画素に対応する前記選択された各探索候補画素ブロックの各画素の画素値との差分値の絶対値を演算すると共に、当該差分値の絶対値を累積して各探索候補画素ブロックに対する差分値和を演算する差分値和演算手段と、を備えることを特徴としている。
【０００９】
このような構成であれば、探索候補画素ブロック選択手段によって、前記探索範囲画素ブロックにおける所定画素行又は所定画素列に対して予め設定された複数の探索ポイントの情報に基づき、前記探索範囲画素ブロックから、各探索ポイントにそれぞれ対応する縦Ｍ個×横Ｎ個の画素から構成される探索候補画素ブロックを選択することが可能であり、第１画素データ生成手段によって、前記選択された探索候補画素ブロックのうち一部の探索候補画素ブロックの画素データを取得し、前記探索ポイントの情報に基づき、前記取得した一部の探索候補画素ブロックの画素データを加工して、当該一部の画素データのうち当該一部以外の他部の探索候補画素ブロックの画素データと重複する部分の画素データを含んでなる第１画素データを生成することが可能であり、第２画素データ生成手段によって、前記第１画素データに基づき前記符号化対象画素ブロックの画素データを加工して、前記符号化対象画素ブロックの前記第１画素データに対応する画素データを含んでなる第２画素データを生成することが可能である。
【００１０】
また、差分値和演算手段によって、前記符号化対象画素ブロックの画素データと、前記一部の探索候補画素ブロックの画素データと、前記第１画素データと、前記第２画素データとに基づき、前記符号化対象画素ブロックの各画素の画素値と、当該各画素に対応する前記選択された各探索候補画素ブロックの各画素の画素値との差分値の絶対値を演算すると共に、当該差分値の絶対値を累積して各探索候補画素ブロックに対する差分値和を演算することが可能である。
【００１１】
従って、探索候補画素ブロックの一部の画素データを用いて、探索候補画素ブロックの他部の画素データを生成することが可能であるので、探索候補画素ブロックの一部の画素データのみを取得すれば、全探索候補画素ブロックの画素データを差分値和演算手段に供給することが可能となるので、これにより、探索候補画素ブロックの画素データの取得回数（伝送回数）を低減でき、差分値和の演算処理にかかる時間を短縮することができるという効果が得られる。
【００１２】
ここで、上記符号化対象画素ブロックは、各画素行を構成する画素数がＭ個で、各画素列を構成する画素数がＮ個の画素行列から構成されており、上記探索範囲画素ブロックは、各画素行を構成する画素数がＪ個で、各画素列を構成する画素数がＫ個の画素行列から構成されており、両者の関係は、「Ｊ＞Ｍ，Ｋ＞Ｎ」、「Ｊ＞Ｍ，Ｋ≧Ｎ」、「Ｊ≧Ｍ，Ｋ＞Ｎ」のいずれかとなる。
【００１３】
また、上記符号化対象画素ブロックと上記探索候補画素ブロックとは、同じ行数及び同じ列数（各行及び各列の画素数も同数）の画素行列となる。
また、上記ブロックマッチング法とは、動きベクトルを検出する手法の一つであり、画像中のある大きさの領域をテンプレートのブロック（探索候補画素ブロック）とし、前フレームの探索範囲のブロック（探索範囲画素ブロック）における評価対象のテンプレートブロックと現フレームの注目ブロック（符号化対象画素ブロック）との差分評価関数の値（差分値和）を最小とする点を対応点とする手法である。つまり、この最小となる点が動きベクトルとなる。ブロックマッチング法においては、 最小点を求める上で、探索範囲のブロック（テンプレートブロックよりも大きな範囲のブロック）における、評価対象のテンプレートブロックの全パターンに対して注目ブロックとの差分評価関数の値を求めることが望ましいが、このやり方であると探索範囲のブロックサイズが大きくなればなるほどブロックマッチングの処理負荷が大きくなってしまうので、探索範囲のブロックサイズが大きい場合などは、ある程度間引いてテンプレートブロックを設定することで処理負荷を軽くしている。
【００１４】
また、上記探索ポイントの情報とは、例えば、探索範囲画素ブロックにおける各探索候補画素ブロックの開始位置（これを、探索ポイントという）を決定する情報であり、例えば、探索ポイントを示すアドレス情報等が登録されたデータテーブルであったり、公知のスパイラル探索法のアルゴリズム（例えば、公知のログアリスミックサーチアルゴリズム等）などの探索ポイントを決定するアルゴリズムの情報であったりする。例えば、探索候補画素ブロック選択手段が、探索範囲画素ブロックに対して、探索候補画素ブロックの左上隅の画素の位置を画素行方向に対して１画素毎、画素列方向に対して１画素毎にずらしながらＭ×Ｎの探索候補画素ブロックを順番に選択する場合に、各探索候補画素ブロックの左上隅の画素データのアドレス等が探索ポイントを示す情報となる。
【００１５】
また、上記差分値和演算手段は、例えば、本発明が差分値和を演算する演算ユニットを１つ備える構成の場合は、各探索ポイントの探索候補画素ブロックの画素データに対して１つずつ順番に差分値和の演算処理を行ったり、例えば、本発明が前記演算ユニット及び演算結果を格納するレジスタを複数備える構成の場合は、複数の探索ポイントに対する差分値和演算処理を並列で行ったりするなど、前記演算ユニットの個数や演算結果を格納するレジスタの個数などに応じた演算性能を有するものである。
【００１６】
〔形態２〕  更に、形態２の動きベクトル検出装置は、形態１の動きベクトル検出装置において、
前記探索範囲画素ブロックに対する前記探索ポイントの総数よりも少数で、且つ前記差分値和演算手段で演算された差分値和を格納する差分値和格納レジスタと、
前記差分値和の最小値を格納する最小値格納レジスタと、
前記差分値和格納レジスタに格納された差分値和と、前記最小値格納レジスタに格納された差分値和とを比較して、前記差分値和格納レジスタに格納された差分値和の方が前記最小値格納レジスタに格納された差分値和よりも小さい値であったときに、前記最小値格納レジスタに格納された差分値和を前記差分値和格納レジスタに格納された差分値和に更新する最小値更新手段と、を備え、
前記最小値更新手段は、所定の前記差分値和格納レジスタに前記差分値和が格納される毎に、前記最小値格納レジスタの更新処理を行うようになっていることを特徴としている。
【００１７】
このような構成であれば、最小値更新手段によって、前記探索範囲画素ブロックに対する前記探索ポイントの総数よりも少数の、前記差分値和を格納する差分値和格納レジスタに格納された差分値和と、前記差分値和の最小値を格納する最小値格納レジスタに格納された差分値和とを比較して、前記差分値和格納レジスタに格納された差分値和の方が前記最小値格納レジスタに格納された差分値和よりも小さい値であったときに、前記最小値格納レジスタに格納された差分値和を前記差分値和格納レジスタに格納された差分値和に更新することが可能である。
【００１８】
そして、最小値更新手段は、所定の前記差分値和格納レジスタに差分値和が格納される毎に、前記最小値の更新処理を行うことが可能である。
従って、例えば、所定数の差分値和格納レジスタにそれぞれ対応した探索候補画素ブロックに対する差分値和が、所定数の差分値和格納レジスタに対して（２つ以上の場合は並列に）演算され、その演算結果が所定数の差分値和格納レジスタに格納される毎に、この格納された差分値和と最小値格納レジスタに格納された差分値和とを比較して上記最小値の更新処理を行うようにすることで、複数の探索ポイントに対応した探索候補画素ブロックに対して、同じ差分値和格納レジスタを何度も使い回すことが可能となるので、差分値和格納レジスタの個数を従来に比して少数に抑えることが可能となる。これにより、装置の回路規模を縮小できると共に、装置の製造コストを削減できるという効果が得られる。
【００１９】
〔形態３〕  更に、形態３の動きベクトル検出装置は、形態１又は２の動きベクトル検出装置において、
前記差分値和格納レジスタを、前記探索範囲画素ブロックにおける画素行方向又は画素列方向の各所定位置に対してそれぞれ設定される複数の探索ポイントの、各画素行又は各画素列における設定数のうち最大数に相当する数だけ備え、
前記各画素行又は各画素列に設定された各探索ポイントに、前記最大数に相当する数の差分値和格納レジスタを、そのそれぞれが互いに重複しないように一対一に対応付け、
前記差分値和演算手段は、前記各画素行又は各画素列に設定された前記複数の探索ポイントに対する差分値和の演算処理を並列に行うようになっていることを特徴としている。
【００２０】
このような構成であれば、本装置を構成する差分値和格納レジスタが、探索範囲画素ブロックにおける画素行方向又は画素列方向の各行又は各列の所定位置に設定される探索ポイント数の最大数だけあれば済むので、特に、処理の高速化等のために、画素行方向又は画素列方向に対して所定画素数毎に間引いて探索ポイントが設定される場合などにおいて、差分値和格納レジスタの個数を従来に比して少数に抑えることが可能となる。これにより、装置の回路規模を縮小できると共に、装置の製造コストを削減できるという効果が得られる。また、各画素行又は各画素列に設定された複数の探索ポイントに対する差分値和の演算処理を並列に行うことが可能となるので、差分値和演算処理の処理速度を高速化することができるという効果が得られる。
【００２１】
ここで、上記各画素行又は各画素列における設定数のうち最大数に相当する数とは、具体的に、各画素行毎又は各画素列毎に設定される探索ポイント数のうち最大となる数のことである。例えば、縦２５６画素×横２５６画素の第１の探索範囲画素ブロックに対して、探索ポイントの設定アルゴリズムとしてログアリスミックサーチを用い、探索ポイントの設定画素行（ここでは、全５行とする）における各設定画素行毎に５個ずつの計２５個の探索ポイントを設定し、これら各探索ポイントの探索候補画素ブロックに対して差分評価関数が最小値となる探索ポイントが検出されると、次に、この最小値に対応する探索ポイントを中心に第１の探索範囲画素ブロックより狭い範囲の第２の探索範囲画素ブロックを設定し、これに対して探索ポイントの設定画素行（ここでは、全３行とする）における各設定画素行毎に３個ずつ計９個の探索ポイントを設定し、これら各探索ポイントの探索候補画素ブロックにおいて差分評価関数が最小値となる探索ポイントが検出されると、更に、この最小値の探索ポイントを中心に第２の探索範囲画素ブロックより小さい範囲の第３の探索範囲画素ブロックを設定し、・・・といったように、探索範囲サイズ及び探索ポイント数を可変させながら差分評価関数が最小値となる探索ポイントを絞り込んでいくような探索を行うとする。この場合は、第２、第３の探索範囲画素ブロックと探索範囲画素ブロックのサイズが小さくなるのに応じて、探索ポイントの設定数も減少しているので、第１の探索範囲画素ブロックの各設定画素行毎に設定される探索ポイントの設定数５個が一番多い設定数となる。つまり、このような場合は、本装置を構成する差分値和格納レジスタの個数を最大数である５個とする。但し、各設定画素行毎に設定される探索ポイント数がいずれも同数（例えば、５個）となる場合は、その数と同数（例えば、５個）の差分値和格納レジスタで本装置を構成する。
【００２２】
〔形態４〕  更に、形態４の動きベクトル検出装置は、形態３の動きベクトル検出装置において、
前記差分値和演算手段は、前記各画素行又は各画素列の画素データの総ビット数を固定長として各画素データを取り扱うようになっており、
前記第１画素データ生成手段は、前記他部の探索候補画素ブロックの各画素行又は各画素列に対する前記固定長の第１画素データを生成する際に、前記重複する部分の画素データが前記固定長の第１画素データを構成するのに不足しているときに、当該不足分の画素データを特定データで補ったものを生成するようになっており、
前記特定データに対する前記差分値和の演算処理を、前記差分値和演算手段に実行させないようになっていることを特徴としている。
【００２３】
このような構成であれば、不足分の画素データを、例えば「００ｈ」などの特定のデータで補った固定長の第１画素データを構成し、当該特定のデータ部分に対する差分値和の演算処理を差分値和演算手段に行わせないように指令を与えるなどすることが可能となるので、差分値和演算手段に、第１画素データのうち前記重複する部分の画素データに対してのみ演算処理を行わせ、重複する画素データの無い部分の特定データに対する演算処理を実行させないようにすることができるので、不必要な部分の演算処理時間を短縮することができ、これにより、総合的な演算処理時間を短縮することができるという効果が得られる。
【００２４】
〔形態５〕  更に、形態５の動きベクトル検出装置は、形態１乃至４のいずれか１の動きベクトル検出装置において、
前記差分値和演算手段は、複数の演算ユニットによって、前記複数の探索ポイントに対する差分値和の演算処理を並列に行うようになっており、
前記第１画素データ生成手段は、前記複数の演算ユニットのうち演算を行わないタイミングがある演算ユニットに対して、これとは他の演算ユニットで前記タイミングにおいて演算を行う探索候補画素ブロックの画素データを複数に分割した分割画素データを生成するようになっており、
前記第２画素データ生成手段は、前記分割画素データに基づき、前記符号化対象画素ブロックの画素データを加工して、前記符号化対象画素ブロックの前記分割画素データに対応する画素データを含んでなる第３画素データを生成するようになっており、
前記差分値和演算手段は、前記分割画素データ及び前記第３画素データに基づき、同一の探索候補画素ブロックの画素データに対する演算処理を並列に行うようになっていることを特徴としている。
【００２５】
このような構成であれば、例えば、探索ポイント毎に演算ユニットを割り当てて演算を行っているような場合に、演算処理の後半などにおいて探索ポイントの割り当てられない余りの演算ユニットが出てきたときに、この演算ユニットに対して、他の演算ユニットで演算処理を行う画素データの一部に対する演算処理を任せることが可能となり、これによって、同一の探索ポイントに対する画素データに対して並列に演算処理を行うことができるので、差分値和の演算処理効率を向上することができるという効果が得られる。
【００２６】
例えば、差分値和演算手段が演算ユニット１〜３の３つの演算ユニットを有している場合を想定すると、これら３つの演算ユニット１〜３を用いた５個の探索ポイント１〜５に対する所定画素行の差分値和の並列演算処理を行った場合に、当該処理の後半において、探索ポイント４の所定画素行の一部と探索ポイント５の所定画素行とに対する差分値和の演算処理が残ったとする。演算ユニットは、探索ポイント４及び５の各所定画素行に対して一つずつ用いれば良いので演算ユニット１及び２を用いるとすると、演算ユニット３が余ることになる。このような場合に、本装置においては、演算処理を行う２つの探索ポイント４及び５のうち、より多くの画素データに対する演算処理を行う必要がある探索ポイント５の所定画素行の画素データを２つに分割（例えば、１２８ビットの画素データであれば、各６４ビットの２つの画素データに分割）して、元々の演算ユニット２と、残り１つの演算ユニット３との２つの演算ユニットを用いて並列に演算処理を行う事や、どちらか一つの演算処理を２つの演算ユニットを用いて、画素ブロックの画素行のライン番号（Ｌｉｎｅ０〜Ｌｉｎｅ７）とライン番号（Ｌｉｎｅ８〜Ｌｉｎｅ１５）に分け並列に演算処理を行う事で差分値和の演算処理速度を向上することが可能となる。
【００２７】
〔形態６〕  更に、形態６の動きベクトル検出装置は、形態１乃至５のいずれか１の動きベクトル検出装置において、
前記差分値和演算手段は、前記符号化対象画素ブロックにおける各画素行毎又は各画素列毎に順番に前記差分値和の演算処理を行うようになっており、
前記符号化対象画素ブロックの前記各画素行又は前記各画素列を構成する画素の総ビット数を、前記各差分値和格納レジスタに対応する画素のデータを前記差分値和演算手段に伝送するデータ伝送バスのデータ伝送ビット数と同じビット数にしたことを特徴としている。
【００２８】
このような構成であれば、符号化対象画素ブロックの各画素行又は各画素列を構成する画素のデータ（データ伝送バスのバス幅（バスの最大伝送ビット数）と同じビット数）を一遍に伝送することが可能となるので、データ伝送バスの伝送能力を効率よく利用でき、上記した並列処理等を併用することで、差分値和演算処理の処理速度を高速化することができるという効果が得られる。
【００２９】
〔形態７〕  更に、形態７の動きベクトル検出装置は、形態１乃至６のいずれか１の動きベクトル検出装置において、
前記差分値和演算手段は、前記差分値の絶対値に代えて差分値の自乗値を演算し、当該差分値の自乗値を累積して前記差分値和を演算することを特徴としている。
このような構成であれば、差分値の自乗値を累積した差分値和を用いて、動きベクトルを検出することが可能である。
【００３０】
従って、差分値の自乗値を累積した差分値和を用いた場合においても、装置の回路規模を縮小できると共に、装置の製造コストを削減できるという効果が得られる。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の実施の形態を図面に基づき説明する。図１〜図１４は、本発明に係る動きベクトル検出装置の実施の形態を示す図である。
本発明に係る動きベクトル検出装置は、現フレームの符号化対象画素ブロックである対象画素データと、１つ前のフレームの探索候補画素ブロックである参照画素データにおける探索候補画素ブロックとに対して、ブロックマッチング法を用いて両者の誤差が最小となる探索候補画素ブロックを探索し、当該探索した画素データの位置情報に基づき対象画素データに対する動きベクトルを検出する構成とした。
【００３２】
まず、本発明に係る動きベクトル検出装置の構成を図１に基づき説明する。図１は、本発明に係る動きベクトル検出装置１００の構成を示すブロック図である。
動きベクトル検出装置１００は、連続する複数フレームによって構成される動画像における所定フレームの符号化対象画素ブロック（対象画素データ）に対する動きベクトルを検出する装置であって、図１に示すように、プロセッサ１０と、中間バッファ１２と、動き検出部１４と、データ伝送バス１６とを含んだ構成となっている。
【００３３】
プロセッサ１０は、動きベクトル検出装置１００全体を制御するものであり、図示しない命令メモリの所定アドレスに記憶された命令コードを、図示しない命令キャッシュを介して取得しつつ、動きベクトル検出処理全般を管理する。具体的には、レジスタ１４ｂを介して命令コードに応じた指示を制御部１４ａに与え（例えば、レジスタ１４ｂへのフラグの書き込みなど）、制御部１４ａに、動き検出部１４の各部に指示信号（起動制御信号あるいはモード設定信号等）を出力させたりする。ここで、前記起動制御信号とは、動き検出部１４の各部を所定タイミングで起動させる指示信号であり、前記モード設定信号とは、動画像の各フレーム毎に、動きベクトル検出処理における探索範囲、フレームの圧縮タイプ（Ｐ，Ｂ，Ｉ）、圧縮モード（ＭＰＥＧ１，２，４）等、プロセッサ１０のメモリ内プログラムにより、レジスタ１４ｂを介して動き検出部１４に対する種々の指定を行う指示信号である。
【００３４】
ここで、命令メモリは、プロセッサ１０に対して入力される種々の命令コードを記憶しており、プロセッサ１０からの読み出しに応じて、指定されたアドレスの命令コードを命令キャッシュに出力する。
また、命令キャッシュは、命令メモリから入力された命令コードを一時的に記憶し、所定タイミングでプロセッサ１０に出力する。
【００３５】
中間バッファ１２は、動きベクトル検出処理において用いられる、当該動きベクトルの探索範囲の画素ブロックである参照画素データを記憶するメモリであり、例えば、２次元アクセスメモリ等から構成される。
ここで、参照画素データは、後述する現フレーム（ｆ）の符号化対象の画素データである対象画素データに対して例えば１つ前のフレーム（ｆ−１）の画像の画素データであり、且つ前記対象画素データのサイズよりも大きなサイズ（画素範囲）の画素データである。
【００３６】
また、上記２次元アクセスメモリとは、特開２００２−２２２１１７号公報に記載された方式のメモリであり、例えば、「１バイト（８ビット）の記憶が可能な最小単位の仮想の記憶素子２が、縦方向と横方向にそれぞれ４個ずつ合計１６個配置された仮想最小２次元メモリ空間１」（同公報の図１参照）が想定され、この仮想最小２次元メモリ空間１は、「物理的には、４つの物理的なメモリ４Ａ〜４Ｃに予め分割されてマッピングされている。すなわち、１つの仮想最小２次元メモリ空間１は、４つの物理的なメモリ４Ａ〜４Ｃの同一のアドレスから始まる４バイトの連続領域に対応している。」（同公報の図２参照）。そして、このような仮想最小２次元メモリ空間１において、同公報の図４に示すようなアクセスが可能とされている。これにより、例えば、複数の探索ポイントに対するデータに同時にアクセスすることができるので、データの読み出しや書き込み処理を高速化することが可能である。
【００３７】
更に、図２に基づき、上記参照画素データ及び上記対象画素データについて具体的に説明する。ここで、図２（ａ）は、参照画素データの一構成例を示す図であり、（ｂ）は、対象画素データの一構成例を示す図である。また図３（ａ）は、探索候補画素ブロック及び対象画素データの一構成例を示す図であり、（ｂ）は、参照画素データの一構成例を示す図である。
【００３８】
図２（ｂ）に示すように、現フレーム（ｆ）の画像データである画像データ３１において、前述した符号化対象の画素データである対象画素データ３１ａが設定される。これに対して、図２（ａ）に示すように、１つ前のフレーム（ｆ−１）の画像データである画像データ３０において、対象画素データ３１ａに対する動きベクトルを探索する範囲である参照画素データ３０ａが設定される。つまり、図２（ａ），（ｂ）に示すように、現フレームにおける対象画素データ３１ａと同じ位置にある、１つ前のフレームにおける画素ブロック３０ｂが含まれるように参照画素データの範囲が設定される。より具体的には、例えば、図３（ａ）に示すように、探索候補の画素ブロック３０ｂが、縦１６画素×横１６画素のブロックで構成されているとすると、参照画素データ３０ａは、例えば、図３（ｂ）に示すように、縦２５６画素×横２５６画素のサイズで構成される。つまり、参照画素データ３０ａは、対象画素データ３１ａと同じサイズの縦１６画素×横１６画素のサイズの探索候補の画素ブロック３０ｂが、縦４ブロック×横４ブロックの計１６ブロック連なった範囲となり、対象画素データのサイズより大きなサイズとなる。
【００３９】
また、本実施の形態においては、対象画素データの各画素行及び各画素列を構成する画素の総ビット数は、後述するデータ伝送バスの幅（伝送ビット数）と同じビット数となるようにしている。これは、後述する差分値和の演算処理において、中間バッファ１２に格納された参照画素データを効率よく動き検出部１４に伝送するためである。
図１に戻って、動き検出部１４は、制御部１４ａと、レジスタ１４ｂと、ローカルバッファ１４ｃと、差分値和演算部１４ｄとを含んだ構成となっている。
【００４０】
制御部１４ａは、データ伝送バス１６を介してプロセッサ１０から送られてきた各種指示信号を、レジスタ１４ｂを介して各構成要素に伝送したり、探索ポイント情報に基づき、中間バッファ１２に格納された参照画素データを読み出して（例えば、ＤＭＡ（Direct Memory Access）転送で行う）、これを差分値和演算部１４ｄに伝送したり、ローカルバッファ１４ｃから対象画素データを読み出し、これを差分値和演算部１４ｄに伝送したり、探索ポイント情報に基づき、中間バッファ１２から読み出した参照画素データに対して加工処理を施し、これを差分値和演算部１４ｄに伝送したり、前記加工処理後の参照画素データに基づき、ローカルバッファ１４ｃから読み出した対象画素データに対して加工処理を施し、これを差分値和演算部１４ｄに伝送したりするなど、動き検出部１４を統括制御する機能を有したものである。また、差分値和演算ユニットの動作状況に基づき、演算ユニットに空きが生じる場合に、これから演算を行う探索ポイントの参照画素データを空きの生じる演算ユニットの数に応じた数に分割した画素データを生成して、これを差分値和演算部１４ｄに供給して、並列演算させる機能を有している。また、差分値和演算部１４で演算された差分値和の最小値及びその探索ポイント情報からアドレス値演算を行って動きベクトルを求め、当該動きベクトルの情報をレジスタ１４ｂの所定のレジスタに格納する機能なども有している。なお、参照画素データの加工処理及び対象画素データの加工処理についての詳細は後述する。
【００４１】
ここで、探索ポイント情報とは、参照画素データにおける各探索候補画素ブロックの位置を示す情報のことであり、本実施の形態においては、各探索候補画素ブロックの左上隅の画素の位置を示す情報（例えば、通し番号やアドレス番号等）、画素ブロックの範囲（サイズ）を示す情報などを含む情報が探索ポイント情報となる。
レジスタ１４ｂは、プロセッサ１０がデータ伝送バス１６を介してアクセス可能な制御レジスタであり、参照画素データの画素行方向又は画素列方向に対して設定される各探索ポイント数ｎと同数の前記差分値和の演算結果を格納する（中間演算結果も格納する）演算結果格納レジスタ１４０ａ0〜１４０ａnと、差分値和の最小値を格納する１つの最小値格納レジスタ１４０ｂとを含んだ構成となっている。更に、参照画素データの位置情報（アドレス）、演算開始の情報等を格納するレジスタなども含んだ構成となっている。
【００４２】
ローカルバッファ１４ｃは、動きベクトル検出処理において用いられる、現フレーム（ｆ）の画像の画素データである符号化処理対象の画素データ（対象画素データ）を記憶するメモリである。なお、ＭＰＥＧなどの動画像符号化技術においては、この対象画素データを構成する画素ブロック（例えば、１６画素×１６画素など）をマクロブロックと呼ぶ。
【００４３】
差分値和演算部１４ｄは、複数の差分値和演算ユニット１４ｄ1〜１４ｄzを含んだ構成となっており、制御部１４ａからの演算開始命令及び各種データに基づき、参照画素データにおける探索候補画素ブロックの画素値と、対象画素データの画素値との差分値和を演算すると共に、この演算結果に基づき、各対象画素データ毎に、当該対象画素データに対する全探索候補画素ブロックのうち差分値和が最小となる探索候補画素ブロックを検出する機能を有している。
【００４４】
ここで、探索候補画素ブロックとは、参照画素データにおける、動きベクトルの探索候補（ブロックマッチングを行うテンプレート）の画素ブロックであり、対象画素データと同じサイズの画素ブロックである。つまり、差分値和演算部１４ｄは、参照画素データにおいて設定された複数の探索候補画素ブロックの各画素値と、対象画素データの各画素値との差分値和を演算し且つ当該差分値和に基づいてこれらの最小値を求める。
【００４５】
また、差分値和の演算処理は、具体的には、制御部１４ａから供給される参照画素データにおける前記演算開始命令の指定する複数の探索ポイント（本実施の形態においては、参照画素データにおける所定の画素行にそれぞれ設定された探索ポイント）に対応した探索候補画素ブロックの画素データと、同じく制御部１４ａから供給される各探索ポイントの前記供給される参照画素データに対応した対象画素データとに基づき、各探索候補画素ブロックの画素データの画素値と、これに対応する対象画素データの画素値との差分値の絶対値又は自乗値を算出し、当該算出した差分値の絶対値又は自乗値を各探索候補画素ブロック毎に全て累積して差分値和を演算する処理である。このとき、複数（ｎ個）の探索ポイントに対する差分値和の演算処理は、前述した差分値和演算ユニット１４ｄ1〜１４ｄzにおいて、当該ユニット数の演算が並列に行われ、これらの演算結果は、上記演算結果格納レジスタ１４０ａ0〜１４０ａnにそれぞれ格納される。
【００４６】
また、差分値和の演算処理は、図４に示すように、参照画素データにおける探索候補画素ブロックの各画素行毎、対象画素データの各画素行毎に順番に行われる。つまり、制御部１４ａからは、探索候補画素ブロック及び対象画素データの画素行のデータ（以下、Ｌｉｎｅデータと称す）が、Ｌｉｎｅ０〜Ｌｉｎｅ１５の順番に差分値和演算部１４ｄに送られることになる。ここで、図４は、参照画素データ及び対象画素データの差分値和演算部１４ｄへのデータ伝送構成の一例を示す図である。
【００４７】
一方、図５に示すように、例えば、５つの探索ポイントを、所定の画素行に対して、各探索ポイント間に６画素程度を介した間隔で（間引きして）設定したとする。ここで、図５は、探索候補画素ブロックの重複関係の一例を示す図である。探索ポイントは、前述したように、探索候補画素ブロックの左上隅の画素の位置を示すもので、図５の例では、参照画素データの０行目に対して、「０」列目の位置（以下、この画素の位置を（０，０）とする）、７列目の位置（０，７）、１４列目の位置（０，１４）、２８列目の位置（０，２８）にそれぞれ探索ポイントが設定されている。従って、探索候補画素ブロックは、探索ポイント（０，０）の場合は、この位置を左上隅とした横１６画素×縦１６画素の画素ブロック（０〜１５，０〜１５）となり、同様に、探索ポイント（０，７）の場合は画素ブロック（０〜１５，７〜２２）、探索ポイント（０，１４）の場合は画素ブロック（０〜１５，１４〜２９）、探索ポイント（０，２１）の場合は画素ブロック（０〜１５，２１〜３６）、及び探索ポイント（０，２８）の場合は画素ブロック（０〜１５，２８〜４３）となる。これら各探索候補画素ブロックの画素の構成内容（位置範囲）を見ると解るように、探索ポイント間において画素位置が重複している箇所があることが解る。例えば、探索ポイント（０，０）〜（０、１４）の３つを例に挙げると、探索ポイント（０，０）の探索候補画素ブロックの一部である（０〜１５，７〜１５）の位置にある画素が、探索ポイント（０，７）の探索候補画素ブロックの範囲に含まれており、探索ポイント（０，０）の探索候補画素ブロックの一部である（０〜１５，１４〜１５）の位置にある画素が、探索ポイント（０，１４）の探索候補画素ブロックの範囲に含まれている。このような探索ポイント間における画素の重複は、前述した３つの探索ポイント以外の残りの探索ポイントにおいても同様に発生している。
【００４８】
そこで、本発明は、複数の探索ポイントにおいてそれぞれ重複する画素データ部分に着目して、制御部１４ａにおいて、所定の探索ポイントにおける画素データを加工して、他の探索ポイントに対して重複する部分の画素データを当該他の探索ポイントの演算処理にも利用することで、中間バッファからの参照画素データの読み出し回数（伝送回数）を低減する。以下、図６に基づき、制御部１４ａにおける、参照画素データの加工処理について詳述する。ここで、図６（ａ）は、複数の探索ポイント間における参照画素データの重複部分の一例を示す図であり、（ｂ）は、（ａ）の参照画素データに対する加工処理の一例と、当該加工データに対する対象画素データの加工処理の一例とを示す図である。
【００４９】
制御部１４ａにおいて、中間バッファ１２からデータ伝送バス１６を介して、図６（ａ）に示すように、同じ画素行において連続して並ぶ３つの探索ポイント（ポイント０〜３）の一番目の探索ポイント（ポイント０）に対する参照画素データ（探索候補画素ブロック）のＬｉｎｅデータとして、Ｎバイトの画素データ（Ｄａｔａ［０］〜Ｄａｔａ［Ｎ］）を取得したとする。ここで、図６（ａ）に示すように、このＮバイトの画素データのうちＤａｔａ［０］〜Ｄａｔａ［Ｎ−ｘ］が、ポイント１に対応する画素データと重複し、Ｄａｔａ［０］〜Ｄａｔａ［Ｎ−ｙ］がポイント２に対応する画素データと重複しているとする。つまり、このＬｉｎｅデータにおいて、ポイント１の探索候補画素ブロックはポイント０の画素データを「Ｎ−ｘ」画素含んでおり、ポイント２の探索候補画素ブロックはポイント０の画素データを「Ｎ−ｙ」画素含んでいることになる。
【００５０】
このような場合に、制御部１４ａは、図６（ｂ）に示すように、ポイント０に対する参照画素データを加工して、ポイント１及びポイント２に対して、これらの画素データとポイント０の画素データとの重複する部分の画素データ、探索ポイント情報、ライン番号などを含んでなる参照画素データを生成する。ここで、図６（ｂ）の例では、探索候補画素ブロック及び対象画素データは共に１画素が８ビットで且つ１６画素×１６画素のサイズの画素データとなっている。以下、このように加工生成された参照画素データを第１画素データと称す。つまり、第１画素データは、実際の各探索ポイントに対するＬｉｎｅデータとしては不足部分（重複しない部分）のあるデータとなっている。本実施の形態において、この不足部分のバイト位置に対しては、図６（ｂ）に示すように、ダミーデータとして「００ｈ」を代入し、第１画素データを１６バイトの固定長データとして扱う。
【００５１】
本実施の形態において、第１画素データの生成処理は、探索候補画素ブロックのサイズや探索範囲のサイズ等に応じて規定された生成方法の情報に基づき行われる。
更に、この加工生成されたポイント１及びポイント２の第１画素データに対して、これらのデータに合わせて対象画素データを加工した画素データ（以下、第２画素データと称す）を生成する。つまり、図６（ｂ）に示す例の場合は、ポイント０の画素データとポイント１の画素データとは、ポイント０の下位８バイトの画素データがポイント１の上位８バイトの画素データと重複しているので、この重複する部分の画素データの位置に対応した対象画素データの下位８バイトの画素データ、探索ポイント情報、ライン番号などを含んでなる第２画素データを加工生成する。一方、ポイント０の画素データとポイント２の画素データとは、ポイント０の下位２バイトの画素データがポイント１の上位２バイトの画素データと重複しているので、この重複する部分の画素データの位置に対応した対象画素データの下位２バイトの画素データ、探索ポイント情報、ライン番号など含んでなる第２画素データを加工生成する。このとき、ポイント１及びポイント２の第２画素データにおける重複していない画素データ部分にはダミーデータとして第１画素データと同様に「００ｈ」を代入して、第２画素データを１６バイトの固定長データとして扱う。
【００５２】
このように、ポイント０に対する参照画素データから、ポイント１及びポイント２に対する第１画素データを生成し、当該第１画素データに対応した第２画素データを生成すると、制御部１４ａは、これらの演算用データを差分値和演算部１４ｄに供給する。
本実施の形態においては、図７に示すように、差分値和演算部１４ｄは、同じ画素行に設定された探索ポイント（図７では、探索ポイント番号（０，０）〜（０，４）の５つ）に対する差分値和の演算処理を各探索ポイントの各画素行毎に順番に行っていく構成となっている。ここで、上記探索ポイント（０，０）〜（０、２８）は、探索ポイント番号（０，０）〜（０，４）にそれぞれ対応し、上記ポイント０〜ポイント２は、探索ポイント番号（０，０）〜（０，２）にそれぞれ対応することとする。また、差分値和演算ユニット１４ｄ0〜１４ｄzの構成数によって、演算処理の並列数が決定されるが、以下の説明においては、差分値和演算部１４ｄが、差分値和演算ユニット１４ｄ1〜１４ｄ3の３つの演算ユニットを含んで構成されることとして説明を行う。つまり、上記ポイント０の参照画素データ、並びにポイント２及び３の第１画素データに対する差分値和の演算処理は、差分値和演算ユニット１４ｄ1〜１４ｄ3によって、並列に処理される。
【００５３】
更に、制御部１４ａにおいて、上記第１画素データ及び第２画素データの生成処理は、探索ポイント（０，０）の次に取得される他のポイントに対する参照画素データのＬｉｎｅデータに対しても行われる。図６の例の場合は、ポイント０（探索ポイント（０，０））に対する参照画素データのＬｉｎｅデータに、ポイント１及びポイント２に対する画素データが含まれるため、上記のような第１画素データ及び第２画素データを生成する場合は、ポイント１（探索ポイント（０，１））に対する参照画素データのＬｉｎｅデータを取得する必要がない。そのため、次に、ポイント１ではなくポイント２（探索ポイント（０，２））に対する参照画素データのＬｉｎｅデータを取得する。つまり、探索ポイント（０，２）に対する参照画素データのＬｉｎｅデータには、探索ポイント（０，１）に対する残りのＬｉｎｅデータと、探索ポイント（０，２）に対する残りのＬｉｎｅデータとが含まれるので、探索ポイント（０，２）に対する参照画素データのＬｉｎｅデータから、探索ポイント（０，１）及び探索ポイント（０，２）に対する残りのデータ分の第１画素データを生成することが可能である。また、探索ポイント（０，２）に対する参照画素データのＬｉｎｅデータには、探索ポイント（０，３）及び探索ポイント（０，４）の参照画素データのＬｉｎｅデータの一部が含まれているので、これらの探索ポイントに対する第１画素データ生成することができるが、本実施の形態においては、差分値和演算部１４ｄの有する差分値和演算ユニットの数が３つであるため、探索ポイント（０，１）及び探索ポイント（０，２）に対する第１画素データに加え、探索ポイント（０，３）に対する第１画素データの計３つの第１画素データを生成する。そして、対象画素データを加工して、これら第１画素データに対する第２画素データも生成する。
【００５４】
また、図７に示すように、レジスタ１４ｂは、例えば、探索ポイントが設定された各画素行における各５つの探索ポイントに対応した演算結果格納レジスタ１４０ａ0〜１４０ａ4と、差分値和の最小値を格納する１つの最小値格納レジスタ１４０ｂとを含んで構成される。ここで、演算結果格納レジスタ１４０ａ0〜１４０ａnは、図８（ａ）に示すように、探索ポイント番号及び差分値和の演算結果を格納する構成となっている。一方、最小値格納レジスタ１４０ｂは、最小の差分値和の探索ポイント番号及び当該最小の差分値和を格納する構成となっている。これらのレジスタの構成は物理的には同じものとなる。
【００５５】
更に、上記５つの演算結果格納レジスタ１４０ａ0〜１４０ａ4には、参照画素データに設定された各探索ポイント番号が割り振られている。ここで、探索ポイント番号は、参照画素データに対して設定された各探索ポイントの左上隅の画素の位置に対して対応付けられた通し番号となっている。
この探索ポイント番号の割り振りは、図７に示すように、探索ポイントが設定された各画素行における各探索ポイントの左から順に、例えば、参照画素データの「０」行目であれば、左から１番目の探索ポイントに対応する探索ポイント番号（０，０）を演算結果レジスタ１４０ａ0に、左から２番目の探索ポイント番号（０，１）を１４０ａ1に、左から３番目の探索ポイント番号（０，２）を１４０ａ2に、左から４番目の探索ポイント番号（０，３）を１４０ａ3に、左から５番目の探索ポイント番号（０，４）を１４０ａ4に、といったように割り振っていく。つまり、各画素行の探索ポイントが同じ列幅で設定されているとすると、演算結果格納レジスタ１４０ａ0には、探索ポイント番号（０，０）〜（ｍ（ｍ≦１５），０）が、演算結果格納レジスタ１４０ａ1には、探索ポイント番号（０，１）〜（ｍ（ｍ≦１５），１）が、演算結果格納レジスタ１４０ａ2には、探索ポイント番号（０，２）〜（ｍ（ｍ≦１５），２）が、演算結果格納レジスタ１４０ａ3には、探索ポイント番号（０，３）〜（ｍ（ｍ≦１５），３）が、演算結果格納レジスタ１４０ａ4には、探索ポイント番号（０，４）〜（ｍ（ｍ≦１５），４）が、それぞれ割り振られることになる。
【００５６】
そして、探索ポイント番号（０，０）に対する参照画素データのＬｉｎｅデータ及び対象画素データのＬｉｎｅデータ、並びに探索ポイント番号（０，１）〜（０，２）の第１画素データ及び第２画素データが差分値和演算部１４ｄに供給されると、差分値和演算部１４ｄは、差分値和演算ユニット１４ｄ1〜１４ｄ3の３つの演算ユニットのそれぞれに対して予め割り振られた探索ポイント番号に基づき、例えば、差分値和演算ユニット１４ｄ1において、探索ポイント番号（０，０）に対する差分値和の演算処理を実行し、差分値和演算ユニット１４ｄ2において、探索ポイント番号（０，１）に対する差分値和の演算処理を実行し、差分値和演算ユニット１４ｄ3において、探索ポイント番号（０，２）に対する差分値和の演算処理を実行する。
【００５７】
一方、この演算処理の実行中に、制御部１４ａは、中間バッファ１２から、前述したように探索ポイント（０，２）に対する参照画素データのＬｉｎｅデータを、データ伝送バス１６を介して取得する処理を実行し、この取得した探索ポイント（０，２）のＬｉｎｅデータを加工して、探索ポイント番号（０，１）〜（０，３）に対する第１画素データ及び第２画素データを生成し、現在行われている演算が終了すると、前記生成した第１画素データ及び第２画素データを差分値和演算部１４ｄに供給する。
【００５８】
最終的に、制御部１４ａは、中間バッファ１２から、探索ポイント番号（０，４）の参照画素データのＬｉｎｅデータをデータ伝送バス１６を介して取得し、この探索ポイント番号（０，４）のＬｉｎｅデータを加工して、探索ポイント（０，３）〜（０，４）に対する第１画素データを生成し、更に、当該第１画素データに基づき対象画素データを加工して第２画素データを生成し、これら生成した第１画素データ及び第２画素データを差分値和演算部１４ｄに供給する。
【００５９】
このように、制御部１４ａから第１画素データ、第２画素データ等の演算用データが供給されると、差分値和演算部１４ｄは、各差分値和演算ユニットにおいて差分値和の演算処理を実行する。以下、図９に基づき、差分値和の演算処理について具体的に説明する。ここで、図９（ａ）〜（ｃ）は、差分値和演算処理の一例を示す図である。
図９（ａ）に示すように、探索ポイント番号（０，０）に対する参照画素データ（探索候補画素ブロック）のＬｉｎｅ０に対する各画素列の画素データ（画素データ部分のみ図示）を左から順にＭｐ00〜Ｍｐ015とし、同様にＬｉｎｅ０の対象画素データにおけるＬｉｎｅ０に対する各画素列の画素データを左から順にＣｐ00〜Ｃｐ015とする。探索ポイント番号（０，０）に対しては、図９（ａ）中の小さな楕円で囲った組合せのように同じ列の画素毎に、差分値及び当該差分値の絶対値を演算し、この演算結果を全て足し合わせる（累積する）ことによって、Ｌｉｎｅ０に対する差分値和を演算する（図中のＡＣＣ０＿０）。例えば、１列目のＭｐ00とＣｐ00との場合は、その差分値の絶対値は｜Ｍｐ00−Ｃｐ00｜となる。このような差分値の絶対値の演算を、Ｍｐ00〜Ｍｐ015及びＣｐ00〜Ｃｐ015の各組に対して順次行い、これらの差分値の絶対値を累積する。
【００６０】
一方、探索ポイント（０，１）に対する第１画素データ及び第２画素データが、上記図６（ｂ）に示すポイント１の第１画素データ及び第２画素データと同様の構成だとすると、図９（ｂ）に示すように、第１画素データは、探索ポイント番号（０，０）に対する参照画素データ（探索候補画素ブロック）のＬｉｎｅ０の画素データの下位８バイトの画素データを含んで構成される。そして、上位８バイトの画素データ部分は、前述したようにダミーデータ「００ｈ」となっている。更に、この第１画素データに対する第２画素データは、図９（ｂ）に示すように、対象画素データのＬｉｎｅ０の画素データの下位８バイトを含んで構成され、第１画素データと同様に、上位８バイトの画素データ部分は、前述したようにダミーデータ「００ｈ」となっている。
【００６１】
本実施の形態においては、探索ポイント番号（０，１）に対応した参照画素データ（探索候補画素ブロック）及び対象画素データのＬｉｎｅ０の上位８バイトである図９（ｂ）中の大きな楕円で囲った組合せのように、ダミーデータ「００ｈ」同士の組み合わせに対しては、差分値和演算ユニットにこれらの差分値和の演算処理を行わせないようにフラグを立てるようにしている。従って、差分値和演算部１４ｄにおいては、図９（ｂ）における小さな楕円で囲った下位８バイトにおける組み合わせに対してのみ差分値和の演算処理が実行される。つまり、探索ポイント番号（０，１）に対する下位８バイトの差分値和の演算処理は、探索ポイント番号（０，０）のＬｉｎｅデータの全画素（１６バイト）に対する差分値和の演算処理よりも短い時間で完了することになる。
【００６２】
ここで、探索ポイント番号（０，１）の参照画素データ（探索候補画素ブロック）のＬｉｎｅ０に対する差分値和の演算処理は、例えば、９列目のＭｐ08とＣｐ08との場合は、その差分値の絶対値は｜Ｍｐ08−Ｃｐ08｜となる。このような差分値の絶対値を求める演算を、Ｍｐ08〜Ｍｐ015及びＣｐ08〜Ｃｐ015の各組み合わせに対して順次行い、これら差分値の絶対値を累積する（図中のＡＣＣ１＿０＿１）。但し、探索ポイント（０，１）の参照画素データ（探索候補画素ブロック）のＬｉｎｅ０の画素データに対する差分値和は、残り８バイトの画素データが不足しているため、１度目の並列演算における、この差分値和ＡＣＣ１＿０＿１を保持する。
【００６３】
次いで、差分値和演算部１４ｄに、探索ポイント（０，１）の参照画素データ（探索候補画素ブロック）のＬｉｎｅ０に対する残りの画素データを含む第１画素データが供給されると、差分値和演算部１４ｄにおいて、探索ポイント（０，１）のＬｉｎｅ０の残りの画素データに対する並列演算が行われる。ここで、図９（ｃ）に示すように、Ｌｉｎｅ０に対する残りの各画素列の画素データ（画素データ部分のみ図示）を左から順にＭｐ016〜Ｍｐ023とし、第２画素データにおけるＬｉｎｅ０に対する前記第１画素データの残りの各画素列に対応した画素データをＣｐ00〜Ｃｐ07とする。なお、これら第１画素データ及び第２画素データの下位８バイトはいずれもダミーデータ「００ｈ」となっている。これら第１画素データ及び第２画素データに対して、差分値の絶対値を求める演算を、Ｍｐ16〜Ｍｐ023及びＣｐ00〜Ｃｐ07の各組み合わせに対して順次行い、これら差分値の絶対値を累積する（図中のＡＣＣ１＿０＿２）。そして、この差分値和ＡＣＣ１＿０＿２に、保持しておいた差分値和ＡＣＣ１＿０＿１を加算することで、探索ポイント（０，１）の参照画素データ（探索候補画素ブロック）のＬｉｎｅ０に対する差分値和ＡＣＣ１＿０が求まる。つまり、重複する画素データ部分で構成された第１画素データが生成される探索ポイントの差分値和の演算処理は、複数回に分けて行われることになる。
【００６４】
そして、上記のような差分値和の演算処理を、探索ポイント（０，０）〜（０，４）に対する参照画素データ（探索候補画素ブロック）のＬｉｎｅ０の画素データの全てに対して実行することで、探索ポイント（０，０）〜（０，４）に対する参照画素データ（探索候補画素ブロック）のＬｉｎｅ０に対する差分値和の演算処理が完了する。同様の処理を、探索ポイント番号（０，０）〜（０，４）に対する参照画素データ（探索候補画素ブロック）のＬｉｎｅ１〜Ｌｉｎｅ１５に対しても順次実行し、各Ｌｉｎｅに対して求められた差分値和を各探索ポイント毎にすべて累積することで、最終的に、探索ポイント番号（０，０）〜（０，４）の探索候補画素ブロックの差分値和がそれぞれ求まる。
【００６５】
具体的に、探索ポイント番号（０，０）を例に挙げると、Ｌｉｎｅ０の累積結果はＡＣＣ０＿０であるので、Ｌｉｎｅ１は、ＡＣＣ０＿０＋｜Ｍｐ10−Ｃｐ10｜＋｜Ｍｐ11−Ｃｐ11｜・・・＋｜Ｍｐ114−Ｃｐ114｜＋｜Ｍｐ115−Ｃｐ115｜となり、Ｌｉｎｅ１の累積結果にＬｉｎｅ０の累積結果を足し合わせたものとなる。つまり、このような演算処理をＬｉｎｅ０〜Ｌｉｎｅ１５まで順次行うと、Ｌｉｎｅ１５の演算結果は、ＡＣＣ０＿０＋ＡＣＣ０＿１＋・・・＋ＡＣＣ０＿１４＋｜Ｍｐ150−Ｃｐ150｜＋｜Ｍｐ151−Ｃｐ151｜・・・＋｜Ｍｐ1514−Ｃｐ1514｜＋｜Ｍｐ1515−Ｃｐ1515｜となる。
【００６６】
これら探索ポイント番号（０，０）〜（０，４）の探索候補画素ブロックに対する差分値和は、それぞれ演算結果格納レジスタ１４０ａ0〜１４０ａ4に格納される。
つまり、動きベクトル検出装置１００は、探索ポイント（０，０）、（０，２）及び（０，４）に対応した３つの探索候補画素ブロックのラインデータを中間バッファ１２からデータ伝送バス１６を介して取得することで、探索ポイント番号（０，０）〜（０，４）に対応した５つの探索候補画素ブロックのＬｉｎｅデータに対する差分値和を求めることが可能である。従って、従来は、差分値和を求めるのに各探索ポイント毎にそれぞれに対応する参照画素データを送る必要があったところを、本発明においては、それよりも少ない伝送回数で差分値和を求めることが可能である。
【００６７】
更に、差分値和演算部１４ｄは、演算結果格納レジスタ１４０ａ0〜１４０ａn（図７の例では、１４０ａ0〜１４０ａ4）に差分値和が格納されると、図１０に示すように、これら各演算結果格納レジスタ１４０ａ0〜１４０ａnに格納された差分値和と、上記最小値格納レジスタ１４０ｂに格納された差分値和とをそれぞれ比較し、演算結果格納レジスタ１４０ａ0〜１４０ａnのいずれか１の差分値和が、最小値格納レジスタ１４０ｂの差分値和よりも小さいときは、最小値格納レジスタ１４０ｂの差分値和を前記いずれか１の差分値和に更新し、そうでないときは、最小値格納レジスタの差分値和をそのまま保持する。ここで、図１０は、差分値和演算部１４ｄにおける演算処理部の具体的な構成を示す図である。
【００６８】
この更新処理が完了すると、演算結果格納レジスタ１４０ａ0〜１４０ａnだけをリセットし、最小値格納レジスタ１４０ｂの値はそのまま保持する。
図１に戻って、データ伝送バス１６は、プロセッサ１０からの指示信号や、中間バッファ１２の参照画素データ等を動き検出部１４のレジスタ１４ｂに伝送したり、動き検出部１４の演算結果等をプロセッサ１０に伝送するためのデータ伝送路である。
【００６９】
更に、図１１に基づき、動き検出部１４の動きベクトルの検出処理の流れを説明する。ここで、図１１は、動き検出部１４の動きベクトル検出処理を示すフローチャートである。
動きベクトル検出処理は、プロセッサ１０からのレジスタ１４ｂを介して受信した演算命令に応じて、動き検出部１４で実行される処理であって、図１１に示すように、まずステップＳ１００に移行し、制御部１４ａにおいて、プロセッサ１０からの演算開始命令をレジスタ１４ｂを介して受信したか否かを判定し、受信したと判定した場合(Yes)は、探索ポイントの位置情報、参照画素データの取得情報、演算用データの生成情報、演算開始情報等をレジスタ１４ｂの所定のレジスタに書き込みステップＳ１０２に移行し、そうでない場合(No)は、受信するまで待機する。
【００７０】
ステップＳ１０２に移行した場合は、制御部１４ａにおいて、リセット信号を差分値和演算部１４ｄに送信して差分値和演算部１４ｄを構成する差分値和演算ユニット１４ｄ1〜１４ｄz（具体的には、演算ユニットの有するレジスタ）をリセットしてステップＳ１０４に移行する。
ステップＳ１０４では、差分値和演算部１４ｄにおいて、演算開始の書き込みに応じて、レジスタ１４ｂに対してリセット信号を送り、演算結果格納レジスタ１４０ａ0〜１４０ａn及び最小値格納レジスタ１４０ｂを初期化してステップＳ１０６に移行する。ここで、演算結果格納レジスタ１４０ａ0〜１４０ａnの初期値として「０」を格納し、一方、最小値格納レジスタ１４ｂの初期値として、当該レジスタ１４ｂに格納できる値の最大値（又は十分大きな値）を格納する。これにより、最小値格納レジスタ１４０ｂの初期値が常に最小値となってしまうような値となるのを避ける。
【００７１】
ステップＳ１０６では、制御部１４ａにおいて、データ伝送バス１６を介して、中間バッファ１２から探索ポイントの位置情報及び参照画素データの取得情報に応じた、参照画素データ（探索候補画素ブロック）のＬｉｎｅデータを取得してステップＳ１０８に移行する。
ステップＳ１０８では、制御部１４ａにおいて、ローカルバッファ１４ｃから対象画素データのＬｉｎｅデータを読み出してステップＳ１１０に移行する。ここで、対象画素データの読み出し処理は、画素行毎に設定された全ての探索ポイントに対するＬｉｎｅデータの演算処理が完了する毎に次のラインのデータを取得するようになっており、各処理対象の探索ポイントのＬｉｎｅデータに対する演算処理が完了していない場合は読み出しを行わずに次のステップに移行する。
【００７２】
ステップＳ１１０では、制御部１４ａにおいて、ステップＳ１０６で取得した探索候補画素ブロックのＬｉｎｅデータと、ステップＳ１０８で取得した対象画素データのＬｉｎｅデータと、演算用データの生成情報と、探索ポイント情報とに基づき、第１画素データ、第２画素データ等を含む演算用データを生成してステップＳ１１２に移行する。
ステップＳ１１２では、制御部１４ａにおいて、ステップＳ１１０で生成した演算用データを、差分値和演算部１４ｄに供給してステップＳ１１４に移行する。
【００７３】
ステップＳ１１４では、差分値和演算部１４ｄにおいて、差分値和演算ユニット１４ｄ1〜１４ｄzによって、ステップＳ１１２で供給された演算用データを用いて、各探索ポイントに対応する画素データに対する差分値和の演算処理を実行してステップＳ１１６に移行する。
ステップＳ１１６に移行した場合は、差分値和演算部１４ｄにおいて、処理対象ラインの画素データに対して演算が完了した差分値和及び探索ポイント情報を、演算結果格納レジスタ１４０ａ0〜１４０ａnのうち、これら差分値和及び探索ポイント情報と対応する演算結果格納レジスタ１４０ａに格納してステップＳ１１８に移行する。
【００７４】
ステップＳ１１８では、差分値和演算部１４ｄにおいて、処理対象ラインの差分値和の演算が完了したか否かを判定し、完了したと判定した場合(Yes)は、ステップＳ１２０に移行し、そうでない場合(No)は、ステップＳ１０６に移行する。
ステップＳ１２０では、差分値和演算部１４ｄにおいて、処理対象の探索ポイントに対する全ラインの差分値和の演算処理が完了したか否かを判定し、完了したと判定した場合(Yes)は、ステップＳ１２２に移行し、そうでない場合(No)は、ステップＳ１０６に移行する。
【００７５】
ステップＳ１２２に移行した場合は、差分値和演算部１４ｄにおいて、演算結果格納レジスタ１４０ａ0〜１４０ａnに格納された差分値和と、最小値格納レジスタ１４０ｂに格納された差分値和とをそれぞれ比較してステップＳ１２４に移行する。
ステップＳ１２４では、演算結果格納レジスタ１４０ａ0〜１４０ａnのいずれかに格納された差分値和よりも、最小値格納レジスタ１４０ｂに格納された差分値和の方が大きいか否かを判定し、大きいと判定された場合(Yes)は、ステップＳ１２６に移行し、そうでない場合(No)は、ステップＳ１２８に移行する。
【００７６】
ステップＳ１２６に移行した場合は、差分値和演算部１４ｄにおいて、最小値格納レジスタ１４０ｂに格納された差分値和を、演算結果格納レジスタ１４０ａ0〜１４０ａnのいずれかに格納された差分値和の最小値に更新してステップＳ１２８に移行する。
ステップＳ１２８では、差分値和演算部１４ｄにおいて、参照画像データに対して設定された全ての探索ポイントに対して差分値和の演算処理及び最小値の更新処理が完了したか否かを判定し、完了したと判定された場合(Yes)は、ステップＳ１３０に移行し、そうでない場合(No)は、ステップＳ１０４に移行する。
【００７７】
ステップＳ１３０に移行した場合は、差分演算部１４ｄにおいて、最小値格納レジスタに格納された差分値和及び探索ポイント番号を制御部１４ａに通知してステップＳ１３２に移行する。
ステップＳ１３２では、制御部１４ａにおいて、ステップＳ１３０で通知された情報に基づき、アドレス値演算を行い中間バッファ１２における動きベクトルのアドレス値をレジスタ１４ｂの所定レジスタに書き込み処理を終了する。
【００７８】
次に、図１２〜図１４に基づき、本実施の形態の動作を説明する。
ここで、図１２は、探索候補画素ブロックのＬｉｎｅデータの取得方法及び当該Ｌｉｎｅデータに対する演算用データの生成方法の一例を示す図である。また、図１３は、本発明の動きベクトル検出処理の単位時間当たりの処理率と、従来の動きベクトル検出処理の単位時間当たりの処理率とを示す図である。また、図１４は、ログアリスミックサーチの探索アルゴリズムを示す図である。
【００７９】
なお、ここでは、図２（ａ）に示す探索候補画素ブロック及び図２（ｂ）に示す対象画素データのサイズを、図３に示すように、縦１６画素×横１６画素のサイズとし、各画素を８ｂｉｔの画素データで構成する。また、参照画素データのサイズは、図３（ｂ）に示すように、縦１６画素×横１６画素のサイズの画素ブロックを縦４ブロック×横４ブロック連ねた構成とした。また、画素データの差分値和演算部１４ｄへの伝送処理及び差分値和演算部１４ｄにおける各演算処理は、対象画素データ及び探索候補画素ブロックの画素行単位（１６バイト単位）で行うこととする。また、図４に示すように、対象画素データ及び探索候補画素ブロックの各画素行に対して、それぞれライン番号としてＬｉｎｅ０〜Ｌｉｎｅ１５を対応付けることとする。つまり、各ラインの画素データの総ビット数は１６画素×８ｂｉｔ＝１２８ｂｉｔ（１６ｂｙｔｅ）となる。また、ここでは、データ伝送バス１６のバス幅は１２８ｂｉｔとする。また、演算結果格納レジスタの構成は、図７に示す例と同様とし、差分値和演算部１４ｄは、差分値和演算ユニット１４ｄ1〜１４ｄ3の３つの差分値和演算ユニットを有する構成とする。
【００８０】
動き検出部１４は、制御部１４ａにおいて、プロセッサ１０からの演算開始命令をレジスタ１４ｂを介して受信すると（ステップＳ１００の「Ｙｅｓ」の分岐）、演算開始の情報や差分値和の演算処理に必要な情報等の各種情報をレジスタ１４ｂの所定レジスタに書き込み、リセット信号を差分値和演算部１４ｄに送信して、当該差分値和演算部１４ｄの有する差分値和演算ユニット１４ｄ1〜１４ｄ3をリセットする（ステップＳ１０２）。次に、差分値和演算部１４ｄは、演算開始情報が書き込まれると、レジスタ１４ｂに対して演算結果格納レジスタ１４０ａ0〜１４０ａnに対して格納値を「０」にリセットするリセット信号を送り、更に、最小値格納レジスタ１４０ｂに対して格納値を「最大値」にリセットするリセット信号を送って、これらのレジスタを初期化する（ステップＳ１０４）。
【００８１】
演算結果格納レジスタ１４０ａ0〜１４０ａn及び最小値格納レジスタ１４０ｂが初期化されると、制御部１４ｂは、中間バッファ１２に格納された参照画素データから処理対象のライン番号及び参照画素データの取得情報に基づき、これらの情報に対応する探索ポイントの探索候補画素ブロックのＬｉｎｅデータを、データ伝送バス１６を介して取得する（ステップＳ１０６）。更に、制御部１４ｂは、ローカルバッファ１４ｃから、処理対象のライン番号に対応した対象画素データのＬｉｎｅデータを読み出す（ステップＳ１０８）。
【００８２】
探索候補画素ブロックのＬｉｎｅデータ及び対象画素データＬｉｎｅデータを取得すると、制御部１４ａは、第１画素データの生成方法が規定された生成方法情報に基づき、各探索ポイントに対応した演算用データを生成する（ステップＳ１１０）。
以下、図１２に基づき、図５に示す５個の探索ポイント（０，０）〜（０，２８）を例に挙げて、各種データの取得処理、演算用データの生成処理及び差分値和の演算処理を具体的に説明する。ここで、図１２は、縦軸が差分値和演算ユニットの演算ステップを示し、横軸が参照画素データのアドレスを示す。また、演算ステップは、探索ポイント（０，０）〜（０，２８）に対する各差分値和演算ユニット１４ｄ1〜１４ｄ3の演算回数を示すもので、例えば、１−１であれば、差分値和演算ユニット１４ｄ1の１回目の演算を示し、４−２であれば、差分値和演算ユニット１４ｄ2の４回目の演算を示す。
【００８３】
図１２に示すように、制御部１４ａは、まず探索ポイント（０，０）を開始位置とする探索候補画素ブロックのＬｉｎｅ０のデータを取得する。以下、探索ポイント（０，０）〜（０，２８）にそれぞれ対応する探索候補画素ブロックのＬｉｎｅ０のデータを、それぞれ参照画素データ００〜０４と称す。
前記取得した参照画素データ００の下位８バイトは、図１２に示すように、参照画素データ０１の上位８バイトと重複し、前記取得した参照画素データ００の下位２バイトは、参照画素データ０２の上位２バイトと重複する。従って、制御部１４ａは、図１２に示すように、参照画素データ０１に対して重複する、参照画素データ００の下位８バイトのデータを加工して、参照画素データ０１の上位８バイトに対応する第１画素データ０１１を生成する。更に、参照画素データ０２に対して重複する、参照画素データ００の下位２バイトのデータを加工して、参照画素データ０２の上位２バイトに対応する第１画素データ０２１を生成する。一方、上記取得した対象画素データのＬｉｎｅデータを加工して、第１画素データ０１１に及び第１画素データ０２１にそれぞれ対応する第２画素データ０１１及び第２画素データ０２１を生成する。そして、参照画素データ００、第１画素データ０１１、第１画素データ０２１、対象画素データのＬｉｎｅデータ、第２画素データ０１１及び第２画素データ０２１を、差分値和演算ユニット１４ｄ1〜１４ｄ3の１回目の演算用データとして、差分値和演算部１４ｄに供給する（ステップＳ１１２）。
【００８４】
差分値和演算部１４ｄは、制御部１４ａから、参照画素データ００、第１画素データ０１１、第１画素データ０２１、対象画素データのＬｉｎｅデータ、第２画素データ０１１及び第２画素データ０２１を供給されると差分値和の演算処理を実行する（ステップＳ１１４）。具体的には、差分値和演算ユニット１４ｄ1において、参照画素データ００の各画素値と対象画素データのＬｉｎｅデータの各画素値との差分値和の演算処理を実行し、差分値和演算ユニット１４ｄ2において、第１画素データ０１１のダミーデータ以外の各画素値と第２画素データ０１１のダミーデータ以外の各画素値との差分値和の演算処理を実行し、差分値和演算ユニット１４ｄ3において、第１画素データ０２１のダミーデータ以外の各画素値と第２画素データ０２１のダミーデータ以外の各画素値との差分値和の演算処理を実行する。そして、参照画素データ００に対する演算結果は、演算結果格納レジスタ１４０ａ0に格納され、第１画素データ０１１に対する演算結果は、演算結果格納レジスタ１４０ａ1に格納され、第１画素データ０２１に対する演算結果は、演算結果格納レジスタ１４０ａ2に格納される。
【００８５】
この演算処理によって、探索ポイント（０，０）のＬｉｎｅ０に対する差分値和の演算処理は全て完了するが、探索ポイント（０，７）及び（０，１４）に対する演算処理は、参照画素データ００との重複部分のみが完了し不足部分が残ることになるので、制御部１４ａは、図１２に示すように、次いで、探索ポイント（０，１４）に対応する探索候補画素ブロックのＬｉｎｅ０の画素データである参照画素データ０２を中間バッファ１２から、データ伝送バス１６を介して取得する。ここで、参照画素データ０１を取得せずに、いきなり参照画素データ０２を取得するのは、図１２に示すように、参照画素データ０１は、その上位８バイトが参照画素データ００に含まれ、その下位８バイトが参照画素データ０２に含まれるためである。つまり、参照画素データ００及び参照画素データ０２があれば、参照画素データ０１は生成することができるからである。
【００８６】
図１２に示すように、前記取得した参照画素データ０２の上位８バイトは、参照画素データ０１の上位８バイトと重複するので、制御部１４ａは、参照画素データ０１に対して重複する、参照画素データ０２の上位８バイトのデータを加工して、参照画素データ０１の下位８バイトに対応する第１画素データ０１２を生成する。更に、参照画素データ０２における、前記第１画素データ０２１に対応する部分を除く残りの１４バイトの画素データを加工して、参照画素データ０３の残り１４バイトに対応する第１画素データを生成する。このとき、参照画素データ０２は、参照画素データ０３及び参照画素データ０４に対しても重複部分を有するので、参照画素データ０３及び参照画素データ０４に対する第１画素データも生成することになる。しかし、差分値和演算ユニットの個数は３個であるため、第１画素データ０１２、参照画素データ０２に対する第１画素データ、参照画素データ０３に対する第１画素データ及び参照画素データ０４に対する第１画素データの４つの第１画素データを生成してもこれらを並列に演算することができないことになる。
【００８７】
そのため、本実施の形態においては、図１２に示すように、参照画素データ０２に対する残り１４バイトの第１画素データを、８バイトと６バイトの２つに分け、第１画素データ０２２及び第１画素データ０２３を生成する。同様に、図１２に示すように、参照画素データ０３に対する重複部分の１０バイトを、４バイトと６バイトの２つに分け、第１画素データ０３１及び第１画素データ０３２を生成し、更に、参照画素データ０４に対して重複する２バイトを含む第１画素データ０４１を生成する。更に、上記同様に、これらと対応する第２画素データ０１２、０２２、０２３、０３１、０３２及び０４１を生成する。
【００８８】
そして、制御部１４ａは、まず第１画素データ０１２、０２２及び０３１、並びに第２画素データ０１２、０２２及び０３１の３組を差分値和演算部１４ｄに供給し、これらの演算処理が完了すると、次いで、第１画素データ０２３、０３２及び０４１、並びに第２画素データ０２３、０３２及び０４１の３組を差分値和演算部１４ｄに供給する。このように、演算処理を２回に分けることで、差分値和演算ユニットは３つ全てが無駄なく使用され、差分値和演算処理を効率よく実行することができる。
【００８９】
これらの演算結果は、演算結果格納レジスタ１４０ａ1〜１４０ａ4にそれぞれ格納される。このとき、各演算結果は、各レジスタに保持されている差分値和に加算して格納される。
一方、第１画素データ０２３、０３２及び０４１、並びに第２画素データ０２３、０３２及び０４１に対する差分値和の演算処理が完了すると、探索ポイント（０，２１）及び（０，２８）に対する演算処理は重複部分のみが完了し不足部分が残ることになるので、制御部１４ａは、図１２に示すように、次いで、探索ポイント（０，２８）に対応する探索候補画素ブロックのＬｉｎｅ０の画素データである参照画素データ０４を中間バッファ１２から、データ伝送バス１６を介して取得する。ここでも、参照画素データ０１と同様の理由から、参照画素データ０３を取得せずに、いきなり参照画素データ０４を取得する。
【００９０】
前記取得した参照画素データ０４の上位８バイトは、参照画素データ０３の下位８バイトと重複するので、第１画素データ０３２と重複する部分を除く６バイトから第１画素データ０３３を生成する。更に、参照画素データ０４の第１画素データ０４１と重複する部分を除く１４バイトから第１画素データを生成するが、この段階においては、Ｌｉｎｅ０の演算が完了していない探索ポイント数が２つとなるので、３つある差分値和演算ユニットのうち１つが余ることになる。そこで、本実施の形態においては、探索ポイント（０，２８）に対する残りの１４バイトを、６バイトと８バイトの２つに分け、第１画素データと同じ構造の第３画素データ０４２及び０４３を生成する。更に、第１画素データ０３３、０４２及び０４３に対応する第２画素データ０３３、０４２及び０４３を生成する。
【００９１】
そして、制御部１４ａは、第１画素データ０３３、第３画素データ０４２及び０４３、並びに第２画素データ０３３、０４２及び０４３を差分値和演算部１４ｄに供給する。
これらの演算用データが供給されると、差分値和演算部１４ｄは、差分値和演算ユニット１４ｄ1において、第１画素データ０３３のダミーデータ以外の各画素値と第２画素データ０３３のダミーデータ以外の各画素値との差分値和の演算処理を実行し、差分値和演算ユニット１４ｄ2において、第３画素データ０４２のダミーデータ以外の各画素値と第２画素データ０４２のダミーデータ以外の各画素値との差分値和の演算処理を実行し、差分値和演算ユニット１４ｄ3において、第３画素データ０４３のダミーデータ以外の各画素値と第２画素データ０４３のダミーデータ以外の各画素値との差分値和の演算処理を実行する。つまり、探索ポイント（０，２８）に対する差分値和の演算処理を、差分値和演算ユニット１４ｄ2及び差分値和演算ユニット１４ｄ3の２つの演算ユニットを用いて並列に行うことで、演算処理速度を向上することができる。
【００９２】
第１画素データ０３３、第３画素データ０４２及び０４３、並びに第２画素データ０３３、０４２及び０４３に対する差分値和の演算処理が完了すると、探索ポイント（０，０）〜（０，２８）の各探索候補画素ブロックのＬｉｎｅ０に対する差分値和の演算処理が完了したことになる。
このように、図１２に示す手順で、参照画素データ００、０２及び０４の３ライン分のデータを中間バッファ１２から取得し、各演算用データを生成して差分値和の演算処理を実行することで、参照画素データ００〜０４の５ライン分の差分値和の演算処理が行われたことになる。
【００９３】
ここで、図１３に基づき、本発明の手法及び従来技術の手法の処理効率について説明する。図１３において、横軸は参照画素データのＬｉｎｅデータの読み込みサイクル数（ｔ）であり、縦軸は差分値和の演算処理率（％）である。図１３に示すように、従来の手法を用いて、上記参照画素データ００〜０４に対する差分値和の演算処理を行う場合は、参照画素データ００〜０４の５つのＬｉｎｅデータを順番に全て読み込む必要がある。一方、本発明の手法を用いた場合は、上述したように、参照画素データのＬｉｎｅデータの読み込みが、参照画素データ００、０２及び０４の３ライン分で済むので、２回分の読み込みにかかる時間を従来よりも短縮することができる。従って、本発明の手法を用いて差分値和の演算を行うことで、図１３に示すように、従来よりも処理効率を向上させることができる。
【００９４】
上記のような参照画素データの取得処理、演算用データの生成処理、差分値和の演算処理及び差分値和の格納処理を探索ポイント（０，０）〜（０，２８）の各探索候補画素ブロックの全ラインに対して完了することで、探索ポイント（０，０）〜（０，２８）の各探索候補画素ブロックに対する差分値和が演算結果格納レジスタ１４０ａ1〜１４０ａ4にそれぞれ格納されたことになる。
【００９５】
そして、探索ポイント（０，０）〜（０，２８）の各探索候補画素ブロックに対する差分値和が演算結果格納レジスタ１４０ａ1〜１４０ａ4に格納されると、差分値和演算部１４ｄは、これら演算結果格納レジスタ１４０ａ0〜１４０ａ4にそれぞれ格納された差分値和と、最小値格納レジスタ１４０ｂに格納された差分値和とを比較し（ステップＳ１２２）、最小値格納レジスタ１４０ｂに格納された差分値和の方が、演算結果格納レジスタ１４０ａ0〜１４０ａnのいずれかに格納された、これらの差分値和の最小値よりも大きい場合は（ステップＳ１２４の「Ｙｅｓ」の分岐）、最小値格納レジスタ１４０ｂの格納内容を更新する（ステップＳ１２６）。
【００９６】
演算結果格納レジスタ１４０ａ0〜１４０ａ4には、図８（ａ）に示すように、探索ポイント番号及び演算結果である差分値和を格納するようになっており、最小値の更新処理前においては、最前の演算結果及びその探索ポイント番号が格納されている。一方、最小値格納レジスタ１４０ｂには、図８（ｂ）に示すように、探索ポイント番号及び演算結果最小値である差分値和の最小値を格納するようになっており、最小値の更新処理前においては、初期値か又は今までの差分値和の演算結果のうちの最小値が格納されている。
【００９７】
例えば、最前の演算処理において、レジスタ１４０ａ0に格納された差分値和が、演算結果格納レジスタ１４０ａ1〜１４０ａ4よりも小さな値で、且つ最小値格納レジスタ１４０ｂに格納された差分値和よりも小さい値の場合は、最小値格納レジスタ１４０ｂに格納された差分値和に代えて、レジスタ１４０ａ0に格納された差分値和を格納する。つまり、差分値和の書き換え（更新）を行う。
【００９８】
上述したような演算処理及び最小値更新処理を、参照画素データに対してデータテーブルや探索アルゴリズム等に基づいて予め設定された、全探索ポイントに対して完了すると（ステップＳ１２８の「Ｙｅｓ」の分岐）、この時点で最小値格納レジスタ１４０ｂに格納されている探索ポイント番号及び差分値和を、参照画素データに対する差分値和の最小値のデータとして制御部１４ａに通知する（ステップＳ１３０）。
【００９９】
制御部１４ａは、差分値和演算部１４ｄから最小の差分値和及びその探索ポイント番号を取得すると、この探索ポイント番号に基づき中間バッファ１２のアドレス値演算を行い、演算結果のアドレス値をレジスタ１４ｂに書き込む（ステップＳ１３２）。ここで、探索ポイント番号には、探索候補画素ブロックの左上隅のアドレスが対応付けられており、制御部１４ａは、これによりアドレス値演算を行い動きベクトル（対象画素の移動方向及び移動距離）を求める。
【０１００】
なお、参照画素データに対する探索ポイントの設定に、図１４に示すような、ログアリスミックサーチアルゴリズムを用いても良い。ここで、ログアリスミックサーチの具体的な探索手順は、図１４に示すように、まず、参照画素データ全体に対して差分値和の最小値（図中の（１，１））を求め、次いで、その最小値の画素データ（探索候補画素ブロック）を中心とした上下左右に所定画素の範囲である、１回目のポイント探索範囲に対して探索範囲を狭めた探索範囲を設定し、この探索範囲における最小値を求める。この２回目のポイント探索範囲における最小値が求まったら、次いで、この最小値の画素データを中心とした、２回目のポイント探索範囲を更に狭めた探索範囲を設定し、この探索範囲における最小値を求め、この３回目のポイント探索範囲における最小値が求まったら、最後に、この最小値の画素データを中心とした、３回目のポイント探索範囲を更に狭めた探索範囲を設定し、この探索範囲における最小値を求め、この４回目のポイント探索範囲における最小値を最終的な探索結果とする。このように、ログアリスミックサーチは、探索を進めるにつれ、各画素行又は各画素列に設定される探索ポイント数が減少するため、各画素行毎に差分値和の演算を並列に行っていくためには、探索ポイント数が最大数の画素行又は画素列に合わせて、動きベクトル検出装置１００の構成を、この最大数の差分値和格納レジスタを有する構成とすることが好ましい。
【０１０１】
以上、動きベクトル検出装置１００は、演算用データの生成において、複数の探索ポイントに対応する探索候補画素ブロック間において、所定の探索ポイントに対応する画素データを、この画素データに対して重複する画素データ部分がある他の探索ポイントに対応する画素データに対して共用させることが可能であるので、中間バッファ１２からの探索候補画素ブロックの画素データの取得回数（伝送回数）を従来に比して減らすことが可能であり、これにより、差分値和の演算処理効率を向上させることが可能である。
【０１０２】
また、動きベクトル検出装置１００を、参照画素データにおける各画素行又は各画素列に設定された探索ポイント数の差分値和格納レジスタ１４０ａ0〜１４０ａnを備え、且つ差分値和の最小値和を格納する最小値格納レジスタ１４０ｂを備えた構成とし、更に、各画素行又は各画素列に設定された探索ポイントに対する差分値和の演算処理を並列に行うと共に、この探索ポイントに対する差分値和が差分値和格納レジスタ１４０ａ0〜１４０ａnに格納される毎に、最小値の更新処理を行う構成としたので、従来に比して、差分値和を格納するレジスタの個数を少なくすることができ、これにより、回路規模を縮小できるので装置の製造コストを削減することが可能である。
【０１０３】
また、差分値和の演算処理において、対象画素データのサイズを１画素を８ｂｉｔの画素データとした、１６画素×１６画素のサイズとし、更に、画素データの転送を、各画素行毎（データ伝送バスのバス幅である１２８ｂｉｔ単位）に行う構成としたので、これにより、データ伝送バスの性能を最大限用いて効率よく伝送処理を行うことが可能となる。
上記実施の形態において、差分値和演算部１４ｄは、形態１乃至６のいずれか１の差分値和演算手段、並びに形態２の最小値更新手段に対応する。
【０１０４】
また、上記実施の形態において、制御部１４ａにおける第１画素データの生成処理は、形態１、４及び５のいずれか１の第１画素データ生成手段に対応し、制御部１４ａにおける第２画素データ及び第３画素データの生成処理は、形態１又は５の第２画素データ生成手段に対応する。
また、上記実施の形態において、プロセッサ１０による探索ポイント番号、ライン番号及び当該探索ポイント番号及びライン番号に対応した参照画素データの書き込み処理は、形態２の探索候補画素ブロック選択手段に対応する。
【０１０５】
また、上記実施の形態において、参照画素データは、形態１乃至３のいずれか１の探索範囲画素ブロックに対応し、対象画素データは、形態１、５及び６のいずれか１の符号化対象画素ブロックに対応する。
なお、上記実施の形態においては、第１画素データの生成処理について、図１２に示す第１画素データの生成方法を例に説明をしたが、これに限らず、参照画素データ（探索候補画素ブロックデータ）の読み込み回数を減らせるのであれば、他の生成方法を用いても良い。
【０１０６】
また、上記実施の形態においては、差分値和演算部１４ｄにおいて、差分値の絶対値を演算し、これを累積して差分値和を演算するようにしたが、これに限らず、例えば、差分値の自乗値を演算し、これを累積して差分値和を求めるようにするなど、他の方法で差分値和を演算するようにしても良い。また、差分値和と同等の性質を持つ数値であれば、他の数値を演算するようにしても良い。
【０１０７】
また、上記実施の形態においては、動きベクトル検出装置１００を複数の差分値和格納レジスタを有する構成とし、これらレジスタに対応する探索ポイントの演算処理を複数並列に行うようにしたが、これに限らず、差分値和格納レジスタを１つ有する構成とし、各探索ポイントに対する演算処理を順次行う構成としても良い。この場合も、差分値和格納レジスタに差分値和が格納される毎に、最小値更新処理を行う。
【０１０８】
また、上記実施の形態においては、ＭＰＥＧの符号化技術を例として説明しているが、これに限らず、本発明は、他の動画像符号化技術に対しても適用可能である。
【図面の簡単な説明】
【０１０９】
【図１】本発明に係る動きベクトル検出装置１００の構成を示すブロック図である。
【図２】（ａ）は、参照画素データの一構成例を示す図であり、（ｂ）は、対象画素データの一構成例を示す図である。
【図３】（ａ）は、探索候補画素ブロック及び対象画素データの一構成例を示す図であり、（ｂ）は、参照画素データの一構成例を示す図である。
【図４】参照画素データ及び対象画素データの差分値和演算部１４ｄへのデータ伝送構成の一例を示す図である。
【図５】探索候補画素ブロックの重複関係の一例を示す図である。
【図６】複数の探索ポイント間における参照画素データの重複部分の一例を示す図であり、（ｂ）は、（ａ）の参照画素データに対する加工処理の一例と、当該加工データに対する対象画素データの加工処理の一例とを示す図である。
【図７】差分値和の演算処理の流れを示す図である。
【図８】演算結果格納レジスタの構成を示す図であり、（ｂ）は、最小値格納レジスタの構成を示す図である。
【図９】（ａ）〜（ｃ）は、差分値和演算処理の一例を示す図である。
【図１０】差分値和演算部１４ｄにおける演算処理部の具体的な構成を示す図である。
【図１１】動き検出部１４の動きベクトル検出処理を示すフローチャートである。
【図１２】探索候補画素ブロックのＬｉｎｅデータの取得方法及び当該Ｌｉｎｅデータに対する演算用データの生成方法の一例を示す図である。
【図１３】本発明の動きベクトル検出処理の単位時間当たりの処理率と、従来の動きベクトル検出処理の単位時間当たりの処理率とを示す図である。
【図１４】ログアリスミックサーチの探索アルゴリズムを示す図である。
【符号の説明】
【０１１０】
１００…動きベクトル検出装置、１０…プロセッサ、１２…中間バッファ、１４…動き検出部、１４ａ…制御部、１４ｂ…レジスタ、１４ｃ…ローカルバッファ、１４ｄ…差分値和演算部、１４ｄ1〜１４ｄz…差分値和演算ユニット、１６…データ伝送バス、３０ａ…参照画素データ、３１ａ…対象画素データ、１４０ａ0〜１４０ａn…差分値和格納レジスタ、１４０ｂ…最小値格納レジスタ
【図１】
2007123989.tif 000003
【図２】
2007123989.tif 000004
【図３】
2007123989.tif 000005
【図４】
2007123989.tif 000006
【図５】
2007123989.tif 000007
【図６】
2007123989.tif 000008
【図７】
2007123989.tif 000009
【図８】
2007123989.tif 000010
【図９】
2007123989.tif 000011
【図１０】
2007123989.tif 000012
【図１１】
2007123989.tif 000013
【図１２】
2007123989.tif 000014
【図１３】
2007123989.tif 000015
【図１４】
2007123989.tif 000016