以下、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。
図1は、本発明の実施形態の画像処理装置の一例であるデジタルカメラの概略構成を示す図である。
図1において、結像光学部101は、レンズ及び絞りなどを備えている。撮影の際、結像光学部101は、フォーカス調節及び露出調節を行い、撮像素子102に光学像を結像させる。撮像素子102は、光学像を電気信号(アナログ画像信号)に変換する光電変換機能を有し、CCDやCMOSセンサ等で構成される。A/D変換部103は、撮像素子102からのアナログ画像信号をデジタル画像信号に変換する。
DRAM(メモリ)107は、格納手段としてデータを記憶するメモリであり、所定枚数の静止画像や所定時間分の動画像、音声等のデータや、CPU112の動作用の定数、プログラム等を格納するのに十分な記憶容量を備える。本実施形態の場合、DRAM107は、少なくとも第1の画像と第2の画像のフレーム画像データを記憶している。第1の画像は後述するテンプレートマッチング処理における原画像として用いられ、第2の画像は参照画像として用いられる。後述する動きベクトル検出が行われる場合、原画像と参照画像は時間軸で隣接するフレーム画像であり、例えば参照画像が現在のフレーム画像(現フレーム)である場合、原画像は参照画像に対して時間的に前のフレーム画像(前フレーム)である。メモリ制御部106は、CPU112或いはデータ転送部105からの指示に応じて、DRAM107へのデータ書き込みやデータ読み出しを行う。ROM109は、電気的に消去・記録可能なメモリであり、EEPROM等が用いられる。ROM109には、CPU112の動作用の定数、プログラム等が記憶される。不揮発性メモリ制御部108は、CPU112からの指示に応じて、ROM(不揮発性メモリ)109にデータの書き込み及び読み出しを行う。
CPU112は、画像処理装置全体の制御を司るマイクロコンピュータ等で構成され、各部に対して動作指示を行い、各種の制御処理を実行する。CPU112は、バス114を介して、画像処理部104、データ転送部105、メモリ制御部106、不揮発性メモリ制御部108、表示制御部110、操作部113、撮像素子102を制御する。
バス114は、システムバスであり、バス115は画像データバスである。表示部111は、液晶モニタ等から成り、表示制御部110により制御され、各種画像データ等を表示する。操作部113は、ユーザーにより操作されるスイッチやボタン等を含み、電源のオン/オフ、シャッターのオン/オフ等の操作等に使用される。
画像処理部104は、各種画像処理部及びバッファメモリ等から構成されており、ベクトル検出部120を有している。データ転送部105は、データ転送を行う複数のDMAC(Direct Memory Access Controller)で構成されている。画像処理部104やデータ転送部105は、ハードウェアにより構成されていてもよいし、マイクロコンピュータ等により構成されていてもよい。マイクロコンピュータ等により構成されている場合、マイクロコンピュータは、例えばROM109に格納されているプログラムを実行することにより、後述する本実施形態に係る各処理を実現する。
以下、画像処理部104のベクトル検出部120の構成と、データ転送部105の動作について、先ず、図2〜図7を参照して概要を説明し、その後、図8以降の各図を参照して本実施形態に係る詳細な構成と動作について説明する。
図2は、ベクトル検出部120の概略構成と、データ転送部105の複数のDMACと、データ転送部105のDMACによるDRAM107とベクトル検出部120との間のデータ転送の説明に用いる図である。なお、図2には、データ転送部105のDMACの動作説明のために、DRAM107と、そのDRAM107に書き込みと読み出しがなされるデータ例も示している。
図2において、ベクトル検出部120は、テンプレートマッチング用画像生成部201(以下、マッチング用画像生成部201と表記する。)と、特徴点算出部202と、テンプレートマッチング処理部203と、精度判定部204とを有して構成されている。データ転送部105は、複数のDMACとして、RDDMACa221、RDDMACb222、WRDMACa231、WRDMACb232の機能を有している。RDDMACa221、RDDMACb222は、DRAM107に対してデータの読み出しを行う際のDMAC機能を表し、WRDMACa231、WRDMACb232は、DRAM107に対してデータの書き込みを行う際のDMAC機能を表している。
図3は、ベクトル検出部120がデータ転送部105を介してDRAM107からグリッド領域毎に画像データを読み出す際の各グリッド領域の配置と画像の特徴点、テンプレートマッチング領域及びサーチ領域の関係を示す図である。なお、以下の説明では、グリッド領域を単に「グリッド」と表記する。
図3に示すように、テンプレートマッチングによる動きベクトル検出の際、データ転送部105は、DRAM107から、フレーム画像を複数分割したグリッド302毎に画像データを読み出して、ベクトル検出部120に転送する。各グリッド302のサイズは予め設定されており、また、フレーム画像から分割される各グリッドの個数は水平,垂直方向について予め設定された個数となされている。
ベクトル検出部120は、グリッド302内の画像の特徴の大きさを表す特徴値を画素毎に計算し、各グリッド302内で特徴値が最も大きい画素を特徴点303として取得する。これにより、各グリッド302につき一つの特徴点303が取得される。そして、ベクトル検出部120は、特徴点303を中心として、予め設定されたサイズの矩形領域をテンプレート領域304として決定する。ベクトル検出部120は、これらグリッド302毎に得られた特徴点303とテンプレート領域304のデータをDRAM107に格納する。DRAM107に格納されたテンプレート領域304は、テンプレートマッチングにおける原画像(前フレーム)のテンプレート領域304として用いられる。そして、ベクトル検出部120は、テンプレートマッチングにおける参照画像(現フレーム)のグリッド302に対して、前フレーム内で対応した位置のグリッド302から得られたテンプレート領域304を用いたサーチを行う。
このサーチの際、ベクトル検出部120は、現フレーム(参照画像)のグリッド302内において、特徴点303を中心として、テンプレート領域304より大きく予め設定されたサイズの矩形領域をサーチ領域305として設定する。ベクトル検出部120は、テンプレート領域304の画像を用い、サーチ領域305内を順に走査することでテンプレートマッチングを行う。テンプレートマッチングの際の走査手法は公知の技術であるためその詳細な説明は省略する。テンプレートマッチングでは、ベクトル検出部120は、テンプレート領域304内の画素値と、サーチ領域305内でテンプレート領域304と同じ大きさの矩形領域内の画素値との相関を演算する。そして、ベクトル検出部120は、現フレームのグリッド302のサーチ領域305の中で、前フレームのグリッド302のテンプレート領域304と最も相関が高い矩形領域の位置を、そのテンプレート領域304の移動先として検出する。さらに、ベクトル検出部120は、前フレームのグリッド302内のテンプレート領域304の位置を基準位置とし、その基準位置に対し、現フレームのグリッド302のサーチ領域305内におけるテンプレート領域304の移動先の向きと移動量を求める。ベクトル検出部120は、このようにして求めた向きと移動量を、グリッド302におけるベクトル値255として検出する。
図4には、図2に示したデータ転送部105の各DMAC(221,222,231,232)機能によるグリッド分割から、ベクトル検出部120による動きベクトルの検出までの処理のフローチャートを示す。以下、図4のフローチャートを参照しながら、図2に示したベクトル検出部120の構成とデータ転送部105のデータ転送動作についてより詳細な説明を行う。
図4において、データ転送部105のRDDMACa221は、ステップS401の処理として、バス115を介し、DRAM107から、ベクトル検出に用いる入力画像データ241を読み出す。このデータ読み出しの際、データ転送部105のRDDMACa221は、読み出し手段として、図3に示したグリッド302の単位毎に画像データを読み出す。なお、本実施形態において、入力画像データ241は、画像処理部104で既に各種画像処理が施された後のフレームデータである。そして、RDDMACa221は、画像データ241からグリッド302の単位毎に読み出したデータを、ベクトル検出部120のマッチング用画像生成部201と特徴点算出部202に出力する。また、RDDMACa221は、それぞれ読み出したグリッド302の左上座標位置を示すグリッド座標情報252を、RDDMACb222に送る。ステップS401の後は、ベクトル検出部120のマッチング用画像生成部201にて行われるステップS402の処理と、ベクトル検出部120の特徴点算出部202にて行われるステップS404の処理に移行する。
ステップS402では、マッチング用画像生成部201は、ベクトル検出のためのテンプレートマッチングに使用するテンプレートマッチング処理用画像データ242を生成し、データ転送部105のWRDMACa231に出力する。具体的には、マッチング用画像生成部201は、バンドパスフィルタ回路であり、テンプレートマッチング処理に不要な、画像信号の高周波成分と低周波成分を除去して、テンプレートマッチング処理用画像データ242を生成する。ステップS402の後は、データ転送部105のWRDMACa231にて行われるステップS403の処理に移行する。
ステップS403では、WRDMACa231は、バス115を介し、DRAM107に対して、マッチング用画像生成部201から送られてきたテンプレートマッチング処理用画像データ242を書き込む。このテンプレートマッチング処理用画像データ242は、現フレームのグリッド302から生成されたデータであり、グリッド単位でのテンプレートマッチングにおける参照画像である。また、DRAM107には、現フレームに対して時間軸上で一つ前のフレーム画像から生成されたテンプレートマッチング処理用画像データ243も格納されている。このテンプレートマッチング処理用画像データ243は、前フレームのグリッド302で生成されたデータであり、グリッド単位でのテンプレートマッチングにおける原画像である。ステップS403の後は、データ転送部105のRDDMACb222にて行われるステップS405の処理に移行する。
特徴点算出部202にて行われるステップS404の処理は、前述したステップS402及びその後のステップS403の処理と並列に行われる。ステップS404において、特徴点算出部202は、算出手段として、各グリッド302からそれぞれ一つの特徴点303を算出する。
図5には、特徴点算出部202の構成例を示す。
図5に示すように、特徴点算出部202は、特徴フィルタ部501、特徴評価部502、特徴点決定部503を有する。特徴フィルタ部501は、バンドパスフィルタ、水平微分フィルタ、垂直微分フィルタ、平滑化フィルタなど、複数のフィルタから構成される。
特徴フィルタ部501は、バンドパスフィルタにより各グリッド302の画像データから不要な高周波成分と低周波成分を除去した後、水平方向の微分フィルタ処理と垂直方向の微分フィルタ処理を施す。さらに、特徴フィルタ部501は、それら水平方向と垂直方向の微分フィルタ処理がそれぞれ施された後のデータに対して、平滑化フィルタ処理を施す。これら水平,垂直方向について各々微分フィルタ処理と平滑化フィルタ処理が施されたデータは、特徴評価部502に送られる。
特徴評価部502は、特徴フィルタ部501で処理されたグリッド302の画像から、2つのエッジの交点の画素や、曲率が極大となっている曲線部分の点の画素のように、周辺の各画素の微分値が多方向に大きくなっている画素の値を、特徴値として算出する。なお、グリッド302内の画像に、2つのエッジの交点や曲率が極大となっている曲線部分の点等が存在していない場合には、特徴値は算出されないことになる。以下、2つのエッジの交点や曲率が極大となっている曲線部分の点などを検出する方法の一例として、Shi and Tomasiの手法を例に挙げて説明する。Shi and Tomasiについては公知の手法であるため、ここでは概要のみ説明する。
特徴評価部502は、特徴フィルタ部501により水平,垂直方向に各々微分フィルタ処理が施された後の画素の値から、自己相関行列Hを作成する。自己相関行列Hの式は、式(1)にて表される。
式(1)において、Ixは水平微分フィルタが施された後の画素の値、Iyは垂直微分フィルタが施された後の画素の値であり、自己相関行列Hは、ガウシアンフィルタGを畳み込むことで求められる。そして、特徴評価部502は、式(2)に示すShi and Tomasiの特徴評価式により、特徴値を求める。なお、式(2)に示したShi and Tomasiの特徴評価式は、式(1)の自己相関行列Hの固有値λ1、λ2のうち小さい方の固有値を特徴値とすることを表している。
Shi and Tomasi=min(λ1,λ2) ・・・式(2)
特徴評価部502によりグリッド302毎に求められた特徴値のデータは、特徴点決定部503に送られる。
特徴点決定部503は、グリッド302から特徴評価部502により画素毎に算出された特徴値の中で最も大きい値を持つ画素を、特徴点として決定する。なお、特徴評価部502にて特徴値が算出されなかった場合には、特徴点決定部503では、そのグリッド302の特徴点は取得されないことになる。そして、グリッド302において取得された特徴点の座標情報は、特徴点決定部503が備えているメモリ或いはレジスタに格納される。本実施形態において、特徴点の座標は、グリッド302の左上端の座標(x,y)を原点(0,0)とした場合の相対座標(PX,PY)により表される。なお、特徴点の座標は、相対座標(PX,PY)の他に、フレーム画像内における画素位置を表す座標で表現されてもよい。また、特徴点決定部503が備えているメモリやレジスタは、前フレームの各グリッド302で決定された特徴点の座標情報と、現フレームの各グリッド302で決定された特徴点の座標情報とを格納可能な容量を有している。特徴点決定部503に格納された特徴点の座標情報のうち、前フレームのグリッド302における特徴点の座標情報251は、後述するマッチング処理部203でテンプレートマッチング処理が開始される際にRDDMACb222に出力される。
図4に説明を戻す。ステップS404の後は、データ転送部105のRDDMACb222にて行われるステップS405の処理に移行する。
ステップS405において、RDDMACb222は、設定手段として、DRAM107から、テンプレート領域304とサーチ領域305の画像データを読み出す。具体的には、RDDMACb222は、前フレームで算出された特徴点座標情報251とグリッド座標情報252を基に、テンプレートマッチング処理用画像データ243から、特徴点303を中心としたテンプレート領域304の画像データ254を読み出す。また、RDDMACb222は、前フレームで算出された特徴点座標情報251とグリッド座標情報252を基に、テンプレートマッチング処理用画像データ242から、特徴点303を中心としたサーチ領域305の画像データ253を読み出す。そして、RDDMACb222は、サーチ領域305の画像データ253とテンプレート領域304の画像データ254を、マッチング処理部203へ出力する。ステップS405の後は、ベクトル検出部120のマッチング処理部203にて行われるステップS406の処理に移行する。
ステップS406では、マッチング処理部203は、処理手段として、サーチ領域305の画像データ253とテンプレート領域304の画像データ254とを用い、それら画像の画素毎に相関値を算出し、その相関値からベクトル値を算出する。具体的には、マッチング処理部203は、相関値として、各画素の差分絶対値和(Sum of Absolute Difference、以下SADと略す。)を求める。マッチング処理部203がSADの演算により相関値S_SADを求める際の演算式を式(3)に示す。
なお、式(3)において、f(i,j)はテンプレート領域304内の座標(i,j)における画素値を表し、g(i,j)はサーチ領域305内において相関値算出の対象となる矩形領域内の各画素値を表している。サーチ領域305内で相関値算出の対象となる矩形領域とは、テンプレート領域304と同じサイズの領域であり、テンプレートマッチングの際にサーチ領域305内で左上端部から順に走査される領域である。以下、サーチ領域305内で相関値算出の対象となる矩形領域を「相関値算出領域」と表記する。マッチング処理部203は、それらテンプレート領域304の画素値f(i,j)と相関値算出領域の画素値g(i,j)の差の絶対値を計算して、その総和を求めることにより、相関値S_SADを求める。なお、このとき用いられる画素値は例えば輝度値である。この相関値S_SADは、その値が小さいほど、両領域の画像間の輝度値の差分が小さいこと、つまり、テンプレート領域304の画像とサーチ領域305内の相関値算出領域の画像のテクスチャが類似していることを表す。ここでは、SADにより相関値を求める例を挙げたが、これに限るものではなく、例えば差分二乗和(SSD)や正規化相互相関(NCC)等の他の相関値を用いてもよい。
そして、マッチング処理部203は、相関値が最小値となる座標位置を求める。相関値が最小値となる座標位置は、現フレームのグリッド302のサーチ領域305の中で、前フレームのグリッド302のテンプレート領域304と最も相関が高い矩形領域の位置であると考えられる。さらに、サーチ領域305の中でテンプレート領域304と最も相関が高い矩形領域の位置は、前フレームのテンプレート領域304が、現フレーム内では何れの位置になっているのかを示す移動先を表している。マッチング処理部203は、前フレームのグリッド302内のテンプレート領域304の位置を基準位置とし、その基準位置に対し、前述の移動先の向きと移動量を、グリッド302におけるベクトル値255とする。マッチング処理部203は、ベクトル値255をデータ転送部105のWRDMACb232に出力する。また、マッチング処理部203は、ステップS406で算出された画素毎の相関値の情報256を、精度判定部204に出力する。
ステップS406の後は、データ転送部105のWRDMACb232にて行われるステップS408の処理に移行する。また、ステップS406の後は、ベクトル検出部120の精度判定部204にて行われるステップS407の処理にも移行する。
精度判定部204は、判定手段として、前フレームのグリッド302のテンプレート領域304や現フレームのグリッドのサーチ領域305の画像が、後述する動きベクトル検出に適した画像であるか否かを判定する。具体的には、ステップS407において、精度判定部204は、ステップS406で算出された画素毎の相関値の情報256を用いて、それら画素毎の相関値の最大値、最小値、平均値、極小値を求める。そして、精度判定部204は、それら相関値の最大値、最小値、平均値、極小値に基づいて、グリッド302について低コントラスト判定、画素値の最大値突出判定、繰り返しパターン判定を行う。
図6(a)〜図6(d)には、相関値の最大値、最小値、平均値、極小値による、グリッド302の低コントラスト判定、画素値の最大値突出判定、繰り返しパターン判定と、画素値との関係をグラフとして示している。ただし、相関値が小さいほど画像間の類似度は高いことになるため、図6(a)〜図6(d)における画素値の最大値は相関値では最小値を表し、画素値の最小値は相関値では最大値を表し、画素値の極大値は相関値では極小値を表すことになる。
精度判定部204は、低コントラスト判定において、相関値算出領域内の相関値の最大値と最小値の差分が、予め設定されている閾値よりも小さい場合、その相関値算出領域内は低コントラストであると判定する。また、精度判定部204は、画素値の最大値突出判定では、相関値算出領域内の相関値の最小値がどれだけ際立っているかを判定する。例えば、画素値の最大値と平均値の差分と、画素値の最大値と最小値の差分とを除算した値が、予め設定されている閾値よりも小さい場合、精度判定部204は、相関値算出領域内は低ピークであると判定する。一方、画素値の最大値と平均値の差分と、画素値の最大値と最小値の差分とを除算した値が、閾値よりも大きい場合、精度判定部204は、相関値算出領域内は高ピークであると判定する。また、精度判定部204は、繰り返しパターン判定において、相関値算出領域内の画素値の最小値と極小値の差分が、予め設定されている閾値よりも小さい場合には、繰り返しパターンであると判定する。
図6(a)は、精度判定部204における低コントラスト判定、画素値の最大値突出判定、繰り返しパターン判定が、それぞれ良好な場合の例を挙げている。これに対し、図6(b)は、低コントラスト判定において低コントラストであると判定される例を示しており、図6(a)の例に比べて図6(b)では、画素値の最大値と最小値の差が少ない。図6(c)は、画素値の最大値突出判定において低ピークであると判定される例を示しており、図6(a)の例に比べて図6(c)では、画素値の最大値と平均値の差分と、画素値の最大値と最小値の差分との除算値が小さい。図6(d)は、繰り返しパターン判定において繰り返しパターンであると判定される例を示しており、図6(a)の例に比べて図6(d)では、画素値の最大値と極大値の差分が小さい。
精度判定部204は、前述のような低コントラスト判定、最大値突出判定、繰り返しパターン判定を各グリッド302について行う。そして、精度判定部204は、低コントラスト、最大値突出、繰り返しパターンの何れかにも該当しないと判定した場合、テンプレート領域304とサーチ領域305の画像は、動きベクトル検出に適した画像であると判定する。一方、精度判定部204は、低コントラスト、最大値突出、繰り返しパターンの何れかであると判定した場合には、テンプレート領域304とサーチ領域305の画像は、動きベクトル検出に適さない画像であると判定する。精度判定部204は、グリッド302毎に行った前述の判定の結果を示す判定情報257を、データ転送部105のWRDMACb232に送る。
ステップS407の後は、データ転送部105のWRDMACb232にて行われるステップS408の処理に移行する。
ステップS408では、WRDMACb232は、バス115を介し、DRAM107に対して、ステップS406でマッチング処理部203が算出したベクトル値255を、グリッド302のベクトルデータ244として書き込む。ただし、WRDMACb232は、ステップS407において低コントラスト、低ピーク、繰り返しパターンの何れかであると判定がされている場合は、そのベクトルデータ244は無効なデータであること示すフラグ情報も併せて書き込む。
以上が、図4のフローチャートにおけるグリッド分割から動きベクトルの検出までの大まかな流れである。なお、図4のフローチャートでは、1フレーム分の処理を示しているが、動きベクトル検出部120とデータ転送部105は、毎フレームに対して同様の処理を行い、毎フレームで動きベクトルを検出する。
ここで、図4に示したフローチャートの処理が、例えば図3に示した全てのグリッドについて行われることを想定した場合、例えば図7で説明するような問題が生ずることになる。
図7は、前述の図3と同様に、フレーム画像1401を複数のグリッドに分割し、各グリッドで特徴点を取得してテンプレート領域とサーチ領域が設定された例を示している。図7の例えばグリッド1402−1では、特徴点1403−1を中心としたテンプレート領域1404−1とサーチ領域1405−1が設定されている。ここで、図7の全てのグリッドについて前述したような動きベクトル検出のための処理を行なった場合、前述したDRAM107に格納されたフレーム画像1401のデータを、各グリッドの単位に分割して読み出すためのメモリアクセスが発生することになる。さらに、各グリッドの画像データに対して、ベクトル検出のためのテンプレートマッチングに使用する画像データを出力するためのメモリアクセスが発生する。また、テンプレートマッチングの際には、特徴点を中心としたテンプレート領域とサーチ領域を読み出すためにメモリアクセスが発生する。このように、全てのグリッドの処理を行うようにした場合には、メモリアクセスが頻繁に発生し、したがって、ベクトル検出処理のためのメモリアクセスにより、メモリ・バスの使用帯域が多く占有されてしまう虞がある。
一方、ベクトル検出処理の際のメモリアクセスを減らすために、例えば画像データをメモリからグリッド単位で読み出す個数を間引くことも考えられるが、グリッド単位で読み出す個数を単純に間引いた場合、特徴点が存在するグリッドまで間引かれる虞がある。例えば、図7のグリッド1402−2を例に挙げて説明する。図7のグリッド1402−2では、特徴点1403−2を中心としたテンプレート領域1404−2とサーチ領域1405−2が設定されることになる。ここで、例えば、グリッド1402−2の下側に隣接したグリッド1402−3が間引き対象のグリッドであった場合、そのグリッド1402−3の画像データはメモリから読み出されないことになる。そして、グリッド1402−2の特徴点1403−2が、例えばグリッド1402−2の下端部近傍に存在していたとすると、テンプレート領域1404−2及びサーチ領域1405−2は、グリッド1402−2の範囲外の領域1406も含むことになる。しかしながら、この領域1406は、間引きされたグリッド1402−3の領域であり、画像データは存在しないため、テンプレートマッチングの際の相関演算が行えなくなってしまう。このように相関演算が出来ずにテンプレートマッチングが行えない場合、ベクトル検出の精度は低下してしまうことになる。
<第1の実施形態>
以下、メモリアクセスを減らしてメモリ・バスの使用帯域の占有率を削減しつつ、相関演算に使用するデータが存在しなくなることを防止してベクトル検出の精度の低下を防ぐことを可能とする第1の実施形態の画像処理装置について説明する。第1の実施形態の画像処理装置は、動きベクトルの検出のためのテンプレートマッチングの際に、DRAM107から読み出すグリッドを選択(選定)するようにしている。
図8〜図11を参照して、第1の実施形態の画像処理装置におけるベクトル検出部120の詳細な構成とデータ転送部105の詳細な動作について説明する。
図8は、第1の実施形態のベクトル検出部120の概略構成と、データ転送部105の複数のDMACと、データ転送部105のDMACによるDRAM107とベクトル検出部120との間のデータ転送の説明に用いる図である。前述の図2の例と同様に、図8には、データ転送部105のDMACの動作説明のために、DRAM107と、そのDRAM107に書き込みと読み出しがなされるデータ例も示している。また、図8において、前述の図2と同じ構成要素には図2と同一の指示符号を付し、それらの詳細な説明については省略する。
図8において、第1の実施形態のベクトル検出部120は、前述の図2に示したマッチング用画像生成部201、特徴点算出部202、マッチング処理部203、精度判定部204に加え、読出しグリッド選択部705を有している。以下、読出しグリッド選択部705を「グリッド選択部705」と表記する。グリッド選択部705には、特徴点算出部202が前フレームにおいてグリッド毎に求めて保持している特徴点情報751と、精度判定部204が前フレームにおいてグリッド毎に求めて保持している判定情報257とが入力される。
図9には、グリッド選択部705におけるグリッド選択処理から、データ転送部105によるグリッド読み出し処理、読み出されたグリッドを用いた動きベクトル検出までの処理のフローチャートを示す。以下、図9のフローチャートを参照しながら、図8に示したベクトル検出部120の構成とデータ転送部105におけるデータ転送動作について説明する。
図9のステップS801において、グリッド選択部705は、特徴点算出部202が保持する前フレームのグリッド毎の特徴点情報751と、精度判定部204が保持する前フレームのグリッド毎の判定情報257とを取得する。そして、グリッド選択部705は、それら前フレームのグリッド毎の特徴点情報751と判定情報257とに基づいて、RDDMACa221が現フレームの画像データ241から読み出すグリッドを選択する。
以下、グリッド選択部705が、前フレームのグリッド毎の特徴点情報751と判定情報257とに基づいて、現フレームの画像データ241から読み出すグリッドを選択する処理について説明する。
図10は、フレーム画像を分割した複数のグリッドのうち一部のグリッドを拡大して示した図であり、グリッドの特徴点とテンプレート領域及びサーチ領域の関係を説明するための図である。図10に示すように、グリッド900では、特徴点903が取得され、また、その特徴点903に基づいてテンプレート領域904とサーチ領域905が決定されている。また、図10において、グリッド900の水平方向のサイズはGLID_Xで垂直方向のサイズはGLID_Yで表され、サーチ領域905の水平方向のサイズはSLXで垂直方向のサイズはSLYで表されている。
グリッド選択部705は、グリッド開始座標902を原点(0,0)とし、グリッド900内の特徴点903の座標を特徴点座標(PX,PY)とする。なお、ここでは特徴点座標(PX,PY)等の各座標は、グリッド開始座標902である原点(0,0)からの相対座標であるとして説明する。また、グリッド選択部705は、テンプレート領域読み出し開始座標906として座標(SX0,SY0)を設定し、テンプレート領域読み出し終了座標907として座標(SX1,SY1)を設定する。テンプレート領域読み出し開始座標906は、テンプレート領域904によりサーチ領域905内のサーチが開始される際に、そのテンプレート領域904の左上端座標が配置されることになる座標であり、サーチ領域905の左上端座標と一致している。また、テンプレート領域読み出し終了座標907は、サーチ領域905内をテンプレート領域904でサーチし終わる際に、そのテンプレート領域904の右下端座標が配置されることになる座標であり、サーチ領域905の右下端座標と一致している。このため、テンプレート領域読み出し開始座標906からテンプレート領域読み出し終了座標907までで表される矩形領域は、実際にはサーチ領域905の矩形領域と一致している。グリッド選択部705は、それらテンプレート領域読み出し開始座標(SX0,SY0)を式(4)の演算により求め、テンプレート領域読み出し終了座標(SX1,SY1)を式(5)の演算により求める。
(SX0,SY0)=(PX−SLX/2,PY−SLX/2) ・・・式(4)
(SX1,SY1)=(PX+SLX/2,PY+SLX/2) ・・・式(5)
そして、グリッド選択部705は、グリッド900において式(6)の条件が満たされている場合、そのグリッド900を、テンプレートマッチング処理の際に現フレームから読み出しの対象となるグリッドとして選択する。以下、テンプレートマッチング処理の際に現フレームから読み出しの対象となるグリッドを「読み出し対象グリッド」と表記する。
0≦SX0,SX1≦GLID_X
0≦SY0,SY1≦GLID_Y ・・・式(6)
図11は、前フレーム及び現フレームの各グリッドと、前フレームで取得された特徴点と、その特徴点に基づいて決定されるテンプレート領域及びサーチ領域の関係を示す図である。図11中の斜線で示されるグリッドが、前フレームで特徴点が取得されたグリッドであり、現フレームで読み出し対象グリッドとなる可能性があるグリッドである。なお、図11中の斜線で示されていないグリッドは、前フレームにおいて特徴点が存在せずに取得できなかったグリッドであり、これらのグリッドは現フレームで読み出し対象グリッドから除外される。グリッド選択部705は、現フレームの読み出し対象グリッドとなる可能性があるグリッドについて、式(6)の条件を満たすか否かの判定を行う。
図11の現フレームの読み出し対象グリッドとなる可能性があるグリッドのうち、例えばグリッド1002−1は、サーチ領域1005−1が式(6)の条件を満たしており、そのグリッド1002−1内に包含されている。このため、グリッド選択部705は、現フレームにおけるグリッド1002−1を、読み出し対象グリッドとして選択する。一方、図11の現フレームの読み出し対象グリッドとなる可能性があるグリッドのうち、例えばグリッド1002−2は、サーチ領域1005−2が式(6)の条件を満たさず、そのグリッド1002−2内からはみ出している。このため、グリッド選択部705は、現フレームにおけるグリッド1002−2については読み出し対象グリッドから除外する。
また、グリッド選択部705は、前フレームで求められた精度判定情報757に基づいて、読み出し対象グリッドとして選択されたグリッドの中で、更に読み出し対象グリッドから除外するグリッドを決定する。具体的には、グリッド選択部705は、低コントラスト、低ピーク、繰り返しパターンの何れかに該当するグリッドについては、読み出し対象グリッドから外す。すなわち、グリッド選択部705は、式(6)の条件を満たして読み出し対象グリッドとして選択された各グリッドに対して、更に、低コントラスト、低ピーク、繰り返しパターンの何れかにも該当しないグリッドのみを選ぶような絞りこみを行う。ここでは、式(6)の条件を満たして読み出し対象グリッドとして選択された各グリッドに対して更に絞り込みを行う例を挙げたが、図11の読み出し対象グリッドとなる可能性があるグリッドの中から、先ず精度判定情報757に基づく選択を行ってもよい。この場合、図11の読み出し対象グリッドとなる可能性があるグリッドの中から精度判定情報757に基づいて選択された各グリッドに対し、更に式(6)の条件を満たすグリッドのみに絞り込むような選択が行われる。またここでは、精度判定情報757を読み出し対象グリッドの選択に用いる例を挙げたが、精度判定情報757を用いずに特徴点情報751のみに基づいて選択を行ってもよい。
このように、グリッド選択部705は、ステップS801において、前フレームの特徴点情報751及び精度判定情報757、又は、前フレームの特徴点情報751に基づいて、現フレームで読み出し対象となるグリッドを選択する。グリッド選択部705は、グリッド選択情報761を、RDDMACa221に送る。ステップS801の後、グリッド選択部705は、ステップS802に処理を進める。
ステップS802では、グリッド選択部705は、ステップS801で選択された読み出し対象グリッドの個数を判定する。ここで、グリッド選択部705には、グリッド個数の閾値として、ベクトル検出の精度を一定以上維持するため必要な最小個数が設定されている。グリッド選択部705は、ステップS802において、ステップS801で選択された読み出し対象グリッドの個数が、閾値として設定されている最小個数よりも多いか否かを判定する。ステップS802において、読み出し対象グリッドの個数が閾値の最小個数より多いと判定された場合には、データ転送部105のRDDMACa221が行うステップS804の処理に移行する。一方、グリッド選択部705は、読み出し対象グリッドの個数が閾値の最小個数以下であると判定した場合には、ステップS803に処理を進める。
ステップS803では、グリッド選択部705は、読み出し対象グリッドの個数が閾値の最小個数よりも多くなるように、更に読み出し対象グリッドを追加設定する。具体的には、グリッド選択部705は、読み出し対象グリッド以外のグリッドからランダムに選んだグリッドを、読み出し対象グリッドとして追加する。また、グリッドの追加方法の他の例として、グリッド選択部705は、ステップS801の選択処理の際に、読み出し対象グリッドから外されたグリッドの周囲のグリッドを、追加するようにしてもよい。グリッド選択部705は、ステップS803において、読み出し対象グリッド数がステップS802で用いた閾値の最小個数に達するまで、グリッドの追加処理を行う。ステップS803の後は、データ転送部105のRDDMACa221にて行われるステップS804の処理に移行する。
ステップS804では、RDDMACa221は、バス115を介し、DRAM107に格納されている画像データ241から、読み出し対象グリッドの画像データを読み出す。RDDMACa221により読み出されたグリッドの画像データ241は、マッチング用画像生成部201と特徴点算出部202に送られる。ステップS804の後は、特徴点算出部202とマッチング用画像生成部201とマッチング処理部203と精度判定部204にて行われるステップS805の処理に移行する。
ステップS805では、前述の図4のステップS402〜S408で説明したのと同様の処理が行われる。ただし、第1の実施形態の場合、特徴点算出部202とマッチング用画像生成部201では、ステップS801で選択されてステップS804で読み出されたグリッドのみに対して、前述したような特徴点算出処理とマッチング用画像生成処理が行われる。マッチング処理部203では、ステップS801で選択されてステップS804で読み出されたグリッドのみに対して、現フレームのサーチ領域と前フレームのテンプレート領域を用いたテンプレートマッチング処理が行われる。そして、マッチング処理部203からは、ステップS801で選択されてステップS804で読み出されたグリッドのみから検出されたベクトル値255が出力される。また、精度判定部802では、マッチング処理部203で求められた相関値に基づいて、前述した精度判定処理が行われる。このように、ステップS805では、前フレームと現フレームの各グリッドのうち、グリッド選択部705により選択されたグリッドについてのみ、テンプレートマッチングによる動きベクトル検出処理が行われることになる。ステップS805の後は、グリッド選択部705にて行われるステップS806の処理に移行する。
ステップS806では、グリッド選択部705は、ベクトル検出の処理が完了したグリッドの個数を判定する。このステップS806の場合、グリッド選択部705は、このグリッドの個数の閾値として、ベクトル検出の精度を維持するために十分な最大個数が設定されている。グリッド選択部705は、ステップS806において、ベクトル検出の完了したグリッドの個数が、閾値として設定されている最大個数よりも多いか否かを判定する。ステップS806において、グリッド選択部705は、ベクトル検出の完了した個数が、閾値の最大個数より多いと判定した場合には、ステップS807に処理を進める。一方、ステップS806において、ベクトル検出の完了した個数が、閾値の最大個数以下であると判定された場合には、データ転送部105のRDDMACa221にて行われるステップS804に処理が戻る。ステップS804の処理に戻ると、次の読み出し対象グリッドの画像データの読み出しが行われる。
ステップS807の処理に進むと、グリッド選択部705は、ベクトル検出を行うべき全てのフレームについての処理が完了したか否か判定する。そして、グリッド選択部705は、全てのフレームについての処理が完了したと判定した場合には、図9のフローチャートの処理を終了し、一方、完了していないと判定した場合にはステップS801に処理を戻す。ステップS801の処理に戻ると、次のフレームに対する処理が行われることになる。
以上説明したように、第1の実施形態によれば、グリッド選択部705が、前フレームの特徴点情報751及び精度判定情報757、又は、前フレームの特徴点情報751に基づいて、現フレームで読み出し対象となるグリッドを選択している。そして、ベクトル検出部120では、その選択されたグリッドのみに対して、現フレームと前フレームの画像データを用いたテンプレートマッチング処理による動きベクトル検出が行われる。したがって、第1の実施形態においては、動きベクトル検出の際に、全グリッドの処理を行う場合のような頻繁なメモリアクセスは発生せず、メモリ・バスの使用帯域の占有率を削減可能である。また、第1の実施形態においては、単純にグリッドを間引いた場合のようにテンプレートマッチング用の画像データが存在しなくなってベクトル検出の精度が低下してしまうようなことはなく、ベクトル検出精度を維持できる。
<第2の実施形態>
以下、第2の実施形態の画像処理装置について説明する。
第2の実施形態の画像処理装置は、現フレームの読み出し対象となるグリッドを選択する際に、第1の実施形態で説明した前フレームの特徴点情報751及び精度判定情報757に加えて、前フレームのグリッドで求められベクトル値情報1155をも使用する。前フレームのグリッドのベクトル値情報1155は、マッチング処理部203が前フレームの処理で求めて内部メモリやレジスタに格納されており、このベクトル値情報1155がグリッド選択部705に送られる。
以下、第2の実施形態の画像処理装置におけるベクトル検出部120の詳細な構成とデータ転送部105の詳細な動作について、図12〜図14を参照しながら説明する。
図12は、第2の実施形態のベクトル検出部120の概略構成と、データ転送部105の複数のDMACと、データ転送部105のDMACによるDRAM107とベクトル検出部120との間のデータ転送の説明に用いる図である。前述の図2の例と同様に、図12には、データ転送部105のDMACの動作説明のために、DRAM107と、そのDRAM107に書き込みと読み出しがなされるデータ例も示している。また、図12において、前述の図8と同じ構成要素には図8と同一の指示符号を付し、それらの詳細な説明については省略する。
図12において、第2の実施形態のベクトル検出部120は、前述の図2に示したマッチング用画像生成部201、特徴点算出部202、マッチング処理部203、精度判定部204と、前述の図8に示したグリッド選択部705を有している。ただし、第2の実施形態の場合のグリッド選択部705には、前述した前フレームの特徴点情報751及び判定情報257と、マッチング処理部203が前フレームで求めて保持しているベクトル値情報1155とが入力される。
図13は、現フレームと前フレームの複数のグリッドのうち一部のグリッドを拡大して示した図であり、グリッドの特徴点とテンプレート領域及びサーチ領域の関係説明に用いる図である。なお、図13では、読み出し対象グリッドとしてグリッド1220を例に挙げ、そのグリッド1220内に特徴点903が有り、その特徴点903に基づいてテンプレート領域904とサーチ領域905が設定されているとする。図13においても前述の図10で説明したのと同様に、読み出し対象グリッド1220の水平方向のサイズはGLID_X、垂直方向のサイズはGLID_Y、サーチ領域905の水平方向のサイズはSLX、垂直方向のサイズはSLYとする。また、前述の図10と同様に、グリッド選択部705は、グリッド開始座標902を原点(0,0)とし、グリッド1220内の特徴点903の座標を特徴点座標(PX,PY)とする。同様に、グリッド選択部705は、テンプレート領域読み出し開始座標906を座標(SX0,SY0)とし、テンプレート領域読み出し終了座標907を座標(SX1,SY1)とする。
さらに、第2の実施形態の場合は、グリッド選択部705は、テンプレート領域右上端座標1208として座標(SX2,SY2)を設定し、テンプレート領域左下端座標1209として座標(SX3,SY3)を設定する。テンプレート領域右上端座標1208は、テンプレート領域904がサーチ領域905内の右上端に位置したときにテンプレート領域904の右上端座標が配置されることになる座標であり、サーチ領域905の右上端座標と一致している。テンプレート領域左下端座標1209は、テンプレート領域904がサーチ領域905内の左下端に位置したときにテンプレート領域904の左下端座標が配置されることになる座標であり、サーチ領域905の左下端座標と一致している。このため、これら各座標906、1208、1209、907で表される矩形領域は、実際にはサーチ領域905の矩形領域と一致している。
また、第2の実施形態では、図13に示すように、読み出し対象グリッド1220の各辺に隣接した周囲のグリッドのうち、図中上側に隣接するグリッドを「グリッド1221」とし、図中下側に隣接するグリッドを「グリッド1223」とする。さらに、グリッド開始座標902のグリッド1220の各辺に隣接した周囲のグリッドのうち、図中で左側に隣接するグリッドを「グリッド1222」とし、右側に隣接するグリッドを「グリッド1223」とする。
詳細については後述するが、第2の実施形態の場合のグリッド選択部705は、読み出し対象グリッド1220に隣接した四つのグリッド1221〜1223が、読み出し対象グリッドの候補になるか否かを判定する。グリッド選択部705は、候補になると判定したグリッドを、読み出し対象グリッドとして追加するようなグリッド選択処理を行う。第2の実施形態のグリッド選択部705は、このような読み出し対象グリッドを追加するグリッド選択処理を行うために、以下に説明する各処理を行う。
第2の実施形態のグリッド選択部705は、前述した第1の実施形態と同様に、テンプレート領域読み出し開始座標(SX0,SY0)を式(4)により求め、テンプレート領域読み出し終了座標(SX1,SY1)を式(5)により求める。また、第2の実施形態の場合、グリッド選択部705は、テンプレート領域右上端座標(SX2,SY2)を式(7)により求め、テンプレート領域左下端座標(SX3,SY3)を式(8)により求める。
(SX2,SY2)=(PX+SLX/2,PY−SLX/2) ・・・式(7)
(SX3,SY3)=(PX−SLX/2,PY+SLX/2) ・・・式(8)
ここで、第2の実施形態において、マッチング処理部203が前フレームのグリッド1220で求めたベクトル値情報1155で表されるベクトルの水平方向の大きさをVLX、垂直方向の大きさをVLYとする。グリッド選択部705は、前述した四つの各座標(SX0,SY0)、(SX1,SY1)、(SX2,SY2)、(SX3,SY3)に対し、ベクトルの大きさVLX、VLYをそれぞれ加算する。そして、グリッド選択部705は、それら四つの座標(SX0,SY0)〜(SX3,SY3)にVLX、VLYを各々加算した座標を、(SVX0,SVY0)、(SVX1,SVY1)、(SVX2,SVY2)、(SVX3,SVY3)とする。なお、図13には、前述した四つの各座標のうち、テンプレート領域読み出し開始座標(SX0,SY0)のみを例に挙げ、その座標(SX0,SY0)にVLX、VLYを加算した座標1306(SVX0,SVY0)を示している。各座標(SVX0,SVY0)、(SVX1,SVY1)、(SVX2,SVY2)、(SVX3,SVY3)は、式(9)〜式(12)で表すことができる。
(SVX0,SVY0)=(SX0+VLX,SY0+VLY) ・・・式(9)
(SVX1,SVY1)=(SX1+VLX,SY1+VLY) ・・・式(10)
(SVX2,SVY2)=(SX2+VLX,SY2+VLY) ・・・式(11)
(SVX3,SVY3)=(SX3+VLX,SY3+VLY) ・・・式(12)
図14には、第2の実施形態のグリッド選択部705におけるグリッド選択処理のフローチャートを示す。以下、図14のフローチャートを参照しながら、第2の実施形態の場合のグリッド選択部705が読み出し対象グリッドを追加するグリッド選択処理を行う際の処理の流れを説明する。
グリッド選択部705は、先ず図14のステップS1301として、マッチング処理部203から、前フレームのグリッド1220で求めたベクトル値情報1155を取得する。このとき取得されるベクトル値情報1155は、ベクトルの水平方向の大きさVLXと垂直方向の大きさVLYを示す情報である。ステップS1301の後、グリッド選択部705は、ステップS1302に処理を進める。
ステップS1302では、グリッド選択部705は、ステップS1301で取得したベクトルの水平方向の大きさVLXと垂直方向の大きさVLYとを比較する。具体的には、グリッド選択部705は、VLXの絶対値がVLYの絶対値以上であるか否かを判定する。そして、グリッド選択部705は、VLXの絶対値がVLYの絶対値以上である場合、読み出し対象グリッド1220に対して水平方向に隣接するグリッド1222,1224を、読み出し対象グリッドの候補として残し、ステップS1303に処理を進める。一方、グリッド選択部705は、VLXの絶対値がVLYの絶対値より小さい場合、読み出し対象グリッド1220に対して垂直方向に隣接するグリッド1221,1223を、読み出し対象グリッドの候補として残し、ステップS1304に処理を進める。
ステップS1303の処理に進むと、グリッド選択部705は、VLXがゼロ(0)より小さいか否かを判定する。そして、グリッド選択部705は、VLXがゼロより小さい場合、読み出し対象グリッド1220の水平方向左側に隣接するグリッド1222を読み出し対象グリッドの候補として残し、ステップS1305に処理を進める。一方、グリッド選択部705は、VLXがゼロ以上である場合、読み出し対象グリッド1220の水平方向右側に隣接するグリッド1224を読み出し対象グリッドの候補として残し、ステップS1306に処理を進める。
ステップS1305の処理に進むと、グリッド選択部705は、テンプレート領域読み出し開始座標906のSY0に対してベクトルの大きさVLYを加算したSVY0が、ゼロ(0)以上であるか否かを判定する。さらに、グリッド選択部705は、テンプレート領域左下端座標1209のSY3に対してベクトルの大きさVLYを加算したSVY3が、グリッド1220の垂直方向のサイズGLID_Y以下であるか否かを判定する。そして、グリッド選択部705は、SVY0がゼロ以上で且つSVY3がGLID_Y以下であると判定した場合には、ステップS1310に処理を進める。ステップS1310では、グリッド選択部705は、読み出し対象グリッド1220の水平方向左側に隣接するグリッド1222を読み出し対象グリッドとして追加する。一方、グリッド選択部705は、ステップS1305において、SVY0がゼロ以上で且つSVY3がGLID_Y以下でないと判定した場合には、グリッド選択処理を終了する。
ステップS1306の処理に進んだ場合、グリッド選択部705は、テンプレート領域右上端座標1208のSY2に対してベクトルの大きさVLYを加算したSVY2が、ゼロ(0)以上であるか否かを判定する。さらに、グリッド選択部705は、テンプレート領域右上端座標1208のSY2に対してベクトルの大きさVLYを加算したSVY2が、グリッド1220の垂直方向のサイズGLID_Y以下であるか否かを判定する。そして、グリッド選択部705は、SVY2がゼロ以上で且つSVY2がGLID_Y以下であると判定した場合には、ステップS1311に処理を進める。ステップS1311では、グリッド選択部705は、読み出し対象グリッド1220の水平方向右側に隣接するグリッド1224を読み出し対象グリッドとして追加する。一方、グリッド選択部705は、ステップS1306において、SVY2がゼロ以上で且つSVY2がGLID_Y以下でないと判定した場合には、グリッド選択処理を終了する。
ステップS1304の処理に進んだ場合、グリッド選択部705は、ベクトルの垂直方向の大きさVLYがゼロ(0)より小さいか否かを判定する。そして、グリッド選択部705は、VLYがゼロより小さい場合、読み出し対象グリッド1220の垂直方向上側に隣接するグリッド1221を読み出し対象グリッドの候補として残し、ステップS1307に処理を進める。一方、グリッド選択部705は、VLYがゼロ以上である場合、読み出し対象グリッド1220の垂直方向下側に隣接するグリッド1223を読み出し対象グリッドの候補として残し、ステップS1308に処理を進める。
ステップS1307の処理に進むと、グリッド選択部705は、テンプレート領域読み出し開始座標906のSX0に対してベクトルの大きさVLXを加算したSVX0が、ゼロ(0)以上であるか否かを判定する。さらに、グリッド選択部705は、テンプレート領域左下端座標1209のSX3に対してベクトルの大きさVLXを加算したSVX3が、グリッド1220の水平方向のサイズGLID_X以下であるか否かを判定する。そして、グリッド選択部705は、SVX0がゼロ以上で且つSVX3がGLID_X以下であると判定した場合には、ステップS1312に処理を進める。ステップS1312では、グリッド選択部705は、読み出し対象グリッド1220の垂直方向上側に隣接するグリッド1221を読み出し対象グリッドとして追加する。一方、グリッド選択部705は、ステップS1307において、SVX0がゼロ以上で且つSVX3がGLID_X以下でないと判定した場合には、グリッド選択処理を終了する。
ステップS1308の処理に進んだ場合、グリッド選択部705は、テンプレート領域左下端座標1209のSX3に対してベクトルの大きさVLXを加算したSVX3が、ゼロ(0)以上であるか否かを判定する。さらに、グリッド選択部705は、テンプレート領域読み出し終了座標907のSX1に対してベクトルの大きさVLXを加算したSVX1が、グリッド1220の水平方向のサイズGLID_X以下であるか否かを判定する。そして、グリッド選択部705は、SVX3がゼロ以上で且つSVX1がGLID_X以下であると判定した場合には、ステップS1313に処理を進める。ステップS1313では、グリッド選択部705は、読み出し対象グリッド1220の垂直方向下側に隣接するグリッド1223を読み出し対象グリッドとして追加する。一方、グリッド選択部705は、ステップS1308において、SVX3がゼロ以上で且つSVX1がGLID_X以下でないと判定した場合には、グリッド選択処理を終了する。
以上説明したように、第2の実施形態によれば、読み出し対象グリッド1220の周囲のグリッド1221〜1224のうち、グリッド1220で求められたベクトルの方向と大きさに対応したグリッドが、読み出し対象グリッドとして追加されることになる。これにより、グリッド選択部705は、例えばサーチの際にテンプレート領域904が読み出し対象グリッド1220からはみ出してしまう場合でも、テンプレートマッチング用画像データが存在していることになる。したがって、第2の実施形態によれば、取得できるベクトル数が増加することになるため、ベクトル検出精度を向上させることができる。また、第2の実施形態においても、第1の実施形態と同様に、全グリッドの処理を行う場合のような頻繁なメモリアクセスは発生せず、メモリ・バスの使用帯域の占有率を削減可能である。
なお、第2の実施形態では、前述した四つの座標906,907,1209,1208とベクトルの大きさに基づいて、グリッド1220の周囲のグリッド1221〜1224の追加判定を行う例を挙げたが、それとは異なる方法による判定も可能である。例えば、前述したテンプレート領域読み出し開始座標906が読み出し対象グリッド1220の上端から予め定められた規定の距離内になっている場合には、垂直方向上側に隣接するグリッド1221を読み出し対象グリッドとして追加する。例えば、テンプレート領域読み出し開始座標906が読み出し対象グリッド1220の左端から規定の距離内にある場合には、水平方向左側に隣接するグリッド1222を読み出し対象グリッドとして追加する。例えば、テンプレート領域読み出し終了座標907が読み出し対象グリッド1220の下端から規定の距離内にある場合には、垂直方向下側に隣接するグリッド1223を読み出し対象グリッドとして追加する。例えば、テンプレート領域読み出し終了座標907が読み出し対象グリッド1220の右端から規定の距離内にある場合には、水平方向右側に隣接するグリッド1224を読み出し対象グリッドとして追加する。例えば、テンプレート領域読み出し開始座標906が読み出し対象グリッド1220の上端左端から規定の距離内にある場合、グリッド1221と1222、更に斜め左上に隣接するグリッドを読み出し対象グリッドとして追加してもよい。例えば、テンプレート領域読み出し終了座標907が読み出し対象グリッド1220の下端右端から規定の距離内にある場合、グリッド1223と1224、更に斜め右下に隣接するグリッドを読み出し対象グリッドとして追加してもよい。例えば、テンプレート領域右上端座標1208が読み出し対象グリッド1220の上端右端から規定の距離内にある場合、グリッド1221と1224、更に斜め右上に隣接するグリッドを読み出し対象グリッドとして追加してもよい。例えば、テンプレート領域左下端座標1209が読み出し対象グリッド1220の下端左端から規定の距離内にある場合、グリッド1222と1223、更に斜め左下に隣接するグリッドを読み出し対象グリッドとして追加してもよい。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
また、本実施形態では、画像処理装置の一例としてデジタルカメラを挙げたが、タブレット端末、スマートフォン、電子ゲーム機、ドライブレコーダ、ナビゲーション装置、パーソナルコンピュータなど様々な情報処理装置であってもよい。この場合の情報処理装置は、その装置自身に搭載されているカメラ機能により撮影された画像、又は、デジタルカメラ等により撮影された画像を取得し、その画像データに対して前述した実施形態に係る各処理を実行する。また、情報処理装置における実施形態に係る処理は、内部のマイクロコンピュータ等においてコンピュータプログラムを実行することにより実現されてもよい。実施形態に係る処理を実現するためのコンピュータプログラムは、記録媒体や各種ネットワークや通信回線を介して情報処理装置に提供される。
上述の実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明は、その技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。