(57)【要約】【課題】特徴点検出処理にて画像から検出する特徴点の数に上限が定められているときに、有用な特徴点を多く検出できる画像処理装置及び画像処理方法を提供すること。【解決手段】画像処理装置は、取得した画像の特徴点を検出するために画像に設定される検出領域に対して大きさの異なる複数のスケールを設定するスケール設定部１０８１と、複数のスケールの各々に対し、スケール間の特徴点の検出の優先度を設定する優先度設定部１０８２と、検出領域から検出する特徴点の上限点数を設定する上限点数設定部１０８３と、スケール毎に検出領域内の画像の画素値を用いて評価値を算出し、評価値に基づき、スケールから特徴点の候補を検出する特徴点候補検出部１０８４と、優先度と上限点数とに基づいて、特徴点の候補から特徴点を決定する特徴点決定部と１０８５、を有する。【選択図】図１
2014120056.tif 000002
【特許請求の範囲】
【請求項１】
取得した画像に設定される特徴点を検出する検出領域に対し、大きさの異なる複数のスケールを設定するスケール設定部と、
複数の前記スケールの各々に対し、当該スケール間の特徴点の検出の優先度を設定する優先度設定部と、
前記検出領域から検出する前記特徴点の上限点数を設定する上限点数設定部と、
前記スケール毎に、前記検出領域における前記取得した画像の画素値を用いて評価値を算出し、該算出した評価値に基づき、前記取得した画像の検出領域から特徴点の候補を検出する特徴点候補検出部と、
前記優先度と前記上限点数とに基づいて、前記特徴点の候補から特徴点を決定する特徴点決定部と、
を具備することを特徴とする画像処理装置。
【請求項２】
前記上限点数設定部は、前記スケール毎に検出された特徴点の、前記取得した画像の全体に対する上限点数を設定し、
前記特徴点決定部は、前記優先度が上位のスケールに対して検出された前記特徴点の候補から順に、前記上限点数以下の前記特徴点の候補を前記特徴点として決定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
上限点数設定部は、前記スケール毎に検出する特徴点の上限点数を設定し、
前記特徴点候補検出部は、前記評価値が上位の特徴点から順に、前記上限点数以下の特徴点候補を検出することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記特徴点候補検出部は、前記優先度が上位の前記スケールから順番に、検出される前記特徴点の候補の総和が前記上限点数に達するまで特徴点の候補の検出を行うことを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記優先度設定部は、前記取得した画像に対して複数の前記スケールのフィルタ処理を行って得られるフィルタの応答値に基づいて前記優先度を設定することを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
前記優先度設定部は、前記フィルタの応答値が高い前記スケールに対する優先度を高く設定することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記優先度設定部は、
前記画像が撮影された際の撮影パラメータを取得し、当該撮影パラメータに基づいて前記優先度を設定することを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項８】
取得した画像に設定される特徴点を検出する検出領域に対し、大きさの異なる複数のスケールを設定し、
複数の前記スケールの各々に対し、当該スケール間の特徴点の検出の優先度を設定し、
前記検出領域から検出する前記特徴点の上限点数を設定し、
前記スケール毎に、前記検出領域における前記取得した画像の画素値を用いて評価値を算出し、該算出した評価値に基づき、前記取得した画像の検出領域から特徴点の候補を検出し、
前記優先度と前記上限点数とに基づいて、前記特徴点の候補から特徴点を決定する、
ことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特徴点を検出する画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
画像内のコーナー等、ある画像範囲における構造が特徴的な座標を特徴点と言う。画像から特徴点を検出するには、通常、以下の処理を行う。  
１．画像入力  
２．スケール設定  特徴点を検出する際のスケールを設定する。  
３．評価値算出    画像座標毎に、スケールに応じた画像範囲の画素値を用いて評価値を算出する。  
４．特徴点検出    評価値が所定の閾値以上である座標を特徴点として検出する。
【０００３】
ここで、スケール設定において、スケールを大きく設定すれば広い画像範囲を、スケールを小さく設定すれば狭い画像範囲を評価値算出に使用し特徴点検出を行う。様々なスケールの特徴点を検出するために、スケール設定にて複数のスケールを設定し、複数のスケールの各々にて、評価値算出と特徴点検出を行うことが一般的である。
スケール設定には次の手法がある。  
・評価値算出におけるフィルタサイズを変更する。  
・評価値算出におけるフィルタサイズを固定し、画像のほうをリサイズする。  
・フィルタサイズの変更と画像のリサイズの両方を行う。
【０００４】
特許文献１は、フィルタサイズの変更と画像のリサイズの両方を組み合わせた例である。この特許文献１では、スケール設定の際に、Gaussianフィルタのσ値を初期値から所定の大きさまで複数設定し、評価値としてDoG(Difference-of-Gaussian)画像を算出している。また、解像度を１/（２ｎ）（ｎは任意の自然数）までリサイズした画像に対しても同様にGaussianフィルタのσ値を初期値から所定の大きさまで複数設定し、評価値を算出している。
【０００５】
また、特許文献２は、評価値算出におけるフィルタサイズを固定しつつ、画像を複数の係数倍でリサイズし、各々のリサイズ後に得られる画像から評価値を算出している。
【０００６】
ここで、限られた計算リソースの中で無制限に特徴点を出力することは難しいので、検出する特徴点の数に上限を設けることが多い。この場合、設定したスケールの大きさに関係なく評価値の大きい順に所定の数の点を特徴点として検出することが一般的である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第６７１１２９３号明細書
【特許文献２】特開２０１２−１０３７５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特徴点検出において検出する特徴点の数に上限を設ける場合、単純に評価値が大きい順に特徴点を検出すると、シーンに応じた適当な大きさのスケールから必ずしも多くの点が得られるとは限らず、検出された点の中に無駄な特徴点が含まれる可能性がある。
【０００９】
例えば、画像間の位置合わせ処理に特徴点検出の結果を用いる用途にて、露光ブレが生じているシーンの場合、露光ブレ量より小さなスケールから検出された特徴点は、シーンの構造を捉えて検出された点ではなくノイズ点の可能性が高いと考えられる。したがって、このようなスケールから検出される点はなるべく特徴点として採用しないようにすることが望ましい。
【００１０】
本発明は、前記の事情に鑑みてなされたもので、特徴点検出処理にて画像から検出する特徴点の数に上限が定められているときに、有用な特徴点を多く検出できる画像処理装置及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
前記の目的を達成するために、本発明の第１の態様の画像処理装置は、取得した画像に設定される特徴点を検出する検出領域に対し、大きさの異なる複数のスケールを設定するスケール設定部と、複数の前記スケールの各々に対し、当該スケール間の特徴点の検出の優先度を設定する優先度設定部と、前記検出領域から検出する前記特徴点の上限点数を設定する上限点数設定部と、前記スケール毎に、前記検出領域における前記取得した画像の画素値を用いて評価値を算出し、該算出した評価値に基づき、前記取得した画像の検出領域から特徴点の候補を検出する特徴点候補検出部と、前記優先度と前記上限点数とに基づいて、前記特徴点の候補から特徴点を決定する特徴点決定部と、を具備することを特徴とする。
【００１２】
前記の目的を達成するために、本発明の第２の態様の画像処理方法は、取得した画像に設定される特徴点を検出する検出領域に対し、大きさの異なる複数のスケールを設定し、複数の前記スケールの各々に対し、当該スケール間の特徴点の検出の優先度を設定し、前記検出領域から検出する前記特徴点の上限点数を設定し、前記スケール毎に、前記検出領域における前記取得した画像の画素値を用いて評価値を算出し、該算出した評価値に基づき、前記取得した画像の検出領域から特徴点の候補を検出し、前記優先度と前記上限点数とに基づいて、前記特徴点の候補から特徴点を決定する、ことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、特徴点検出処理にて画像から検出する特徴点の数に上限が定められているときに、有用な特徴点を多く検出できる画像処理装置及び画像処理方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】画像からスケール変化に対応した特徴点を検出する手法の概念図である。
【図２】第１の実施形態に係る画像処理装置の構成を示すブロック図である。
【図３】第１の実施形態に係る画像処理装置を用いた画像処理方法としての特徴点検出の全体の流れを示すフローチャートである。
【図４】第１の実施形態に係る画像処理方法の処理の概念図である。
【図５】優先度設定処理について示すフローチャートである。
【図６】優先度設定テーブルの例である。
【図７】特徴点候補の検出例を示す図である。
【図８】特徴点決定処理の概念図である。
【図９】特徴点決定処理について示すフローチャートである。
【図１０】特徴点リストの出力例を示す図である。
【図１１】第１の実施形態における優先度設定処理の第１の変形例のフローチャートである。
【図１２】露光ブレ量がスケールs＝3に近い値を持つとした場合の優先度の設定例を示す図である。
【図１３】第１の実施形態における優先度設定処理の第２の変形例のフローチャートである。
【図１４】第１の実施形態における優先度設定処理の第３の変形例のフローチャートである。
【図１５】最も高い優先度を付与されたスケールに対して番号が近いスケールから順に優先度を設定した場合の例を示す図である。
【図１６】第２の実施形態に係る画像処理装置の構成を示すブロック図である。
【図１７】第２の実施形態に係る画像処理装置を用いた画像処理方法としての特徴点検出の全体の流れを示すフローチャートである。
【図１８】第２の実施形態に係る画像処理方法の処理の概念図である。
【図１９】スケール毎上限検出処理を示すフローチャートである。
【図２０】第３の実施形態に係る画像処理装置の構成を示すブロック図である。
【図２１】第３の実施形態に係る画像処理装置を用いた画像処理方法としての特徴点検出の全体の流れを示すフローチャートである。
【図２２】スケール実行順の設定例を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態を説明する。ここで、以下の各実施形態で説明する画像処理装置は、特定の機器に限定されるものではない。例えば、以下の各実施形態で説明する画像処理装置は、パーソナルコンピュータ、デジタルカメラ等の各種の機器に搭載され得る。また、以下の各実施形態で説明する画像処理装置と同等の機能が、クラウドコンピューティングを利用して実現されても良い。
【００１６】
以下に説明する各実施形態は、スケール変化に対応した特徴点の検出を行う際に、検出する特徴点の数に上限を設ける。さらに、特徴点を検出するスケールに優先度を設定することで、シーンに応じた適当なスケールからより多くの特徴点を得られるようにする。
【００１７】
ここで、各実施形態で述べる「スケール」の定義について述べる。図１は、画像からスケール変化に対応した特徴点を検出する手法の概念図である。特徴点は、入力画像又は入力画像に予め設定される特徴点の検出領域に対して所定のフィルタサイズの評価値算出フィルタを座標毎に適用して評価値を算出し、画像の中の評価値の大きい座標を抽出することで検出される。ここで、図１（ａ）に示すように評価値算出フィルタのフィルタサイズを一定にして画像の解像度を変化させるか、図１（ｂ）に示すように画像のサイズを一定にして評価値算出フィルタのフィルタサイズを変化させるかにより、スケール変化に対応した特徴点検出を行うことができる。つまり、画像の解像度と評価値算出フィルタのフィルタサイズとの相対サイズ（サイズ比）によって、特徴点のスケールが決定される。
【００１８】
以下に説明する実施形態において「特徴点のスケールが大きい」というときは前述の相対サイズが大きいことを示し、「特徴点のスケールが小さい」というときは前述の相対サイズが小さいことを表すものとする。また、説明を簡単にするために、以下の説明においては、スケール変化の処理として、図１（ｂ）に示す評価値算出フィルタのフィルタサイズのほうを変更する処理を前提に述べる。しかしながら、図１（ａ）に示す画像の解像度のほうを変更する処理を用いても良いし、評価値算出フィルタのフィルタサイズと画像の解像度との両方を変更する処理を用いても良い。また、図１（ｂ）に示す例では、評価値算出フィルタのフィルタサイズを水平方向及び垂直方向に√２／１倍ずつ（フィルタサイズを２倍ずつ）変更していく例を示している。しかしながら、フィルタサイズの拡大率は、これに限るものではない。
【００１９】
また、以下の説明においては、説明を簡単にするために、特徴点を検出する検出領域が画像の全体であるとする。しかしながら、画像の一部の領域を検出領域としても良い。
【００２０】
＜第１の実施形態＞
本発明の第１の実施形態について説明する。第１の実施形態は、画像から検出する特徴点の数に上限がある際に、スケール毎に優先度を設定し、優先度に応じて特徴点を検出する例である。
【００２１】
図２は、第１の実施形態に係る画像処理装置の構成を示すブロック図である。図２に示す画像処理装置１００は、制御部１０２と、記憶部１０４と、画像取得部１０６と、画像処理部１０８と、を有している。
【００２２】
制御部１０２は、画像処理部１０８の動作を制御すべく、各種の制御信号を画像処理部１０８に対して入力する。例えば、制御部１０２は、画像処理部１０８に対して特徴点検出の実行を指示する。
【００２３】
記憶部１０４は、ハードディスクドライブ（ＨＤＤ）及びダイナミックＲＡＭ（ＤＲＡＭ）といった記憶媒体を有している。ＨＤＤは、画像取得部１０６によって入力される画像データ、後述の特徴点候補検出の処理等で用いられるパラメータ、制御部１０２で実行される各種のプログラム等を記憶している。ＤＲＡＭは、制御部１０２及び画像処理部１０８における処理データを一時記憶しておく作業メモリとして使用される。
【００２４】
画像取得部１０６は、記憶部１０４のＨＤＤからＤＲＡＭに展開された画像データを読み出して画像処理部１０８に入力する。
【００２５】
画像処理部１０８は、画像取得部１０６から入力された画像データに対して画像処理を施す。本実施形態における画像処理部１０８は、画像データにおける特徴点を検出する画像処理を行う。画像処理部１０８は、スケール設定部１０８１と、優先度設定部１０８２と、上限点数設定部１０８３と、特徴点候補検出部１０８４と、特徴点決定部１０８５と、を有している。
【００２６】
スケール設定部１０８１は、画像取得部１０６から特徴点候補検出部１０８４に入力される画像の検出領域に対し、大きさの異なる複数のスケールを設定する。
【００２７】
優先度設定部１０８２は、スケール設定部１０８１により設定された複数のスケールの各々に対し、スケール間の特徴点検出の優先度を設定する。
【００２８】
上限点数設定部１０８３は、検出領域から検出する特徴点の数の上限を設定する。本実施形態における上限点数設定部１０８３は、複数のスケールの全体に対して画像から検出する特徴点候補の点数を上限点数として設定する。以下、このような上限点数を全体上限点数と言う。
【００２９】
特徴点候補検出部１０８４は、スケール設定部１０８１により設定された複数のスケールの各々について、画像の検出領域から特徴点の候補を検出する。特徴点候補検出部１０８４は、評価値算出部１０８４ａと候補検出部１０８４ｂとを含む。評価値算出部１０８４ａは、複数のスケールの各々について、画像取得部１０６から入力された画像の画素値に基づいて検出領域における画像の評価値を算出する。候補検出部１０８４ｂは、評価値から特徴点候補を検出する。
【００３０】
特徴点決定部１０８５は、優先度設定部１０８２により設定された優先度と上限点数設定部１０８３により設定された全体上限点数とに基づいて、特徴点候補検出部１０８４により検出された特徴点候補のうちで特徴点とするものを決定する。
【００３１】
図３は、第１の実施形態に係る画像処理装置を用いた画像処理方法としての特徴点検出の全体の流れを示すフローチャートである。また、図４は、本実施形態に係る画像処理方法の処理の概念図である。
【００３２】
まず、画像取得部１０６は、記憶部１０４に記憶されている画像データを読み出して特徴点候補検出部１０８４の評価値算出部１０８４ａに入力する（Ｓ１０１）。以後、この評価値算出部１０８４ａに入力される画像データを原画像と呼ぶ。
【００３３】
画像入力処理の後、スケール設定部１０８１は、特徴点を検出する際のスケールの種類を設定する（Ｓ１０２）。図４に示すように、本実施形態では、後述する評価値算出のフィルタサイズをスケールに応じて設定することでフィルタの種類を変更し、これによって特徴点検出のスケール変化に対応させる。スケールの種類が多いほど、多くのスケール変化に対応できる。実際には、計算コストを鑑みて、ある程度の疎となるようにスケールの種類を設定するのが一般的である。
【００３４】
ここでは、評価値算出フィルタのフィルタサイズの初期値(幅、高さ)=(w0,h0)を基準にフィルタサイズを√２倍ずつ拡大し、スケール1からスケールN（図４の例では、N=5)までの評価値算出フィルタのフィルタサイズを設定したものとする。
【００３５】
続いて、上限点数設定部１０８３は、全体上限点数を設定する（Ｓ１０３）。全体上限点数の設定手法は、特に限定されない。例えば、全体上限点数は、特徴点の検出後の用途と計算コストとに基づき、ユーザが任意に設定して良い。本実施形態例では、全体上限点数としてmaxPが設定されたものとする。
【００３６】
続いて、優先度設定部１０８２は、スケール1〜Nの各々に対して特徴点検出の優先度を設定する（Ｓ１０４）。優先度は、特徴点の用途により種々設定され得る。ここでは、スケールを変化させながら二次微分フィルタを原画像に対してスケール変更数N回だけ適用し、それぞれの二次微分フィルタの応答値から優先度を設定する例を示す。以下、図５を参照して優先度設定処理についてさらに説明する。
【００３７】
図５に示す優先度設定処理において、優先度設定部１０８２は、フィルタの変更回数を管理する変数fに1を加算する（Ｓ２０１）。ここで、変数fは、予め0に初期化されているものとする。
【００３８】
続いて、優先度設定部１０８２は、二次微分フィルタを生成する（Ｓ２０２）。この時、優先度設定部１０８２は、フィルタ変更回数fの値に応じて、フィルタのスケールが大きくなるように二次微分フィルタを生成する。ここでは、二次微分フィルタとしてLoG(Laplacian Of Gaussian)フィルタを用いる。LoGフィルタの係数は下式で計算される。
【数１】
2014120056.tif 000003
【００３９】
続いて、優先度設定部１０８２は、生成した二次微分フィルタを原画像にコンボリューションする（Ｓ２０３）。コンボリューションの結果として、二次微分フィルタのスケールに応じた画像領域以外が平滑化された画像が得られる。なお、フィルタコンボリューションを下式で示す。  
【数２】
2014120056.tif 000004
【００４０】
続いて、優先度設定部１０８２は、コンボリューションの結果として得られる平滑化画像から、優先度評価値Pfを算出する（Ｓ２０４）。ここでは優先度評価値として、下式で示すように平滑化画像の全画素値の平均値を算出する。  
【数３】
2014120056.tif 000005
【００４１】
続いて、優先度設定部１０８２は、フィルタ変更回数fがスケール変更数Nと等しいか否かを判定する（Ｓ２０５）。Ｓ２０５において、フィルタ変更回数fがスケール変更数Nと等しくないと判定した場合に、優先度設定部１０８２は、Ｓ２０１からの処理を再び処理を行う。
【００４２】
Ｓ２０５において、フィルタ変更回数fがスケール変更数Nと等しいと判定した場合に、優先度設定部１０８２は、Ｓ２０１〜Ｓ２０４の反復処理を終える。反復処理により、スケール変更数Nと同数の優先度評価値Pf(f=1〜N)が得られている。優先度設定部１０８２は、これらの優先度評価値Pfに基づいて、各スケールの優先度を設定する（Ｓ２０６）。ここでは、優先度評価値Pfを降順にソートした後の、各優先度評価値に対応するフィルタ変更回数fを優先度とする。つまり、各スケールに対する二次微分フィルタの応答値が強い順に優先度を設定する。ここでは、例として優先度設定処理の結果として、図６の優先度設定テーブルで示すようにスケール1〜N(N=5)に対する優先度が設定されたものとする。
【００４３】
このように、本実施形態では、フィルタの応答値が強い順にスケールの優先度を設定している。フィルタの応答値が強いということは、それに対応したスケールから検出される特徴点候補がシーンの構造を捉えて検出された点であって有用な特徴点となる可能性が高いことを意味している。このように、本実施形態では、有用な特徴点を得られ易いスケールを予め判別しておくことにより、後述の特徴点候補検出の際に有用な特徴点候補が得られ易くなる。
【００４４】
以上示した処理によって優先度設定処理が完了する。ここで、本実施形態では、優先度を設定するための手法としてLoGフィルタを用いたが、原画像がどのスケールに強く反応するかを調べることができる手法であれば、必ずしもLoGフィルタを用いる必要はない。例えば、原画像を周波数解析し、画像に多く含まれる周波数帯域を同定し、該周波数帯域に相当する空間領域のスケールを算出することによって優先度設定をしても良い。また、後述するＳ１０６及びＳ１０７と同様の処理を行うことによって得られる評価値の統計値や特徴点候補の数を優先度評価値としても良い。
【００４５】
また、優先度設定に際しては、優先度評価値Pfの大小関係が分かれば良い。したがって、計算コストを鑑みると原画像の全座標を厳密に処理する必要はなく、例えば原画像の一部領域や原画像を縮小した画像を用いて優先度評価値Pfを算出しても良い。
【００４６】
ここで、再び図３の説明に戻る。優先度設定処理の後、Ｓ１０５〜Ｓ１０８で示す処理をスケール変更数N回分だけ反復処理する。このために、特徴点候補検出部１０８４は、反復処理の反復回数を管理するフラグであるスケール変更回数sに1を加算する（Ｓ１０５）。ここで、変数sは、予め0に初期化されているものとする。
【００４７】
続いて、特徴点候補検出部１０８４の評価値算出部１０８４ａは、スケールsについて評価値を算出する（Ｓ１０６）。評価値とは、原画像の座標毎に、各座標の周囲の画像領域がどの程度特徴的であるかを指標化したものである。例えば、周囲の画像領域が平坦状であると評価値は低く算出され、エッジ状であると評価値は高く算出される。評価値算出の手法は特に限定されるものではないが、ここでは、例えばある座標におけるHarris作用素Rを評価値として算出する。Harris作用素は下式で計算される。  
【数４】
2014120056.tif 000006
【００４８】
ここで、上式で示すHarris作用素を計算するための行列Mにおけるx,y方向の微分値の計算範囲は、スケールsに応じて変更される。例えば、この計算範囲としては、スケール設定部１０８１において設定されたスケールの種類に応じた評価値算出フィルタのフィルタサイズを用いる。他の評価値算出の手法として、例えば、SIFTのDoGが挙げられる。DoGは、原画像に２つの異なるσ値によるGaussianフィルタを適用した画像間の差分値である。この場合、スケール設定部１０８１は、スケールsに応じた２つのσ値を評価値算出フィルタのフィルタサイズの代わりに設定する。
【００４９】
続いて、特徴点候補検出部１０８４の候補検出部１０８４ｂは、評価値から特徴点候補を検出する（Ｓ１０７）。この処理において、候補検出部１０８４ｂは、座標毎の評価値の大きさを調べ、評価値が所定の閾値より大きい座標を特徴点候補として検出する。ここでは、スケールsから、numPs個の特徴点候補が検出されたとする。図７は、特徴点候補の検出例を示す図である。図７に示すように、特徴点候補の情報としては、その座標を記憶しておく。また、検出された特徴点候補には、例えば評価値valueの大きい順にid番号を付与して特徴点候補の座標と対応付けておくようにしても良い。
【００５０】
続いて、特徴点候補検出部１０８４は、スケール変更回数sがスケール変更数Nと等しいか否かを判定する（Ｓ１０８）。Ｓ１０８において、スケール変更回数sがスケール変更数Nと等しくないと判定した場合に、未処理のスケールが残っているため、特徴点候補検出部１０８４は、Ｓ１０５からの処理を再び行う。
【００５１】
Ｓ１０８において、スケール変更回数sがスケール変更数Nと等しいと判定した場合に、特徴点候補検出部１０８４は、反復処理を終える。反復処理により、各スケールから特徴点候補が検出される。
【００５２】
続いて、特徴点決定部１０８５は、優先度が高いスケールに対して画像から検出された特徴点候補を上位の特徴点として決定する（Ｓ１０９）。以下、図８及び図９を参照して特徴点決定処理についてさらに説明する。
【００５３】
図９において、特徴点決定部１０８５は、特徴点決定処理において用いる変数を初期化する（Ｓ９０１）。この処理において、特徴点決定部１０８５は、特徴点の数を示す変数numPと優先度カウントiをそれぞれ0に初期化する。
【００５４】
以下、特徴点決定部１０８５は、Ｓ９０２〜Ｓ９０６までの反復処理を行う。このために、特徴点決定部１０８５は、優先度カウントiに1を加算する（Ｓ９０２）。
【００５５】
続いて、特徴点決定部１０８５は、優先度カウントiに対応する特徴点候補の数numPiを取得する（Ｓ９０３）。numPiは、優先度設定部１０８２において作成された優先度設定テーブルに対し、優先度カウントiに対応するスケールを参照することで得られる。優先度カウントi=1を例にとると、図６の例では優先度1のスケールはスケール3である。したがって、特徴点候補の数としては、スケール3から得られた点数numP3を取得する。
【００５６】
続いて、特徴点決定部１０８５は、numPにnumPiを加算する(Ｓ９０４)。その後、特徴点決定部１０８５は、numPが全体上限点数maxP以下であるか否かを判定する（Ｓ９０５）。
【００５７】
Ｓ９０５において、numPがmaxP以下であると判定した場合、特徴点決定部１０８５は、numPi個の特徴点候補の全てに抽出フラグを付与する（Ｓ９０６）。その後、特徴点決定部１０８５は、優先度カウントiがスケール変更数Nに等しいか否かを判定する（Ｓ９０７）。Ｓ９０７において、優先度カウントiがスケール変更数Nに等しいと判定した場合、特徴点決定部１０８５は、Ｓ９０２〜Ｓ９０６の反復処理を終了する。この場合、図９の処理が終了する。また、Ｓ９０７において、優先度カウントiがスケール変更数Nに等しくないと判定した場合、特徴点決定部１０８５は、Ｓ９０２からの処理を再び行う。
【００５８】
Ｓ９０５において、numPがmaxP以下でないと判定した場合、特徴点決定部１０８５は、numPiから端数の特徴点を抽出する（Ｓ９０８）。この処理は、スケールから検出された特徴点候補の数numPiをnumPに加算したところ、全体上限点数maxPを超過した場合に実行される。端数numFracは、全体上限点数maxPに後何点の空きがあるかを調べるものであり下式で求められる。  
【数５】
2014120056.tif 000007
次に、端数numFracの分だけの特徴点候補をnumPiから抽出する。具体的には、numPi のid番号順にnumFrac個の特徴点候補に抽出フラグを付与する。
【００５９】
このように、図９の例の特徴点決定処理においては、優先度の高いスケールから検出された特徴点候補の数numPiを順次numPに加算していき、numPが全体上限点数maxPを超えた場合又は全スケールの特徴点候補の数をnumPに加算し終えた場合に反復処理が終了される。
【００６０】
以上により、特徴点候補に対する抽出フラグ付けが完了する。この抽出フラグ付けでは、優先度の高いスケールに対して画像から検出される特徴点候補にまず抽出フラグが付与される。そして、あるスケールの中で端数が生じた場合には、その端数分の特徴点候補にも抽出フラグが付与される。
【００６１】
最後に、特徴点決定部１０８５は、各スケールの特徴点候補に付与された抽出フラグを用いて、本画像処理装置１００が特徴点とする検出領域内の座標を決定する。そして、特徴点決定部１０８５は、特徴点の座標を示す特徴点リストを出力する。図１０は、特徴点リストの出力例を示す図である。本実施形態においては、優先度の高いスケールから抽出された特徴点の座標が特徴点リストに多く含まれることになる。
【００６２】
以上説明したように、本実施形態では、優先度の高いスケールから優先して特徴点を抽出するようにしている。これにより、特徴点検出の上限点数が定められている場合であっても、有用な特徴点をより多く検出することが可能である。
ここで、本実施形態では、原画像に二次微分フィルタを適用することによって得られる応答値の高い順に優先度を高く設定しているが、原画像に対して適用するフィルタの種類によっては、必ずしも応答値の高い順に優先度を高く設定する必要はない。
【００６３】
＜第１の実施形態の変形例＞
次に、第１の実施形態における優先度設定処理の変形例について説明する。前述した実施形態では、原画像に二次微分フィルタを適用することによって得られる応答値から有用な特徴点が得られ易いスケールを判別するようにしている。これは、原画像の画像情報を用いてスケールの優先度を設定していることを意味する。この他、下記の３つの手法でスケールの優先度を設定しても良い。  
ａ．原画像の撮影パラメータを用いてスケールの優先度を設定する。  
ｂ．予め与えられた値にスケールの優先度を設定する。  
ｃ．ユーザにスケールの優先度を設定させる。
【００６４】
以下、それぞれの手法について説明する。  
ａ．原画像の撮影パラメータを用いる
ここでは、原画像は、カメラ等で撮影された画像データであり、また、撮影パラメータは、画像データに例えばExif（Exchangeable Image File Format）タグ情報として記憶されているものとする。以下、撮影パラメータを用いて原画像の露光ブレ量を推定し、優先度設定に用いる例を示す。図１１は、第１の実施形態における優先度設定処理の第１の変形例のフローチャートである。
【００６５】
図１１において、優先度設定部１０８２は、撮影パラメータとして、撮影時の露光時間ssと露光時間ss中のカメラの回転角rx,ry,rzとを取得する（Ｓ５０１）。ここで、回転角rx,ry,rzは、予めにカメラに設定された互いに直交するx,y,z軸周りの回転角である。それぞれの回転角は、例えば角速度センサによって検出される。
【００６６】
続いて、優先度設定部１０８２は、露光ブレ量を算出する（Ｓ５０２）。画像中の任意座標(x,y)の露光ブレ量は、以下の手順で計算される。  
【数６】
2014120056.tif 000008
【００６７】
上式で示される露光ブレ量は画像の座標によって変わるので、原画像の全座標又は適当にサンプリングした座標群にて各々の露光ブレ量を計算する。最終的に算出する露光ブレ量は、各座標で求めた露光ブレ量の平均値とする。即ち、以下の計算によって最終的な露光ブレ量を算出する。  
【数７】
2014120056.tif 000009
【００６８】
続いて、優先度設定部１０８２は、露光ブレ量を基に各スケールに対する優先度を設定する（Ｓ５０３）。ここでは、露光ブレ量より大きなスケールの優先度を高く設定する。図１２は、露光ブレ量がスケールs＝3に近い値を持つとした場合の優先度の設定例を示す。露光ブレ量より大きなスケールより画像から検出される特徴点は、ノイズ点である可能性が低く、有用な特徴点であると考えられる。
【００６９】
ここで、前述の変形例では撮影パラメータを利用して露光ボケ量を算出し、この露光ボケ量を基に優先度を設定するようにしている。これに対し、他の撮影パラメータを使用してスケールの優先度を設定することもできる。以下に他の撮影パラメータを利用してスケールの優先度を設定する例を示す。
・原画像のピントボケ量を利用する。  
前述の変形例では、撮影時におけるカメラの回転ブレに起因する露光ボケ量を利用してスケールの優先度を設定している。これに対し、撮影時におけるピントボケ量を利用してスケールの優先度を設定しても良い。この場合、撮影パラメータとして、Ｆ値と、焦点距離と、フォーカス位置の被写体距離とを取得して被写界深度を算出し、被写界深度に応じてスケールの優先度を設定する。例えば、被写界深度が小さいときには画像がボケている可能性が高いので、大きい範囲を有するスケールの優先度を高く設定する。  
また、ＡＦ（オートフォーカス）位置から、ＭＦ（マニュアルフォーカス）操作によってピント位置が変更された場合、撮影パラメータとしてレンズの駆動量を取得し、ＡＦ 位置からの差分量に応じてスケールの優先度を設定しても良い。例えば、差分量が大きいほど、ピントが外れている、即ち画像のボケが大きいとし、大きい範囲を有するスケールの優先度を高く設定する。
・原画像のノイズ量を利用する。  
原画像にノイズが多く含まれるときには、小さなスケールはノイズの影響を受けやすく、有用な特徴点が得られる可能性は低くなる。したがって、撮影パラメータとして、ＩＳＯ感度を取得し、ＩＳＯ感度の大きさに応じて定まるノイズ量から、スケールの優先度を設定しても良い。また、原画像の明るさによりノイズ量の影響の程度が異なるため、画像の露出値EVから明るさを取得し、取得した明るさとＩＳＯ感度とを合わせてスケールの優先度を設定しても良い。例えば、被写体が暗く且つＩＳＯ感度が大きい場合には、ノイズの影響が大きくなるので、大きい範囲を有するスケールの優先度を高く設定する。また、原画像がＪＰＥＧ処理等で圧縮されている場合にはその圧縮率からノイズ量を定めて利用しても良い。
・シーンの３Ｄ情報を利用する。  
原画像に含まれる被写体に対し、カメラとの距離が近いときはより小さなスケールが被写体の構造を鑑みたスケールであると言え、カメラとの距離が遠いときはより大きなスケールが被写体の構造を鑑みたスケールであると言える。したがって、撮影パラメータとして、３Ｄ測定機能を備えたカメラにて撮影時に取得されたシーンの３Ｄ情報(x,y,z)を取得し、シーンの遠近によりスケールの優先度を設定しても良い。
【００７０】
以上、幾つかの撮影パラメータに従ってスケールに対する優先度を設定する例を示したが、これらの優先度の設定処理は必ずしも単独で用いる必要はなく、組み合わせて用いても良い。また、画像情報からスケールの優先度を設定する第１の実施形態と撮影パラメータからスケールの優先度を設定する第１の実施形態の変形例とを組み合わせても良い。
【００７１】
ｂ．予め与えられた値にスケールの優先度を設定する。  
予め与えられたスケールの優先度を設定できるようにしても良い。これは、記憶部１０４等に各スケールの優先度の設定値を予め記憶させておき、それを利用する処理である。予め与えられた値とは、例えば、本画像処理装置の用途等に応じて設計者等が決定した値等である。図１３は、第１の実施形態における優先度設定処理の第２の変形例のフローチャートである。
【００７２】
図１３において、優先度設定部１０８２は、記憶部１０４から、予め設定された優先度の設定値を読み込む（Ｓ６０１）。この設定値は、例えば複数のスケールの各々に対する優先度を示す番号である。
【００７３】
続いて、優先度設定部１０８２は、読み込んだ設定値に従って各スケールに優先度を設定する（Ｓ６０２）。
【００７４】
ｃ．ユーザにスケールの優先度を設定させる。  
本画像処理装置１００を使用するユーザがスケールの優先度を設定できるようにしても良い。図１４は、第１の実施形態における優先度設定処理の第３の変形例のフローチャートである。このフローチャートは、優先度設定処理のタイミングでユーザからの操作を受け付ける例を示す。ユーザからの操作の受付は、優先度設定処理の前のタイミングであっても良い。
【００７５】
図１４において、優先度設定部１０８２は、ユーザに対してスケール設定をする判断材料を提示する（Ｓ７０１）。この処理において、優先度設定部１０８２は、例えば図示しない表示デバイスに、原画像そのものや、数値、図形データ等を表示させる。また、判断材料としては、例えばＳ２０４の優先度評価値の算出で説明した各スケールのフィルタの応答値をグラフ表示させる。このようなグラフを見ることによって、ユーザはどのスケールに高い優先度を与えるべきかを視覚的に判断することができる。
【００７６】
続いて、優先度設定部１０８２は、ユーザからの操作を受け付ける（Ｓ７０２）。ユーザによる操作は、例えばキーボードやボタンでなされる。受け付けられる操作としては、ユーザがスケール変更数Nに対して最も優先したいスケールを選択する操作である。勿論、全てのスケールに対する優先度を設定できるようにしても良い。
【００７７】
続いて、優先度設定部１０８２は、ユーザの操作に従って各スケールの優先度を設定する（Ｓ７０３）。Ｓ７０２において最も優先度が高いスケールが１つユーザから設定されている。この最も高い優先度を付与されたスケールを基準として他のスケールの優先度を設定する。例えば、最も高い優先度を付与されたスケールに対して番号が近いスケールから順に優先度を設定する。このような優先度の設定例を図１５に示す。
【００７８】
＜第２の実施形態＞  
以下、本発明の第２の実施形態について説明する。第１の実施形態では個々のスケールに対しては上限点数を設けず、複数のスケールの全体に対して上限点数を設定している。これに対し、第２の実施形態は、複数のスケールの各々に上限点数を設定する例である。
【００７９】
図１６は、第２の実施形態に係る画像処理装置の構成を示すブロック図である。ここで、図１６においては図２と異なる部分を主に説明し、図２と共通の部分については説明を省略する。第２の実施形態は、上限点数設定部１０８３の構成が第１の実施形態と異なっている。
【００８０】
第２の実施形態における上限点数設定部１０８３は、スケール毎上限点数設定部１０８３ａと全体上限点数設定部１０８３ｂとを有している。
【００８１】
スケール毎上限点数設定部１０８３ａは、複数のスケールの各々に対し、画像から検出する特徴点候補の上限点数を設定する。全体上限点数設定部１０８３ｂは、複数のスケールの全体に対して画像から検出する特徴点候補の点数を上限点数として設定する。
【００８２】
図１７は、第２の実施形態に係る画像処理装置を用いた画像処理方法としての特徴点検出の全体の流れを示すフローチャートである。また、図１８は、本実施形態に係る画像処理方法の処理の概念図である。ここで、図１７において図３と共通の処理については、図３と共通の参照符号を付すことで説明を省略する。即ち、以下に述べるＳ１２１及びＳ１２２以外の処理は図３と同様である。
【００８３】
図１７に示すように、上限点数設定処理として全体上限点数を設定した後、スケール毎上限点数設定部１０８３ａは、スケール1からスケールN（例えばN=5)までの各々に上限点数を設定する（Ｓ１２１）。上限点数の設定手法は特に限定されない。例えば、優先度が最も高いスケールの上限点数を2000点、その次に優先度の高いスケールの上限点数を1000点、以下、500点、250点、125点といったように、優先度の高いスケールに対してより多い上限点数を設定する。以下、各スケールに設定した上限点数をmaxPs(s=1〜N)と表記する。
【００８４】
以下、第１の実施形態と同様の特徴点候補検出までの処理が行われる。この後、特徴点候補検出部１０８４は、スケール毎上限検出処理を行う（Ｓ１２１）。この処理は、特徴点候補numPsのうち、各スケールに設定された上限点数maxPs個の点を特徴点候補とする処理である。
【００８５】
図１９は、スケール毎上限検出処理を示すフローチャートである。図１９において、特徴点候補検出部１０８４は、現在の処理対象のスケールsの特徴点候補の数numPsが、そのスケールsの上限点数maxPsより大きいか否かを判定する（Ｓ１００１）。
【００８６】
Ｓ１００１において、numPsがmaxPを超えている場合、特徴点候補検出部１０８４は、numPs個の特徴点候補を評価値の大きい順にソートする（Ｓ１００２）。なお、ソートの手段は問わない。その後、特徴点候補検出部１０８４は、numPs個の特徴点候補のうち、評価値の上位maxPs個の特徴点候補を出力する（Ｓ１００３）。そして、特徴点候補検出部１０８４は、図１９の処理を終了させる。
【００８７】
Ｓ１００１において、numPsがmaxPs以下、即ちスケールsに対して画像から検出された特徴点候補の数が上限点数以下である場合、Ｓ１００３の処理のように評価値が上位の特徴点候補を抽出する必要はない。したがって、特徴点候補検出部１０８４は、numPs個の特徴点候補の全てを出力する（Ｓ１００４）。そして、特徴点候補検出部１０８４は、図１９の処理を終了させる。
【００８８】
ここで、Ｓ１００２及びＳ１００３ではソート処理を行うように述べたが、結果として評価値が上位のmaxPs個の特徴点候補が抽出できれば良い。したがって、抽出された特徴点候補同士の順列は必ずしもソートされている必要はない。
【００８９】
以上説明したように、本発明の第２の実施形態では、複数のスケールの各々に上限点数を設定している。これにより、優先度の高いスケールからのみ特徴点が検出されてしまう可能性を避けることができる。したがって、より特徴点の用途やシーンに応じた検出が可能である。
【００９０】
ここで、第２の実施形態では、第１の実施形態と同様の全体上限点数の設定も行っている。しかしながら、スケール毎上限点数設定のみ行うようにしても良い。この場合には、スケール毎上限検出処理によって出力された全ての特徴点候補が特徴点として決定される。
【００９１】
また、第２の実施形態においても、第１の実施形態で説明した各種の変形例が適用され得る。
【００９２】
＜第３の実施形態＞  
第１の実施形態では、スケール設定部１０８１において設定された複数のスケールの全てに対し、評価値の計算等の全ての計算を行っている。しかしながら、全体上限点数が設定されているので、優先度の低いスケールに対して画像から検出された特徴点候補は、最終的に特徴点として決定される可能性は低い。これに対し、第３の実施形態は、複数のスケールに対する処理を順番に行いながら、全体上限点数に達した時点で処理を打ち切ることで計算コストの低減を図る例である。
【００９３】
図２０は、第３の実施形態に係る画像処理装置の構成を示すブロック図である。図２０に示すように、第３の実施形態の画像処理装置の構成は、図２で示した第１の実施形態の画像処理装置の構成とほぼ同一である。ただし、優先度設定部１０８２で設定される優先度が特徴点候補検出部１０８４の評価値算出部１０８４ａに入力される点と、上限点数設定部１０８３で設定される全体上限点数が特徴点候補検出部１０８４の候補検出部１０８４ｂに入力される点とが異なっている。
【００９４】
図２１は、第３の実施形態に係る画像処理装置を用いた画像処理方法としての特徴点検出の全体の流れを示すフローチャートである。ここで、図２１において図３と共通の処理については、図３と共通の参照符号を付すことで説明を省略する。即ち、以下に述べるＳ１３１及びＳ１３２以外の処理は図３と同様である。
【００９５】
図２１に示すように、優先度設定処理の後、優先度設定部１０８２は、特徴点候補を検出するスケールに対する処理の実行順をスケール実行順execとして設定する（Ｓ１３１）。スケール実行順execは、優先度が高い順に設定する。図２２は、スケール実行順execの設定例を示す図である。
【００９６】
続いて、特徴点候補検出部１０８４は、複数のスケールの各々について反復処理を行う。本実施形態においては、Ｓ１３１で設定したスケール実行順に従ってスケールの種類を順次変更する。この処理において、候補検出部１０８４ｂは、Ｓ１０７において特徴点候補を検出した後、反復処理を継続するか打ち切るかの判定を行う。このために、候補検出部１０８４ｂは、検出された特徴点候補の総和を以下のように算出する。  
【数８】
2014120056.tif 000010
【００９７】
特徴点候補の算出後、候補検出部１０８４ｂは、特徴点候補の総和sumPが全体上限点数maxP未満であるか否かを判定する（Ｓ１３２）。Ｓ１３２において、特徴点候補の総和sumPが全体上限点数maxP未満である場合には、処理がＳ１０８を経てＳ１０５に移行する。この場合には、反復処理が継続される。また、Ｓ１３２において、特徴点候補の総和sumPが全体上限点数maxP以上の場合には、処理がＳ１０９に移行する。この場合には、反復処理が終了される。
【００９８】
以上説明したように本実施形態によれば、優先度の高い順にスケール実行順を設定してこの順番に従って各スケールに対する処理を実行し、特徴点候補の総和が全体上限点数以上になった場合に処理を打ち切るようにしている。これにより、必要の無いスケールの計算が省略され、計算コストが低減される。
【００９９】
ここで、前述の実施形態では全てのスケールに対する処理を行う前提としている。実際には、優先度評価値Pfが著しく低いスケールに対しては、処理を行わないように設定しても良い。これは、前述したように優先度評価値Pfが著しく低いスケールからは有用な特徴点が得られない可能性が高いためである。
【０１００】
以上実施形態に基づいて本発明を説明したが、本発明は上述した実施形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形や応用が可能なことは勿論である。また、前述の各動作フローチャートの説明において、便宜上「まず」、「次に」等を用いて動作を説明しているが、この順で動作を実施することが必須であることを意味するものではない。
【０１０１】
また、上述した実施形態における画像処理装置による各処理の手法、即ち、各フローチャートに示す処理は、何れも制御部１０２に実行させることができるプログラムとして記憶させておくこともできる。この他、メモリカード（ＲＯＭカード、ＲＡＭカード等）、磁気ディスク（フロッピディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ等）、半導体メモリ等の外部記憶装置の記憶媒体に格納して配布することができる。そして、制御部１０２は、この外部記憶装置の記憶媒体に記憶されたプログラムを読み込み、この読み込んだプログラムによって動作が制御されることにより、上述した処理を実行することができる。
【０１０２】
さらに、上記した実施形態には種々の段階の発明が含まれており、開示される複数の構成要件の適当な組合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、上述したような課題を解決でき、上述したような効果が得られる場合には、この構成要件が削除された構成も発明として抽出され得る。
【符号の説明】
【０１０３】
１００…画像処理装置、１０２…制御部、１０４…記憶部、１０６…画像取得部、１０８…画像処理部、１０８１…スケール設定部、１０８２…優先度設定部、１０８３…上限点数設定部、１０８３ａ…スケール毎上限点数設定部、１０８３ｂ…全体上限点数設定部、１０８４…特徴点候補検出部、１０８４ａ…評価値算出部、１０８４ｂ…候補検出部、１０８５…特徴点決定部
【図１】
2014120056.tif 000011
【図２】
2014120056.tif 000012
【図３】
2014120056.tif 000013
【図４】
2014120056.tif 000014
【図５】
2014120056.tif 000015
【図６】
2014120056.tif 000016
【図７】
2014120056.tif 000017
【図８】
2014120056.tif 000018
【図９】
2014120056.tif 000019
【図１０】
2014120056.tif 000020
【図１１】
2014120056.tif 000021
【図１２】
2014120056.tif 000022
【図１３】
2014120056.tif 000023
【図１４】
2014120056.tif 000024
【図１５】
2014120056.tif 000025
【図１６】
2014120056.tif 000026
【図１７】
2014120056.tif 000027
【図１８】
2014120056.tif 000028
【図１９】
2014120056.tif 000029
【図２０】
2014120056.tif 000030
【図２１】
2014120056.tif 000031
【図２２】
2014120056.tif 000032