(57)【特許請求の範囲】
【請求項１】
ブロックマッチングの比較対象となる画像領域である走査領域が含むＪ行Ｋ列の画素の各々に対応した画素データである走査画像データを記憶する第１記憶領域と、
前記ブロックマッチングの比較基準となる画像領域であるターゲット領域が含むＭ行Ｎ列（Ｊ，Ｋ，Ｍ，ＮはＪ＞Ｍ，Ｎ＜Ｋを満足する正整数）の画素の各々に対応した画素データであるターゲット画像データを記憶する第２記憶領域と、
前記走査領域内を走査して得られる複数の比較領域の各々が含むＭ行Ｎ列の画素に対応した画素データである比較画像データと、前記ターゲット画像データの間で、相互に対応する画素同士の相違を示す値たる画素差値を求めるＭ・Ｎ個の演算回路と、
前記第１記憶領域から、前記比較画像データを前記比較領域毎に選択して、前記演算回路に出力するＭ・Ｎ個の選択回路と、
前記画素差値の累計たる累計値を、前記比較領域毎に求める累計回路と、
前記比較領域毎の前記累計値を比較し、前記累計値を最小とする前記比較領域を特定するマッチング判定部と
を備え、
前記マッチング判定部は、
前記累計値を順次に入力し、
記憶の対象となる値たる記憶値を記憶し、入力された前記累計値が前記記憶値未満であったときに入力された前記累計値を用いて前記記憶値を更新する最小値記憶回路と、
（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）桁のそれぞれにおいて二値を採る第１のデータを記憶する最小値位置記憶回路と、
前記第１のデータを更新する更新回路と
を有し、
前記更新回路は、
（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）桁のそれぞれにおいて二値を採り、排他的に一桁が順次に第１の値を採る第２のデータを前記累計値と同期して入力し、
入力された前記累計値が前記記憶値未満であったときに前記第２のデータを用いて前記第１のデータを更新する、ブロックマッチング回路。
【請求項２】
前記更新回路は、
入力された前記累計値が前記記憶値と等しいときに、前記第２のデータと、直前に記憶されていた前記第１のデータとの間での桁毎の論理和を用いて前記第１のデータを更新する、請求項１記載のブロックマッチング回路。
【請求項３】
前記ターゲット画像データにおける画素データは、前記ターゲット領域において同一行に属する画素の纏まりに対応する画素データであるクラスタデータとして取り扱われる、請求項１乃至請求項２のいずれか一つに記載のブロックマッチング回路。
【請求項４】
前記ターゲット領域における列毎に前記クラスタデータをスワップする、複数のセレクタ
を更に備える、請求項３に記載のブロックマッチング回路。
【請求項５】
前記走査画像データにおける画素データは、前記走査領域において同一行に属する画素の纏まりに対応する画素データであるクラスタデータとして取り扱われる、請求項１乃至請求項４のいずれか一つに記載のブロックマッチング回路。
【請求項６】
前記走査領域における列毎に前記クラスタデータをスワップする、複数のセレクタ
を更に備える、請求項５に記載のブロックマッチング回路。
【請求項７】
フラグを格納するレジスタ
を更に備え、
前記走査領域内において第１行から第Ｊ行へと向かう行方向に走査し、かつ前記行方向に対して優先的に、第１列から第Ｋ列へと向かう列方向に走査して複数の前記比較領域が得られ、
前記列方向の走査が行われているときに前記フラグがセットされ、当該走査が前記第Ｋ列に至ったときに前記フラグがリセットされ、
前記フラグがセットされているときには前記走査画像データの更新が拒否される、請求項１乃至請求項６のいずれか一つに記載のブロックマッチング回路。
【請求項８】
請求項１乃至請求項６のいずれか一つに記載のブロックマッチング回路において、
前記走査領域内において第１行から第Ｊ行へと向かう行方向に走査し、かつ前記行方向に対して優先的に、第１列から第Ｋ列へと向かう列方向に走査して複数の前記比較領域が得られ、
前記走査領域の第（ｓ＋１）行第Ｋ列に位置する画素に対応する前記走査画像データ（ｓは０乃至（Ｊ−Ｍ）の整数）が前記比較画像データの画素データとして、前記ターゲット領域の第１行第Ｎ列の画素に対応する前記ターゲット画像データとの間で前記画素差値が求められた後に、前記走査領域の第（ｓ＋１）行かつ第１列乃至第Ｋ列に位置する画素に対応する前記走査画像データを更新する、データ更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は画像処理に関し、特に画像同士の類似性を判断するためのブロックマッチングに関する。
【背景技術】
【０００２】
例えば動画のあるフレームと他のフレームとの間での類似性を判断することにより、フレームの各々において現れる対象物の動きを示す、動きベクトルが算出される。具体的には、当該対象物を含む画像領域をあるフレームから切り出し、当該画像領域が他のフレームのどの領域と類似するかを判断する。このような画像同士の類似性を判断するために、ブロックマッチングが採用される（例えば下記特許文献参照）。
【０００３】
ブロックマッチングにおいては、あるフレームから切り出されたターゲット領域と、他のフレームの特定の領域たる領域（全領域でもよい：以下「走査領域」と称す）内を走査して得られる領域（以下「比較領域」と称す）との類似性を、ターゲット領域及び比較領域の全体として判断する。具体的には例えば、ターゲット領域の一画素と、比較領域において当該一画素に対応する一画素もしくは複数の画素とを比較する。そしてこれら画素同士の比較結果を比較領域の全体に渡って累積して、ターゲット領域と比較領域との類似性が判断される。画素同士の比較結果としては両者の相違を示す値（以下「画素差値」と称す）、例えばそれぞれの画素が示す値（例えば輝度）の差の絶対値（以下「画素差絶対値」と称す）が採用される。上記類似性は当該画素差値の総和として計算される。
【０００４】
上記類似性は比較領域毎に求められるので、走査領域内でターゲット領域と最も類似性が高い比較領域が求められる。よってターゲット領域がフレーム内で占める位置と、比較領域がフレーム内で占める位置とに基づいて、動きベクトルが算出される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３３１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
走査領域のうちでターゲット領域と類似した比較領域を特定するためには、画素差値を求める処理を、ターゲット領域と比較領域の演算数と走査によって得られる比較領域の総数との積で求められる回数で実行しなければならない。
【０００７】
ここでは簡単のため、ターゲット領域と比較領域とは同じサイズを有しているとする。そしてターゲット領域においてある相対的な位置を占める一画素と、比較領域において当該相対的な位置を占める一画素との間で画素差値が求められるとする。
【０００８】
ターゲット領域がＭ行Ｎ列で配列された画素群として表され、走査領域がＪ行Ｋ列で配列された画素群として表される場合（Ｊ，Ｋ，Ｍ，Ｎは、Ｊ＞Ｍ、Ｋ＞Ｎを満足する正整数）、一つの走査領域において走査して得られる比較領域の数は、（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）となる。
【０００９】
予めこれらの個数の比較領域の分だけ、画素のデータを蓄積しておき、ターゲット領域の画素のデータとの間で一斉に、対応する画素同士で画素差値を求めるとその処理は迅速に行える。しかしそのためにはターゲット領域の画素の総数たるＭ・Ｎ個の画素データを記憶し、（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）・Ｍ・Ｎ個の比較領域の画素データを記憶しなければならない。かかる技術は多大な記憶領域を必要とする欠点がある。
【００１０】
かかる欠点を解消する一つの手法として、ターゲット領域の一画素と、複数の比較領域のそれぞれにおいて当該一画素と対応する画素とを用い、複数の比較領域に対して一斉に画素差値を求める技術が考えられる。
【００１１】
この場合、なるほど、ターゲット領域について記憶すべき画素データは１つであるため、先に示した技術と比較すると、記憶すべき画素データの個数は１／（Ｍ・Ｎ）にまで低減できる。しかしながら、ブロックマッチングでは上述のように、画像の類似性は絶対値の総和として計算される。よってあるターゲット画像との類似性を得るためには当然、先に示した技術に対してＭ・Ｎ倍の処理時間が必要となる。しかもターゲット領域について画素データをＭ・Ｎ回取り込まなければならない。更に、画素データの取り込みにおいて通常はオーバーヘッドが発生するので、この技術では処理時間が増大することがわかる。
【００１２】
本発明は上記の課題を解決することを目的としており、記憶すべきデータの個数を減らして記憶領域を低減しつつも、データの取り込み回数を減少させて処理時間を短縮する技術を提供する。
【課題を解決するための手段】
【００１３】
この発明にかかるブロックマッチング回路の第１の態様は、ブロックマッチングの比較対象となる画像領域である走査領域が含むＪ行Ｋ列の画素の各々に対応した画素データである走査画像データを記憶する第１記憶領域と、前記ブロックマッチングの比較基準となる画像領域であるターゲット領域が含むＭ行Ｎ列（Ｊ，Ｋ，Ｍ，ＮはＪ＞Ｍ，Ｎ＜Ｋを満足する正整数）の画素の各々に対応した画素データであるターゲット画像データを記憶する第２記憶領域と、前記走査領域内を走査して得られる複数の比較領域の各々が含むＭ行Ｎ列の画素に対応した画素データである比較画像データと、前記ターゲット画像データの間で、相互に対応する画素同士の相違を示す値たる画素差値を求めるＭ・Ｎ個の演算回路と、前記第１記憶領域から、前記比較画像データを前記比較領域毎に選択して、前記演算回路に出力するＭ・Ｎ個の選択回路と、前記画素差値の累計たる累計値を、前記比較領域毎に求める累計回路と、前記比較領域毎の前記累計値を比較し、前記累計値を最小とする前記比較領域を特定するマッチング判定部とを備える。
【００１４】
前記マッチング判定部は、前記累計値を順次に入力し、記憶の対象となる値たる記憶値を記憶し、入力された前記累計値が前記記憶値未満であったときに入力された前記累計値を用いて前記記憶値を更新する最小値記憶回路と、（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）桁のそれぞれにおいて二値を採る第１のデータを記憶する最小値位置記憶回路と、前記第１のデータを更新する更新回路とを有する。
【００１５】
前記更新回路は、（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）桁のそれぞれにおいて二値を採り、排他的に一桁が順次に第１の値を採る第２のデータを前記累計値と同期して入力し、入力された前記累計値が前記記憶値未満であったときに前記第２のデータを用いて前記第１のデータを更新する。
【００１６】
この発明にかかるブロックマッチング回路の第２の態様は、その第１の態様であって、前記更新回路は、入力された前記累計値が前記記憶値と等しいときに、前記第２のデータと、直前に記憶されていた前記第１のデータとの間での桁毎の論理和を用いて前記第１のデータを更新する。
【００１７】
この発明にかかるブロックマッチング回路の第３の態様は、その第１乃至第２の態様のいずれかであって、前記ターゲット画像データにおける画素データは、前記ターゲット領域において同一行に属する画素の纏まりに対応する画素データであるクラスタデータとして取り扱われる。
【００１８】
この発明にかかるブロックマッチング回路の第４の態様は、その第３の態様であって、前記ターゲット領域における列毎に前記クラスタデータをスワップする、複数のセレクタを更に備える。
【００１９】
この発明にかかるブロックマッチング回路の第５の態様は、その第１乃至第４の態様のいずれかであって、前記走査画像データにおける画素データは、前記走査領域において同一行に属する画素の纏まりに対応する画素データであるクラスタデータとして取り扱われる。
【００２０】
この発明にかかるブロックマッチング回路の第６の態様は、その第５の態様であって、前記走査領域における列毎に前記クラスタデータをスワップする、複数のセレクタを更に備える。
【００２１】
この発明にかかるブロックマッチング回路の第７の態様は、その第１乃至第６の態様であって、フラグを格納するレジスタを更に備える。前記走査領域内において第１行から第Ｊ行へと向かう行方向に走査し、かつ前記行方向に対して優先的に、第１列から第Ｋ列へと向かう列方向に走査して複数の前記比較領域が得られる。前記列方向の走査が行われているときに前記フラグがセットされ、当該走査が前記第Ｋ列に至ったときに前記フラグがリセットされる。前記フラグがセットされているときには前記走査画像データの更新が拒否される。
【００２２】
この発明にかかるデータ更新方法は、そのブロックマッチング回路の第１乃至第６の態様のいずれかにかかるブロックマッチング回路において、前記走査領域内において行方向に走査し、かつ前記行方向に対して優先的に列方向に走査して複数の前記比較領域が得られ、前記走査領域の第（ｓ＋１）行第Ｋ列に位置する画素に対応する前記走査画像データ（ｓは０乃至（Ｊ−Ｍ）の整数）が前記比較画像データの画素データとして、前記ターゲット領域の第１行第Ｎ列の画素に対応する前記ターゲット画像データとの間で前記画素差値が求められた後に、前記走査領域の第（ｓ＋１）行かつ第１列乃至第Ｋ列に位置する画素に対応する前記走査画像データを更新する。
【発明の効果】
【００２３】
この発明にかかるブロックマッチング回路の第１〜第２の態様によれば、走査画像データとしてＪ・Ｋ個と、ターゲット画像データとしてＭ・Ｎ個の画素データを記憶すれば足りる。よって、複数の比較領域の全てについての比較画像データとして（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）・Ｍ・Ｎ個と、ターゲット画像データとしてＭ・Ｎ個の画素データを記憶する場合よりも、記憶すべき画素データの個数が低減される。またターゲット画像データとして１個と、複数の比較領域の全てについてターゲット画像データに対応した（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）個の画素データを記憶する場合と比較して、画素データの取り込みの回数が１／（Ｍ・Ｎ）に低減され、処理速度が速い。そして累計値の最小値を与える比較領域の位置が、第１のデータによって示される。
【００２４】
この発明にかかるブロックマッチング回路の第３の態様によれば、第２記憶領域のデータ更新が高速化する。
【００２５】
この発明にかかるブロックマッチング回路の第４の態様によれば、ターゲット画像データがリトルエンディアンを採用するかビッグエンディアンを採用するかによらずに、クラスタデータを扱うことが容易となる。
【００２６】
この発明にかかるブロックマッチング回路の第５の態様によれば、第１記憶領域のデータ更新が高速化する。
【００２７】
この発明にかかるブロックマッチング回路の第６の態様によれば、走査画像データがリトルエンディアンを採用するかビッグエンディアンを採用するかによらずに、クラスタデータを扱うことが容易となる。
【００２８】
この発明にかかるブロックマッチング回路の第７の態様によれば、走査画像データの更新がブロックマッチングの妨げにならない。
【００２９】
この発明にかかるデータ更新方法によれば、ブロックマッチングを妨げずに走査画像データが更新される。
【図面の簡単な説明】
【００３０】
【図１】この発明にかかる実施の形態において採用される走査領域ＣＡが有するＪ行Ｋ列に配置された画素を模式的に示す図である。
【図２】この発明にかかる実施の形態において採用されるターゲット領域ＴＡが有するＭ行Ｎ列に配置された画素を模式的に示す図である。
【図３】この発明にかかる実施の形態において、走査領域ＣＡと比較領域ＣＭとの関係を模式的に示す図である。
【図４】選択回路Ｓｍｎと演算回路Ｑｍｎとを示すブロック図である。
【図５】画素差値Δmnstを比較領域毎に、比較領域ＣＭの全体に渡って累積する構成を示すブロック図である。
【図６】本実施の形態にかかるブロックマッチングが実行される構成の概略を示すブロック図である。
【図７】マッチング判定を行うフローチャートである。
【図８】演算回路Ｑｍｎの他の構成を例示するブロック図である。
【図９】コアリング回路１９の第１の特性を示すグラフである。
【図１０】コアリング回路１９の第２の特性を示すグラフである。
【図１１】演算回路Ｑｍｎの他の構成を例示するブロック図である。
【図１２】演算回路Ｑｍｎの他の構成を例示するブロック図である。
【図１３】ターゲット画像データＧｍｎの平均値を求める構成を示すブロック図である。
【図１４】走査画像データＣ(m+s)(n+t)の平均値を求める構成を示すブロック図である。
【図１５】マッチング判定回路ＭＣの構成を例示する回路図である。
【図１６】信号ＲＳＴ，ＣＡＬ、データＬＯＣ、累計値Ｄｓｔ、及び動作クロックＣＬＫを示すタイミングチャートである。
【図１７】位置情報ＰＳＦの例を示す図である。
【図１８】第２記憶領域ＲＴＡの構成を例示するブロック図である。
【発明を実施するための形態】
【００３１】
図１はこの発明にかかる実施の形態において採用される走査領域ＣＡが有するＪ行Ｋ列に配置された画素を模式的に示す図である。走査領域ＣＡはブロックマッチングの比較対象となる画像領域である。
【００３２】
走査領域ＣＡの各画素には、それぞれに対応する画素データである走査画像データの記号が付記されている。例えば第ｊ行第ｋ列に位置する画素（ｊは１乃至Ｊの整数、ｋは１乃至Ｋの整数）には、走査画像データＣｊｋが対応する。
【００３３】
ここでは指数ｊ，ｋがそれぞれ採り得る最大値Ｊ，Ｋとして、いずれも値“８”を採用している。従って、走査領域ＣＡには走査画像データＣ１１〜Ｃ８８が対応している。
【００３４】
図２はこの発明にかかる実施の形態において採用されるターゲット領域ＴＡが有するＭ行Ｎ列に配置された画素を模式的に示す図である。ターゲット領域ＴＡはブロックマッチングの比較基準となる画像領域である。
【００３５】
ターゲット領域ＴＡの各画素には、それぞれに対応する画素データであるターゲット画像データの記号が付記されている。例えば第ｍ行第ｎ列に位置する画素（ｍは１乃至Ｍの整数、ｎは１乃至Ｎの整数）には、ターゲット画像データＧｍｎが対応する。
【００３６】
ここでは指数ｍ，ｎがそれぞれ採り得る最大値Ｍ，Ｎとして、いずれも値“４”を採用している。従って、ターゲット領域ＴＡにはターゲット画像データＧ１１〜Ｇ４４が対応している。
【００３７】
図３はこの発明にかかる実施の形態において、走査領域ＣＡと比較領域ＣＭとの関係を模式的に示す図である。比較領域ＣＭの各々はＭ行Ｎ列に配置された画素を有し、これらの画素にそれぞれ対応する画素データを比較画像データと呼ぶことにする。
【００３８】
図１乃至３では走査画像データＣｊｋ、ターゲット画像データＧｍｎが行列状に配置されて示されたように見える。しかしこれは便宜的な図示であって、行列状に配置された画素を図示した図面において、それぞれの画素に対応したデータを付記したものである。つまり実際に走査画像データＣｊｋ、ターゲット画像データＧｍｎが行列状に配置されるものではない。
【００３９】
通常、比較領域ＣＭは走査領域ＣＡ内を第１行から第Ｊ行へと向かう行方向に走査し、かつ行方向に対して優先的に第１列から第Ｋ列へと向かう列方向に走査して得られ、その走査は画素一つ分毎に行われる。もちろん、複数の画素毎にいわゆる「間引き」を行って、当該走査を行うこともできるが、走査領域ＣＡ当たりの比較領域ＣＭの数が多くなって処理量が多くなるのは、走査を画素一つ分毎に行う場合である。よって本実施の形態でもそのような場合を想定し、かかる厳しい状況においても本発明のメリットがあることを説明する。
【００４０】
比較領域ＣＭの位置は、比較領域ＣＭの内で最も行番号が小さくかつ最も列番号が小さい位置における画素（以下「比較領域内先頭画素」とも称す）と、走査領域ＣＡの第１行第１列における画素（以下「走査領域内先頭画素」とも称す）との位置関係によって設定することができる。
【００４１】
ここで比較領域ＣＭの位置は、比較領域内先頭画素が走査領域内先頭画素に対してのずれが、行方向において行数ｓ、列方向において列数ｔである場合、位置（ｓ，ｔ）として表すことができる。但しｓは０乃至（Ｊ−Ｍ）の整数であり、ｔは０乃至（Ｋ−Ｎ）の整数である。ｓ＝ｔ＝０の場合は比較領域内先頭画素が走査領域内先頭画素に対してずれていない場合を示す。
【００４２】
位置（ｓ，ｔ）にある比較領域ＣＭにおいて、ターゲット画像データＧｍｎと比較画像データＣ(m+s)(n+t)とが対応する。図３に示された場合を例にとると、比較領域ＣＭは位置（２，３）にある。よってターゲット画像データＧ１１と対応することになる比較領域内先頭画素には、比較画像データＣ３４が対応する。位置（２，３）にある比較領域ＣＭには、Ｍ＋ｓ＝６、Ｎ＋ｔ＝７であることを考慮して、比較画像データＣ３４，Ｃ６７が対角をなす行列状の比較画像データＣ３４〜Ｃ３７，Ｃ４４〜Ｃ４７，Ｃ５４〜Ｃ５７，Ｃ６４〜Ｃ６７が対応する。
【００４３】
本実施の形態では、全ての比較領域ＣＭについて比較画像データを蓄積しておくことは行わない。そのかわり、走査領域ＣＡが有するＪ行Ｋ列の画素に対応したＪ・Ｋ個の走査画像データＣｊｋを蓄積し、走査によって位置（ｓ，ｔ）が、従って比較領域ＣＭが更新される毎に、走査画像データＣｊｋからＭ・Ｎ個の比較画像データＣ(m+s)(n+t)を選択するのである。
【００４４】
図４は、選択回路Ｓｍｎと演算回路Ｑｍｎとを示すブロック図であり、これらはいずれもターゲット領域ＴＡにおいて第ｍ行第ｎ列に配置された画素に対応する。従って実際の回路としては、行番号ｍについて１乃至Ｍまで、列番号ｎについて１乃至Ｎまで、選択回路Ｓｍｎと演算回路Ｑｍｎが設けられることになり、それぞれＭ・Ｎ個設けられる。
【００４５】
ｊmをｍ乃至（ｍ＋Ｊ−Ｍ）の整数とし、ｋnをｎ乃至（ｎ＋Ｋ−Ｎ）の整数とし、（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）個の走査画像データＣｊmｋnが選択回路Ｓｍｎに入力される。そして、走査画像データＣｊmｋnから比較画像データＣ(m+s)(n+t)が選択されて出力される。選択回路Ｓｍｎによる上記選択は、比較領域ＣＭの位置を示す行数ｓ、列数ｔを指定する走査情報ＰＳＶによって制御される。つまり比較領域ＣＭの走査領域ＣＡに対する位置に応じて、ターゲット画像データＧｍｎと共に演算されるべき比較画像データＣ(m+s)(n+t)が出力される。例えば走査情報ＰＳＶは（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）桁のそれぞれにおいて二値を採り、排他的に一桁が第１の値を採るパラレルデータである。
【００４６】
演算回路Ｑｍｎにはターゲット画像データＧｍｎが入力する。演算回路Ｑｍｎでは、乗算器（或いは反転器）１１がターゲット画像データＧｍｎに値“−１”を乗算する（あるいは正負を反転する）。そして乗算器１１の出力と比較画像データＣ(m+s)(n+t)とが加算器１２において加算される。そして絶対値回路１３によって加算器１２が出力する加算結果の絶対値が求められる。この絶対値を、ターゲット領域ＴＡと比較領域ＣＡとで相互に対応する画素同士の相違を示す値たる画素差値Δmnstとして採用することができる。
【００４７】
このように絶対値回路１３が機能するので、乗算器１１及び加算器１２は、比較画像データＣ(m+s)(n+t)とターゲット画像データＧｍｎとの差を求める、減算回路として把握することができる。
【００４８】
今、具体例の一つとして、ターゲット領域ＴＡにおいて第３行第４列に配置された画素（これにはターゲット画素データＧ３４が対応する）に対応する、選択回路Ｓ３４及び演算回路Ｑ３４について考える。
【００４９】
選択回路Ｓ３４には２５（＝５×５）個の走査画像データＣ３４〜Ｃ３８，Ｃ４４〜Ｃ４８，Ｃ５４〜Ｃ５８，Ｃ６４〜Ｃ６８，Ｃ７４〜Ｃ７８が入力する。そして比較領域ＣＭが位置（２，３）にあるとき（図３で示された比較領域ＣＭに相当）、ｍ＋ｓ＝３＋２＝５、ｎ＋ｔ＝４＋３＝７であり、選択回路Ｓ３４から走査画像データＣ５７が比較画像データとして出力される。これは図３で示された比較領域ＣＭにおいて、三行目かつ四列目に配置された画素には走査画像データＣ５７が対応することと合致している。
【００５０】
演算回路Ｑ３４にはターゲット画素データＧ３４が入力する。比較領域ＣＭが位置（２，３）にあるとき、走査画像データＣ３４〜Ｃ３８，Ｃ４４〜Ｃ４８，Ｃ５４〜Ｃ５８，Ｃ６４〜Ｃ６８，Ｃ７４〜Ｃ７８から選択された比較画像データＣ５７が演算回路Ｑ３４に入力する。そして演算回路Ｑ３４は画素差値Δ3423が出力される。
【００５１】
図５は画素差値Δmnstを比較領域毎に、比較領域ＣＭの全体に渡って累積する構成を示すブロック図である。累計回路ＳＵＭはある位置（ｓ，ｔ）にある比較領域ＣＭの全体に渡って求められたＭ・Ｎ個の画素差値Δmnstが入力され、これらを累加して累計値Ｄｓｔを出力する。当該累加は単なる加算であってもよいし、行番号ｍ、列番号ｎに依存した重み付けを伴って加算してもよい。
【００５２】
累計値Ｄｓｔは、走査情報ＰＳＶに基づいて、位置（ｓ，ｔ）毎に異なるレジスタＲｓｔへと格納される。例えば比較領域ＣＭが位置（２，３）にあるとき、累計値Ｄ２３がレジスタＲ２３へと格納される。
【００５３】
比較領域ＣＭは走査領域ＣＡ内を走査して得られるので、累計値Ｄｓｔも位置（ｓ，ｔ）毎にシリアルに出力される。走査情報ＰＳＶに基づいて、（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）個のレジスタＲ００〜Ｒ(J-M)(K-N)の内から一つのレジスタＲｓｔのみが活性化し、これに対応する累計値Ｄｓｔを格納する。
【００５４】
図６は本実施の形態にかかるブロックマッチングが実行される構成の概略を示すブロック図である。フレーム毎に画像データＰＩＣがフレームバッファＦＢに入力し、中央演算処理部ＣＰＵの制御により、第１記憶領域ＲＣＡには走査画像データＣｊｋが、第２記憶領域ＲＴＡにはターゲット画像データＧｍｎが、それぞれ記憶される。
【００５５】
複数の比較領域ＣＭの全てについての比較画像データとして（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）・Ｍ・Ｎ個と、ターゲット画像データとしてＭ・Ｎ個の画素データを記憶する場合と比較して、上述の技術では走査画像データとしてＪ・Ｋ個と、ターゲット画像データとしてＭ・Ｎ個の画素データを記憶すれば足りる。つまり記憶すべき画素データの個数が低減される。
【００５６】
このように記憶すべき画素データの個数が低減されている場合には、第１記憶領域ＲＣＡや第２記憶領域ＲＴＡへのデータアクセスは、ＤＭＡ（ダイレクトメモリアクセス）を採用せず、中央演算処理部ＣＰＵが直接にデータアクセスを行うことが処理速度の迅速の観点から望ましい。
【００５７】
ターゲット画像データとして１個と、複数の比較領域の全てについてターゲット画像データに対応した（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）個の画素データを記憶する場合と比較して、画素データの取り込みの回数が１／（Ｍ・Ｎ）に低減され、処理速度が短縮される。
【００５８】
ハードウェアで構成されるマッチング回路ＨＷには、上述したＭ・Ｎ個のセレクタＳｍｎ及び演算回路Ｑｍｎが設けられ、それぞれセレクタ群ＳＹ及び演算回路群ＱＹとして纏めて描かれている。第１記憶領域ＲＣＡからは走査画像データＣｊｍｋｎが、第２記憶領域ＲＴＡからはターゲット画像データＧｍｎが、それぞれ全てのｍ，ｎについて入力する。走査画像データＣｊｍｋｎ及びターゲット画像データＧｍｎは、それぞれセレクタ群ＳＹ及び演算回路群ＱＹに入力する。中央演算処理部ＣＰＵは、走査情報ＰＳＶを生成し、セレクタ群ＳＹに入力する。走査情報ＰＳＶによって位置（ｓ，ｔ）が指定され、セレクタ群ＳＹから演算回路群ＱＹへとＭ・Ｎ個の比較画像データＣ(m+s)(n+t)が出力される。
【００５９】
上述した累計回路ＳＵＭもマッチング回路ＨＷに設けられ、走査情報ＰＳＶによって指定された位置（ｓ，ｔ）毎に、累計値ＤｓｔをレジスタＲｓｔに振り分けて格納する。（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）個のレジスタＲｓｔは、図６においてレジスタ群ＲＹとして纏めて描かれている。但し図示を簡単にするため、図６での表記にはＨ＝Ｊ−Ｍ、Ｖ＝Ｋ−Ｎを導入した。
【００６０】
マッチング回路ＨＷには、更にマッチング判定部ＭＣが設けられている。マッチング判定部ＭＣにはレジスタ群ＲＹから（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）個の累計値Ｄｓｔが入力し、それらの最小値を得る位置（ｓ，ｔ）を示す位置情報ＰＳＦを中央演算処理部ＣＰＵへと出力する。そして位置情報ＰＳＦが示す位置（ｓ，ｔ）にある比較領域ＣＭが、ターゲット領域ＴＡと最も類似すると判断される。
【００６１】
図７は位置（ｓ，ｔ）を更新してマッチング判定を行うフローチャートである。ステップＺ１〜Ｚ８は中央演算処理部ＣＰＵが、ステップＺ９，Ｚ１０はマッチング回路ＨＷが、それぞれ実行する。
【００６２】
走査領域ＣＡが一つ決まった後、ステップＺ１において行数ｓ及び列数ｔを値“−１”に初期化する。その後、ステップＺ２において行数ｓを増加させ、ステップＺ２が実行された後にステップＺ３において列数ｔを増加させる。上述のように、本実施の形態では「間引き」をせずに走査領域内を走査するので、行数ｓや列数ｔの増分値は“１”とする。
【００６３】
ステップＺ１の実行後に初めてステップＺ２が実行された場合には、ステップＺ２によって行数ｓは値“０”を採る。即ち、比較領域内先頭画素の行番号と走査領域内先頭画素の行番号とが一致する。またステップＺ２の実行後に初めてステップＺ３が実行された場合には、ステップＺ３によって列数ｔは値“０”を採る。即ち、比較領域内先頭画素の列番号と走査領域内先頭画素の列番号とが一致する。
【００６４】
ステップＺ３の実行後、ステップＺ４において、ステップＺ２，Ｚ３で得られた行数ｓ、列数ｔを指定する走査情報ＰＳＶを設定する。
【００６５】
ステップＺ４の実行後、ステップＺ１０において、走査情報ＰＳＶが指定する位置（ｓ，ｔ）において累計値Ｄｓｔを求め、レジスタＲｓｔに格納する。ステップＺ１０の動作の詳細は、セレクタＳｍ、演算回路Ｑｍｎ、累計回路ＳＵＭの動作として説明済みである。
【００６６】
その後、ステップＺ５において、列数ｔが値（Ｋ−Ｎ）に達したか否かを判断する。上述のように列数ｔの最大値は（Ｋ−Ｎ）であるので、ステップＺ５の判断が肯定的であれば、ステップＺ６において列数ｔを値“−１”に初期化する。またステップＺ５の判断が否定的であれば再びステップＺ３を実行し、列数ｔを増加させる。このようなステップＺ５，Ｚ６，Ｚ３の処理がステップＺ２が一回実行された後に繰り返されるので、比較領域ＣＭは、走査領域ＣＡ内において行方向に対して優先的に列方向に走査して得られるのである。
【００６７】
その後、後述するステップＺ７を実行して（ステップＺ７は省略してもよい）、ステップＺ８において行数ｓが値（Ｊ−Ｍ）に達したか否かを判断する。上述のように行数ｓの最大値は（Ｊ−Ｍ）であるので、ステップＺ８の判断が否定的であれば再びステップＺ２を実行し、行数ｓを増加させる。肯定的であれば、ステップＺ９において位置情報ＰＳＦを設定し、ステップＺ１を再び実行する。このようなステップＺ２〜Ｚ８の処理が、走査領域ＣＡが一旦設定される毎に繰り返されるので、走査領域ＣＡ内において列方向に劣後的に行方向に走査して、比較領域ＣＭが得られるのである。
【００６８】
ステップＺ７は走査画像データの更新を行う処理である。ステップＺ６が実行されたときには、走査領域ＣＡの第（ｓ＋１）行第１〜第Ｋ列に位置する画素に対応する第（ｓ＋１）行のＫ個の走査画像データＣ(s+1)１〜Ｃ(S+1)Ｋが比較領域ＣＭに供されており、これらについての画素差値Δmn(s+1)1〜Δmn(s+1)Kが求められている。従ってステップＺ７において走査画像データＣ(s+1)１〜Ｃ(S+1)Ｋを更新しても、ブロックマッチングの妨げにはならない。
【００６９】
逆にステップＺ３〜Ｚ５の間で走査画像データＣｊｋを更新することはブロックマッチングを妨げてしまう。よって上述のようにステップＺ７はステップＺ５の後に設けることが望ましい。
【００７０】
走査画像データＣｊｋの更新は、より具体的には、データ更新の拒否を示すフラグＦＬＧを用いる。比較領域ＣＭを求めるには走査領域ＣＡ内を行方向に走査するので、走査領域ＣＡに対する比較領域ＣＭの行方向のずれを示す行数ｓが更新される度に、フラグＦＬＧをセットする（データ更新が拒否される）。そしてステップＺ５において列数ｔがＫ−Ｎに至ったと判断された後、フラグＦＬＧがリセットされる（データ更新の拒否が解除される）。
【００７１】
図６においてフラグＦＬＧが格納されるレジスタＲＦが示されている。フラグＦＬＧのセット／リセットは中央演算部ＣＰＵによって行われ、またその値が中央演算部ＣＰＵによって参照される。
【００７２】
図８は演算回路Ｑｍｎの他の構成を例示するブロック図である。図４に示された構成に対し、絶対値回路１３の後段にコアリング回路１９を追加した構成を有している。コアリング回路１９には正のしきい値ＣＲＴＨと、絶対値回路１３の出力が与えられる。しきい値ＣＲＴＨはコアリング回路１９に記憶されていてもよい。
【００７３】
コアリング回路１９は、絶対値回路１３の出力がしきい値ＣＲＴＨ以下の場合には零を、絶対値回路１３の出力がしきい値ＣＲＴＨよりも大きい場合には絶対値回路１３の出力から非負の値を差し引いた値を、それぞれ画素差値Δmnstとして出力する。
【００７４】
このように絶対値回路１３の出力に対してしきい値ＣＲＴＨでコアリングした値を画素差値Δmnstとして採用することは、ノイズに強い類似性判断ができるという利点をもたらす。
【００７５】
図９及び図１０はそれぞれコアリング回路１９の第１及び第２の特性を示すグラフであり、いずれも絶対値回路１３の出力ＡＢＳの値を横軸に採用し、画素差値Δmnstの値を縦軸に採用している。
【００７６】
図９に示された特性に従えば、出力ＡＢＳがしきい値ＣＲＴＨよりも大きい場合には出力ＡＢＳから零を差し引いた値を、即ち出力ＡＢＳそのままを画素差値Δmnstとして出力する。図１０に示された特性に従えば、出力ＡＢＳがしきい値ＣＲＴＨよりも大きい場合には出力ＡＢＳからしきい値ＣＲＴＨを差し引いた値を画素差値Δmnstとして出力する。
【００７７】
コアリング回路１９の特性をどのように選定するかは、ブロックマッチングを採用するより上位の処理、例えば動きベクトルの検出をどのように行うかに依存して決定する。
【００７８】
図１１は演算回路Ｑｍｎの他の構成を例示するブロック図である。図４に示された構成に対し、乗算器１１の前段にターゲット画像データＧｍｎの値からオフセットＯＦＤ０を差し引く減算回路を設けた構成を有している。当該減算回路はオフセットＯＦＤ０に値“−１”を乗算する（あるいは正負を反転する）乗算器（或いは反転器）１４と、乗算器１４の出力をターゲット画像データＧｍｎに加算する加算器１０とを含む。
【００７９】
図１１に例示された構成では、更に、オフセットＯＦＤ０を採用するか否かを選択可能とするセレクタ１５も演算回路Ｑｍｎが有している。セレクタ１５には乗算器１４の出力と値“０”とが入力され、オフセットの採否を設定する信号ＯＦＤによっていずれを加算器１０に出力するかが制御される。
【００８０】
このような減算回路を設けることにより、ターゲット領域に対してオフセットを施してから比較領域との類似性を判断することができる。またセレクタ１５を設けることにより、オフセットの採否を選択することができる。オフセットＯＦＤ０としてターゲット画像データＧｍｎの値によらない一定値を採用すれば、ターゲット領域についていわゆるＤＣオフセットを採用することができる。
【００８１】
図１２は演算回路Ｑｍｎの他の構成を例示するブロック図である。図１１に示された構成に対し、加算器１２の前段に比較画像データＣ(m+s)(n+t)の値からオフセットＯＦＳ２を差し引く減算回路を追加した構成を有している。当該減算回路はオフセットＯＦＳ２に値“−１”を乗算する（あるいは正負を反転する）乗算器（或いは反転器）１７と、乗算器１７の出力を比較画像データＣ(m+s)(n+t)に加算する加算器１６とを含む。
【００８２】
図１２に例示された構成では、更に、オフセットＯＦＳ２を採用するか否かを選択可能とするセレクタ１８も演算回路Ｑｍｎが有している。セレクタ１８には乗算器１７の出力と値“０”とが入力され、オフセットの採否を設定する信号ＯＦＡによっていずれを加算器１６に出力するかが制御される。
【００８３】
このような減算回路を設けることにより、比較領域に対してオフセットを施してからターゲット領域との類似性を判断することができる。またセレクタ１８を設けることにより、オフセットの採否を選択することができる。オフセットＯＦＳ２として比較画像データＣ(m+s)(n+t)の値によらない一定値を採用すれば、比較領域についてＤＣオフセットを採用することができる。
【００８４】
なお、図１２ではターゲット領域についてはオフセットＯＦＳ１を採用し、セレクタ１５もセレクタ１８と共に信号ＯＦＡによってその機能が制御されている場合が例示されている。但し、図１２の構成においてターゲット領域のオフセットに関しては、図１１に示された構成を採用してもよい。この場合には信号ＯＦＤ，ＯＦＡによって、ターゲット領域のオフセットの採否と、比較領域のオフセットの採否とを、独立して選択することができる。
【００８５】
図１２に示された構成において、オフセットＯＦＳ１，ＯＦＳ２として、それぞれターゲット画像データＧｍｎの平均値、比較画像データＣ(m+s)(n+t)の平均値を採用してもよい。この場合、それぞれターゲット領域、比較領域についていわゆるＡＣオフセットを採用することができる。
【００８６】
また、セレクタ１５，１８に入力する値“０”の代わりに、それぞれ他の固定値を採用してもよい。この場合には、信号ＯＦＡによって、ＤＣオフセットとＡＣオフセットを切り換えて採用されることとなる。
【００８７】
図１３及び図１４は、それぞれターゲット画像データＧｍｎの平均値、比較画像データＣ(m+s)(n+t)の平均値を求める構成を示すブロック図である。図１３、図１４で図示された構成は演算回路Ｑｍｎに含まれてもよいし、演算回路Ｑｍｎの外部に設けられてもよい。
【００８８】
図１３では、累計回路２１がＭ・Ｎ個のターゲット画像データＧｍｎの総和を出力し、除算回路２２が当該総和をＭ・Ｎで除している構成が例示されている。これによりＭ・Ｎ個のターゲット画像データＧｍｎの平均値がオフセットＯＦＳ１として求められる。
【００８９】
図１４では、累計回路３１がある行数ｓ、列数ｔについてのＭ・Ｎ個の比較画像データＣ(m+s)(n+t)の総和を出力し、除算回路３２が当該総和をＭ・Ｎで除している構成が例示されている。これにより第（Ｊ−ｓ＋１）行乃至第（Ｊ−ｓ＋Ｍ）行かつ第（Ｋ−ｔ＋１）列乃至第（Ｋ−ｔ＋Ｎ）列の画素に対応するＭ・Ｎ個の比較画像データＣ(m+s)(n+t)の平均値がオフセットＯＦＳ２として求められる。
【００９０】
図１５はマッチング判定回路ＭＣ（図６参照）の構成を例示する回路図である。マッチング判定回路ＭＣは信号ＣＡＬ，ＲＳＴ、データＬＯＣの他、累計値Ｄｓｔを順次に入力する。信号ＣＡＬはマッチング判定を許可する。信号ＲＳＴはマッチング判定のための初期値を設定する。信号ＲＳＴが一旦活性化してから信号ＣＡＬの活性化が開始し、あるターゲット領域についての全ての累計値Ｄｓｔが入力する間は信号ＣＡＬが活性化しつづける。
【００９１】
データＬＯＣは（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）桁のそれぞれにおいて二値を採り、排他的に一桁が順次に第１の値を採るデータである。データＬＯＣを、例えば走査情報ＰＳＶを加工して得ることは容易である。以下、図示の簡単のため、（Ｊ−Ｍ＋１）・（Ｋ−Ｎ＋１）を値Ｗで表記する。
【００９２】
図１６は信号ＲＳＴ，ＣＡＬ、データＬＯＣ、累計値Ｄｓｔ、及び動作クロックＣＬＫを示すタイミングチャートである。動作クロックＣＬＫに同期して信号ＲＳＴが動作クロックＣＬＫの一周期分活性化する。信号ＲＳＴの活性化が終了した後、信号ＣＡＬが動作クロックＣＬＫに同期して動作クロックＣＬＫのＷ周期分活性化する。データＬＯＣ[W:1]は動作クロックＣＬＫに同期して、信号ＣＡＬが活性化している期間において第１桁から順次第Ｗ桁へと排他的に活性化する。累計値Ｄｓｔの値はＤ１，Ｄ２，Ｄ３，…，ＤＷとして表しており、これらが動作クロックＣＬＫに同期して順次に変遷する。例えばレジスタ群ＲＹから累計値Ｄｓｔを順次に読み出して、累計値Ｄｓｔをマッチング判定部ＭＣに入力する。
【００９３】
マッチング判定回路ＭＣは、値ＭＩＮＶＡＬを記憶し、入力された累計値Ｄｓｔが記憶値未満であったときに入力された累計値Ｄｓｔを用いて記憶値ＭＩＮＶＡＬを更新する最小値記憶回路を有している。具体的な最小値記憶回路として、下記の構成が例示されている。
【００９４】
ＤフリップフロップＤ１には値ＭＩＮＶＡＬが記憶される。ＤフリップフロップＤ１は、信号ＣＡＬが活性化している期間において動作クロックＣＬＫに同期して、そのＱ出力として値ＭＩＮＶＡＬを出力する。
【００９５】
値ＭＩＮＶＡＬと、順次に入力された累計値Ｄｓｔとが、比較器ＣＭＰ及びセレクタＬ１に入力する。
【００９６】
比較器ＣＭＰにおいて、値ＭＩＮＶＡＬと累計値Ｄｓｔが比較される。比較器ＣＭＰは、累計値Ｄｓｔが値ＭＩＮＶＡＬよりも小さいときに活性化する第１出力（図１５では第１出力を出力する出力端に“Ａ＞Ｂ”と付記している）と、累計値Ｄｓｔが値ＭＩＮＶＡＬと等しいときに活性化する第２出力（図１５では第２出力を出力する出力端に“Ａ＝Ｂ”と付記している）とを出力する。
【００９７】
セレクタＬ１は、第１出力が活性化していれば累計値ＤｓｔをＤフリップフロップＤ１の入力端に与え、そうでなければ値ＭＩＮＶＡＬをＤフリップフロップＤ１の入力端に与える。
【００９８】
以上の処理により、値ＭＩＮＶＡＬは、より小さな累計値Ｄｓｔによって更新される。よって、あるターゲット領域についての全ての累計値Ｄｓｔが（すなわちＷ個の累計値Ｄｓｔが）入力されれば、その中の最小値が値ＭＩＮＶＡＬとしてＤフリップフロップＤ１のＱ出力から得られることになる。かかる動作を得るためには、信号ＲＳＴの活性化によって累計値Ｄｓｔとして想定される以上の数値を値ＭＩＮＶＡＬの初期値としてＤフリップフロップＤ１に記憶させることが望ましい。
【００９９】
ＤフリップフロップＤ２にはＷ桁のそれぞれにおいて二値を採るデータが記憶されており、信号ＣＡＬが活性化している期間において動作クロックＣＬＫに同期して、そのＱ出力として自身が記憶するデータを出力する。
【０１００】
後述する処理により、ＤフリップフロップＤ２のＱ出力として得られる当該データが、位置情報ＰＳＦとして得られる。つまりＤフリップフロップＤ２は、値ＭＩＮＶＡＬが累計値Ｄｓｔについての最小値を採るときに、当該最小値を与える位置を記憶する最小値位置記憶回路として機能する。
【０１０１】
ゲートＧ１は比較器ＣＭＰの第１出力と第２出力の活性化についての論理和を出力する。すなわちゲートＧ１の出力は、累計値Ｄｓｔが値ＭＩＮＶＡＬ以下のときに活性化する。
【０１０２】
ゲートＧ２は、いずれもＷ桁のデータであるデータＬＯＣとＤフリップフロップＤ２のＱ出力とについて、各桁毎に活性化の論理和を出力する。よってゲートＧ２の出力もＷ桁のデータである。
【０１０３】
セレクタＬ２は、比較器ＣＭＰの第２出力に基づいて、ゲートＧ２の出力とデータＬＯＣとを選択的に出力する。具体的には当該第２出力が活性化しているとき（累計値Ｄｓｔが値ＭＩＮＶＡＬと等しいとき）にはゲートＧ２の出力を、そうでないときにはデータＬＯＣを、それぞれ出力する。
【０１０４】
セレクタＬ３は、ゲートＧ１の出力に基づいて、セレクタＬ２の出力とＤフリップフロップＤ２のＱ出力とを選択的に出力する。具体的には比較器ＣＭＰの第１出力及び第２出力のいずれかが活性化しているとき（累計値Ｄｓｔが値ＭＩＮＶＡＬ以下のとき）にはセレクタＬ２の出力を、そうでないときにはＤフリップフロップＤ２のＱ出力を、それぞれ出力する。
【０１０５】
信号ＲＳＴの活性化により、ＤフリップフロップＤ２にはその記憶する値の初期値として、Ｗ桁の全てが非活性化したデータが採用される。
【０１０６】
累計値Ｄｓｔによって、値ＭＩＮＶＡＬが更新されるとき、ゲートＧ１の出力は活性化するが、比較器ＣＭＰの第２出力は活性化しない。よってセレクタＬ２，Ｌ３はデータＬＯＣをＤフリップフロップＤ２のＤ入力として与える。これにより、ＤフリップフロップＤ２に記憶されるデータが更新され、その内で活性化する桁は、データＬＯＣにおいて、値ＭＩＮＶＡＬが更新される原因となった（つまり値ＭＩＮＶＡＬの更新に採用される）累計値Ｄｓｔの入力と同期して活性化している桁となる。
【０１０７】
累計値Ｄｓｔによって値ＭＩＮＶＡＬが更新されない場合は二通り想定される。第１の場合は、累計値Ｄｓｔが記憶済みの値ＭＩＮＶＡＬと等しい場合である。このときの累計値Ｄｓｔも、信号ＲＳＴが活性化した後に入力された累計値Ｄｓｔの最小値足り得る。よって当該累計値Ｄｓｔの入力と同期したデータＬＯＣにおいて活性化している桁も、ＤフリップフロップＤ２が記憶するデータにおいて活性化させることが望ましい。
【０１０８】
このときはゲートＧ１の出力と比較器ＣＭＰの第２出力との両方が活性化するので、セレクタＬ２，Ｌ３はゲートＧ２の出力をＤフリップフロップＤ２に与える。上述のようにゲートＧ２はデータＬＯＣとＤフリップフロップＤ２のＱ出力とについて、各桁毎に活性化の論理和をとるので、それまでに最小値を与えた累計値Ｄｓｔに対応する桁と、第１の場合を招来した累計値Ｄｓｔに対応する桁とのいずれもがＤフリップフロップＤ２において記憶される。
【０１０９】
他方、累計値Ｄｓｔによって値ＭＩＮＶＡＬが更新されない場合の内、第２の場合は、累計値Ｄｓｔが記憶済みの値ＭＩＮＶＡＬよりも大きい場合である。この場合にはＤフリップフロップＤ２が記憶するＷ桁のデータを更新すべきではない。この場合、ゲートＧ１の出力が活性化しないので、セレクタＬ２の出力によらず、セレクタＬ３はＤフリップフロップＤ２のＱ出力をそのＤ入力として与え、ＤフリップフロップＤ２が記憶するデータは維持される。
【０１１０】
累計値Ｄｓｔがマッチング判定回路ＭＣに入力する順序は、レジスタ群ＲＹからの累計値Ｄｓｔの読み出し順序に依拠する。レジスタ群ＲＹからの累計値Ｄｓｔの読み出し順序は通常は既知であるので、ＤフリップフロップＤ２に記憶されるデータにおいて活性化している桁は、現状での累計値Ｄｓｔの最小値を与える位置（ｓ，ｔ）と対応づけられる。従って、ＤフリップフロップＤ２は、値ＭＩＮＶＡＬが累計値Ｄｓｔについての最小値を採るときに、当該最小値を与える位置を記憶する機能を果たすことになる。
【０１１１】
図１７は、あるターゲット領域についての全ての累計値Ｄｓｔが（すなわちＷ個の累計値Ｄｓｔが）入力された後の、ＤフリップフロップＤ２のＱ出力の例であり、位置情報ＰＳＦとして把握される。ここでは第３桁目が活性化しているため、信号ＲＳＴが活性化してから３番目に入力した累計値Ｄｓｔを与える位置（ｓ，ｔ）にある比較領域ＣＡが、最もターゲット領域ＴＡと類似していることが示されていることになる。
【０１１２】
ターゲット画像データＧｍｎは、対応する画素毎に区切られたデータとして取り扱ってもよいし、ターゲット領域において同一行に属する画像の纏りに対応する画素データであるクラスタデータとして取り扱われてもよい。このようなデータの取り扱いは、第２記憶領域ＲＴＡのデータ更新が高速化する観点で望ましい。
【０１１３】
図１８は、第２記憶領域ＲＴＡの構成を例示するブロック図である。中央演算処理部ＣＰＵはアドレス信号ＡＤＲ、書き込み許可信号ＷＥ、読み出しデータＲＤを出力する。デコーダＤＥＣは、これらを受け、択一的に活性化する４ビットのエネーブル信号を出力する。また中央演算処理部ＣＰＵはクラスタデータたる３２ビットの信号Ｇ［３１：０］を出力する。ここではターゲット領域ＴＡとして一行に４列の画素が配列されている場合を想定しており、一つの画素に対応する画素データを８ビットと想定している。よってクラスタデータのビット数は３２ビットとなる。
【０１１４】
第２記憶領域ＲＴＡはターゲット領域ＴＡの列数の応じたセレクタＬ１１，Ｌ１２，Ｌ１３，Ｌ１４と、ターゲット領域ＴＡの画素数と同じＤフリップフロップを有している。
【０１１５】
クラスタデータＧ［３１：０］は８ビットずつに分岐してセレクタＬ１１，Ｌ１２，Ｌ１３，Ｌ１４に入力する。具体的には、クラスタデータＧ［３１：２４］がセレクタＬ１１の第１入力端（図中、“１”と付記された側の入力端：他のセレクタＬ１２，Ｌ１３，Ｌ１４についても同様）及びセレクタＬ１４の第２入力端に（図中、“０”と付記された側の入力端：他のセレクタＬ１２，Ｌ１３，Ｌ１１についても同様）与えられる。クラスタデータＧ［２３：１６］がセレクタＬ１２の第１入力端及びセレクタＬ１３の第２入力端に与えられ、クラスタデータＧ［１５：８］がセレクタＬ１３の第１入力端及びセレクタＬ１２の第２入力端に与えられ、クラスタデータＧ［７：０］がセレクタＬ１４の第１入力端及びセレクタＬ１１の第２入力端に与えられる。セレクタＬ１１，Ｌ１２，Ｌ１３，Ｌ１４はそれぞれの第１入力端に入力されたクラスタデータ及び第２入力端に入力されたクラスタデータのいずれか一方をターゲット画像データＧｍ１，Ｇｍ２，Ｇｍ３，Ｇｍ４として出力する。
【０１１６】
セレクタＬ１１の出力は、図中で横方向に最も上側で配列されているＤフリップフロップの全てのＤ入力端に与えられる。セレクタＬ１２の出力は、図中で横方向に上から二番目で配列されているＤフリップフロップの全てのＤ入力端に与えられる。セレクタＬ１３の出力は、図中で横方向に上から三番目で配列されているＤフリップフロップの全てのＤ入力端に与えられる。セレクタＬ１４の出力は、図中で横方向に最も下側で配列されているＤフリップフロップの全てのＤ入力端に与えられる。
【０１１７】
４ビットのエネーブル信号はそれぞれ、図中で縦方向に４列に配列されているＤフリップフロップに対応している。上述のように、４ビットのエネーブル信号は択一的に活性化するので、縦方向に配列されているＤフリップフロップ同士が同期して活性化／非活性化することになる。
【０１１８】
よって、図１８において図中で縦方向に配列されているＤフリップフロップはターゲット領域ＴＡの同一行に配置された画素についての画素データを記憶することになる。例えば図中で最も左側で縦方向に配列されたＤフリップフロップは、ターゲット領域ＴＡの第１行に配列された画素についての画素データたるターゲット画像データＧ１１，Ｇ１２，Ｇ１３，Ｇ１４を記憶する。その右隣において縦方向に配列されたＤフリップフロップは、ターゲット領域ＴＡの第２行に配列された画素についての画素データたるターゲット画像データＧ２１，Ｇ２２，Ｇ２３，Ｇ２４を記憶する。更にその右隣において縦方向に配列されたＤフリップフロップは、ターゲット領域ＴＡの第３行に配列された画素についての画素データたるターゲット画像データＧ３１，Ｇ３２，Ｇ３３，Ｇ３４を記憶する。そして図中で最も右側で縦方向に配列されたＤフリップフロップは、ターゲット領域ＴＡの第４行に配列された画素についての画素データたるターゲット画像データＧ４１，Ｇ４２，Ｇ４３，Ｇ４４を記憶する。
【０１１９】
さて、クラスタデータＧ［３１：０］のビット配列として、ビッグエンディアンが採用されている場合もあれば、リトルエンディアンが採用される場合もある。よってセレクタＬ１１，Ｌ１２，Ｌ１３，Ｌ１４の選択的出力を制御することにより、ターゲット画像データＧｍ１，Ｇｍ２，Ｇｍ３，Ｇｍ４として、クラスタデータＧ［３１：２４］，Ｇ［２３：１６］，Ｇ［１５：８］，Ｇ［７：０］を採用するか、クラスタデータＧ［７：０］，Ｇ［１５：８］，Ｇ［２３：１６］，Ｇ［３１：２４］を採用することができる。つまりリトルエンディアンを採用するかビッグエンディアンを採用するかによらずに、クラスタデータを扱うことが容易となる。図１８では、このようなセレクタの機能選択を、レジスタＲＢに格納された信号ＢＹＴＥＳＷＡＰに制御させている場合が例示されている。
【０１２０】
上述のようなデータのスワップはターゲット画像データのみならず、走査画像データにおいて行ってもよい。具体的には、走査画像データにおける画素データは、走査領域において同一行に属する画像の纏りに対応する画素データであるクラスタデータとして取り扱われてもよい。このようなデータの取り扱いは、第１記憶領域ＲＣＡのデータ更新が高速化する観点で望ましい。
【符号の説明】
【０１２１】
ＣＡ  走査領域
Ｃｊｋ，Ｃ１１〜Ｃ８８  走査画像データ
ＲＣＡ  第１記憶領域
ＴＡ  ターゲット領域
Ｇｍｎ，Ｇ１１〜Ｇ４４  ターゲット画像データ
Ｃ(m+s)(n+t)，Ｃ３４〜Ｃ６７  比較画像データ
Δｍｎｓｔ  画素差値
Ｑｍｎ，Ｑ１１〜ＱＭＮ  演算回路
Ｌ１，Ｌ２，Ｌ３，Ｌ１１〜Ｌ１４，Ｓｍｎ，Ｓ１１〜ＳＭＮ  セレクタ
Ｄｓｔ  累計値
ＳＵＭ  累計回路
ＭＣ  マッチング判定部
１１，１４  乗算器（あるいは反転器）
１０，１２  加算器
１３  絶対値回路
ＯＦＳ０，ＯＦＳ１，ＯＦＳ２  オフセット
ＣＲＴＨ  しきい値
１９  コアリング回路
ＭＩＮＶＡＬ  ＤフリップフロップＤ１が記憶する値
Ｄ１，Ｄ２  フリップフロップ
Ｇ１，Ｇ２  ゲート
ＬＯＣ［０］〜ＬＯＣ［Ｗ］  データ
Ｇ［３１：０］  クラスタデータ
【図１】
0005499203.tif 000002
【図２】
0005499203.tif 000003
【図３】
0005499203.tif 000004
【図４】
0005499203.tif 000005
【図５】
0005499203.tif 000006
【図６】
0005499203.tif 000007
【図７】
0005499203.tif 000008
【図８】
0005499203.tif 000009
【図９】
0005499203.tif 000010
【図１０】
0005499203.tif 000011
【図１１】
0005499203.tif 000012
【図１２】
0005499203.tif 000013
【図１３】
0005499203.tif 000014
【図１４】
0005499203.tif 000015
【図１５】
0005499203.tif 000016
【図１６】
0005499203.tif 000017
【図１７】
0005499203.tif 000018
【図１８】
0005499203.tif 000019