(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0021】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0022】
<A.システム構成>
図1は、本発明の実施の形態に係る画像処理装置100を含む視覚センサシステム1の全体構成を示す概略図である。
【0023】
図1を参照して、視覚センサシステム1は生産ラインなどに組み込まれ、ワーク2に対して、予め登録されているモデル(但し、後述するように「エッジコード画像」が用いられる)を用いてパターンマッチング処理を実行する。
【0024】
視覚センサシステム1においては、ワーク2はベルトコンベヤなどの搬送機構6によって搬送され、搬送されたワーク2は、撮像装置8によって所定タイミングで撮像される。撮像装置8は、一例として、レンズなどの光学系に加えて、CCD(Coupled Charged Device)やCMOS(Complementary Metal Oxide Semiconductor)センサといった、複数の画素に区画された撮像素子を含んで構成される。なお、撮像装置8で撮像されるワーク2に対して光を照射する照明機構をさらに設けてもよい。
【0025】
撮像装置8の撮像によって得られる画像(以下、「入力画像」とも称す。)は、画像処理装置100へ伝送される。画像処理装置100は、この撮像装置8から受けた入力画像に対してパターンマッチング処理を実行し、その結果を接続されたディスプレイ102で表示したり、その結果を外部装置へ出力したりする。
【0026】
ワーク2が撮像装置8の視野内に到達したことは、搬送機構6の両端に配置された光電センサ4によって検出される。具体的には、光電センサ4は、同一の光軸上に配置された受光部4aと投光部4bとを含み、投光部4bから放射される光がワーク2で遮蔽されることを受光部4aで検出することによって、ワーク2の到達を検出する。この光電センサ4のトリガ信号は、PLC(Programmable Logic Controller)5へ出力される。
【0027】
PLC5は、光電センサ4などからのトリガ信号を受信するとともに、搬送機構6の制御自体を司る。
【0028】
画像処理装置100は、ワーク2に対して各種の画像処理を実行する計測モードと、後述するモデル登録処理などを行うための設定モードとを有している。これらのモードは、ユーザがマウス104などを操作することで切替えられる。
【0029】
画像処理装置100は、典型的には、汎用的なアーキテクチャを有しているコンピュータであり、予めインストールされたプログラム(命令コード)を実行することで、後述するような各種機能を提供する。このようなプログラムは、典型的には、メモリカード106などに格納された状態で流通する。
【0030】
このような汎用的なコンピュータを利用する場合には、本実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのOS(Operating System)がインストールされていてもよい。この場合には、本実施の形態に係るプログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。すなわち、本実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、OSと協働して処理が実行されてもよい。本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【0031】
さらに、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。なお、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【0032】
図2は、本発明の実施の形態に係る画像処理装置100の概略構成図である。
図2を参照して、画像処理装置100は、演算処理部であるCPU(Central Processing Unit)
110と、記憶部としてのメインメモリ112およびハードディスク114と、カメラインターフェイス116と、入力インターフェイス118と、表示コントローラ120と、PLCインターフェイス122と、通信インターフェイス124と、データリーダ/ライタ126とを含む。これらの各部は、バス128を介して、互いにデータ通信可能に接続
される。
【0033】
CPU110は、ハードディスク114に格納されたプログラム(コード)をメインメモリ112に展開して、これらを所定順序で実行することで、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置であり、ハードディスク114から読み出されたプログラムに加えて、撮像装置8によって取得された画像データ、ワークデータ、モデルに関する情報などを保持する。さらに、ハードディスク114には、各種設定値などが格納されてもよい。なお、ハードディスク114に加えて、あるいは、ハードディスク114に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【0034】
カメラインターフェイス116は、CPU110と撮像装置8との間のデータ伝送を仲介する。すなわち、カメラインターフェイス116は、ワーク2を撮像して画像データを生成するための撮像装置8と接続される。より具体的には、カメラインターフェイス116は、1つ以上の撮像装置8と接続が可能であり、撮像装置8からの画像データを一時的に蓄積するための画像バッファ116aを含む。そして、カメラインターフェイス116は、画像バッファ116aに所定コマ数の画像データが蓄積されると、その蓄積されたデータをメインメモリ112へ転送する。また、カメラインターフェイス116は、CPU110が発生した内部コマンドに従って、撮像装置8に対して撮像コマンドを与える。
【0035】
入力インターフェイス118は、CPU110とマウス104、キーボード、タッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェイス118は、ユーザが入力部を操作することで与えられる操作指令を受付ける。
【0036】
表示コントローラ120は、表示装置の典型例であるディスプレイ102と接続され、CPU110における画像処理の結果などをユーザに通知する。すなわち、表示コントローラ120は、ディスプレイ102に接続され、当該ディスプレイ102での表示を制御する。
【0037】
PLCインターフェイス122は、CPU110とPLC5との間のデータ伝送を仲介する。より具体的には、PLCインターフェイス122は、PLC5によって制御される生産ラインの状態に係る情報やワークに係る情報などをCPU110へ伝送する。
【0038】
通信インターフェイス124は、CPU110とコンソール(あるいは、パーソナルコンピュータやサーバ装置)などとの間のデータ伝送を仲介する。通信インターフェイス124は、典型的には、イーサネット(登録商標)やUSB(Universal Serial Bus)などからなる。なお、後述するように、メモリカード106に格納されたプログラムを画像処理装置100にインストールする形態に代えて、通信インターフェイス124を介して、配信サーバなどからダウンロードしたプログラムを画像処理装置100にインストールしてもよい。
【0039】
データリーダ/ライタ126は、CPU110と記録媒体であるメモリカード106との間のデータ伝送を仲介する。すなわち、メモリカード106には、画像処理装置100で実行されるプログラムなどが格納された状態で流通し、データリーダ/ライタ126は、このメモリカード106からプログラムを読出す。また、データリーダ/ライタ126は、CPU110の内部指令に応答して、撮像装置8によって取得された画像データおよび/または画像処理装置100における処理結果などをメモリカード106へ書込む。なお、メモリカード106は、CF(Compact Flash)、SD(Secure Digital)などの汎用的な半導体記憶デバイスや、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体や、CD−ROM(Compact Disk Read Only Memory)などの光学記憶媒体等からなる。
【0040】
また、画像処理装置100には、必要に応じて、プリンタなどの他の出力装置が接続されてもよい。
【0041】
<B.モデル登録処理>
図3は、モデル登録処理における処理の流れを説明するためのフローチャートである。つまり、
図3は、モデルを生成するための処理の流れを表したフローチャートである。
【0042】
図3を参照して、ステップS2において、画像処理装置100のCPU110は、基準とすべきワーク2を撮像装置8によって撮像することにより得られたモデル画像を取得する。ステップS4において、CPU110は、モデル画像からエッジの抽出を行ない、エッジ抽出画像を生成する。すなわち、CPU110は、モデル画像の全ての画素に対して、公知のフィルタ処理によってエッジの強度を算出し、当該エッジ強度が既定の閾値を越えた画素をエッジ点として抽出する。また、CPU110は、抽出した全てのエッジ点に対して、特許文献1に示される方法によってエッジの変化方向を示すエッジコードを算出する。
【0043】
本実施の形態においては、エッジの変化方向を示す値の一例として、エッジの接線方向
がエッジコード(エッジ方向/エッジ角度)として算出される。
図19は、本発明の実施の形態に係るエッジコードおよびエッジコード画像の算出処理を説明するための図である。特に、
図19(a)には、各エッジ点におけるエッジコードを算出する方法を示し、
図19(b)には、エッジコード画像のデータ構造の一例を示す。
【0044】
図19(a)に示すような画像に対して、B方向に走査してエッジ抽出処理を行った場合を考える。なお、エッジ抽出処理では、B方向に存在する各画素について、当該画素の濃淡値およびその周辺の画素の濃淡値に基づいてエッジ強度を検出し、B方向に対するエッジ強度のプロファイルにおける極大値がエッジとして抽出される。
【0045】
図19(a)に示す例では、エッジEDGの一部として座標位置E(x,y)をもつエッジ点が抽出される。そして、抽出された座標位置E(x,y)の周辺画素の濃淡値などに基づいて、いずれの方向にエッジEDGが続いているのかが判断される。概略すれば、エッジEDGを構成する座標位置E(x,y)のエッジ点における接線ベクトルCが算出される。この接線ベクトルCと基準ベクトル(
図19(a)に示す例では、B方向)とのなす角度Ec(x,y)をエッジコードとして算出する。なお、この角度Ec(x,y)は、0°〜360°(あるいは、−180°〜180°)を有効範囲として定義してもよいし、0°〜180°を有効範囲として定義してもよい。後者の場合には、接線ベクトルCと基準ベクトルとのなす角度差の絶対値となる。
【0046】
なお、代替の方法として、抽出されたエッジにおける濃淡の変化方向をエッジコードと
して算出してもよい。この場合には、
図19(a)に示す接線ベクトルCと直交する方向がエッジコードとなる。
【0047】
ステップS6において、CPU110は、抽出したエッジを細線化し、細線化エッジ画像を生成する。詳しくは、CPU110は、抽出した全てのエッジに対して、当該エッジの両隣のエッジよりも強度が強いエッジのみが残るようにエッジ抽出画像を細線化することにより、細線化エッジ画像を生成する。
【0048】
ステップS8において、CUP110は、細線化処理されたエッジの連結を行なう。具体的には、CPU110は、隣接するエッジのうち、エッジの変化方向の角度差が一定値以内のエッジを連結することにより、エッジをグループ化する。
【0049】
ステップS10において、CPU110は、連結されたエッジに対してノイズ除去処理を行なうことにより、ノイズ除去後のエッジ画像を生成する。具体的には、CPU110は、連結することにより得られた複数のグループのうち、構成するエッジの数が5個未満のグループを除去することにより、ノイズ除去後のエッジ画像を生成する。
【0050】
ステップS12において、CPU110は、ノイズ除去後のエッジ画像について、サンプリング処理を行なう。具体的には、CPU110は、除去されなかった複数のグループに対して、等間隔にモデル点を配置することにより、モデルを生成する。
【0051】
生成されたモデルは、少なくとも、抽出されたエッジ上の複数の位置と、各当該位置におけるエッジの変化方向とにより規定される。一例として、モデルは、少なくとも、抽出されたエッジ上の点を等間隔にサンプリングすることにより得られた複数のサンプリング点(サンプリング位置)と、各サンプリング点におけるエッジの変化方向とにより規定される。なお、生成されたモデルは、メインメモリ112に格納される。
【0052】
図4は、モデル登録処理における各処理により生成される画像を表した図である。以下、
図4に示した各画像A〜Eについて、
図3における各ステップと対応付けて説明する。
【0053】
図4を参照して、画像Aは、ワーク2を撮像することにより得られたモデル画像310を表している。つまり、画像Aは、
図3におけるステップS2の処理により得られる画像を表している。モデル画像310は、ワーク2の表面に描かれた十字状のマークに対応する領域311を含む。画像Bは、エッジ抽出画像320を説明するための画像である。つまり、画像Bは、
図3におけるステップS4の処理により得られる画像を表している。エッジ抽出画像320は、エッジ点の集合であるエッジ領域321を含む。
【0054】
画像Cは、細線化エッジ画像330を表している。つまり、画像Cは、
図3におけるステップS6の処理を行なった後に得られる画像を表している。画像Dは、ノイズ除去後のエッジ画像340を説明するための画像である。つまり、画像Dは、
図3におけるステップS10の処理により得られる画像を表している。
【0055】
画像Eは、モデル画像310に基づいて生成されたモデル350を説明するための画像である。つまり、画像Eは、
図3におけるステップS12の処理により得られるデータを模式的に表している。モデル350は、複数のサンプリング点351を含む。なお、説明の便宜上、複数のサンプリング点351のうちの一部の4つのサンプリング点を、それぞれサンプリング点351a,351b、351c、351dと称する。
【0056】
<C.計測処理>
パターンマッチング処理では、一致度のみならず、不一致度、相違度、または距離といった概念で、類似の度合(類似度)を計算する場合がある。以下では、類似度の一例として、一致度を用いた構成について説明する。なお、一致度とは、比較対象となる2つのものが、どの程度、くい違いがないかを表した度合いである。
【0057】
画像処理装置100は、モデル登録の処理を終了した後に、登録されたモデルと一致する領域を計測対象となるワークの画像(入力画像)において特定する処理を行なう。
【0058】
(c1.処理全体の流れ)
図5は、計測処理全体の流れを説明するためのフローチャートである。
図5を参照して、ステップS102において、CPU110は、計測対象のワークを撮像装置8により撮像することにより得られた画像(入力画像)を取得する。ステップS104において、CPU110は、入力画像からエッジの抽出を行ない、エッジ抽出画像を生成する。また生成したエッジ抽出画像における各エッジ点のエッジコードを算出する。ステップS106において、CPU110は、モデルと一致する領域を入力画像から探索(サーチ)することにより、モデルと一致する領域を入力画像において特定する。
【0059】
ステップS108において、CPU110は、探索結果に基づいて、モデルと入力画像との一致度を算出する。ステップS110において、CPU110は、探索処理に基づく結果をディスプレイ102に出力する。ステップS106の探索処理の詳細については、後述する(
図7)。
【0060】
なお、計測対象のワーク2を撮像することにより得られた入力画像に対しては、細線化処理およびノイズ除去を行なわない。
【0061】
図6は、計測処理における処理により生成される画像を表した図である。以下、
図6に示した各画像A〜Cについて、
図5におけるステップと対応付けて説明する。
【0062】
図6を参照して、画像Aは、計測対象のワーク2を撮像することにより得られた入力画像510を表した画像である。つまり、画像Aは、
図5におけるステップS102の処理により得られる画像を表している。入力画像510は、ワーク2の表面に描かれた十字状のマークに対応する画像511を含む。また、画像Bは、計測対象のワーク2のエッジ抽出画像520を説明するための画像である。つまり、画像Bは、
図5におけるステップS104の処理により得られた画像を表している。エッジ抽出画像520は、エッジ点の集合であるエッジ領域521を含む。
【0063】
(c2.探索処理)
図7は、
図5のステップS106における探索処理における処理の流れを説明するためのフローチャートである。
図7を参照して、ステップS602において、CPU110は、サンプリング点351に対応する対応点が、入力画像510において抽出されたエッジ抽出領域521に属するか否かを、サンプリング点351毎に判定する。なお、対応点については、後述する(
図8)。
【0064】
ステップS606において、CPU110は、サンプリング点351におけるエッジコードと、当該サンプリング点351に対応するエッジ抽出画像520上の対応点におけるエッジコードとの角度差を、当該対応点毎に算出する。
【0065】
ステップS608において、CPU110は、予め選択されたデータと上記算出された角度差とに基づき、サンプリング点351と当該サンプリング点351に対応する対応点との一致度(部分一致度)を算出する。ステップS610において、CPU110は、複数の対応点における上記算出された一致度に基づき、モデル350と一致する部分を入力画像510(正確には、エッジ抽出画像520)において特定する。
【0066】
図8は、サンプリング点と、対応点と、エッジの変化方法と、角度差とを説明するための図である。
図8を参照して、(a)は、モデル350を模式的に表している。上述したように、モデル350は、少なくとも、複数のサンプリング点351と、各サンプリング点におけるエッジコードとにより規定される。また、
図8(a)における各矢印は、各サンプリング点におけるエッジコードを表している。
【0067】
図8(b)は、エッジ抽出画像520上のエッジ領域521における対応点と、当該対応点におけるエッジの変化方向とを表した図である。複数の対応点のうちの対応点551aは、複数のサンプリング点351のうちのサンプリング点351aに対応する点である。同様に、対応点551bは、サンプリング点351bに対応する点である。対応点551cは、サンプリング点351cに対応する点である。サンプリング点351dに対応するエッジ点は存在しない。
【0068】
また、画像Bにおける各矢印は、対応点におけるエッジの変化方向を表している。
CPU110は、上述したように、サンプリング点351におけるエッジの変化方向と、当該サンプリング点に対応する対応点におけるエッジの変化方向との角度差を算出する。CPU110は、具体例を挙げれば、サンプリング点351aにおけるエッジの変化方向と、サンプリング点351aに対応する対応点551aにおけるエッジの変化方向との角度差を算出する。なお、CPU110は、対応点がエッジ領域に属しているサンプリング点351に対してのみ、上記角度差を算出する。
【0069】
図9は、CPU110が、一致度を算出するときに利用するデータD9を表した図である。つまり、
図9は、
図7のステップS608の部分一致度算出処理に利用するデータを表した図である。
【0070】
図9を参照して、データD9では、3つの歪み許容レベル(高,中,低)の各々と、角度差(具体的には角度差の範囲)とに対して、1つのサンプリング点351と1つの対応点との一致度を表すスコアが対応付けられている。詳しくは、データD9は、複数のデータD91,D92,D93を含んで構成されている。複数のデータD91,D92,D93の各々は、2つのエッジの変化方向の相違を表す情報と当該2つのエッジの類似度とが関連付けられている。
【0071】
たとえば、歪み許容レベルが「高」を表すデータD91は、2つのエッジの変化方向の角度差が大きくなるほど当該2つのエッジの一致度が小さくなるように角度差と一致度とが関連付けられている。
【0072】
また、歪み許容レベルが「中」を表すデータD92は、2つのエッジの変化方向の角度差が大きくなるほど当該2つのエッジの一致度が小さくなるとともに、角度差に対する一致度の関連付けがデータD91とは異なる。より詳しくは、データD92においては、複数の範囲(10°以上20°未満,20°以上30°未満,30°以上40°未満,40°以上60°未満)において、スコアがデータD91のスコアよりも小さく設定されている。つまり、データD92は、データD91よりも対象物の局所的な形状変化に対する許容度合いを厳しくすることを表している。
【0073】
また、歪み許容レベルが「低」を表すデータD93は、2つのエッジの変化方向の角度差が大きくなるほど当該2つのエッジの一致度が小さくなるとともに、角度差に対する一致度の関連付けがデータD91,D92とは異なる。より詳しくは、データD93においては、複数の範囲(10°以上20°未満,20°以上30°未満,30°以上40°未満,40°以上60°未満)において、スコアがデータD91,92のスコアよりも小さく設定されている。つまり、データD93は、データD92よりも対象物の局所的な形状変化に対する許容度合いを厳しくすることを表している。
【0074】
なお、
図9に示したデータD9は一例であって、データの形式および一致度を表すスコアの値は、これに限定されるものではない。たとえば、データD9のように角度差と対応付けられたスコアを予め記憶しておくのではなく、角度差の閾値の入力を受け付け、計測されたエッジコードとモデルのエッジコードとの角度差がその閾値未満のときのみ、スコアを1として計測対象全体の一致度にインクリメントしていくような構成でもよい。
【0075】
また、予め定められた計算式を用いてデータD9(D91,D92,D93)を生成するように、画像処理装置100を構成してもよい。この場合には、画像処理装置100は、データD9の代わりに当該計算式を予め記憶しておけばよい。
【0076】
また、画像処理装置100のCPU110は、ユーザからの指示に基づき、データD91,D92,D93のうちの1つのデータを読み出し、当該読み出したデータを以下の2つの一致度の算出に利用する。
【0077】
(I)エッジの変化方向の一致度
CPU110は、閾値Th1(たとえば、スコア=50)以上となる、サンプリング点351と当該サンプリング点に対応する対応点とについては、サンプリング点351のエッジの変化方向と当該サンプリング点に対応する対応点のエッジの変化方向とが一致しているものとして取り扱う。
【0078】
たとえば、サンプリング点351のエッジの変化方向と当該サンプリング点に対応する対応点のエッジの変化方向との角度差が25°である場合、歪み許容レベル“高”がユーザによって選択された場合、スコアが50となる。よって、閾値Th1以上となり、両点のエッジの変化方向とが一致しているものと判定される。一方、角度差が25°である場合、歪み許容レベル“中”がユーザによって選択された場合、スコアが40となる。よって、閾値Th1未満となり、両点のエッジの変化方向とが一致していないと判定される。このように、角度差が同じであっても、使用されるデータにより判定結果が異なることになる。
【0079】
画像処理装置100は、サンプリング点351のエッジの変化方向と当該サンプリング点に対応する対応点のエッジの変化方向との角度差に基づくスコアが閾値Th1以上となるとき、サンプリング点351と当該サンプリング点351に対応する対応点とが一致していると判定する。つまり、このような場合、画像処理装置100は、サンプリング点351の近傍(サンプリング点を含む局所的な線分)では、モデル(モデル画像)と入力画像とが一致していると判定する。また、詳細については後述するが、CPU110は、エッジの変化方向が一致しているか否かに応じて、計測結果を表す画像の表示態様を変化させる。なお、ここで一致と判定されるのは方向に関してである。
【0080】
(II)計測対象全体の一致度
CPU110は、上記スコアを用いて、計測対象全体の一致度をさらに計算する。CPU110は、サンプリング点351毎に、選択された歪み許容レベルのデータD9を利用して、スコアを求める。CPU110は、さらに、スコアの平均値を算出する。なお、サンプリング点351に対応する対応点が、入力画像510において抽出されたエッジ抽出領域521に属しない場合には、当該サンプリング点351については、スコアを0とする。
【0081】
CPU110は、上記平均値が予め定められた閾値Th2(たとえば、90)以上の場合、モデルと計測対象であるワーク2とが一致していると判断する。一方、CPU110は、上記平均値が閾値Th2(たとえば、90)未満の場合、モデルと計測対象であるワーク2とが一致していないと判断する。一例を挙げて説明すれば、以下のとおりである。なお、画像処理装置100は、計測対象全体の一致度としてスコアの平均値を用いている。
【0082】
サンプリング点の数を100個、対応点の数を96個とする。また、角度差が0°以上10°未満のデータが60個、角度差が10°以上20°未満のデータが30個、角度差が20°以上30°未満のデータが6個であったとする。この場合、歪み許容レベル“高”が選択されると、平均値は、(100×60+90×30+50×6+0×(100−96))÷100=90となる。また、歪み許容レベル“中”が選択されると、平均値は、(100×60+70×30+40×6+0×(100−96))÷100=83.4となる。
【0083】
したがって、歪み許容レベル“高”が選択された場合には、CPU110は、モデルと計測対象であるワーク2とが一致していると判断する。一方、歪み許容レベル“中”が選択された場合には、CPU110は、モデルと計測対象であるワーク2とが一致していないと判断する。
【0084】
(c3.表示処理)
図10は、モデル画像310と入力画像510との相違を説明するための図である。
図10を参照して、画像Aは、ワーク2を撮像することにより得られたモデル画像310と、
図4のエッジ画像340におけるエッジ部分3401とを表している。画像Bは、計測対象のワーク2を撮像することにより得られた入力画像510を表している。画像Aに比べると、画像Bでは、領域P1においてワークが歪んでいる。また、領域P2においてワークが一部の欠損している。
【0085】
このような場合に、画像処理装置100がディスプレイ102に表示させる画像について、以下説明する。なお、ディスプレイ102に実際に表示されるユーザインターフェイスについては、後述する(
図14〜
図18)。
【0086】
図11は、入力画像510においてモデル350と一致する部分と一致しない部分とを説明するための図である。具体的には、
図11は、ユーザによって、
図9に基づいて説明した歪み許容レベル“低”が選択された場合の画像を表している。
【0087】
図11を参照して、画像処理装置100は、ワーク2に対応する画像511を含む入力画像510に、隣接する対応点を同士を結んだ線分により構成される線画像540を重ねた画像1100をディスプレイ102に表示する。画像処理装置100は、線画像540を表示させる際、モデル350と一致する箇所と、モデル350と一致しない箇所とを、互いに異なる態様でディスプレイ102に表示させる。より正確には、画像処理装置100は、線画像540を表示させる際、サンプリング点351と一致する対応点同士(隣接対応点同士)を結んだ線分と、サンプリング点351と一致しない対応点同士(隣接対応点同士)を結んだ線分とを、互いに異なる態様でディスプレイ102に表示させる。
【0088】
また、画像処理装置100は、モデル350と一致しない箇所については、エッジ領域に属していない箇所(つまり、エッジ領域に属していない対応点同士を結んだ線分)と、エッジ領域に属している箇所(つまり、エッジ領域に属している対応点同士を結んだ線分)とを、さらに互いに異なる態様でディスプレイ102に表示させる。
【0089】
一例として、画像処理装置100は、線画像540における、モデル350と一致する箇所と、モデル350と一致しない箇所541〜545とを、互いに異なる色でディスプレイ102に表示させる。また、画像処理装置100は、モデル350と一致しない箇所541〜545については、対応点がエッジ領域に属していない箇所541,542と、対応点がエッジ領域に属している箇所543,544,545とを、さらに互いに異なる色でディスプレイ102に表示させる。
【0090】
具体例を挙げれば、画像処理装置100は、モデル350と一致する箇所を第1の色(たとえば緑色)で表示し、対応点がエッジ領域に属していない箇所541,542を第2の色(たとえば赤色)で表示し、対応点がエッジ領域に属している箇所543,544,545を第3の色(たとえば黄色)で表示する。なお、枠900は、計測対象とする領域を表した線である。
【0091】
図12は、入力画像510においてモデル350と一致する部分と一致しない部分とを説明するための図である。具体的には、
図12は、ユーザによって、
図9に基づいて説明した歪み許容レベル“高”が選択された場合の画像を表している。
【0092】
図12を参照して、画像処理装置100は、ワーク2に対応する画像511を含む入力画像510に線画像540を重ねた画像1200をディスプレイ102に表示する。その際、画像処理装置100は、
図11でも説明したとおり、入力画像510における、モデル350と一致する箇所と、モデル350と一致しない箇所とを、互いに異なる態様でディスプレイ102に表示させる。また、画像処理装置100は、モデル350と一致しない箇所については、対応点がエッジ領域に属していない箇所と、対応点がエッジ領域に属している箇所とを、さらに互いに異なる態様でディスプレイ102に表示させる。
【0093】
一例として、画像処理装置100は、線画像540における、モデル350と一致する箇所と、モデル350と一致しない箇所542とを、互いに異なる色でディスプレイ102に表示させる。また、画像処理装置100は、モデル350と一致しない箇所については、対応点がエッジ領域に属していない箇所542と、対応点がエッジ領域に属している箇所とを、さらに互いに異なる色でディスプレイ102に表示させる。
【0094】
具体例を挙げれば、画像処理装置100は、モデル350と一致する箇所を第1の色(たとえば緑色)で表示し、対応点がエッジ領域に属していない箇所542を第2の色(たとえば赤色)で表示する。
図12においては、歪み許容レベル“高”が選択されているため、モデル350と一致しない箇所のうち、対応点がエッジ領域に属している箇所は存在していない。つまり、
図12においては、
図11において第3の色(たとえば黄色)で示した表示がなされないことになる。
【0095】
このように、サンプリング点351に対応する対応点がエッジ領域に属している場合、画像処理装置100は、当該サンプリング点351におけるエッジの変化方向と当該対応点におけるエッジの変化方向とが一致しているか否かに応じて、計測結果を表す画像の表示態様を変化させる。つまり、画像処理装置100は、一例として、対応点がエッジ領域に属していることを条件に、エッジの変化方向が一致している箇所を緑色で表示し、エッジ方向が一致していない箇所を黄色で表示する。さらに、画像処理装置100は、対応点がエッジ領域に属していない箇所を赤色で表示する。
【0096】
<D.機能的構成>
図13は、画像処理装置100の機能的構成を説明するためのブロック図である。
図13を参照して、画像処理装置100は、制御部1010と、記憶部1020とを備える。制御部1010は、受付部1101と、角度差算出部1105と、一致度算出部1106と、部分判定部1107と、全体判定部1108と、表示制御部1109とを備える。エッジ抽出部1102は、位置判定部1103と、方向算出部1104とを備える。
【0097】
記憶部1020には、モデルと、データD9と、閾値Th1、閾値Th2とが予め格納されている。
【0098】
受付部1101は、エッジの変化方向の許容値に関する指示を受け付ける。受付部1101は、典型的には、3つの歪み許容レベルの中から、1つの歪み許容レベルを選択するための指令をマウス104等の入力装置を介して受け付ける。つまり、データD91、データD92、およびデータD93のうちのいずれかを指定するための指示を受け付ける。さらに、受付部1101は、ディスプレイ102に表示させるユーザインターフェイスを選択するための指示をユーザから受け付ける。当該指示は、表示制御部1109に送られる。
【0099】
エッジ抽出部1102は、入力画像510のエッジを抽出する。より具体的には、入力画像510に含まれる、ワーク2に対応する画像511のエッジを抽出する。また、エッジの抽出の一環として、位置判定部1103が、サンプリング点351に対応する対応点が上記抽出されたエッジ領域に属するか否かをサンプリング点351毎に判定し、方向算出部1104が上記対応点におけるエッジの変化方向を算出する。
【0100】
角度差算出部1105は、サンプリング点351におけるエッジの変化方向と、当該サンプリング点351に対応する対応点におけるエッジの変化方向との角度差を、対応点毎に算出する。
【0101】
一致度算出部1106は、選択されたデータ(たとえば、データD91)と、サンプリング点351におけるエッジの変化方向と、当該サンプリング点351に対応する対応点におけるエッジの変化方向とに基づき、サンプリング点351当該サンプリング点351に対応する対応点との一致度(部分一致度)を算出する。具体的には、一致度算出部1106は、選択されたデータ(たとえば、データD91)と上記算出された角度差とに基づき、サンプリング点351と当該サンプリング点351に対応する対応点との一致度を示すスコアを算出する。一致度算出部1106は、算出されたスコアを、部分判定部1107と全体判定部1108とに送る。
【0102】
部分判定1107は、サンプリング点351と当該サンプリング点351に対応する対応点との一致度に基づき、当該サンプリング点351と当該対応点とが一致するか否かを判定する。詳しくは、部分判定部1107は、複数の対応点における上記算出されたスコア(一致度)および閾値Th1に基づき、サンプリング点351と、当該サンプリング点351に対応する対応点とが一致するか否かを判定する。より詳しくは、部分判定部1107は、対応する対応点が入力画像510のエッジ領域に属しているサンプリング点351と、当該サンプリング点に対応する対応点とが一致するか否かを判定する。
【0103】
具体的には、上記算出されたスコアが閾値Th1以上の場合には、部分判定部1107は、サンプリング点351と、当該サンプリング点351に対応する対応点とが一致していると判定する。また、上記算出されたスコアが閾値Th1未満の場合には、部分判定部1107は、サンプリング点351と、当該サンプリング点351に対応する対応点とが一致していないと判定する。
【0104】
全体判定部1108は、複数の対応点における算出されたスコアに基づき、入力画像510における特定の領域(つまり、入力画像510における、パターンマッチング処理の対象とした一部の領域(典型的には、抽出した矩形領域))がモデル350と一致するか否かを判定する。具体的には、判定部1108は、複数の対応点における算出された一致度と、閾値Th2とに基づき、入力画像510における特定の領域がモデル350と一致するか否かを判定する。より具体的には、全体判定部1108は、複数の対応点における上記算出されたスコアの平均値(計測対象全体の一致度)と、閾値Th2とに基づき、入力画像510がモデル350と一致するか否かを判定する。つまり、全体判定部1108は、計測対象であるワーク2の良否を判定する。なお、良否判定の手法は、上述したので、ここでは、繰り返し説明しない。
【0105】
表示制御部1109は、複数の対応点のうち、サンプリング点351に一致する対応点(以下、「一致点」とも称する)と当該サンプリング点351に一致しない対応点(以下、「不一致点」とも称する)とを、互いに異なる表示態様で、入力画像510に対応付けてディスプレイ102に表示させる。たとえば、表示制御部1109は、不一致点と一致点とを、互いに異なる色でディスプレイ102に表示させる。なお、ここでの不一致点は、エッジ領域に属しないと判定された対応点と、エッジ領域に属すると判定されたが上記算出されたスコアが閾値Th1未満となった対応点とを含む。より詳しくは、表示制御部1109は、エッジ領域に属すると判定された複数の対応点のうち、サンプリング点351に一致する対応点と当該サンプリング点351に一致しない対応点とを、互いに異なる表示態様で、入力画像510に対応付けてディスプレイ102に表示させる。
【0106】
また、表示制御部1109は、対応点を、入力画像510のエッジ領域に属する場合と属さない場合とで異なる表示態様となるようにディスプレイ102に表示させる。たとえば、表示制御部1109は、エッジ領域に属する対応点と、エッジ領域に属さない対応点とを、互いに異なる色でディスプレイ102に表示させる。
【0107】
つまり、表示制御部1109は、複数の対応点のうち、(i)一致点(入力画像510のエッジ領域に属し、かつエッジの変化方向が一致している(スコアが閾値Th1以上)の対応点)と、(ii)不一致点のうち、入力画像510のエッジ領域に属しない対応点と、(iii)不一致点のうち、入力画像510のエッジ領域に属する一方で、エッジの変化方向が一致しない(スコアが閾値Th1未満)の対応点とを、互いに異なる表示態様(たとえば、異なる色)でディスプレイ102に表示させる。
【0108】
さらに、表示制御部1109は、
図11および
図12に示したとおり、入力画像510を表示している状態において、互いに隣接する対応点同士を結んだ線分により構成される線画像540を表示する。
【0109】
このように、表示制御部1109は、対応点の近傍の表示態様を、当該対応点の表示態様に応じた表示態様に設定する。たとえば、表示制御部1109は、上記一致点およびその近傍を、第1の色(たとえば緑色)でディスプレイ102に表示させる。また、表示制御部1109は、上記不一致点のうち、入力画像510のエッジ領域に属しない対応点、および当該対応点の近傍を、第2の色(たとえば赤色)で表示する。さらに、表示制御部1109は、不一致点のうち、入力画像510のエッジ領域に属するが、エッジの変化方向が一致しない対応点、および当該対応点の近傍を第3の色(たとえば黄色)で表示する。
【0110】
また、表示制御部1109は、全体判定部1108による良否判定結果等の各種の情報をディスプレイ102に表示させる(
図14〜
図18)。
【0111】
<E.ユーザインターフェイス>
画像処理装置100がディスプレイ102に表示させるユーザインターフェイスについて、
図14〜
図18に基づいて説明する。
【0112】
(e1.設定モード)
図14は、画像処理装置100が設定モードにおいて提供するユーザインターフェイス画面の一例を示す図である。
図14は、ユーザがパターンマッチング処理に必要な各種設定値(計測条件)を設定する際のユーザインターフェイス画面1400を示す。
【0113】
図14に示すユーザインターフェイス画面1400では、モデル登録タブ202と、領域設定タブ206と、検出点タブ208と、基準設定タブ210と、計測パラメータタブ212と、出力パラメータタブ214とが選択可能に表示される。なお、
図14に示すユーザインターフェイス画面1400においては、計測パラメータタブ212が選択されている状態を示す。また、ユーザインターフェイス画面1400は、計測条件設定エリア260と、判定条件設定エリア270と、画像表示エリア250と、全体表示エリア252とを含む。
【0114】
計測条件設定エリア260は、エッジ抽出処理を行なう際のエッジレベル(エッジ強度)の設定ボックスと、歪み許容レベルを設定するための設定ボックスとを含む。エッジレベルを変更することにより、エッジの領域が変更される。具体的には、エッジレベルを高くすることにより、エッジ抽出画像320におけるエッジ幅は細くなる。エッジレベルを低くすることにより、エッジ抽出画像320におけるエッジ幅は太くなる。なお、エッジレベルを高くすることは、エッジ強度の閾値を高くすることを意味する。
【0115】
歪み許容レベルをユーザが変更することにより、
図9に示したデータD9に含まれるデータD91,D92,D93のうち、どのデータを利用するかが決定される。たとえば、歪み許容レベル“低”が選択された場合、データD93が利用されることになる。
【0116】
判定条件設定エリア270では、本実施の形態に係るパターンマッチング処理により得られる計測結果のうち有効とされるものを設定するための判定条件を受付ける。
【0117】
すなわち、計測座標Xの数値入力ボックスに入力される数値範囲(座標範囲)は、計測座標のx成分についての判定条件として用いられる。また、計測座標Yの数値入力ボックスに入力される数値範囲(座標範囲)は、計測座標のy成分についての判定条件として用いられる。また、計測角度の数値入力ボックスに入力される数値範囲(角度範囲)は、計測結果の角度成分についての判定条件として用いられる。
【0118】
さらに、相関値の数値入力ボックスに入力される数値範囲は、各計測座標における相関値の判定条件として用いられる。また、検出数の数値入力ボックスに入力される数値範囲は、1回のパターンマッチング処理の実行により出力される最大の検出数の条件として用いられる。
【0119】
なお、
図14に示すユーザインターフェイス画面1400においては、画像表示エリア250にエッジ抽出画像320が表示される。なお、画像表示エリア250に表示される画像は、エッジ抽出画像320に限定されるものではない。また、全体表示エリア252には、画像表示エリア250において表示可能な画像の全体が表示される。
【0120】
(e2.計測モード)
(I)歪み許容レベル“低”の場合のユーザインターフェイス
図15は、画像処理装置100が計測モードにおいて提供するユーザインターフェイス画面の一例を示す図である。具体的には、
図15は、歪み許容レベルが“低”に設定された場合のユーザインターフェイス画面1500を表した図である。
【0121】
図15を参照して、ユーザインターフェイス画面1500では、撮像装置8の視野内に複数のワークが存在する場合に生成する画像データに対して、上述したようなパターンマッチング処理を行うことで得られた計測結果を示す。
【0122】
画像処理装置100は、入力画像に対して、予め登録されているモデルに基づくパターンマッチング処理を行うと、
図11の画像1100を画像表示エリア1501に表示させる。また、画像処理装置100は、計測結果を示す数値をディスプレイに102に表示させる(符号1502)。さらに、画像処理装置100は、計測結果に基づくワーク2の良否判定結果(OKまたはNGの表示)を、画面右上の領域にも表示する。
図15の例では、相関値が閾値Th2(=90)以上であるため、“OK”の表示がなされている。
【0123】
図16は、
図15からの遷移した後のユーザインターフェイス画面の一例を示す図である。具体的には、
図16は、
図15の状態において、ユーザ操作に基づき、画面右下のサブ画像番号において「画像3」が選択された後のユーザインターフェイス画面1600を表している。
【0124】
画像3が選択されると、画像処理装置100は、画像1100に対して計測対象のワーク2のエッジ抽出画像520(
図6の画像B)をオーバラップさせたユーザインターフェイス画面1600をディスプレイ102に表示させる。
【0125】
(II)歪み許容レベル“高”の場合のユーザインターフェイス
図17は、画像処理装置100が計測モードにおいて提供するユーザインターフェイス画面の他の例を示す図である。具体的には、
図17は、歪み許容レベルが“高”に設定された場合のユーザインターフェイス画面1700を表した図である。
【0126】
図17を参照して、ユーザインターフェイス画面1700では、
図15のユーザインターフェイス画面1500と同様に、撮像装置8の視野内に複数のワークが存在する場合に生成する画像データに対して、上述したようなパターンマッチング処理を行うことで得られた計測結果を示す。
【0127】
画像処理装置100は、入力画像に対して、予め登録されているモデルに基づくパターンマッチング処理を行うと、
図12の画像1200を画像表示エリア1701に表示させる。また、画像処理装置100は、計測結果を示す数値をディスプレイに102に表示させる(符号1702)。さらに、画像処理装置100は、計測結果に基づくワーク2の良否判定結果(OKまたはNGの表示)を、画面右上の領域にも表示する。
図17の例では、相関値が閾値Th2(=90)以上であるため、“OK”の表示がなされている。
【0128】
図18は、
図17からの遷移した後のユーザインターフェイス画面の一例を示す図である。具体的には、
図18は、
図17の状態において、ユーザ操作に基づき、画面右下のサブ画像番号において「画像3」が選択された後のユーザインターフェイス画面を表している。
【0129】
画像3が選択されると、画像処理装置100は、画像1200に対して計測対象のワーク2のエッジ抽出画像520をオーバラップさせたユーザインターフェイス画面をディスプレイ102に表示させる。
【0130】
<F.利点>
画像処理装置100によれば、エッジレベル(
図14参照)および計測対象(ワーク2)の良否判定の閾値Th2を変更することなく、モデルと計測対象全体との一致度を変更可能となる。つまり、上述したように、ユーザは、歪み許容レベルを変更することにより、1個の計測対象について、計測対象全体の一致度(スコアの平均値,相関値)を変更させることができる。このように、画像処理装置100によれば、計測対象物(ワーク2)の形状的な特徴を用いたパターンマッチングにおいて、当該対象物の局所的な形状の歪みを許容することができる。
【0131】
また、表示制御部1109が、一致点および当該一致点の近傍と、不一致点および当該不一致点の近傍とを、互いに異なる表示態様(たとえば異なる色)でディスプレイ102に表示させることにより、ユーザは、モデルと入力画像との不一致箇所を容易に判別することができる。詳しくは、ユーザは、計測対象であるワーク2の問題のある個所を容易に把握することが可能となる。特に、不一致点の表示に関しては、表示制御部1109が、入力画像510のエッジ領域に属しない対応点と、入力画像510のエッジ領域に属する一方でエッジの変化方向が一致しないの対応点とを互いに異なる表示態様(たとえば異なる色)でディスプレイ102に表示させることにより、ユーザは、どのような原因で不一致が生じているのかを容易に判断できる。
【0132】
<G.変形例>
上記おいては、互いに異なる表示態様として、異なる色を例に挙げて説明したが、これに限定されるものではない。たとえば、一致点および当該一致点の近傍と、不一致点および当該不一致点の近傍とを、一種類の色(たとえば、緑色)で表示するとともに、互いに異なる線種、線幅、または濃度等で表示するように、画像処理装置100を構成してもよい。さらに、この構成の場合、不一致点の表示に関しては、入力画像510のエッジ領域に属さない対応点と、入力画像510のエッジ領域に属する一方でエッジの変化方向が一致さない対応点とを、互いに異なる線種、線幅、または濃度等で表示するように、画像処理装置100を構成することが好ましい。
【0133】
また、対応点のスコアに応じて、色の濃度を変化させてもよい。具体的には、、一致点および当該一致点の近傍と、不一致点および当該不一致点の近傍とを、互いに異なる色で表示させる際に、入力画像510のエッジ領域に属する一方でエッジの変化方向が一致しないの対応点および当該対応点の近傍に関しては、スコアが低い箇所(サンプリング点およびその近傍)ほど色の濃度が高くなるように、画像処理装置100を構成してもよい。この構成によれば、ユーザは、計測対象であるワーク2において規定以上の歪みの生じている箇所における、当該歪みの程度を容易に把握できる。
【0134】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。