(57)【特許請求の範囲】
【請求項１】
処理部が、縮小率の異なる複数の被探索画像を有し、下段から上段に向かうに連れて縮小率が高くなるように前記複数の被探索画像を階層化した被探索ピラミッドを生成する被探索ピラミッド生成工程と、
前記処理部が、前記被探索ピラミッドのうち、最下段の被探索画像よりも上段の被探索画像に対しモデル画像を走査し、閾値以上の類似度となる候補点を抽出する第１抽出工程と、
前記処理部が、前記第１抽出工程にて候補点を抽出した被探索画像よりも下段の被探索画像において、該被探索画像に対して上段の被探索画像で抽出した候補点に対応した位置の点毎に、該候補点に対応した位置の点を含む領域と前記領域に限定して用いる領域限定閾値とを設定する設定工程と、
前記処理部が、前記設定工程にて設定した前記領域内でモデル画像を走査して、前記領域限定閾値以上の類似度となる候補点を抽出する第２抽出工程と、を備え、
前記第２抽出工程では、前記処理部が、前記領域内でモデル画像を走査した際に、類似度の計算途中で、類似度の計算途中結果に基づき、類似度が前記領域限定閾値よりも低い値となるか否かを予測し、類似度が前記領域限定閾値よりも低い値となると予測した場合には、類似度の計算を途中で打ち切り、類似度が前記領域限定閾値よりも低い値となると予測できなかった場合には、類似度の計算を続行し、類似度の計算が完了したとき類似度が前記領域限定閾値よりも高い値であれば、次の走査位置において用いる前記領域限定閾値を、前記領域限定閾値よりも高い値となった類似度で更新する画像処理方法。
【請求項２】
前記第２抽出工程は、前記処理部が、前記被探索ピラミッドのうち最下段の被探索画像に対して行う請求項１に記載の画像処理方法。
【請求項３】
前記処理部が、前記第２抽出工程にて抽出した候補点のうち類似度が最も高い候補点を検出対象の物体の位置に決定する決定工程を更に備えた請求項２に記載の画像処理方法。
【請求項４】
前記第２抽出工程は、前記処理部が、前記被探索ピラミッドのうち最下段の被探索画像と最上段の被探索画像との間の被探索画像に対して行う請求項１乃至３のいずれか１項に記載の画像処理方法。
【請求項５】
前記第２抽出工程では、前記処理部が、前記領域限定閾値を更新する際の走査位置を、候補点として更新する請求項１乃至４のいずれか１項に記載の画像処理方法。
【請求項６】
前記閾値が固定値であり、前記領域限定閾値の初期値が前記閾値と同じ値に設定されている請求項１乃至５のいずれか１項に記載の画像処理方法。
【請求項７】
前記被探索ピラミッドが、検出対象の物体を撮像した撮像画像からエッジを抽出したエッジ画像と、前記エッジ画像を縮小した縮小画像とで構成されている請求項１乃至６のいずれか１項に記載の画像処理方法。
【請求項８】
前記被探索ピラミッドが、検出対象の物体を撮像した撮像画像と、前記撮像画像を縮小した縮小画像とで構成されている請求項１乃至６のいずれか１項に記載の画像処理方法。
【請求項９】
前記処理部が、縮小率の異なる複数のモデル画像を有し、下段から上段に向かうに連れて縮小率が高くなるように前記複数のモデル画像を階層化したモデルピラミッドを生成するモデルピラミッド生成工程を更に備え、
前記被探索ピラミッド生成工程では、前記処理部が、前記モデルピラミッドと同じ縮小率で同じ段数の前記被探索ピラミッドを生成する請求項１乃至８のいずれか１項に記載の画像処理方法。
【請求項１０】
縮小率の異なる複数の被探索画像を有し、下段から上段に向かうに連れて縮小率が高くなるように前記複数の被探索画像を階層化した被探索ピラミッドを生成する被探索ピラミッド生成処理と、
前記被探索ピラミッドのうち、最下段の被探索画像よりも上段の被探索画像に対しモデル画像を走査し、閾値以上の類似度となる候補点を抽出する第１抽出処理と、
前記第１抽出処理にて候補点を抽出した被探索画像よりも下段の被探索画像において、該被探索画像に対して上段の被探索画像で抽出した候補点に対応した位置の点毎に、該候補点に対応した位置の点を含む領域と前記領域に限定して用いる領域限定閾値とを設定する設定処理と、
前記設定処理にて設定した前記領域内でモデル画像を走査して、前記領域限定閾値以上の類似度となる候補点を抽出する第２抽出処理と、を実行する処理部を備え、
前記処理部が、前記第２抽出処理で、前記領域内でモデル画像を走査した際に、類似度の計算途中で、類似度の計算途中結果に基づき、類似度が前記領域限定閾値よりも低い値となるか否かを予測し、類似度が前記領域限定閾値よりも低い値となると予測した場合には、類似度の計算を途中で打ち切り、類似度が前記領域限定閾値よりも低い値となると予測できなかった場合には、類似度の計算を続行し、類似度の計算が完了したとき類似度が前記領域限定閾値よりも高い値であれば、次の走査位置において用いる前記領域限定閾値を、前記領域限定閾値よりも高い値となった類似度で更新する画像処理装置。
【請求項１１】
請求項１０に記載の画像処理装置と、
検出対象の物体を撮像する撮像装置と、を備えた画像処理システム。
【請求項１２】
ロボットと、
請求項１０に記載の画像処理装置と、
前記画像処理装置の処理部による画像処理結果に基づき、前記ロボットを制御するロボット制御装置と、を備えた生産装置。
【請求項１３】
コンピュータに請求項１乃至９のいずれか１項に記載の画像処理方法の各工程を実行させるためのプログラム。
【請求項１４】
請求項１３に記載のプログラムが記録された、コンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パターンマッチングを行う画像処理に関する。
【背景技術】
【０００２】
画像処理の分野において、検出対象物体の位置を検出する方法として、パターンマッチングがよく知られている。基本的なパターンマッチングの方法について説明する。まずパターンマッチングを行うためには、検出対象となる物体の参照情報が必要になる。参照情報はモデル（またはテンプレート）と呼ばれている。理想状態で検出対象となる物体を撮像した参照画像を用意し、参照画像から検出対象の物体付近の領域のみを切り出し、モデルとする。そして、実際の物体検出工程では、検出対象の物体を撮像し、撮像した画像の各位置でモデルとの類似度（一致度ともいう）を計算していく。パターンマッチングは、最も類似度の高かった画像の位置を検出位置とする方法である。つまり、パターンマッチングは、被探索画像の中からモデル画像と最も類似している位置を検出する方法である。
【０００３】
ここで、相違度（不一致度ともいう）を計算する場合もある。相違度が低いことは、類似度が高いことを意味する。したがって、数値判断を行う際には、数値の比較判断の大小関係が逆になるだけで、類似度であっても相違度であっても同じ判断を行っていることになる。例えば、相違度が閾値を下回るか否かの判断は、類似度が閾値を上回るか否かを判断していることになる。また、例えば、相違度が最も低いものを抽出する処理は、類似度が最も高いものを抽出する処理をしていることになる。したがって、以下、類似度として説明する。
【０００４】
類似度の計算方法は、複数の方法が知られており輝度値差分法（ＳＡＤ）、正規化相関法（ＮＣＣ）、形状パターンマッチングなどが知られている。形状パターンマッチングは、その中でも照明変化、物体の隠れ、欠けにも強く、ロバストな手法である。
【０００５】
この形状パターンマッチングは、モデルと被探索画像の形状特徴を利用して、類似度を計算していく。このため形状パターンマッチングでは、画像に対する形状特徴を抽出する必要がある。形状特徴を抽出する方法として、一般的にＳｏｂｅｌフィルタやＣａｎｎｙフィルタ等のエッジ抽出方法が知られている。エッジ抽出により抽出された各エッジ点に対して、位置（座標）、輝度の勾配方向、輝度の勾配強度等の情報を得ることができる。そして、モデルと被探索画像の各エッジ点の勾配方向（以下、エッジ方向）を比較しながら、探索を行っていく。モデルと被探索画像の各エッジ方向の差が小さければ、同一の形状特徴を持っているとして類似度が高くなり、差が大きければ類似度が低くなる。つまり、モデルと同様のエッジ位置で、同様のエッジ方向を持ったものを被探索画像の中から探し出す方法がある。
【０００６】
上述したようにパターンマッチングは、被探索画像の各位置で類似度を計算していくため、計算コストが高く、処理時間が遅い。そこで、処理を高速化するため、特許文献１に記載されているように、ピラミッド探索が行われる。ピラミッド探索とは、画像を段階的に縮小していき、まずは最も縮小した画像に対して、パターンマッチングを行う。そして、縮小画像で検出した対象物の位置周辺のみを次の縮小率の画像で探索を行う。この探索方法を縮小を行っていない被探索画像まで繰り返すことにより、処理を高速化しながら、精度も保つことができる。
【０００７】
縮小画像に対する類似度計算は、解像度が低下するため正確性が低下する。そのため、被探索画像では最も類似度の高い位置が、縮小画像では類似度が最も高くならない場合がある。そこで、縮小画像を探索する際は、類似度がある一定の閾値を超えた位置を候補位置として全て記憶しておき、ピラミッド探索していく。
【０００８】
一方、特許文献２には、類似度の計算途中に閾値を超えないと判断できた場合には、類似度の計算を途中で打ち切る方法が提案されている。さらに、探索中に出た最も高い類似度により閾値を更新することで、計算打ち切りの効果をより高め、高速に処理が行えるようにしている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１０−２１３８９号公報
【特許文献２】特開２００２−２３０５４９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
パターンマッチングは、様々な用途で使用されているが、特に工業（例えばＦＡ）の用途では生産のサイクルタイムを短縮するため、超高速な処理が求められる。そこで、さらなる高速化を実現するため、特許文献１のようなピラミッド探索の縮小画像に対する類似度計算においても、特許文献２のような計算打ち切りや閾値を更新する方法が考えられる。
【００１１】
しかしながら、特許文献１のようなピラミッド探索の縮小画像に対して、特許文献２のような閾値の更新及び計算の打ち切りを行った場合、物体の検出に失敗する可能性があった。
【００１２】
即ち、縮小画像に対して探索する場合、解像度が低下しているため、類似度の信頼性も低い。そのため、縮小画像において類似度が最も高い位置が、縮小していない被探索画像において類似度が最も高くなる位置とは限らない。したがって、縮小画像において算出した最も高い類似度により閾値の更新を行うと、その位置が検出対象となる位置ではない場合、別の位置にある検出対象となる位置（正解位置）の計算が打ち切られて、検出対象物体を検出できなくなる可能性があった。
【００１３】
そこで、本発明では、パターンマッチングを高速化しながらも物体の検出の失敗を防ぐことを目的とする。
【課題を解決するための手段】
【００１４】
本発明の画像処理方法は、処理部が、縮小率の異なる複数の被探索画像を有し、下段から上段に向かうに連れて縮小率が高くなるように前記複数の被探索画像を階層化した被探索ピラミッドを生成する被探索ピラミッド生成工程と、前記処理部が、前記被探索ピラミッドのうち、最下段の被探索画像よりも上段の被探索画像に対しモデル画像を走査し、閾値以上の類似度となる候補点を抽出する第１抽出工程と、前記処理部が、前記第１抽出工程にて候補点を抽出した被探索画像よりも下段の被探索画像において、該被探索画像に対して上段の被探索画像で抽出した候補点に対応した位置の点毎に、該候補点に対応した位置の点を含む領域と前記領域に限定して用いる領域限定閾値とを設定する設定工程と、前記処理部が、前記設定工程にて設定した前記領域内でモデル画像を走査して、前記領域限定閾値以上の類似度となる候補点を抽出する第２抽出工程と、を備え、前記第２抽出工程では、前記処理部が、前記領域内でモデル画像を走査した際に、類似度の計算途中で、類似度の計算途中結果に基づき、類似度が前記領域限定閾値よりも低い値となるか否かを予測し、類似度が前記領域限定閾値よりも低い値となると予測した場合には、類似度の計算を途中で打ち切り、類似度が前記領域限定閾値よりも低い値となると予測できなかった場合には、類似度の計算を続行し、類似度の計算が完了したとき類似度が前記領域限定閾値よりも高い値であれば、次の走査位置において用いる前記領域限定閾値を、前記領域限定閾値よりも高い値となった類似度で更新する。
【発明の効果】
【００１５】
本発明によれば、類似度の計算の打ち切り、及び計算を打ち切るか否かを判断する領域限定閾値の更新により、パターンマッチングに要する処理時間を短縮することができる。そして、候補点に対応する領域毎に領域限定閾値を設定したので、物体の検出の失敗を防ぐことができる。
【図面の簡単な説明】
【００１６】
【図１】第１実施形態に係る生産装置の概略構成を示す説明図である。
【図２】第１実施形態に係る画像処理装置の構成を示すブロック図である。
【図３】第１実施形態に係る画像処理方法におけるモデルピラミッドの作成処理を示すフローチャートである。
【図４】切り出した矩形領域の画像を縮小した画像を生成する際の説明図である。
【図５】画像に対してエッジ抽出処理を行う動作を説明するための図である。
【図６】モデル画像を説明するための図である。
【図７】ピラミッド構造を説明するための図である。
【図８】第１実施形態に係る画像処理方法の探索処理を示すフローチャートである。
【図９】第１実施形態に係る画像処理方法におけるパターンマッチング処理を示すフローチャートである。
【図１０】第１実施形態に係る画像処理方法におけるパターンマッチング処理を示すフローチャートである。
【図１１】パターンマッチング処理を説明するための図である。
【図１２】パターンマッチング処理を説明するための被探索ピラミッドを示す模式図である。
【図１３】第１実施形態に係る画像処理方法におけるスコア計算処理を示すフローチャートである。
【図１４】第２実施形態に係る画像処理方法におけるモデルピラミッドの作成処理を示すフローチャートである。
【図１５】第２実施形態に係る画像処理方法の探索処理を示すフローチャートである。
【図１６】第２実施形態に係る画像処理方法におけるパターンマッチング処理を示すフローチャートである。
【図１７】第２実施形態に係る画像処理方法におけるパターンマッチング処理を示すフローチャートである。
【図１８】第２実施形態に係る画像処理方法におけるスコア計算処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１８】
［第１実施形態］
図１は、第１実施形態に係る生産装置の概略構成を示す説明図である。図１に示す生産装置１００は、ワーク（検出対象の物体）Ｗ１をワーク（被組み付け部材）Ｗ２に組付けて組立部品Ｗを製造する製造方法を実行するものである。生産装置１００は、ロボット２００と、ロボット２００に取り付けられた撮像装置としてのカメラ５００と、カメラ５００と有線又は無線で通信を行うように構成された画像処理装置３００と、を備えている。また、生産装置１００は、ロボット２００及び画像処理装置３００にケーブル等で接続されたロボット制御装置４００を備えている。
【００１９】
ロボット２００は、例えば垂直多関節型のロボットアーム２０１と、エンドエフェクタであるロボットハンド２０２と、を有している。ロボットアーム２０１は、複数のリンクが複数の関節で旋回又は回転可能に連結されて構成されている。ロボットアーム２０１の基端（基端リンク、ベース部ともいう）が基台Ｂ０の上面に固定されている。ロボットアーム２０１の先端（先端リンク）には、ロボットハンド２０２が取り付けられている。ロボットハンド２０２は、複数のフィンガを有し、ワークＷ１を把持又は把持解放することができる。
【００２０】
カメラ５００はデジタルカメラであり、例えばＣＣＤ（Charge  Coupled  Device）イメージセンサやＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）イメージセンサ等の撮像素子を有する。
【００２１】
画像処理装置３００は、カメラ５００の撮像動作（例えば撮像タイミングやシャッタースピード等）を制御し、カメラ５００から撮像画像を取得する。また、画像処理装置３００は、画像（デジタルデータ）に対して画像処理を施し、その結果をロボット制御装置４００に出力する。具体的には、画像処理装置３００は、パターンマッチング処理を行い、その結果をロボット制御装置４００に出力する。ロボット制御装置４００は、画像処理装置３００による画像処理の結果に基づき、ロボット２００の動作を制御する。
【００２２】
画像処理装置３００は、カメラ５００の筐体の外部に配置されているが、カメラ５００の筐体の内部に配置されていてもよい。これら画像処理装置３００及びカメラ５００を有して画像処理システム５５０が構成されている。
【００２３】
図２は、第１実施形態に係る画像処理装置３００の構成を示すブロック図である。図２に示すように、画像処理装置３００は、画像処理、具体的にはパターンマッチング処理を行うものであり、コンピュータで構成されている。画像処理装置３００は、処理部としてのＣＰＵ（Central  Processing  Unit）３０１を備えている。また、画像処理装置３００は、記憶部として、ＲＯＭ（Read  Only  Memory）３０２、ＲＡＭ（Random  Access  Memory）３０３、ＨＤＤ（Hard  Disk  Drive）３０４を備えている。また、画像処理装置３００は、記録ディスクドライブ３０５及び各種のインタフェース３１１〜３１５を備えている。
【００２４】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５及びインタフェース３１１〜３１５が、バス３１０を介して接続されている。ＲＯＭ３０２には、ＢＩＯＳ等の起動プログラムが格納されている。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。ＨＤＤ３０４には、プログラム３２１が格納（記録）されている。そして、ＣＰＵ３０１がプログラム３２１を読み出して実行することにより、後述する画像処理方法の各工程を実行する。記録ディスクドライブ３０５は、記録ディスク３２２に記録された各種データやプログラム等を読み出すことができる。
【００２５】
インタフェース３１１には、ロボット制御装置４００が接続されている。ＣＰＵ３０１は、バス３１０及びインタフェース３１１を介して画像処理結果をロボット制御装置４００に送信する。
【００２６】
インタフェース３１２には、カメラ５００が接続されている。ＣＰＵ３０１は、バス３１０及びインタフェース３１１を介して、トリガ信号等の制御信号をカメラ５００に送信する。そして、ＣＰＵ３０１は、カメラ５００からの画像信号をバス３１０及びインタフェース３１１を介して取得する。取得した画像データは、ＣＰＵ３０１の制御の下、ＨＤＤ３０４や外部記憶装置８００等の記憶装置に格納する。
【００２７】
インタフェース３１３には、マウスやキーボード等、作業者が操作して、操作に応じた指令をＣＰＵ３０１に送信する入力装置６００が接続されている。インタフェース３１４には、画像を表示するディスプレイ等の表示装置７００が接続されている。インタフェース３１５には、ＵＳＢメモリ等の書き換え可能な不揮発性メモリ、或いは外付けＨＤＤ等の外部記憶装置８００が接続されている。
【００２８】
なお、本実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ３０４であり、ＨＤＤ３０４にプログラム３２１が格納されているが、これに限定するものではない。プログラム３２１は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラム３２１を供給するための記録媒体としては、不揮発性のメモリや記録ディスク等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、ＲＯＭ、ＵＳＢメモリ等を用いることができる。
【００２９】
以下、画像処理装置３００によるパターンマッチング方法（画像処理方法）について説明する。画像処理装置３００のＣＰＵ３０１は、プログラム３２１をＨＤＤ３０４から読み出して実行することにより、以下に説明する画像処理方法の各工程を実行する。まず、パターンマッチング処理を行うためのモデルピラミッド（形状モデル）の作成処理、つまりモデルピラミッド生成工程について説明する。
【００３０】
図３は、第１実施形態に係る画像処理方法におけるモデルピラミッド生成工程（形状モデルの作成処理）を示すフローチャートである。まず、オペレータ（作業者）は、パターンマッチング用のモデル画像を用意するために理想状態の照明条件及び位置に、参照物（モデル物体）をセットする。ＣＰＵ３０１は、カメラ５００に参照物の撮像を行わせ、参照物が写り込んだ参照画像である画像データをカメラ５００から取得する（Ｓ１）。この参照物は、ワークＷ１またはワークＷ１と同じ形状の治具である。なお、参照画像は、予めＨＤＤ３０４や外部記憶装置８００等の記憶装置に格納されていてもよく、その場合は、ＣＰＵ３０１は、ＨＤＤ３０４や外部記憶装置８００等の記憶装置から、参照画像のデータを取得することとなる。
【００３１】
ＣＰＵ３０１は、参照画像を表示装置７００に表示させ、オペレータにより指定された、参照物が写り込んだ部分を包含する矩形領域の画像を切り出す（Ｓ２）。指定の方法は、例えばマウス等の入力装置６００を利用し、表示装置７００に表示された参照画像内の参照物が写り込んだ画像を包含する領域の左上と右下の２点をクリックすることにより行う。ＣＰＵ３０１は、ステップＳ２では、クリックされた２点の位置（矩形領域の左上、右下の角の点）を指定し、参照画像から矩形領域の画像のみを切り出す。
【００３２】
次に、ＣＰＵ３０１は、ステップＳ２で切り出した矩形領域の画像を、オペレータが指定したピラミッド段数分、画像縮小する（Ｓ３，Ｓ４）。
【００３３】
図４は、切り出した矩形領域の画像ＩＣ１を縮小して画像ＩＣ２を生成する際の説明図である。まず、図４に示すように、画像ＩＣ１の左上端から２×２画素の矩形領域Ｒ１を設定する。
【００３４】
画像縮小方法は、画像の左上端から２×２画素の領域Ｒ１を、縮小画像の１画素とすることにより縮小していく。具体的には、縮小対象となる画像の２×２画素の４画素の輝度値の平均値を縮小画像の１画素の輝度値としていく。ＣＰＵ３０１は、この平均化処理を縮小対象画像に対して全画素に行うことにより、画像の幅、高さが２分の１となる縮小画像を形成する（Ｓ３）。
【００３５】
次に、ＣＰＵ３０１は、指定ピラミッド段数分の画像を作成したか否かを判断する（Ｓ４）。ＣＰＵ３０１は、ステップＳ３での縮小処理を所定の回数行っていなければ（Ｓ４：Ｎｏ）ステップＳ３に戻り、前回縮小した画像に対して、同様の縮小方法により再縮小を行う。ＣＰＵ３０１は、所定回数の画像縮小を終えていれば（Ｓ４：Ｙｅｓ）、画像縮小の処理は終了する。
【００３６】
次に、ＣＰＵ３０１は、ステップＳ３，Ｓ４で作成した全ての画像に対して、エッジ抽出処理を行う（Ｓ５，Ｓ６）。これにより、段階的に縮小されたモデル画像（テンプレート画像）が生成される。ＣＰＵ３０１は、複数のモデル画像を下段から上段に向かうに連れて縮小率が高くなるように（解像度が低くなるように）階層化して、これら複数のモデル画像からなるモデルピラミッド（形状モデル）を生成する。
【００３７】
即ち、ＣＰＵ３０１は、参照物を撮像して得られた撮像画像と、この撮像画像に対して縮小処理を施して得られた縮小画像とで、解像度の異なる複数の画像を作成する。次いで、ＣＰＵ３０１は、解像度の異なる複数の画像に対してエッジ抽出処理を施してモデルピラミッドを構成する複数のモデル画像を生成する。生成されたモデルピラミッドは、ＨＤＤ３０４や外部記憶装置８００等の記憶装置に記憶される。
【００３８】
ここで、エッジ抽出処理について詳細に説明する。ＣＰＵ３０１は、エッジ抽出対象の画像において、画素毎にエッジ強度とエッジ方向を算出する。エッジ強度とは、コントラストの大きさ（輝度の変化の急峻さ）を表し、注目画素に対し隣接する画素のコントラストが大きければエッジ強度も大きくなる。エッジ方向とは、コントラストの方向を表し、注目画素のエッジ強度が最も大きくなる方向（角度）を示す。エッジ強度の算出には、例えばｘ軸方向（画像の横軸方向）、ｙ軸方向（画像の縦軸方向）のソーベルフィルタを使用する。
【００３９】
図５は、画像に対してエッジ抽出処理を行う動作を説明するための図である。ＣＰＵ３０１は、画像ＩＣ中の注目画素ＰＩで、まずｘ軸方向のエッジ強度Ｅｘとｙ軸方向のエッジ強度Ｅｙを算出する。エッジ強度のベクトルは、（Ｅｘ，Ｅｙ）で表される。
【００４０】
そして、ＣＰＵ３０１は、注目画素ＰＩのエッジ強度Ｅを、各軸の強度Ｅｘ，Ｅｙの二乗和の平方根、即ち以下の式（１）で算出する。
【００４１】
【数１】
0006648925.tif 000002
【００４２】
また、ＣＰＵ３０１は、エッジ方向θを以下の式（２）により算出する。
【００４３】
【数２】
0006648925.tif 000003
【００４４】
ＣＰＵ３０１は、上記方法により画像ＩＣの全画素のエッジ強度とエッジ方向を算出する。そして、ＣＰＵ３０１は、エッジ強度がある一定の閾値以上の画素をエッジ特徴（エッジ点）として抽出し、複数のエッジ点の集合である特徴画像を含むモデル画像（テンプレート画像）ＩＴを生成する。
【００４５】
図６は、モデル画像を説明するための図である。図６では、モデル画像ＩＴにおいて、エッジ特徴（エッジ点）を示す有効画素を黒、それ以外の無効画素を白で表現している。特徴画像のデータ保持方法は、画像の画素毎に２チャンネルのデータ領域を持って置き、図６に示すように、エッジ特徴として抽出された画素Ｐ１は有効画素として、１チャンネル目にエッジ強度、２チャンネル目にエッジ方向の情報を入れておく。エッジ特徴ではないと判断された画素Ｐ２には無効値（例えば０）を入れておく。これらエッジ点を示す画素Ｐ１の集合ΣＰが、特徴画像である。
【００４６】
なお、エッジ強度のみを記憶したエッジ強度画像、エッジ方向のみを記憶したエッジ方向画像の２画像を１組とした特徴画像として記憶してもよい。また、本実施形態では、エッジ強度の算出にソーベルフィルタを使用しているが、キャニーフィルタ等の一般的に知られたエッジ抽出フィルタを使用してもよい。
【００４７】
図７は、ピラミッド構造を説明するための図である。図７に示すように、画像縮小処理及びエッジ抽出処理を複数回繰り返し、複数の異なる解像度の特徴画像を含むモデル画像ＩＴ１〜ＩＴ４を生成する。縮小を行う回数は作業者がモデルピラミッドの段数として、指定することができる。例えば作業者がピラミッド段数を４段で指定していれば、１枚の縮小していない（縮小率が１の）モデル画像ＩＴ１と３枚の段階的に縮小されたモデル画像ＩＴ２〜ＩＴ４が作成される。
【００４８】
以上のステップＳ１〜Ｓ６により、ＣＰＵ３０１は、異なる縮小率の複数のモデル画像を、下段から上段に向かうに連れて縮小率が高くなるように階層化したモデルピラミッドを生成する（モデルピラミッド生成工程、モデルピラミッド生成処理）。最下段のモデル画像は、縮小率が１、つまり縮小していない画像ということになる。
【００４９】
以上の説明では、モデルピラミッドを生成するに際し、撮像画像から切り出した画像に対して縮小処理を施してから各画像にエッジ抽出処理を施して複数のモデル画像を生成する場合について説明したが、これに限定するものではない。例えば、撮像画像から切り出した画像に対してエッジ抽出処理を施したモデル画像に対して縮小処理を施し、複数のモデル画像を生成して、モデルピラミッドを生成してもよい。
【００５０】
また、本実施形態では、ＣＰＵ３０１がモデルピラミッドを生成する場合について説明したが、これに限定するものではなく、予め作成されたモデルピラミッドを取得する場合であってもよい。
【００５１】
次にステップＳ１〜Ｓ６で作成したモデルピラミッドを使用し、実際に物体の検出を行う探索処理のフローについて説明する。図８は、第１実施形態に係る画像処理装置が実行する画像処理方法の探索処理を示すフローチャートである。
【００５２】
まず、ＣＰＵ３０１は、モデルピラミッド（形状モデル）のデータが格納されているＨＤＤ３０４や外部記憶装置８００等の記憶装置から、モデルピラミッド（形状モデル）のデータを入力する（Ｓ７）。
【００５３】
次に、ＣＰＵ３０１は、縮小率の異なる（解像度の異なる）複数の被探索画像を有し、これら被探索画像を下段から上段に向かうに連れて縮小率の高くなるように（解像度が低くなるように）階層化した被探索ピラミッドを生成する（Ｓ８〜Ｓ１２）。本実施形態では、モデルピラミッドと同じ縮小率で同じ段数となるように被探索ピラミッドを生成する。即ち、モデルピラミッドが４段の場合には、被探索ピラミッドも４段とする。そして、モデルピラミッドと被探索ピラミッドにおいて同一階層同士は、同じ解像度（同じ縮小率）に設定されている。例えば、図７に示すように、モデルピラミッドが４段であるので、ＣＰＵ３０１は、４枚の被探索画像ＩＳ１〜ＩＳ４からなる４段の被探索ピラミッドを生成する。
【００５４】
以下、具体的に説明すると、まず、ＣＰＵ３０１は、検出対象となる物体をカメラ５００により撮像させ、カメラ５００の撮像により得られた撮像画像を入力する（Ｓ８：撮像工程）。
【００５５】
次に、ＣＰＵ３０１は、入力した撮像画像をピラミッド段数分、縮小する（Ｓ９，Ｓ１０）。画像の縮小方法は、図３のステップＳ３，Ｓ４と同様である。この撮像画像の縮小により、段階的に縮小された複数の画像が生成される。
【００５６】
次に、ＣＰＵ３０１は、ステップＳ９，Ｓ１０で生成した全ての画像に対して、エッジ抽出処理を行う（Ｓ１１，Ｓ１２）。エッジ抽出方法は、モデルピラミッド生成工程時のステップＳ５と同様である。ＣＰＵ３０１は、以上のステップＳ８〜Ｓ１２により、段階的に縮小された複数のエッジ特徴画像、つまり縮小率の異なる複数の被探索画像からなる被探索ピラミッドを生成する（被探索ピラミッド生成工程、被探索ピラミッド生成処理）。
【００５７】
即ちＣＰＵ３０１は、検出対象の物体を撮像した撮像画像からエッジを抽出したエッジ画像である最下段の被探索画像と、最下段の被探索画像を縮小した途中段及び最上段の被探索画像とからなる被探索ピラミッドを生成する。なお、途中段の被探索画像とは、最下段の被探索画像の縮小率と最上段の被探索画像の縮小率との間の縮小率の被探索画像のことである。
【００５８】
なお、被探索ピラミッドを生成するに際し、撮像画像に対して縮小処理を施してから各画像にエッジ抽出処理を施して複数の被探索画像を生成する場合について説明したが、これに限定するものではない。例えば、撮像画像に対してエッジ抽出処理を施した被探索画像に対して縮小処理を施し、複数の被探索画像を生成して、被探索ピラミッドを生成してもよい。
【００５９】
次に、ＣＰＵ３０１は、モデルピラミッド及び被探索ピラミッドを用いて、同解像度の階層においてモデル画像を被探索画像の中から、類似度（一致度ともいう）の判定により探索するパターンマッチング処理を行う（Ｓ１３）。ＣＰＵ３０１は、このパターンマッチング処理を被探索ピラミッドの全ての段（被探索画像）に対して行う（Ｓ１４）。
【００６０】
具体的に説明すると、最初は、最も縮小率の高い画像同士、即ち最上段の画像同士でパターンマッチングを行い、完了すれば次の縮小率の画像同士、即ち１つ下の階層の画像同士でパターンマッチングを行う。最後に、縮小を行っていない画像同士、即ち最下段の画像同士のパターンマッチングが完了したら終了となる。このように、パターンマッチング処理は、解像度の低い階層（縮小率の高い階層）から解像度の高い階層（縮小率の低い階層）に向かって順に行う。
【００６１】
ＣＰＵ３０１は、ステップＳ１３，Ｓ１４による最下段のモデル画像と被探索画像とのパターンマッチング処理により抽出された候補点のうち、類似度が最も高い候補点を検出対象の物体の位置に決定する（Ｓ１５：決定工程）。なお、最終的に候補点が１つであったときは、その候補点を検出対象の物体の位置に決定する。
【００６２】
ＣＰＵ３０１は、ステップＳ１５の画像処理結果をロボット制御装置４００に出力する。ロボット制御装置４００は、その画像処理結果に基づき、ロボット２００を制御して、検出対象である物体、即ちワークＷ１をロボット２００に把持させ、被組み付け部材であるワークＷ２に組付ける組付け工程を実行する。これにより、組立部品Ｗが製造される。
【００６３】
次に、ステップＳ１３のパターンマッチング処理について詳細に説明する。図９及び図１０は、第１実施形態に係る画像処理装置が実行する画像処理方法におけるパターンマッチング処理を示すフローチャートである。なお、図９は、ピラミッド最上段でのパターンマッチング処理を、図１０は、ピラミッド途中段から最下段までのパターンマッチング処理を示している。図１１は、パターンマッチング処理を説明するための図である。
【００６４】
ＣＰＵ３０１は、図１１に示すように、モデルピラミッドの最上段のモデル画像ＩＴ４を、被探索ピラミッドの最上段の被探索画像ＩＳ４内でピクセル単位でＸ，Ｙ軸方向に走査し、画像ＩＳ４から画像ＩＴ４と同じ大きさの画像ＩＩを抽出する。本実施形態では、モデル画像ＩＴ４における左上の点を代表点とし、被探索画像ＩＳ４中、代表点の位置をモデル画像ＩＴ４の走査位置とする。
【００６５】
ＣＰＵ３０１は、画像ＩＩとモデル画像ＩＴ４との類似度を求める、スコア計算を行う（Ｓ１６）。次に、ＣＰＵ３０１は、スコア計算の結果、スコア（類似度）が、予め設定された閾値Ｔ以上であるか否かを判断する（Ｓ１７）。閾値Ｔは固定値であり、予めＨＤＤ３０４等の記憶装置に記憶された値を用いる。類似度は正規化されており、１が最も類似している値であり、０が最も類似していない値である。つまり、類似度の数値が高いほど画像同士が類似しているということになる。
【００６６】
ＣＰＵ３０１は、スコア（類似度）が閾値Ｔ以上であると判断した場合（Ｓ１７：Ｙｅｓ）、画像ＩＩを抽出した走査位置（ｉ，ｊ）を候補点とする（Ｓ１８）。
【００６７】
ＣＰＵ３０１は、この候補点を、ＨＤＤ３０４や外部記憶装置８００等の記憶装置に記憶させる。なお、ＣＰＵ３０１は、類似度が閾値Ｔを下回ると判断した場合（Ｓ１７：Ｎｏ）、候補点無しとして、そのまま次のステップＳ１９の処理に移行する。
【００６８】
ＣＰＵ３０１は、全ての走査位置のスコア計算が完了したか否かを判断する（Ｓ１９）。ＣＰＵ３０１は、全て走査位置でのスコア計算が完了していなければ（Ｓ１９：Ｎｏ）、次の走査位置にモデル画像ＩＴ４を走査（移動）させ（Ｓ２０）、当該走査位置で画像ＩＩを切り出し、スコア計算を行うステップＳ１６に戻る。そして、画像ＩＳ４内の全ての走査位置でのスコア計算が完了したら（Ｓ１９：Ｙｅｓ）、ピラミッド最上段での処理を終了する。
【００６９】
以上、本実施形態では、ＣＰＵ３０１は、ステップＳ１６〜Ｓ２０により、最上段の被探索画像ＩＳ４に対し最上段のモデル画像ＩＴ４を走査し、閾値以上のスコア（類似度）となる候補点を抽出する（第１抽出工程、第１抽出処理）。つまり、被探索画像全体に対しモデル画像を走査して候補点を抽出する第１抽出処理は、最下段の被探索画像ＩＳ１よりも上段の被探索画像ＩＳ２〜ＩＳ４のうち、最上段の被探索画像ＩＳ４に対して行う。この第１抽出処理では、類似度の計算途中に計算の打ち切りは行わない。
【００７０】
次にピラミッド途中段から最下段までのパターンマッチング処理について、図１０を用いて説明する。本実施形態では、最上段の被探索画像ＩＳ４よりも下段の被探索画像ＩＳ１〜ＩＳ３に対しては、それぞれ同じパターンマッチング処理を行う。
【００７１】
図１２は、パターンマッチング処理を説明するための被探索ピラミッドを示す模式図である。被探索画像ＩＳ４からは、複数の候補点Ｐ４１，Ｐ４２が抽出されているものとして説明する。
【００７２】
ここで、既に候補点を抽出した被探索画像ＩＳ４に対して下段の被探索画像ＩＳ１〜ＩＳ３では、候補点が未抽出である。したがって、被探索画像ＩＳ４に対して１つ下段の被探索画像ＩＳ３から候補点の抽出を行う。
【００７３】
よって、まず、ＣＰＵ３０１は、被探索画像ＩＳ３において、該被探索画像ＩＳ３に対して１つ上段の被探索画像ＩＳ４から抽出した候補点Ｐ４１に対応した位置の点Ｑ３１を含む領域Ｒ３１を設定する（Ｓ２１：設定工程、設定処理）。つまり、ピラミッドを１段下げると候補点Ｐ４１の位置（ｉ，ｊ）に対応する点Ｑ３１は座標を２倍した位置（２×ｉ，２×ｊ）となる。ＣＰＵ３０１は、被探索画像ＩＳ３において、この対応点Ｑ３１（２×ｉ，２×ｊ）を中心とした周辺５×５画素の領域Ｒ３１を設定する。このように設定する領域は、５×５画素に限らず、例えば２×２画素から１０×１０画素の範囲で変更可能である。
【００７４】
次に、ＣＰＵ３０１は、ステップＳ２１で設定した領域内、つまり領域Ｒ３１で限定して用いる領域限定閾値ＴＣの初期値を設定する（Ｓ２２：設定工程、設定処理）。本実施形態では、領域限定閾値ＴＣの初期値を閾値Ｔと同じ値に設定する。
【００７５】
次に、ＣＰＵ３０１は、ステップＳ２１にて設定した領域Ｒ３１内でモデル画像ＩＴ３（代表点）を走査して、領域限定閾値ＴＣ以上の類似度となる候補点を抽出する（Ｓ２３〜Ｓ２８：第２抽出工程、第２抽出処理）。
【００７６】
具体的に説明すると、まずＣＰＵ３０１は、領域Ｒ３１内の１つの点にモデル画像ＩＴ３の代表点を走査させたときの画像を被探索画像ＩＳ３から切り出す。そして、切り出した画像とモデル画像ＩＴ３とのスコア計算（類似度の計算）を行う（Ｓ２３）。スコア計算方法は、ステップＳ１６と同様である。
【００７７】
ＣＰＵ３０１は、ステップＳ２３で算出したスコア（類似度）が領域限定閾値ＴＣ以上であるか否かを判断する（Ｓ２４）。
【００７８】
ＣＰＵ３０１は、スコアが領域限定閾値ＴＣ以上であれば（Ｓ２４：Ｙｅｓ）、その走査位置を候補点とする（Ｓ２５）。その際、ＣＰＵ３０１は、この候補点を、ＨＤＤ３０４や外部記憶装置８００等の記憶装置に記憶させる。このとき、領域Ｒ３１に対する候補点のデータが記憶装置に既に記憶されている場合には、新たな候補点のデータで上書きする。つまり、１つの領域Ｒ３１内での走査（探索）で、領域限定閾値ＴＣよりも大きいスコアが複数回算出される場合は、その度に、記憶した候補点を上書きしていく。
【００７９】
計算したスコアが領域限定閾値ＴＣと同じ値となった場合であって、領域Ｒ３１に対する候補点のデータが記憶装置に既に記憶されている場合、既に記憶されている候補点のデータを消さずに新たに候補点のデータを追加記憶させてもよい。つまり、１つの領域Ｒ３１に対して同じスコアの候補点が複数抽出されることになる。
【００８０】
ＣＰＵ３０１は、算出したスコア（類似度）により領域限定閾値ＴＣを更新する（Ｓ２６）。これにより、領域限定閾値ＴＣは、更新の度に値が大きくなっていくことになる。即ち、領域限定閾値ＴＣは初期値よりも高い値に更新されていく。なお、ステップＳ２４の判断でスコアが領域限定閾値ＴＣと同じ値のときは、更新しなくてもよい。いずれにしても、ＣＰＵ３０１は、計算が完了した類似度が現時点での領域限定閾値ＴＣよりも高い値であれば、次の走査位置において用いる領域限定閾値ＴＣを、現時点の領域限定閾値ＴＣよりも高い値となった類似度で更新する。
【００８１】
ＣＰＵ３０１は、算出したスコアが領域限定閾値ＴＣを下回る場合（Ｓ２４：Ｎｏ）、候補点無しとして次のステップＳ２７の処理に移行する。
【００８２】
次に、ＣＰＵ３０１は、領域Ｒ３１内の走査（探索）が完了したか否かを判断する（Ｓ２７）。
【００８３】
ＣＰＵ３０１は、領域Ｒ３１内の走査が完了していないと判断した場合（Ｓ２７：Ｎｏ）、領域Ｒ３１内の次の走査位置へモデル画像ＩＴ３を移動させて（Ｓ２８）、ステップＳ２３の処理に戻る。
【００８４】
ＣＰＵ３０１は、領域Ｒ３１内の走査が完了したと判断した場合（Ｓ２７：Ｙｅｓ）、全ての候補点について処理が完了したか否かを判断する（Ｓ２９）。ＣＰＵ３０１は、処理が完了していないと判断した場合（Ｓ２９：Ｎｏ）、次の候補点、例えば候補点Ｐ４２を選択し（Ｓ３０）、ステップＳ２１の処理に戻る。
【００８５】
即ち、ＣＰＵ３０１は、次の候補点Ｐ４２についても同様に、被探索画像ＩＳ３において候補点Ｐ４２に対応する位置の点Ｑ３２を含む領域Ｒ３２を設定し（Ｓ２１）、領域Ｒ３２に限定して用いる領域限定閾値ＴＣを設定する（Ｓ２２）。このときの領域限定閾値ＴＣの初期値は、閾値Ｔと同じ値に設定（初期化）される。そして、ＣＰＵ３０１は、以下のステップＳ２３〜Ｓ２８の処理を行う。ＣＰＵ３０１は、ステップＳ２７において、領域Ｒ３２内の走査が完了したと判断した場合、全ての候補点について処理が完了したか否かを判断する（Ｓ２９）。ＣＰＵ３０１は、処理が完了したと判断した場合（Ｓ２９：Ｙｅｓ）、この段、即ち被探索画像ＩＳ３でのパターンマッチング処理を終了する。
【００８６】
このようにＣＰＵ３０１は、被探索画像ＩＳ３において、被探索画像ＩＳ４で抽出した候補点Ｐ４１，Ｐ４２に対応した位置の点毎、即ち点Ｑ３１，Ｑ３２毎に、領域Ｒ３１，Ｒ３２とその領域に限定して用いる領域限定閾値ＴＣとを設定する。そして、ＣＰＵ３０１は、それぞれの領域Ｒ３１，Ｒ３２に対してモデル画像ＩＴ３を走査して、領域限定閾値ＴＣ以上の類似度となる候補点Ｐ３１，Ｐ３２を抽出する。
【００８７】
なお、例えば領域Ｒ３１と領域Ｒ３２とが重なる場合であっても、重なる部分は、各領域Ｒ３１，Ｒ３２における走査で重複して類似度の計算を行うことになる。
【００８８】
残りの途中段である被探索画像ＩＳ２でのパターンマッチング処理及び最下段である被探索画像ＩＳ１でのパターンマッチング処理も同様に行う。
【００８９】
即ち、ＣＰＵ３０１は、被探索画像ＩＳ２において、１つ上段の被探索画像ＩＳ３で抽出した候補点Ｐ３１，Ｐ３２に対応した位置の点Ｑ２１，Ｑ２２毎に領域Ｒ２１，Ｒ２２と領域限定閾値ＴＣとを設定する。そして、ＣＰＵ３０１は、各領域Ｒ２１，Ｒ２２内でモデル画像ＩＴ２を走査して、領域限定閾値ＴＣ以上の類似度となる候補点Ｐ２１，Ｐ２２を抽出する。同様に、ＣＰＵ３０１は、被探索画像ＩＳ１において、１つ上段の被探索画像ＩＳ２で抽出した候補点Ｐ２１，Ｐ２２に対応した位置の点Ｑ１１，Ｑ１２毎に領域Ｒ１１，Ｒ１２と領域限定閾値ＴＣとを設定する。そして、ＣＰＵ３０１は、各領域Ｒ１１，Ｒ１２内でモデル画像ＩＴ１を走査して、領域限定閾値ＴＣ以上の類似度となる候補点Ｐ１１，Ｐ１２を抽出する。
【００９０】
以上、図８に示すステップＳ１３〜Ｓ１４の処理として、ピラミッドの最上段では図９のステップＳ１６〜Ｓ２０の処理、ピラミッドの途中段から最下段までは図１０のステップＳ２１〜Ｓ３０の処理を行う。
【００９１】
そして、ＣＰＵ３０１は、ステップＳ１５において、最下段で抽出した候補点Ｐ１１，Ｐ１２のうち、スコア値が最も高い候補点の位置を、被探索画像ＩＳ１内の物体の検出位置とする。
【００９２】
次に、図９のステップＳ１６及び図１０のステップＳ２３におけるスコア計算（類似度の計算）の処理について詳細に説明する。
【００９３】
図１３は、第１実施形態に係る画像処理装置が実行する画像処理方法におけるスコア計算処理（類似度計算処理）を示すフローチャートである。ＣＰＵ３０１は、まず、モデル画像中の特徴画像のエッジ点と、被探索画像におけるモデル画像中の特徴画像の点に対応する位置の点との１点の局所的なスコア（局所類似度）を、特徴画像の全ての点についてそれぞれ計算する。そして、ＣＰＵ３０１は、全ての局所類似度の総和（スコア総和）Ｓを算出する（Ｓ４０）。つまり、モデル画像中の特徴画像の画素と、被探索画像から抽出した抽出画像の画素とを、座標が同じ点同士で、局所スコア（局所類似度）を計算し、すべての局所スコアを総和した値を算出する。
【００９４】
そして、ＣＰＵ３０１は、ステップＳ４０にて計算したスコア総和を正規化することにより最終的なスコア（類似度）を計算する（Ｓ４７）。例えば、モデル画像中の特徴画像のエッジ点数（画素数）をｎ個とした場合、局所スコアの合計をｎで除算することにより正規化する。
【００９５】
以下、ステップＳ４０，Ｓ４７の動作を概念的に説明する。パターンマッチングで類似度を求める下記の式（３）に示す計算式を用いる。
【００９６】
【数３】
0006648925.tif 000004
【００９７】
モデル画像に含まれる特徴画像中の１つのエッジ点と、被探索画像中、特徴画像の１つのエッジ点と同じ座標の点のエッジ方向差分の余弦（コサイン値）を求めることにより、エッジ点１点の局所スコアが算出される。この処理を、モデル画像に含まれる特徴画像中の全てのエッジ点で行うことにより、全エッジ点の局所スコアの総和を算出する。この局所スコアの総和をモデル画像のエッジ点数ｎで割り算することにより、最終的なスコア（類似度）として０から１の範囲の値に正規化する。類似度１が最も類似性が高いことを表し、類似度０が最も類似性が低いことを表す。上式（３）の画像内の位置（ｉ，ｊ）とは、例えば図１１に示す被探索画像ＩＳ４からモデル画像ＩＴ４に対応する大きさの画像を抽出した被探索画像ＩＳ内の位置のことを表し、候補点を表す。
【００９８】
以下、ステップＳ４０におけるスコア総和の演算方法について具体的に説明する。まず、ＣＰＵ３０１は、スコア総和値Ｓを０に初期化する（Ｓ４１）。モデル画像中の特徴画像における各エッジ点に、１からｎの通し番号を付与しておき、通し番号１から通し番号ｎまで局所スコアを計算（積算）すべく、変数ｋを１に設定する（Ｓ４２）。
【００９９】
次に、ＣＰＵ３０１は、特徴画像のエッジ点と、被探索画像における特徴画像のエッジ点に対応する位置の点との局所スコアを計算し、スコア総和Ｓに足し込む（Ｓ４３）。
【０１００】
ここで、特徴画像の通し番号ｋのエッジ点（画素）におけるエッジ方向をθＴｋとする。また、被探索画像中、特徴画像のエッジ点に対応する位置、つまり抽出画像中、通し番号ｋのエッジ点と同じ座標位置の点（画素）のエッジ方向をθＩｋとする。
【０１０１】
局所スコアは、エッジ方向θＴｋとエッジ方向θＩｋとのなす角の角度｜θＩｋ−θＴｋ｜の余弦を計算することにより求める。即ち、ＣＰＵ３０１は、ステップＳ４２において、以下の式（４）を用いて、局所スコアｆｋを計算し、ｆｋをスコア総和Ｓに足し込んでいく。
【０１０２】
ｆｋ＝ｃｏｓ｜θＩｋ−θＴｋ｜  （４）
【０１０３】
次に、ＣＰＵ３０１は、以下の式（５）を用いて、スコア計算が打ち切り可能か否かを判定する（Ｓ４４）。即ち、ＣＰＵ３０１は、類似度の計算途中で、類似度の計算途中結果に基づき、類似度が領域限定閾値ＴＣよりも低い値となるか否かを予測する。
【０１０４】
Ｓ＜ｎ×（ＴＣ−１）＋ｋ  （５）
【０１０５】
ＣＰＵ３０１は、式（５）が成り立てば（Ｓ４４：Ｙｅｓ）、即ち類似度が領域限定閾値ＴＣよりも低い値となると予測した場合には、類似度の計算（スコア計算）を途中で打ち切り、終了する。
【０１０６】
ＣＰＵ３０１は、式（５）が成り立たなければ（Ｓ４４：Ｎｏ）、即ち類似度が領域限定閾値ＴＣよりも低い値となると予測できなかった場合には、モデル画像中の特徴画像における全てのエッジ点でスコア総和を計算したか判定する（Ｓ４５）。ＣＰＵ３０１は、全てのエッジ点での計算が完了していなければ（Ｓ４５：Ｎｏ）、エッジ点の通し番号ｋを一つ進めて（Ｓ４６）、ステップＳ４３〜Ｓ４５の処理を行う。即ち、ＣＰＵ３０１は、類似度が領域限定閾値ＴＣよりも低い値となると予測できなかった場合には、類似度の計算を続行する。
【０１０７】
ＣＰＵ３０１は、全てのエッジ点での計算が完了すれば（Ｓ４５：Ｙｅｓ）、スコア総和をモデル画像中の特徴画像における全エッジ点数で正規化することにより、ある走査位置での最終的なスコア（類似度）を算出する（Ｓ４７）。なお、ＣＰＵ３０１は、計算を途中で打ち切った場合（Ｓ４４：Ｙｅｓ）は、スコア（類似度）を閾値Ｔよりも低い値、例えば０とする。これにより、類似度の計算を途中で打ち切った走査位置については、特徴点として抽出されないようになる。
【０１０８】
式（５）は、エッジ点の通し番号ｋまで計算した時点で、残りのエッジ点数（ｎ−ｋ）個の局所スコアｆｋが全て１．０（最大の局所スコア）だったとしても、最終的なスコアが閾値ＴＣを超えないと判断できた場合に計算を打ち切るための式である。
【０１０９】
以上、第１実施形態によれば、ピラミッドの途中段及び最下段においてパターンマッチング処理を行う際に、領域毎にスコア計算の打ち切りに用いる領域限定閾値ＴＣの更新を行う。したがって、類似度の計算の打ち切り、及び計算を打ち切るか否かを判断する領域限定閾値の更新により、パターンマッチングに要する処理時間を短縮することができる。
【０１１０】
また、他の領域で算出された類似度の影響を受けることなく、各領域で独立した領域限定閾値ＴＣでスコア計算の打ち切りの判断を行うことができるので、物体の検出の失敗を防ぐことができる。
【０１１１】
なお、第１実施形態では、最上段の被探索画像ＩＳ４を除く、全ての被探索画像ＩＳ１〜ＩＳ３に対して、類似度計算の打ち切り及び領域限定閾値の更新を行う場合について説明したが、これに限定するものではない。
【０１１２】
例えば、最下段の被探索画像ＩＳ１に対してのみ、類似度計算の打ち切り及び領域限定閾値ＴＣの更新を行ってもよいし、途中段の被探索画像ＩＳ２又は被探索画像ＩＳ３についてのみ、類似度計算の打ち切り及び領域限定閾値ＴＣの更新を行ってもよい。この場合、類似度計算の打ち切り及び領域限定閾値ＴＣの更新を行わない段（階層）の被探索画像に対しては、閾値Ｔで類似度の判定を行って候補点を抽出すればよい。また、この類似度計算の打ち切り及び領域限定閾値ＴＣの更新を行わない段（階層）の被探索画像に対しては、上段の候補点に対応する点を含む領域を設定し、その領域内だけモデル画像を走査するようにしてもよい。もちろん、被探索ピラミッドにおいて、被探索画像ＩＳ４以外の全ての被探索画像ＩＳ１〜ＩＳ３に対して類似度計算の打ち切り及び領域限定閾値の更新を行った方が、処理時間を効果的に短縮することができる。
【０１１３】
また、領域限定閾値ＴＣを更新する場合、つまり類似度が領域限定閾値ＴＣを超える場合には、その領域内の候補点のデータを更新する（データを上書きする）ようにしたが、これに限定するものではなく、先に登録した候補点のデータを残しておいてもよい。もちろん、候補点のデータを更新する方が、データ量が少なくて済み、処理時間を効果的に短縮することができるので好ましい。
【０１１４】
また、第１実施形態では類似度（一致度ともいう）を計算する場合について説明したが、相違度（不一致度ともいう）を計算する場合であってもよい。この場合、相違度の値が低いほど類似性が高くなる。
【０１１５】
したがって、閾値以上の類似度となる候補点を抽出することは、閾値以下の相違度となる候補点を抽出することと同じである。同様に、領域限定閾値以上の類似度となる候補点を抽出することは、領域限定閾値以下の相違度となる候補点を抽出することと同じである。また、類似度の計算を途中で打ち切るか否かは、類似度が領域限定閾値よりも低い値となるか否かを予測して行うが、これを相違度で表現すれば、相違度が領域限定閾値よりも高い値となるか否かで予測して行うことになる。同様に、次の走査位置において用いる領域限定閾値を、領域限定閾値よりも高い値となった類似度で更新することは、相違度で表現すれば、次の走査位置において用いる領域限定閾値を、領域限定閾値よりも低い値となった相違度で更新するということになる。
【０１１６】
このように、相違度（不一致度）で判定することは、類似度（一致度）で判定することと等価であり、相違度で表現されていても、（閾値の大小判定は反対になるが）類似度で判定していることと同じである。
【０１１７】
［第２実施形態］
次に、第２実施形態の画像処理方法について説明する。第２実施形態の生産装置の構成及び画像処理装置の構成は、第１実施形態と同様である。以下、画像処理装置３００によるパターンマッチング方法（画像処理方法）について説明する。画像処理装置３００のＣＰＵ３０１は、プログラム３２１をＨＤＤ３０４から読み出して実行することにより、以下に説明する画像処理方法の各工程を実行する。まず、パターンマッチング処理を行うためのモデルピラミッド（画像モデル）の作成処理について説明する。
【０１１８】
第１実施形態では、撮像画像から切り出した画像を縮小してエッジ抽出を行うことでモデルピラミッドを作成する場合について説明したが、第２実施形態では、撮像画像から切り出した画像を縮小してモデルピラミッドを作成する。即ち、画像を縮小するだけで、エッジ抽出は行わない。
【０１１９】
図１４は、第２実施形態に係る画像処理装置が実行する画像処理方法におけるモデルピラミッド生成工程（画像モデルの作成処理）を示すフローチャートである。
【０１２０】
まず、オペレータ（作業者）は、パターンマッチング用のモデル画像を用意するために理想状態の照明条件及び位置に、参照物（モデル物体）をセットする。ＣＰＵ３０１は、カメラ５００に参照物の撮像を行わせ、参照物が写り込んだ参照画像である画像データをカメラ５００から取得する（Ｓ５１）。なお、参照画像は、予めＨＤＤ３０４や外部記憶装置８００等の記憶装置に格納されていてもよく、その場合は、ＣＰＵ３０１は、ＨＤＤ３０４や外部記憶装置８００等の記憶装置から、参照画像のデータを取得することとなる。
【０１２１】
ＣＰＵ３０１は、参照画像を表示装置７００に表示させ、オペレータにより指定された、参照物が写り込んだ部分を包含する矩形領域の画像を切り出し、縮小を行っていないモデル画像に設定する（Ｓ５２）。指定の方法は、例えばマウス等の入力装置６００を利用し、表示装置７００に表示された参照画像内の参照物が写り込んだ画像を包含する領域の左上と右下の２点をクリックすることにより行う。ＣＰＵ３０１は、ステップＳ５２では、クリックされた２点の位置（矩形領域の左上、右下の角の点）を指定し、参照画像から矩形領域の画像のみを切り出す。
【０１２２】
次に、ＣＰＵ３０１は、ステップＳ５２で切り出した矩形領域の画像（モデル画像）を、オペレータが指定したピラミッド段数分、画像縮小する（Ｓ５３，Ｓ５４）。画像縮小の方法は、第１実施形態で説明した図３のステップＳ３と同様である。
【０１２３】
即ち、ＣＰＵ３０１は、ステップＳ５３において、モデル画像を縮小し、ステップＳ５４において、指定ピラミッド段数分のモデル画像を作成したか否かを判断する。
【０１２４】
ＣＰＵ３０１は、ステップＳ５３での縮小処理を所定の回数行っていなければ（Ｓ５４：Ｎｏ）ステップＳ５３に戻り、前回縮小したモデル画像に対して、同様の縮小方法により再縮小を行う。ＣＰＵ３０１は、所定回数の画像縮小を終えていれば（Ｓ５４：Ｙｅｓ）、画像縮小の処理は終了する。
【０１２５】
以上のステップＳ５１〜Ｓ５４により、ＣＰＵ３０１は、異なる縮小率の複数のモデル画像を、下段から上段に向かうに連れて縮小率が高くなるように階層化したモデルピラミッドを生成する（モデルピラミッド生成工程、モデルピラミッド生成処理）。最下段のモデル画像は、縮小率が１、つまり縮小していない画像ということになる。生成されたモデルピラミッドは、ＨＤＤ３０４や外部記憶装置８００等の記憶装置に記憶される。
【０１２６】
次にステップＳ５１〜Ｓ５４で作成したモデルピラミッドを使用し、実際に物体の検出を行う探索処理のフローについて説明する。図１５は、第２実施形態に係る画像処理装置が実行する画像処理方法の探索処理を示すフローチャートである。
【０１２７】
まず、ＣＰＵ３０１は、モデルピラミッド（画像モデル）のデータが格納されているＨＤＤ３０４や外部記憶装置８００等の記憶装置から、モデルピラミッド（画像モデル）のデータを入力する（Ｓ６１）。
【０１２８】
次に、ＣＰＵ３０１は、縮小率の異なる（解像度の異なる）複数の被探索画像を有し、これら被探索画像を下段から上段に向かうに連れて縮小率が高くなるように（解像度が低くなるように）階層化した被探索ピラミッドを生成する。本実施形態では、モデルピラミッドと同じ縮小率で同じ段数となるように被探索ピラミッドを生成する。
【０１２９】
以下、具体的に説明すると、まず、ＣＰＵ３０１は、検出対象となる物体をカメラ５００により撮像させ、カメラ５００の撮像により得られた撮像画像を入力する（Ｓ６２：撮像工程）。
【０１３０】
次に、ＣＰＵ３０１は、入力した撮像画像を縮小していない被探索画像とし、この被探索画像をピラミッド段数分、縮小する（Ｓ６３，Ｓ６４）。画像の縮小方法は、図３のステップＳ３，Ｓ４と同様である。ＣＰＵ３０１は、以上のステップＳ６２〜Ｓ６４により、撮像画像（縮小していない被探索画像）と段階的に縮小された複数の画像（被探索画像）とで構成されている被探索ピラミッドを生成する（被探索ピラミッド生成工程、被探索ピラミッド生成処理）。
【０１３１】
次に、ＣＰＵ３０１は、モデルピラミッド及び被探索ピラミッドを用いて、同解像度の階層においてモデル画像を被探索画像の中から、相違度（不一致度ともいう）の判定により探索するパターンマッチング処理を行う（Ｓ６５）。ＣＰＵ３０１は、このパターンマッチング処理を被探索ピラミッドの全ての段（被探索画像）に対して行う（Ｓ６６）。
【０１３２】
具体的に説明すると、最初は、最も縮小率の高い画像同士、即ち最上段の画像同士でパターンマッチングを行い、完了すれば次の縮小率の画像同士、即ち１つ下の階層の画像同士でパターンマッチングを行う。最後に、縮小を行っていない画像同士、即ち最下段の画像同士のパターンマッチングが完了したら終了となる。このように、パターンマッチング処理は、解像度の低い階層（縮小率の高い階層）から解像度の高い階層（縮小率の低い階層）に向かって順に行う。
【０１３３】
ＣＰＵ３０１は、ステップＳ６５，Ｓ６６による最下段のモデル画像と被探索画像とのパターンマッチング処理により抽出された候補点のうち、相違度が最も低い候補点を検出対象の物体の位置に決定する（Ｓ６７：決定工程）。なお、最終的に候補点が１つであったときは、その候補点を検出対象の物体の位置に決定する。
【０１３４】
ＣＰＵ３０１は、ステップＳ６７の画像処理結果をロボット制御装置４００に出力する。ロボット制御装置４００は、その画像処理結果に基づき、ロボット２００を制御して、検出対象である物体、即ちワークＷ１をロボット２００に把持させ、被組み付け部材であるワークＷ２に組付ける組付け工程を実行する。これにより、組立部品Ｗが製造される。
【０１３５】
次に、ステップＳ６５のパターンマッチング処理について詳細に説明する。図１６及び図１７は、第２実施形態に係る画像処理装置が実行する画像処理方法におけるパターンマッチング処理を示すフローチャートである。なお、図１６は、ピラミッド最上段でのパターンマッチング処理を、図１７は、ピラミッド途中段から最下段までのパターンマッチング処理を示している。
【０１３６】
ＣＰＵ３０１は、モデルピラミッドの最上段のモデル画像を、被探索ピラミッドの最上段の被探索画像内でピクセル単位でＸ，Ｙ軸方向に走査し、被探索画像からモデル画像と同じ大きさの画像（抽出画像）を抽出する。
【０１３７】
ＣＰＵ３０１は、抽出画像とモデル画像との相違度を求める、スコア計算を行う（Ｓ７１）。次に、ＣＰＵ３０１は、スコア計算の結果、スコア（相違度）が、予め設定された閾値Ｔ以下であるか否かを判断する（Ｓ７２）。閾値Ｔは固定値であり、予めＨＤＤ３０４等の記憶装置に記憶された値を用いる。スコア（相違度）は、０がモデル画像と探索画像が一致していることを表し、値が大きくなるほど一致していないことを表す。つまり、相違度の数値が高いほど画像同士が相違している（類似していない）ということになる。
【０１３８】
ＣＰＵ３０１は、スコア（相違度）が閾値以下であると判断した場合（Ｓ７２：Ｙｅｓ）、抽出画像を抽出した走査位置を候補点とする（Ｓ７３）。
【０１３９】
ＣＰＵ３０１は、この候補点を、ＨＤＤ３０４や外部記憶装置８００等の記憶装置に記憶させる。なお、ＣＰＵ３０１は、相違度が閾値を上回ると判断した場合（Ｓ７２：Ｎｏ）、候補点無しとして、そのまま次のステップＳ７４の処理に移行する。
【０１４０】
ＣＰＵ３０１は、全ての走査位置のスコア計算が完了したか否かを判断する（Ｓ７４）。ＣＰＵ３０１は、全て走査位置でのスコア計算が完了していなければ（Ｓ７４：Ｎｏ）、次の走査位置にモデル画像を走査（移動）させ（Ｓ７５）、当該走査位置で画像を切り出し、スコア計算を行うステップＳ７１に戻る。そして、被探索画像内の全ての走査位置でのスコア計算が完了したら（Ｓ７４：Ｙｅｓ）、ピラミッド最上段での処理を終了する。
【０１４１】
以上、本実施形態では、ＣＰＵ３０１は、ステップＳ７１〜Ｓ７５により、最上段の被探索画像に対し最上段のモデル画像を走査し、閾値以下のスコア（相違度）となる候補点を抽出する（第１抽出工程、第１抽出処理）。つまり、被探索画像全体に対しモデル画像を走査して候補点を抽出する第１抽出処理は、最下段の被探索画像よりも上段の被探索画像のうち、最上段の被探索画像に対して行う。この第１抽出処理では、類似度の計算途中に計算の打ち切りは行わない。
【０１４２】
次にピラミッド途中段から最下段までのパターンマッチング処理について、図１７を用いて説明する。本実施形態では、最上段の被探索画像よりも下段（途中段及び最下段）の被探索画像に対しては、それぞれ同じパターンマッチング処理を行う。
【０１４３】
ここで、第１実施形態と同様、図１２を参照しながらパターンマッチング処理について説明する。被探索画像ＩＳ４からは、複数の候補点Ｐ４１，Ｐ４２が抽出されているものとして説明する。
【０１４４】
ここで、既に候補点を抽出した被探索画像ＩＳ４に対して下段の被探索画像ＩＳ１〜ＩＳ３では、候補点が未抽出である。したがって、被探索画像ＩＳ４に対して１つ下段の被探索画像ＩＳ３から候補点の抽出を行う。
【０１４５】
よって、まず、ＣＰＵ３０１は、被探索画像ＩＳ３において、該被探索画像ＩＳ３に対して１つ上段の被探索画像ＩＳ４から抽出した候補点Ｐ４１に対応した位置の点Ｑ３１を含む領域Ｒ３１を設定する（Ｓ８１：設定工程、設定処理）。つまり、ピラミッドを１段下げると候補点Ｐ４１の位置（ｉ，ｊ）に対応する点Ｑ３１は座標を２倍した位置（２×ｉ，２×ｊ）となる。ＣＰＵ３０１は、被探索画像ＩＳ３において、この対応点Ｑ３１（２×ｉ，２×ｊ）を中心とした周辺５×５画素の領域Ｒ３１を設定する。このように設定する領域は、５×５画素に限らず、例えば２×２画素から１０×１０画素の範囲で変更可能である。
【０１４６】
次に、ＣＰＵ３０１は、ステップＳ８１で設定した領域内、つまり領域Ｒ３１で限定して用いる領域限定閾値ＴＣの初期値を設定する（Ｓ８２：設定工程、設定処理）。本実施形態では、領域限定閾値ＴＣの初期値を閾値Ｔと同じ値に設定する。
【０１４７】
次に、ＣＰＵ３０１は、ステップＳ８１にて設定した領域Ｒ３１内でモデル画像ＩＴ３（代表点）を走査して、領域限定閾値ＴＣ以下の相違度となる候補点を抽出する（Ｓ８３〜Ｓ８８：第２抽出工程、第２抽出処理）。
【０１４８】
具体的に説明すると、まずＣＰＵ３０１は、領域Ｒ３１内の１つの点にモデル画像ＩＴ３の代表点を走査させたときの画像を被探索画像ＩＳ３から切り出す。そして、切り出した画像とモデル画像ＩＴ３とのスコア計算（相違度の計算）を行う（Ｓ８３）。スコア計算方法は、ステップＳ７１と同様である。
【０１４９】
ＣＰＵ３０１は、ステップＳ８３で算出したスコア（相違度）が領域限定閾値ＴＣ以下であるか否かを判断する（Ｓ８４）。
【０１５０】
ＣＰＵ３０１は、スコアが領域限定閾値ＴＣ以下であれば（Ｓ８４：Ｙｅｓ）、その走査位置を候補点とする（Ｓ８５）。その際、ＣＰＵ３０１は、この候補点を、ＨＤＤ３０４や外部記憶装置８００等の記憶装置に記憶させる。このとき、領域Ｒ３１に対する候補点のデータが記憶装置に既に記憶されている場合には、新たな候補点のデータで上書きする。つまり、１つの領域Ｒ３１内での走査（探索）で、領域限定閾値ＴＣよりも小さいスコアが複数回算出される場合は、その度に、記憶した候補点を上書きしていく。
【０１５１】
なお、計算したスコアが領域限定閾値ＴＣと同じ値となった場合であって、領域Ｒ３１に対する候補点のデータが記憶装置に既に記憶されている場合、既に記憶されている候補点のデータを消さずに新たに候補点のデータを追加記憶させてもよい。つまり、１つの領域Ｒ３１に対して同じスコアの候補点が複数抽出されることになる。
【０１５２】
ＣＰＵ３０１は、算出したスコア（相違度）により領域限定閾値ＴＣを更新する（Ｓ８６）。これにより、領域限定閾値ＴＣは、更新の度に値が小さくなっていくことになる。即ち、領域限定閾値ＴＣは初期値よりも低い値に更新されていく。なお、ステップＳ８４の判断でスコアが領域限定閾値ＴＣと同じ値のときは、更新しなくてもよい。いずれにしても、ＣＰＵ３０１は、計算が完了した相違度が現時点での領域限定閾値ＴＣよりも低い値であれば、次の走査位置において用いる領域限定閾値ＴＣを、現時点の領域限定閾値ＴＣよりも低い値となった相違度で更新する。
【０１５３】
ＣＰＵ３０１は、算出したスコアが領域限定閾値ＴＣを上回る場合（Ｓ８４：Ｎｏ）、候補点無しとして次のステップＳ８７の処理に移行する。
【０１５４】
次に、ＣＰＵ３０１は、領域Ｒ３１内の走査（探索）が完了したか否かを判断する（Ｓ８７）。
【０１５５】
ＣＰＵ３０１は、領域Ｒ３１内の走査が完了していないと判断した場合（Ｓ８７：Ｎｏ）、領域Ｒ３１内の次の走査位置へモデル画像を移動させて（Ｓ８８）、ステップＳ８３の処理に戻る。
【０１５６】
ＣＰＵ３０１は、領域Ｒ３１内の走査が完了したと判断した場合（Ｓ８７：Ｙｅｓ）、全ての候補点について処理が完了したか否かを判断する（Ｓ８９）。ＣＰＵ３０１は、処理が完了していないと判断した場合（Ｓ８９：Ｎｏ）、次の候補点、例えば候補点Ｐ４２を選択し（Ｓ９０）、ステップＳ８１の処理に戻る。
【０１５７】
即ち、ＣＰＵ３０１は、次の候補点Ｐ４２についても同様に、被探索画像ＩＳ３において候補点Ｐ４２に対応する位置の点Ｑ３２を含む領域Ｒ３２を設定し（Ｓ８１）、領域Ｒ３２に限定して用いる領域限定閾値ＴＣを設定する（Ｓ８２）。このときの領域限定閾値ＴＣの初期値は、閾値Ｔと同じ値に設定（初期化）される。そして、ＣＰＵ３０１は、以下のステップＳ８３〜Ｓ８８の処理を行う。ＣＰＵ３０１は、ステップＳ８７において、領域Ｒ３２内の走査が完了したと判断した場合、全ての候補点について処理が完了したか否かを判断する（Ｓ８９）。ＣＰＵ３０１は、処理が完了したと判断した場合（Ｓ８９：Ｙｅｓ）、この段、即ち被探索画像ＩＳ３でのパターンマッチング処理を終了する。
【０１５８】
このようにＣＰＵ３０１は、被探索画像ＩＳ３において、被探索画像ＩＳ４で抽出した候補点Ｐ４１，Ｐ４２に対応した位置の点毎、即ち点Ｑ３１，Ｑ３２毎に、領域Ｒ３１，Ｒ３２とその領域に限定して用いる領域限定閾値ＴＣとを設定する。そして、ＣＰＵ３０１は、それぞれの領域Ｒ３１，Ｒ３２に対してモデル画像を走査して、領域限定閾値ＴＣ以下の相違度となる候補点Ｐ３１，Ｐ３２を抽出する。
【０１５９】
なお、例えば領域Ｒ３１と領域Ｒ３２とが重なる場合であっても、重なる部分は、各領域Ｒ３１，Ｒ３２における走査で重複して相違度の計算を行うことになる。
【０１６０】
残りの途中段である被探索画像ＩＳ２でのパターンマッチング処理及び最下段である被探索画像ＩＳ１でのパターンマッチング処理も同様に行う。
【０１６１】
即ち、ＣＰＵ３０１は、被探索画像ＩＳ２において、１つ上段の被探索画像ＩＳ３で抽出した候補点Ｐ３１，Ｐ３２に対応した位置の点Ｑ２１，Ｑ２２毎に領域Ｒ２１，Ｒ２２と領域限定閾値ＴＣとを設定する。そして、ＣＰＵ３０１は、各領域Ｒ２１，Ｒ２２内でモデル画像を走査して、領域限定閾値ＴＣ以下の相違度となる候補点Ｐ２１，Ｐ２２を抽出する。同様に、ＣＰＵ３０１は、被探索画像ＩＳ１において、１つ上段の被探索画像ＩＳ２で抽出した候補点Ｐ２１，Ｐ２２に対応した位置の点Ｑ１１，Ｑ１２毎に領域Ｒ１１，Ｒ１２と領域限定閾値ＴＣとを設定する。そして、ＣＰＵ３０１は、各領域Ｒ１１，Ｒ１２内でモデル画像を走査して、領域限定閾値ＴＣ以下の相違度となる候補点Ｐ１１，Ｐ１２を抽出する。
【０１６２】
以上、図１５に示すステップＳ６５〜Ｓ６６の処理として、ピラミッドの最上段では図１６のステップＳ７１〜Ｓ７５の処理、ピラミッドの途中段から最下段までは図１７のステップＳ８１〜Ｓ９０の処理を行う。
【０１６３】
そして、ＣＰＵ３０１は、ステップＳ６７において、最下段で抽出した候補点Ｐ１１，Ｐ１２のうち、スコア値（相違度）が最も低い候補点の位置を、被探索画像ＩＳ１内の物体の検出位置とする。
【０１６４】
次に、図１６のステップＳ７１及び図１７のステップＳ８１におけるスコア計算（相違度の計算）の処理について詳細に説明する。図１８は、第２実施形態に係る画像処理装置が実行する画像処理方法におけるスコア計算処理（相違度計算処理）を示すフローチャートである。
【０１６５】
ＣＰＵ３０１は、まず、被探索画像からモデル画像に対応する大きさの画像を抽出した抽出画像とモデル画像との輝度差分を求める。具体的には、ＣＰＵ３０１は、まずスコア（相違度Ｓ）の値を０に初期化する（Ｓ９１）。そして、被探索画像から抽出した抽出画像とモデル画像との対応する座標（ｘ，ｙ）の値を０に初期化する（Ｓ９２，Ｓ９３）。抽出画像及びモデル画像の画像幅、高さをそれぞれＷｉｄｔｈ、Ｈｅｉｇｈｔとした場合、対応する座標ｘ＝０、ｙ＝０の位置は、画像の左上であり、ｘ＝Ｗｉｄｔｈ−１、ｙ＝Ｈｅｉｇｈｔ−１は画像の右下である。
【０１６６】
ＣＰＵ３０１は、被探索画像から抽出した抽出画像の座標（ｘ，ｙ）の輝度値Ｉｘｙとモデル画像の座標（ｘ，ｙ）の輝度値Ｔｘｙとの差を算出し、差の絶対値をスコアＳに足し込んでいく（Ｓ９４）。
【０１６７】
ＣＰＵ３０１は、領域限定閾値ＴＣにより、スコア計算が打ち切り可能か否かを判定する（Ｓ９５）。即ち、ＣＰＵ３０１は、相違度の計算途中で、相違度の計算途中結果に基づき、相違度が領域限定閾値ＴＣよりも高い値となるか否かを予測する。
【０１６８】
ＣＰＵ３０１は、スコアＳが領域限定閾値ＴＣ以下の場合（Ｓ９５：Ｎｏ）、即ち相違度が領域限定閾値ＴＣよりも高い値となると予測できなかった場合には、スコア計算を継続し、座標ｘがＷｉｄｔｈ−１よりも小さいか否かを判断する（Ｓ９６）。ＣＰＵ３０１は、座標ｘがＷｉｄｔｈ−１よりも小さいと判断した場合（Ｓ９６：Ｙｅｓ）、座標ｘを１つ増加させ（Ｓ９７）、次の位置の輝度差分を求めるため、ステップＳ９４の処理に戻る。
【０１６９】
ＣＰＵ３０１は、座標ｘがＷｉｄｔｈ−１となった場合（Ｓ９６：Ｎｏ）、座標ｙがＨｅｉｇｈｔ−１よりも小さいか否かを判断する（Ｓ９８）。ＣＰＵ３０１は、座標ｙがＨｅｉｇｈｔ−１より小さいと判断した場合（Ｓ９８：Ｙｅｓ）、座標ｙを１つ増加させ（Ｓ９９）、次の行の輝度差分を求めるため、ステップＳ９３の処理に戻る。
【０１７０】
即ち、ＣＰＵ３０１は、相違度が領域限定閾値ＴＣよりも高い値となると予測できなかった場合には、相違度の計算を続行する。ＣＰＵ３０１は、座標ｙがＨｅｉｇｈｔ−１となった場合（Ｓ９８：Ｎｏ）、スコア（相違度）の計算が完了する。このように、被探索画像から抽出した抽出画像とモデル画像との輝度差分の絶対値の総和を算出して、その値をスコア（相違度）とする。
【０１７１】
ＣＰＵ３０１は、上記計算の途中でスコアＳが領域限定閾値ＴＣよりも高い値となると予測した場合（Ｓ９５：Ｙｅｓ）、スコア計算を打ち切り、スコア計算を終了する。
【０１７２】
以上、第２実施形態によれば、ピラミッドの途中段及び最下段においてパターンマッチング処理を行う際に、領域毎にスコア計算の打ち切りに用いる領域限定閾値ＴＣの更新を行う。したがって、相違度の計算の打ち切り、及び計算を打ち切るか否かを判断する領域限定閾値の更新により、パターンマッチングに要する処理時間を短縮することができる。
【０１７３】
また、他の領域で算出された相違度の影響を受けることなく、各領域で独立した領域限定閾値ＴＣでスコア計算の打ち切りの判断を行うことができるので、物体の検出の失敗を防ぐことができる。
【０１７４】
なお、第２実施形態では、最上段の被探索画像ＩＳ４を除く、全ての被探索画像ＩＳ１〜ＩＳ３に対して、相違度計算の打ち切り及び領域限定閾値の更新を行う場合について説明したが、これに限定するものではない。
【０１７５】
例えば、最下段の被探索画像ＩＳ１に対してのみ、相違度計算の打ち切り及び領域限定閾値ＴＣの更新を行ってもよいし、途中段の被探索画像ＩＳ２又は被探索画像ＩＳ３についてのみ、相違度計算の打ち切り及び領域限定閾値ＴＣの更新を行ってもよい。この場合、相違度計算の打ち切り及び領域限定閾値ＴＣの更新を行わない段（階層）の被探索画像に対しては、閾値Ｔで類似度の判定を行って候補点を抽出すればよい。また、この類似度計算の打ち切り及び領域限定閾値ＴＣの更新を行わない段（階層）の被探索画像に対しては、上段の候補点に対応する点を含む領域を設定し、その領域内だけモデル画像を走査するようにしてもよい。もちろん、被探索ピラミッドにおいて、被探索画像ＩＳ４以外の全ての被探索画像ＩＳ１〜ＩＳ３に対して相違度計算の打ち切り及び領域限定閾値の更新を行った方が、処理時間を効果的に短縮することができる。
【０１７６】
また、領域限定閾値ＴＣを更新する場合、つまり相違度が領域限定閾値ＴＣを下回る場合には、その領域内の候補点のデータを更新する（データを上書きする）ようにしたが、これに限定するものではなく、先に登録した候補点のデータを残しておいてもよい。もちろん、候補点のデータを更新する方が、データ量が少なくて済み、処理時間を効果的に短縮することができるので好ましい。
【０１７７】
また、第２実施形態では、相違度を、被探索画像とモデル画像との輝度値差分の絶対値の総和により計算しているが、輝度値の差分の二乗和により計算してもよい。
【０１７８】
また、第２実施形態では、相違度（不一致度ともいう）として計算する場合について説明したが、類似度（一致度ともいう）として計算してもよい。つまり、相違度（不一致度）で判定することは、類似度（一致度）で判定することと等価であり、相違度で表現されていても、（閾値の大小判定は反対になるが）類似度で判定していることと同じである。
【０１７９】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されない。
【０１８０】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１８１】
１００…生産装置、２００…ロボット、３００…画像処理装置、３０１…ＣＰＵ（処理部）、５００…カメラ（撮像装置）、５５０…画像処理システム
【図１】
0006648925.tif 000005
【図２】
0006648925.tif 000006
【図３】
0006648925.tif 000007
【図４】
0006648925.tif 000008
【図５】
0006648925.tif 000009
【図６】
0006648925.tif 000010
【図７】
0006648925.tif 000011
【図８】
0006648925.tif 000012
【図９】
0006648925.tif 000013
【図１０】
0006648925.tif 000014
【図１１】
0006648925.tif 000015
【図１２】
0006648925.tif 000016
【図１３】
0006648925.tif 000017
【図１４】
0006648925.tif 000018
【図１５】
0006648925.tif 000019
【図１６】
0006648925.tif 000020
【図１７】
0006648925.tif 000021
【図１８】
0006648925.tif 000022