(57)【要約】【課題】画像内に存在する複数のパターンを高速に探索することができる画像処理装置および画像処理プログラムを提供する。【解決手段】本実施の形態に係る画像処理方法は、予め登録されたモデルと一致する領域を入力画像からサーチするパターンマッチング処理に向けられる。本画像処理方法においては、モデルを示すエッジコード画像と、モデルを示すエッジコードヒストグラムとが予め登録される。なお、エッジコード画像およびエッジコードヒストグラムの詳細については後述する。その上で、対象の入力画像に対して、エッジコードヒストグラムを用いて、モデルと一致する可能性がある領域（候補点）をサーチ（粗サーチ）する。続いて、エッジコード画像を用いて、当該候補点を中心としてモデルと一致する領域をサーチ（詳細サーチ）する。【選択図】図６
2011191928.tif 000002
【特許請求の範囲】
【請求項１】
予め登録されたモデルと一致する領域を入力画像からサーチする画像処理方法であって、
モデルを表わすモデル画像に含まれる複数のエッジコードから生成したモデルのエッジコードヒストグラムを格納する登録ステップと、
前記入力画像に対して第１の注目領域を設定するステップと、
前記第１の注目領域についてのエッジコードヒストグラムを生成する生成ステップと、
前記モデルのエッジコードヒストグラムと前記第１の注目領域についてのエッジコードヒストグラムとの間の相対的な位置関係を順次異ならせるとともに、各相対位置におけるエッジコードヒストグラム間の一致度を順次算出する算出ステップと、
順次算出されるエッジコードヒストグラム間の一致度から、設定されている前記第１の注目領域に前記モデルと一致する領域が含まれている可能性を評価する評価ステップと、
前記入力画像に対する前記第１の注目領域の位置を順次異ならせるとともに、各第１の注目領域について、前記生成ステップ、前記算出ステップ、および、前記評価ステップを繰返すことで、前記入力画像内において前記モデルと一致する可能性がある候補点を特定する第１の特定ステップとを備える、画像処理方法。
【請求項２】
前記第１の特定ステップは、
前記入力画像に対して第１の間隔で前記第１の注目領域を順次配置することで、前記第１の間隔の単位で前記候補点を仮決めするステップと、
前記入力画像に対して、当該仮決めした候補点を含む近傍の複数の位置に、前記第１の間隔より短い第２の間隔で前記第１の注目領域を順次配置することで、前記第２の間隔の単位で前記候補点を決定するステップとを含む、請求項１に記載の画像処理方法。
【請求項３】
前記第１の特定ステップは、
前記決定された候補点において、前記エッジコードヒストグラム間の一致度が極大値をとる、前記モデルのエッジコードヒストグラムと前記第１の注目領域についてのエッジコードヒストグラムとの間の相対的な位置関係に対応する回転角度を、当該候補点に対応する候補角度として決定するステップをさらに含む、請求項２に記載の画像処理方法。
【請求項４】
前記登録ステップは、前記モデルを示すエッジコード画像を格納するステップを含み、
前記画像処理方法は、
前記入力画像に対して、前記候補点を含む近傍の複数の位置に第２の注目領域を設定するステップと、
前記モデルを示すエッジコード画像を前記候補点に対応する前記候補角度を含む近傍の複数の角度に回転させた場合に得られるエッジコード画像の各々と、前記複数の位置にそれぞれ配置される前記第２の注目領域についてのエッジコード画像の各々との間の、一致度を算出することで、前記入力画像内において前記モデルと一致する領域を特定する第２の特定ステップとをさらに備える、請求項３に記載の画像処理方法。
【請求項５】
前記モデルのエッジコードヒストグラムと前記第２の特定ステップにおいて特定された前記モデルと一致する領域についてのエッジコードヒストグラムとの間の相対的な位置関係を複数に異ならせた場合に得られる、前記エッジコードヒストグラム間の一致度の変化を用いて、前記第２の特定ステップにおいて特定された前記モデルと一致する領域に存在するオブジェクトの前記モデルに対する回転角度を算出するステップをさらに備える、請求項４に記載の画像処理方法。
【請求項６】
前記第２の特定ステップにおいて特定された前記モデルと一致する領域のうち、互いに近接する領域の一方を除去するステップをさらに備える、請求項５に記載の画像処理方法。
【請求項７】
前記エッジコードヒストグラム間の一致度は、対象となる２つのエッジコードヒストグラム間の差分ヒストグラムにおける頻度の累積値から算出される、請求項１〜６のいずれか１項に記載の画像処理方法。
【請求項８】
前記生成ステップは、
前記入力画像を予め定められたブロックサイズのブロックに分割するとともに、各ブロックについてのエッジコードヒストグラムを生成するステップを含み、前記第１の注目領域は、前記ブロックサイズの整数倍に設定されており、
前記入力画像に対する前記第１の注目領域の設定毎に、当該設定された第１の注目領域内に存在する１または複数の前記ブロックについてのエッジコードヒストグラムを加算することで、前記第１の注目領域についてのエッジコードヒストグラムを生成するステップを含む、請求項１〜６のいずれか１項に記載の画像処理方法。
【請求項９】
前記登録ステップは、
前記モデル画像に対して前記モデルとすべき領域の指定を受付けるステップと、
指定されたモデルとすべき領域を正方形に整形するステップと、
整形後の領域に内接する円の範囲に含まれるエッジコードから前記モデルのエッジコードヒストグラムを生成するステップとを含む、請求項１〜６のいずれか１項に記載の画像処理方法。
【請求項１０】
入力画像を受付けて、予め登録されたモデルと一致する領域をサーチする画像処理装置であって、
モデルを表わすモデル画像に含まれる複数のエッジコードから生成されるモデルのエッジコードヒストグラムを記憶するための記憶手段と、
前記入力画像に対して第１の注目領域を順次設定することで、前記入力画像内において前記モデルと一致する可能性がある候補点を特定する特定手段とを備え、
前記特定手段は、
設定される前記第１の注目領域の各々についてのエッジコードヒストグラムを生成し、
前記モデルのエッジコードヒストグラムと前記第１の注目領域についてのエッジコードヒストグラムとの間の相対的な位置関係を順次異ならせるとともに、各相対位置におけるエッジコードヒストグラム間の一致度を順次算出し、
順次算出されるエッジコードヒストグラム間の一致度から、設定されている前記第１の注目領域に前記モデルと一致する領域が含まれている可能性を評価する、画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予め登録されたモデルと一致する領域を入力画像からサーチする画像処理方法および画像処理装置に関するものである。
【背景技術】
【０００２】
従来から、ＦＡ（Factory Automation）分野などにおいては、計測対象物（以下、「ワーク」とも称す。）を撮像した入力画像に対して、予め登録されたパターン（以下、「モデル」とも称す。）に基づくサーチ処理（以下、「パターンマッチング処理」とも称す。）が用いられている。このようなパターンマッチング処理により、ワークに現れるキズやゴミなどの欠陥を検出したり、モデルと類似しているワーク上の領域を探し出したりすることができる。
【０００３】
このようなパターンマッチング処理の一手法として、入力画像において濃淡値（明るさ）の変化がある部分（以下、「エッジ（部分）」とも称す。）を抽出するとともに、エッジの変化方向（画素濃度の勾配方向）を示す値（以下、「エッジコード」もしくは「ＥＣ（Edge Code）」とも称す。）に基づいてパターンマッチングを行うことが知られている。たとえば、特開２００２−２３０５４９号公報（特許文献１）、特開２００２−２３０５４９号公報（特許文献２）、および、特開２００２−２３０５６２号公報（特許文献３）などを参照されたい。
【０００４】
このようなエッジコードを用いることで、入力画像の撮像時における影響（たとえば、影の映り込みや照明ムラ）があっても、モデルと一致／類似する領域を的確に探し出すことができる。
【０００５】
また、米国特許第７，０１６，５３９号明細書（特許文献４）には、パターンにおける各特徴点の相対的な位置関係を表すプローブ（probes）と称される情報によって記述されたモデルを用いて、画像内に存在する複数のパターンを探索する方法が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−５４８２８号公報
【特許文献２】特開２００２−２３０５４９号公報
【特許文献３】特開２００２−２３０５６２号公報
【特許文献４】米国特許第７，０１６，５３９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献４に開示された方法では、複数のパターンのそれぞれの位置と姿勢を求めることはできるが、モデルの回転処理とパターンマッチング処理とを画像の全範囲に亘って繰返す必要があり、処理に時間がかかるという問題があった。本発明の目的は、画像内に存在する複数のパターンを高速に探索することができる画像処理装置および画像処理プログラムを提供することである。
【課題を解決するための手段】
【０００８】
本発明のある局面に従えば、予め登録されたモデルと一致する領域を入力画像からサーチする画像処理方法を提供する。本画像処理方法は、モデルを表わすモデル画像に含まれる複数のエッジコードから生成したモデルのエッジコードヒストグラムを格納する登録ステップと、入力画像に対して第１の注目領域を設定するステップと、第１の注目領域についてのエッジコードヒストグラムを生成する生成ステップと、モデルのエッジコードヒストグラムと第１の注目領域についてのエッジコードヒストグラムとの間の相対的な位置関係を順次異ならせるとともに、各相対位置におけるエッジコードヒストグラム間の一致度を順次算出する算出ステップと、順次算出されるエッジコードヒストグラム間の一致度から、設定されている第１の注目領域にモデルと一致する領域が含まれている可能性を評価する評価ステップと、入力画像に対する第１の注目領域の位置を順次異ならせるとともに、各第１の注目領域について、生成ステップ、算出ステップ、および、評価ステップを繰返すことで、入力画像内においてモデルと一致する可能性がある候補点を特定する第１の特定ステップとを含む。
【０００９】
好ましくは、第１の特定ステップは、入力画像に対して第１の間隔で第１の注目領域を順次配置することで、第１の間隔の単位で候補点を仮決めするステップと、入力画像に対して、当該仮決めした候補点を含む近傍の複数の位置に、第１の間隔より短い第２の間隔で第１の注目領域を順次配置することで、第２の間隔の単位で候補点を決定するステップとを含む。
【００１０】
さらに好ましくは、第１の特定ステップは、決定された候補点において、エッジコードヒストグラム間の一致度が極大値をとる、モデルのエッジコードヒストグラムと第１の注目領域についてのエッジコードヒストグラムとの間の相対的な位置関係に対応する回転角度を、当該候補点に対応する候補角度として決定するステップをさらに含む。
【００１１】
さらに好ましくは、登録ステップは、モデルを示すエッジコード画像を格納するステップを含み、画像処理方法は、入力画像に対して、候補点を含む近傍の複数の位置に第２の注目領域を設定するステップと、モデルを示すエッジコード画像を候補点に対応する候補角度を含む近傍の複数の角度に回転させた場合に得られるエッジコード画像の各々と、複数の位置にそれぞれ配置される第２の注目領域についてのエッジコード画像の各々との間の、一致度を算出することで、入力画像内においてモデルと一致する領域を特定する第２の特定ステップとをさらに含む。
【００１２】
さらに好ましくは、本画像処理方法は、モデルのエッジコードヒストグラムと第２の特定ステップにおいて特定されたモデルと一致する領域についてのエッジコードヒストグラムとの間の相対的な位置関係を複数に異ならせた場合に得られる、エッジコードヒストグラム間の一致度の変化を用いて、第２の特定ステップにおいて特定されたモデルと一致する領域に存在するオブジェクトのモデルに対する回転角度を算出するステップをさらに含む。
【００１３】
さらに好ましくは、本画像処理方法は、第２の特定ステップにおいて特定されたモデルと一致する領域のうち、互いに近接する領域の一方を除去するステップをさらに含む。
【００１４】
好ましくは、エッジコードヒストグラム間の一致度は、対象となる２つのエッジコードヒストグラム間の差分ヒストグラムにおける頻度の累積値から算出される。
【００１５】
好ましくは、生成ステップは、入力画像を予め定められたブロックサイズのブロックに分割するとともに、各ブロックについてのエッジコードヒストグラムを生成するステップを含み、第１の注目領域は、ブロックサイズの整数倍に設定されており、入力画像に対する第１の注目領域の設定毎に、当該設定された第１の注目領域内に存在する１または複数のブロックについてのエッジコードヒストグラムを加算することで、第１の注目領域についてのエッジコードヒストグラムを生成するステップを含む。
【００１６】
好ましくは、登録ステップは、モデル画像に対してモデルとすべき領域の指定を受付けるステップと、指定されたモデルとすべき領域を正方形に整形するステップと、整形後の領域に内接する円の範囲に含まれるエッジコードからモデルのエッジコードヒストグラムを生成するステップとを含む。
【００１７】
この発明の別の局面に従えば、入力画像を受付けて、予め登録されたモデルと一致する領域をサーチする画像処理装置を提供する。本画像処理装置は、モデルを表わすモデル画像に含まれる複数のエッジコードから生成されるモデルのエッジコードヒストグラムを記憶するための記憶手段と、入力画像に対して第１の注目領域を順次設定することで、入力画像内においてモデルと一致する可能性がある候補点を特定する特定手段とを含む。特定手段は、設定される第１の注目領域の各々についてのエッジコードヒストグラムを生成し、モデルのエッジコードヒストグラムと第１の注目領域についてのエッジコードヒストグラムとの間の相対的な位置関係を順次異ならせるとともに、各相対位置におけるエッジコードヒストグラム間の一致度を順次算出し、順次算出されるエッジコードヒストグラム間の一致度から、設定されている第１の注目領域にモデルと一致する領域が含まれている可能性を評価する。
【発明の効果】
【００１８】
本発明によれば、予め登録されたモデルと一致する領域をより正確にサーチすることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態に係る画像処理装置を含む視覚センサシステムの全体構成を示す概略図である。
【図２】本発明の実施の形態に係る画像処理装置の概略構成図である。
【図３】本発明の実施の形態に係るエッジコード画像を説明するための図である。
【図４】本発明の実施の形態に係るエッジコードおよびエッジコード画像の算出処理を説明するための図である。
【図５】本実施の形態に係るパターンマッチング処理に用いられるエッジコードヒストグラムサーチ処理について説明するための図である。
【図６】本実施の形態に係るパターンマッチング処理の全体処理の手順を示すフローチャートである。
【図７】本発明の実施の形態に係る画像処理装置によるパターンマッチング処理を実現するためのブロック図である。
【図８】本発明の実施の形態に係るモデル登録処理の処理内容を説明するための図である。
【図９】モデル登録時に特徴部分の偏りが生じた場合の例を示す図である。
【図１０】本発明の実施の形態に係るモデル登録処理におけるより詳細な処理手順を示すフローチャートである。
【図１１】図７に示すエッジコード画像生成モジュールのより詳細な機能を示すブロック図である。
【図１２】本発明の実施の形態に係るエッジコード画像生成処理におけるより詳細な処理手順を示すフローチャートである。
【図１３】本実施の形態に係る粗サーチ処理において設定される注目領域について説明するための図である。
【図１４】本実施の形態に係る粗サーチ処理におけるエッジコードヒストグラムについての比較処理を説明するための図である。
【図１５】図１４に示すエッジコードヒストグラムの比較処理によって得られる結果の一例を示す図である。
【図１６】本実施の形態に係る粗サーチ処理における第１段および第２段の内容を説明するための図である。
【図１７】本発明の実施の形態に係る粗サーチ処理におけるより詳細な処理手順を示すフローチャートである。
【図１８】本発明の実施の形態に係る詳細サーチ処理について説明するための図である。
【図１９】本発明の実施の形態に係る詳細サーチ処理におけるより詳細な処理手順を示すフローチャートである。
【図２０】本発明の実施の形態に係る角度サーチ処理について説明するための図である。
【図２１】本発明の実施の形態に係る角度サーチ処理におけるより詳細な処理手順を示すフローチャートである。
【図２２】本発明の実施の形態に係る近接点除去処理について説明するための図である。
【図２３】本発明の実施の形態に係る近接点除去処理におけるより詳細な処理手順を示すフローチャートである。
【図２４】本実施の形態に係る画像処理装置が設定モードにおいて提供するユーザインターフェイス画面の一例を示す図である。
【図２５】本実施の形態に係る画像処理装置が設定モードにおいて提供するユーザインターフェイス画面の一例を示す図である。
【図２６】本実施の形態に係る画像処理装置が計測モードにおいて提供するユーザインターフェイス画面の一例を示す図である。
【発明を実施するための形態】
【００２０】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２１】
《Ａ．概要》
本実施の形態に係る画像処理方法は、予め登録されたモデルと一致する領域を入力画像からサーチするパターンマッチング処理に向けられる。本画像処理方法においては、モデルを示すエッジコード画像と、モデルを示すエッジコードヒストグラムとが予め登録される。なお、エッジコード画像およびエッジコードヒストグラムの詳細については後述する。その上で、対象の入力画像に対して、エッジコードヒストグラムを用いて、モデルと一致する可能性がある領域（候補点）をサーチ（以下、「粗サーチ」とも称する。）する。続いて、エッジコード画像を用いて、当該候補点を中心としてモデルと一致する領域をサーチ（以下、「詳細サーチ」とも称する。）する。
【００２２】
このように、エッジコードヒストグラムを用いた粗サーチと、エッジコード画像を用いた詳細サーチとを組合せることで、パターンマッチング処理の高速化および高精度化を実現する。
【００２３】
《Ｂ．全体装置構成》
図１は、本発明の実施の形態に係る画像処理装置１００を含む視覚センサシステム１の全体構成を示す概略図である。
【００２４】
図１を参照して、視覚センサシステム１は生産ラインなどに組み込まれ、ワーク２に対して、予め登録されているモデル（但し、後述するように「エッジコード画像」が用いられる）を用いてパターンマッチング処理を実行する。
【００２５】
視覚センサシステム１においては、ワーク２はベルトコンベヤなどの搬送機構６によって搬送され、搬送されたワーク２は、撮像装置８によって所定タイミングで撮像される。撮像装置８は、一例として、レンズなどの光学系に加えて、ＣＣＤ（Coupled Charged Device）やＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサといった、複数の画素に区画された撮像素子を含んで構成される。なお、撮像装置８で撮像されるワーク２に対して光を照射する照明機構をさらに設けてもよい。
【００２６】
撮像装置８の撮像によって得られる画像（以下、「入力画像」とも称す。）は、画像処理装置１００へ伝送される。画像処理装置１００は、この撮像装置８から受けた入力画像に対してパターンマッチング処理を実行し、その結果を接続されたディスプレイ１０２で表示したり、その結果を外部装置へ出力したりする。
【００２７】
ワーク２が撮像装置８の視野内に到達したことは、搬送機構６の両端に配置された光電センサ４によって検出される。具体的には、光電センサ４は、同一の光軸上に配置された受光部４ａと投光部４ｂとを含み、投光部４ｂから放射される光がワーク２で遮蔽されることを受光部４ａで検出することによって、ワーク２の到達を検出する。この光電センサ４のトリガ信号は、ＰＬＣ（Programmable Logic Controller）５へ出力される。
【００２８】
ＰＬＣ５は、光電センサ４などからのトリガ信号を受信するとともに、搬送機構６の制御自体を司る。
【００２９】
画像処理装置１００は、ワーク２に対して各種の画像処理を実行する計測モードと、後述するモデル登録処理などを行うための設定モードとを有している。これらのモードは、ユーザがマウス１０４などを操作することで切替えられる。
【００３０】
画像処理装置１００は、典型的には、汎用的なアーキテクチャを有しているコンピュータであり、予めインストールされたプログラム（命令コード）を実行することで、後述するような各種機能を提供する。このようなプログラムは、典型的には、メモリカード１０６などに格納された状態で流通する。
【００３１】
このような汎用的なコンピュータを利用する場合には、本実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのＯＳ（Operating System）がインストールされていてもよい。この場合には、本実施の形態に係るプログラムは、ＯＳの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。すなわち、本実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、ＯＳと協働して処理が実行されてもよい。本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【００３２】
さらに、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。なお、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【００３３】
図２は、本発明の実施の形態に係る画像処理装置１００の概略構成図である。図２を参照して、画像処理装置１００は、演算処理部であるＣＰＵ（Central Processing Unit）１１０と、記憶部としてのメインメモリ１１２およびハードディスク１１４と、カメラインターフェイス１１６と、入力インターフェイス１１８と、表示コントローラ１２０と、ＰＬＣインターフェイス１２２と、通信インターフェイス１２４と、データリーダ／ライタ１２６とを含む。これらの各部は、バス１２８を介して、互いにデータ通信可能に接続される。
【００３４】
ＣＰＵ１１０は、ハードディスク１１４に格納されたプログラム（コード）をメインメモリ１１２に展開して、これらを所定順序で実行することで、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の記憶装置であり、ハードディスク１１４から読み出されたプログラムに加えて、撮像装置８によって取得された画像データ、ワークデータ、モデルに関する情報などを保持する。さらに、ハードディスク１１４には、各種設定値などが格納されてもよい。なお、ハードディスク１１４に加えて、あるいは、ハードディスク１１４に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【００３５】
カメラインターフェイス１１６は、ＣＰＵ１１０と撮像装置８との間のデータ伝送を仲介する。すなわち、カメラインターフェイス１１６は、ワーク２を撮像して画像データを生成するための撮像装置８と接続される。より具体的には、カメラインターフェイス１１６は、１つ以上の撮像装置８と接続が可能であり、撮像装置８からの画像データを一時的に蓄積するための画像バッファ１１６ａを含む。そして、カメラインターフェイス１１６は、画像バッファ１１６ａに所定コマ数の画像データが蓄積されると、その蓄積されたデータをメインメモリ１１２へ転送する。また、カメラインターフェイス１１６は、ＣＰＵ１１０が発生した内部コマンドに従って、撮像装置８に対して撮像コマンドを与える。
【００３６】
入力インターフェイス１１８は、ＣＰＵ１１０とマウス１０４、キーボード、タッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェイス１１８は、ユーザが入力部を操作することで与えられる操作指令を受付ける。
【００３７】
表示コントローラ１２０は、表示装置の典型例であるディスプレイ１０２と接続され、ＣＰＵ１１０における画像処理の結果などをユーザに通知する。すなわち、表示コントローラ１２０は、ディスプレイ１０２に接続され、当該ディスプレイ１０２での表示を制御する。
【００３８】
ＰＬＣインターフェイス１２２は、ＣＰＵ１１０とＰＬＣ５との間のデータ伝送を仲介する。より具体的には、ＰＬＣインターフェイス１２２は、ＰＬＣ５によって制御される生産ラインの状態に係る情報やワークに係る情報などをＣＰＵ１１０へ伝送する。
【００３９】
通信インターフェイス１２４は、ＣＰＵ１１０とコンソール（あるいは、パーソナルコンピュータやサーバ装置）などとの間のデータ伝送を仲介する。通信インターフェイス１２４は、典型的には、イーサネット（登録商標）やＵＳＢ（Universal Serial Bus）などからなる。なお、後述するように、メモリカード１０６に格納されたプログラムを画像処理装置１００にインストールする形態に代えて、通信インターフェイス１２４を介して、配信サーバなどからダウンロードしたプログラムを画像処理装置１００にインストールしてもよい。
【００４０】
データリーダ／ライタ１２６は、ＣＰＵ１１０と記録媒体であるメモリカード１０６との間のデータ伝送を仲介する。すなわち、メモリカード１０６には、画像処理装置１００で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ１２６は、このメモリカード１０６からプログラムを読出す。また、データリーダ／ライタ１２６は、ＣＰＵ１１０の内部指令に応答して、撮像装置８によって取得された画像データおよび／または画像処理装置１００における処理結果などをメモリカード１０６へ書込む。なお、メモリカード１０６は、ＣＦ（Compact Flash）、ＳＤ（Secure Digital）などの汎用的な半導体記憶デバイスや、フレキシブルディスク（Flexible Disk）などの磁気記憶媒体や、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体等からなる。
【００４１】
また、画像処理装置１００には、必要に応じて、プリンタなどの他の出力装置が接続されてもよい。
【００４２】
《Ｃ．エッジコードおよびエッジコード画像》
まず、本実施の形態に係るエッジコードおよびエッジコード画像について説明する。
【００４３】
図３は、本発明の実施の形態に係るエッジコード画像を説明するための図である。特に、図３（ａ）には、入力画像の一例を示し、図３（ｂ）には、図３（ａ）に示す入力画像から得られるエッジコード画像を視覚化した一例を示す。
【００４４】
図３（ａ）に示す入力画像内には、ほぼ均一な背景上に十字状のオブジェクトが存在しているものとする。このオブジェクトは、典型的にはワークの被写像である。この図３（ａ）に示す入力画像に対してエッジ抽出処理がなされると、エッジ強度の高い部分として、図３（ｂ）に示すような十字状のオブジェクトの輪郭に相当する部分（図３（ｂ）の白色の縁取り部分）が抽出される。そして、この抽出されたエッジの変化方向（画素濃度の勾配方向）を示す値が、当該エッジ点におけるエッジコード値（ＥＣ値）として抽出される。
【００４５】
本実施の形態においては、エッジの変化方向を示す値の一例として、エッジの接線方向（すなわち、図３（ｂ）に示す矢印の向き（角度））がエッジコード（エッジ方向／エッジ角度）として算出される。
【００４６】
図４は、本発明の実施の形態に係るエッジコードおよびエッジコード画像の算出処理を説明するための図である。特に、図４（ａ）には、各エッジ点におけるエッジコードを算出する方法を示し、図４（ｂ）には、エッジコード画像のデータ構造の一例を示す。
【００４７】
図４（ａ）に示すような画像に対して、Ｂ方向に走査してエッジ抽出処理を行った場合を考える。なお、エッジ抽出処理では、Ｂ方向に存在する各画素について、当該画素の濃淡値およびその周辺の画素の濃淡値に基づいてエッジ強度を検出し、Ｂ方向に対するエッジ強度のプロファイルにおける極大値がエッジとして抽出される。
【００４８】
図４（ａ）に示す例では、エッジＥＤＧの一部として座標位置Ｅ（ｘ，ｙ）をもつエッジ点が抽出される。そして、抽出された座標位置Ｅ（ｘ，ｙ）の周辺画素の濃淡値などに基づいて、いずれの方向にエッジＥＤＧが続いているのかが判断される。概略すれば、エッジＥＤＧを構成する座標位置Ｅ（ｘ，ｙ）のエッジ点における接線ベクトルＣが算出される。この接線ベクトルＣと基準ベクトル（図４（ａ）に示す例では、Ｂ方向）とのなす角度Ｅｃ（ｘ，ｙ）をエッジコードとして算出する。なお、この角度Ｅｃ（ｘ，ｙ）は、０°〜３６０°（あるいは、−１８０°〜１８０°）を有効範囲として定義してもよいし、０°〜１８０°を有効範囲として定義してもよい。後者の場合には、接線ベクトルＣと基準ベクトルとのなす角度差の絶対値となる。
【００４９】
なお、代替の方法として、抽出されたエッジにおける濃淡の変化方向をエッジコードとして算出してもよい。この場合には、図４（ａ）に示す接線ベクトルＣと直交する方向がエッジコードとなる。
【００５０】
上述のように、抽出される各エッジ点の座標位置（ｘ，ｙ）および対応するエッジコード値（Ｅｃ（ｘ，ｙ））との組合せを「エッジコード画像」もしくは「ＥＣ画像」とも称す。すなわち、エッジコード画像を構成する各要素は、図４（ｂ）に示すように、入力画像の各座標位置に対応付けられたエッジコード値を含む。
【００５１】
詳細については後述するが、本実施の形態においては、パターンマッチング処理に用いられるモデルについても、上述のようなエッジコード画像が予め作成されて登録されている。そして、この登録されているモデルについてのエッジコード画像と、入力画像から生成されたエッジコード画像とを比較することで、両者の一致度（類似度）が算出される。そして、この算出された一致度に基づいて、モデルと最もマッチングする領域がサーチされる。
【００５２】
《Ｄ．エッジコードヒストグラムによるサーチ処理》
次に、本実施の形態に係るパターンマッチング処理における一つの特徴的な処理について先に説明する。
【００５３】
図５は、本実施の形態に係るパターンマッチング処理に用いられるエッジコードヒストグラムサーチ処理について説明するための図である。特に、図５（ａ）には、入力画像ＩＭＧ１内に十字状のオブジェクトが存在する場合を示し、図５（ｂ）には、入力画像ＩＭＧ２内に図５（ａ）に示すオブジェクトが角度θｓだけ回転した状態で存在する場合を示す。また、図５（ｃ）には、図５（ａ）に示すオブジェクトから抽出されるエッジコードのヒストグラムを示し、図５（ｄ）には、図５（ｂ）に示すオブジェクトから抽出されるエッジコードのヒストグラムを示す。
【００５４】
図５（ａ）に示すようなオブジェクトに対してエッジ抽出処理がなされると、基本的には、紙面上下左右のいずれかの方向を向くエッジコードが抽出される。すなわち、図４（ａ）に示すＢ方向を基準とし、かつ、反時計周りを正方向の角度とすると、各エッジコードは、概ね、９０°，１８０°，２７０°，３６０°のいずれかの値をとることになる（但し、０°〜３６０°を有効範囲としている）。このとき、抽出された複数のエッジコードについて、その値についてのヒストグラム（度数分布）を考える。すなわち、横軸にエッジコード値をとり、縦軸に対応するエッジコード値を有するエッジコードの頻度（エッジ個数）をとる。すると、図５（ａ）に示す入力画像ＩＭＧ１からは、図５（ｃ）に示すようなヒストグラム（以下、「エッジコードヒストグラム」または「ＥＣヒストグラム」とも称す。）が得られる。
【００５５】
この図５（ｃ）に示すエッジコードヒストグラムにおいては、エッジコード値が９０°，１８０°，２７０°，３６０°の４つの部分においてピークが発生していることがわかる。
【００５６】
次に、図５（ａ）に示すオブジェクトが角度θｓだけ回転して入力画像内に現れた場合を考える。すなわち、図５（ｂ）に示すような入力画像ＩＭＧ２を考える。この場合には、オブジェクトに含まれる各エッジコードは、理論的には、図５（ａ）に示すオブジェクトから抽出される各エッジコードに対して角度θｓだけその向きが回転したものとなる。すなわち、図５（ｂ）に示す入力画像ＩＭＧ２から得られるエッジコードヒストグラムは、図５（ｄ）のようになり、図５（ｄ）に示すヒストグラムの全体形状は、図５（ｃ）に示すヒストグラムに比較して、角度θｓだけシフトしたものとなる。
【００５７】
すなわち、あるオブジェクトについてのエッジコードヒストグラムと、当該オブジェクトを回転させた場合に現れるエッジコードヒストグラムとの間には、全体形状を維持しつつ、エッジコード値の軸上における相対的な位置関係だけが異なるという関係があることがわかる。したがって、あるモデルについてのエッジコードヒストグラムを取得し、その取得したエッジコードヒストグラムの全体形状をモデル情報として登録しておけば、この全体形状に基づいて、入力画像内に登録したモデルと一致する領域が存在するか否かを評価することができる。
【００５８】
本実施の形態に係るパターンマッチング処理においては、上述のようなエッジコードヒストグラムに基づくサーチ処理を用いて、入力画像内にモデルと一致する可能性がある領域（候補点）を特定するための粗サーチ処理を行うことで、処理に要する時間を短縮する。
【００５９】
《Ｅ．全体処理手順》
次に、本実施の形態に係るパターンマッチング処理における全体処理の手順について説明する。
【００６０】
図６は、本実施の形態に係るパターンマッチング処理の全体処理の手順を示すフローチャートである。なお、図６に示す各ステップは、画像処理装置１００のＣＰＵ１１０が予め用意されたプログラム（命令コード）を実行することで提供される。
【００６１】
図６を参照して、まず、ＣＰＵ１１０は、モデル登録処理を実行する（ステップＳ１）。このモデル登録処理では、典型的には、基準とすべきワークモデルを撮像することで得られる入力画像（モデル画像）に対して、ユーザが任意の領域をモデルとして選択する。そして、選択された領域に含まれる画像からモデル情報が抽出され、ハードディスク１１４などに記録される。このモデル情報には、モデルを示すエッジコード画像に加えて、当該エッジコード画像から得られるエッジコードヒストグラムも含まれる。すなわち、ステップＳ１のモデル登録処理においては、モデルを表わすモデル画像に含まれる複数のエッジコードから生成したモデルのエッジコードヒストグラムの格納、および、モデルを示すエッジコード画像の格納が行われる。
【００６２】
なお、このモデル登録処理は、後続の処理（ステップＳ２〜Ｓ８）と同一の処理手順内で行う必要はなく、先にモデル登録処理のみを実行し、必要なモデル情報を予め登録しておいてもよい。
【００６３】
続いて、ＣＰＵ１１０は、パターンマッチング処理を実行する。すなわち、ＣＰＵ１１０は、所定のタイミングで撮像装置８に対して指令を与えることで、撮像装置８の視野内に存在する被写体を表す入力画像を取得する（ステップＳ２）。そして、ＣＰＵ１１０は、取得した入力画像からエッジコード画像を生成する（ステップＳ３）。
【００６４】
続いて、ＣＰＵ１１０は、取得された入力画像に対して、登録されているモデルについての粗サーチ処理を行う（ステップＳ４）。すなわち、ＣＰＵ１１０は、対象の入力画像内に登録されているモデルと一致する可能性がある領域（以下、「候補点」とも称す。）を特定する。この粗サーチ処理においては、上述のエッジコードヒストグラムが利用される。
【００６５】
続いて、ＣＰＵ１１０は、取得された入力画像に対して、粗サーチ処理により抽出された候補点を中心として、登録されているモデルについての詳細サーチ処理を行う（ステップＳ５）。この詳細サーチ処理においては、モデルのエッジコード画像が利用される。この詳細サーチ処理により、登録されているモデルと一致する領域の位置（計測座標）が特定されるとともに、特定された領域に含まれるオブジェクトと登録されているモデルとの間の回転角度（候補角度）が特定される。なお、このステップＳ５の詳細サーチ処理においては回転角度を離散的に特定するので、続くステップＳ６において、この特定した回転角度（候補角度）を基本として、より詳細に回転角度を算出する。
【００６６】
すなわち、ＣＰＵ１１０は、取得された入力画像に対して、詳細サーチ処理により取得された候補角度を中心として、登録されているモデルについての角度サーチ処理を行う（ステップＳ６）。この角度サーチ処理においては、詳細サーチ処理におけるサーチ精度より高い精度で、特定された領域に含まれるオブジェクトと登録されているモデルとの間の回転角度（計測角度）が算出される。すなわち、角度サーチ処理により、より詳細な回転角度が算出される。この角度サーチ処理においても、上述のエッジコードヒストグラムが利用される。
【００６７】
続いて、ＣＰＵ１１０は、上述の処理によって取得された計測結果（計測座標および計測角度）のうち、重複したものを削除するための近接点除去処理を行う（ステップＳ７）。この近接点除去処理においては、上述の詳細サーチ処理において特定されたモデルと一致する領域（計測座標）のうち、互いに近接する（すなわち、重複する）領域の一方を除去する。
【００６８】
最終的に、ＣＰＵ１１０は、取得した計測座標および計測角度を出力するための出力処理を行う（ステップＳ８）。
【００６９】
上述の各ステップの詳細については後述する。
《Ｆ．制御構造》
次に、本実施の形態に係る画像処理装置１００がパターンマッチング処理を行うための制御構造について説明する。
【００７０】
図７は、本発明の実施の形態に係る画像処理装置１００によるパターンマッチング処理を実現するためのブロック図である。図７に示す各ブロックは、ハードディスク１１４に格納されているプログラム（命令コード）などをメインメモリ１１２に展開して、ＣＰＵ１１０に実行させることで提供される。なお、図７に示すモジュールの一部もしくは全部がハードウェアに実装されているファームウェアによって提供される場合もある。あるいは、図７に示す制御構造の一部もしくは全部を専用ハードウェアおよび／または配線回路によって実現してもよい。
【００７１】
図７を参照して、画像処理装置１００は、その制御構造として、バッファ１０と、エッジコード（ＥＣ）画像生成モジュール２０と、モデル登録モジュール３０と、モデル情報格納部４０と、粗サーチモジュール５０と、詳細サーチモジュール６０と、角度サーチモジュール７０と、近接点除去モジュール８０と、出力モジュール９０とを含む。
【００７２】
バッファ１０は、典型的には、メインメモリ１１２の一部として提供され、撮像装置８で生成される入力画像を少なくとも一連の処理中に亘って保持する。このバッファ１０に保持される入力画像は、エッジコード画像生成モジュール２０、モデル登録モジュール３０、および出力モジュール９０からのアクセスが可能である。
【００７３】
エッジコード画像生成モジュール２０は、バッファ１０に保持される入力画像に対して、エッジを抽出した上で、抽出した各エッジのエッジコードを算出することで、エッジコード画像を生成する。このエッジコード画像は、モデル登録処理およびパターンマッチング処理（計測処理）のいずれにも利用される。
【００７４】
モデル登録モジュール３０は、ユーザ操作に従って、パターンマッチング処理に用いられるモデル情報を生成する。より具体的には、モデル登録モジュール３０は、モデル領域抽出機能３１と、空白領域除去機能３２と、内接円抽出機能３３とを含む。
【００７５】
モデル情報格納部４０は、モデル登録モジュール３０により生成されるモデル情報を格納する。このモデル情報は、粗サーチモジュール５０、詳細サーチモジュール６０、および角度サーチモジュール７０により利用される。具体的には、モデル情報格納部４０は、モデルを表すエッジコードヒストグラム４１およびエッジコード画像４２を保持する。
【００７６】
粗サーチモジュール５０は、処理対象の入力画像に対して、モデル情報格納部４０のエッジコードヒストグラム４１を用いて、登録されているモデルと一致する領域が存在する可能性がある領域（候補点）を抽出する。より具体的には、粗サーチモジュール５０は、粗サーチ（第１段）機能５１および粗サーチ（第２段）機能５２を含む。
【００７７】
詳細サーチモジュール６０は、粗サーチモジュール５０により抽出された候補点を中心として、モデル情報格納部４０のエッジコード画像４２を用いて、登録されているモデルと一致する領域（計測座標）をサーチする。より具体的には、詳細サーチモジュール６０は、詳細サーチ（第１段）機能６１および詳細サーチ（第２段）機能６２を含む。
【００７８】
角度サーチモジュール７０は、詳細サーチモジュール６０によりサーチされた計測座標に存在するオブジェクトのモデルに対する回転角度（計測角度）をより詳細にサーチする。
【００７９】
近接点除去モジュール８０は、詳細サーチモジュール６０および角度サーチモジュール７０により抽出された計測結果（計測座標および計測角度）のうち、重複するものを削除する。
【００８０】
出力モジュール９０は、サーチ結果をディスプレイ１０２や外部装置へ出力する。
《Ｇ．モデル登録処理》
次に、図６のステップＳ１に示すモデル登録処理について説明する。
【００８１】
図８は、本発明の実施の形態に係るモデル登録処理の処理内容を説明するための図である。図９は、モデル登録時に特徴部分の偏りが生じた場合の例を示す図である。
【００８２】
本実施の形態に係るモデル登録処理においては、入力画像内にモデルと一致する領域が存在するか否かを評価するための範囲において、モデルを示す特徴量（エッジコード）の偏りを少なくするようにモデル抽出を行う。すなわち、ワークモデルを撮像して得られる入力画像からモデルとして切り出す範囲内において、モデルが特定の部分に偏在しないようにする。これにより、サーチ精度を高める。
【００８３】
より具体的には、ワークモデルを撮像して得られる入力画像から、モデルとしてサーチしたい円状の領域を抽出する。これは、入力画像内に現れるオブジェクトは、モデルに対して何らかの相対角度をもって現れるので、このような場合であっても、評価される特徴量の偏在による影響を受けないようにするためである。
【００８４】
まず、図８（ａ）に示すように、ユーザは、ワークモデルを撮像して得られる入力画像ＩＭＧに対して、モデルとして登録したい範囲４０１を指定する。典型的には、画像処理装置１００は、ワークモデルを撮像して得られる入力画像（モデル画像）をディスプレイ１０２に表示するとともに、ユーザがマウス１０４を操作して入力する範囲を受付ける。このユーザが指定する範囲４０１は、基本的には任意の四角形である。なお、このユーザによる範囲指定に係るユーザインターフェイスについては、後述する。
【００８５】
次に、画像処理装置１００は、図８（ｂ）に示すように、ユーザが指定した範囲４０１を正方形のモデル抽出範囲４０２に整形する。典型的には、ユーザが指定したモデル抽出範囲の長辺側の長さが短辺側の長さと一致するように短くされる。
【００８６】
なお、これらの処理は、図７に示すモデル登録モジュール３０のモデル領域抽出機能３１が提供する。
【００８７】
さらに、画像処理装置１００は、図８（ｃ）に示すように、整形後のモデル抽出範囲４０２の外周側に存在する空白領域が除去されるように、モデル抽出範囲４０２を縮小して、モデル抽出範囲４０３を設定する。典型的には、モデル抽出範囲４０２内に現れる特徴量（エッジコード）あるいはエッジ自体が存在する位置まで、モデル抽出範囲４０２をより内側に縮小する。あるいは、モデル抽出範囲４０２の範囲内に含まれるエッジ点の総数に対して、所定の割合（たとえば、９５％）が含まれるまで、モデル抽出範囲４０２を縮小してモデル抽出範囲４０３を決定してもよい。この処理は、図７に示すモデル登録モジュール３０の空白領域除去機能３２が提供する。
【００８８】
なお、後述する粗サーチ処理での計算量を低減するために、モデル抽出範囲４０３を予め定められたブロックサイズ（ｎ画素×ｎ画素）の整数倍とすることが好ましい。
【００８９】
この空白領域除去機能について、図９を参照してより詳細に説明する。すなわち、図９（ａ）に示すようなモデル抽出領域ＷＤ１では、モデルとなるオブジェクトがその中心部に存在している。この場合には、オブジェクトの特徴量がモデル抽出領域ＷＤ１内のほぼ中心部に存在しているので、入力画像内のサーチされるべきオブジェクトが回転して現れていてもサーチ処理を比較的高精度に行うことができる。
【００９０】
これに対して、図９（ｂ）に示すようなモデル抽出領域ＷＤ２では、モデルとなるオブジェクトがその右下部に存在している。この場合には、オブジェクトの特徴量（エッジ点）がモデル抽出領域ＷＤ１の右下部に偏在することになるので、入力画像ＩＭＧ内のサーチされるべきオブジェクトの回転角度によっては、サーチ精度が低下する可能性がある。
【００９１】
そこで、本実施の形態においては、図８（ａ）〜図８（ｃ）に示すように、モデルが偏在しないようにモデル抽出範囲が設定される。
【００９２】
さらに、画像処理装置１００は、図８（ｄ）に示すように、モデル抽出範囲４０３（図８（ｃ））の内接円の範囲を最終的なモデル抽出範囲４０４として決定する。そして、このモデル抽出範囲４０４に含まれる画像情報がモデル情報として登録される。なお、この処理は、図７に示すモデル登録モジュール３０の内接円抽出機能３３が提供する。
【００９３】
この登録されるモデル情報は、モデル抽出範囲４０４に含まれる画像に対して抽出されるエッジコード画像４２、および、そのエッジコード画像４２を構成するエッジコードについてのヒストグラムであるエッジコードヒストグラム４１を含む。なお、エッジコード画像およびエッジコードヒストグラムの生成処理については、後述する。
【００９４】
このように、本実施の形態に係るモデル登録処理においては、モデル画像に対してモデルとすべき領域の指定を受付け、指定されたモデルとすべき領域を正方形に整形し、整形後の領域に内接する円の範囲に含まれるエッジコードからモデルのエッジコードヒストグラムを生成する。
【００９５】
上述のようなモデル登録処理での処理手順をまとめると、以下のようになる。
図１０は、本発明の実施の形態に係るモデル登録処理におけるより詳細な処理手順を示すフローチャートである。
【００９６】
図１０を参照して、ＣＰＵ１１０は、ワークモデルの撮像指令を受付ける（ステップＳ１１）。ユーザは、撮像装置８の視野内に基準とすべきワークモデルを配置した上で、画像処理装置１００に対して、マウス１０４などを操作して撮像指令を与える。ワークモデルの撮像指令に応答して、ＣＰＵ１１０は、撮像装置８に対して撮像コマンドを与えることで、ワークモデルを含む入力画像（モデル画像）を取得する（ステップＳ１２）。
【００９７】
続いて、ＣＰＵ１１０は、入力画像（モデル画像）をディスプレイ１０２に表示した上で、モデルとして登録したい範囲４０１の指定を受付ける（ステップＳ１３）。ユーザは、ディスプレイ１０２に表示される入力画像（モデル画像）に対して、マウス１０４などを操作してモデルとすべき範囲を指定する。モデルとして登録したい範囲４０１の入力に応答して、ＣＰＵ１１０は、入力画像（モデル画像）から指定された範囲に対応する部分画像を抽出する（ステップＳ１４）。
【００９８】
続いて、ＣＰＵ１１０は、抽出した部分画像を正方形の部分画像に整形する（ステップＳ１５）。さらに、ＣＰＵ１１０は、ステップＳ１５において整形された後の部分画像から特徴量を取得する（ステップＳ１６）。典型的には、ＣＰＵ１１０は、部分画像に対してエッジ抽出処理を行い、部分画像に含まれるエッジ点を取得する。さらに、ＣＰＵ１１０は、ステップＳ１６において取得された特徴量に基づいて、空白部分を除去するように、部分画像をより縮小する（ステップＳ１７）。
【００９９】
最終的に、ＣＰＵ１１０は、ステップＳ１７において縮小された後の部分画像に対する内接円の範囲をモデル領域として抽出する（ステップＳ１８）。そして、ステップＳ１８において抽出されたモデル領域に含まれる画像からモデル情報を生成するとともに、ハードディスク１１４などに格納する（ステップＳ１９）。そして、処理は、図６のステップＳ２へ進む。
【０１００】
《Ｈ．エッジコード画像生成処理》
次に、図６のステップＳ３に示すエッジコード画像生成処理について説明する。
【０１０１】
図１１は、図７に示すエッジコード画像生成モジュール２０のより詳細な機能を示すブロック図である。図１１を参照して、エッジコード画像生成モジュール２０は、水平エッジ強度検出部２１と、垂直エッジ強度検出部２２と、エッジ強度評価部２３と、エッジコード算出部２４とを含む。
【０１０２】
水平エッジ強度検出部２１は、入力画像に含まれる各画素について、隣接する画素の濃淡値に基づいて、水平方向のエッジ強度（水平エッジ強度Ａ）を算出する。同様に、垂直エッジ強度検出部２２は、入力画像に含まれる各画素について、隣接する画素の濃淡値に基づいて、垂直方向のエッジ強度（垂直エッジ強度Ｂ）を算出する。このようなエッジ強度の算出処理としては、公知の方法を採用することができるが、たとえば、隣接する画素間における濃淡値の差の最大値をエッジ強度とすることができる。
【０１０３】
エッジ強度評価部２３は、水平エッジ強度検出部２１および垂直エッジ強度検出部２２においてそれぞれ算出される水平エッジ強度Ａおよび垂直エッジ強度Ｂに基づいて、入力画像の各画素におけるエッジ強度を算出する。より具体的には、エッジ強度評価部２３は、以下に示す（１）式に従って、エッジ強度を算出する。
【０１０４】
エッジ強度＝√（Ａ２＋Ｂ２）  ・・・（１）
さらに、エッジ強度評価部２３は、上述の（１）式に従って算出されるエッジ強度と予め設定されるしきい値とを比較する。エッジ強度評価部２３は、算出されるエッジ強度がしきい値を超えていれば、対象の部分をエッジであると判定する。そして、エッジ強度評価部２３は、エッジであると判定した領域の座標（ｘ，ｙ）をエッジ点としてエッジコード算出部２４へ渡す。
【０１０５】
エッジコード算出部２４は、水平エッジ強度検出部２１および垂直エッジ強度検出部２２においてそれぞれ算出される水平エッジ強度Ａおよび垂直エッジ強度Ｂに基づいて、エッジであると判定された部分におけるエッジコード値を算出する。より具体的には、エッジコード算出部２４は、以下に示す（２）式に従って、角度Ｅｃを算出する。
【０１０６】
角度Ｅｃ＝ｔａｎ−１（Ｂ／Ａ）  ・・・（２）
なお、なお、エッジコード値を０°〜１８０°の範囲で定義する場合には、以下に示す（２’）式を用いてもよい。
【０１０７】
角度Ｅｃ＝ｔａｎ−１｜Ｂ／Ａ｜  ・・・（２’）
そして、エッジコード算出部２４は、エッジ強度評価部２３から与えられるエッジであると判定した部分の座標（ｘ，ｙ）と、算出した角度Ｅｃとを組合せて、エッジコード（エッジコード画像）として出力する。
【０１０８】
上述のようなエッジコード画像生成処理での処理手順をまとめると、以下のようになる。
【０１０９】
図１２は、本発明の実施の形態に係るエッジコード画像生成処理におけるより詳細な処理手順を示すフローチャートである。
【０１１０】
図１２を参照して、ＣＰＵ１１０は、入力画像に対して、水平方向のエッジ強度を画素毎に算出する（ステップＳ３１）とともに、垂直方向のエッジ強度を画素毎に算出する（ステップＳ３２）。なお、ステップＳ３１およびＳ３２の処理は、直列的に実行してもよいが、基本的には互いに独立して処理できるので、並列処理を行うことが好ましい。
【０１１１】
続いて、ＣＰＵ１１０は、入力画像の基準点の画素（典型的には、座標（０，０）の画素）を注目画素に設定する（ステップＳ３３）。そして、ＣＰＵ１１０は、注目画素についての水平エッジ強度および垂直エッジ強度（ステップＳ３１およびＳ３２において算出）を用いて、注目画素のエッジ強度を算出する（ステップＳ３４）。さらに、ＣＰＵ１１０は、ステップＳ３４において算出したエッジ強度が予め設定されるしきい値を超えているか否かを判断する（ステップＳ３５）。算出したエッジ強度が予め設定されるしきい値を超えている場合（ステップＳ３５においてＹＥＳの場合）には、ＣＰＵ１１０は、注目画素についての水平エッジ強度および垂直エッジ強度を用いて、エッジコード値である角度を算出する（ステップＳ３６）。
【０１１２】
一方、算出したエッジ強度が予め設定されるしきい値を超えていない場合（ステップＳ３５においてＮＯの場合）には、ステップＳ３６の処理はスキップされる。
【０１１３】
続いて、ＣＰＵ１１０は、入力画像のうち注目画素として設定していない部分が存在するか否かを判断する（ステップＳ３７）。入力画像のうち注目画素として設定していない部分が存在する場合（ステップＳ３７においてＹＥＳの場合）には、ＣＰＵ１１０は、入力画像の別の画素を新たな注目画素に設定する（ステップＳ３８）。そして、ステップＳ３４以下の処理が繰返される。
【０１１４】
これに対して、入力画像のうち注目画素として設定していない部分が存在しない場合（ステップＳ３７においてＮＯの場合）、すなわち、入力画像に含まれるすべての画素についての判定が完了した場合には、ＣＰＵ１１０は、ステップＳ３６において算出されたそれぞれの角度と各角度に対応する注目画素の座標位置とをセットにして、エッジコード画像として出力する（ステップＳ３９）。そして、処理は、図１２のステップＳ４へ進む。
【０１１５】
《Ｉ．粗サーチ処理》
次に、図６のステップＳ４に示す粗サーチ処理について説明する。
【０１１６】
図１３は、本実施の形態に係る粗サーチ処理において設定される注目領域について説明するための図である。図１４は、本実施の形態に係る粗サーチ処理におけるエッジコードヒストグラムについての比較処理を説明するための図である。図１５は、図１４に示すエッジコードヒストグラムの比較処理によって得られる結果の一例を示す図である。
【０１１７】
本実施の形態に係る粗サーチ処理においては、図５に示すようなエッジコードヒストグラムを用いたサーチ処理により、登録されているモデルと一致する領域が存在する可能性がある部分（候補点）をサーチする。特に、この粗サーチ処理においては、処理時間を短縮する観点から、粗サーチ処理をさらに２段階に分けて実行する（図７に示す粗サーチ（第１段）機能５１および粗サーチ（第２段）機能５２）。
【０１１８】
まず、本実施の形態に係る粗サーチ処理においては、図１３（ａ）に示すように、入力画像ＩＭＧに対して、注目領域４１０．１，４１０．２，…（以下、「注目領域４１０」とも総称する。）が順次設定されるとともに、この注目領域４１０に含まれる部分画像から得られるエッジコードヒストグラムと、予め登録したモデルを表すエッジコードヒストグラム４１（図７）とを逐次比較する。後述するように、粗サーチ処理の第１段と第２段との間では、この注目領域４１０を設定する間隔（移動量）が異なっている。
【０１１９】
この注目領域４１０のサイズは、基本的には、図８（ｃ）に示すモデル抽出範囲４０３と同じサイズとなっている。
【０１２０】
上述したように、エッジコード画像生成モジュール２０（図６）が入力画像から生成するエッジコード画像においては、エッジ点と判定された画素に対応付けてエッジコード値が格納されている。注目領域４１０が設定される毎に、その領域に含まれるエッジ点についてのエッジコード値を収集してエッジコードヒストグラムを生成することもできるが、本実施の形態においては、予め、入力画素を複数のブロックに区分した上で、各ブロック単位でエッジコードヒストグラムが生成される。
【０１２１】
より具体的には、図１３（ｂ）に示すように、ｎ画素×ｎ画素を１つのブロック単位とし、各ブロックに含まれる画素についてのエッジコード値から、当該ブロックについてのエッジコードヒストグラムが予め生成される。
【０１２２】
すなわち、エッジコードヒストグラムの生成処理においては、入力画像を予め定められたブロックサイズのブロックに分割するととも、各ブロックについてのエッジコードヒストグラムを生成し、入力画像に対する注目領域４１０の設定毎に、当該設定された注目領域４１０内に存在する１または複数のブロックについてのエッジコードヒストグラムを加算することで、当該注目領域４１０についてのエッジコードヒストグラムを生成する。なお、注目領域４１０のサイズは、ブロックサイズの整数倍に設定されているものとする。
【０１２３】
このようにブロック単位で予めエッジコードヒストグラムを生成しておけば、図１３（ａ）に示すように、注目領域４１０が異なる位置に順次設定される場合であっても、設定された注目領域４１０に含まれる複数のブロックにそれぞれ対応するヒストグラムをエッジコード値別に積算するだけで、当該注目領域４１０についてのエッジコードヒストグラムを短時間に生成できる。
【０１２４】
次に、具体的な評価処理の内容について、図１４および図１５を参照して説明する。
上述したように、本実施の形態に係る粗サーチ処理においては、モデルのエッジコードヒストグラムと注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムとを比較することで、モデルと一致する部分がサーチされる。
【０１２５】
図１４には、入力画像ＩＭＧのある位置に注目領域４１０を設定した場合における評価処理の例を示す。図１４（ａ）に示すように、まず、予め登録されたモデルのエッジコードヒストグラムに対する、ある位置に設定された注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムの差分が算出される。すなわち、２つのエッジコードヒストグラムについて、各対応するエッジコード値について両者の頻度（エッジ個数）の差分が計算される。なお、算出された差分値がマイナスとなる場合（すなわち、あるエッジコード値について、モデルの頻度より注目領域４１０の頻度が大きい場合）には、当該差分値をゼロとして扱う。これは、入力画像に混入するノイズの影響を回避する目的、および、処理を簡素化する目的のためである。
【０１２６】
この差分のヒストグラムの面積（頻度の累計値）が大きいほど、注目領域４１０に含まれる部分画像は予め登録されたモデルとは相違していることになる。すなわち、差分のヒストグラムの面積がモデルと注目領域４１０に含まれる部分画像との間の「不一致度」を示す指標となる。
【０１２７】
上述の図５を参照して説明したように、エッジコードヒストグラムは、入力画像内の対応するオブジェクトの回転角に応じて、全体形状を維持したままシフトする。一方、注目領域４１０内のサーチされるべきオブジェクトが、登録されているモデルに対してある角度だけ回転した状態で存在する場合もある。そこで、本実施の形態に係る粗サーチ処理においては、モデルのエッジコードヒストグラムと注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムとの間の相対的な位置関係（エッジコード値／角度）を順次異ならせていき、両者が近似した全体形状を有しているか否かを判断する。
【０１２８】
すなわち、図１４（ｂ）に示すように、モデルについてのエッジコードヒストグラムを所定角度ずつシフトさせるとともに、各シフト後の状態における差分のヒストグラムを評価する。なお、エッジコード値は角度であるので、３６０°（または、１８０°）で一周する。そのため、回転角度を増減させることは、エッジコードヒストグラムに対して、いずれの位置を基準（ゼロ）とするのかを変更することになる。
【０１２９】
図１４（ｂ）においては、ある回転角度において、モデルのエッジコードヒストグラムの全体形状と、注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムの全体形状とがほぼ一致した状態を示す。この場合には、差分のヒストグラムとしては、相対的に小さな振幅の波形が現れるだけであり、ヒストグラムの面積は小さくなる。
【０１３０】
なお、図１４（ｂ）には、モデルのエッジコードヒストグラムを固定しておき、注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムをシフトさせる処理例を示すが、注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムを固定しておき、モデルのエッジコードヒストグラムをシフトさせるようにしてもよい。すなわち、２つのエッジコードヒストグラム間の相対的な位置関係（角度）を異ならせるようにすれば、いずれの方法を採用してもよい。
【０１３１】
図１５には、２つのエッジコードヒストグラム間の相対的な位置関係（角度）を複数に異ならせた場合に算出される一致度の変化を示す。なお、図１５に示す「一致度」は、上述の「不一致度」と対極にある概念であり、たとえば、「不一致度」の逆数（「一致度」＝１／「不一致度」）、あるいは、「不一致度」の最大値からの偏差（「一致度」＝不一致度の最大値−「不一致度」）として算出される。
【０１３２】
すなわち、本実施の形態におけるエッジコードヒストグラム間の「一致度」は、対象となる２つのエッジコードヒストグラム間の差分ヒストグラムにおける頻度の累積値（面積）から算出される。
【０１３３】
図１５に示すように、モデルのエッジコードヒストグラムと注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムとの間の相対的な位置関係を逐次シフトさせて得られる一致度が所定のしきい値を超えていれば、当該注目領域４１０にモデルと近似したオブジェクトが存在する確率が高いことになる。
【０１３４】
また、注目領域４１０内に予め登録したモデルと近似したオブジェクトが存在する場合には、いずれかの回転角度において一致度が増大する。図１５に示す例では、回転角度θ１およびθ２において一致度が増大している（極大点）。
【０１３５】
そのため、本実施の形態に係る粗サーチ処理の第１段においては、設定される注目領域４１０の各々について、それに含まれる部分画像についてのエッジコードヒストグラムとモデルのエッジコードヒストグラムとの間の相対的な位置関係を逐次シフトさせて得られる一致度の最大値が所定のしきい値を超えていれば、その注目領域４１０の設定位置が第１段の候補点として抽出される。
【０１３６】
なお、この第１段の候補点の抽出処理においては、注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムとモデルのエッジコードヒストグラムとの間の相対的な位置関係を逐次シフトさせて得られる不一致度の最小値が、しきい値を下回るか否かで判断してもよい。
【０１３７】
また、本実施の形態に係る粗サーチ処理の第２段においては、上述のように、２つのエッジコードヒストグラム間の相対的な位置関係を逐次シフトさせて得られる一致度の最大値が所定のしきい値を超えている位置が第２段の候補点として抽出するとともに、一致度の極大点に対応する回転角度が当該候補点における候補角度として抽出される。なお、一致度の最大点に対応する回転角度を抽出してもよいが、たとえば、モデルが対称的な形状を有している場合には、入力画像内のオブジェクトがモデルに対して１８０°回転している場合であっても一致度は相対的に大きくなる。そのため、一致度の最大点に対応する回転角度のみを抽出するのでは、本来抽出すべき回転角度が排除される可能性がある。そのため、粗サーチ処理の段階では、可能性のある回転角度について排除されないように、極大値を生じる回転角度を候補角度として抽出する。
【０１３８】
ここで、粗サーチ処理の第１段および第２段について説明しておく。
図１６は、本実施の形態に係る粗サーチ処理における第１段および第２段の内容を説明するための図である。特に、図１６（ａ）には、粗サーチ処理の第１段において注目領域４１０を設定する処理を示し、図１６（ｂ）には、粗サーチ処理の第２段において注目領域４１０を設定する処理を示す。
【０１３９】
図１６（ａ）に示すように、粗サーチ処理の第１段（図７の粗サーチ（第１段）機能５１）においては、入力画像ＩＭＧに対して、相対的に広い間隔を空けて注目領域４１０が順次設定される。なお、この注目領域４１０を設定する間隔（移動量）は、後述するユーザが設定する「移動量」の整数倍（たとえば２倍）とされてもよい。
【０１４０】
この粗サーチ処理の第１段においては、設定される複数の注目領域４１０のうち、各注目領域４１０について得られた一致度が第１段のしきい値を超えているものを第１段の候補点として抽出するとともに、その第１の候補点についての一致度の変化に現れた極大点に対応する回転角度が第１段の候補角度として抽出される。
【０１４１】
続いて、粗サーチ処理の第２段（図７の粗サーチ（第２段）機能５２）においては、図１６（ｂ）に示すように、第１段の候補点に対応する注目領域４１０ａを中心として、その近傍に複数の注目領域４１０ｂ〜４１０ｉが設定される。なお、近傍に設定する注目領域の数は、図１６（ｂ）に示すような８個に限定されることなく、処理精度や処理速度に応じて、適宜設定される。
【０１４２】
そして、注目領域４１０ａ〜４１０ｉの各々について、上述と同様に、エッジコードヒストグラム間の相対的な位置関係を逐次シフトさせて得られる一致度の変化が算出される。このとき、粗サーチ処理の第１段において抽出された対応する第１段の候補角度（シフト角度）を中心とする所定範囲における一致度の変化が算出される。すなわち、算出される一致度の変化は、すべての回転角度ではなく、第１段の候補角度を中心とする所定範囲に限定される。
【０１４３】
さらに、設定される複数の注目領域４１０ａ〜４１０ｉのうち、各注目領域について得られた一致度が第２段のしきい値を超えているものを第２段の候補点として抽出するとともに、その第２の候補点についての一致度の変化に現れた極大点に対応する回転角度が第２段の候補角度として抽出される。
【０１４４】
ここで、上述の条件だけでは、入力画像中に多数の候補点が抽出される場合があるので、入力画像内でかたまって抽出された第２段の候補点のみを粗サーチ処理による候補点することが好ましい。具体的には、抽出された第２の候補点の集合に対して、クラスタリング処理を行うことで、グループに分類する。そして、所定数の第２の候補点を含むグループ内から粗サーチ処理による候補点が抽出される。このとき、抽出された第２の候補点に対応する第２の候補角度も抽出される。
【０１４５】
このように粗サーチ処理により抽出された、候補点（第２の候補点）の座標位置（ｘ，ｙ）および候補角度（第２の候補角度）θが、後段の詳細サーチ処理に用いられる。
【０１４６】
すなわち、本実施の形態に係る粗サーチ処理においては、入力画像に対する注目領域４１０の設定、注目領域４１０についてのエッジコードヒストグラムの生成、および、モデルのエッジコードヒストグラムと注目領域４１０についてのエッジコードヒストグラムとの間の相対的な位置関係を順次異ならせるとともに、各相対位置におけるエッジコードヒストグラム間の一致度の順次算出という手順を経て、一致度（の変化）を算出する。そして、算出されたエッジコードヒストグラム間の一致度の変化から、設定されている注目領域４１０にモデルと一致する領域が含まれている可能性を評価する。このような処理を、入力画像に対して注目領域４１０の位置を異ならせて順次設定するとともに、各注目領域４１０について評価を繰返すことで、入力画像内においてモデルと一致する可能性がある候補点を特定する。
【０１４７】
また、第１段の粗サーチ処理においては、入力画像に対して第１の間隔で注目領域４１０を順次配置することで、当該第１の間隔の単位で候補点を仮決めする。そして、第２段の粗サーチ処理において、入力画像に対して、当該仮決めした候補点を含む近傍の複数の位置に、第１の間隔より短い第２の間隔で注目領域４１０を順次配置することで、第２の間隔の単位で候補点を決定する。この第２段の粗サーチ処理においては、決定された候補点において、エッジコードヒストグラム間の一致度が極大値をとる、モデルのエッジコードヒストグラムと注目領域４１０についてのエッジコードヒストグラムとの間の相対的な位置関係に対応する回転角度を、当該候補点に対応する候補角度として決定する。
【０１４８】
上述のような粗サーチ処理での処理手順をまとめると、以下のようになる。
図１７は、本発明の実施の形態に係る粗サーチ処理におけるより詳細な処理手順を示すフローチャートである。
【０１４９】
図１７を参照して、ＣＰＵ１１０は、エッジコード画像生成処理において生成されたエッジコード画像に基づいて、図１３に示すようなブロック毎にエッジコードヒストグラムを生成する（ステップＳ４０１）。
【０１５０】
まず、ＣＰＵ１１０は、第１段の粗サーチ処理を実行する。すなわち、ＣＰＵ１１０は、注目領域４１０を初期位置に設定する（ステップＳ４０２）。続いて、ＣＰＵ１１０は、設定した注目領域４１０に含まれる複数のブロックのそれぞれについてのエッジコードヒストグラムから、当該注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムを算出する（ステップＳ４０３）。
【０１５１】
続いて、ＣＰＵ１１０は、注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムと登録されているモデルのエッジコードヒストグラムとの間の差分のヒストグラムを算出する（ステップＳ４０４）。そして、ＣＰＵ１１０は、算出した差分のヒストグラムの面積から一致度を算出する（ステップＳ４０５）。この算出される一致度は、当該時点のシフト角と対応付けて記憶される。
【０１５２】
ＣＰＵ１１０は、注目領域４１０に含まれる部分画像についての当初のエッジコードヒストグラムが最大角度までシフト済であるか否かを判断する（ステップＳ４０６）。すなわち、モデルのエッジコードヒストグラムと注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムとの間の相対的な位置関係を逐次シフトさせて得られるすべての一致度について評価が完了しているか否かが判断される。
【０１５３】
注目領域４１０に含まれる部分画像についての当初のエッジコードヒストグラムが最大角度までシフト済ではない場合（ステップＳ４０６においてＮＯの場合）には、ＣＰＵ１１０は、注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムを所定角度だけシフトして、新たなエッジコードヒストグラムを生成する（ステップＳ４０７）。そして、ステップＳ４０４以下の処理が繰返される。
【０１５４】
これに対して、注目領域４１０に含まれる部分画像についての当初のエッジコードヒストグラムが最大角度までシフト済である場合（ステップＳ４０６においてＹＥＳの場合）には、処理はステップＳ４０８へ進む。この時点で、シフト角に対する一致度の変化が取得される。
【０１５５】
ステップＳ４０８において、ＣＰＵ１１０は、算出した一致度が第１段のしきい値を超えているか否かを判断する（ステップＳ４０８）。
【０１５６】
算出した一致度が第１段のしきい値を超えている場合（ステップＳ４０８においてＹＥＳの場合）には、ＣＰＵ１１０は、現在設定されている注目領域４１０の座標位置を第１段の候補点として抽出する（ステップＳ４０９）。そして、ＣＰＵ１１０は、取得された一致度の変化に現れた極大点に対応するシフト角（回転角度）を第１段の候補角度として抽出する。そして、処理はステップＳ４１１へ進む。
【０１５７】
これに対して、算出した一致度が第１段のしきい値を超えていない場合（ステップＳ４０８においてＮＯの場合）には、ステップＳ４０９およびＳ４１０の処理がスキップされて、処理はステップＳ４１１へ進む。
【０１５８】
ステップＳ４１１において、ＣＰＵ１１０は、注目領域４１０を設定すべき位置が残っているか否かを判断する（ステップＳ４１１）。注目領域４１０を設定すべき位置が残っている場合（ステップＳ４１１においてＹＥＳの場合）には、ＣＰＵ１１０は、注目領域４１０を別の位置に設定する（ステップＳ４１２）。そして、ステップＳ４０３以下の処理が繰返される。
【０１５９】
なお、ステップＳ４０３において算出するエッジコードヒストグラムを構成するエッジ点の数が、モデルから抽出されているエッジ点の数に比較して十分に小さい場合には、その注目領域４１０についてのステップＳ４０４〜Ｓ４１０の処理をスキップしてもよい。
【０１６０】
これに対して、注目領域４１０を設定すべき位置が残っていない場合（ステップＳ４１１においてＮＯの場合）、すなわち、粗サーチ処理の第１段において設定すべきすべての注目領域４１０についての評価が完了した場合には、ＣＰＵ１１０は、抽出された第１段の候補点に基づいて、第２段の粗サーチ処理を実行する。
【０１６１】
すなわち、ＣＰＵ１１０は、取得された第１段の候補点群のうち１番目の候補点を中心として、複数の注目領域４１０を設定する（ステップＳ４１３）。
【０１６２】
続いて、設定された複数の注目領域４１０のうち１番目の注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムを算出する（ステップＳ４１４）。
【０１６３】
続いて、ＣＰＵ１１０は、算出されたエッジコードヒストグラムと登録されているモデルのエッジコードヒストグラムとの相対的な位置関係を逐次シフトさせて、当該注目領域４１０についての一致度の変化を算出する(ステップＳ４１５）。このとき、ＣＰＵ１１０は、現在設定されている第１段の候補点に対応する第１段の候補角度（シフト角度）を中心とする所定範囲における一致度の変化を算出する。
【０１６４】
そして、ＣＰＵ１１０は、算出した一致度の変化における最大値が第２段のしきい値を超えているか否かを判断する（ステップＳ４１６）。算出した一致度の変化における最大値が第２段のしきい値を超えている場合（ステップＳ４１６においてＹＥＳの場合）には、ＣＰＵ１１０は、算出した一致度の変化に現れる極大点のうち、第２段のしきい値を超えている極大点に対応するシフト角を抽出する（ステップＳ４１７）。そして、ＣＰＵ１１０は、現在設定されている注目領域４１０の座標位置と関連付けて記憶する。この座標位置が第２の候補点となり、シフト角（回転角度）が第２の候補角度となる。
【０１６５】
なお、算出した一致度の変化に現れるいずれの極大点についても第２段のしきい値を超えていなければ、シフト角は抽出されない。
【０１６６】
なお、算出した一致度の変化における最大値が第２段のしきい値を超えていない場合（ステップＳ４１６においてＮＯの場合）には、ステップＳ４１７の処理はスキップされる。
【０１６７】
続いて、ＣＰＵ１１０は、設定されている複数の注目領域４１０のうち未だ評価されていないものが存在するか否かを判断する（ステップＳ４１８）。すなわち、エッジコードヒストグラムの算出や一致度の変化の算出がなされていない注目領域４１０が残っているか否かが判断される。
【０１６８】
設定されている複数の注目領域４１０のうち未だ評価されていないものが存在する場合（ステップＳ４１８においてＹＥＳの場合）には、ＣＰＵ１１０は、設定された複数の注目領域４１０のうち残りの注目領域４１０に含まれる部分画像についてのエッジコードヒストグラムを算出する（ステップＳ４１９）。そして、ステップＳ４１５以下の処理が繰返される。
【０１６９】
これに対して、設定されている複数の注目領域４１０のうち未だ評価されていないものが存在しない場合（ステップＳ４１８においてＮＯの場合）には、ＣＰＵ１１０は、取得された第１段の候補点群のうち複数の注目領域４１０が未だ設定されていないものが存在するか否かを判断する（ステップＳ４２０）。すなわち、第１段の候補点群を中心とした第２段の粗サーチ処理のすべてが完了したか否かが判断される。
【０１７０】
取得された第１段の候補点群のうち複数の注目領域４１０が未だ設定されていないものが存在する場合（ステップＳ４２０においてＹＥＳの場合）には、ＣＰＵ１１０は、取得された第１段の候補点群のうち別の候補点を中心として、複数の注目領域４１０を設定する（ステップＳ４２１）。そして、ステップＳ４１４以下の処理が繰返される。
【０１７１】
取得された第１段の候補点群のうち複数の注目領域４１０が未だ設定されていないものが存在しない場合（ステップＳ４２０においてＮＯの場合）には、ＣＰＵ１１０は、ステップＳ４１７において抽出した第２の候補点に対してクラスタリング処理を行うことで、入力画像内でかたまって抽出された第２の候補点から粗サーチ処理による候補点を抽出する（ステップＳ４２２）。そして、ＣＰＵ１１０は、ステップＳ４２２において抽出した候補点および対応する第２の候補角度（ステップＳ４１７において抽出したシフト角度）を、粗サーチ処理による候補点（座標位置）および候補角度として出力する（ステップＳ４２３）。
【０１７２】
そして、処理は、図１２のステップＳ５へ進む。
なお、上述のステップＳ４０６において用いられる第１段のしきい値、および、Ｓ４１６において用いられる第２段のしきい値は、各段階のサーチ処理において必要な精度に応じて任意に決定できる。もちろん、第１段のしきい値および第２段のしきい値を同一の値に設定してもよい。一例として、モデルから抽出されたエッジ点の数にユーザが入力する値（図２５に示す候補点レベル）を乗じた値を第１段および第２段のしきい値としてもよい。
【０１７３】
《Ｊ．詳細サーチ処理》
次に、図６のステップＳ５に示す詳細サーチ処理について説明する。
【０１７４】
本実施の形態に係る詳細サーチ処理においては、上述の粗サーチ処理とは異なり、モデルとして登録されているエッジコード画像４２との間の一致度（典型的には、相関値）を算出することで、入力画像内におけるモデルと一致するオブジェクトが存在する領域がサーチされる。
【０１７５】
このとき、モデルを表わすエッジコード画像との間で相関値を算出するための注目領域は、上述の粗サーチ処理により抽出された候補点および候補角度を中心とする範囲に設定される。
【０１７６】
図１８は、本発明の実施の形態に係る詳細サーチ処理について説明するための図である。特に、図１８（ａ）には、登録されているエッジコード画像４２の状態の一例を示し、図１８（ｂ）には、詳細サーチ処理中におけるエッジコード画像４２の状態の一例を示す。図１８（ａ）に示すように、本実施の形態に係る詳細サーチ処理においては、モデルを表すエッジコード画像４２と入力画像ＩＭＧに設定される注目領域４２０に含まれる部分画像（オブジェクト）についてのエッジコード画像との間で、一致度が算出される。この一致度は、典型的には相関値として算出される。具体的には、モデルのエッジコード画像４２と注目領域４２０のエッジコード画像との間で、抽出された対応するエッジについての位置偏差および角度偏差に基づいて相関値が算出される。すなわち、２つのエッジコード画像の間で、抽出されたエッジの位置および当該エッジにおける角度がいずれも近似していれば、相関値が高くなる。
【０１７７】
本実施の形態に係るパターンマッチング処理においては、予め登録されたモデルと一致するオブジェクトが存在する位置（計測座標）、および、登録されているモデルを基準とした場合のオブジェクトの傾き（候補角度）を出力する。そのため、入力画像ＩＭＧの異なる位置に注目領域４２０を順次設定するとともに、各注目領域４２０に含まれる部分画像とモデルとの間の回転角度を順次変化させて、相関値が順次算出される。
【０１７８】
特に、本実施の形態に係る詳細サーチ処理においては、粗サーチ処理により得られた候補点またはその周辺に注目領域４２０が設定される。さらに、モデルのエッジコード画像または設定された注目領域４２０に含まれる部分画像が、粗サーチ処理により得られた候補角度またはその近傍値だけ回転させられる。このように、粗サーチ処理の結果を用いて初期設定を変更することで、サーチ処理に要する計算量を低減することができる。
【０１７９】
なお、本実施の形態に係る詳細サーチにおいても、２段階に分けて処理実行される（図７に示す詳細サーチ（第１段）機能６１および詳細サーチ（第２段）機能６２）。詳細サーチ処理の第１段においては、予め設定された間隔で注目領域４２０を移動させていくことでモデルとの一致度（相関値）を順次評価する。そして、詳細サーチ処理の第２段においては、高い相関値を示す位置の周辺に複数の注目領域４２０を設定した場合に算出される相関値の変化特性を補間して、そのピーク位置を特定することで、予め設定された移動間隔より小さい間隔（高い精度）でモデルと一致するオブジェクトの位置を特定する。これにより、１画素（ピクセル）単位で注目領域４２０を移動させてサーチを行う場合であっても、それより小さいサブピクセルの単位で計測座標を算出することができる。
【０１８０】
さらに、後述するように、計測座標および計測角度として出力可能な範囲について条件（判定条件）を設定することもできる。すなわち、ユーザは、誤ったサーチ結果が出力されないように、パターンマッチングにより得られる結果に対して条件を設定しておくこともできる。この場合には、抽出された計測座標および計測角度が判定条件を満たしているか否かを判断し、判定条件を満たしているもののみを出力する。
【０１８１】
なお、本実施の形態に係る詳細サーチ処理のより詳細な手順（たとえば、相関値の算出方法など）については、上述の特許文献１〜特許文献３を参照されたい。
【０１８２】
すなわち、本実施の形態に係る詳細サーチ処理においては、入力画像に対して、粗サーチにより抽出された候補点を含む近傍の複数の位置に注目領域４２０を設定するとともに、モデルを示すエッジコード画像を各候補点に対応する候補角度を含む近傍の複数の角度に回転させた場合に得られる複数のエッジコード画像を用意する。そして、モデルのエッジコード画像を回転させて得られる複数種類のエッジコード画像の各々と、複数の注目領域４２０についてのエッジコード画像の各々との間の一致度を算出することで、入力画像内においてモデルと一致する領域を特定する。
【０１８３】
上述のような粗サーチ処理での処理手順をまとめると、以下のようになる。
図１９は、本発明の実施の形態に係る詳細サーチ処理におけるより詳細な処理手順を示すフローチャートである。
【０１８４】
図１９を参照して、ＣＰＵ１１０は、粗サーチ処理において取得された候補点と候補角度との組合せのうち、１番目の組合せの候補点を中心として、複数の注目領域４２０を設定する（ステップＳ５０１）。より具体的には、ＣＰＵ１１０は、当該組合せの候補点の座標位置を中心として、その周辺に所定数の注目領域４２０を設定する。また、ＣＰＵ１１０は、当該組合せの候補角度を中心として、モデルについて所定数の回転角度を設定する（ステップＳ５０２）。続いて、ＣＰＵ１１０は、ステップＳ５０１において設定された注目領域４２０に含まれる部分画像のエッジコード画像と、ステップＳ５０２において設定された回転角度だけ回転後のモデルのエッジコード画像との間で、相関値をそれぞれ算出する（ステップＳ５０３）。すなわち、ＣＰＵ１１０は、ステップＳ５０１において設定した注目領域４２０の数と、ステップＳ５０２において設定された回転角度の数との積の相当する数の相関値を算出する。
【０１８５】
続いて、ＣＰＵ１１０は、算出された複数の相関値のうち、予め定められたしきい値を超えるもののうち最大値となるものを抽出する（ステップＳ５０４）。このとき、ＣＰＵ１１０は、相関値が予め定められたしきい値を超えるとともに、予め定められた判定条件を満たすもののみを抽出するようにしてもよい。
【０１８６】
続いて、ＣＰＵ１１０は、最大値の相関値を示す注目領域４２０に隣接して設定された複数の注目領域４２０について算出された相関値を取得する（ステップＳ５０５）。そして、ＣＰＵ１１０は、最大値の相関値を示す注目領域４２０およびその近傍の注目領域４２０の座標位置と、それぞれ対応する相関値との関係から、座標位置に対する相関値についての補間式を算出する（ステップＳ５０６）。さらに、ＣＰＵ１１０は、ステップＳ５０６において算出した補間式において、相関値が最大値となる座標位置を算出する（ステップＳ５０７）。すなわち、予め設定された間隔で離散的に配置される注目領域４２０の各々における相関値を用いて、座標位置と相関値との関係を示す関数を算出し、この算出した関数から、相関値が最も高くなる座標位置が算出される。
【０１８７】
そして、ＣＰＵ１１０は、算出した座標位置（計測座標）およびそのときの相関値を、詳細サーチ処理のサーチ結果として出力する（ステップＳ５０８）。なお、回転角度については、ステップＳ５０４において抽出した相関値が最大値となる注目領域４２０に設定されていた回転角度がサーチ結果として出力される。
【０１８８】
その後、ＣＰＵ１１０は、粗サーチ処理において取得された候補点と候補角度との組合せのうち、詳細サーチ処理が実行されていないものが存在するか否かを判断する（ステップＳ５０９）。詳細サーチ処理が実行されていないものが存在する場合（ステップＳ５０９においてＹＥＳの場合）には、ＣＰＵ１１０は、粗サーチ処理において取得された候補点と候補角度との組合せのうち、別の組合せの候補点を中心として、複数の注目領域４２０を設定する（ステップＳ５１０）とともに、当該組合せの候補角度を中心として、モデルについて所定数の回転角度を設定する（ステップＳ５１１）。そして、ステップＳ５０３以下の処理が繰返される。
【０１８９】
これに対して、詳細サーチ処理が実行されていないものが存在しない場合（ステップＳ５０９においてＮＯの場合）、すなわち、粗サーチ処理において取得された候補点と候補角度との組合せのすべてに対して詳細サーチ処理が完了した場合には、処理は、図１２のステップＳ６へ進む。
【０１９０】
《Ｋ．角度サーチ処理》
次に、図６のステップＳ６に示す角度サーチ処理について説明する。
【０１９１】
上述の詳細サーチ（第２段）においては、座標位置と相関値との関係を示す補間式を算出し、この算出した補間式を用いて最も相関値が高くなる座標位置が算出される。これにより、離散的に注目領域４２０が設定される場合であっても、より詳細にモデルと一致する領域を特定することができる。
【０１９２】
本実施の形態に係る角度サーチ処理においては、このような座標位置についての処理と同様の処理を回転角度についても行う。但し、回転角度の特定については、上述のエッジコードヒストグラムが用いられる。
【０１９３】
図２０は、本発明の実施の形態に係る角度サーチ処理について説明するための図である。特に、図２０（ａ）には、モデルについてのエッジコードヒストグラムおよび注目領域に含まれる部分画像についてのエッジコードヒストグラムの一例を示し、図２０（ｂ）には、回転角度についての補間式の一例を示す。
【０１９４】
図２０（ａ）には、先に実行された詳細サーチ処理において得られた回転角度だけモデルを回転させた場合に得られるエッジコードヒストグラムの一例、および、当該詳細サーチ処理において得られた座標位置（計測座標）に注目領域４２０が設定された場合に得られるエッジコードヒストグラムの一例を示す。
【０１９５】
本実施の形態に係る角度サーチ処理においては、２つのエッジコードヒストグラムの間の一致度が最も高くなる回転角度を補間式から算出する。
【０１９６】
より具体的には、角度サーチ処理において算出された最大の相関値を示す回転角度およびその近傍の回転角度と、それぞれに対応する一致度との関係から、回転角度に対する一致度についての補間式が算出される。すなわち、図２０（ｂ）に示すように、離散的に設定されるそれぞれの回転角度と一致度（図２０（ｂ）におけるプロット）との関係から、補間式が算出（放物線補間）され、この算出された補間式が最大値（極大値）をとる回転角度が計測角度として出力される。たとえば、モデルを１°ずつ回転させて得られる一致度についての補間式から、１°より小さい精度で計測角度を算出できる。
【０１９７】
すなわち、本実施の形態に係る角度サーチ処理においては、モデルのエッジコードヒストグラムと詳細サーチ処理により特定されたモデルと一致する領域（各計測座標）についてのエッジコードヒストグラムとの間の相対的な位置関係を複数に異ならせた場合に得られる、エッジコードヒストグラム間の一致度の変化を用いて、詳細サーチ処理において特定されたモデルと一致する領域に存在するオブジェクトのモデルに対する回転角度を算出する。
【０１９８】
上述のような角度サーチ処理での処理手順をまとめると、以下のようになる。
図２１は、本発明の実施の形態に係る角度サーチ処理におけるより詳細な処理手順を示すフローチャートである。
【０１９９】
図２１を参照して、ＣＰＵ１１０は、詳細サーチ処理においてサーチ結果として出力される、計測座標と回転角度との組合せのうち、１番目の組合せの計測座標に注目領域を設定した場合に含まれる部分画像から、エッジコードヒストグラムを算出する（ステップＳ６１）。
【０２００】
また、ＣＰＵ１１０は、モデルのエッジコードヒストグラムを当該組合せの回転角度だけ回転させたエッジコードヒストグラムを算出する（ステップＳ６２）。さらに、ＣＰＵ１１０は、ステップＳ６２において用いた回転角度を中心として複数の回転角度を設定するとともに、モデルのエッジコードヒストグラムを当該設定した回転角度だけそれぞれ回転させた複数のエッジコードヒストグラムを算出する（ステップＳ６３）。
【０２０１】
続いて、ステップＳ６１において算出した注目領域についてのエッジコードヒストグラムと、ステップＳ６２およびＳ６３において算出したモデルについての複数のエッジコードヒストグラムとの間の一致度を算出する（ステップＳ６４）。そして、ＣＰＵ１１０は、それぞれの回転角度と対応する一致度の大きさとの関係から、回転角度に対する一致度についての補間式を算出する（ステップＳ６５）。さらに、ＣＰＵ１１０は、ステップＳ６５において算出した補間式において、一致度が最大値となる回転角度（計測角度）を算出する（ステップＳ６６）。すなわち、予め設定された間隔で離散的に配置される回転角度について算出される一致度を用いて、回転角度と一致度との関係を示す関数を算出し、この算出した関数から、最も一致度が高くなる回転角度が計測座標として決定される。
【０２０２】
その後、ＣＰＵ１１０は、詳細サーチ処理においてサーチ結果として出力される、計測座標と回転角度との組合せのうち、角度サーチ処理が実行されていないものが存在するか否かを判断する（ステップＳ６７）。
【０２０３】
角度サーチ処理が実行されていないものが存在する場合（ステップＳ６７においてＹＥＳの場合）には、ＣＰＵ１１０は、詳細サーチ処理においてサーチ結果として出力される、計測座標と回転角度との組合せのうち、別の組合せの計測座標に注目領域を設定した場合に含まれる部分画像から、エッジコードヒストグラムを算出する（ステップＳ６８）とともに、モデルのエッジコードヒストグラムを当該組合せの回転角度だけ回転させたエッジコードヒストグラムを算出する（ステップＳ６９）。そして、ステップＳ６３以下の処理が繰返される。
【０２０４】
角度サーチ処理が実行されていないものが存在しない場合（ステップＳ６７においてＮＯの場合）には、処理は、図１２のステップＳ７へ進む。
【０２０５】
《Ｌ．近接点除去処理》
次に、図６のステップＳ７に示す近接点除去処理について説明する。
【０２０６】
上述の一連のサーチ処理によって抽出されたサーチ結果に、同一のオブジェクトに起因するものが複数存在する可能性がある。そこで、本実施の形態に係る近接点除去処理においては、同一のオブジェクトに起因して重複して抽出された計測結果（計測座標および計測角度）を除去する。
【０２０７】
図２２は、本発明の実施の形態に係る近接点除去処理について説明するための図である。特に、図２２（ａ）には、ユーザが指定したモデルの範囲４０１の一例を示し、図２２（ｂ）には、入力画像ＩＭＧに対してパターンマッチング処理が行われた結果の一例を示す。
【０２０８】
図２２（ａ）に示すように、十字のマークを含む画像がモデルとして登録されると、モデルを９０°ずつ回転させた場合にも高い相関値が現れるので、たとえば、図２２（ｂ）に示すように、同一のオブジェクトに起因して２つのサーチ結果Ｒ１およびＲ３が算出される場合も考えられる。なお、図２２（ｂ）において、サーチ結果Ｒ２は、別のオブジェクトに対してマッチングされたものであるとする。
【０２０９】
このような場合、サーチ結果Ｒ２はそのまま有効なものとして取扱う一方で、サーチ結果Ｒ１およびＲ３のいずれか一方は除去する必要がある。そこで、本実施の形態に係る近接点除去処理においては、一連のサーチ処理（粗サーチ処理、詳細サーチ処理、角度サーチ処理）により得られたサーチ結果に基づいて抽出されるそれぞれの領域（図２２（ｂ）に示すサーチ結果Ｒ１，Ｒ２，Ｒ３）の間の近接度合いを評価し、近接しているものが存在すれば、より相関値の低いものを除去する。
【０２１０】
より具体的には、図２２（ｂ）に示すように抽出された各領域に対して、それに内接する楕円を設定するとともに、２つの領域について、それぞれ設定した楕円の中心位置の距離が近接していれば、当該２つの領域は近接点であると判定する。そして、近接していると判断された２つの領域のうち、その相関値がより小さいものが除去される。
【０２１１】
より具体的には、設定された楕円のうち互いに交差するものを近接していると判定する。このように、各領域に楕円を設定するのは、互いに交差するか否かを容易に判定できるからである。すなわち、図２２（ｂ）に示すように、楕円の短軸半径をａとし、楕円の長軸半径をｂとすると、２つの楕円の中心点間の距離が（ａ＋ｂ）／２より大きければ、当該２つの楕円は交差せず、２つの楕円の中心点間の距離が（ａ＋ｂ）／２以下であれば、当該２つの楕円は交差することになる。そのため、本実施の形態に係る近接点除去処理においては、抽出された領域毎に楕円を設定するとともに、設定される楕円の短軸半径と長軸半径との平均値をしきい値として、任意の２つの楕円の間の中心間距離を順次評価する。
【０２１２】
このようにして、入力画像内の同一のオブジェクトに対して重複して抽出されたサーチ結果が除去される。
【０２１３】
上述のような角度サーチ処理での処理手順をまとめると、以下のようになる。
図２３は、本発明の実施の形態に係る近接点除去処理におけるより詳細な処理手順を示すフローチャートである。
【０２１４】
図２３を参照して、ＣＰＵ１１０は、先のサーチ処理によって抽出された計測座標および計測角度の組合せの各々に基づいて、入力画像内にサーチ結果領域を設定する（ステップＳ７１）。続いて、ＣＰＵ１１０は、ステップＳ７１において設定した各サーチ結果領域内に内接する楕円を設定する（ステップＳ７２）。
【０２１５】
続いて、ＣＰＵ１１０は、ステップＳ７２において設定した２つの楕円の間で中心点間の距離を算出する（ステップＳ７３）。そして、ＣＰＵ１１０は、中心点間の距離が所定のしきい値以下である２つの楕円について、対応するそれぞれの相関値を取得する（ステップＳ７４）。このしきい値は、設定される楕円の短軸半径と長軸半径との平均値に設定される。
【０２１６】
さらに、ＣＰＵ１１０は、取得した相関値がより小さいサーチ結果領域に対応する、計測座標および計測角度の組合せを削除する（ステップＳ７５）。
【０２１７】
最終的に、ＣＰＵ１１０は、先のサーチ処理によって抽出された計測座標および計測角度の組合せのうち、ステップＳ７５において削除されなかったものをサーチ結果として出力する（ステップＳ７６）。その後、処理は、図１２のステップＳ８へ進む。
【０２１８】
《Ｍ．ユーザ設定》
次に、本実施の形態にパターンマッチング処理に必要な各種設定値などのユーザからの入力方法の一例について説明する。
【０２１９】
図２４および図２５は、本実施の形態に係る画像処理装置１００が設定モードにおいて提供するユーザインターフェイス画面の一例を示す図である。特に、図２４は、ワークモデルを撮像して得られる入力画像（モデル画像）に対して、ユーザがモデルとして登録したい範囲を指定する際のユーザインターフェイス画面２００Ａを示し、図２５は、ユーザがパターンマッチング処理に必要な各種設定値（計測条件）を設定する際のユーザインターフェイス画面２００Ｂを示す。
【０２２０】
図２５に示すユーザインターフェイス画面２００Ａでは、モデル登録タブ２０２と、エラーモデル登録タブ２０４と、領域設定タブ２０６と、検出点タブ２０８と、基準位置タブ２１０と、計測パラメータタブ２１２と、出力パラメータタブ２１４とが選択可能に表示される。なお、図２５に示すユーザインターフェイス画面２００Ａにおいては、モデル登録タブ２０２が選択されている状態を示す。すなわち、ユーザインターフェイス画面２００Ａは、上述のモデル登録処理に必要な設定値などを受付けるためのユーザインターフェイスである。
【０２２１】
ユーザインターフェイス画面２００Ａは、モデルパラメータ設定エリア２３０と、画像表示エリア２５０と、全体表示エリア３５２と、表示制御アイコン群３５４とを含む。
【０２２２】
画像表示エリア２５０には、基準とすべきワークモデルを撮像装置８で撮像することで生成される入力画像（モデル画像）が表示される。ユーザは、マウス操作などを行うことで、画像表示エリア２５０に対してモデルとして登録したい範囲４０１を設定することができる。ＣＰＵ１１０は、この画像表示エリア２５０において設定される範囲４０１の座標情報を取得して、モデル登録処理を実行する。
【０２２３】
なお、ユーザがエッジ抽出ボタン２４０を選択すると、取得されている入力画像に対してエッジ抽出処理が実行され、画像表示エリア２５０に抽出されたエッジ点が表示される。図２４には、抽出されたエッジ点の位置（エッジ画像）が示されている例を示す。なお、エッジ画像に代えて、撮像装置８が撮像により取得した入力画像そのものを画像表示エリア２５０に表示するようにしてもよい。
【０２２４】
なお、ユーザが表示制御アイコン群２５４のいずれかのボタンを選択すると、選択されたボタンに応じて、画像表示エリア２５０に表示される画像の表示範囲／表示倍率などが変更される。また、全体表示エリア２５２には、画像表示エリア２５０において表示可能な画像の全体が表示される。
【０２２５】
モデルパラメータ設定エリア２３０においては、登録されるモデルを回転しつつサーチするためのパラメータを受付ける。より具体的には、回転チェックボックス２３１が有効化されると、上述した詳細サーチ処理および角度サーチ処理などが有効化される。すなわち、回転チェックボックス２３１が無効化されると、モデルを回転させてのパターンマッチング処理が行われない。
【０２２６】
回転チェックボックス２３１が有効化された場合、ユーザが数値入力ボックス２３２および２３３に設定する数値範囲（回転範囲）内でモデルを回転させて、詳細サーチ処理が実行される。また、そのモデルを回転させる角度間隔（刻み角度）は、数値入力ボックス２３６において設定される。対象のワークに応じて、この回転範囲および／または刻み角度を適切に設定することで、サーチ精度を維持したまま、処理速度を向上させることもできる。
【０２２７】
なお、白黒反転のチェックボックス２３４においては、モデルの白黒反転（ネガポジ反転）処理の有効化／無効化を設定することができる。このパラメータは、背景が明るすぎる場合、または、暗すぎる場合などに有効である。また、大きさ変動のチェックボックス２３５においては、モデルを拡大／縮小したパターンマッチング処理の有効化／無効化を設定することができる。すなわち、大きさ変動のチェックボックス２３５が有効化されると、予め登録されるモデルに加えて、登録されているモデルを拡大または縮小して得られる追加のモデルがパターンマッチング処理に用いられる。
【０２２８】
また、ユーザがモデル表示終了ボタン２４２を選択すると、ユーザインターフェイス画面２００Ａは閉じられて、図示しないメニュー画面などに遷移する。
【０２２９】
また、計測パラメータタブ２１２が選択されると、計測処理の一例であるパターンマッチング処理に必要な計測条件を設定するためのユーザインターフェイス画面２００Ｂ（図２５）は表示される。
【０２３０】
この図２５に示すユーザインターフェイス画面２００Ｂは、計測条件設定エリア２６０および２７０を含む。
【０２３１】
計測条件設定エリア２６０では、主として上述の粗サーチ処理に必要なパラメータ（候補点レベル）を受付ける。すなわち、移動量の数値入力ボックス２６１に入力される数値（画素数）は、入力画像に対して注目領域４１０を設定する間隔を意味する。なお、粗サーチ処理の第１段においては、注目領域４１０の移動量は、数値入力ボックス２６１に入力される数値の整数倍（たとえば、２倍）に設定される。
【０２３２】
また、候補点レベルの数値入力ボックス２６２に入力される数値は、エッジコードヒストグラム間の差分ヒストグラムに対するしきい値の設定に利用される。相関値の数値入力ボックス２６３に入力される数値は、粗サーチ処理において候補点として抽出すべき条件として利用される。
【０２３３】
計測条件設定エリア２７０では、本実施の形態に係るパターンマッチング処理により得られる計測結果のうち有効とされるものを設定するための判定条件を受付ける。
【０２３４】
すなわち、計測座標Ｘの数値入力ボックス２７１に入力される数値範囲（座標範囲）は、計測座標のｘ成分についての判定条件として用いられる。また、計測座標Ｙの数値入力ボックス２７２に入力される数値範囲（座標範囲）は、計測座標のｙ成分についての判定条件として用いられる。また、計測角度の数値入力ボックス２７３に入力される数値範囲（角度範囲）は、計測結果の角度成分についての判定条件として用いられる。
【０２３５】
さらに、相関値の数値入力ボックス２７４に入力される数値範囲は、各計測座標における相関値の判定条件として用いられる。また、検出数の数値入力ボックス２７５に入力される数値範囲は、１回のパターンマッチング処理の実行により出力される最大の検出数の条件として用いられる。
【０２３６】
なお、図２５に示すユーザインターフェイス画面２００Ｂにおいては、画像表示エリア２５０に撮像装置８で撮像された入力画像が表示されるとともに、設定された条件に基づいて抽出された計測結果が表示される。すなわち、入力画像内のオブジェクトに対して抽出された計測座標の位置を示すマーク２９０と、マーク２９０を中心とするモデル領域を示す枠２９２とがオーバラップ表示されている。
【０２３７】
《Ｎ．出力処理》
最後に、図６のステップＳ８に示す出力処理について説明する。
【０２３８】
図２６は、本実施の形態に係る画像処理装置１００が計測モードにおいて提供するユーザインターフェイス画面の一例を示す図である。
【０２３９】
図２６を参照して、ユーザインターフェイス画面３００Ｂでは、撮像装置８の視野内に複数のワークが存在する場合に生成する画像データに対して、上述したようなパターンマッチング処理を行うことで得られた計測結果を示す。
【０２４０】
すなわち、撮像装置８が撮像することで生成される入力画像に対して、予め登録されているモデルに基づくパターンマッチング処理を行うと、その計測結果を視覚的に示す表示が入力画像上にオーバラッピング表示されるとともに、その計測結果を示す数値が表示される（符号３０２）。
【０２４１】
《Ｏ．作用・効果》
本実施の形態に係る画像処理装置によれば、粗サーチ処理と詳細サーチ処理との２つの方法で、入力画像に対して予め登録されたモデルと一致する領域をサーチする。粗サーチ処理においては、モデルを示すエッジコードヒストグラムが用いられ、詳細サーチ処理においては、モデルを示すエッジコード画像が用いられる。
【０２４２】
このように２種類のサーチ方法を組合せることで、パターンマッチング処理の高速化および高精度化を実現することができる。
【０２４３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２４４】
１  視覚センサシステム、２  ワーク、４  光電センサ、４ａ  受光部、４ｂ  投光部、６  搬送機構、８  撮像装置、１０  バッファ、２０  エッジコード（ＥＣ）画像生成モジュール、２１  水平エッジ強度検出部、２２  垂直エッジ強度検出部、２３  エッジ強度評価部、２４  エッジコード算出部、３０  モデル登録モジュール、３１  モデル領域抽出機能、３２  空白領域除去機能、３３  内接円抽出機能、４０  モデル情報格納部、４１  エッジコードヒストグラム、４２  エッジコード画像、５０  サーチモジュール、６０  詳細サーチモジュール、７０  角度サーチモジュール、８０  近接点除去モジュール、９０  出力モジュール、１００  画像処理装置、１０２  ディスプレイ、１０４  マウス、１０６  メモリカード、１１０  ＣＰＵ、１１２  メインメモリ、１１４  ハードディスク、１１６  カメラインターフェイス、１１６ａ  画像バッファ、１１８  入力インターフェイス、１２０  表示コントローラ、１２２  ＰＬＣインターフェイス、１２４  通信インターフェイス、１２６  データリーダ／ライタ、１２８  バス。
【図１】
2011191928.tif 000003
【図２】
2011191928.tif 000004
【図４】
2011191928.tif 000005
【図５】
2011191928.tif 000006
【図６】
2011191928.tif 000007
【図７】
2011191928.tif 000008
【図８】
2011191928.tif 000009
【図９】
2011191928.tif 000010
【図１０】
2011191928.tif 000011
【図１１】
2011191928.tif 000012
【図１２】
2011191928.tif 000013
【図１３】
2011191928.tif 000014
【図１４】
2011191928.tif 000015
【図１５】
2011191928.tif 000016
【図１６】
2011191928.tif 000017
【図１７】
2011191928.tif 000018
【図１８】
2011191928.tif 000019
【図１９】
2011191928.tif 000020
【図２０】
2011191928.tif 000021
【図２１】
2011191928.tif 000022
【図２２】
2011191928.tif 000023
【図２３】
2011191928.tif 000024
【図３】
2011191928.tif 000025
【図２４】
2011191928.tif 000026
【図２５】
2011191928.tif 000027
【図２６】
2011191928.tif 000028