上記目的を実現するために、第1の検出候補の近傍排除処理機能を有する画像処理装置によれば、予め登録された登録画像に対応するパターンモデルを用いて、サーチ対象画像中から該登録画像に類似するサーチ対象物をサーチして位置決めを行う画像処理に際して行うパターンモデルの位置決めにおいて、サーチの結果として得られた複数の検出候補中から、類似する検出候補を排除して適切な検出候補を選択するための画像処理装置であって、登録画像及びサーチ対象画像を取得する画像入力手段と、前記画像入力手段で取得された登録画像のパターンモデルを設定するパターンモデル設定手段と、前記パターンモデル設定手段で得られたパターンモデル情報に基づき、サーチを行うためのサーチ手段と、前記サーチ手段で実行されたサーチの結果得られる複数の検出候補中から、所定の基準で基準候補を選択するための基準候補選択手段と、前記基準候補選択手段で選択された基準候補に類似する検出候補を排除するための近傍排除条件として、前記基準候補と任意の検出候補との距離の閾値として予め設定された近傍排除距離と、所定の手法で決定された前記基準候補の基準角度と、任意の検出候補の基準角度との角度差の閾値として予め設定された近傍排除角度と、前記基準候補の姿勢を、前記基準角度に基づいて変化させて、任意の検出候補との角度差を2以上得るための角度変化量と、に基づき、前記基準候補の姿勢を前記角度変化量に従い2以上に変化させた各姿勢毎に近傍排除角度を算出し、該近傍排除角度及び前記近傍排除距離を共に満たす検出候補を排除可能な検出候補排除手段と、を備えることができる。これにより、基準候補の角度を複数に設定できるため、サーチ対象画像の形状に応じて対象位置に回転あるいは反転した姿勢の検出候補が現れる場合でも、適切にこれらを排除でき、重複した検出候補の処理を省略し処理の軽負荷、高速化や、検出結果が重複する事態を回避できる。
また第2の検出候補の近傍排除処理機能を有する画像処理装置によれば、さらに、近傍排除条件として、近傍排除距離、近傍排除角度、角度変化量の少なくともいずれかを自動又は手動で設定可能な近傍排除条件設定手段を備えることができる。これにより、事前に規定の近傍排除距離、近傍排除角度、角度変化量に設定する他、ユーザが所望の近傍排除条件に設定を調整することが容易となる。
さらにまた第6の検出候補の近傍排除処理機能を有する画像処理装置によれば、前記角度変化量を、基準候補の姿勢を変化させた後の角度値を数値で2以上指定可能に構成できる。これにより、ユーザは所望の基準角度をそのまま角度値で指定して追加できるため、設定をより直截的に行える上、サーチ対象画像が非対称の場合でも適切な基準角度に設定できる利点が得られる。
さらにまた第8の検出候補の近傍排除処理機能を有する画像処理装置によれば、前記角度変化量が角度変化の個数であり、指定された個数で360°の角度を等分し、該等分された角度毎に前記基準候補の姿勢を変化させることができる。これにより、必要な基準角度の個数を直接指定できるため、ユーザ(オペレータ)はサーチ対象画像の形状に応じて容易に該設定を行える。例えば長方形のような線対称のサーチ対象画像に対しては、基準角度として2個を指定すれば、360°を2等分した0°と180°に基準角度が設定され、180°反転した検出候補を排除できる。
さらにまた第9の検出候補の近傍排除処理機能を有する画像処理装置によれば、前記近傍排除条件設定手段がさらに、前記基準候補と任意の検出候補との拡大/縮小率が所定値以下の場合に、該検出候補を排除するための倍率閾値として近傍排除倍率を設定可能に構成できる。これにより、倍率の大小を含めた近傍排除処理も適切に実現できる。
さらにまた第10の検出候補の近傍排除処理機能を有する画像処理装置によれば、前記検出候補排除手段を、検出候補として選択される数の上限を設定可能にできる。これにより、最終的に選択される検出候補数を予め規定できる。
さらにまた第11の検出候補の近傍排除処理機能を有する画像処理装置によれば、前記基準候補選択手段が、前記サーチの結果得られた複数の検出候補の内、類似度を表す評価値が最も高いものを基準候補として選択するようにできる。これにより、最もサーチ結果の精度が高いと思われる検出候補を残し、これに類似する検出候補を効果的に排除した正確な近傍排除処理が実現できる。
さらにまた第12の検出候補の近傍排除処理機能を有する画像処理装置によれば、各検出候補の基準点に基づいて、前記基準候補と任意の検出候補との距離、及び/又は前記基準候補と任意の検出候補との角度差を演算することができる。これにより、基準点に基づいて距離や角度を一義的に決定できる。
さらにまた第13の検出候補の近傍排除処理機能を有する画像処理装置によれば、前記基準点の位置を、ユーザが調整可能に構成できる。これにより、ユーザは所望の位置に基準点を設定し直すことができるため、サーチ用途に応じた適切な位置に基準点を設定できる利点が得られる。
さらにまた第14の検出候補の近傍排除処理機能を有する画像処理装置によれば、前記サーチ手段を、サーチ対象画像の全域に対して所定の精度でサーチを行う粗サーチとできる。これにより、粗サーチにおいて得られた複数の検出候補に対して、適切に近傍排除処理を行うことができる。
さらにまた第15の検出候補の近傍排除処理機能を有する画像処理装置によれば、前記サーチ手段を、与えられた初期位置の精度よりも高い精度でサーチを行う精密位置決めとできる。これにより、精密位置決めにおいて得られた複数の検出候補に対して、適切に近傍排除処理を行うことができる。
さらにまた第16の検出候補の近傍排除処理機能を有する画像処理プログラムによれば、予め登録された登録画像に対応するパターンモデルを用いて、サーチ対象画像中から該登録画像に類似するサーチ対象物をサーチして位置決めを行う画像処理に際して行うパターンモデルの位置決めにおいて、サーチの結果として得られた複数の検出候補中から、類似する検出候補を排除して適切な検出候補を選択するための画像処理プログラムであって、登録画像及びサーチ対象画像を取得する画像入力機能と、前記画像入力機能で取得された登録画像のパターンモデルを設定するパターンモデル設定機能と、前記パターンモデル設定機能で得られたパターンモデル情報に基づき、サーチを行うためのサーチ機能と、前記サーチ機能で実行されたサーチの結果得られる複数の検出候補中から、所定の基準で基準候補を選択するための基準候補選択機能と、前記基準候補選択機能で選択された基準候補に類似する検出候補を排除するための近傍排除条件として、前記基準候補と任意の検出候補との距離の閾値として予め設定された近傍排除距離と、所定の手法で決定された前記基準候補の基準角度と、任意の検出候補の基準角度との角度差の閾値として予め設定された近傍排除角度と、前記基準候補の姿勢を、前記基準角度に基づいて変化させて、任意の検出候補との角度差を2以上得るための角度変化量と、に基づき、前記基準候補の姿勢を前記角度変化量に従い2以上に変化させた各姿勢毎に近傍排除角度を算出し、該近傍排除角度及び前記近傍排除距離を共に満たす検出候補を排除可能な検出候補排除機能と、をコンピュータに実現させることができる。これにより、基準候補の姿勢を複数に設定できるため、サーチ対象画像の形状に応じて対象位置に回転あるいは反転した位置に検出候補が現れる場合でも、適切にこれらを排除でき、重複した検出候補の処理を省略し処理の軽負荷、高速化や、検出結果が重複する事態を回避できる。
また第17のコンピュータで読み取り可能な記録媒体は、上記プログラムを格納するものである。記録媒体には、CD−ROM、CD−R、CD−RWやフレキシブルディスク、磁気テープ、MO、DVD−ROM、DVD−RAM、DVD−R、DVD+R、DVD−RW、DVD+RW、Blu−ray、HD DVD(AOD)等の磁気ディスク、光ディスク、光磁気ディスク、半導体メモリその他のプログラムを格納可能な媒体が含まれる。またプログラムには、上記記録媒体に格納されて配布されるものの他、インターネット等のネットワーク回線を通じてダウンロードによって配布される形態のものも含まれる。さらに記録媒体にはプログラムを記録可能な機器、例えば上記プログラムがソフトウェアやファームウェア等の形態で実行可能な状態に実装された汎用もしくは専用機器を含む。さらにまたプログラムに含まれる各処理や機能は、コンピュータで実行可能なプログラムソフトウエアにより実行してもよいし、各部の処理を所定のゲートアレイ(FPGA、ASIC)等のハードウエア、又はプログラムソフトウエアとハードウェアの一部の要素を実現する部分的ハードウエアモジュールとが混在する形式で実現してもよい。
以下、本発明の実施の形態を図面に基づいて説明する。ただし、以下に示す実施の形態は、本発明の技術思想を具体化するための検出候補排除機能を有する画像処理装置及び画像処理プログラム並びにコンピュータで読み取り可能な記録媒体を例示するものであって、本発明は検出候補排除機能を有する画像処理装置及び画像処理プログラム並びにコンピュータで読み取り可能な記録媒体を以下のものに特定しない。また、本明細書は特許請求の範囲に示される部材を、実施の形態の部材に特定するものでは決してない。特に実施の形態に記載されている構成部品の寸法、材質、形状、その相対的配置等は特に特定的な記載がない限りは、本発明の範囲をそれのみに限定する趣旨ではなく、単なる説明例にすぎない。なお、各図面が示す部材の大きさや位置関係等は、説明を明確にするため誇張していることがある。さらに以下の説明において、同一の名称、符号については同一もしくは同質の部材を示しており、詳細説明を適宜省略する。さらに、本発明を構成する各要素は、複数の要素を同一の部材で構成して一の部材で複数の要素を兼用する態様としてもよいし、逆に一の部材の機能を複数の部材で分担して実現することもできる。
本発明の実施の形態において使用される画像処理装置とこれに接続される操作、制御、表示、その他の処理等のためのコンピュータ、プリンタ、外部記憶装置その他の周辺機器との接続は、例えばIEEE1394、RS−232xやRS−422、USB等のシリアル接続、パラレル接続、あるいは10BASE−T、100BASE−TX、1000BASE−T等のネットワークを介して電気的、あるいは磁気的、光学的に接続して通信を行う。接続は有線を使った物理的な接続に限られず、IEEE802.1x等の無線LANやBluetooth(登録商標)等の電波、赤外線、光通信等を利用した無線接続等でもよい。さらにデータの交換や設定の保存等を行うための記録媒体には、メモリカードや磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ等が利用できる。なお本明細書において画像処理装置とは、エッジ抽出やパターンマッチング等を行う装置本体のみならず、これにコンピュータ、外部記憶装置等の周辺機器を組み合わせた輪郭抽出システムも含む意味で使用する。
また、本明細書において検出候補排除機能を有する画像処理装置及び画像処理プログラム並びにコンピュータで読み取り可能な記録媒体は、エッジ抽出や計測領域設定、エッジ点連結を行うシステムそのもの、ならびに各種画像の撮像、取得に関連する入出力、表示、演算、通信その他の処理をハードウェア的に行う装置や方法に限定するものではない。ソフトウェア的に処理を実現する装置や方法も本発明の範囲内に包含する。例えば汎用の回路やコンピュータにソフトウェアやプログラム、プラグイン、オブジェクト、ライブラリ、アプレット、コンパイラ、モジュール、特定のプログラム上で動作するマクロ等を組み込んでエッジ抽出やエッジ点連結そのもの、あるいはこれに関連する処理を可能とした装置やシステムも、本発明の検出候補排除機能を有する画像処理装置及び画像処理プログラム並びにコンピュータで読み取り可能な記録媒体のいずれかに該当する。また本明細書においてコンピュータには、汎用あるいは専用の電子計算機の他、ワークステーション、端末、携帯型電子機器、PDCやCDMA、W−CDMA、FOMA(登録商標)、GSM、IMT2000や第4世代等の携帯電話、PHS、PDA、ページャ、スマートフォンその他の電子デバイスも包含する。さらに本明細書においてプログラムとは、単体で使用されるものに限られず、特定のコンピュータプログラムやソフトウェア、サービス等の一部として機能する態様や、必要時に呼び出されて機能する態様、OS等の環境においてサービスとして提供される態様、環境に常駐して動作する態様、バックグラウンドで動作する態様やその他の支援プログラムという位置付けで使用することもできる。
(画像処理の大まかな流れ)
図1に、画像処理装置100のブロック図を示す。この画像処理装置100は、図2に示すように予めサーチしたい画像を登録しておき、この登録画像からパターンモデルを作成し、実際の運転時においては、入力されるサーチ対象画像中から該パターンモデルに対応する位置を求める。ここで、パターンモデル作成時の動作の概要を、図3のフローチャートに示す。本実施の形態においては、図2(a)に示すように、サーチしたい登録画像RIに対して、パターンモデルを作成する領域、すなわちパターンウインドウPWをユーザ(オペレータ)が設定する(図3におけるステップS301)。このパターンウィンドウPWを設定した領域を含む画像を、図2(b)に示すように必要に応じて縮小する(同ステップS302)。さらに縮小パターンウィンドウRPMから、図2(c)に示すように登録画像RIに対応する、サーチパターンとしてのパターンモデルPMを作成する(同ステップS303)。このように画像処理装置は、サーチ対象画像中からサーチしたい登録画像RIに対応するパターンモデルPMを、実際にサーチを行う運転時に先立ち予め作成しておく。
さらにパターンモデルPMは、図2(d)に示すように第1エッジ角度ビット画像用の縮小率、第2エッジ角度ビット画像用の縮小率(後述)に縮小されて、運転時に利用される(同ステップS304)。このような縮小パターンモデルRPMの作成は、登録時に予め行うこともできるし、また運転時にその都度行うこともできる。
一方、運転時の動作の概要を図4のフローチャートに示す。運転時には、ステップS401でサーチ対象画像OIを入力した後(図2(e))、ステップS402で必要に応じてこのサーチ対象画像OIを縮小し、縮小サーチ対象画像ROIとする(図2(f))。次にステップS403で縮小サーチ対象画像ROIからエッジ角度ビット画像EBを生成する(図2(g):詳細は後述)。さらにステップS404で、エッジ角度ビット画像EBを縮小したエッジ角度ビット縮小画像REBを作成する(図2(h))。このようにして得られたエッジ角度ビット縮小画像REBに対して、ステップS405で、登録時に得られたパターンモデルを用いてパターンサーチを実行する。
(画像処理装置100)
次に画像処理装置100の構成を説明する。図1のブロック図に示す画像処理装置100は、画像処理装置本体100Aと、画像を入力する画像入力手段1と、画像や各種データを表示する表示手段3と、ユーザが各種操作を行うための操作手段2と、画像処理装置本体100Aにて画像処理した結果を外部に出力するための出力インターフェースを構成する出力手段5とを備える。画像入力手段1は、CCD等の撮像手段で構成される。画像入力手段1から入力される入力画像は、A/D変換手段を介して画像処理装置本体100Aに取り込まれる。また表示手段3は、入力画像の原画像や、その原画像を例えばエッジ画像処理によって画像処理したエッジ画像を表示する。
(画像処理装置本体100A)
画像処理装置本体100Aは、各種データを記憶する記憶手段4と、画像処理に関する各種演算を行う演算手段6を備える。記憶手段4は、画像入力手段1からA/D変換手段を介して入力された登録画像の他、この登録画像をテンプレート画像として生成されるパターンモデル、サーチ対象画像、並びに登録画像からパターンモデルを生成する際やサーチの際に作成される一時的なデータの保持、記憶に使用するワーク領域等を備えている。
(演算手段6)
演算手段6は、画像に対してエッジ検出を行い、輪郭を抽出する輪郭抽出手段62と、輪郭情報からチェーンを作成するチェーン作成手段63と、チェーンからセグメントを作成するセグメント作成手段68と、その他の各種手段とを含む。その他の手段としては、エッジ角度ビット画像作成手段69、エッジ角度ビット画像縮小手段78、画像を所定の倍率に縮小する画像縮小手段77、パターンモデルを構成するパターンモデル構成手段70、粗サーチを行う粗サーチ手段71、エッジ情報に基づき登録画像のパターンモデルでサーチ対象画像内での精度の高い位置決めを行う精密位置決め手段76等が挙げられる(詳細は後述する)。この演算手段6は、上述の通りパターンモデルの登録と、登録されたパターンモデルを用いたサーチ対象画像でのサーチを行う。このような動作を行うため、チェーン作成手段63、セグメント作成手段68、及びパターンモデル構成手段70は、パターンモデルの登録時に利用される。また粗サーチ手段71と精密位置決め手段76は、実際の運転時に利用される。さらに画像縮小手段77、輪郭抽出手段62、チェーン作成手段63等は、登録時の動作及び運転時の動作共に使用され、エッジ角度ビット画像作成手段69及びエッジ角度ビット画像縮小手段78は、運転時に使用される。なおチェーン作成手段63は、本実施の形態では登録時のみに使用されるが、運転時にサーチ対象画像に対してチェーン化を行うこともできる。
(輪郭抽出手段62)
輪郭抽出手段62は、エッジ画像としてエッジ角度画像及びエッジ強度画像を作成するエッジ角度・エッジ強度画像作成手段60と、エッジ点の細線化を行う細線化手段61を備える。詳細には、エッジ角度・エッジ強度画像作成手段60は、画像入力手段1にて入力された多値画像(オリジナルサイズの原画像もしくは後述する画像縮小手段77で縮小された縮小画像)に対して、エッジ点を抽出するために知られているフィルタ、例えばX方向とY方向の各々に対してソーベルフィルタ(Sobel filter)を用いて、XY各方向におけるエッジ強度画像(X方向エッジ強度画像成分ならびにY方向エッジ強度画像成分)を生成すると共に、これらのXY各方向のエッジ強度画像から2次元的なエッジ角度画像を生成する。また細線化手段61は、このエッジ角度・エッジ強度画像作成手段60にて作成されたエッジ画像に対して、例えばエッジ強度の非極大点抑制処理によってエッジ点の細線化を行う。
なお本明細書においてエッジ強度とは、一の画素がエッジ(暗→明)の一部であるかどうかの度合いを表す数値である。一般にエッジ強度は、注目画素とその周囲に位置する9画素の画素値から算出される。またエッジ角度とは、一の画素におけるエッジの方向を示しており、一般には上述したX方向とY方向のソーベルフィルタ等により求められたX方向とY方向のエッジ強度から計算される。
(チェーン作成手段63)
一方、チェーン作成手段63、セグメント作成手段68は、登録画像の一部をテンプレート画像とするパターンモデルを生成する際に用いられるものである。本実施の形態におけるチェーン作成手段63は、エッジチェーン化手段64と、チェーンフィルタ手段66とを備える。詳細には、エッジチェーン化手段64は、輪郭抽出手段62によって生成されたエッジ画像に含まれる複数のエッジ点の内、隣接する複数のエッジ点同士を連結してチェーンを作成する。またチェーンフィルタ手段66は、エッジチェーン化手段64で生成された複数のチェーン群に対して、チェーンの各種特徴量でフィルタリングを行う。
(セグメント作成手段68)
またセグメント作成手段68は、エッジチェーンセグメント化手段65と、セグメント選択手段67とを備える。エッジチェーンセグメント化手段65は、エッジチェーン化手段64で作成され、かつチェーンフィルタ手段66でフィルタリングされた各チェーンに対して、近似を行ってセグメントを作成する。セグメントは、ここではチェーンを最小二乗法で近似した線分及び/又は円弧である。またセグメント選択手段67は、セグメントに対してフィルタリングを行う。
さらにセグメント選択手段67は、パターン特徴選択機能を備えることもできる。すなわち、サーチ対象物から得られるパターンの特徴に応じて、パターンモデルを構成するセグメントの選択基準を変更させることで、より安定した位置決めが実現できる。詳細については後述する。
(パターンモデル構成手段70)
パターンモデル構成手段70は、上述した記憶手段に記憶させるパターンモデルを生成する手段である。具体的には、登録画像に対して、上述した輪郭抽出手段62及びチェーン作成手段63、セグメント作成手段68により処理を施して、生成された各セグメントをパターンモデル構成手段70で加工する。パターンモデルの詳細については、後述する。
(画像縮小手段77)
一方で画像縮小手段77は、登録画像及びサーチ対象画像を縮小する手段である。この縮小率は、自動縮小率決定モードによって自動的に設定される。具体的には、上述の通り本実施の形態においては、ユーザが登録画像に対して、パターンモデルとしたい領域を設定している。ここでの縮小率は、ユーザが設定した領域、すなわちパターンモデルを指定するパターンウインドウPWの大きさによって自動的に決定される。例えばパターンウィンドウPWが矩形状の場合、短い辺の長さに応じて縮小率を決定する。
なお本明細書において「縮小率を上げる」又は「縮小率が大きい」、「縮小率が高い」とは、縮小度合い又は圧縮率を大きくすることであって、例えば縮小率1/8の縮小画像を縮小率1/16に、より縮小することを指す。逆に「縮小率を下げる」又は「縮小率が小さい」、「縮小率が低い」とは、縮小の程度を抑え、例えば縮小された画像を等倍画像側に近付ける意味であって、例えば縮小率1/16の画像を1/8にすることを指す。また「等倍以上の縮小率」とは、等倍画像を拡大する意味でなく、等倍画像すなわち縮小率1よりも縮小率が高いか、縮小率1の等倍画像という意味である。
またこのような自動縮小率決定モード以外に、ユーザが所望の縮小率を選択して決定する手動縮小率決定モードとすることもできる。図5に示すユーザインターフェースの例では、大域サーチ用縮小率として異なる複数の縮小率、ここでは1/2、1/4、1/8の選択肢の中から、ユーザに選択させる。縮小率は、任意の数値で指定させても良い。また、ここで選択した縮小率で画像を縮小すると元画像がどのように変形するかを示すイメージを併せて表示させてもよい。このようにして、大域サーチ用縮小率(大域用縮小率)の他、局所サーチ用縮小率(中間縮小率)、精密位置決め縮小率も設定できる。
さらに、局所サーチ用縮小率を自動で追加することもできる。具体的には、大域サーチ用縮小率と局所サーチ用縮小率の比率が所定値よりも大きい場合、これら大域サーチ用縮小率と局所サーチ用縮小率との間で追加の縮小率(局所サーチ用縮小率)に設定された局所サーチ(追加局所サーチ)を自動的に追加する(図10参照)。また、追加の局所サーチは、複数回行うこともできる。このようにして、大域サーチ用縮小率と局所サーチ用縮小率との比率を所定値以内に維持でき、サーチ速度の短縮化を図る。
画像縮小手段77は、パターンモデルを生成する登録画像、及び該登録画像で設定された縮小率と同一の縮小率にて縮小されるサーチ対象画像に対して活用される。いいかえると、登録画像で設定した縮小率で、サーチ対象画像も縮小されることになる。
(エッジ角度ビット画像作成手段69)
エッジ角度ビット画像作成手段69は、サーチ対象画像、及び該サーチ対象画像を上述した画像縮小手段77で縮小した縮小画像に対し、上述した演算手段6のエッジ角度・エッジ強度画像作成手段60によって生成したエッジ角度画像を用いて、エッジ角度ビット画像を生成するものである。すなわちエッジ角度ビット画像作成手段69は、運転時にサーチ対象画像のエッジ角度ビット画像を生成するために使用される。いいかえると、パターンモデルの登録時には利用されない。
より具体的には、図6に示すように、エッジ角度である0〜360°の値を45°単位で8分割した8ビットデータとし(図6(b))、エッジ角度画像の各画素に対応して求められているエッジ角度が、これら8分割された分割領域の各々に割り当てられたビット位置であるかを判断し(図6(a))、判断したビット位置に1のフラグを立てることにより、エッジ角度画像をエッジ角度ビット画像に変換する(図6(c))。本実施の形態では、演算手段6のエッジ角度・エッジ強度画像作成手段60によって生成したエッジ角度画像を用いて、エッジ角度ビット画像作成手段69にてエッジ角度ビット画像を生成している(詳細は、図30等に基づいて後述する)。ただ、この方法に限られず、例えば演算手段6の細線化手段61にて細線化されたエッジ角度画像を用いて、エッジ角度ビット画像作成手段69にてエッジ角度ビット画像を生成しても良い。
(エッジ角度ビット画像縮小手段78)
エッジ角度ビット画像縮小手段78は、上述したエッジ角度ビット画像作成手段69にて生成されたエッジ角度ビット画像を縮小する手段である。これによりエッジ角度ビット縮小画像が得られる。
本実施の形態におけるエッジ角度ビット縮小画像の縮小率は、登録画像に対して、ユーザがパターンモデルとしたい領域を設定するパターンウインドウPWの大きさに従って決定する。したがって、このエッジ角度ビット画像縮小手段78における縮小率を自動的に決定する場合、この登録画像に対して設定されているパターンウインドウPWの大きさを反映させている。ただ、この方法に限定されるものでなく、該パターンモデルの縮小率を確認することによって、エッジ角度ビット画像縮小手段78における縮小率を直接的に設定してもよいことは言うまでもない。
この様子を従来の方法との対比で説明すると、従来の方法でエッジ角度ビット画像を縮小する場合は、例えば縮小率がサーチ対象画像のオリジナル画像サイズに対して1/8である場合、8×8画素の領域、つまり64画素を代表する一つの画素のエッジ角度、又は64画素の平均値が縮小された一つの画素のエッジ角度を、その領域の代表値としていた。これに対し、本実施の形態に係るエッジ角度ビット画像縮小手段78によるエッジ角度ビット画像の縮小では、例えば縮小率がサーチ対象画像のオリジナルに対して1/8である場合、8×8画素の領域の64画素の各画素が有するビット位置、つまり角度ビットの位置をOR演算によりそのまま保存する形式で、図7に示すように64画素が保有する全ての角度に対応するビット位置に1のフラグを立てた状態を維持する。これによって、エッジ角度ビット画像の情報は、画像縮小後でも損なわれないように保持でき、パターンモデルを用いたサーチにおいて正確さを得られる。
ここで、OR演算を行うOR演算領域は、エッジ角度ビット画像を縮小する縮小率に応じて決定される。例えば、エッジ角度ビット画像を1/8に縮小したエッジ角度ビット縮小画像を生成する場合、8×8の領域がOR演算領域となる。すなわち、エッジ角度ビット画像は8×8のOR演算領域に区分され、各OR演算領域においては、OR演算領域に含まれるすべての画素のエッジ角度ビットをOR演算した結果を、各OR演算領域を表す縮小エッジ角度ビットデータとする。このようにして得られた各OR演算領域毎の縮小エッジ角度ビットデータの集合が、エッジ角度ビット縮小画像となる。
またOR演算とは、和演算、特にビット和を意味する。さらに画素のOR演算を行う際には、単なるビット和とする他、エッジ角度ビットを有する画素の数に下限値を設けても良い。例えば、加算対象のエッジ角度ビットを有する画素数が予め設定された所定の画素数閾値に満たない場合は、このエッジ角度ビットを無視する。すなわち、加算される画素数が1個乃至数個である等、他よりも極端に少ないエッジ角度ビットについては、ノイズやエラーである可能性があるため、このような信憑性の低い画素については無視して、信頼性が高いと思われる角度ビットのみに基づいた信頼性の高いエッジ角度ビット縮小画像を生成できる。
(その他のOR演算 飽和加算)
さらにOR演算として、上記和演算以外の演算を利用することができる。ここでは一例として飽和加算を説明する。例えばOR演算で縮小処理や膨張処理をする場合、nxnのエッジ角度ビット画像のピクセルデータをOR演算する。この演算の拡張となるのが「各角度に対応するビットに対して飽和加算を行い、その結果から次の代表値を決定する」ことである。ここで飽和加算とは、加算結果に上限を設けておき、通常の加算を行った後にその上限を超える場合、その上限の値にクリッピングする加算処理をいう。例えば上限を100とすると、
10+89=99
11+89=100
12+89=100
10+100=100
といった具合に、上限値を100に制限する。
次に、飽和加算を用いた縮小処理の具体例を図52に基づいて説明する。ここで図52(a)は各ピクセルがエッジ角度を有するエッジ角度画像、図52(b)はこのエッジ角度画像を構成する各ピクセルを8ビットのエッジ角度ビットデータで表現するためのエッジ角度区分を示す模式図を、それぞれ示している。なおエッジ角度方向をエッジ角度ビットで表現するために角度を区分けしたエッジ角度区分については、図31で後述する。図52(b)の例では、水平又は垂直方向から22.5°ずらして8等分し、真右から時計回りに45°幅でE、SE、S、SW、W、NW、N、NEのエッジ角度区分にラベル分けし、各エッジ角度区分に対してエッジ角度ビットのラベルをそれぞれ0、1、2、3、4、5、6、7と付与している。図52(a)のエッジ角度画像を構成する9個のピクセルa〜iを、図52(b)のエッジ角度区分に従いエッジ角度ビットで表現して得られるエッジ角度ビット画像は、以下のようなエッジ角度ビットデータを有する。
76543210
a:00001000
b:10000000
c:10000000
d:00001000
e:10000000
f:10000000
g:00001000
h:00000100
i:10000101
そして、新しい縮小画像でのエッジ角度ビット画像は、それぞれの角度に対応するa〜iのビットをすべて飽和加算する。ここでは飽和加算の上限を3とする。例えば、eの位置の縮小エッジ角度ビットデータe’は
e’=a+b+c+d+e+f+g+h+i
で計算することができ、その結果は下のようになる。
7766554433221100
e’:1100000011100001;2進表示
e’: 3 0 0 0 3 2 0 1;10進表示
上記演算結果に、飽和加算処理の特徴が表れる。すなわち3以上はすべて3にクリッピングされる。このように和の結果が所定のクリッピング閾値以上になると、その値でクリッピングする加算を飽和加算と呼ぶ。この縮小エッジ角度ビットデータe’をサーチの処理でそのまま使うこともできる。例えば2以上のもののみを1にして、その他を0にした縮小エッジ角度ビットデータe”を以下のように表現してサーチに用いることもできる。
76543210
e”:10001100;2進表示
(粗サーチ手段用のパターンモデルX)
パターンモデル構成手段70はパターンモデルとして、後述する粗サーチ手段71で用いられる粗サーチ用のパターンモデルXと、精密位置決め手段76にて用いられる精密位置決め用のパターンモデルYの二種類を作成する(図8)。粗サーチ用パターンモデルXとしては、各セグメント上に、予め定めた条件に基づいて基点を決定し、さらに各基点でのセグメントの法線方向で、且つエッジの向きを設定した角度が設定される。
(精密位置決め用のパターンモデルY)
一方、精密位置決め用パターンモデルYとしては、上述した粗サーチ用パターンモデルXの持つ情報に加え、各基点は、データとして、対応する各セグメントを表現するセグメント種別パラメータ(例えば、線分や円弧からなるセグメントを定義できるパラメータ)と、上述した各基点から、各基点でのセグメントの法線方向で、且つエッジの方向に延長されたセグメント法線の一種であって、さらに予め定めた長さを有する線分(以下「対応点探索ライン」という。)を設定したものが生成される。対応点探索ラインは、基点を中心として法線方向に前後に延長される。なお基点は、各セグメント上に少なくとも1以上設定されることが好ましい。言い換えると、基点を設定しないセグメントは、パターンモデルに含める必要がない。
(粗サーチ手段71)
運転時のサーチは、登録時に作成された専用のパターンモデルを用いて、粗サーチ手段71と精密位置決め手段76により行われる。粗サーチ手段71は、運転時において粗サーチを行う手段である。粗サーチは一回のみ行う他、異なる縮小率で複数回行うことができる。複数回の粗サーチを行う場合は、2回目の粗サーチは第1回目の粗サーチよりも縮小率を低く抑えて、すなわち解像度を高める等、オリジナルサイズに近付けたより詳細なデータに基づいて行うことが好ましい。また2回目の粗サーチでは、1回目の粗サーチ結果に基づいて、走査範囲を絞って行うことが好ましい。ここで運転時のサーチの概要を図9のフローチャート及び図10の模式図に示す。本実施の形態では、図9のステップS901に示すように、サーチ対象画像の全域を、大域用縮小率で縮小された第2のパターンモデルを用いてサーチする第1の粗サーチ(大域サーチ)を行う。その上でステップS902に示すように、該第1の粗サーチで得られた「検出候補」の領域及びその周辺領域に対して、第1の粗サーチよりも低い中間縮小率のサーチ対象画像にてサーチを行う第2の粗サーチ(局所サーチ)を行っている。さらにステップS903にて、精密位置決め用のパターンモデルYを用いて、精密位置決め手段76で精密位置決めを行う。
なお、登録時にパターンモデルを作成する順序と、運転時にサーチを実行する順序とを、必ずしも一致させる必要はない点に留意されたい。例えば、登録時には縮小率の低い(オリジナルサイズに近い)パターンモデルから順に作成する(第1のパターンモデル→第2のパターンモデル、等)。これにより、画像の縮小につれて細かな情報が失われる事態を極減できる。これに対し、運転時には逆に縮小率の高い(解像度が低い、圧縮率が高い等)パターンモデルから順にサーチを行う(第1の粗サーチ→第2の粗サーチ)。これによってコース・トゥ・ファインのアプローチで効率よくサーチを行える。この結果、運転時には第2のパターンモデルを用いて第1の粗サーチを行い、次に第1のパターンモデルを用いて第2の粗サーチを行っている。
(第1の粗サーチ)
次に、粗サーチ手段71が行う粗サーチの概要を説明する。まず第1の粗サーチでは、登録されたパターンモデルを用いてサーチ対象画像の全域に対して大まかなサーチを行い、大まかな位置、すなわち検出候補を抽出する。ここでは、上述したエッジ角度ビット画像縮小手段78にて生成されたサーチ対象画像のエッジ角度ビット縮小画像に対して、同一の縮小率の登録画像から生成されたパターンモデルをスキャンさせる。具体的には、例えばオリジナルサイズから1/8倍に縮小されたエッジ角度ビット縮小画像の全領域に対してスキャンを行うために、エッジ角度ビット縮小画像の左上から、特定の回転角度を持つ姿勢に設定されたパターンモデルを右下方向に向かってスキャンさせる。これにより、エッジ角度ビット縮小画像の全領域に対して、パターンモデルに類似する検出候補の領域を特定する。このスキャンは、パターンモデルに対して個別に設定される、複数の異なる回転姿勢の全てを用いて同様のスキャンが実行される。すなわち、回転角度を変化させたスキャンを複数回繰り返す。この結果、パターンモデルに類似する検出候補の領域の全てが、パターンモデルに対するマッチング候補として抽出される。ここで、パターンモデルを回転させた結果エッジ角度ビットが変化する様子を図11に示す。この例では、大域サーチ用パターンモデル(a)を時計回りに60°回転させた場合(c)の、エッジ角度ビットの変化(b)→(d)を示している。また検出候補は、類似度を表す評価値(スコア値)を各々演算して、ある閾値よりも高いスコア値を持つものを検出候補として抽出している。また各検出候補は、その位置と姿勢、すなわちパターンモデルのXY座標と、角度θとスコアの情報を有する。なお、スコアの詳細については、後述する。
(第2の粗サーチ)
次に粗サーチ手段71は、第1の粗サーチの結果に基づいて第2の粗サーチを行う。第2の粗サーチは、上述した第1の粗サーチで用いたサーチ対象画像の縮小率よりも縮小率の小さい、言い換えると情報量の多い縮小率を用いる。例えば1/4倍の縮小率のエッジ角度ビット縮小画像を用いて、第1の粗サーチで用いた1/8倍の縮小率のエッジ角度ビット縮小画像にて抽出された、全てのパターンモデルに類似する検出候補の周辺領域に対してのみ、同縮小率のパターンモデルを用いて、検出候補の絞込みを行う。この第2の粗サーチは、エッジ角度ビット縮小画像の一部を用いて行うサーチであるため、検出候補の絞込みを効率良く実行することができる。このように粗サーチを複数段行うことで、効率のよいサーチが可能となる。すなわち第1の粗サーチで全域をスキャンし、大まかな位置を特定した上で、縮小率を低くした画像で第2の粗サーチを、該特定された領域(検出候補又は「対象らしさ」)又はその近傍で行う。このような多段の粗サーチによって、サーチ精度の維持とサーチ時間の短縮を両立させることができる。また局所サーチを、縮小率に応じて複数回行うこともできる。
(精密位置決め手段76)
以上のように粗サーチ手段71で検出候補あるいはこの近辺でさらに粗サーチを行った「より対象らしき検出候補」を求めた後、精密位置決め手段76で精密位置決めを行う。精密位置決めでは、縮小していないオリジナルサイズの画像、又は粗サーチで用いた縮小率よりも低い、オリジナルサイズに近い縮小率の画像にてサーチを行う。なお、ここではオリジナルサイズの画像も、縮小率1の縮小画像として扱う。また粗サーチでは、サーチ対象画像がエッジ角度ビット画像であるのに対し、精密位置決めでは原画像又はその縮小画像である。
精密位置決め手段76は、サーチ対象画像上で得られた、パターンモデルに類似する検出候補の領域に対して、精密位置決め用パターンモデルYの対応点探索ラインをサーチ対象画像上に重ねるように配置する。具体的には、上述した粗サーチ手段71を用いて2つの異なる縮小率のエッジ角度ビット縮小画像とパターンモデルとのサーチによって絞り込んだ、パターンモデルに類似する検出候補の領域に対して、サーチ対象画像と同倍率のパターンモデルを用いてサーチを行い、最終的な位置決めを行うサーチ手段である。
以上の粗サーチ手段71や精密位置決め手段76にて用いられるパターンモデルは、画像処理に使用するデータとして画像(以下「画像データ」という。)そのものでなく、画像データから得られた各エッジ点に対応する少なくともX座標位置、Y座標位置、エッジ角度の値を一次元的にリスト化したデータである。このようなデータから構成されたものが「パターンモデル」であり、画像データでなくリスト化したデータで構成されたパターンモデルを用いることで処理の高速化が図られる。一方で画像データは、いわゆるイメージデータであって、例えば640×480ビットのデータサイズであれば、全面の各画素について、座標位置毎の値を保有しなければならない。これに対し、パターンモデルを利用する場合は、エッジ画像のエッジ部分に相当する位置と角度のみの値で構成することができる。このためデータ量が相対的に少なく、必要な処理量も低減できる。したがって画像データに変わってパターンモデルを用いることで、より高速な処理が可能となる。
なお本明細書において登録画像とは、サーチしたい画像のオリジナルである。一方、パターンモデルは、登録画像と同様のものをサーチ対象画像中からサーチするためのサーチに適した上述したリスト化されたデータである。本実施の形態ではパターンモデルとして、パターンモデルを構成する各点のXY座標及び角度θの情報を有する。なお、後述するように、精密位置決めにおけるパターンモデルを構成するデータとしては、各点のXY座標及び角度θの情報に加え、後述する対応点探索ラインの情報を有する。
図1に示す各部材は、複数の部材を統合したり、あるいは一の機能を個別の部材に分けて実行することもできる。例えば、画像を縮小する画像縮小手段77を、輪郭抽出手段62に統合してもよい。またこれら演算手段6の各機能は、一のCPUやLSI等で処理することもできるが、例えば前処理を行う専用のFPGAと、画像処理を行う専用のDSP等に機能を分散してもよい。この画像処理装置100では、画像処理はDSP等で構成された画像処理部で実行し、画像イメージやサーチ結果の表示はCPUで処理する。このように各機能を分散処理することで、処理の高速化が図られる。各機能を実行する部材は、任意に構成できる。
画像入力手段1は、外部機器で撮像、作成された画像処理の対象となる入力画像を取得する。入力画像データは通信やI/Oにより外部機器から取得される他、記録媒体を介してデータファイルの形で入力することもできる。また画像処理装置自体に入力画像を撮像する機能を持たせてもよい。この場合、画像入力手段1は撮像手段や画像生成手段として機能する。撮像手段としてCCDやCMOS等の固体撮像素子を利用したカメラを使用し、画像処理の対象となる電子部品等のワークを撮像すると、ワークに照射された光の反射光と背景に照射された光の反射光の光量が異なるため、ワークに対応する部分と背景に対応する部分とでは固体撮像素子の電荷量に差が生ずる。すなわちワークと背景で画像の輝度差が生じるため、この輝度差をワークの輪郭やエッジとして検出できる。なお、ワークのCADデータ等として登録画像の輪郭データを入力することも可能である。このようにして画像入力手段1から入力されたデータは、必要に応じてA/D変換して画像処理装置本体部に送られる。
記憶手段4は、各種変換及びテンプレートマッチング等の計算に必要な各種データを記憶したパラメータファイル、登録画像のパターンモデル、サーチ対象画像用エッジ画像等のデータを保持する。このように記憶手段4は、設定内容を保持する他、入力画像のデータを記憶する領域としても利用できる。このような記憶手段4には、DRAMやフラッシュメモリ等の半導体素子、あるいはハードディスク等の固定記憶手段が利用できる。
操作手段2は、画像処理装置100を操作するための入力デバイスである。例えば、ユーザがマウス81及びキーボード82を操作して手動で処理領域を指定する場合は、入力デバイスが処理領域指定手段5として機能する。一方、画像処理装置100側で画像処理に基づき演算手段6で演算することで、自動的に処理領域を指定することもできる。
入力デバイスは画像処理装置100と有線もしくは無線で接続され、あるいは固定されている。一般的な入力デバイスとしては、例えばマウスやキーボード、スライドパッド、トラックポイント、タブレット、ジョイスティック、コンソール、ジョグダイヤル、デジタイザ、ライトペン、テンキー、タッチパッド、アキュポイント等の各種ポインティングデバイスが挙げられる。またこれらの入力デバイスは、輪郭抽出プログラムをインストールしたコンピュータを画像処理装置100と接続する態様、あるいは輪郭抽出プログラムをインストールしたコンピュータを画像処理装置や輪郭抽出装置とする態様において、輪郭抽出プログラムの操作の他、画像処理装置自体やその周辺機器の操作にも利用できる。さらに、インターフェース画面を表示するディスプレイ自体にタッチスクリーンやタッチパネルを利用して、画面上をユーザが手で直接触れることにより入力や操作を可能としたり、又は音声入力その他の既存の入力手段を利用、あるいはこれらを併用することもできる。図1の例では、入力デバイスはマウスやキーボード等のポインティングデバイスで構成される。
表示手段3は、外付けの液晶モニタやCRTモニタ等のディスプレイが利用できる。またタッチパネル等入力機能を備えるタイプを使用すれば、表示手段と操作手段を兼用することもできる。表示手段3は、外部接続する形態の他、画像処理装置自体に組み込むこともできる。
以上の構成は例示であって、例えば画像処理装置自体に表示手段、操作手段等を含んでいてもよく、また各部材は、一の部材で兼用したり、演算手段6に統合することもできる。以下、汎用のコンピュータに輪郭抽出プログラムをインストールしてエッジ連結処理や輪郭抽出処理を実行する例について説明する。
(画像処理の詳細な手順)
この画像処理装置は、画像入力手段1で取得された登録画像(基準画像、参照画像等とも呼ばれる)及びサーチ対象画像に対し、前処理(膨張、収縮、平滑化、ソーベル等)を行った後、特徴抽出としてエッジを抽出する。そして、登録画像から得られたパターンモデルを用いて、運転時にはエッジベースのパターンサーチを行う。本実施の形態では上述の通り、事前にパターンモデルを登録しておき(図3)、実際の運転時にはサーチ対象画像について処理を行う(図4)。このように登録時と運転時の処理を分散することで、処理を高速化できる。
登録時の動作をより具体的に説明すると、登録画像を上述した輪郭抽出手段62にて処理することにより、登録画像の輪郭部分がエッジとして抽出され、幅約1画素の点の集合で表現される登録画像用エッジ画像が生成される。登録画像用エッジ画像は、記憶手段4の登録画像用エッジ画像メモリに一時的に保持される。さらに、登録画像用エッジ画像から、セグメント作成手段68ならびにパターンモデル構成手段70によりパターンモデルが生成される。サーチに使用されるパターンモデルは、記憶手段4のパターンモデルメモリに保持されており、必要に応じて呼び出される。
(登録時のパターンモデルの作成)
ここで登録時のパターンモデルの作成手順のフローチャートを図12に示す。パターンモデルの作成には、上述したようにサーチ対象画像内から抽出したい対象の画像のマスタ画像を登録画像として指定し、一時的に記憶手段4に記憶する。このため登録画像にパターンウィンドウを設定する(ステップS1201)。この登録画像に対して、縮小率を決定した上で(ステップS1202)、画像縮小手段77により画像の縮小化を図る(ステップS1203)。さらに縮小された画像から輪郭を抽出する。具体的にはエッジ抽出処理とチェーン化処理を行う(ステップS1204)。さらにチェーンを連結するセグメント化を行う(ステップS1205)。以上のようにして、縮小画像に対して、輪郭抽出手段62及びチェーン作成手段63、セグメント作成手段68によりエッジデータのセグメント化を図る。そしてパターンモデル構成手段70によりパターンモデルが生成される(ステップS1206)。
上述の通り、本実施の形態においてはパターンモデルとして、粗サーチ用のパターンモデルXと、精密位置決め用のパターンモデルYの二種類が生成される。また、粗サーチ用のパターンモデルのデータ構造は、任意に設定されている原点に対する各エッジ点のX方向とY方向の座標位置、及びエッジ角度により構成され、精密位置決め用のパターンモデルのデータ構造は、任意に設定されている原点に対する各エッジ点のX方向とY方向の座標位置、及びエッジ角度ならびに、後述する対応点探索ラインから構成される。
(エッジ角度)
エッジ角度は、エッジ点におけるエッジの濃度勾配方向を示すものである。ここでは、エッジ角度を示すために、0°から360°を256段階で表現している。
(エッジ強度)
なお各エッジ点のエッジ強度については、本実施の形態では予め定められた強度値より大きな強度値を有するエッジ点のみで構成しているため、データとしてその値を保有していない。ただ、本発明はこの方法に限定されるものでなく、例えばサーチアルゴリズムにおいて、そのエッジ強度値の類似性に基づいて後述するスコア計算による評価や重み付け等を行う場合は、パターンモデルのデータ構造の値としてエッジ強度のデータを保有させても良い。
(画像の縮小率の決定)
また、登録時に縮小した画像を用いる際には、その縮小率が運転時にも影響を与えるため、縮小率の選定が非常に重要となる。ここでは、サーチに必要な画像の特徴点を保持しつつ、ノイズを削除し、サーチ時間を短縮できる適切な縮小率に設定する。例えば、サーチ精度とサーチ時間とのバランスにおいて、サーチ時間をある程度犠牲し、サーチ精度に重きを置く場合は、縮小率を比較的低くした特定の縮小率とする。あるいは、ユーザが試行錯誤によって決定した最適な縮小率を活用することもできる。本実施の形態においては、自動的に縮小率を決定するオートモードと、ユーザが縮小率を指定するマニュアルモードとを切り替え可能としている。ここでオートモードにおいては、パターンウィンドウPMの矩形領域を画定する短い方の辺の長さに基づいて縮小率を決定する。またマニュアルモードでは、縮小率に応じてパターンモデルが実際にどのように変形するかをユーザが目で確認しながら、最適値を選択するようにすれば、設定作業を感覚的として容易にできる。図13のユーザインターフェースの例では、マニュアルモードを選択すると、ドロップダウンリストで縮小率を選択できると共に、選択した縮小率に応じて画像がどのように変形するかをイメージで示している。縮小率を高くする程、画像の角の部分がなまって変形が激しくなる。このようなイメージの変化を参考にしながら、ユーザは用途や目的に応じて適切な縮小率を選択できる。
あるいは、他の実施の形態としてサーチ精度とサーチ時間とのバランスを自動的に決定する手法を採用してもよい。例えば、ユーザが重視する項目として、サーチ精度か、サーチ時間か、又は両方かを選択肢として提示し、ユーザに選択させた上で、該選択に応じて適切な設定を自動で行う。
(粗サーチ用パターンモデルX)
粗サーチとは、後述する精密位置決めに先立って、サーチ対象画像内から、登録画像と同一の画像が存在する可能性の高い領域を検出候補として、効率よく短時間で絞り込むためのサーチである。このため粗サーチは、オリジナルのサーチ対象画像や登録画像から縮小した画像を活用することによって、上述した目的を達成している。より具体的には、図87に示すピラミッドサーチのように、オリジナルサイズの画像を縮小した縮小画像を用いて、粗いサーチを行う。この粗サーチにおいては、縮小率の高い、低解像度の画像を用いる。そして粗サーチで得られた粗い位置(検出候補)に対して、精密値決めを行う。この精密位置決めにおいては、粗サーチよりも縮小率の低い、解像度の高い画像を用いる。
ここで粗サーチ用パターンモデルXを作成する手順を説明する。ステップS1201でサーチ対象画像内から検出したい対象の画像のマスタ画像を登録画像として、一時的に記憶手段4の登録画像メモリに記憶する。より具体的には、撮像手段から取り込み、表示手段に表示される画像に対して、登録画像として必要な部分の位置とその大きさを、図2に示すように矩形状のパターンウインドウPWを用いて、ユーザが画面上にて設定する。
次にこの登録画像に対して、画像縮小手段77により画像を縮小化する際の縮小率を決定する(ステップS1202)。本実施の形態においては、後述するパターンモデルの大域用縮小率は、このパターンウインドウPWの大きさ、すなわち矩形内に含まれる画素数によって決定される。
つまり、登録画像としての画素数が比較的多い場合は、縮小率を高く設定しても、画像の内の特徴点の喪失が少ないため、ある程度縮小率を高く設定する。一方、登録画像としての画素数が比較的少ない場合は、縮小率が高いと、画像の内の特徴点が喪失される可能性が高くなるため、ある程度縮小率を低く設定する。なお、最適な縮小率の設定は、縮小によって、画像内のノイズが除去され、且つ画像の特徴点を喪失しない程度の縮小率が好ましい。
縮小率を決定する他の手法としては、例えば登録画像を、同じ登録画像に対してX方向ならびにY方向に所定量ずつシフトさせる。ここで自己相関が緩やかに変化する場合は、ある程度マッチングすれば相関値が変化し難い特徴のある画像と判断できるため、縮小率を高くする。一方で自己相関が急激に変化する場合は、相関値が変化しやすい特徴のある画像と判断できるため、縮小率を低く抑える。このように自己相関に基づいて縮小率を決定することもできる。
以上のようにして決定された縮小率に基づき、オリジナルサイズの登録画像が画像縮小手段77により縮小される(ステップS1203)。詳細には、画像縮小手段77では、パターンウインドウPWのサイズによって決定された最終の縮小率ではなく、まず画像のオリジナルサイズと大域用縮小率の間に位置する中間縮小率にて、画像の縮小が実行される。ここでは、画像縮小手段77により中間縮小率にて縮小された画像に対して、さらに輪郭抽出手段62及びチェーン作成手段63、セグメント作成手段68により、エッジのセグメント化を図る(ステップS1204、ステップS1205)。なお中間縮小率は、第2の粗サーチにおける縮小率に対応している。
ここで、先にオリジナルサイズの画像を縮小した後、次いで画像のエッジデータ化ならびにセグメント化を図る理由は、逆にオリジルサイズの画像をエッジデータ化ならびにセグメント化した後で縮小する手順に比べ、オリジナル画像の保有する特徴点を保存しつつ、ノイズを低減できるからである。またこの方法は、パターンモデルに類似する検出候補の領域を抽出する粗サーチの目的にも合致している。このため、中間縮小率は、オリジナルサイズの画像の特徴点を保持しつつ、ノイズをある程度低減できるように、ユーザがそのセグメントを見ながら手動で決定するマニュアル設定とすることもできる。あるいは、パターンウインドウPWのサイズに応じて自動的に決定する自動設定とすることもできる。
(第1のパターンモデル作成)
次にステップS1206で、パターンモデル構成手段70は、セグメント作成手段68にてセグメント化されたデータを用いて、上述した中間縮小率での第1のパターンモデルを生成する。この第1のパターンモデルは粗サーチの内、局所サーチ用である(図9のステップS902)。図8に、各パターンモデルの例を示す。第1のパターンモデルは、図8(a)に示すように、エッジ画像データ内に存在する各セグメント上に、予め定めた条件に基づいて、基点を決定し、さらに各基点に対して、セグメントの法線方向で、且つエッジの向きにエッジ角度を設定したエッジモデル点が規定される。
(第2のパターンモデル作成)
さらにパターンモデル構成手段70は、セグメント作成手段68にてセグメント化されたデータを用いて、上述した大域用縮小率での第2のパターンモデルを生成する(図8(b))。この粗サーチ用の第2のパターンモデルは、第1のパターンモデルと同様に、エッジ画像データ内に存在する各セグメント上に、予め定めた条件に基づいて、基点を決定し、各基点に対して、セグメントの法線方向で、且つエッジの向きにエッジ角度を設定している。これらパターンモデルは縮小率に応じて個別に作成せずとも、1つのみを作成し、運転時においてはサーチ対象画像の縮小率に応じてパターンモデルを拡大縮小して利用することができる。
第1のパターンモデルと第2のパターンモデルの相違点は、各セグメント上に設定される基点が複数存在する場合、図8(a)、(b)に示すように、その基点間の距離が第1のパターンモデルのものに比べ、第2のパターンモデルのものが長くなっている点である。これは、2つのパターンモデルの縮小率が相違することに起因している。基点間の距離が相違する度合いは、中間縮小率と大域用縮小率との違いに支配されている。
ここで、具体的な粗サーチは、図9に示したように、大域用縮小率の第2のパターンモデルを用いてサーチ対象画像の全範囲に対して実施される「大域サーチ」(ステップS901)と、この「大域サーチ」によって抽出された検出候補の候補領域に対してのみ、中間縮小率の第1のパターンモデルを用いて実施される「局所サーチ」(ステップS902)で構成される。
本実施の形態の説明においては、粗サーチは、一の大域用縮小率のパターンモデルを用いた1回の「大域サーチ」と、一の中間縮小率のパターンモデルを用いた1回の「局所サーチ」を行っている。具体的には、画像のオリジナルサイズに対して中間縮小率が、
(1)1/√2倍以下の場合、大域用縮小率を中間縮小率の1/2倍、
(2)1/√2倍〜1/4倍の場合、大域用縮小率を中間縮小率の1/3倍、及び
(3)1/4以上の場合、大域用縮小率を中間縮小率の1/4倍に、それぞれ設定している。このように中間縮小率に応じて大域用縮小率を決定することで、サーチの効率と、オリジナル画像からの特徴点の保存を両立させている。
ここで、局所サーチを複数回行うこともできる。上記(3)のように、画像のオリジナルサイズに対して中間縮小率が著しく高い場合、例えば画像のオリジナルサイズに対して、中間縮小率が1/4倍に設定された場合、大域用縮小率は、画像のオリジナルサイズに対して1/16倍となる。この場合は、大域用縮小率と中間縮小率との比率が4倍も異なるため、大域用縮小率の第2のパターンモデルを用いて抽出した検出候補の候補領域とその周辺をサーチの最小とする「局所サーチ」に時間がかかりすぎる恐れがある。
そこで、本実施の形態においては、中間縮小率と大域用縮小率の比率が2倍より大きい場合、隣接する縮小率同士の比率が2倍以下となるように、自動的に更にサーチを1回又はそれ以上追加するように、追加的な中間縮小率が設定される。すなわち、局所サーチを2回以上行うことで、1回の局所サーチに要する時間の短縮化を図っている。このような中間縮小率(局所サーチ用縮小率)の自動追加は、例えば図5に示すユーザインターフェース画面で、「自動で局所サーチ用縮小率を追加する」オプションにチェックを入れて設定できる。
上述したように、パターンモデルは、任意に設定されている原点に対する各エッジ点のX方向とY方向の座標位置及びエッジ角度から構成されるデータ構造である。したがって、追加の中間縮小率が設定された場合、その追加の中間縮小率に対応するパターンモデルは、上述した第1のパターンモデルや第2のパターンモデルと同様に、セグメントから生成される。追加の中間縮小率のパターンモデルと、第1のパターンモデルや第2のパターンモデルとの相違は、各セグメント上に設定される基点が複数存在する場合、その基点間の距離が第1のパターンモデルのものに比べ長く、かつ第2のパターンモデルのものに比べて短いことである。なお、パターンモデルを縮小しても、パターンモデル自体が座標位置等のデータで構成されているため、画像データの縮小に比べ、縮小による情報の欠損を極減できる。
(大域サーチ)
ここで、説明の便宜ためサーチの運転時の動作についても説明する。図9のステップS901に示すように、大域用縮小率のパターンモデルを用いた「大域サーチ」を実行することにより、検出候補の候補領域を抽出する。そして、抽出された検出候補の候補領域を、大域用縮小率の次に縮小率の高い第2のパターンモデルを用いて、「局所サーチ」を実行する。これにより、サーチ結果に基づいて、より精度の高い検出候補の候補領域を絞り込む。その後、縮小率の高い順に、設定される中間縮小率のパターンモデルを用いて、絞り込まれた検出候補の候補領域に対して、「局所サーチ」を実行し、検出候補の候補領域を絞り込むステップを繰り返す。
(精密位置決め縮小率)
(手動縮小率決定モード)
また上述したように、ユーザが図5のユーザインターフェースを用いて縮小率を選択する手動縮小率決定モードの場合は、ユーザは、一の中間縮小率と、一の大域用縮小率、及び精密位置決め手段76を用いる際の精密位置決め縮小率を選択することができる。ただこの場合でも、選択された中間縮小率と大域用縮小率との比率が2倍より大きい場合には、自動的にこれらの縮小率の間に上述した条件に基づいた更なる中間縮小率を自動的に生成されるように設定してもよい。また、精密位置決め手段76を用いる際の精密位置決め縮小率については、縮小率の候補をユーザに選択させる際、粗サーチ用に設定された縮小率の内で最も低い値か、これよりもさらに低い縮小率の値(画像のオリジナルサイズを含む)しか選択できないように、選択対象の値を制限している。これにより、誤って前段の粗サーチよりも縮小率の高い、粗いデータで精密位置決めを行う事態を回避できる。
(精密位置決め用パターンモデル)
精密位置決めサーチは、図9のステップS903に示すように、上述した粗サーチの「局所サーチ」によって絞り込まれた、一つ又は複数の検出候補の候補領域に対して、「局所サーチ」において最後に用いた最終中間縮小率又はこれよりも低い(画像のオリジナルサイズを含む)縮小率のパターンモデルを用いて、精密な位置決めを行うものである。好ましくは、精密位置決めに用いるパターンモデルの縮小率は、等倍画像すなわちオリジナルサイズの原画像とする。
(エッジの鮮鋭度)
上述の通り、精密位置決めにおいては必ずしもオリジナルサイズのサーチ対象画像を用いるものでなく、前段の局所サーチにおいて最後に用いた最終中間縮小率を超えない範囲の縮小率(精密位置決め縮小率)で縮小した画像を用いることもできる。これによって、特にサーチ対象画像がぼけている場合にも好適なサーチ結果が期待できる。
例えば、オリジナルサイズのエッジ画像の輝度データの波形が尖鋭である程、鮮鋭度が高く、逆になだらかである程、画像がぼやけているといえる。そこで、エッジの部分の鮮鋭度が予め定められた値より低い場合、すなわちエッジが幅方向において所定の幅以上に分散して、画像がぼやけている場合は、適切な精密位置決め縮小率に設定して画像をこの縮小率に縮小することで、この画像の鮮鋭度を低減してエッジの鮮鋭度を増すことができ、この結果安定した位置決め精度を得ることができる。
例えば図53に示すような画素の変化が急峻な二値画像の場合、この画像の輪郭すなわちエッジは、図54に示すように画素の濃度すなわち画素値が階段状に変化する、いわゆるステップエッジである。このため、エッジの強度変化は図55に示すように、境界線がシャープに現れる傾向にあり、正確な位置決めが期待できる。一方、二値画像が不鮮明な場合は、境界部分の変化が図56に示すようになだらかとなり、この結果エッジの強度変化が図57に示すように起伏の乏しい曲線となって、照度や光量変化といった周囲環境の僅かな変動でエッジ検出精度が左右され、安定したエッジ検出ができず画像認識等の画像処理の信頼性も低下するという問題があった。そこで本実施の形態では、適切な位置決め縮小率に縮小することでエッジの鮮鋭度を向上させる。
(エッジのサブピクセル座標の決定)
具体的には、エッジ情報を用いた精密位置決めにおいては、登録画像から抽出したエッジの位置情報に基づき生成するパターンモデルと、サーチ対象画像から抽出したエッジの位置情報に基づき高精度な位置決めを行う。このため、エッジの位置情報は極めて重要となる。
従来、エッジのサブピクセル位置を決定する手法として、特許文献2、3等の技術が知られている。これらの方法では、注目画素のエッジ強度と、その周囲に位置する2つの画素のエッジ強度の、合計3つのデータを用いて二次関数補完を用いてサブピクセル座標を求めている。図58に、特許文献2に係るサブピクセル座標の計算方法の概要を示す。この図において、EMc(Edge Magnitude center)は、エッジの細線化のための非極大点抑制処理(nonmaxsupress)後に残ったエッジ点である注目エッジ点のエッジ強度値である。またEMf(Edge Magnitude forward)は、注目エッジ点のエッジ角度の向きにある矢印での推定エッジ強度値である。さらにEMb(Edge Magnitude backward)は、注目エッジ点のエッジ角度の向きにある丸印での推定エッジ強度値である。さらにまたEMf1、EMb1の添え字の1は、十字方向のエッジ点の特徴量に、EMf2、EMb2の添え字の2は、対角方向のエッジ点の特徴量に、それぞれ与えられる。以下の例では、エッジ角度が水平方向となす角度EAc<45°について考える。他の角度については、対称性を考慮して求めることができる。ここで、次式が成立する。
EMf=EMf1*(1−tanEAc)+EMf2*tanEAc
EMb=EMb1*(1−tanEAc)+EMb2*tanEAc
上式のEMcとEMfとEMbの3つのエッジ強度データを用いて、EMcの位置からのサブピクセル位置のオフセット量は、次式で計算できる。
x=(EMf−EMb)/(2(2EMc−EMf−EMb))
y=x*tanθ
以上のようにして、サブピクセル位置を演算することができる。次に、ピントの合ったエッジ強度の様子と、不鮮明な画像でのエッジ強度の様子を、図55及び図57に示す。図55から明らかなように、ある程度ピントの合ったエッジ強度はピークが尖鋭となり、エッジ位置は明確に決定できる。一方、図57に示すように不鮮明でぼやけた画像の場合は、極大付近がかなりフラットな状態となり、エッジ強度の誤差によるサブピクセル座標への影響が大きくなる。その影響を評価するために、EMf=EMbでEMfに誤差が1階調ある場合を検討する。エッジ強度の誤差とサブピクセル位置との関係を、次式に示す。
上記関数において、x=a+1付近の状況を調べると、以下の通りとなる。
上式において、X=c−aとすると、
となる。これをグラフで表現すると、図59のようになる。この図に示すように、EMf=EMb付近で、X→0、つまりc→aでエッジ強度がフラットになっていくと、エッジ強度の誤差によるエッジ位置の誤差への影響が大きくなることが判る。同様の傾向がEMf≠EMbでも見られる。そこで、本実施の形態では、エッジ点の鮮鋭度を演算し、この値を用いてエッジのサブピクセル位置計算を行うための画像データ縮小率を計算する。さらに、画像データ縮小率に縮小した画像データを用いて、エッジ抽出を行う。このように画像データを縮小することで、図57のようななだらかな波形を図55のような尖鋭な波形とし、エッジ位置を安定させ、位置決めの精度を向上させることができる。
エッジ点の鮮鋭度に基づき、画像データ縮小率を決定する手順を、図60のフローチャートに基づいて説明する。まずステップS6001において、等倍画像からエッジ画像を作成する。次にステップS6002において、エッジ画像のエッジの細線化を図り、一方でステップS6003において、エッジ画像の各エッジ点の鮮鋭度の演算を行う。エッジの細線化処理は、エッジ連結処理に先立ち、非極大点抑制処理のために行われる。さらにステップS6004で、細線化された対象のエッジ点の鮮鋭度の平均値を演算する。そしてステップS6005で、この鮮鋭度の平均値に基づいて、画像データの縮小率を決定する。ここでエッジ点の位置精度が所定以上に維持されるように画像データ縮小率を決定する。
(エッジのモデル関数)
次に、エッジのモデル関数について検討する。抽出されるエッジの多くは、ステップ状のエッジであると考え、以下に示すエッジのモデル関数で表現できると仮定する。このエッジのモデル関数のσsを、エッジ点の鮮鋭度とする。この場合エッジの理想型は、次式で表現できる。
上式の関数のグラフを、図61に示す。この図に示すエッジの理想的な形状(プロファイル)は、次式でプロットされる(x軸に沿ってI=2、l=0、σs=0.6の場合)。
(画像データ縮小率を適用したパターンサーチの手順)
次に、画像データ縮小率を用いた具体的な画像処理におけるパターンサーチの手順を、図62、図63のフローチャートに基づいて説明する。これらの図において、図62は登録時の動作を、図63は運転時の動作を、それぞれ示している。
(画像データ縮小率を適用した登録時の動作)
まず登録時の動作を図62に基づいて説明すると、ステップS6201において、粗サーチ用のパターンモデルを作成する。次にステップS6202において、等倍画像でエッジ抽出を行い、抽出されたエッジ点毎に標準偏差σsを求める。標準偏差σsを求めるに際して、実際に画像データから抽出されるエッジの形状は、上記図61のモデルに近似していると仮定する。ここでは、所定のエッジ強度閾値以上のエッジ点における各エッジのサブピクセル位置を計算するために、図64に示す近接する3点B、C、Fのエッジ強度EMb、EMc、EMfを用いて、対数エッジ強度の二次微分の近似式である次式を用いる。
上式のtを用いて、標準偏差σsが次式から計算できる。
なお上式のtを用いると標準偏差σsを1価関数で表現できるということが重要であり、上式に特別な意味があるわけではない。
一方で、ステップS6203において、画像データから抽出されたエッジを、チェーン作成手段63、セグメント作成手段68でチェーン化、セグメント化して、仮のパターンモデルを作成する。さらにステップS6204において、この仮のパターンモデルの作成に際して用いた各エッジのσsのみを用いた平均値σaを演算する。次いでステップS6205で、この平均値σaを用いて、画像データ縮小率rを次式で求める。ここでは、精密位置決め縮小率となる。
この例では、エッジ強度の対数の差分値を求めて、この差分値から縮小度を計算した。ただ、この例に限られず、エッジ強度の対数の微分値に関する各種近似値を用いて、画像データ縮小率を演算することもできる。またここでいう近似値には、エッジ強度の微分値の近似値も含む。
このようにして画像データ縮小率rが得られると、ステップS6206で登録画像を改めて精密位置決め縮小率に合わせて縮小し、さらにステップS6207で、縮小した登録画像から、精密位置決め用のパターンモデルを作成する。
(画像データ縮小率を適用した運転時の動作)
次に、画像データ縮小率を用いた登録動作を受けて行う運転時の動作を図63に基づいて説明する。まずステップS6301において、上記で得られた精密位置決め縮小率を用いて、サーチ対象画像を、精密位置決め用の縮小サーチ対象画像に縮小する。一方でステップS6302として、サーチ対象画像から、粗サーチ用の縮小画像を作成し、そしてステップS6303で、粗サーチ用パターンモデルと粗サーチ用縮小画像を用いて、検出候補の位置と姿勢を求める。最後にステップS6304で、これら精密位置決め用パターンモデルと、精密位置決め用縮小サーチ対象画像と、検出候補の位置及び姿勢を用いて、精密位置決めを実行する。
(画像縮小の前処理・後処理)
なお、画像データ縮小後でもエッジ位置の情報が可能な限り維持されるように、画像データの縮小を行う。具体的には、画像データ縮小率に応じたローパスフィルタを適用した後に、サブサンプリングを行う。サブサンプリング後の画像データに対して、エッジの抽出を行うことで、精度の良いエッジ位置情報を得ることが可能となる。
以上のようにして、元画像のぼやけ等不鮮明が原因で生じる精度の低下を抑制できる。さらに、画像データを縮小してデータ量を小さくすることで、以降の処理を高速、軽負荷にできるという副次的な利点も得られる。
本実施の形態において精密位置決め縮小率は、「局所サーチ」において最後に用いた最終中間縮小率(第1縮小率)を上限とする縮小率に自動的に設定する。また精密位置決めに用いるパターンモデルは、精密位置決め縮小率と同一になるよう縮小された登録画像から生成される。このように精密位置決め縮小率は、オリジナルサイズのエッジ画像のエッジの鮮鋭度に基づいて、画像のオリジナルサイズから局所サーチにおいて最後に用いた最終中間縮小率の範囲で決定される。
このように精密位置決め縮小率を調整することで、鮮鋭度を一定以上に維持して、鮮鋭度の高い状態で利用することにより位置決め精度の安定性を確保できる。
(パターンモデルの登録時の動作)
再びパターンモデルの登録動作の説明に戻って、精密位置決め用パターンモデルを登録する手順について、図14のフローチャートに基づいて説明する。精密位置決め用パターンモデルは、上述した粗サーチ用パターンモデルにて説明した登録画像と同一の画像を用いて作成する。まずステップS1401において、画像縮小手段77による処理に先立ち、輪郭抽出手段62によって、登録画像に対するオリジナルサイズのエッジ画像を生成し、エッジの鮮鋭度を評価する。これに基づいて、ステップS1402で最適な縮小率を決定する。このようにして登録画像に対して決定された最適な精密位置決め縮小率に基づいて、ステップS1403で画像縮小手段77により、画像の縮小化を図る。さらに、画像縮小手段77により決定された縮小率(縮小率1倍も含む)にて縮小された画像に対して、輪郭抽出手段62及びチェーン作成手段63、セグメント作成手段68により、エッジのセグメント化を図る(ステップS1404、ステップS1405)。具体的には、縮小された画像に対して、エッジを抽出するエッジ抽出処理と、エッジ点からチェーンを作成するチェーン化処理を行い、さらにチェーンを連結するセグメント化を行う。次に、パターンモデル構成手段70は、セグメント作成手段68にてセグメント化されたデータを用いて、決定された精密位置決め縮小率での精密位置決め用パターンモデルを生成する(ステップS1406)。
さらに精密位置決め用パターンモデルは、上述した粗サーチ用パターンモデルと同様に、エッジ画像データ内に存在する各セグメント上に、予め定めた条件に基づいて、基点を決定する(ステップS1407)。また各基点に対して、角度の設定を行う(ステップS1408)。ここではセグメントの法線方向で、且つエッジの向きに角度を設定する。さらに各基点について、その基点が設けられているセグメントの種類(線分や円弧等のセグメントの種類)、そのセグメントを表すパラメータ(線分や円弧からなるセグメントを定義できるパラメータ)、セグメントの法線の向きでエッジの角度に近い向きの角度、及びセグメントの法線方向に予め定めた長さを有する線分情報、すなわち対応点探索ラインを設定する(ステップS1409)。
(対応点探索ラインの線分長さ)
ここで、各基点に対して与えられる対応点探索ラインの線分長さは、各基点に対して同じ長さのものが設定される。その長さは、局所サーチにおいて最後に用いた最終中間縮小率と、精密位置決めで用いる精密位置決め縮小率との比率によって決定される。言い換えれば、最終中間縮小率と精密位置決め縮小率との比率が大きければ、線分の長さは長く、比率が小さければ、線分の長さは短くなるように設定されている。
例えば、局所サーチにおいて最後に用いた最終中間縮小率が、画像のオリジナルサイズに対して1/4倍であり、精密位置決めの縮小率が等倍であった場合、最終中間縮小率と、精密位置決め縮小率との比率は4倍であるため、局所サーチでの1ピクセルが、精密位置決めでは4ピクセルに相当することになる。そのため、精密位置決め用パターンモデルでの線分の長さは、基点から、エッジの正と負の向きに各々4ピクセルをカバーする長さに設定される。ただし、この線分の長さは、位置決めの精度とサーチ時間に影響を与えるため、縮小率の比率によって対応するピクセル数を全てカバーすることが必ずしも必要でない。例えば、要求される処理時間に応じて対応点探索ラインの線分長さを短く設定する。あるいは逆に、対応するピクセル数以上の長さを持たせても良い。例えば、縮小率の比率に応じた線分長さに、マージンを設定することで、一層の処理の安定性を図ることができる。
(対応点探索ラインの線分長さの変化)
また、対応点探索ラインの長さを、基点に対して前後に均等でなく、一方を長く又は短くするように変化させることもできる。この処理はパターンモデル構成手段70等により行われる。ここで、対応点探索ラインの長さを変化させた例を、図27及び図28に基づいて説明する。これらの図において、図27は基点からの長さが等しい場合、図28は基点からの長さが異なる場合を、それぞれ示している。なお、これらの図において内側の矩形領域で発生する対応点探索ラインは、フィルタリングされている。図27に示すように、基点から延長される対応点探索ラインの長さを、基点の前後左右で一定にすると、内側の矩形状と重なり合い、誤判定を生じる虞がある。そこで、内側に向かう方向には対応点探索ラインを延長させず、図28のように外側に向かう方向のみに対応点探索ラインを設定すれば、より誤判定の少ない、正確なサーチ結果が期待できる。
(対応点探索ラインの設定間隔)
対応点探索ラインは、セグメント上に端部を除いて設定される。このような端部は、位置をずらした際の影響が大きいためである。したがってこのような位置ずれした場合の影響が大きい部分を排除して対応点探索ラインを設定することで、安定した処理が見込まれる。
対応点探索ラインを設定する間隔や本数は、要求されるパターンサーチの処理速度や精度に応じて決定される。セグメントを構成する各線分や円弧に少なくとも1つは、対応点探索ラインを配置するよう設定することでパターンサーチの精度を維持できる。最も簡単には、セグメント上の中心に一つの基点を配置してその点からセグメント上に等間隔に基点を設定する。また、セグメントの内、エッジ角度が曖昧な部分については基点の設定を間引き、確実に検出されている部分で密に基点を設定することで、精度を高められる。
また、対応点探索ラインはセグメントの中央に少なくとも1つは必ず割り当てるようにすることが好ましい。これにより、パターンモデルの一部を構成するセグメントに対しては、短いものであっても一つは対応点探索ラインを設定するよう保証する。
(運転時のサーチ対象画像に対する前処理)
以上、パターンモデルの登録時の動作、すなわち粗サーチ用、精密位置決め用パターンモデルの作成について説明した(図3、図12)。運転時においては、これらのパターンモデルを使用したサーチを行う(図4)。サーチにあたっては、撮像手段から入力されたサーチ対象画像に対して所定の前処理が施される。ここで、運転時のサーチにおいて、サーチ対象画像に対する前処理を行う手順を図15のフローチャートに基づいて説明する。
まずステップS1501において、入力されたサーチ対象画像に基づき、画像縮小手段77は、登録時に登録画像に対して用いた、粗サーチ用の第1のパターンモデルの中間縮小率(第1縮小率)を用いて、縮小画像を生成する。
一方でステップS1502において、輪郭抽出手段62のエッジ角度・エッジ強度画像作成手段60が、エッジ角度画像及びエッジ強度画像を生成する。また細線化手段61が、このエッジ角度画像及びエッジ強度画像に基づいて、細線化されたエッジ角度画像を生成する。
次にステップS1503において、エッジ角度ビット画像作成手段69が、輪郭抽出手段62にて生成され、細線化されたエッジ角度画像に基づいて、粗サーチ用の第1のパターンモデルの中間縮小率に対応したエッジ角度ビット画像を作成する。言うまでもなく、ここで生成されたエッジ角度ビット画像が、サーチ動作において、粗サーチ用の第1のパターンモデルを用いた「局所サーチ」に適用される。
さらにステップS1504において、エッジ角度ビット画像縮小手段78は、エッジ角度ビット画像作成手段69にて生成されたエッジ角度ビット画像に基づいて、「大域サーチ」用の第2のパターンモデルの大域用縮小率に対応したエッジ角度ビット縮小画像を生成する。
なお、粗サーチの中間縮小率の設定の説明において述べたように、最初に設定される中間縮小率と大域用縮小率との間の追加の中間縮小率に基づいて、追加のパターンモデルが作成される場合は、任意的なステップS1505として、この前処理においても、エッジ角度ビット画像縮小手段78にて、エッジ角度ビット画像作成手段69にて生成されたエッジ角度ビット画像に基づいて、追加のパターンモデルの中間縮小率に対応したエッジ角度ビット縮小画像が生成される。
なお、上述した運転時の前処理においては、運転時に行う粗サーチの大域サーチ及び局所サーチ、並びに精密位置決めとは逆の順序で、サーチ対象画像に対する処理を行っているが(図8参照)、パターンモデルの作成順序は特に限定されるものでなく、精密位置決め用のパターンモデルを先に作成した後、粗サーチ用のパターンモデルを作成してもよいことはいうまでもない。一方、運転時においては縮小率の高い画像を用いて粗いサーチを行い、徐々に縮小率を下げてオリジナルサイズに近い画像で細かいサーチを行う。
以上のようにして運転時の前処理が終了した後、生成されたエッジ角度ビット縮小画像、エッジ角度ビット画像等を用いて、粗サーチの大域サーチ、局所サーチを行い、検出候補の座標を求めた後に精密位置決めを行う(図9)。
(登録時の各動作の詳細)
以上、登録時と運転時の動作の概要について説明した。次に、登録時における画像処理動作の詳細について説明する。登録時において、エッジ角度・エッジ強度画像作成手段60は、登録画像に対してソーベルフィルタを適用し、登録画像を構成する各点毎にエッジ強度及びエッジ角度を求め、エッジ強度、エッジ角度、エッジ位置を含むエッジ情報を演算する。これらエッジ情報に基づいて、細線化処理を行ってエッジ点を求める。細線化処理の具体例としては、エッジ強度の非極大点抑制処理が利用できる。ここでは、細線化により幅1ピクセルの線状としている。
なおエッジ点は、サブピクセル位置の精度で求めることもできる。例えば、2次関数補間(例えば、特開平7−128017号公報参照)を利用してサブピクセル位置が演算できる。
さらに得られたエッジ点を連結して、連続したチェーンを作成する。ここでは、エッジチェーン化手段64が、エッジ角度がほぼ同一方向である隣接したエッジ点同士を連結するエッジ連結処理を行い、一続きの線分要素(チェーン)を作成する。ここで得られるチェーンも、xyサブピクセル座標を有する。各チェーンは、エッジ点の集合であり、個々のチェーンにはチェーン同士を区別するための識別子としてチェーンインデックスが付与される。
さらにエッジチェーンセグメント化手段65で、チェーンを近似してセグメントを生成する。セグメントは、最小二乗法を利用してチェーンを線分及び円弧で近似するフィッティングによって求められる。フィッティングは、まず線分での近似を行い、線分による近似の誤差が所定の閾値を超えると、円弧でのフィッティングに切り替える。円弧で近似しても誤差が減少しない場合は、線分でのフィッティング結果を用いる。このようにして、線分と円弧の組み合わせで順次フィッティングする作業を繰り返し、フィッティング結果の誤差が閾値を超えた時点で、その前までに得られたデータが十分長ければ、連続線としてのセグメントとする。エッジ点がサブピクセル位置で求められているため、セグメントもサブピクセルオーダーの高精度な位置で得られる。
ここでは、チェーンを線分と円弧で近似したセグメントが形成される。線分のセグメントは、直線を表す式(例えばax+by+c=0)と端点の座標等で表現できる。一方円弧のセグメントは、中心の座標と半径、開始角度と終了角度等で表現できる。例えば(x−xo)2+(y−yo)2=ro 2における円弧の中心座標(xo、yo)及び半径roで円弧セグメントを表現する。このようにして生成した各セグメント上に、所定間隔で基点を設定する。
なお上記は、セグメントとして線分又は円弧による近似の例を説明したが、これに限らず、円錐曲線、スプライン曲線、ベジエ曲線等も適宜利用できる。これにより、円形状や楕円形状、三角形状、矩形状といった一定の幾何学形状を基準として、これらの単独若しくは組み合わせとしてパターンモデルを作成できるので、パターンサーチ作成やその後の各処理を簡素化できる。
(パターンモデルの縮小)
また、サーチの運転時にはパターンモデルを縮小する。この縮小率は、後述する運転時においてサーチ対象画像を粗サーチのために縮小する縮小率となる。この縮小処理があるため、パターンモデルのモデルエッジ点としての基点は、その縮小処理の結果として同じ座標を指定することのないように、基点同士の間隔が設定される。この結果、図16のパターンモデルは、図17のようになる。
(粗サーチ用パターンモデルと精密位置決め用パターンモデルとの相違点)
粗サーチ用パターンモデルと精密位置決め用パターンモデルとは、それぞれオリジナルサイズの登録画像(もしくはその縮小画像)から作成される。いいかえると、粗サーチ用パターンモデルのセグメントは、精密位置決め用パターンモデルのセグメントから作成されているものでなく、両者のセグメントは必ずしも一致しない。また粗サーチ用パターンモデルと精密位置決め用パターンモデルとは、パターンモデルの大きさが異なるため、基点間の距離も異なる。その基点間を等倍換算した距離の相違は、縮小率に依存する。
さらに粗サーチ用パターンモデルでは、基点の座標と、基点におけるエッジの向き(角度情報)が与えられている。いいかえると、対応点探索ラインの長さ情報を有しないセグメントの法線方向でエッジの向きに近い角度が設定される。この粗サーチ用パターンモデルを用いた粗サーチでは、パターンモデルをサーチ対象画像上に置き、基点の位置にエッジがあるかどうか、そのエッジの向きがパターンモデルの向きと一致するかどうかを確認する。
これに対して精密位置決め用パターンモデルでは、粗サーチ用パターンモデルである上記基点の座標、基点におけるエッジの向きに加えて、基点を通り、セグメントと略直交する方向に伸びる所定長さの対応点探索ライン(すなわちセグメント法線の長さを規定したもの)と、セグメントの種別(例えば線分又は円弧といった属性)とを有している。この違いは、各サーチの処理内容に対応している。すなわち、精密位置決めにおいては、対応点探索ラインの範囲内で対応するエッジを探索する。このように精密位置決め用パターンモデルは、基点に対応する対応エッジ点を選択する対応エッジ点選択手段として機能する。
なお、輪郭の抽出においては、必ずしもセグメントを作成する必要はない。セグメントでなくチェーンから直接対応点探索ラインを設定することもできる。例えば、ある輪郭に対して基点を3点設定する場合、その輪郭に相当するチェーンを構成するエッジ点3点を等間隔に設定し、各法線方向に対応点探索ラインを設定する。この方法であれば、セグメントを作成しない分高速な処理が見込まれる反面、チェーンを直線や円弧で近似していないため精度が多少低下する。特にチェーンは単にエッジ点を連結しただけであって、直線性に劣ることがある一方、セグメントは直線や円弧で近似しているため、より正確な演算結果が得られ、位置決め精度も安定する。
(運転時の粗サーチの詳細)
次に、以上のようにして登録されたパターンモデルを用いて、実際にサーチ対象画像中から一致する部位をサーチする運転時の動作を説明する。まず粗サーチで粗い位置及び姿勢を求める手順の詳細を、図18のフローチャートに基づいて説明する。本実施の形態では、粗サーチを大域サーチと局所サーチに分けて行い、検出候補を求める。
(ステップS1801 サーチ対象画像の縮小)
まず、ステップS1801で、サーチ対象のサーチ対象画像を、登録画像の縮小率に合わせて縮小する。例えば図19(a)に示すサーチ対象画像を、登録画像と同じ倍率に縮小して、図19(b)に示す縮小サーチ対象画像を得る。ここではまず粗サーチ用として、中間縮小率まで縮小する。いいかえると、縮小率の大きい大域用縮小率への縮小を先に行うことはせず、先に縮小率の小さい中間縮小率まで縮小する。
(ステップS1802 エッジ角度画像、エッジ強度画像の取得)
次にステップS1802で、縮小サーチ対象画像からエッジ強度画像及びエッジ角度画像を、エッジ計算手段でそれぞれ求める。エッジ計算法としてはソーベルフィルタ等が使用できる。
ここでソーベル法について説明する。ソーベル法は、オペレータ(カーネル)として3×3の行列を用いる。この方法は、対象点を中心とする周囲の点につき、画素値(例えば輝度)に係数を乗じて加算したものを中央点の画素値として抽出する。この方法は水平方向、垂直方向のフィルタであり、また平滑化の操作を含むためノイズに強いという特性を備える。ソーベルフィルタで使用するカーネルを、以下に示す。
この結果、サーチ対象画像のエッジ強度画像とエッジ角度画像が、それぞれ得られる。
(ステップS1803 サーチ対象画像のエッジ角度ビット画像の作成)
さらにステップS1803で、エッジ角度画像とエッジ強度画像から、エッジ角度ビット画像作成手段69でエッジ角度ビット画像を作成する。エッジ角度ビット画像とは、エッジ角度画像を構成する各点のエッジ角度を、角度ビット情報として表現した画像データである。この結果、エッジ角度ビット画像が得られる。エッジ角度画像からエッジ角度ビット画像への変換については、後述する。
(ステップS1804 エッジ角度ビット画像の縮小)
さらにステップS1804で、得られたエッジ角度ビット画像をエッジ角度ビット画像縮小手段78で縮小する。縮小率は、大域サーチ用の第2のパターンモデルを作成する場合は大域用縮小率に、局所サーチ用の第1のパターンモデルを作成する場合は中間縮小率に、それぞれ設定される。この結果、エッジ角度ビット画像の縮小画像が得られる。
(ステップS1805 大域サーチの実行)
次に、ステップS1804で縮小されたエッジ角度ビット縮小画像に対して、予め縮小されたパターンモデルで大域サーチを行う。具体的には、左上から右下に走査するように、パターンモデルの角度を変化させながら全ての範囲でサーチを行う。それによって、検出候補の領域を抽出する。検出候補の位置は、例えばxy座標、姿勢は、例えば角度θ等で表現される。ここで、検出候補はスコア計算によって行われ、粗サーチ手段71によって、縮小パターンモデルを探索位置及び姿勢の自由度で移動させ、それぞれの位置及び姿勢にてスコアを計算する。
(スコア計算)
大域サーチにおけるスコア計算は、サーチ対象画像を大域用縮小率に縮小して得られたエッジ角度ビット画像及びパターンモデルに含まれる各エッジ点のエッジ角度ビットを各々比較して、一致度を計算することにより行われる。サーチの際は、基点の位置と角度のデータをスコア計算を行う位置及び姿勢に合わせ変化させる。その後に角度をエッジ角度ビット画像と同様に変換して、縮小後のエッジ角度ビット画像データの画素値に対してAND処理を行い、残ったビットの数の合計値を期待される合計値のマックス値で割った値を一致度とし、粗サーチ手段71で演算する。また、角度方向に複数のビットを割り当て、重みの概念を付加することもできる。
(ステップS1806 局所サーチの実行)
さらに、大域サーチで見出した検出候補の領域に対して、局所サーチを行う。局所サーチにおいては、大域サーチ用のパターンモデルよりも縮小率を低くした局所サーチ用のパターンモデルを用いる。また、サーチ対象画像としてのエッジ角度ビット画像も、大域サーチ用縮小率よりも縮小率の低い局所サーチ用縮小率で縮小した縮小画像が用いられる。
また、局所サーチの際には、大域サーチで見出した検出候補の領域をそのまま利用するのみならず、その近傍の一定領域、例えば3×3画素、5×5画素といった周囲の画素についても、局所サーチを行ってもよい。これによって安定したサーチ結果が期待できる。
(膨張処理)
すなわち、スコア計算の結果を安定させるために、粗サーチの際に膨張処理を行うこともできる。一般にサーチ対象画像の縮小率が小さくなって精度が上がると、僅かな位置のずれでもスコアが大きく低下する傾向を示す。スコアの急激な変化を回避するためには、回転角度を細かく変化させればよいが、この場合は処理量が増えるというデメリットを生じる。そこで処理量の軽減と精度の向上のバランスを考慮して、サーチ対象画像であるエッジ角度ビット画像を所定量だけ膨張させる。例えば、画素のXY方向に対し、所定の画素数、例えば1画素分を2倍した2×2画素分拡張させる。これにより、僅かな角度のずれによる急激なスコア値の変動が抑制され、安定したスコア値を得ることができる。
このようにして、計算されたスコアに基づき、縮小パターンモデルの縮小サーチ対象画像における粗位置を決定する。また、必要に応じて上記工程を繰り返して、粗位置の精度を高めることができる。すなわち、単に粗サーチを大域サーチと局所サーチの2回に分けるのみならず、局所サーチを複数回行い、サーチ対象画像の縮小率を徐々に下げて、より大きな縮小サーチ対象画像を用いることで、より高精度な位置決めを行うことができる。
なお、大域サーチはサーチ範囲が広く処理量が多いため、通常1回のみ行う。ただ、要求される精度やタクトタイムに応じて、大域サーチを複数回行うことも可能である。また、サーチの手法としては、エッジサーチや正規化相関サーチ、一般化ハフ変換、ジオメトリックハッシング等の既知のサーチ技術が利用できる。
(運転時の精密位置決めの詳細)
以上のようにして粗サーチを行い、パターンモデルが存在する検出候補の位置、姿勢のデータを求めた上で、精密位置決め手段76により精密位置決めを行う。次に、精密位置決めの詳細手順を、図20のフローチャートに基づき詳述する。
まずステップS2001において、粗サーチで得られた検出候補の粗い位置及び姿勢に基づき、精密位置決め用パターンモデルをサーチ対象画像に重ねる。ここでは、粗サーチで最終的に得られた位置及び姿勢を開始位置、開始姿勢として、オリジナルサイズのサーチ対象画像及び精密位置決め用パターンモデルを使用することが好ましい。ただし、オリジナルサイズ(縮小率1)よりも高く、かつ粗サーチで最後に使用した縮小率よりも低い縮小率にて精密位置決めを行うこともできる。
さらにステップS2002で、精密位置決め用パターンモデルの対応点探索ラインに沿って対応エッジ点となる点を求める。対応点探索ラインは、上述の通りセグメントの法線方向に延びる所定長さの線分であり、線分の両端の一方である起点を探索開始点、終点を探索終了点とする。ここでは、まず対応点探索ラインに沿ってエッジ計算を行い、エッジベクトルを取得する。エッジ計算の手法としては、上述の通りソーベルが適宜用できる。このエッジ計算で得られたエッジベクトルから、対応点探索ライン上の各点のエッジ角度、エッジ強度、エッジ位置等を求める。なおエッジベクトルとは、エッジの強度と向きをベクトル表現したもので(Ex,Ey)のように表現することができる。例えば図46に示すようにエッジ強度をEM、エッジ角度をθEとすると、エッジ角度θE=Atan(Ey/Ex)、エッジ強度EM=sqrt(Ex 2+Ey 2)で表現できる。
(対応エッジ点探索処理)
またこれらエッジベクトル、エッジ角度、エッジ強度、エッジ位置等の情報に基づいて、対応点探索ラインの基点を含むセグメントに対応する対応エッジ点を求める。対応エッジ点を決める方法の例としては、上述したエッジベクトルを用いることで高速に行える。また別の方法として、以下説明する通りエッジ強度とエッジ角度を用いて計算することもできるが、この場合は後述の通りAtanの演算が必要になるため、演算が複雑になる。以下、エッジ強度とエッジ角度を用いて対応エッジ点を求める手順を説明する。
まずエッジ強度が所定のエッジ強度閾値より大きい極大点で、さらにエッジ角度と基点が持つ角度の差の絶対値が所定のエッジ角度閾値よりも小さい点を対応エッジ点の候補とする。さらにその対応エッジ点候補の中から最も基点に近い点を最終的に対応エッジ点とする。
さらに、その対応エッジ点のエッジのサブピクセル位置を求めて(ステップS2003)、その位置と、セグメントの幾何データを使ってエラー値を求め、最小二乗法計算を行い(ステップS2004)、精密な位置を求める(ステップS2005)。エラー値の例としては、線分セグメントでは対応エッジ点と直線の距離がエラー値、円弧セグメントでは対応エッジ点と中心位置との距離と半径との差の絶対値がエラー値として挙げられる。
以上のようにして、最小二乗法計算で用いるエラー値やウェイト値を精密位置決め手段76で計算し、その値から最小二乗法で得られる連立方程式を取得する。ここではセグメントを理想形状とし、セグメントと対応する複数の対応点との誤差を最小とするように最小二乗法を適用している。さらに連立方程式を解き、高精度の位置及び姿勢を求める。
このようにして、位置Xの補正量Δx、位置Yの補正量Δy、角度θの補正量Δθ、スケールsの補正量Δs(s:scale)が得られる。
精密位置決めにおいては、粗サーチで得られた位置、姿勢のデータを用いて基点をサーチ対象画像に重ねる。そして、対応点探索ラインに沿ってソーベルフィルタ等のエッジ計算を行い、エッジベクトルを取得している。なおエッジベクトルは、ソーベルフィルタを適用した結果で表され、(Sx,Sy)等で表現できる。またエッジ強度EMは、EM=√(Sx 2+Sy 2)、エッジ角度θEは、θE=Atan(Sy/Sx)等として表現できる。さらに、エッジベクトルから対応エッジ点上のピクセルのエッジ角度、エッジ強度と位置を求め、これらエッジベクトル、エッジ角度、エッジ強度、位置から対応エッジ点の基点を含むセグメントに対応する対応エッジ点を精密位置決め手段76で求める。
この様子を図21(a)に基づき説明すると、まず太字実線で示すパターンモデルPMを、粗サーチで求めたサーチ対象画像(破線で示すエッジ角度ビット縮小画像EABR)の検出候補の位置に、精密位置決め手段76で重ねて配置する。そしてパターンモデルPM上に設定された基点KTを通り、パターンモデルのセグメントにほぼ垂直な対応点探索ラインTLに沿って、基点KTと対応する対応エッジ点TTを求める。図21(a)において対応点探索ラインTLは細線実線で示されている。なお、対応点探索ラインTLは仮想的に設定されたラインであって、実際にラインを引くわけではない。対応エッジ点TTは、対応点探索ラインTLと縮小画像EABRとの交点となる。ここで対応エッジ点TTは、サブピクセル座標位置を求めることができる。この位置と、セグメントの幾何データを使って、精密位置決め手段76で精密位置決めを行う。
具体的には、セグメントの幾何データ(この場合は線分)と対応エッジ点との関係を評価値とし、評価値の累積値が最小又は最大となるようにスコア計算を行う。評価値としては、典型的には距離が利用でき、この距離をエラー値として、エラー値が最小となるよう最小二乗法計算を行うことで精密な位置を求めることができる。距離には、セグメントとその対応エッジ点とのユークリッド距離が利用できる。つまりセグメントが線分の場合は対応エッジ点と直線の距離、セグメントが円弧の場合は対応エッジ点と中心位置との距離と半径との差の絶対値を用いる。最小二乗法による解法で得られる連立方程式を解くことで、高精度の位置及び姿勢を求めることができる。また評価値は距離に限られず、基点と基点の対応エッジ点とがなす角度としてもよい。
また、精密位置決め手段76が対応エッジ点を求める対応エッジ点探索処理の様子を図21(b)に示す。この図において、図21(a)と同様、破線はサーチ対象画像の縮小画像EABR、太字実線はパターンモデルPM、細線実線は基点KT上に設定された対応点探索ラインTLを、それぞれ示している。ここでは、縮小画像EABRの3×3画素の領域SRでソーベルフィルタを適用した座標位置x、yを求める。この計算の中心座標は、ブレゼンハムの直線データ生成アルゴリズムを用いて行われる。図21(b)の例では、モデルエッジ点Aに対して、ピクセルBが対応エッジ点として抽出される。
図21(b)に示す方法は、対応エッジ点が自動的に抽出されたセグメント上で適当に選択された点を基点として配置される点で上述した特許文献1と相違する。特に特許文献1では、シークラインの配置方法が規定されていない。さらに、対応エッジ点の決定に際して、エッジ強度のみならず、エッジ角度やエッジ位置等のデータを用いることで、対応エッジ点の信頼性が向上する。加えて、エッジ角度やエッジ強度を求める処理で用いるカーネルをよりコンパクトとしており、演算処理を低負荷としている。さらに対応エッジ点に対してはサブピクセル精度で位置を求めることができる。加えて、最小二乗法を用いることにより、様々な形状のモデルにも対応できる利点が得られる。
以上のようにして、パターンサーチにおける高速且つ高精度な位置決めが可能となる。特にこの方法では、対応点探索ラインの線分長さを変えることで、簡単に対応点探索ラインによる対応エッジ点の探索範囲を変えることができ、必要な安定性を調整できる利点が得られる。すなわち、繰り返し最小二乗法を適用する際に、対応点探索ラインの線分長さを徐々に短くしていくことで、より高精度で高速な位置決めが簡単に実現できる。
加えて、パターンモデルをセグメントで表現するので、図22に示すようなエッジ位置の波打現象を解消できる。すなわち、点と点での精密位置決めを行う場合、波の高いところとペアリングするのと低いところとペアリングするので位置が大きくずれることがあるが、そのような影響を低減できる。
また、これに代わってあるいはこれに加えて、最小二乗法を繰り返す毎に、エッジ角度閾値を変化させてもよい。すなわち、エッジ角度閾値を最小二乗法の繰り返し回数に応じて徐々に小さくすることでも、より安定した位置決めを実現できる。
なお、粗サーチで得られた初期位置あるいは再度の粗サーチで得られた精密位置決め開始位置に基づいてサーチ対象画像にパターンモデルを重ねる際は、サーチ対象画像は未処理のいわゆる原画像データを、パターンモデルは原画像データに対応したパターンモデルを用いる。
この方法であれば、サーチ対象画像の原画像データの、すべての画素をエッジ画像データに変換する必要が無く、処理の高速化が図られる。特に、タクトタイムが要求あれるインライン処理においては、このような低負荷で高速な処理は好ましい。なお、全体で事前にエッジデータを抽出した方が効率的な場合は、サーチ対象画像のすべての点をエッジ画像データに変換してパターンサーチを行うことも可能であることはいうまでもない。
また、パターンモデルのすべてをサーチ対象画像に重ねて配置する必要はなく、少なくとも対応点探索ラインを重ねて配置すれば足りる。特に対応点探索ラインは直線であるため、演算で容易に求めることができる。したがって、本明細書において「重ねる」とは、現実に画像を重ねることを必ずしも意味せず、対応点探索ラインに従って対応エッジ点を決定する処理を意味するものとして使用する。また、ここでいう「重ねて配置する」とは、上述の通り重ねることで各画像の対応位置を把握しやすくしたことを説明するためのものであり、あくまでも計算上における仮想的なものにすぎず、実際にデータを重ねる作業は必要でないことはいうまでもない。
この方法によれば、従来の方法に比べ高精度なエッジベースのサーチが実現できる。上述した特許文献1の手法では、エッジの方向や角度成分を検討しておらず、予め規定されたエッジの方向しか見ないため、複雑な形状での安定性が期待できない。これに対し、本実施の形態に係る手法では、エッジの方向が重要となるため、対応エッジ点の信頼性を高めることができる。さらに本実施の形態ではソーベルフィルタのようなカーネルの小さなフィルタを用いて差分を計算するため、ワークが細長いものであってもエッジを検出できる。このように、特許文献1の手法に比べ、複雑な形状のサーチ対象にも対応できる安定したエッジベースのサーチが実現できる。
また、パターンモデルのサーチ対象画像中における検出候補の位置、すなわち局所サーチの初期位置を粗サーチで求める際に、サーチ対象画像を縮小してパターンサーチを行うことで、低負荷で高速に行える利点がある。ただ、縮小により一部の情報が失われる結果、精度が低下する虞があるので、情報量を維持するような縮小を行うことが望ましい(詳細は後述)。さらにパターンモデルの初期位置は、粗サーチで求める形態の他、ユーザが手動で初期位置を指定することもできる。
なお上記の例において点とは、サーチ対象画像や登録画像を構成する点、すなわち一画素(ピクセル)を指すが、複数画素(例えば4画素)を一つの点として扱うことも可能であることは言うまでもない。したがって本明細書において点とは、一又は所定の画素数を意味するものとする。
また「基点に基づいて」とは、基点上でエッジ検出を行うのみならず、基点の近傍でエッジ検出を行うことも包含する意味で使用する。例えば、基点の周囲1画素〜10画素等、指定された範囲内でエッジ検出を行う。
さらにセグメントとは、線分及び/又は円弧の組み合わせで構成される連続した有限長の線をいう。また線分や円弧に加えて、円錐曲線、スプライン曲線、ベジエ曲線等を組み合わせることもできる。また対応点探索ラインのデータには、基点の座標、対応点探索ラインの角度、長さが含まれる
(最小二乗法)
最小二乗法は、線分セグメントに対しては直線のエラー関数を適応する。直線のエラー関数は、点と直線の距離をエラー関数にした最小二乗法である。また円弧セグメントに対しては、円弧のエラー関数を適応する。円弧のエラー関数は、点と円弧の距離をエラー関数にした最小二乗法である。この詳細については、後述する。
最小二乗法の問題点として、大きく懸け離れた値が1つでも存在すると、この点に影響されて精度が極端に悪くなる点が挙げられる。そこで本手法においては、このような点に対する重み付けを低くするようウェイト値を持たせた重み付き最小二乗法を用いて、影響を抑制している。
また、最小二乗法において使用する自由度としては、X方向移動、Y方向移動、回転、拡大/縮小、スキュー、アスペクト等が利用できる。これらを選択することで、xy方向の平行移動のみならず、登録画像の回転や拡大縮小、歪み等にも対応できる。
(最小二乗法のエラー関数の一般化)
ここで、最小二乗法のエラー関数を一般化して展開する。まずエラー関数E(po,p1,・・・,pn)がアフィンパラメータpo,p1,・・・,pnで決定されると考える(例えばp0=x、p1=y等)。ここで最適なアフィンパラメータpoo,p1o,・・・,pnoでエラー関数E(po,p1,・・・,pn)が最小になると仮定する(o:optimized)。このときエラー関数E(po,p1,・・・,pn)を次式で表現する。
上式におけるパラメータの意味は、以下の通りである。
i:対応エッジ点のindex
ωi:対応エッジ点とモデルとの位置関係で決まるウェイトであり、例えば対応エッジ点と線分との点と直線の距離が遠い場合、0に近づくように定義される。
e(p0,p1,・・・,pn):対応エッジ点とモデルとの幾何的な距離で決まる個別エラー関数であり、対応エッジ点と線分との点と直線の距離等で表される。
p0〜pn:平行x移動量,平行y移動量,回転角度,スケール値等のアフィンパラメータ
上記エラー関数E(po,p1,・・・,pn)を最小にするアフィンパラメータpoo,p1o,・・・,pnoを求めるために、その値に十分近いことが期待される粗サーチや一つ前に行われた精密位置決めで求めたアフィンパラメータp0t,p1t,・・・,pntからの変位量
を求める。
Δp0,Δp1,・・・,Δpnは、以下の連立方程式を解くことで得られる。
上述の通り、画像のエッジ強度のみならず、エッジの角度を用いることで、方向成分を加味することができ、ノイズ成分に強いより安定な位置決めが可能となる。特に画像データに対して微分処理を利用することで、照度の変動に影響を受け難い安定したサーチが可能となる。
(対応点探索ラインフィルタ処理)
特に、登録画像に対して対応点探索ライン探索処理を行い、対応点探索ラインの選択が困難な可能性が高い場合には、そのような位置をパターンサーチから排除することが好ましい。例えば図23のような登録画像がある場合を考えるとき、このパターンに対して対応点探索ラインを自動設定すると、図24のようになる。この図に示すとおり、周辺輪郭のみならず、内部の中心付近に位置する濃淡差のある部分にも、対応点探索ラインが設定されることになる。このような中心付近に設定された対応点探索ラインでエッジのマッチングを行うと、エッジ角度が類似する部分が多々生じる。その結果、この対応点探索ラインを用いてパターンサーチを行うと、対応エッジ点検出で対応エッジ点が曖昧になる可能性が高くなる。
本実施の形態においては、このような曖昧な対応点探索ラインを排除することで、安定した精度の高いサーチを可能としている。具体的には、対応点探索ラインフィルタ手段により、このような好ましくない領域に設定された対応点探索ラインをフィルタリングして、エッジ強度とエッジ角度が似ているものが存在する場合はこれを排除する。図25に、図24から対応点探索ラインをフィルタリングした結果の例を示す。
このように、対応点探索ラインの候補に対して、対応点探索ラインフィルタ手段が対応点探索ラインフィルタ処理を行う手順の一例を、図26のフローチャートに基づいて説明する。まずステップS2601で、登録画像に対して対応点探索ライン生成処理を行い、対応点探索ラインの候補を作成する。次にステップS2602で、登録画像に対して対応点探索ラインの候補を配置する。対応点探索ラインが作成された位置に配置されると、対応点探索ラインの候補の中間近辺で、対応点探索ライン候補が検出できる。
さらにステップS2603で、対応点探索ラインの候補に沿って対応点探索ライン候補探索を行い、対応点探索ライン候補の数をそれぞれ計数する。またステップS2604でフィルタリング処理を行い、対応点探索ライン候補の数が2以上の場合、その対応点探索ラインでの対応点探索ラインは曖昧である可能性が高いと判断して、対応点探索ライン候補から排除する。そしてステップS2605で、残った対応点探索ラインを最終の対応点探索ラインとする。この処理により、不確実な対応点探索ラインを排除して、より安定したパターンサーチ結果が見込まれる。
なお、精密位置決めの工程を繰り返す場合は、対応点探索ラインの線分長さを繰り返し回数に応じて短くしていくため、一旦行った対応点探索ラインフィルタ処理で選択された対応点探索ラインを記録しておき、繰り返し工程においてはこの情報を利用することができる。あるいは、対応点探索ラインを短くした場合も同様に対応点探索ラインフィルタ処理を行い、その結果選択された対応点探索ラインを記録しておくこともできる。
(対応点探索ライン)
また対応点探索ラインの線分長さを変化させることで、精密位置決めの安定度の向上と高速化が期待できる。対応点探索ラインの線分長さは、粗サーチと精密位置決めの縮小率の差で決定する。例えば、精密位置決めを等倍の画像で行い、最終的な粗サーチを1/4倍とする場合、2*4=8ピクセル程度の長さとする。
(チェーンフィルタ手段66)
上記の例では、すべてのセグメントに対して少なくとも一の基点を設定している。本実施の形態においては、セグメントを生成する際に、セグメントを構成するチェーンを選別することにより、予め信頼性の高いセグメントを構築し、各セグメントに基点を設定している。このような特定のチェーンの選択又は排除は、図1のブロック図に示したチェーンフィルタ手段66で行う。チェーンフィルタ手段66がチェーンを選択する基準としては、平均エッジ強度、チェーンの長さ等が挙げられる。
このチェーンフィルタ手段66は、登録時及び運転時にチェーンの選択を行う。登録時においては、セグメントを構成するのに値するチェーンを抽出する。具体的には所定のチェーン長閾値に満たない短いチェーンや、所定のエッジ強度閾値に満たない平均エッジ強度の低いチェーンについて、これらのチェーンからセグメントを作成しても、セグメントデータの信頼性が低いことが予想されるため、これらのチェーンを排除するようにフィルタリングする。
一方、運転時においては、長さの短いチェーンはノイズである可能性が高いため、サー対象画像の状況に応じて使用するかどうかを選択する。例えば、ユーザが長さの閾値を設定し、短いチェーンを排除する。以下、これらの詳細を順次説明する。
まず平均エッジ強度でチェーンをフィルタリングする場合は、各チェーンに対して含まれるエッジ点の平均エッジ強度をチェーンフィルタ手段66が演算し、予め設定された平均エッジ強度閾値と比較してフィルタリングする。すなわち、平均エッジ強度の低いチェーンを排除し、一定以上の平均エッジ強度を有するチェーンのみに対してセグメント化し、得られたセグメントに対して基点を設定し、パターンモデル化することで、確度の高いエッジに基づいたパターンサーチが見込まれ、サーチ精度を高めることができる。平均エッジ強度閾値は、パターンモデルの輪郭を識別するのに十分なエッジ強度を含む程度に、ユーザが設定できる。
またチェーン長でフィルタリングする場合は、各チェーンの長さを予め設定されたチェーン長閾値と比較して、チェーンフィルタ手段66がフィルタリングする。すなわち、一定長さ以上のチェーンのみを選択し、それよりも短いチェーンを排除することで、安定したエッジに基づいたパターンサーチが可能となり、精度向上に寄与する。
一方、チェーンで構成されたセグメントに対してフィルタリングを行うセグメント選択手段67を利用することもできる。セグメント選択手段67がセグメントの選択する基準としては、上記チェーンフィルタ手段66と同様に平均エッジ強度、セグメントの長さ、近傍に類似するエッジ角度を有するセグメントが存在するか否か、あるいは理想エッジ角度の偏在の排除、等が挙げられる。また、単に短いセグメントを一律に排除するのでなく、セグメントを構成する線分や円弧の組み合わせに応じて、セグメントのフィルタリング方法を変更してもよい。例えば、セグメントの集合から十分長いセグメントを抽出し、それらの組み合わせを評価し、円弧のセグメントが一以上ある場合は、線分も一以上あれば、短いセグメントは不要としてこれらを排除又は削除する。また、すべてのセグメントが線分の場合、長いセグメントが3本以上あれば、他の短いセグメントを排除しても十分な精度を維持できる。このように、セグメントを構成する組み合わせに応じてセグメント選択手段67によるフィルタリングを変更し、適切なセグメントを選別してより効率よくサーチを実行できる。
なお、ここでセグメント長とは、パターンモデルを構成するセグメントの、線分や円弧の端から端までの直線もしくは曲線の長さを指す。また、線分長さと円弧長さについて、それぞれセグメント長閾値を個別に設けることもできる。セグメント長閾値は、登録画像や要求される精度等に応じて設定され、又は登録画像やサーチ対象画像の平均セグメント長に基づいて設定できる。
さらに近傍に類似するエッジ角度を有するセグメントが存在するか否かに基づいてフィルタリングする場合は、各セグメントに含まれるエッジ点のエッジ角度について、近傍に類似するエッジ角度を有する別のセグメントが存在するかどうかをセグメント選択手段67が判定し、存在する場合は該セグメントを排除する。すなわち、同じようなエッジ角度を有するセグメントについては、パターンサーチ結果が安定しない虞があることを考慮し、このようなセグメントを排除して基点を設定することにより、パターンサーチ結果の安定性を高めることができる。
(仮対応エッジ点)
次に図29に基づき、精密位置決めにおいて基点に対応する対応エッジ点の座標を求める手順を説明する。ここでは、まず対応点探索ラインTL上で対応エッジ点を見つけ、次にもう一方のペアとなる対応エッジ点を見つけ、その二つから平均座標を求めてその座標を真の対応エッジ点座標とする。
具体的には、図29において、円弧状のセグメントの一部(図において○で示す位置)に基点KTが設定され、この点を通る対応点探索ラインTLが左上から右下方向に延長されている。まず、対応点探索ラインTLに沿って、サーチ対象画像の各点のエッジ強度を調べる。図29の例では、基点KTをベースとしてエッジ強度を求めている。ここでは、基点KTを含む枡目状の各頂点a、b、c、dの4点につき、各点のエッジ強度を調べる。そして最もエッジ強度の高い点のサブピクセル位置を、仮対応エッジ点として求める。その結果、例えばa点のサブピクセル位置としてeが仮対応エッジ点として演算されたとすると、次にこの仮対応エッジ点eに対応するペア点を選択する。ペア点は、仮対応エッジ点eとペア点とで基点KTを挟むように選択される。ここでは、ペア点としてfが選択されたとする。さらに、これら仮対応エッジ点e及びそのペア点fから平均座標を求める。そして、得られた平均座標を真の対応エッジ点座標として扱う。
このようにすることで、対応エッジ点が波打状に演算されることを抑制して、安定した演算結果を得ることができる。すなわち、点と点での精密位置決めを行う場合、波の高いところでペアリングするのと、低いところでペアリングするので位置が大きくずれることがあるが、上記手法によりその影響を低減できる。
(近傍エッジ点を用いて対応エッジ点の座標を求める方法)
また対応エッジ点の座標をサブピクセル単位で求める方法は、上記に限られず他の方法も利用できる。例えば、対応点探索ライン上で対応エッジ点をピクセル単位で探索し、得られた点を仮対応エッジ点とする。この仮対応エッジ点の周囲にある近傍エッジ点をピクセル単位で複数求め、該仮対応エッジ点と該複数の近傍エッジ点のサブピクセル座標を求めた上で、これらの平均座標を求めることでも実現できる。この方法であれば、仮対応エッジ点と近接する複数の近傍エッジ点を用いて真の対応エッジ点の位置を求めることができるため、対応エッジ点の座標位置がサブピクセル単位で精度よく得られる。また、対応点探索ラインによらず、仮対応エッジ点の周囲で適宜選択される複数の近傍エッジ点を利用することで、より簡素に対応エッジ点の座標位置を正確に決定できる。
近傍エッジ点の選択は、仮対応エッジ点の周囲で、同じ輪郭あるいはセグメント上に位置するエッジ点とできる。また、仮対応エッジ点のエッジ角度を用いることで、エッジ角度の似た近傍エッジ点が得られる。好ましくは、仮対応エッジ点のエッジ角度方向を中心として、左右に近接するエッジ点を近傍エッジ点として各々選択する。また、仮対応エッジ点から近傍エッジ点までの距離は、近接していることが望ましく、例えば2ピクセル以内、好適には1ピクセル程度とする。離れすぎると、精度が悪くなるからである。以下、近傍エッジ点を用いて対応エッジ点の座標を求める手順を、図65の模式図及び図66のフローチャートに基づいて説明する。
まずステップS6601で、対応点探索ライン上で仮対応エッジ点をピクセル単位で探索する。図65において、斜線で示す白丸が基点KTであり、基点KTを通る対応点探索ラインTL上で、輪郭を構成するセグメントの対応位置を見つける。探索はピクセル単位、すなわち図65の格子状のグリッドの交点を基準として行われ、ここではピクセル座標で(x、y)=(2,3)が選択される。
次にステップS6602で、ピクセル単位の仮対応エッジ点の周囲で、近傍エッジ点をピクセル単位で選択する。ここでは、仮対応エッジ点のエッジ角度が、対応点探索ラインと重なる方向のベクトルを有しているため、対応点探索ラインを挟んで左右に位置するエッジ点であって、所定値以上のエッジ強度を有するエッジ点を近傍エッジ点として各々選択する。具体的には、右側に位置する第1の近傍エッジ点、左側に位置する第2の近傍エッジ点の2つを選択する。図65の例では、第1の近傍エッジ点のピクセル座標は(2,2)、第2の近傍エッジ点のピクセル座標は(1,3)となる。この際、各近傍エッジ点のエッジ角度は、仮対応エッジ点に近傍するエッジ点であることから類似のエッジ角度を有している可能性が高く、確認しなくともよい。もちろん、エッジ角度の類似性が高いことを確認した上で近傍エッジ点として選択することもできる。なお、近傍の位置に所定値以上のエッジ強度を有するエッジ点が無い場合は、近傍エッジ点を選択しない。この場合は、得られたエッジ点(仮対応エッジ点と他方の近傍エッジ点)のみを利用して、後述の真の対応エッジ点を演算する。また、この例では左右の近傍エッジ点を計2個選択しているが、近傍エッジ点の選択数は1、又は3以上とすることもできる。ただ、精度と演算処理の付加のバランスを考慮すると、2個が好ましい。
さらにステップS6603で、仮対応エッジ点、近傍エッジ点に基づき、真の対応エッジ点の座標を演算する。ここでは、仮対応エッジ点及び近傍エッジ点のサブピクセル位置から、その平均座標として、真の対応エッジ点の座標位置を決定する。図65の例では、仮対応エッジ点のサブピクセル位置である黒丸で示すTP1、第1の近傍エッジ点のサブピクセル位置である斜線の丸TP2、第2の近傍エッジ点のサブピクセル位置であるクロスハッチングの丸TP3の3点の平均から、対応エッジ点を決定する。各エッジ点のサブピクセル位置は、その周囲の画素値から予め演算しておく。サブピクセル位置の演算方法は、既知の方法が利用でき、例えば各エッジ点を中心とする3×3の周囲の画素値から、あるいはエッジ角度の方向にある近接するエッジ点の情報を用いる等して、サブピクセル位置を計算できる。なお各エッジ点のサブピクセル位置を演算するタイミングは特に限定されず、ピクセル単位でのエッジ点が決定した直後でも、平均座標演算の直前でも良い。
以上のようにして、エッジ点3点のサブピクセル座標の平均から対応エッジ点をサブピクセル単位で演算できる。この方法であれば、仮対応エッジ点から容易に3点のエッジ点を抽出できるので、多くのエッジ点を利用した高精度な対応エッジ点が決定できる。例えば基点の数が10個の場合、通常であれば対応エッジ点は10個となるが、上記方法であれば10個の仮対応エッジ点各々に対し、左右の点を付加して30個のエッジ点から対応エッジ点を演算できるので、平均化効果によって精度を向上できる。特に、図29に基づき上述したペア点と仮対応エッジ点の2つから平均座標を求める方法に比べ、仮対応エッジ点に2つの近傍エッジ点を加えた3点で平均座標を求めるため、精度的に有利となる。なお上記では、3点を求めて平均としているが、それぞれ3点を個別に精密位置決め計算に用いることもできる。
(エッジ角度画像からエッジ角度ビット画像への変換)
次に、エッジ角度画像からエッジ角度ビット画像への変換について、図30〜図33に基づいて説明する。コース・トゥ・ファインのアプローチを取る際は、最初の粗サーチに際しての縮小画像の設定は容易でない。画像の縮小によって、サーチに必要な特徴量の情報が失われてしまう場合があるためである。特にエッジベースのサーチにおいては、探索精度向上のためエッジ角度情報が重要となる。そこで本実施の形態では、画像縮小手段61で画像を縮小する際、縮小率を高くしてもエッジ角度情報を維持可能なエッジ角度ビット画像作成手段69、エッジ角度ビット画像縮小手段78を備えることで、十分な特徴量を残しつつデータ量を低減し、処理の高速化を図っている。
以下、画像縮小手段61で画像を縮小する際にエッジ角度情報を取得し、これを保持する手順を説明する。まず、エッジ角度画像のエッジ点毎にエッジ強度を調べ、設定されたエッジ強度閾値よりもエッジ強度が大きい場合は、エッジ角度の向きに対応するビットを1にして、それ以外を0に設定する。例えば、図30に示す画素a〜dの4画素(エッジ点)で構成された2x2画素のエッジ角度画像から、エッジ角度ビット画像作成手段69でエッジ角度ビット画像を生成する場合を考える。各画素a〜dは、エッジ強度が閾値よりも大きく、かつそれぞれが矢印で示すエッジ角度を有している。このエッジ角度を、エッジ角度とビットの対応を表したエッジ角度区分に従って0〜7の8種類のエッジ角度ビットで表現する。
(エッジ角度ビット画像)
このエッジ角度画像をエッジ角度ビット画像に変換する際、エッジ角度情報はエッジ角度ビットに変換される。エッジ角度ビットとは、エッジ角度方向を所定角度毎に区分けしたコードである。図31に示すエッジ角度区分は、上述した図6(b)と同様のものが利用できる。図31の例では、エッジ角度方向として、濃度勾配方向を45°刻みで8つの区分に区分けしており、各区分にエッジ角度ビットを割り当てている。あるいはこの例に限られず、図31の姿勢から反時計回りに22.5°回転させて、水平又は垂直方向から22.5°ずらして8等分し、真右から時計回りに45°幅でE、SE、S、SW、W、NW、N、NEのエッジ角度区分にラベル分けし、各エッジ角度区分に対してエッジ角度ビットのラベルをそれぞれ0、1、2、3、4、5、6、7と付与してもよい(上述した図52(b))。もちろん、このような区分けは例示であって、例えば16等分や4等分、さらには3等分や5等分に区分けすることもできる。
以上から、図30に示すエッジ角度画像データを、図31のエッジ角度区分に基づいて2x2のエッジ角度ビット画像に変換すると図32のようになる。このように、a、b、c、dのラベルで区別された4つのエッジ点に対して、各々のエッジ角度に対応したエッジ角度区分にビットが立つ。
なお、エッジ角度ビット画像を取得する方法としては、上述したように、あるエッジ強度しきい値以上の部分のみに対して処理を施す手法の他に、ある程度の幅を有するエッジ角度ビット画像を取得するために、エッジ強度画像とエッジ角度画像を用いて細線化処理を施し、その細線化処理を行ったエッジ角度画像を用いて上述したようなエッジ角度ビット画像を取得する方法もある。細線化処理を行う手法の場合、上述した手法に比べ処理時間が比較的かかるものの、サーチ対象物の輪郭部分を限定できるため、ノイズを排除しやすいというメリットがある。
(エッジ角度ビット画像の縮小)
このようにエッジ角度ビット画像で表現した後に、エッジ角度の情報が十分残るようにデータを縮小する。具体的には、エッジ角度ビットラベル毎に各画素のエッジ角度ビットのOR又はビット和をとるように合成する。例えば、縮小する2x2のデータが図32の状態である場合に、これを縦1/2×横1/2(=1/4)に縮小して画素a〜dの4画素をa’の1画素で表現すると、図33のようになる。この図に示すように、画素a〜dのエッジ角度ビットを纏めたエッジ角度ビット縮小画像に、各画素のエッジビットが合成されて、0〜7のエッジ角度ビットラベルの該当欄に、エッジ角度ビットが立つ。このエッジ角度ビット縮小画像にエッジ角度情報を保持する処理は、エッジ角度ビット画像縮小手段78で行われる。これにより、データ量を減少させつつ、エッジ角度情報が縮小後も維持されるので、縮小を繰り返すことで縮小率を高くしてもサーチに十分な特徴を残すことができる。
以上の圧縮処理によって、従来の問題であった、サーチに十分な特徴量を残すよう縮小率を抑えると、サーチの処理速度が不十分となってしまう状況が改善される。エッジ検出を行う縮小率は、例えば1/2に固定にしても、このエッジ角度ビット画像の縮小処理によって十分高速なサーチが可能になる。エッジ検出を行う縮小率は、登録画像のサイズ、パターンモデルの特徴データの少なくともいずれかに基づいて自動的に決定できる。また、ユーザが独自に設定するようにしてもよい。
ここで、エッジ角度ビット画像を縮小してエッジ角度ビット縮小画像を生成する手順の例を、図34〜図37に基づいて説明する。エッジ角度ビット縮小画像を作成する際に、注意すべき点として切り出し問題がある。つまり、単純にサブサンプリング処理で縮小処理をしただけでは、その処理の開始座標やサーチ対象の入力画像における位置の微妙なずれにより、後述するスコアの計算に大きな変動が生じる可能性がある。この切り出し問題を回避する縮小の方法として、以下の2つの方法が考えられる。
1つ目の方法は、縮小処理を行った後に膨張を行う方法である。この方法を図34、図35を用いて、1/n(n=2)に縮小する処理の例で説明する。まず、図34のそれぞれの四角の領域に含まれるnxnのエッジ角度ビットデータでOR演算を行う。その結果を先のそれぞれのnxnの領域のエッジ角度ビットデータを代表するエッジ角度ビットデータとして置き換える。この処理を行うことで、元の画像の1/nに縮小される。
このままでは、切り出し問題が発生することがあるので、この縮小画像に対して膨張を行う。ここでは、図35のように縮小後の画像のそれぞれの四角いmxm(この例ではm=2)の領域のエッジ角度ビットデータに対してOR演算を行って、その結果をそれぞれのそのmxmの領域を代表するエッジ角度ビットデータとして置き換える。この処理では画像の縮小は生じない。この例ではm=2であるが、サーチ対象の形や大きさの予想される変動に応じて、mを大きくすることも考えられる。
もう一つの方法は、上記の縮小処理で行うOR演算の範囲を広めに取り縮小し、その後の膨張を行わない方法である。この方法を図36を用いて1/n(n=2)に縮小する処理の場合で説明する。図36のそれぞれの四角の領域に含まれる(n+m)x(n+m)(n=1,m=1)のエッジ角度ビットデータでOR演算を行う。その結果を先の領域の中心付近のnxnエッジ角度ビットデータを代表するエッジ角度ビットデータとして置き換える。この処理を行うことで、元の画像の1/nに縮小される。図37は2番目の方法でn=2、m=1の場合を示してる。
ここで図36に示すように、膨張なしで通常の2x2の縮小を繰り返す場合は、切り出し位置の問題が発生することがある。すなわち、サーチ領域の左上の座標が1ピクセル変化することで、縮小する時の画素のセットが変化して、登録画像とサーチ対象画像が同一画像にもかかわらず、スコア計算が低下してしまうことが起こり得る。これに対し、膨張を行うとこのような問題が発生しないという利点が得られる。
(角度境界におけるエッジ角度ビット変換処理)
さらに、エッジ角度ビット変換に際して、エッジ角度が角度境界付近である場合のエッジ角度ビットを、境界を構成する2つの角度領域に対応するビットを2つたてることで、安定性を向上させる効果が期待できる。例えば、上述した図30に示す画素a〜dの4画素で構成されたエッジ角度画像を変換した図31のエッジ角度ビット画像において、エッジ角度がEとSEの境界付近にある場合は、ノイズによってEの区分のエッジ角度ビットが立ったり、SEのエッジ角度ビットが立つことがある。このようなぶれが原因となり、本質的でない影響が一致度の計算において生じることが予想される。そこで、エッジ角度が境界にある場合は、境界を区画する両方のエッジ角度区分のエッジ角度ビットを1に設定する。これにより、ノイズによるぶれを無くし、安定した一致度の計算結果が期待できる。具体的には、エッジ角度区分の境界を中心とする所定幅内(例えば5.625°)にエッジ角度が位置する場合に、境界に面した両方のエッジ角度ビットを1とする。
なお、この角度境界におけるエッジ角度ビット変換処理は、サーチ対象のエッジ角度ビット変換処理についてのみ行い、パターンモデルのエッジ角度ビット変換では行わない。パターンのエッジ角度の変換に対しても同様の処理を行うと、各エッジ点に対して不自然なウェイトの変化が生じてしまうためである。
(エッジ角度ビット隣接処理)
また、上記の例ではエッジ角度画像からエッジ角度ビット画像への変換においてエッジ角度ビットを1のみ立てているが、該当するエッジ角度区分を中心として、隣接したエッジ角度区分についてもエッジ角度ビットを立てるようなエッジ角度ビット隣接処理を行うこともできる。例えば、該当するエッジ角度区分及び左右に隣接するエッジ角度区分に、それぞれ1ビットのエッジ角度ビットを付与する。または該当するエッジ角度区分に2ビット、左右に隣接するエッジ角度区分にそれぞれ1ビットのエッジ角度ビットを付与するよう、重み付けを行うこともできる。さらに、パターンモデルのエッジ角度とサーチ対象画像のエッジ角度が十分一致しているときは3、少しずれている場合はエッジ角度ビットを1、ずれが大きい場合は0というように、ファジー的な効果を付して重み付けすることもできる。
このようなエッジ角度ビット隣接処理に際しても、上述の通り境界付近にエッジ角度が存在する場合はノイズによるぶれの影響が考えられるため、サーチ対象画像のエッジ角度ビットがエッジ角度区分の境界にある場合は、その境界を中心として隣接するエッジ角度区分に各々2ビットを立てることにより、ぶれの影響を回避できる。
なお、上記の例ではエッジ角度の角度分解能として8ビットを用いたが、これに限らず16ビットや32ビットのように、さらに角度分解能の高い変換を行うこともできる。
(並列化)
また、パターンモデルのエッジ角度をエッジ角度ビットに変換した値を並列化することでサーチ処理の高速化を図ることができる。パターンモデルのエッジデータを並列化した例を図38〜図39に示す。図38は、並列前のパターンモデルの概念図、図39は並列後のパターンモデルの概念図である。これらの図に示すように、パターンモデル上の1つの基点のエッジ角度ビットデータを複数、横に配置することで並列化が図られ、処理の高速化が可能となる。ここで演算部を構成する一般的なCPUは、4バイトから8バイトの並列処理が可能で、4〜8倍速処理が可能となる。このように並列化処理により粗サーチを高速化できる。
(エッジ角度ビット縮小画像を用いた粗サーチ)
以下、このような縮小データを用いて粗サーチを行う手順を説明する。ここでは、縮小を行って1/8のエッジ角度ビット縮小画像が得られたとする。このエッジ角度ビット縮小画像は、例えば等倍画像のサイズが640x480であったとして、エッジ抽出を行ったのが1/2の320×240であったとすると、1/8の圧縮処理を行ったエッジ角度ビット画像のサイズは40×30となる。このエッジ角度ビット縮小画像に対するサーチは、以下のようにして行われる。まず、サーチ処理前のパターンモデル登録時に、図40のようなデータを作成する。この図に示すように、パターンモデルは位置と角度情報を持つエッジデータの配列として保持されている。図40(a)パターンモデルの一例、図40(b)はエッジデータのパターンモデルの一例を、それぞれ示している。図40(b)においてx,yはエッジの座標位置であり、θはエッジの角度である。このパターンモデルは、図40(b)に示すように座標位置と角度情報を持つエッジデータの配列として保持されている。
上記のデータとサーチ対象画像のエッジ角度ビット画像を使って、パターンの位置及び姿勢を繰り返し変化させて、パターンの各位置及び姿勢に対して一致度を順次計算していく。この計算は以下のようにして行われる。まず、一致度を調べたい位置及び姿勢を表すアフィン変換値を決定する。このアフィン変換値は、パターンモデルの縮尺とサーチ対象画像の縮尺も考慮して作成される。このアフィン変換値を使って、エッジの位置xi,yiとエッジの角度θiを変換する。ここで変換後のエッジの位置をXi,Yiとし、変換後のエッジ角度をφiとする(iはエッジのindexを表す添え字)。この一致度は、エッジ角度をφiをサーチ対象画像と同じ方法でビットデータに変換して計算する。一致度Sの計算式は、次式で表される。
このようにして、精密位置決め手段76がサーチ対象画像及びパターンモデルに含まれる各エッジ点のエッジ強度及びエッジ角度を各々比較して、一致度を計算する。上記の一致度Sが高いことは、その位置及び姿勢にパターンモデルが存在する確率を高いことを示す。このようにして、サーチを行うのに十分な特徴量を残すように決定した縮小率で、そのままサーチすると十分な処理速度にならないような状況が改善される。また、エッジ抽出を行う縮小率を、例えば1/2固定にしても十分高速なサーチが可能になるので、一般的に複雑であるエッジ抽出を行う縮小率の決定を行わなくても良いという利点も得られる。
(サーチ対象画像の縮小工程)
このような縮小処理で、縮小率が高くてもサーチに十分な特徴を残すことができるようになる。サーチ対象画像に対してソーベルフィルタ等のエッジ抽出処理を行う際、オリジナルサイズの等倍画像のままではノイズも多く、粗サーチのための特徴を抽出するのに不適切となる虞がある。そこで本実施の形態では、先に縮小画像を作成した上で、エッジ抽出処理を行う。これにより、画像データを縮小することによって平均化効果も得られ、ノイズ低減にも寄与する。ここでは、最初の縮小率(第1縮小率)としてオリジナルサイズの1/2に設定している。このサイズであれば、サーチに必要な特徴を十分に残しつつ、平均化によるノイズ低減効果も得られる。
(エッジ方向の極性)
さらにこの方法では、エッジ方向の極性の有無を設定できる。このため極性に応じて、エッジ角度に対する処理方法を変化させることができる。従来はこのような極性の概念は考慮されておらず、エッジの方向(角度)の概念のみであったため、例えば0〜180°として扱われる結果、向きの異なるベクトルを区別できず誤サーチが生じる問題があった。これに対して上述の方法では、極性の概念を考慮することで0〜360°をカバーできるようになり、一層正確なサーチが実現される。
極性無視の場合、サーチ対象側のエッジ角度ビット変換において、逆向きのビットも同時に立てるという処理で簡単に実現できる。もしくは、向きではなく、エッジ方向に対して均等にビットを割り付けることもできる。例えば粗サーチにおいて、エッジ分解能である8ビットのエッジ角度ビットを、エッジ方向に対して均等に割り付けることにより、エッジの極性よりもエッジの方向の分解能の方を重視したサーチ結果を得ることができる。
(回転角度に関する精密位置決め)
次に、点と円弧の距離をエラー関数とした最小二乗法で円弧セグメントの精密位置決めを行う手順について、図41〜図45に基づいて説明する。ここでは、パターンモデルPMとして図41に太線で示すような、一部を切り欠いた円形を円弧セグメントと線分セグメントで表現したパターンで、サーチ対象画像に対して精密位置決めを行う場合を考える。図41のパターンモデルPMは、1の円弧セグメントと1の線分セグメントで構成されており、このようなワーク形状は、オリエンテーションフラット面を設けたウェハ等で一般的に用いられている。このパターンモデルPMでサーチ対象画像に対して粗サーチを行い、パターンモデルPMを検出候補の位置に配置した、ある程度の位置決めがなされた状態を図42に示す。ここでは、サーチ対象画像のエッジ点に対してパターンモデルPMがほぼ重ねられており、切り欠き部分の線分セグメントのみが不一致となった状態を考える。なおこれらの図において、太線はパターンモデルPMを、細線はサーチ対象画像のエッジ点(入力エッジ点IE)を、それぞれ示す。さらに入力エッジ点IEの注目点を破線矢印で示すと共に、この入力エッジ点の接線SLを破線で示す。なお実際の接線SLはもっと短く、細線のパターンモデルPMに重なる状態で存在しているが、これらの図においては説明の便宜上長く表示している。
この状態から精密位置決めを行うと、線分セグメント部分が一致するよう相対的に回転すること、すなわち図42において矢印で示す位置の入力エッジ点に対し、最小二乗法を適用しても、回転によって必ずしもエラーが大きくならないことが期待される。ここでは、円弧セグメントに対しては点と直線でなく、点と円弧の距離をエラー関数とした最小二乗法を適用する。具体的には、円弧状のパターンモデルの中心と、サーチ対象画像のエッジ点を円弧とする半径との差の絶対値をエラー値として、最小二乗法を適用する。すなわち、最小二乗法で用いる円弧セグメントのエラー関数を、円弧セグメントを中心とする理想半径と、円弧の中心と対応エッジ点の距離の差とする。この円弧セグメントのエラー関数は、次式で表現できる。
この結果、図43に示すように矢印の入力エッジ点と円弧モデルとの距離は、あまり変化しない。すなわち、図43のようなパターンモデルPMの反時計方向への回転も十分解として生じることを意味する。これにより、円弧状のワークにおいて少ない回数の精密位置決めで高い角度の精度の達成が期待できる。なお図42、図43の例では、点線で示す円弧の領域は実際にはパターンモデルの細線と重なっているが、説明の便宜上、これらの図においてはパターンモデルと少しずらして表示している。
一方で従来の最小二乗法では、入力エッジ点と接線の距離をエラー関数とし、この距離が小さくなるようにパターンモデルを移動させていた。このため、パターンモデルが正しい回転方向に回転せずに、却って位置ずれが大きくなることも考えられる。例えば、図47の状態から図48に示すようにパターンモデルPMを反時計回りに回転させることが期待できない場合があった。すなわち、図47において矢印で示す位置にある入力エッジ点と接線の関係から、図48に示すようにパターンモデルPMを回転させると、入力エッジ点が接線から離れる方向となるため、このような回転が解として生じ得ない結果となっていた。これに対し本実施の形態では、上述の通り点と円弧の距離をエラー関数とした最小二乗法を採用しているため、円状のワークにおいて少ない回数の精密位置決めで高い角度の精度の達成が期待できる。
(対応エッジ点生成処理)
さらに図41のパターンモデルPMに対して対応点探索ライン生成処理を行った例を、図44に示す。このように、基点は円弧セグメント、線分セグメント上の中心に一つ割り当てられ、その点から一定間隔で端縁付近を除いて設定され、さらに各基点上でセグメントの法線方向で、内側から外側に向かって対応点探索ラインが設定される。このパターンモデルで、サーチ対象画像に対して粗サーチを行い、決定された検出候補の位置及び姿勢にパターンモデルPMを重ねた状態を、図45に示す。
この状態で、各対応点探索ラインに沿ってエッジ抽出を行い、各セグメントに対する対応エッジ点を探索する。対応エッジ点は、各対応点探索ラインとサーチ対象画像のエッジ点(細線)とが交差する点となるので、例えば図45において×で示す点が対応エッジ点となる。図45の例では、粗サーチの結果得られた検出候補の位置に配置されるパターンモデルと入力エッジ点とで円弧部分がほぼ重なっているため、円弧セグメントの対応エッジ点はほぼ円弧セグメントに一致している。このため、円弧状のワークを相対的に回転させても、円弧のエラー関数は大きくならないので、この自由度は回転を阻害しない。したがって、回転移動を解とすることが期待できる。
一方、線分セグメントの対応エッジ点の多くは、線分セグメント上にない。線分セグメントに対する最小二乗法では、点と直線の距離がエラー関数になっているので、全体的に反時計周りに回転することでそのエラー関数の値が減少するであろうことが推測される。これらのことから、最小二乗法で得られる解として、反時計周りの回転が得られることが十分期待できることが判る。
(対応エッジ点候補が複数ある場合の重み付け処理)
さらにまた、基点に対応する対応エッジ点候補が複数ある場合に、各対応エッジ点に対して重み付けを行うことで、対応エッジ点の決定が曖昧であった場合の精密位置決めの精度を向上させることができる。この様子を図49に基づいて説明する。ここではパターンモデルとして図49(a)に太線で示すような、長方形に2本の縦線が入ったパターンモデルPMを用いて、精密位置決めを行う例を考える。この場合に、粗サーチで図49(b)に細線で示すようなセグメントSG1、SG2が得られたとする。ここでは、図49(b)においてワークの左右に位置する2本のセグメントSG1、SG2のみを考える。これらセグメントの対応点探索ラインTTL1、TTL2は、上述の通り基点KT1、KT2を通る各セグメントSG1、SG2の法線方向(エッジの方向)に設定される。各セグメントSG1、SG2に対して、基点KT1、KT2のそれぞれに対応点探索ラインTTL1、TTL2を破線で示すように設定すると、各対応点探索ラインTTL1、TTL2上に位置する対応エッジ点候補が得られる。ここで、右側のセグメントSG1に対しては対応エッジ点候補TTAが1個のみであるが、左側のセグメントSG2に対しては対応エッジ点候補TTB、TTCが2つある。対応エッジ点の決定は、対応エッジ点候補の内で基点との距離が最も近いものを選択するため、TTA、TTBがそれぞれ対応エッジ点となる。ここで、図49(b)の例では左側のセグメントSG2に対しては対応エッジ点候補が複数あるため、曖昧さを含んでいると言える。この場合に、いずれの方向にセグメントすなわちパターンモデルを移動させるかが問題となる。特に図49(b)の例ではTTBが対応エッジ点として選択される結果、セグメント全体すなわちパターンモデルが右に移動することとなれば、所望する精密位置決めとは逆方向に移動されることとなり、好ましくない。
そこで、最小二乗法の計算を行う際に、各対応エッジ点に対して重み付けを行う。図49(b)の例では、右側のセグメントSG1に対しては基点KT1の対応点探索ラインTTL1上に存在する対応エッジ点TTAが1個のみであるため、重み「1.0」を与える。一方、左側のセグメントSG2に関しては、基点KT2の対応点探索ラインTTL2上に、基点KT2を挟んで左右に対応エッジ点候補TTB、TTCが位置している。そこで、基点KT2に関する対応エッジ点TTBの重み付けを、基点KT2から各対応エッジ点候補までの距離に応じて設定する。重み付けを決定する式の例としては、図49(d)に示すように、第1の対応エッジ点候補と基点との距離をd1、第2の対応エッジ点候補と基点との距離をd2(d1≦d2)とするとき、
重みW=1−α(d1/d2)
ただし0<α<1
とする。上式において、対応エッジ点候補が1個の場合はW=1となリ、複数の場合は小さくなる。このように、対応エッジ点候補が1個の場合、すなわち曖昧さが無いと考えられる場合の重み付けを大きくすることで、より確からしい方向への移動が期待できる。また対応エッジ点候補が2個以上あった場合は、最も近接している対応エッジ点候補を対応エッジ点としつつ、対応エッジ点と対応エッジ点候補の位置関係が、理想点を挟む場合は上記の式W=1−α(短い方の距離)/(長い方の距離)となり、また理想点を挟んでいない場合はW=1となる。このような重み付け作業及び重み付け後のセグメント移動方向の決定は、図1の演算手段6に含まれる精密位置決め手段76を重み付け演算手段として行われる。
(スコア計算)
また、最小二乗法を用いて精密位置決め計算を行う際に、類似度を表すスコアも同時に計算することができる。すなわち、対応点探索ラインに対し最小二乗法を適用し、最終の最小二乗法処理での対応点の数と基点の数の比でスコアを計算する。簡易的には、対応点の数を基点の数で除算した値を類似度と考えて、以下の式でスコアを求めることができる。
S:スコア
n:対応点の数
m:基点の数
また、基点の理想エッジ角度と対応エッジ点のエッジ角度の類似度もスコアに反映させることもできる。この場合は、最終の最小二乗法処理での対応エッジ点のエッジ角度と、これに対応する基点のエッジ角度との差から得られる重みの合計と、基点の数との比をスコアとして計算する。具体的には、以下の式で演算できる。
S:スコア
n:対応点の数
m:基点の数
ω(x):x=0のとき1で、xが大きくなるにつれて単調減少する関数
θi:対応点のエッジ角度
θi p:対応点に対応する基点の角度(基点の理想角度)
ここで基点の理想エッジ角度は、例えばセグメントが線分の場合は線分の法線方向となり、対応点探索ラインと重なる。この方法では、各対応エッジ点のエッジ角度と、該対応エッジ点と対応する基点の理想エッジ角度との差が小さい程、重みが1に近づくように、逆に角度差が大きい程0に近づくように設定される。例えば、角度差が0°〜18°の場合は0、18°〜36°の場合は0.1、・・・、162°〜180°なら1となるように、重みを設定する。このようにして基点毎に重みを演算し、最終的に得られた重みを平均することでスコアを演算する。
図49(b)の例では、右側の対応エッジ点Aに対して重み1、左側の対応エッジ点Bに対して重み「0.9」が与えられる。この結果、右側のセグメントSG1に対してはパターンモデルを左側に移動させる作用が働き、逆に左側のセグメントSG2に対しては、パターンモデルを右側へ移動させようとする作用が働く。よって、これらを総合すると、セグメントの左側へ移動させようとする重みは1.0、右側へ移動させようとする重みは0.9で、結果として左側に移動され、図49(c)のようになる。同様に、図49(c)の状態から再度重み付けを行い、該重み付け結果に基づく移動処理が繰り返されて、最終的な精密位置決めが確定する。このように、位置決めに際してパターンモデルを移動させる方向を、対応エッジ点候補と基点との距離に応じた重み付けで評価した上で行うことにより、相対的に確からしい方向に移動させることができ、位置決めの信頼性と安定性向上が期待できる。
(位置決め方向を考慮したセグメントの選択方法)
上記のようなケースは、特に線分のセグメントが特定方向に集中して多い場合に起こり得る。図49(b)の例では、縦方向(Y軸方向)のセグメントのみであり、X軸方向については正確な位置決めが期待できる反面、横方向(X軸方向)に伸びる線分のセグメントがないため、Y軸方向を規定できず、この方向での位置決めを曖昧にしている。そこで、パターンモデルを構築するセグメントを選択する際に、位置決め方向を特定方向に集中させないように、言い換えるとX軸方向及びY軸方向といった、交差する関係にあるセグメントを意識的に選択することによって、安定した位置決め結果が期待できる。以下、位置決め方向に配慮したセグメントの選択方法について、図50のフローチャートに基づいて説明する。
まずステップS4901で、複数のセグメントの候補が得られた状態で、該セグメント候補を、長さ順にソートする。なお、円弧のセグメントの場合は、円弧の長さをセグメント長さとする。
次にステップS4902で、最も長いセグメント候補をセグメントとして選択すると共に、これを基準セグメントに設定する。この基準セグメントの法線方向を基準角度とする。なお円弧セグメントが選択された場合は、基準角度は無効状態になる。基準角度が無効の場合は共役セグメントの選択は、角度によらずセグメント候補の長さのみで行う。
さらにステップS4903で、基準セグメントに対する共役セグメントとなるセグメント候補を抽出する。ここでは、該基準角度から、所定の角度範囲、ここでは第1の角度範囲内に含まれるセグメント候補があるか、探索する。第1の角度範囲の一例を図51(a)に示すと、基準セグメントの法線方向(90°)を中心として±45°の範囲、すなわち45°〜135°の範囲、トータルで90°の範囲に含まれるセグメント候補を抽出する。
図51(b)に示すセグメント候補の例では、○を付したセグメント候補が抽出され、×を付したセグメント候補が除外される。共役セグメントとして線分セグメントが選択された場合は、基準角度はそのセグメントの法線方向になり。有効状態になる。なお、セグメントが線分でなく円弧の場合は、無条件に抽出される。円弧の場合は角度変化が大きいことが期待できるので、位置決めに有用な情報となり得るからである。また、円弧の場合、基準角度の状態は変化しない。
セグメント候補が抽出された場合はステップS4904−1に進み、この内で最も長いセグメント候補をセグメントとして選択すると共に、これを該基準セグメントに対する共役セグメントに設定する。さらにステップS4905で、選択済みのセグメント数が規定数に達したかどうかを判定し、達している場合は処理を終了し、未だの場合はステップS4906に進み、共役セグメントを新たに基準セグメントに設定し直した後、ステップS4903に戻って処理を繰り返す。なお、共役セグメントに円弧セグメントが選択された場合、該円弧セグメントを基準セグメントとする場合の共役セグメントの選択は、基準角度が無効状態の場合は上述の通り角度によらず長さのみで選択されることになり、有効の場合は前述したしょりと同じ処理を行って共役セグメントの抽出が行われる。
一方、ステップS4903で、第1の角度範囲内に含まれるセグメント候補が存在しない場合はステップS4904−2に進み、第1の角度範囲内よりも範囲を広げた第2の角度範囲内に含まれるセグメント候補が無いか、同様に探索する。第2の角度範囲内の例としては、図51(a)の例では第1の角度範囲よりも±5°広げた40°〜140°の範囲としている。ここでセグメント候補が発見された場合はステップS4904−1にジャンプし、上記と同様最も長いセグメントを選択して共役セグメントに設定する。
第2の角度範囲内でも発見されない場合は、さらにステップS4904−3で、第2の角度範囲内よりもさらに範囲を広げた第3の角度範囲内に含まれるセグメント候補が無いか、同様に探索する。第2の角度範囲内の例としては、図51(a)の例では第2の角度範囲よりもさらに±5°広げた35°〜145°の範囲としている。ここでセグメント候補が発見された場合は同様にステップS4904−1にジャンプし、最も長いセグメントを選択して共役セグメントに設定する。発見されない場合は、ステップS4902に戻り、セグメント候補中から最も長いセグメントを基準セグメントに選択し直す。なお、角度範囲の数値や、角度範囲の際設定の回数等は適宜変更でき、例えばステップS4904−3でセグメントが発見されない場合は、さらに角度範囲を広げた探索を行ってもいいし、逆にステップS4904−3を省略し、ステップS4904−2でセグメントが発見されない場合に、直ちにステップS4902に戻って基準セグメントを再設定することもできる。
このようにして、基準セグメントに対して、直交方向に近い共役セグメントを選択する作業を繰り返し、結果として角度が分散したセグメントが選択されるので位置決めの安定性を向上できる。このようなセグメントの選択はセグメント作成手段68のセグメント選択手段67で行われる。
(パターン特徴選択機能)
さらに、サーチ対象物から得られるパターンの特徴に応じて、パターンモデルを構成するセグメントの選択基準を変更可能なパターン特徴選択機能を備えることもできる。具体的には、図67に示すような登録画像において特に有効である。図67の登録画像では、碁盤目状の枠の中に異なる文字や数字が表示されている。このような画像中に、パターンウィンドウPWを設定すると、作成されるパターンモデルは、図67に示すように枠の部分に多くのセグメントSGWが設定され、逆に枠内の文字にはセグメントSGMがあまり設定されなくなる。このようなパターンモデルでは、枠の部分のみで位置決めが行われる結果、枠内の文字が無視され、あるいは重視されないこととなり、認識が困難となって、枠単位で位置がずれてしまう等、位置決めに失敗する虞があった。
この原因は、セグメントの選択基準にある。すなわち、従来の考え方では、ノイズ成分を排除すると共に、より鮮明に検出されたエッジ点を重視することで位置決め精度が向上するとの観点から、長いセグメントを優先的に選択することが行われていた。なぜなら、短い輪郭はノイズの成分が多いと考えられ、逆に長い線分ほど正しくエッジ情報を抽出しているとの推測に基づいて、長い線分から自動的に選択するように設定されていた。いいかえると、短い線分を優先して選択可能とした画像処理方法等は、従来存在しなかった。このため図67のような例では、直線で囲まれた枠部分はエッジ検出が比較的容易で鮮明になる傾向があるため、枠部分に生成されたセグメントが選択されやすくなり、上述のような位置決めの失敗を生じていた。特に粗サーチにおいては、簡易的な検索であることから抽出されたエッジやチェーン、セグメント等の輪郭情報をすべて使用せず、一部の輪郭のみを選択するため、優先的に選択される輪郭が正確な位置決めに資するものでなかった場合には、このような誤検出の問題が生じる。
これに対し本実施の形態では、逆に短い輪郭から昇順に選択可能な機能を設けることで、登録画像に応じた適切なサーチ結果を得られるようにしたものである。またノイズ成分については、閾値を設定して所定長さ以下の線分を排除することにより実現している。この結果、ノイズ成分は有効に排除しつつ、かつ信頼性の高いサーチ結果を得ることができる。
(輪郭の長さ順でソート)
次に、このような短い輪郭を選択する方法を2つ説明する。まず、輪郭を長さ順にソートし、短いものから所定数選択する方法について、図68のユーザインターフェース画面に基づいて説明する。図68は、パターンモデルを用いてサーチ対象画像中から登録画像に類似する部分をサーチする画像処理プログラムにおいて、登録画像のパターンモデルを構築する輪郭を適切に選択するためのパターン特徴選択機能の設定画面200のユーザインターフェースを示すイメージ図である。この画面では、設定項目としてエッジ強度上限81、エッジ強度下限82、輪郭長下限83、輪郭選択本数84、輪郭登録順序85のそれぞれについて、ユーザが粗サーチと精密位置決めの各々に対して設定を行うことができる。この内、パターン特徴選択機能に関する項目は、輪郭長下限83、輪郭選択本数84、輪郭登録順序85となる。
エッジ強度上限81及びエッジ強度下限82では、エッジとして検出するための範囲を規定しており、エッジ強度が上限値より高い、あるいは下限値よりも低いものについては排除するようフィルタリング条件を指定する。
(輪郭長下限設定手段)
輪郭長下限83は、輪郭として検出するための下限値を設定する輪郭長下限設定手段として機能する。すなわち、輪郭長下限83で規定した下限値よりも長さが短い輪郭を、長さフィルタでフィルタリングする。これにより、短い輪郭として表れたノイズを排除できる。またこの値をユーザが調整可能とすることで、フィルタリングの強度を使用環境や用途に応じて適宜調整できる。また、環境によっては、輪郭長下限を固定値としてもよい。
(選択数決定手段)
輪郭選択本数84は、選択される輪郭の本数を規定する選択数決定手段として機能する。パターンモデルとして使用する輪郭の本数の上限を規定することで、パターンモデルを簡素化して処理量を低減し、サーチ時間の短縮化が図られる。また、選択本数を多くすると、処理量が多くなる反面、より高精度なサーチ結果が期待できる。なお、輪郭選択本数を固定値(例えば50本)とすることで、上述の通り設定作業の簡素化を図ることもできる。
(選択順序決定手段)
輪郭登録順序85は、輪郭の選択順序を、輪郭の長さの昇順と降順とに切り替え可能な選択順序決定手段として機能する。これにより、画像処理の対象となる画像に応じて、長さの昇順又は降順の適切な選択方法に設定して、より柔軟で高精度な画像処理が可能となる。
以上の設定項目を設定することで、複数の輪郭の内から、ノイズに近いような極短い輪郭をフィルタリングすると共に、長さの短いものから順に選択可能として、ノイズ成分を有効に排除しつつ、位置決めの精度を左右するセグメントを適切に選択して効果的なパターンモデルを構築できる。
例えば、図69に示すような碁盤目状の枠の中に異なる文字や数字が表示されている登録画像に対して、パターンウィンドウPWを設定してパターンモデルを構成するセグメントを選択する例を考える。図70に示すような設定の場合は、輪郭登録順序85が「長さ降順」、すなわち長いものから短いものへと順に選択するよう設定されているため、図69のように枠の部分のセグメントSGWが多く選択されてしまい、識別に重要となる文字や数字の部分のセグメントSGMの選択が少なく、このままでは位置決めの精度が期待できない。
これに対し、図71に示すように輪郭登録順序85を「長さ昇順」、すなわち短いものから長いものへと順に選択するよう設定を変更することで、図72のように枠内の文字や数字のセグメントSGMが多く選択されるようになり、このような登録画像に適した輪郭情報を備えるパターンモデルを構築できる。
なお図68の例では、各設定項目を粗サーチと精密位置決めの各々で個別に設定可能としているが、いずれか一方のみで設定可能とすることもできるし、また特定の項目については画像処理プログラムあるいは画像処理装置側で規定し、ユーザによる調整を禁止する構成としてもよい。特に操作に詳しくないユーザでも簡便に利用できるよう、設定項目を少なくすることで、操作性を向上できる。
また輪郭としては、セグメントの他、チェーン等他の輪郭情報も利用できる。例えば、チェーン作成手段63で得られたチェーンを、線分や円弧のセグメントに近似することなく、そのまま輪郭情報として利用する場合に、該チェーンの選択基準に、上述の通り短いチェーンから選択したり、選択の順序を長さの昇順、降順に切り替え可能としたり、所定の閾値よりも短いチェーンや長いチェーンを排除したりといった手法が適用でき、これによっても同様の作用効果を得ることができる。次に、図73、図74のフローチャートに基づいて、輪郭の長さ順でソートする具体的な手順を説明する。
まずセグメントの長さを用いてソートする場合について、図73に基づき説明する。最初に輪郭を抽出する。ここではまずステップS7301で、登録画像に対してソーベルを行い、エッジ角度画像、エッジ強度画像をそれぞれ求め、次にステップS7302で、エッジ角度画像及びエッジ強度画像を用いてエッジ点の細線化を行い、輪郭点を求める。具体的には輪郭抽出手段62のエッジ角度・エッジ強度画像作成手段60でエッジ角度画像及びエッジ強度画像を作成した後、細線化手段61でエッジ強度の非極大点抑制処理により、エッジ点の細線化を行う。さらにステップS7303で、チェーン作成手段63によりチェーンを作成する。具体的にはエッジチェーン化手段64が隣接するエッジ点同士を連結してチェーンを作成する。また必要に応じてチェーンフィルタ手段66で、チェーンの各種特徴量でフィルタリングを行う。
次にステップS7304で、セグメントを作成する。ここではセグメント作成手段68のエッジチェーンセグメント化手段65が、各チェーンを線分や円弧で近似したセグメントを作成する。さらにステップS7305で、短いセグメントをフィルタリングする。ここではセグメント選択手段67が輪郭長下限設定手段として、セグメント長が下限値以下のものを排除し、ノイズ成分を除去する。
最後にステップS7306で、セグメントの長さでソートして、セグメント長の短いものから順に、パターンモデルを構成するセグメントを選択する。ここではセグメント選択手段67が、輪郭を長順にソートする輪郭ソート手段として機能し、セグメントを長さ順にソートし、さらに選択順序決定手段で規定された選択順序、ここではセグメント長の昇順、すなわち短いものから順に、選択数決定手段で規定された本数選択する。これによって、上述した図72のような登録画像に適したパターンモデルが構築される。
一方、輪郭としてセグメントを介することなく、チェーンのままで利用する例を、図74のフローチャートに基づいて説明する。ここでは、輪郭点を抽出してチェーンを作成するまでの手順は、上記図73と同じである。すなわち、まずステップS7401で、登録画像に対してソーベルを行い、エッジ角度画像、エッジ強度画像をそれぞれ求め、次にステップS7402で、エッジ角度画像及びエッジ強度画像を用いてエッジ点の細線化を行い、輪郭点を求め、さらにステップS7403でチェーンを作成する。
そしてステップS7404で、短いチェーンをフィルタリングする。ここでは、輪郭長下限設定手段で設定された下限値に従い、チェーン作成手段63のチェーンフィルタ手段66が、輪郭長下限83よりも短いチェーンを排除する。その上でステップS7405で、チェーンの長さ順にソートして、チェーン長の短いものから順に、パターンモデルを構成するチェーンを選択する。ここでも、チェーンフィルタ手段66が輪郭ソート手段として機能し、チェーンを長さ順にソートし、さらに選択順序決定手段で規定された選択順序、ここではチェーン長の昇順に、選択数決定手段で規定された本数のチェーンを選択する。これによって、図72のような登録画像に適したパターンモデルがチェーンで構築される。
この方法であれば、一旦セグメントで近似する処理を省略できるので、その分だけ処理を簡素化できる。反面、チェーンは線分や円弧のような一定の幾何図形に近似されていないランダムな線分の連結体となるため、以降の各個の処理は複雑になる。いずれを選択するかは、登録画像がシンプルな図形であるかどうかや、エッジ点の検出精度等に応じて決定される。
(長い輪郭をフィルタリング)
なお上記の例では輪郭の長さ順にソートを行っているが、ソートを行うことなく、輪郭の長いものを排除することでもパターンモデルを構築できる。以下、この方法を図75のユーザインターフェース画面に基づいて説明する。図75も、画像処理プログラムにおいて登録画像のパターン特徴選択機能を設定する設定画面300のユーザインターフェースを示すイメージ図である。この画面では、設定項目としてエッジ強度上限81、エッジ強度下限82、輪郭長下限83に加え、輪郭長上限86が挙げられている。エッジ強度上限81、エッジ強度下限82、輪郭長下限83については、上述した図68と同様であるので、詳細説明を省略する。
(輪郭長上限設定手段)
輪郭長上限86は、輪郭の上限値を設定する輪郭長上限設定手段として機能する。すなわち、輪郭長上限86で規定した上限値よりも長い輪郭をフィルタリングする。これにより、長い輪郭を意図的に排除し、短い輪郭のみを残してパターンモデルを構築できるので、結果的に短い輪郭を優先的に選択したのと同様の効果が得られる。
なお、図75の例では選択数決定手段を設けておらず、予め設定された規定値の輪郭が自動的に選択される。ただ、選択数決定手段を設けてユーザが手動で輪郭数を設定することもできる。
このようにして、長さ順でソートせずとも、短い輪郭を優先的に選択したパターンモデルを構築でき、図67のような登録画像に対しても有効なパターンサーチが実現できる。例えば、図76に示すような設定条件では、図77に示すように枠の部分のセグメントSGWが多く選択されたパターンモデルとなるが、図78に示すように輪郭長上限86を100から20に変更することで、図79に示すように枠内の文字や数字のセグメントSGMを多く含んだパターンモデルを構築できる。
ここで、長い輪郭をフィルタリングする手順を、図80、図81のフローチャートに基づいて説明する。まず図80は、輪郭としてセグメントを用いた場合を説明している。この方法でも、上述した輪郭長でソートする場合と同様に、輪郭点を抽出してチェーンを作成する。すなわち、まずステップS8001で、登録画像に対してソーベルを行い、エッジ角度画像、エッジ強度画像をそれぞれ求め、次にステップS8002で、エッジ角度画像及びエッジ強度画像を用いてエッジ点の細線化を行い、輪郭点を求める。さらにステップS8003でチェーンを作成し、次いでステップS8004で、セグメントを作成する。
最後にステップS8005で、長いセグメントと短いセグメントを削除する。ここでは、セグメント選択手段67が輪郭長下限設定手段として、セグメント長が下限値以下のものを排除することに加え、さらにセグメント選択手段67は輪郭長上限設定手段としても機能し、輪郭長上限86よりも長いセグメントについても削除する。この結果、ノイズ成分を除去した上で、短いセグメントを選択できるので、図79のような場合に位置決めに有効なセグメントを含んだパターンモデルが構築される。なおセグメントの選択本数は、固定値としているが、選択数決定手段を別途設けてユーザが手動で設定可能とできることは上述の通りである。
また、セグメントに代えてチェーンでセグメントを構成する例について、図81に基づいて説明する。ここでも、輪郭点を抽出してチェーンを作成するまでの手順は、上述した図74と同様である。すなわち、ステップS8101で登録画像にソーベルを行い、エッジ角度画像、エッジ強度画像を求め、ステップS8102でエッジ角度画像及びエッジ強度画像を用いてエッジ点の細線化を行い、輪郭点を求め、ステップS8103でチェーンを作成する。
そしてステップS8104で、長いチェーンと短いチェーンを削除する。ここでは、チェーンフィルタ手段66が輪郭長下限設定手段として、輪郭長下限値以下のチェーンを排除すると共に、輪郭長上限設定手段としても機能し、輪郭長上限86よりも長いチェーンについても削除する。この結果、ノイズ成分を除去した上で、短いチェーンを選択できるので、図79のような登録画像の位置決めに有効なチェーンを含めたパターンモデルを構築できる。なおチェーンの選択本数は、固定値としているが、上述の通り選択数決定手段を別途設けてユーザが手動で設定可能とできることも同様である。
(セグメントの方向を考慮したセグメント選択機能との組み合わせ)
さらに、パターン特徴選択機能を、上述した位置決め方向あるいは角度を考慮したセグメント選択機能と併用することもできる。すなわち、セグメントを長さ順にソートした後、あるいは長いセグメントをフィルタリングした後、どのセグメントをパターンモデル構築のために選択するかを決定する手法として、図50のフローチャート等で示した方法である、基準セグメントに対して、直交方向に近い共役セグメントを選択する方法を採用できる。なお、この方法はセグメントの選択に対して利用でき、チェーンについては適用しない。チェーンは線分や円弧で近似していないため、セグメントのような角度や方向を有しないためである。
以下、ソートあるいはフィルタリング後に、セグメントを選択するに際してセグメントの法線方向を考慮する例を、図82、図83のフローチャートに基づいて説明する。まず図82は、セグメント長でソートする例について示している。ここでも、輪郭点を抽出してチェーン、セグメントを作成し、得られたセグメントの内で短いものをフィルタリングし、ソートするまでの手順は、上述した図73等と同様である。すなわち、まずステップS8201で、登録画像に対してソーベルを行い、エッジ角度画像、エッジ強度画像をそれぞれ求め、次にステップS8202で、エッジ角度画像及びエッジ強度画像を用いてエッジ点の細線化を行い、輪郭点を求める。さらにステップS8203でチェーンを作成し、次いでステップS8204で、セグメントを作成し、次いでステップS8205で、短いセグメントをフィルタリングする。そしてステップS8206で、フィルタリング後のセグメントを、セグメント長でソートして短い順に並べる。
この状態でステップS8207で、セグメントの法線方向を考慮しつつ、セグメントの短いものから順に選択していく。ここで図82のS8206以降の具体的な手順について、図84のフローチャートに示す。このフローチャートは、図50のフローチャートのほぼ同様であるが、ステップS8401において、ソートの順序をセグメント長の降順でなく、短いものから順に並べた昇順とした点、及びステップS8402において、最も短いセグメントをセグメント候補として選択し、基準セグメントにする点、並びにステップS8404−1において、最も短いセグメントをセグメント候補として選択し、共役セグメントにする点、が異なる。それ以外は図50と同様であるので、詳細説明を省略する。
この方法によれば、特に短いセグメントが位置決めに有効な登録画像に対して効果的となり、また略直交するセグメントを交互に選択することで、法線角度が交差する関係にあるセグメントを意識的に選択したパターンモデルを構築できるので、縦横方向に安定した位置決めの結果が期待できる。
同様に、セグメント長の長いものをフィルタする方法に、セグメントの法線方向を考慮した例を、図83のフローチャートに基づいて説明する。ここでも、輪郭点を抽出してチェーン、セグメントを作成し、得られたセグメントの内で短いものと長いものをフィルタリングするまでの手順は、上述した図80等と同様である。すなわち、まずステップS8301で、登録画像に対してソーベルを行い、エッジ角度画像、エッジ強度画像をそれぞれ求め、次にステップS8302で、エッジ角度画像及びエッジ強度画像を用いてエッジ点の細線化を行い、輪郭点を求める。さらにステップS8303でチェーンを作成し、次いでステップS8304で、セグメントを作成し、次いでステップS8305で、短いセグメントと長いセグメントをフィルタリングする。この状態でステップS8306で、上記図84と同様の方法で、セグメントの法線方向を考慮しつつセグメントの短いものから順に選択していく。この場合は、ステップS8306でセグメント長でソートする作業がどのみち必要となるため、この点からは上述した図82の方法が効率的といえる。その他の効果としては、図82と同様であり、基準セグメントに対して、直交方向に近い共役セグメントが選択される結果、角度が分散したセグメントがパターンモデルに選択されるので、位置決めの安定性を向上できる。
(最小二乗法の安定性向上)
次に、精密位置決め工程で行われる最小二乗法の安定性を向上させる手法について説明する。最小二乗法には大別すると線形と非線型があり、この内で線形の最小二乗法においては、理論的には解を一義的に求めることができる。一方、非線形の最小二乗法では、一般には二次式までで近似するため、近似した解が正しいとは限らない。場合によっては精密位置決め工程において、粗サーチで得られた検出候補の位置よりも、精度が悪くなる方向に位置が移動、回転されることもあり得る。例えば、図85に示す円状のような対称性の高い図形(外円の中心座標と内円の中心座標が微妙に異なる。)に対して精密位置決めを行う場合、円の中心を回転軸として回転させてもエラー値が殆ど変化しないため、本来の回転すべき方向とは逆の方向に回転することが生じ得、また、角度の変化が大きく平行移動量も大きくずれた結果となること等もある。
二次式で近似した非線形の最小二乗法の一般的な解法では、エラー関数E(pi)を、最小二乗法の変数である試行パラメータの組piの近傍で、試行パラメータの2次の冪数までで近似した近似エラー関数を作成し、該近似エラー関数を使ってエラー関数が最小となるような試行パラメータの組piを見つけるという手順を踏む。
このような非線形最小二乗法において、エラー値の小さい解を得るための解法として、以下の逆ヘッセ法が提案されている。
近似エラー関数を求め、そのエラー関数から最小となる試行パラメータの組を求めた上で、一度に次段のより精度の高い試行パラメータの組を求める方法である。ただし、この逆ヘッセ法を用いてエラー値の小さい解を求める場合、以下のような不具合が発生する恐れがある。このことを図86に基づいて説明する。図86(a)及び図86(b)の各々において、実線はエラー関数を、破線はこのエラー関数を近似した近似エラー関数をそれぞれ示している。図86(a)及び図86(b)にてエラー関数を示す曲線上に設けられるP1は、上述した粗サーチにて求められた位置(x,y,θ)を示し、このP1の近傍のエラー関数の値に基づいて二次関数として求められたものが、破線で示す近似エラー関数を示す破線の二次曲線である。
さらに、図86(a)に示すケースの場合は、逆ヘッセ法が適切に作用したケースを説明する図であり、この近似エラー関数を示す破線の二次曲線の最もエラー値の小さな位置、つまりP2が実線で示されるエラー関数の最もエラー値の小さい位置Pに近接しているため、より正確なエラー値の小さな位置P2が求められているケースを示している。
一方、図86(b)に示すケースの場合は、逆ヘッセ法が不適切に作用したケースを説明する図であり、近似エラー関数を示す破線の二次曲線の最もエラー値の小さな位置、つまりP2が実線で示されるエラー関数の最もエラー値の小さい位置Pから離れた位置として求められるため、正しくないエラー値の小さな位置P2が求められているケースを示している。
上記の内、図86(b)に示したケースの場合、逆ヘッセ法でそのまま解を求めようとすると、上述の通り試行パラメータの大きな変位を解としてしまうことがあり、その結果精密位置決めの精度が低下する問題があった。本願発明者は、図86(b)に示す、逆ヘッセ法が不適切に作用したケースの発生を抑制する手法として、パターンモデルに対して、移動や回転に関する制限を設ける手法を見出した。すなわち、逆ヘッセ法に基づく最小二乗法の解法として、エラー関数に新たな項を追加する。具体的には、上述した距離に関する項(第1エラー関数)に加えて、試行パラメータからの変位によってエラー値が大きくなるような項(第2エラー関数Ed)を追加する。これにより、極度に大きな変化が第2エラー関数Edで抑制され、図86(a)に示すような適切な近似が期待できる。このように精密位置決め工程において正しい方向に収束する条件を付加して、意図しない方向への回転や発散を回避し、位置決めの信頼性を向上できる。第2エラー関数は、最小二乗法の試行パラメータをPiとするとき、Pi−P0iの関数となる。この結果得られるエラー関数E(P)の連立方程式の例を、次式に示す。
上式において、全体のエラー関数E(P)は、各セグメントとその対応エッジ点との距離を示す第1エラー関数Eoと、この第1エラー関数における試行パラメータを変化させる際の該変化量を第2エラー値とし、該第2エラー値の累積値を演算する第2エラー関数Edとの和で表現される。このように最小二乗法の演算において、理想の位置と一致したときに最小となる項に加えて、第2エラー関数Edを追加したことで、両方の項が小さくなるような方向に解を探すこととなり、極度に大きな試行パラメータの変化が抑制されるので、精密位置決めに際して誤った方向に回転したり発散するといった事態を回避でき、処理結果が安定するという利点が得られる。
(近傍排除処理)
次に、近傍排除処理について説明する。ピラミッドサーチ中に粗サーチや精密位置決めなどを行う際には、サーチ結果として得られる検出候補が複数現れることがある。特に、パターンモデルを回転させて位置決めを行う場合は、回転角度すなわち姿勢の異なる検出候補が現れやすい。この内で、似た位置、似た姿勢の検出候補は同じものと扱い、基準となる候補を残して他を除外する処理を近傍排除と呼ぶ。基準となる候補(基準候補)は、例えばスコア値の最も高いものを選択する。これによって、以降の処理では重複した検出候補の処理を省くことができ、処理の高速化や低負荷化が図られ、また似たような検出結果が重なって表示されることを回避できる。
従来の近傍排除処理では、図88に示すように基準候補に基づく近傍排除距離(図88の例では100ピクセル)、近傍排除角度(30°)、近傍排除スケール(10%)等の近傍排除条件が設定されている。複数の検出候補が検出された場合、上記の設定に基づき、基準となる基準候補に対して、近接する検出候補との近傍排除距離、近傍排除角度、近傍排除スケールのすべてが近傍排除条件内(規定された範囲内)にある検出候補を排除する。図89の例では、複数の検出候補群KK1〜KK5の内、最もスコア値の高いKK2が基準候補として選択される。そして、KK2を基準とする検出候補間の距離を規定するために、近傍排除距離が、図88で設定された近傍排除条件設定に基づき100ピクセルに設定される。図89の例では、KK2の基準候補の外接矩形の中心を基準点とする半径100ピクセルの円に含まれる検出候補群KK1、KK3、KK4が、近傍であると判断される。言い換えると、KK5の検出候補はこの円外にあるため、排除されないことになる。さらに、図88の近傍排除条件で設定された近傍排除角度30°の範囲内にある検出候補群KK1、KK3が、近傍であると判断される。言い換えると、KK4は角度差が30°以上であるため、排除されない。さらに図88で設定された近傍排除スケール10%の範囲内にあるKK3が、近傍排除処理の対象として選択される。言い換えると、KK1はスケールの差が10%以上であるため、排除されない。以上の結果、近傍排除条件として設定された近傍排除距離、近傍排除角度、近傍排除スケールのすべてを具備する検出候補KK3(図89において右側上)のみが、基準候補KK2に類似するとして排除される。
なお、上述した近傍排除角度とは、別途設定される基準角度に対して設定されるものである。この基準角度は、基準候補の姿勢を決定する基準となる角度であり、本実施の形態ではパターンモデル作成時にパターンモデルの姿勢と関連付けた特定の方向である。具体的には、図89に示す検出候補に対応する三角形のパターンモデルの場合は、三角形の底辺をX方向と平行になる姿勢に位置決めした場合、その底辺に対して垂直な上方に伸びる方向を基準角度としている。そして図89の中で最もスコア値の高いKK2に対して、パターンモデルに設定された基準角度を適用し、検出候補KK2における基準角度が設定される。さらにこのKK2の基準角度に対して近傍排除角度30°が設定され、この角度内にあるKK1とKK3が排除対象候補として抽出されることになる。
また本実施の形態では、基準角度をパターンモデルに対して設定する場合、パターンモデルの姿勢に対して、特定の方向を関連付けることにより、基準角度を自動的に設定している。ただ、この手法に限定されるものでなく、例えば操作を行うユーザがパターンモデルに対して自由に基準角度を設定してもよい。また基準角度を自動的に設定する場合においても、パターンモデルの幾何学的情報を用いて基準角度を設定してもよい。さらに基準角度は、パターンモデルに対して設定せず、図89に示すような複数の検出候補の中の一つ、例えば最もスコア値の高い検出候補に対して、基準角度を自動又は手動で設定することもできる。
しかしながら上記のような近傍排除処理の方法では、適切な処理が実現できない場合があった。例えば、図90に示すパターンモデルで、図91に示すサーチ対象画像OI2(エッジ画像)に対する粗サーチの結果から得られる検出候補に対して、図92に示す近傍排除条件で近傍排除処理を行うと、図93のような結果となる。ここでは、近傍排除角度が30°に設定されているため、180°回転した、反転した姿勢にある検出候補KK6が排除されない。これを排除しようとすれば、図94に示すように、近傍排除角度を180°に設定することが考えられる。しかしながらこの設定では、図95に示すように、基準候補に対して回転した姿勢にある他の検出候補(図93の検出候補KK7)まで排除されてしまうことになる。このように、従来の近傍排除処理では回転した姿勢にある検出候補に対し、所望の姿勢のものを残しつつ不要な姿勢のものを排除することができないという問題があった。
(角度変化量設定機能)
これに対して本実施の形態では、近傍排除条件を設定する近傍排除条件設定手段87として、図96に示すようなユーザインターフェースを用意し、基準角度に基づいて複数の姿勢に基準候補を変化させることを可能としている。いいかえると、従来では基準候補又はパターンモデルの基準角度すなわち姿勢は一定に固定されていたが、本実施の形態では、基準角度に角度変化量を設定することで、複数の姿勢をとることを許容している。角度変化量としては、取り得る姿勢の総数、又は追加する姿勢の数、あるいは姿勢を示す角度の数値等で表現できる。例えば角度変化量として姿勢の角度値をそのまま指定する例を考えると、角度変化量が0°の場合は、基準候補の姿勢(検出角度)がそのまま基準角度となる。また角度変化量が180°の場合、基準候補の検出角度に加え、(検出角度+180°)の姿勢が追加される。
また基準候補と検出候補との距離を演算するための基準として、基準点をパターンモデル又は基準候補に設定する。基準点は、例えばパターンモデルの重心の位置としたり、これらの外接矩形の中心としたり、又はユーザが任意の位置を指定可能としたり、あるいは検出候補の頂点や底面といった特定の部位に設定することもできる。また一旦設定された基準点をユーザが手動で調整可能とすることもできる。さらに基準点は、検出パターンを表示するディスプレイ等の表示手段上に重ねて表示させることもできる。例えば図90や図93等の例では、各検出候補の基準点を十字(+)状に表示している。
この基準候補の角度に、基準角度として設定された角度を加算した値でもって、他の検出候補との角度差を算出する。
図96に示す近傍排除条件設定手段87では、複数の検出候補中から選択された基準候補に類似する検出候補を排除するための近傍排除条件として、近傍排除距離88と、近傍排除角度89と、近傍排除スケール90に加えて、角度変化量設定手段91を備えている。ここで近傍排除距離88は、基準候補と検出候補との距離が所定値以下の場合に、該検出候補を排除するための距離閾値である。また近傍排除角度89は、基準候補と検出候補との角度差が所定値以下の場合に、該検出候補を排除するための角度閾値である。さらに近傍排除スケール90は、基準候補と検出候補との拡大/縮小率が所定値以下の場合に、該検出候補を排除するための倍率閾値である。
また角度変化量設定手段91とは、基準候補の姿勢すなわち角度を2以上に変化させるための設定である。具体的には、図96の例では取り得る姿勢の数を角度変化数92として規定している。この角度変化数92で指定された個数で360°の角度を等分し、等分された角度を基準候補の角度に加算して基準角度が指定される。図96の例では、角度変化数92が1であるため、基準候補の角度は1つのみが設定され、図91に示したサーチ対象画像の中央部分に着目すると、図97のように近傍範囲角度30°の範囲内にある検出候補のみが排除されることになる。
図97は複数の検出候補(検出候補群)をサーチ対象画像に重ねた状態を示しており、この図において太線はサーチ対象画像(エッジ画像)OI3、OI4、細線は検出候補KK8、KK9、破線は基準候補BK1を、それぞれ示している。図96の設定では、角度変化数92が1であるため、基準候補の角度がそのまま使用され、近傍排除角度89として設定された30°(図97の例では基準候補の角度を中心とした±30°)の範囲内にある検出候補があれば削除される。一方で、基準候補と逆向きの姿勢にある細線で示す検出候補KK8は、反転しているため角度差が180°となり、排除されない。
一方で、図98に示すように近傍排除角度89を180°に設定すれば、図99に示すように反転姿勢の検出候補(図97のKK8)は排除されるものの、今度は傾斜姿勢にある検出候補(図97のKK9)まで排除されてしまい、好ましくない。このように、従来の近傍排除処理と同様、反転姿勢で検出された検出候補の排除を巧く処理できない。
そこで図100に示すように角度変化量設定手段91で角度変化数92を2に設定すると、基準角度として360°を2等分した180°が新たに付加される。この結果、図101に示すように上方向に30°の範囲(真上の位置を0°の基準とする場合、±30°に相当する−30°〜30°の範囲)と、下方向に30°(160°〜210°)の範囲が近傍排除の範囲に設定される。これにより、細線で示す反転姿勢の検出候補(図97のKK8)を排除でき、かつ傾斜姿勢にある検出候補KK9は排除されずに残すことができる。このように、基準角度を従来のように単一とせず、複数設定可能とすることで、このような回転姿勢にある検出候補に対しても、必要なものを残し不要なものを排除でき、適切な近傍排除処理が担保される。
上記の例では角度変化数を2に設定したが、3以上に設定することも可能であることはいうまでもない。図102に、角度変化数と基準角度の例を示す。この図に示すように、角度変化数が1の場合は、基準角度は0°(=360°)、角度変化数が2の場合は基準角度は0°と180°の2つとなる。また3の場合は0°、120°、240°、4の場合は0°、90°、180°、270°となる。これにより、様々な形状の登録画像に対して、適切な近傍排除処理を行うことができる。例えば図103(a)に示すように、1回転しない限り外形の重なりが生じない(非対称な)形状であれば角度変化数を1に、図103(b)に示す長方形のように、反転姿勢で重なる形状であれば角度変化数を2に、図103(c)に示す正三角形のように、3方向で重なる形状であれば角度変化数を3に、図103(d)に示す正方形のように4方向で重なる形状であれば角度変化数を4に、それぞれ設定することで、回転して重なる姿勢になった検出候補を効果的に排除できる。同様に登録画像の外形が5角形であれば角度変化数を5に、6角形であれば角度変化数を6に、各々設定すれば、このような登録画像に対する適切な近傍排除処理が図られる。
(近傍排除処理の実行手順)
次に、複数の検出候補が発見された場合に、近傍排除処理を実行して重複する検出候補を排除する手順を図104のフローチャート及び図105〜図111のイメージ図に基づいて説明する。ここでは、図105に示すようにサーチ対象画像OI3〜OI6に対するサーチの結果、複数の検出候補が得られているとする。なおこの例では、検出候補の検出個数を5個としている。また近傍排除条件として、図106に示す設定を行っているものとする。
まずステップS10401で、得られた複数の検出候補をスコア値でソートする。そしてステップS10402で、基準候補BK1を決定する。具体的には、近傍排除処理を未実行の検出候補の中からスコア値が最大のものを選択し、これを基準候補とする。図105の例では、図107に破線で示す検出候補が基準候補BK1として選択される。さらに選択された基準候補BK1を近傍排除処理実行済みにする。この例では、すべての検出候補に対して近傍排除処理を行うため、近傍排除処理の未処理/処理済を判別するための識別子(例えばフラグ)を備えている。
次にステップS10403で、基準角度を決定する。基準角度は、近傍排除条件設定手段87の角度変化量設定手段91での設定に従い決定される。ここでは図106に示すように角度変化数92が2であるため、基準角度は0°と180°の2つとなり、この角度を順次選択設定することになる。すなわち1回目のループでは基準角度として0°が、2回目のループでは180°が、各々設定される。
次にステップS10404で、基準角度に従って基準候補の近傍と判断された他の検出候補を排除する。具体的には、基準候補のスコア値よりも低いスコア値を有する他の検出候補を、基準候補と座標位置、角度、スケールで比較して、その差がいずれも近傍排除条件で設定された範囲内であれば、近傍と判断してこれを排除する。図107の例では、細線で示す検出候補KK9が排除されることになる。
そしてステップS10405で、すべての基準角度で近傍排除処理が終了したかどうかを判定し、未だの場合はステップS10403に戻って処理を繰り返す。図107の例では、基準角度を180°に設定し直して再度近傍排除処理を行い、2点鎖線で示す反転姿勢にある検出候補KK10が排除されることになる。この結果、図108に示すように破線で示す基準候補BK1を残して、中央で縦向きに位置するエッジ画像のサーチ結果が絞られる。そしてすべての基準角度で近傍排除処理が終了した場合は、ステップS10406に進む。さらにステップS10406では、近傍排除処理が未実行の検出候補が残っているかどうかを判定し、残っている場合はステップS10402に戻って処理を繰り返し、残っていない場合は処理を終了する。図108の例では、次の近傍排除処理として図109に示すように右方向に回転させた姿勢にある検出候補群に対して処理が開始される。ここでも基準角度を0°、180°に変化させて反転姿勢にある検出候補が排除され、図110に破線で示すように一の検出候補(基準候補BK2)のみが残される。さらに、図110の右、左に各々位置する各検出候補に対しても同様に近傍排除処理が行われ、最終的に図111に示すように、図105の状態から重複している検出候補や反転姿勢にある検出候補が適切に排除された、代表的な検出候補BK1〜4のみを残すことが可能となる。以上のようにして、すべての検出候補に対して近傍排除処理を行い、基準候補と近いと判断された検出候補を排除できる。
なお上記の例では、基準候補の選択基準として、スコア値の最も高いものを選択したが、この方法に限られず他の選択基準も適宜利用できる。例えば、粗サーチで求めた座標位置のY座標が最も小さい検出候補(低い位置にあるもの)を基準候補として選択したり、検出候補の角度がユーザの指定した角度に最も近いものを基準候補として選択することもできる。
また上記の例では、角度変化量設定手段として角度変化数を指定し、この数に応じて自動的に等分された基準角度を設定する場合を説明したが、角度変化量設定手段はこの構成に限られない。例えば、基準角度をユーザが任意の角度値で直接指定することもできる。例えば図112に示すような角度変化量設定手段91Bの設定画面例において、「基準角度追加」ボタン93を押下すると、第1基準角度、第2基準角度、第3基準角度、...のように、逐次基準角度の設定欄が追加され、ユーザは所望の角度値を直接規定することができる。この方法であれば、角度を直接的に指定できるため、特殊な対称性があるパターンモデルに対する設定が容易となる。
(基準点の設定)
上述の通り、任意の検出候補と基準候補との距離を演算するための基準として、基準点が利用される。基準点は、上記の例では検出候補のエッジの重心位置としている。また基準点を、ユーザが任意の位置に設定したり、設定された基準点の位置を変更可能とするよう構成してもよい。例えば図113の例では、パターンモデルを示す画面上に十字(+)の基準点を表示している。この状態から、基準点の位置を変更した状態を図114に示す。変更の方法は、十字状に表示される基準点を画面上でドラッグして所望の位置まで直接移動させた後リリースさせたり、あるいは基準点の座標位置を直接入力する等の態様が利用できる。図113の例では、変更後の基準点に対して、近傍排除角度89や近傍排除距離88が設定された例を示している。このように基準点を画面上に表示させることで、基準点の位置と近傍排除処理の効果を把握し易くできる。また基準点を画面上に非表示としてもよいことはいうまでもない。
なお上記では、パターンモデルとして、線分及び/又は円弧で近似した形状を使用したが、このような形状に限られず、始点や終点の座標位置や角度、長さなどの数値で規定した配列データを使用したパターンモデルを利用することも可能であることはいうまでもない。
また本明細書においては、ピラミッドサーチにおける粗サーチと精密位置決めのいずれか又は両方に利用する例を説明したが、本技術の適用範囲はピラミッドサーチやその他のコース・トゥ・ファイン型のパターンサーチに限定されるものでなく、広くすべての種類のサーチにおいて適用できる。
さらに本明細書において、近傍排除処理とは、近接する位置、似た姿勢にある検出候補に対して一のみ残して他を排除する処理の他、排除しないまでも類似するものであることを判別する指標(例えばフラグや、類似度を示すスコア値)を付す処理も含める意味で使用する。
。