以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の画像処理装置は、
マッチングの基準となる基準画像に所定の間隔ごとに格子状に設けられた所定のサイズの範囲である評価ブロックを構成する各画素と、その画素に対応する、前記マッチングにおいて参照される参照画像のうちの所定の方向の画素数が2以上である所定のサイズの範囲である探索範囲とのマッチングを行う画像処理装置(例えば、図1の画像処理装置1)において、
前記所定の間隔に基づいて、各グループに属する評価ブロックの前記所定の方向の間隔が、前記評価ブロックの前記所定の方向の長さと等しくなるように、前記評価ブロックをグループに分類する分類手段(例えば、図1の分類部22)と、
前記グループごとに、前記評価ブロックを、前記所定の方向に並ぶ順に、前記マッチングの対象とする対象ブロックとして決定する決定手段(例えば、図1のメモリ制御部12)と、
前記参照画像のうちの、前記対象ブロック内の全ての画素に対応する探索範囲からなる探索画素群を構成する画素を供給する供給手段(例えば、図1のメモリ13)と、
前記探索範囲群を構成する全ての画素を出力する出力手段(例えば、図13の画素メモリ101−3乃至101−5,101−10乃至101−12、および101−17乃至101−19)と、
供給された前記探索画素群を構成する画素のうち、次の対象ブロックの探索画素群を構成する画素を記憶する記憶手段(例えば、図13の画素メモリ101−1乃至101−21)と
を備え、
前記供給手段は、前記参照画像のうちの、記憶されている画素以外の、前記探索画素群を構成する画素を供給し、
前記出力手段は、供給された前記探索画素群を構成する画素と、記憶されている画素とを、前記探索画素群を構成する全ての画素として出力し、
所定の方向の前記所定の間隔は、前記評価ブロックの前記所定の方向の長さのN(Nは1以上の整数)分の1である。
本発明の一側面の画像処理方法は、
マッチングの基準となる基準画像に所定の間隔ごとに格子状に設けられた所定のサイズの範囲である評価ブロックを構成する各画素と、その画素に対応する、前記マッチングにおいて参照される参照画像のうちの所定の方向の画素数が2以上である所定のサイズの範囲である探索範囲とのマッチングを行う画像処理装置(例えば、図1の画像処理装置1)の画像処理方法において、
前記所定の間隔に基づいて、各グループに属する評価ブロックの前記所定の方向の間隔が、前記評価ブロックの前記所定の方向の長さと等しくなるように、前記評価ブロックをグループに分類し(例えば、図35のステップS32またはS33)、
前記グループごとに、前記評価ブロックを、前記所定の方向に並ぶ順に、前記マッチングの対象とする対象ブロックとして決定し(例えば、図33のステップS13)、
前記参照画像のうちの、記憶されている画素以外の、前記対象ブロック内の全ての画素に対応する探索範囲からなる探索画素群を構成する画素を供給し(例えば、図33のステップS16)、
供給された前記探索画素群を構成する画素と、記憶されている画素とを、前記探索画素群を構成する全ての画素として出力し(例えば、図33のステップS18)、
供給された前記探索画素群を構成する画素のうち、次の対象ブロックの探索画素群を構成する画素を記憶させる(例えば、図33のステップS17)
ステップを含み、
所定の方向の前記所定の間隔は、前記評価ブロックの前記所定の方向の長さのN(Nは1以上の整数)分の1である。
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
図1は、本発明を適用した画像処理装置の一実施の形態の構成例を示すブロック図である。
図1の画像処理装置1は、マッチング制御部11、メモリ制御部12、メモリ13、およびマッチング演算部14により構成され、入力画像どうしのマッチングを行い、そのマッチングに対する評価値に応じて、入力画像の動きベクトルを決定する。
マッチング制御部11は、生成部21と分類部22により構成される。
マッチング制御部11には、図示せぬ他の装置からマッチングの開始指示と、マッチングに関するパラメータ(以下、マッチングパラメータという)が供給される。マッチング制御部11に供給されるマッチングパラメータは、メモリ13に入力画像として入力されるマッチングの基準となる基準画像に所定の間隔ごとに格子状に設けられる、動きベクトルを決定する所定のサイズの範囲である評価ブロックの位置(以下、マッチング位置という)、評価ブロック数、およびマッチング間隔により構成される。
なお、マッチング間隔は、隣り合う評価ブロック内の同一の位置の画素どうしの縦方向および横方向の長さである。
生成部21は、マッチングの開始指示に応じて、入力画像の読出指示をメモリ制御部12に供給する。また、生成部21は、分類部22から供給される、各グループに分類された評価ブロックを特定する情報(以下、グループ情報)、並びに、マッチングパラメータのマッチング位置とマッチング間隔に基づいて、グループごとに、グループ内の各評価ブロックの先頭の画素(例えば、左上の画素)の位置の座標(以下、ブロック位置情報という)を生成する。
このように、生成部21は、マッチング位置とマッチング間隔に基づいてブロック位置情報を生成するので、後述するメモリ13が、ブロック位置情報に対応するアドレスにしたがって画素を読み出すことにより、任意のマッチング位置とマッチング間隔でマッチングを行うことができる。
また、生成部21は、ブロック位置情報に基づいて、メモリ13に入力画像として入力される、マッチングにおいて参照される参照画像のうちの、各評価ブロックの全ての画素に対応する探索範囲を構成する全ての画素からなる探索画素群の先頭の画素の位置(例えば、左上の画素)の座標(以下、探索位置情報という)を生成する。生成部21は、ブロック位置情報と探索位置情報をメモリ制御部12に供給する。
分類部22は、マッチングパラメータのマッチング間隔と、予め設定されている探索範囲のサイズとに基づいて、評価ブロックをグループに分類する。分類部22は、各グループに分類された評価ブロックの先頭からの順番などのグループ情報を、生成部21に供給する。
メモリ制御部12は、マッチング制御部11の生成部21から供給される読出開始の指示に応じて、評価ブロックを構成する各画素を順次、マッチングの対象として注目する注目画素に決定する。メモリ制御部12は、生成部21から供給されるブロック位置情報に基づいて、注目画素が記憶されているメモリ13上のアドレスをメモリ13に供給する。
また、メモリ制御部12は、生成部21から供給される読出開始の指示と探索位置情報に基づいて、探索画素群を構成する画素が記憶されているメモリ13上のアドレスをメモリ13に供給する。さらに、メモリ制御部12は、後述するマッチング演算部14のベクトル決定部23から出力される動きベクトルの同期信号を出力する。
メモリ13には、図示せぬ外部の装置から基準画像と参照画像が入力画像として入力され、メモリ13は、基準画像と参照画像を記憶する。また、メモリ13は、メモリ制御部12から供給されるアドレスにしたがって、注目画素と探索画素群を構成する画素を読み出し、マッチング演算部14に供給する。
マッチング演算部14は、差分絶対値部31、加算部32、およびベクトル決定部33により構成される。
差分絶対値部31は、メモリ13から供給される注目画素と探索画素群を構成する画素に基づいて、注目画素と、その注目画素に対応する探索範囲の各画素との差分の絶対値をそれぞれ演算し、加算部32に供給する。
加算部32は、差分絶対値部31から供給される差分の絶対値を記憶する。加算部32は、記憶している差分の絶対値または前回の加算結果と、差分絶対値部31から供給される差分の絶対値とを、その差分の絶対値の演算に用いられる画素の探索範囲内の位置ごとに加算し、その結果得られる加算結果を記憶する。加算部32は、評価ブロックを構成する全ての画素を注目画素としたときの探索範囲内の位置ごとの加算結果を、マッチングに対する評価値として出力してリセットする。
ベクトル決定部33は、加算部32から供給される探索範囲内の位置ごとの評価値を比較し、その最小値に対応する探索範囲内の位置に基づいて、評価ブロックの動きベクトルを決定する。ベクトル決定部33は、決定した動きベクトルを、図示せぬ外部の装置に出力する。
図2は、図1の差分絶対値部31の詳細構成例を示すブロック図である。
図2の差分絶対値部31は、ラインメモリ61、シフトレジスタ62、および演算部63により構成される。
ラインメモリ61には、図1のメモリ13から探索画素群を構成する画素が入力される。ラインメモリ61は、その画素を一時的に記憶する。ラインメモリ61は、記憶している画素をシフトレジスタ62に供給する。
シフトレジスタ62は、ラインメモリ61から供給される画素を一時的に記憶する。シフトレジスタ62は、記憶している画素のうち、注目画素に対応する探索範囲の全ての画素を演算部63に供給する。
演算部63には、メモリ13から注目画素が入力される。演算部63は、その注目画素と、シフトレジスタ62から供給される注目画素に対応する探索範囲の各画素の差分の絶対値を演算し、図1の加算部32に供給する。
ここで、図3乃至図11を参照して、評価ブロックを構成する各画素に対応する探索範囲の重複について説明する。
なお、図3乃至図11において、評価ブロック71と探索画素群73内の正方形は画素を表している。図3乃至図11においては、説明の便宜上、画素を表す正方形どうしの間に余白を設けているが、実際には、画素どうしは隣接している。このことは、以下の図においても同様である。
また、図3乃至図11の例では、評価ブロック71は3×3の範囲となっている。なお、以下において、i×jの範囲とは、横方向にi個、縦方向にj個並ぶi×j個の画素から構成される矩形の範囲を表す。即ち、評価ブロック71は、9個の画素72−1乃至72−9から構成される。さらに、図3乃至図11の例では、探索範囲は3×3の範囲となっている。従って、探索画素群73は5×5の範囲である。
図3に示すように、評価ブロック71内の左上の画素72−1が注目画素とされると、その注目画素に対応する探索範囲81は、画素72−1に対応する3×3の範囲となる。次に、図4に示すように、評価ブロック71内の画素72−1の右隣の画素72−2が注目画素とされると、その注目画素に対応する探索範囲82は、図3の探索範囲81を1画素分右に移動させた範囲となる。即ち、探索範囲82内の左側の2×3の範囲は、探索範囲81内の画素と重複している。
その後、図5に示すように、評価ブロック71内の画素72−2の右隣の画素72−3が注目画素とされると、その注目画素に対応する探索範囲83は、図4の探索範囲82を1画素分右に移動させた範囲となる。即ち、探索範囲83内の左側の1×3の範囲は、探索範囲81および82内の画素と重複し、探索範囲83内の中央の1×3の範囲は、探索範囲82内の画素と重複している。
次に、図6に示すように、評価ブロック71内の画素72−1の下の画素72−4が注目画素とされると、その注目画素に対応する探索範囲84は、図3の探索範囲81を1画素分下に移動させた範囲となる。即ち、探索範囲84内の左上の1×2の画素は、探索範囲81内の画素と重複し、中央上の1×2の画素は、探索範囲81および82内の画素と重複し、右上の1×2の画素は、探索範囲81乃至83内の画素と重複している。
その後、図7に示すように、評価ブロック71内の画素72−4の右隣の画素72−5が注目画素とされると、その注目画素に対応する探索範囲85は、図6の探索範囲84を1画素分右に移動させた範囲となる。即ち、探索範囲85内の左上の1×2の画素は、探索範囲81,82、および84内の画素と重複し、中央の1×2の画素は、探索範囲81乃至84内の画素と重複し、右上の1×2の画素は、探索範囲82および83内の画素と重複する。また、探索範囲85内の左下の2×1の画素は、探索範囲84内の画素と重複する。
次に、図8に示すように、評価ブロック71内の画素72−5の右隣の画素72−6が注目画素とされると、その注目画素に対応する探索範囲86は、図7の探索範囲85を1画素分右に移動させた範囲となる。
即ち、探索範囲86内の左上の1×2の画素は、探索範囲81乃至85内の画素と重複し、中央の1×2の画素は、探索範囲82,83、および85内の画素と重複し、右上の1×2の画素は、探索範囲83内の画素と重複する。また、探索範囲86内の左下の1×1の画素は、探索範囲84および85内の画素と重複し、その右隣の1×1の画素は、探索範囲85内の画素と重複している。
その後、図9に示すように、評価ブロック71内の画素72−4の下の画素72−7が注目画素とされると、その注目画素に対応する探索範囲87は、図6の探索範囲84を1画素分下に移動させた範囲となる。
即ち、探索範囲87内の左上の1×1の画素は、探索範囲81および84内の画素と重複し、その右隣の1×1の画素は、探索範囲81,82,84、および85内の画素と重複し、右上の1×1の画素は、探索範囲81乃至86内の画素と重複している。探索範囲87内の左中央の1×1の画素は、探索範囲84内の画素と重複し、中心の1×1の画素は、探索範囲84および85内の画素と重複し、右中央の1×1の画素は、探索範囲84乃至86内の画素と重複する。
次に、図10に示すように、評価ブロック71内の画素72−7の右隣の画素72−8が注目画素とされると、その注目画素に対応する探索範囲88は、図9の探索範囲87を1画素分右に移動させた範囲となる。
即ち、探索範囲88内の左上の1×1の画素は、探索範囲81,82,84,85、および87内の画素と重複し、その右隣の1×1の画素は、探索範囲81乃至87内の画素と重複し、右上の1×1の画素は、探索範囲82,83,85,および86内の画素と重複している。探索範囲88内の左中央の1×1の画素は、探索範囲84,85、および87内の画素と重複し、中心の1×1の画素は、探索範囲84乃至87内の画素と重複し、右中央の1×1の画素は、探索範囲85および86内の画素と重複する。探索範囲88内の左下の2×1の画素は、探索範囲87内の画素と重複する。
最後に、図11に示すように、評価ブロック71内の画素72−8の右隣の画素72−9が注目画素とされると、その注目画素に対応する探索範囲89は、図10の探索範囲88を1画素分右に移動させた範囲となる。
即ち、探索範囲89内の左上の1×1の画素は、探索範囲81乃至88内の画素と重複し、その右隣の1×1の画素は、探索範囲82,83,85,86、および88内の画素と重複し、右上の1×1の画素は、探索範囲83および86内の画素と重複している。探索範囲89内の左中央の1×1の画素は、探索範囲84乃至88内の画素と重複し、中心の1×1の画素は、探索範囲85,86、および88内の画素と重複し、右中央の1×1の画素は、探索範囲86内の画素と重複する。探索範囲89内の左下の1×1の画素は、探索範囲87および88内の画素と重複し、その右隣の1×1の画素は、探索範囲88内の画素と重複する。
以上のように、評価ブロック71を構成する画素72−1乃至72−9に対応する探索範囲81乃至89の多くの画素は、互いに重複している。従って、注目画素ごとに、その注目画素に対応する探索範囲の全ての画素が読み出される場合、1つの評価ブロックに対して、同一の画素が複数回読み出されることになり、読み出しの効率が悪い。
次に、図12を参照して、2つの評価ブロックに対応する探索画素群について説明する。
図12の例では、縦方向のマッチング間隔Iが評価ブロックの縦の長さと等しくなっている。従って、図12に示すように、縦方向に隣り合う2つの評価ブロック91と92は、評価ブロック91の一番下側の全ての画素と、評価ブロック92の一番上側の全ての画素とが隣接するように設けられている。
図12において、探索範囲の縦の画素数が1より大きい場合、評価ブロック91に対応する探索画素群93の下側の画素と、評価ブロック92に対応する探索画素群94の上側の画素は重複する。従って、評価ブロックごとに、その評価ブロックに対応する探索画素群の全ての画素が読み出される場合、複数の評価ブロックに対して、同一の画素が複数回読み出されることになり、読み出しの効率が悪い。例えば、評価ブロック数がNである場合、同一の画素を含む25×N個の画素を読み出す必要がある。
そこで、図1の画像処理装置1は、図2のラインメモリ61とシフトレジスタ62を用いて、図3乃至図12で説明した各探索範囲または各探索画素群の重複を利用した効率的な探索画素群の画素の読み出しを行う。
図13は、図2のラインメモリ61とシフトレジスタ62の詳細構成例を示すブロック図である。
図13のラインメモリ61は、5個の画素メモリ101−1乃至101−5から構成される。画素メモリ101−1乃至101−5は、図1のメモリ13から入力される画素をそれぞれ記憶する。また、画素メモリ101−1乃至101−5は、記憶している画素をシフトレジスタ62にそれぞれ出力する。
シフトレジスタ62は、横に7個並べられ、縦に3個並べられた計21個の画素メモリ102−1乃至102−21から構成される。画素メモリ102−1乃至102−21は、ラインメモリ61を介して供給される画素をそれぞれ記憶する。
シフトレジスタ62の中央に位置する、横に3個並べられ、縦に3個並べられた計9個の画素メモリ102−3乃至102−5,102−10乃至102−12、および102−17乃至102−19は、探索範囲である3×3の範囲を構成する画素に対応しており、記憶している画素を、注目画素に対応する探索範囲の画素として、図2の演算部63に出力する。
また、シフトレジスタ62の左端に位置する、横に2個並べられ、縦に3個並べられた計6個の画素メモリ102−1,102−2,102−8,102−9,102−15、および102−16、並びに、シフトレジスタ62の右端に位置する、横に2個並べられ、縦に3個並べられた計6個の画素メモリ102−6,102−7,102−13,102−14,102−20、および102−21は、後述するように、メモリ13からの読み出しを効率良く行うために設けられている。
ラインメモリ61の画素メモリ101−1乃至101−5から入力される各画素は、シフトレジスタ62の画素メモリ102−17乃至102−21に供給される。画素メモリ102−21は、画素メモリ101−5から供給される画素を記憶し、記憶している画素を、左隣の画素メモリ102−20に供給する。
画素メモリ102−20は、ラインメモリ61の画素メモリ101−4から供給される画素、または、右隣の画素メモリ102−21から供給される画素を、左隣の画素メモリ102−19に供給する。
画素メモリ102−19は、ラインメモリ61の画素メモリ101−3から供給される画素、または、右隣の画素メモリ102−20から供給される画素を記憶し、記憶している画素を、左隣の画素メモリ102−18、1つ飛ばした右隣の上の画素メモリ102−14、または演算部63(図2)に供給する。
画素メモリ102−17と102−18は、画素メモリ102−19と同様に、ラインメモリ61の画素メモリ101−1または101−2から供給される画素、もしくは、右隣の画素メモリ102−18または102−19から供給される画素をそれぞれ記憶し、記憶している画素を、左隣の画素メモリ102−16または102−17、1つ飛ばした右隣の上の画素メモリ102−12または102−13、もしくは演算部63にそれぞれ供給する。
画素メモリ102−16は、右隣の画素メモリ102−17から供給される画素を記憶し、記憶している画素を、左隣の画素メモリ102−15、または1つ飛ばした右隣の上の画素メモリ102−11に供給する。画素メモリ102−15は、右隣の画素メモリ102−16から供給される画素を記憶し、記憶している画素を、1つ飛ばした右隣の上の画素メモリ102−10に供給する。
画素メモリ102−14は、1つ飛ばした左隣の下の画素メモリ102−19から供給される画素を記憶し、記憶している画素を左隣の画素メモリ102−13に供給する。画素メモリ102−13は、1つ飛ばした左隣の下の画素メモリ102−18から供給される画素、または、右隣の画素メモリ102−14から供給される画素を記憶し、記憶している画素を左隣の画素メモリ102−12に供給する。
画素メモリ102−12は、1つ飛ばした左隣の下の画素メモリ102−17から供給される画素、または、右隣の画素メモリ102−13から供給される画素を記憶し、記憶している画素を、左隣の画素メモリ102−11、1つ飛ばした右隣の上の画素メモリ102−7、または演算部63に供給する。
画素メモリ102−10と102−11は、画素メモリ102−12と同様に、1つ飛ばした左隣の下の画素メモリ102−15または102−16から供給される画素、もしくは、右隣の画素メモリ102−11または102−12から供給される画素をそれぞれ記憶し、記憶している画素を、左隣の画素メモリ102−9または102−10、1つ飛ばした右隣の上の画素メモリ102−5または102−6、もしくは演算部63にそれぞれ供給する。
画素メモリ102−9は、画素メモリ102−16と同様に、右隣の画素メモリ102−10から供給される画素を記憶し、記憶している画素を、左隣の画素メモリ102−8、または1つ飛ばした右隣の上の画素メモリ102−4に供給する。画素メモリ102−8は、画素メモリ102−15と同様に、右隣の画素メモリ102−9から供給される画素を記憶し、記憶している画素を、1つ飛ばした右隣の上の画素メモリ102−3に供給する。
画素メモリ102−7は、画素メモリ102−14と同様に、1つ飛ばした左隣の下の画素メモリ102−12から供給される画素を記憶し、記憶している画素を左隣の画素メモリ102−6に供給する。画素メモリ102−6は、画素メモリ102−13と同様に、1つ飛ばした左隣の下の画素メモリ102−11から供給される画素、または、右隣の画素メモリ102−7から供給される画素を記憶し、記憶している画素を左隣の画素メモリ102−5に供給する。
画素メモリ102−5は、1つ飛ばした左隣の下の画素メモリ102−10から供給される画素、または、右隣の画素メモリ102−6から供給される画素を記憶し、記憶している画素を、左隣の画素メモリ102−4、または演算部63に供給する。
画素メモリ102−3と102−4は、画素メモリ102−5と同様に、1つ飛ばした左隣の下の画素メモリ102−8または102−9から供給される画素、もしくは、右隣の画素メモリ102−4または102−5から供給される画素をそれぞれ記憶し、記憶している画素を、左隣の画素メモリ102−2または102−3、もしくは演算部63にそれぞれ供給する。
画素メモリ102−2は、右隣の画素メモリ102−3から供給される画素を記憶し、記憶している画素を、左隣の画素メモリ102−1に供給する。画素メモリ102−1は、右隣の画素メモリ102−2から供給される画素を記憶する。
次に、図14乃至図22を参照して、1つの評価ブロック71に対応する探索範囲81乃至89を読み出す場合の、ラインメモリ61とシフトレジスタ62の動作について説明する。
なお、図14乃至図22において、評価ブロック71と探索画素群73内の正方形は画素を表し、探索画素群73の正方形内に記載されている数字は、説明の便宜上付された、画素を特定するための情報である。数字「ij」は、探索画素群73内の上からi番目、かつ、左からj番目(i,jは1以上の整数)の画素を特定するための情報である。
以下では、数字「ij」が付された画素を、画素#ijという。即ち、探索画素群73は、画素#11乃至#15、画素#21乃至#25、画素#31乃至#35、画素#41乃至#45、および画素#51乃至#55により構成されるが、図14乃至図22において、探索画素群73に記載されている画素は、ラインメモリ61またはシフトレジスタ62に記憶されている画素である。
まず最初に、図14に示すように、評価ブロック71を構成する左上の画素72−1が注目画素とされると、まだシフトレジスタ62には何も記憶されていないので、まず最初に、画素72−1に対応する探索範囲81を含む、探索画素群73の横の画素数×探索範囲81の縦の画素数の範囲である5×3の範囲を構成する、画素#11乃至#15、画素#21乃至#25、および画素#31乃至#35が、メモリ13から読み出される。この読み出しを、以下では、適宜、事前読み出しという。
メモリ13から読み出された画素#11乃至#15、画素#21乃至#25、画素#31乃至#35は、ラインメモリ61を介して、シフトレジスタ62の画素メモリ102−3乃至102−7、102−10乃至102−14、102−17乃至102−21に、画素単位で記憶される。
そして、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19は、記憶している画素#11乃至#13、画素#21乃至#23、画素#31乃至#33をそれぞれ図2の演算部63に出力する。従って、演算部63には、注目画素に対応する探索範囲81を構成する全ての画素が入力される。
また、この場合、図14に示すように、メモリ13から2個の画素#41と画素#42が読み出され、ラインメモリ61の画素メモリ101−1または101−2に画素単位で記憶される。
次に、図15に示すように、評価ブロック71を構成する中央上の画素72−2が注目画素とされると、シフトレジスタ62の画素メモリ102−3乃至102−7、102−10乃至102−14、102−17乃至102−21は、それぞれ、記憶している画素#11乃至15、画素#21乃至25、画素#31乃至#35を、左隣の画素メモリ102−2乃至102−6、102−9乃至102−13、102−16乃至102−20に出力し、記憶させる。
そして、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19は、記憶している画素#12乃至14、画素#22乃至24、画素#32乃至#34を、それぞれ演算部63に出力する。これにより、演算部63には、注目画素に対応する、図14の探索範囲81を1画素分右に移動させた探索範囲82を構成する全ての画素が入力される。
また、この場合、図15に示すように、メモリ13から2個の画素#43と画素#44が読み出され、ラインメモリ101−3または101−4に画素単位で記憶される。
その後、図16に示すように、評価ブロック71を構成する右上の画素72−3が注目画素とされると、シフトレジスタ62の画素メモリ102−2乃至102−6、102−9乃至102−13、102−16乃至102−20は、それぞれ、記憶している画素#11乃至#15、画素#21乃至#25、画素#31乃至#35を左隣の画素メモリ102−1乃至102−5、102−8乃至10−12、102−15乃至102−19に出力し、記憶させる。
そして、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19は、記憶している画素#13乃至#15、画素#23乃至#25、画素#33乃至#35を、それぞれ演算部63に出力する。これにより、演算部63には、注目画素に対応する、図15の探索範囲82を1画素分右に移動させた探索範囲83を構成する全ての画素が入力される。
また、この場合、図16に示すように、メモリ13から1個の画素#45が読み出され、ラインメモリ101−5に記憶される。
次に、図17に示すように、評価ブロック71を構成する左中央の画素72−4が注目画素とされると、シフトレジスタ62の画素メモリ102−8乃至102−12、102−15乃至102−19は、それぞれ、記憶している画素#21乃至25、画素#31乃至#35を、1つ飛ばした右隣の上の画素メモリ102−3乃至102−7、102−10乃至102−14に出力し、記憶させる。その後、画素メモリ102−17乃至102−21には、ラインメモリ61の画素メモリ101−1乃至101−5から画素#41乃至#45がそれぞれ入力され、記憶される。
そして、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19は、記憶している画素#21乃至#23、画素#31乃至#33、画素#41乃至#43を、それぞれ演算部63に出力する。これにより、演算部63には、注目画素に対応する、図14の探索範囲81を1画素分下に移動させた探索範囲84を構成する全ての画素が入力される。
また、この場合、図17に示すように、メモリ13から2個の画素#51と画素#52が読み出され、それぞれ、ラインメモリ101−1または101−2に記憶される。
次に、図18に示すように、評価ブロック71を構成する中心の画素72−5が注目画素とされると、ラインメモリ61とシフトレジスタ62は、図15の場合と同様の処理を行う。その結果、シフトレジスタ62の画素メモリ102−2乃至102−6、102−9乃至102−13、102−16乃至102−20には、それぞれ、画素#21乃至25、画素#31乃至35、画素#41乃至#45が記憶される。
そして、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、図17の探索範囲84を1画素分右に移動させた探索範囲85を構成する画素#22乃至#24、画素#32乃至#34、および画素#42乃至#44が、演算部63に出力される。
また、この場合、図18に示すように、ラインメモリ61の画素メモリ101−3と101−4には、メモリ13から読み出された2個の画素#53または#54がそれぞれ画素単位で記憶される。
次に、図19に示すように、評価ブロック71を構成する右中央の画素72−6が注目画素とされると、ラインメモリ61とシフトレジスタ62は、図16の場合と同様の処理を行う。その結果、シフトレジスタ62の画素メモリ102−1乃至102−5、102−8乃至102−12、102−15乃至102−19には、それぞれ、画素#21乃至#25、画素#31乃至#35、画素#41乃至#45が記憶される。
そして、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、図18の探索範囲85を1画素分右に移動させた探索範囲86を構成する画素#23乃至25、画素#33乃至35、および画素#43乃至#45が、演算部63に出力される。
また、この場合、図19に示すように、ラインメモリ61の画素メモリ101−5には、メモリ13から読み出された1個の画素#55が記憶される。
次に、図20に示すように、評価ブロック71を構成する左下の画素72−7が注目画素とされると、ラインメモリ61とシフトレジスタ62は、図17の場合と同様の処理を行う。その結果、シフトレジスタ62の画素メモリ102−3乃至102−7、102−10乃至102−14、102−17乃至102−21には、それぞれ、画素#31乃至#35、画素#41乃至#45、画素#51乃至#55が記憶される。
そして、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、図17の探索範囲84を1画素分下に移動させた探索範囲87を構成する画素#31乃至#33、画素#41乃至#43、および画素#51乃至#53が、演算部63に出力される。
次に、図21に示すように、評価ブロック71を構成する中央下の画素72−8が注目画素とされると、ラインメモリ61とシフトレジスタ62は、図15や図18の場合と同様の処理を行う。その結果、シフトレジスタ62の画素メモリ102−2乃至102−6、102−9乃至102−13、102−16乃至102−20には、それぞれ、画素#31乃至#35、画素#41乃至#45、画素#51乃至#55が記憶される。
そして、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、図20の探索範囲87を1画素分右に移動させた探索範囲88を構成する画素#32乃至#34、画素#42乃至#44、および画素#52乃至#54が、演算部63に出力される。
最後に、図22に示すように、評価ブロック71を構成する右下の画素72−9が注目画素とされると、ラインメモリ61とシフトレジスタ62は、図16や図19の場合と同様の処理を行う。その結果、図22に示すように、シフトレジスタ62の画素メモリ102−1乃至102−5、102−8乃至102−12、102−15乃至102−19には、それぞれ、画素#31乃至#35、画素#41乃至#45、画素#51乃至#55が記憶される。
そして、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、図21の探索範囲88を1画素分右に移動させた探索範囲89を構成する画素#33乃至#35、画素#43乃至#45、および画素#53乃至#55が、演算部63に出力される。
以上のように、図13のシフトレジスタ62には、評価ブロック71を構成する各画素に対応する探索範囲81乃至89の横方向への最大の移動分である2画素分の画素メモリ102−1,102−2,102−6乃至102−9,102−13乃至102−16,102−20,および102−21が、探索範囲81乃至89を構成する画素に対応する画素メモリ102−3乃至102−5,102−10乃至102−12、および102−17乃至102−19の左右の両側に余分に設けられるので、探索範囲81乃至89に対応する画素メモリ102−3乃至102−5,102−10乃至102−12、および102−17乃至102−19は、記憶している画素を左右方向に2画素分ずつシフトさせることができる。
これにより、探索範囲81乃至89を構成する画素として読み出された、他の探索範囲81乃至89と重複する画素を、他の探索範囲を構成する画素として再利用することができる。その結果、探索画素群73を構成する画素の読み出しを効率良く行うことができる。
また、図13のラインメモリ61には、評価ブロック71に対応する探索画素群73の横方向の画素数である5個の画素メモリ171−1乃至171−5が設けられるので、図1のメモリ13は、シフトレジスタ62に各探索範囲81乃至89を構成する全ての画素を同時に出力させるために、探索範囲81乃至89が下方向に移動するまでの間、即ち3個の注目画素に対応する探索範囲の全ての画素のシフトレジスタ62からの出力が行われるまでの間に、5個の画素を読み出せばよい。従って、探索範囲を構成する全ての画素の1回の出力時に、メモリ13は多くても2個の画素を読み出せばよく、メモリ13のバス幅は2画素分で済む。
これに対して、注目画素に対応する探索範囲を構成する全ての画素が1度に読み出される場合、参照画像が記憶されているメモリのバス幅は、探索範囲を構成する画素の数である9画素分必要となる。以上のように、図1の画像処理装置1は、注目画素に対応する探索範囲を構成する全ての画素が1度に読み出される場合に比べて、少ないバス幅で、探索範囲を構成する全ての画素を同時に出力することができる。即ち、バスの効率を向上させることができる。
次に、図23乃至図30を参照して、2つの評価ブロックに対応する探索範囲を読み出す場合の、ラインメモリ61とシフトレジスタ62の動作について説明する。
なお、図23乃至図30において、図14乃至図22の場合と同様に、評価ブロック71と探索画素群73、並びに、評価ブロック111と探索画素群113内の正方形は画素を表し、探索画素群73または113の正方形内に記載されている数字は、説明の便宜上付された、画素を特定するための情報である。
また、図23乃至図30の例では、縦のマッチング間隔が評価ブロック71の縦の長さと等しくなっている。従って、図23乃至図30に示すように、縦方向に隣り合う2つの評価ブロック71と111は、評価ブロック71の一番下側の全ての画素と、評価ブロック111の一番上側の全ての画素とが隣接するように設けられている。
この場合、評価ブロック111に対応する探索画素群113は、評価ブロック71に対応する探索画素群73の下側の2×5の範囲を含む5×5の範囲となる。即ち、探索画素郡73は、画素#11乃至#15、画素#21乃至#25、画素#31乃至#35、画素#41乃至#45、および画素#51乃至#55により構成され、探索画素群113は、画素#41乃至#45、画素#51乃至55、画素61乃至#65、画素#71乃至75、および画素#81乃至85により構成されるが、図23乃至図30において、探索画素群73と113内に記載されている画素は、ラインメモリ61またはシフトレジスタ62に記憶されている画素である。
まず最初に、図23に示すように、1つ目の評価ブロック71を構成する左上の画素72−1が注目画素とされると、図14の場合と同様に事前読み出しが行われ、シフトレジスタ62の画素メモリ102−3乃至102−7、102−10乃至102−14、102−17乃至102−21には、画素#11乃至#15、画素#21乃至#25、画素#31乃至#35が画素単位で記憶される。また、ラインメモリ61の画素メモリ101−1と101−2には、画素#41または画素#42が、それぞれ記憶される。
さらに、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、探索画素81を構成する画素#11乃至13、画素#21乃至23、および画素#31乃至#33が、演算部63に出力される。
次に、図24に示すように、1つ目の評価ブロック71を構成する中央上の画素72−2が注目画素とされると、図15の場合と同様に、シフトレジスタ62の画素メモリ102−2乃至102−6、102−9乃至102−13、102−16乃至102−20には、画素#11乃至#15、画素#21乃至#25、画素31#乃至#35が画素単位で記憶され、ラインメモリ61の画素メモリ101−3と101−4には、画素#43または画素#44がそれぞれ記憶される。
また、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、探索範囲82を構成する画素#12乃至#14、画素#22乃至#24、および画素#32乃至#34が、演算部63に出力される。
以降も、ラインメモリ61とシフトレジスタ62は、上述した図16乃至図19と同様に処理を行い、その後、図25に示すように、1つ目の評価ブロック71を構成する左下の画素72−7が注目画素とされると、図20の場合と同様に、シフトレジスタ62の画素メモリ102−3乃至102−7、102−10乃至102−14、102−17乃至102−21には、それぞれ、画素#31乃至#35、画素#41乃至#45、画素51#乃至#55が記憶される。
そして、図20の場合と同様に、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、探索範囲87を構成する画素#31乃至#33、画素#41乃至#43、および画素#51乃至#53が、演算部63に出力される。
また、この場合、図25に示すように、メモリ13から、2つ目の評価ブロック111に対応する探索画素群113を構成する、1つ目の評価ブロック71に対応する探索画素群73を構成する画素以外の画素のうち、左上から順に右方向に並ぶ2個の画素#61と画素#62が読み出され、それぞれ、ラインメモリ101−1または101−2に記憶される。
次に、図26に示すように、1つ目の評価ブロック71を構成する中央下の画素72−8が注目画素とされると、図21の場合と同様に、シフトレジスタ62の画素メモリ102−2乃至102−6、102−9乃至102−13、102−16乃至102−20には、それぞれ、画素#31乃至#35、画素#41乃至#45、画素51#乃至#55が記憶される。
そして、図21の場合と同様に、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、探索範囲88を構成する画素#32乃至#34、画素#42乃至#44、および画素#52乃至#54が、演算部63に出力される。
また、この場合、図26に示すように、メモリ13から、2つ目の評価ブロック111に対応する探索画素群113を構成する、画素#62の右隣の2個の画素#63と画素#64が読み出され、それぞれ、ラインメモリ101−3または101−4に記憶される。
次に、図27に示すように、1つ目の評価ブロック71を構成する右下の画素72−9が注目画素とされると、図22の場合と同様に、シフトレジスタ62の画素メモリ102−1乃至102−5、102−8乃至102−12、102−15乃至102−19には、それぞれ、画素#31乃至#35、画素#41乃至#45、画素51#乃至#52が記憶される。
そして、図22の場合と同様に、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、探索範囲89を構成する画素#33乃至#35、画素#43乃至#45、および画素#53乃至#55が、演算部63に出力される。
また、この場合、図27に示すように、メモリ13から、2つ目の評価ブロック111に対応する探索画素群113を構成する、画素#64の右隣の画素#65が読み出され、ラインメモリ101−5に記憶される。
次に、図28に示すように、2つ目の評価ブロック111を構成する左上の画素112−1が注目画素とされると、図17と同様に、シフトレジスタ62の画素メモリ102−8乃至102−12、102−15乃至102−19は、それぞれ、記憶している画素#41乃至45、画素#51乃至55を、1つ飛ばした右隣の上の画素メモリ102−3乃至102−7、102−10乃至102−14に出力し、記憶させる。その後、画素メモリ102−17乃至102−21には、ラインメモリ61の画素メモリ101−1乃至101−5から画素#61乃至#65がそれぞれ入力され、記憶される。
そして、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19は、記憶している画素#41乃至#43、画素#51乃至#53、画素#61乃至#63を、それぞれ演算部63に出力する。これにより、演算部63には、注目画素に対応する、図25の探索範囲87を1画素分下に移動させた探索範囲121を構成する全て画素が入力される。
また、この場合、図28に示すように、メモリ13から2個の画素#71と画素#72が読み出され、それぞれ、ラインメモリ101−1または101−2に記憶される。
次に、図29に示すように、2つ目の評価ブロック111を構成する中央上の画素112−2が注目画素とされると、図24の場合と同様に、シフトレジスタ62の画素メモリ102−2乃至102−6、102−9乃至102−13、102−16乃至102−20には、画素#41乃至#45、画素#51乃至#55、画素#61乃至#65が画素単位で記憶され、ラインメモリ61の画素メモリ101−3と101−4には、画素#73または画素#74がそれぞれ記憶される。
また、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、探索範囲122を構成する画素#42乃至44、画素#52乃至#54、および画素#62乃至#64が、演算部63に出力される。
以降も、ラインメモリ61とシフトレジスタ62は、上述した図16乃至図21と同様に処理を行い、その後、図30に示すように、2つ目の評価ブロック111を構成する右下の画素112−9が注目画素とされると、図22の場合と同様に、シフトレジスタ62の画素メモリ102−1乃至102−5、102−8乃至102−12、102−15乃至102−19には、それぞれ、画素#61乃至#65、画素#71乃至#75、画素#81乃至#85が記憶される。
そして、図22の場合と同様に、画素メモリ102−3乃至102−5、102−10乃至102−12、102−17乃至102−19に記憶されている、探索範囲129を構成する画素#63乃至#65、画素#73乃至#75、および画素#83乃至#85が、演算部63に出力される。
以上のように、図13のシフトレジスタ62は、1つ目の評価ブロック71に対応する探索画素群73を構成する画素のうち、2つ目の評価ブロック111に対応する探索画素群113と重複する画素を、評価ブロック71を構成する全ての画素に対応する探索範囲81乃至89の画素の出力後も記憶しているので、1つ目の評価ブロック71に対応する探索範囲86乃至89を構成する画素として読み出された、2つ目の評価ブロック111に対応する探索範囲121,122などと重複する画素を、評価ブロック111に対応する探索範囲121,122などを構成する画素として再利用することができる。
従って、図1のメモリ13は、2つ目の評価ブロック111に対応する探索範囲121を構成する全ての画素をシフトレジスタ62に出力させるために、1つ目の評価ブロック71の場合のように事前読み出しを行う必要がない。これにより、メモリ13に記憶されている画素に対するアクセス数を抑制することができる。即ち、探索画素群73と113を構成する画素の読み出しを効率良く行うことができる。その結果、画像処理装置1における処理量(処理コスト)は軽減される。
なお、図23乃至図30では、評価ブロック数を2としたが、評価ブロック数が2より大きい場合であっても、同様の処理を行うことにより、処理量を軽減することができる。具体的には、図23乃至図30の例において、評価ブロック数をNとすると、メモリ13から読み出される画素の数は、1つ目の評価ブロックに対応する探索画素群の画素数と、2つ目以降の評価ブロックに対応する探索画素群を構成する画素のうち、1つ前の評価ブロックに対応する探索画素群と重複する範囲以外の範囲の画素数との和である25+15×(N-1)個となる。
上述したように、評価ブロックごとに、その評価ブロックに対応する探索画素群の全ての画素が読み出される場合にメモリから読み出される画素の数は、25×N個であるため、評価ブロック数が1である場合、メモリから読み出される画素の数は、両者で等しいが、評価ブロック数が2である場合、画像処理装置1においてメモリ13から読み出される画素の数は、探索画素群の全ての画素が読み出される場合に読み出される画素の数の80%(=(25+15)/(25×2))となる。
また、評価ブロック数が3である場合、画像処理装置1においてメモリ13から読み出される画素の数は、探索画素群の全ての画素が読み出される場合に読み出される画素の数の約73%(=(25+15×2)/(25×3))となり、評価ブロック数が4である場合、70%(=(25+15×3)/(25×4))となる。
以降も同様に、評価ブロック数が増加するにつれて、画像処理装置1においてメモリ13から読み出される画素の数の、探索画素群の全ての画素が読み出される場合に読み出される画素の数に対する割合(以下、読出割合という)は減少していき、理論的には、その割合の最小値は、以下の式(1)に示すように、60%となる。
また、評価ブロック数が現実的な数である場合であっても、読出割合は70%以下になると考えられる。
ここで、一般的な読出割合について説明する。
評価ブロックの範囲がbx×byの範囲であり、探索範囲の範囲がsx×sy範囲であるとすると、1つの評価ブロックに対応する探索画素群の画素数は、(bx+sx-1)×(by+sy-1)となる。従って、評価ブロック数をNとすると、評価ブロックごとに、その評価ブロックに対応する探索画素群の全ての画素が読み出される場合に読み出される画素の数は、N×{(bx+sx-1)×(by+sy-1)}となる。
一方、画像処理装置1において、2つ目以降の評価ブロックに対して読み出される探索画素群を構成する画素の数は、(bx+sx-1)×syとなる。従って、評価ブロック数をNとすると、画像処理装置1において読み出される画素の数は、(bx+sx-1)×(by+sy-1)+(N-1)×{(bx+sx-1)×by}=(bx+sx-1)×(sy+N×by-1)となる。よって、読出割合f(N)は、以下の式(2)で表される。
式(2)において、評価ブロック数Nが増加すると、読出割合f(N)は減少していき、理論的には、読出割合f(N)の最小値は、以下の式(3)で表されるようになる。
次に、図31を参照して、評価ブロックが16×8の範囲であり、探索範囲が32×16の範囲である場合の、評価ブロック数Nと読出割合の関係について説明する。
図31に示すように、評価ブロック数Nが1である場合、読出割合は100%であるが、評価ブロック数Nが2,3,4,5,6,10,30,・・・,∞である場合、読出割合は約67%,57%,51%,48%,46%,41%,37%,・・・,35%となる。即ち、最大で、メモリ13から読み出される画素の数を、評価ブロックごとに探索画素群を読み出す場合の35%にまで削減することができる。
次に、図32を参照して、分類部22による分類について説明する。
図32の例では、10個の評価ブロック131−1乃至131−10が縦方向に並んでおり、評価ブロック131−1乃至131−10は、それぞれ、32×16の範囲となっている。また、評価ブロック131−1乃至131−10の縦方向のマッチング間隔は4画素となっている。即ち、評価ブロック131−1乃至131−10の縦方向のマッチング間隔は、評価ブロック131−1乃至131−10の縦方向の長さの1/4倍である。
分類部22は、各グループに属する評価ブロック131−1乃至131−10の縦方向のマッチング間隔が評価ブロック131−1乃至131−10の縦方向の長さと等しくなるように、評価ブロック131−1乃至131−10をグループに分類する。具体的には、分類部22は、評価ブロック131−1乃至131−10のうち、評価ブロック131−1乃至131−10の縦方向のマッチング間隔が、評価ブロック131−1乃至13−10の縦方向の長さである16画素分の長さとなる評価ブロック131−1乃至131−10を同一のグループに分類する。
図32の例では、分類部22は、評価ブロック131−1、評価ブロック131−1との縦方向のマッチング間隔が16画素分の長さである、評価ブロック131−1の3つ飛ばした隣の評価ブロック131−5、および、評価ブロック131−5との縦方向のマッチング間隔が16画素分の長さである、評価ブロック131−5の3つ飛ばした隣の評価ブロック131−9を、グループAに分類する。
同様に、分類部22は、評価ブロック131−2、評価ブロック131−2の3つ飛ばした隣の評価ブロック131−6、および評価ブロック131−6の3つ飛ばした隣の評価ブロック131−10をグループBに分類し、評価ブロック131−3と、評価ブロック131−3の3つ飛ばした隣の評価ブロック131−7とをグループCに分類する。また同様に、分類部22は、評価ブロック131−4と、評価ブロック131−4の3つ飛ばした隣の評価ブロック131−8とをグループDに分類する。
以上のように、分類部22は、評価ブロック131−1乃至131−10の縦方向のマッチング間隔が、評価ブロック131−1乃至131−10の縦方向の長さと等しくなるように、評価ブロック131−1乃至131−10の縦方向の長さをマッチング間隔で除算した数(図32の例では、4(=16/4))のグループに分類する。また、生成部21は、グループごとに、マッチングパラメータのマッチング位置とマッチング間隔に基づいてブロック位置情報を生成する。
その結果、図1のメモリ13から、分類されたグループごとに、図23乃至図30の場合と同様に、グループに属する評価ブロック131−1乃至131−10に対応する探索画素群を構成する画素を読み出すことができる。従って、事前読み出しの回数は、グループ数となり、処理量を軽減することができる。
この場合も、上述したように、各グループにおいて、メモリ13から読み出される画素の数は、評価ブロックごとに探索画素群を読み出す場合の読出割合分となる。
次に、図33と図34を参照して、図1の画像処理装置1がマッチングを行うマッチング処理について説明する。このマッチング処理は、例えば、図示せぬ他の装置からマッチングの開始指示とマッチングパラメータが入力されたとき、開始される。
ステップS10において、マッチング制御部11の分類部22は、評価ブロックをグループに分類するグループ処理を行う。このグループ処理の詳細は、図35で後述する。
ステップS11において、生成部21は、分類部22から供給されるグループ情報に基づいて、まだマッチングの対象とされていない評価ブロックのグループを、マッチングの対象とする評価ブロックのグループである処理グループとして決定する。
ステップS12において、生成部21は、分類部22から供給されるグループ情報、並びに、マッチングパラメータのマッチング位置とマッチング間隔に基づいて、処理グループのブロック位置情報を生成するとともに、ブロック位置情報に基づいて、探索位置情報を生成する。そして、生成部21は、入力画像の読出指示とともに、ブロック位置情報と探索位置情報をメモリ制御部12に供給する。
ステップS13において、メモリ制御部12は、生成部21から供給される読出開始の指示に応じて、処理グループ内の最初の評価ブロックを、マッチングの対象とする対象ブロックとして決定し、対象ブロックを構成する画素のうち、まだ注目画素とされていない画素を注目画素に決定する。
ステップS14において、メモリ制御部12は、生成部21から供給されるブロック位置情報に基づいて、注目画素が記憶されているメモリ13上のアドレスを生成するとともに、探索位置情報に基づいて、探索画素群を構成する画素が記憶されているメモリ13上のアドレスを生成し、生成したアドレスをメモリ13に供給する。
ステップS15において、メモリ13は、メモリ制御部12から供給されるアドレスにしたがって、事前読み出しを行う。ステップS16において、メモリ13は、メモリ制御部12から供給されるアドレスにしたがって、探索画素群を構成する画素を読み出す。
ステップS17において、メモリ13は、読み出した画素を、マッチング演算部14の差分絶対値部31に供給して記憶させる。具体的には、メモリ13は、読み出した画素を、図14乃至図30で上述したように、差分絶対値部31のラインメモリ61を介してシフトレジスタ62に供給し、記憶させる。
ステップS18において、シフトレジスタ62は、ステップS13で決定された注目画素に対応する探索範囲の全ての画素を演算部63に出力する。図34のステップS19において、メモリ13は、メモリ制御部12から供給されるアドレスにしたがって、注目画素を読み出し、マッチング演算部14の演算部63に供給する。
ステップS20において、演算部63は、注目画素と、シフトレジスタ62から供給される探索範囲の各画素との差分の絶対値を演算し、加算部32に供給する。
ステップS21において、加算部32は、探索範囲内の位置ごとに、既に記憶している前回のステップS21の処理による加算結果と、演算部63から供給される今回の差分の絶対値を、それぞれ加算し、その加算結果を記憶する。なお、最初のステップS21の処理では、加算部32は、探索範囲内の位置ごとに、演算部63から供給される差分の絶対値を、それぞれ記憶する。
ステップS22において、メモリ制御部12は、対象ブロックを構成する全ての画素を注目画素としたかどうかを判定し、全ての画素を注目画素としていないと判定された場合、処理は、図33のステップS13に戻る。そして、ステップS13において、メモリ制御部12は、対象ブロックを構成する画素のうち、まだ注目画素とされていない画素を新たに注目画素に決定し、処理は、ステップS14に進み、上述した処理が繰り返される。
一方、ステップS22において、対象ブロックを構成する全ての画素を注目画素としたと判定された場合、加算部32は、記憶している最後の加算結果、即ち対象ブロックを構成する全ての画素を注目画素としたときの探索範囲内の位置ごとの加算結果を、評価値として出力してリセットし、処理は、ステップS23に進む。
ステップS23において、ベクトル決定部33は、加算部32から供給される探索範囲内の位置ごとの評価値を比較する。ステップS24において、ベクトル決定部33は、比較の結果得られる評価値の最小値に対応する探索範囲内の位置に基づいて、評価ブロックの動きベクトルを決定し、その動きベクトルを、図示せぬ外部の装置に出力する。
ステップS25において、メモリ制御部12は、処理グループ内の全ての評価ブロックを対象ブロックとしたかどうかを判定する。
ステップS25において、処理グループ内の全ての評価ブロックを対象ブロックとしていないと判定された場合、図33のステップS13において、メモリ制御部12は、処理グループ内の評価ブロックのうち、まだ対象ブロックとされていない評価ブロックを対象ブロックに決定し、対象ブロックを構成する画素のうち、まだ注目画素とされていない画素を注目画素に決定する。そして、処理はステップS14に進み、上述した処理が繰り返される。
一方、ステップS25において、処理グループ内の全ての評価ブロックを対象ブロックとしたと判定された場合、ステップS26において、生成部21は、分類部22から供給されるグループ情報に基づいて、全てのグループを処理グループとしたかどうかを判定し、全てのグループを処理グループとしていない、即ちまだ処理グループとしていないグループがあると判定した場合、処理は図33のステップS11に戻り、上述した処理が繰り返される。
一方、ステップS26において、全てのグループを処理グループとしたと判定された場合、処理は終了する。
次に、図35を参照して、図33のステップS10のグループ処理について説明する。
ステップS31において、分類部22は、マッチングパラメータのマッチング間隔と、予め設定されている探索範囲のサイズとに基づいて、縦方向のマッチング間隔が、探索範囲の縦方向の長さのM分の1(Mは1以上の整数)であるかどうかを判定し、縦方向のマッチング間隔が、探索範囲の縦方向の長さのM分の1であると判定した場合、処理はステップS32に進む。
ステップS32において、分類部22は、各グループに属する評価ブロックの縦方向のマッチング間隔が、探索範囲の縦方向の長さと等しくなるように、評価ブロックを、評価ブロックの縦方向の長さをマッチング間隔で除算した数であるM個のグループに分類し、処理は図33のステップS10に戻る。
一方、ステップS31において、縦方向のマッチング間隔が、探索範囲の縦方向の長さのM分の1ではないと判定された場合、分類部22は、評価ブロックを評価ブロック数個のグループに分類する。即ち、分類部22は、各評価ブロックを、それぞれ異なるグループに分類する。従って、この場合、評価ブロックごとに、図14乃至図22で上述したように、探索画素群を構成する画素が読み出される。
以上のように、画像処理装置1は、マッチング間隔に基づいて、評価ブロックをグループに分類し、そのグループごとに、評価ブロックを順に対象ブロックとして決定し、探索画素群を構成する画素のうち、次の対象ブロックの探索画素群を構成する画素を記憶するので、マッチングを行う場合において、探索範囲を抑制せずに、処理量を確実に軽減することができる。
なお、上述した画像処理装置1は、評価ブロックを構成する各画素を注目画素として、注目画素と、その注目画素に対応する探索範囲の各画素との差分の絶対値をそれぞれ演算し、その差分の絶対値を探索範囲内の位置ごとに加算することにより、評価ブロックを構成する各画素と、その画素に対応する探索範囲とのマッチングを行ったが、探索範囲内の各位置を注目位置として、評価ブロックと、その評価ブロックの各画素に対応する各探索範内の注目位置の画素から構成される範囲であるブロック探索範囲との差分の絶対値をそれぞれ演算し、その差分の絶対値をブロック探索範囲ごとに加算することにより、上述したマッチングを行うようにしてもよい。
この場合のブロック探索範囲の重複について、図36乃至図40を参照して説明する。
なお、図36乃至図40において、評価ブロック71と探索画素群73内の正方形は画素を表している。
図36に示すように、3×3の範囲である探索範囲内の左上の位置が注目位置とされると、その注目位置に対応するブロック探索範囲151は、評価ブロック71の各画素に対応する各探索範囲内の左上の位置の画素から構成される、3×3の範囲となる。
次に、図37に示すように、3×3の範囲である探索範囲内の中央上の位置が注目位置とされると、その注目位置に対応するブロック探索範囲152は、図36のブロック探索範囲151を1画素分右に移動させた範囲となる。即ち、ブロック探索範囲152内の左側の2×3の範囲は、ブロック探索範囲151内の画素と重複している。
その後、図38に示すように、3×3の範囲である探索範囲内の右上の位置が注目位置とされると、その注目位置に対応するブロック探索範囲153は、図37のブロック探索範囲152を1画素分右に移動させた範囲となる。即ち、ブロック探索範囲153内の左側の1×3の範囲は、ブロック探索範囲151および152内の画素と重複し、その右隣の1×3の範囲は、ブロック探索範囲152内の画素と重複する。
次に、図39に示すように、3×3の範囲である探索範囲内の左中央の位置が注目位置とされると、その注目位置に対応するブロック探索範囲154は、図36のブロック探索範囲151を1画素分下に移動させた範囲となる。即ち、ブロック探索範囲154内の左側の1×2の範囲は、ブロック探索範囲151内の画素と重複し、その右隣の1×2の範囲は、ブロック探索範囲151および152内の画素と重複し、一番右側の1×2の範囲は、ブロック探索範囲151乃至153内の画素と重複する。
以降も同様に、3×3の範囲である探索範囲内の位置が順次注目位置とされ、最後に、図40に示すように、3×3の範囲である探索範囲内の右下の位置が注目位置とされると、その注目位置に対応するブロック探索範囲159は、図38のブロック探索範囲153を2画素分下に移動させた範囲となる。即ち、ブロック探索範囲159内の左側の2×3の範囲と右側の1×2の範囲は、ブロック探索範囲151乃至154などの、ブロック探索範囲159よりも前のブロック探索範囲と重複する。
以上のように、評価ブロック71に対応するブロック探索範囲の多くの画素は、互いに重複している。従って、注目位置ごとに、その注目位置に対応するブロック探索範囲の全ての画素が読み出される場合、1つの評価ブロックに対して、同一の画素が複数回読み出されることになり、読み出しの効率が悪い。また、複数の評価ブロックについても、同様に読み出しの効率が悪い。
この場合においても、上述した図14乃至図30の場合と同様に、探索画素群73を構成する画素を、重複を利用して効率的に読み出すことにより、探索範囲を抑制せずに、処理量を確実に軽減することができる。
本発明は、例えば、特開2005-303983号に記載されている画像処理装置に適用することができる。この場合、例えば、動物体を追尾する際に、動物体領域を決定するために行われる追尾点の近傍の動きベクトルを検出する処理の処理量を軽減することができる。この処理では、追尾点の近傍に非常に密に評価ブロックを設ける必要があり、処理量の軽減の効果は大きい。
また、本発明は、特開2005-301984号に記載されている画像処理装置に適用することができる。この場合、画像全体の動きベクトルの頻度分布を算出する処理の処理量を軽減することができる。この処理において、ロバスト性を高めるためには、非常に密に評価ブロックを設ける必要があるが、縦方向のマッチング間隔を、評価ブロックの縦方向の長さのM分の1にすることにより、処理量を軽減することができる。その結果、同一の処理量で、ロバスト性を高めることができる。
さらに、本発明は、MPEG(Moving Picture Experts Group)方式等に準拠した動画像の圧縮において、縦方向および横方向のマッチング間隔が評価ブロックの縦方向および横方向の長さとそれぞれ等しい、即ち評価ブロックがタイル状に設けられたマッチングを行って、各評価ブロックのフレーム間の動きベクトルを決定し、その動きベクトルに応じて最適な動き補償を行うことにより、残差を少なくし、符号量を削減する方法が用いられている装置に適用することができる。
この場合、動きベクトルを検出する処理において、処理量を削減することができる。このように、本発明は、評価ブロックがタイル状に設けられたマッチングを行う場合、事前読み出しの回数がより少なくなり、極めて大きな効果を得ることができる。
また、本発明は、マッチングを行う装置であれば、動きベクトルを決定する装置以外にも適用することができる。例えば、本発明は、基準画像に含まれる所定の画像を参照画像から検出する検出装置に適用することができる。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図41は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成例を示すブロック図である。CPU(Central Processing Unit)1001は、ROM(Read Only Memory)1002、または記憶部1008に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)1003には、CPU1001が実行するプログラムやデータなどが適宜記憶される。これらのCPU1001、ROM1002、およびRAM1003は、バス1004により相互に接続されている。
CPU1001にはまた、バス1004を介して入出力インターフェース1005が接続されている。入出力インターフェース1005には、キーボード、マウス、マイクロホン、図示せぬリモートコントローラから送信されてくる指令を受信する受信部などよりなる入力部1006、ディスプレイ、スピーカなどよりなる出力部1007が接続されている。CPU1001は、入力部1006から入力される指令に対応して各種の処理を実行する。そして、CPU1001は、処理の結果を出力部1007に出力する。
入出力インターフェース1005に接続されている記憶部1008は、例えばハードディスクからなり、CPU1001が実行するプログラムや各種のデータを記憶する。通信部1009は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
また、通信部1009を介してプログラムを取得し、記憶部1008に記憶してもよい。
入出力インターフェース1005に接続されているドライブ1010は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア1011が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部1008に転送され、記憶される。
なお、本明細書において、プログラム記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 画像処理装置, 11 マッチング制御部, 13 メモリ, 14 マッチング演算部, 21 生成部, 22 分類部, 31 差分絶対値部, 61 ラインメモリ, 62 シフトレジスタ, 1001 CPU, 1002 ROM, 1003 RAM, 1008 記憶部, 1011 リムーバブルメディア