以下、本発明の実施形態について、図面を参照しながら説明する。ただし、以下の実施形態で説明される寸法、材料、形状、構成要素の相対的な位置等は任意であり、本発明が適用される装置の構造又は様々な条件に応じて変更される。また、特別な記載がない限り、本発明の範囲は、以下に説明される実施形態で具体的に記載された形態に限定されるものではない。なお、以下で説明する図面で、同機能を有するものは同一符号を付け、その繰り返しの説明は省略することもある。
[第1実施形態]
図1は、本発明の第1実施形態に係る欠陥抽出装置1の概略構成図である。欠陥抽出装置1は、測定対象物としてのワーク50の表面の欠陥(バリ、剥がれ、傷、窪み、歪み、撓み、誤形状等)を抽出する。なお、ワーク50は、表面に凹凸構造(溝等)が形成された構造のものであってもよいし、凹凸構造が形成されていない構造のものであってもよい。
<欠陥抽出装置の構成>
欠陥抽出装置1は、基台2、門形フレーム3、昇降機構4、Xステージ5、Yステージ6、回転テーブル7、測定ヘッド10及びコントローラ30を備える。門形フレーム3は、基台2上に立設され、門形フレーム3の中央部分には測定ヘッド10を昇降可能に支持する昇降機構4が設けられている。また、基台2上に設けられたXステージ5、Yステージ6及び回転テーブル7は、ワーク50を把持し、X−Y平面上で平行移動及び回転移動させる機構である。そして、昇降機構4、Xステージ5、Yステージ6、回転テーブル7及び測定ヘッド10の作動は、コントローラ30により制御される。
ここで、図1に示すように、X軸方向及びY軸方向をワーク50の加工面の面内方向(即ち、後述するスリット光SLの光軸に垂直な平面の面内方向)に設定し、Z軸方向をワーク50の厚さ方向(即ち、スリット光SLの光軸に沿う方向)に設定する。
図2に示すように、測定ヘッド10は、スリット光源ユニット11及び撮像ユニット12を備え、それらは一体的に組み付けられている。スリット光源ユニット11は、レーザスリット投光器13及びシリンドリカルレンズ14を含み、レーザスリット投光器13から出射されたスリット光は、シリンドリカルレンズ14によりその光軸に平行なスリット光SLに変換される。スリット光SLは、ワーク50の表面に照射され、照射されたワーク50の表面上には光切断線Sが生じる。なお、図2では、光切断線Sを見易くするために、ワーク50の一部を断面で示し、ワーク50の表面に溝が形成されている例を示している。
撮像ユニット12は、偏光板15、テレセントリック系レンズ16及びカメラ17を備え、カメラ17は、撮像素子18を備える。ワーク50に照射されたスリット光SLの一部は、撮像ユニット12の撮像光軸に沿って反射し、その反射光RLは、偏光板15及びシリンドリカル系レンズ16を通じて撮像素子18に入射する。偏光板15は、撮像素子18のカバーガラスの裏面での反射により発生するノイズ光を除去するために撮像光軸上に配置されており、テレセントリック系レンズ16は、画角ゼロでワーク50の表面を撮像するために撮像光軸上に配置されている。カメラ17は、CMOS(Complementary Metal-Oxide Semiconductor)やCCD(Charge-Coupled Device)等のデジタルカメラであり、光切断線Sに係るワーク50の画像データをコントローラ30に出力する。
なお、撮像素子18の受光面を撮像ユニット12の撮像光軸に対して所定のあおり角だけ傾けて、あおり撮影の原理でテレセントリック系レンズ16の被写界深度を稼ぐようにしてもよい。この場合、当該あおり角は、当該撮像光軸と撮像素子18の表面(その法線)との間の角度にほぼ等しいことが好ましく、偏光板15をP偏光板とすることが好ましい。これにより、被写界深度の拡張効果を得つつ、撮像素子18のカバーガラスの裏面における反射に起因するノイズを低減することができる。
コントローラ30は、不図示の入出力インターフェース、CPU(Central Processing Unit)、RAM(Random Access Memory)及び記憶装置等を備えるコンピュータユニットとして構成され、キーボードやディスプレイ等の入力又は出力デバイス40に接続されている。コントローラ30は、本発明に関係する機能部として、光源制御部31、画像メモリ32、画像処理部33、3次元測定点データ演算部34、評価モジュール100、昇降機構制御部36、回転テーブル制御部37、Xステージ制御部38及びYステージ制御部39を備える。コントローラ30のCPUが、記憶装置等に格納された所定のプログラムを読み出し、それを実行することによって、各機能部の作用・機能は実現される。
光源制御部31は、レーザスリット投光器13を制御し、スリット光SLの投光強度を調整する。カメラ17からコントローラ30に送られてきた画像データは、画像メモリ32に展開される。画像処理部33は、画像メモリ32に展開された画像データに対し、必要に応じて座標変換、レベル補正及びエッジ検出等の画像処理を施し、当該画像データの中から、スリット光SLによる光切断線Sに対応するデータを抽出する。
スリット光SLの照射点及び照射角度並びにスリット光SLの光軸と撮像ユニット12の撮像光軸とのなす角度が既知であるため、3次元測定点データ演算部34は、画像処理部33で検出された光切断線Sに係る座標値から三角測量法に基づいて演算することで、光切断線S(言い換えると、ワーク50の表面に生成された光切断線Sに係る3次元表面形状)に対応する測定点データ(又は距離画像)を生成する。
ここで、測定点データとは、測定点としての各画素に、ワーク50表面の光切断線Sに係る3次元位置座標(X,Y,Z)を割り当てたデータのことである。言い換えると、複数の測定点からなる測定点群の各点は、ワーク50の表面の測定領域の形状を示す3次元位置座標(X,Y,Z)のデータを有する。なお、三角測量法に基づく演算に代えて、その演算結果を予め格納したテーブルを用いて当該距離画像を生成するようにしてもよい。
昇降機構制御部36は、昇降機構4を制御し、測定ヘッド10のZ軸方向の高さ位置を調整する。回転テーブル制御部37は、回転テーブル7を制御し、ワーク50をXY平面内で回転させ、その傾きを調整する。Xステージ制御部38は、Xステージ5を制御し、ワーク50をX軸方向に移動させる。Yステージ制御部39は、Yステージ6を制御し、ワーク50をY軸方向に移動させる。すなわち、回転テーブル制御部37、Xステージ制御部38及びYステージ制御部39は、それぞれ回転テーブル7、Xステージ5及びYステージ6の作動を制御し、ワーク50の表面の測定領域全体を測定できるようにワーク50を移動及び回転させる。
3次元測定点データ演算部34により生成された測定点データは評価モジュール100に送られる。評価モジュール100は、図3に示すように、表面評価モジュール110、欠陥評価モジュール120及び基準データ変更モジュール130を備える。
表面評価モジュール110は、測定点データに所定の位置合わせアルゴリズム(ICP法)を適用することにより、測定点群及び基準点群間の位置合わせ処理を行い、ワーク50の表面形状を評価するモジュールである。欠陥評価モジュール120は、表面評価モジュール110から出力された測定点群及び基準点群間の位置合わせ処理の結果に基いて、ワーク50の表面の欠陥を評価する。
基準データ変更モジュール130は、測定された所定の数のワーク50ごとに、欠陥評価モジュール120において良判定(欠陥が無い又は所定数以下と判定)された測定点データを基に、基準点データを変更する。なお、表面評価モジュール110及び欠陥評価モジュール120それぞれにおける評価処理をワーク50において所定の数区分けされた測定ブロックごとに行うことで、欠陥抽出処理の効率化等の利点がある。ただし、本実施形態は、測定ブロックごとに評価を行う場合に限定されるものではなく、ワーク50表面の測定領域全体に対して評価を行うようにしてもよい。
ここで、基準点の集合である基準点群の各点は、理想的な仕上がり形状を有する測定対象物の表面を示す3次元位置座標(X,Y,Z)を有し、ワーク50の設計データから導出してもよいし、表面に欠陥が無い理想的な仕上がりを有する測定対象物(「マスタ」ともいう。)を測定して得られるデータを用いてもよい。また、基準点データは、後述するように、基準点データ変更モジュール130により、適宜変更できるようにしておいてもよい。
また、ワーク50の表面の測定領域(欠陥検査をする領域)中に所定の数区分けされた測定ブロックについての一例を挙げる。図4(a)に示すように、ワーク50が、表面に直線状の溝が形成された長方形のプレートであり、当該溝が形成された表面を測定領域51とし、測定領域51の面積が400mm(X軸長さ)×300mm(Y軸長さ)程度であるとすると、測定領域51は、100mm(X軸長さ)×15mm(Y軸長さ)の複数の測定ブロック52に区分けされる。そして、1回のX軸方向の走査で4つの測定ブロック52に対して測定が行われ、測定ブロック52ごとに、走査ピッチ及び画像の解像度に基づき規定される単位で、ワーク50の表面に関する測定点データ(3次元位置座標)が取得され、測定ブロック52に関連付けられ画像メモリ32に展開される。このようなX軸方向の走査とY軸方向の移動とが繰り返され、ワーク50の測定領域51全体に対して測定点データが取得される。
なお、図4(b)は、表面に比較的平らな部分を多く有する形状のワーク50を示し、その測定領域51はワーク50の表面全体である。また、図4では、測定ヘッド10が移動するように描かれているが、Xステージ5、Yステージ6及び回転ステージ7が移動・回転することにより、ワーク50が測定ヘッド10に対して動く。本実施形態はこの例に限定されるものではない。
表面評価モジュール110は、表面評価に係る機能部として、入力部111、格納部112、点群対応付け部113、重み演算部114、収束評価部115及び点群変換部116を有する。
入力部111は、3次元測定点データ演算部34からの測定点データを取得し、格納部112は、ワーク50の基準となる表面形状を表す基準点データを格納している。ワーク50表面の欠陥評価を測定ブロック52(図4)ごとに行う場合には、基準点データは、ワーク50の測定領域51の予め区分けされた測定ブロック52ごとに対応するように、区分けされていてもよい。また、格納部112には、ワーク50のエッジに関する基準点からなるエッジ基準点データも格納されていてもよい。後述するように、ワーク50のエッジを抽出し、エッジ測定点データを用いて位置合わせ処理を行う場合には、エッジ基準点データが用いられる。つまり、基準点データは、ワーク50の表面の測定ブロック52(又は測定領域51)の全点に係る全基準点データと、ワーク50表面のエッジに係る基準点からなるエッジ基準点データとを含む。
点群対応付け部113は、K−Dtree等を用いて、各測定点が最も小さい対応点間距離(基準点とそれに対応する基準点との間の距離)を有するように、測定点と基準点とを対応付ける。
本実施形態では、所定の位置合わせアルゴリズムにより、測定ブロック52ごとに、測定点とそれに対応する基準点との間の距離(対応点間距離)が逐次収束され、測定ブロック52に含まれる複数の基準点(基準点群)と複数の測定点(測定点群)との間の位置合わせ処理が行われる。当該所定の位置合わせアルゴリズムとして、ICP(Iterative Closest Point)アルゴリズムが用いられる。
ICPアルゴリズムは、各基準点に最も近い測定点を対応する測定点とし、各基準点とそれに対応する測定点との間の距離(対応点間距離)の2乗和を最小とする合同変換パラメータ(R,t)を推定し、逐次収束させていくアルゴリズムである。ここで、Rは回転行列、tは平行移動ベクトルである。また、点群対応付け部113は、基準点と測定点とを対応付けた後に、各測定点間の隣接点間距離(測定点に係る隣接点間距離)又は各基準点間の隣接点間距離(基準点に係る隣接点間距離)を算出する。
重み演算部114は、点群対応付け部113により算出された基準点に係る隣接点間距離(又は測定点に係る隣接点間距離)diに基づいて、基準点に係る隣接点間距離の重み係数(又は測定点に係る隣接点間距離重み係数)γiを算出する。ここで、iは、基準点(又は測定点)の点番号であって1≦i≦kであり、kは、基準点(又は測定点)の総数(測定ブロック52ごとに欠陥の評価を行う構成では、当該測定ブロックに含まれる基準点(又は測定点)の総数)である。3次元位置座標(xi,yi,zi)を有する基準点miの隣接点間距離diは、三平方の定理より、di 2=xi 2+yi 2+zi 2であり、基準点に係る隣接点間距離の重み係数γiは、重み関数をΓとすると、γi=Γ(di 2)で求められる。例えば、重み関数Γを、di 2が所定の閾値以上のとき、γi=0.01となり、di 2が所定の閾値未満のとき、γi=1となる関数としてもよい。
また、重み演算部114は、3次元位置座標のX,Y,Zの各要素について、下記式(1)に基づいて、ネルダーミード(Nelder and Mead)法の関数値としての評価値を算出するためのバイウェイト係数B(N)(N:X、Y、Z)を算出する。すなわち、各測定ブロック52中の測定点si(測定ブロック52に含まれるi番目の測定点であり、i=1〜k、kは測定ブロック52に含まれる測定点の総数である。)のX、Y、Zの各要素について、式(1)からバイウェイト係数B(Xi)、B(Yi)及びB(Zi)が算出される。なお、当該バイウェイト係数は、対応点間距離の重み係数として用いる評価係数であって、X、Y、Zの各要素について算出される。
B(Ni)=(1−(1−(udi)n)m)l …(1)
m=log(1−0.5^n){1−0.51/l} …(2)
ここで、「l、n」は、評価値特性変化パラメータであり、例えば0.0<l<4.0、0.0<n<4.0の値をとるように設定してもよい。また、「udi」は、測定点siに係るユークリッド距離比率である。ユークリッド比率udiは、測定点siのX、Y、Zの各要素について算出されるものであり、予め設定された基準となる距離と、測定点siに係る対応点間距離との間の比率である。よって、ユークリッド比率udi=1(100%)の場合は、上述の、測定点siに係る対応点間距離は、当該基準となる距離に一致する。よって、重み演算部114は、測定ブロック52中の1〜k番目までの測定点が有する3次元位置座標のX、Y、Zの各要素に対して、ユークリッド距離比率udiを算出し、当該算出されたユークリッド距離比率udiを、ユークリッド距離比率udiが0〜1(0%〜100%)に向かって評価係数が連続的に増加している関数を規定する式(1)に代入して、バイウェイト係数B(N)を算出する。
なお、式(1)は、ネルダーミード法の関数値として用いる評価値(後述するP(s)Eval)を算出する際に用いられる評価係数(バイウェイト係数B)とユークリッド距離比率udとの関係を示す関数であり、パラメータn、lを変えることにより、該関数の波形を変化させることができる。
上記式(1)の導出方法について説明する。従来では、対応点間距離の重み係数として、下記式(3)を用いていた。なお、式(3)では、例えば、Bi=4.5と設定する。また、式(3)中のパラメータei(mm)は、i番目の測定点siに係る対応点間距離とする。
ρi=(Bi 2/2)(1-(1-(ei/Bi)2)3) ei≦Ba
-=Bi 2/2 Bi<ei …(3)
式(3)から分かるように、従来では、i番目の測定点siに係る対応点間距離eiが4.5mm以上となると評価値(対応点間距離の重み係数)は飽和してしまうため、式(3)から固定値要素Biを取り除き、入力値udi(「Bi/ei」はユークリッド距離比率の逆数と見なせる)、2乗項、3乗項に対してパラメータとして変数n、m、lにすると、式(4)が得られる(eval:評価係数)。
eval=(1−(1−udi n)m)l …(4)
本実施形態では、ユークリッド距離比率udiが0.5(50%)の時に評価値が最大評価値(=1)の半分(=0.5)となるように調整したいので、式(5)が成り立つ。
0.5=(1−(1−0.5n)m)l …(5)
これをパラメータmについて解くと、パラメータmは式(6)となる。
m=log(1−0.5^n){1−0.51/l } …(6)
このように、パラメータmは式(6)によって求まるため、式(1)ではn、lをパラメータとして扱う。従って、あるパラメータn、lで規定されるバイウェイト係数B(N)では収束していないと評価される場合、式(1)で表される波形特性を緩やかになるように変更することで、バイウェイト係数を評価値が良い方向に進むような値に変更することができる。一例として、図5に示すように、評価係数eval(即ちバイウェイト係数B(N))の波形501はn=2、l=1としたときの波形であり、評価係数evalの波形502はn=3、l=1としたときの波形である。
収束評価部115は、基準点とそれに対応する測定点との間の距離(即ち、対応点間距離)を逐次収束させる逐次収束処理としてネルダーミード法を用いて暫定合同変換パラメータ(単に「パラメータ」ともいう。)を算出する。そして、収束評価部115は、当該暫定合同変換パラメータを用いて測定点群を基準点群に収束移動させる際に、その逐次収束評価値を演算し、それを基に、測定点群が基準点群に逐次収束するかどうかを評価する。また、収束評価部115は、各測定点に係る対応点間距離も算出する。
点群変換部116は、収束評価部115によって収束すると判定された暫定合同変換パラメータに基づいて、基準点群及び測定点群の位置合わせ処理のための合同変換パラメータを求め、この合同変換パラメータを用いて測定点群の位置座標を変換する。言い換えると、点群変換部116は、求めた合同変換パラメータを用いて、測定点群を基準点群に向けて移動させる。
欠陥評価モジュール120は、誤対応測定点群抽出部121、欠陥判定部122、型修正による形状違い判定部123及び欠陥・型修正箇所判定部124を有する。誤対応測定点群抽出部121は、後述する表面欠陥の判定アルゴリズムに基づいて、欠陥に対応した測定点を含むと推定された領域である誤対応領域(欠陥の候補点)を抽出する。欠陥判定部122は、誤対応測定群抽出部121にて抽出された誤対応領域が欠陥であるか否かを判定する。
さて、測定対象物が金型製作されるような製品の場合、ロット生産の途中で金型の一部を修正した場合、金型修正後の正常に製作された製品の形状と、金型修正前の基準点データによる形状が一致しなくなり、その不一致を欠陥とみなしてしまう問題が生じる。後述する、型修正による形状違い判定ルーチンS612及び欠陥・型修正箇所判定ルーチンS617は、この問題を解決すべく、欠陥判定部122によって判定された欠陥がワーク50に係る金型の修正により生じたものであるかどうかを欠陥情報を参照して判定する。
そこで、型修正による形状違い判定部123は、ワーク50に係る金型に修正の可能性がある場合、金型の修正(「型修正」という。)があったか否かを判定する。また、欠陥・型修正箇所判定部124は、ワーク50に係る金型に型修正の可能性がある場合、型修正があったか否かを判定した上で、その判定対象となる測定対象物に欠陥があるか否かも判定する。
なお、限定されないが、表面評価モジュール110及び欠陥評価モジュール120は、それぞれの評価をワーク50において予め区分けされた測定ブロック52ごとに行う。
ワーク50が金型を用いて製作される場合、所定数の製品が製作されると磨耗等によって金型に寸法変動が生じる。このような寸法変動は、製品が正常に製作されているにもかかわらず、その測定点データと基準点データとの間のずれが生じることがある。このずれを欠陥と判定することを避けるためには、そのようなずれが生じるおそれのある領域の基準点データを正常に製作された製品の測定点データを基に修正することが好ましい。そこで、基準点データ変更モジュール130が設けられている。
基準点データ変更モジュール130は、入力部131、測定点データ形状判定部132及び基準点データ変更部133を有する。入力部131は、表面評価モジュール110で生成された測定点データと、測定対象物であるワーク50の設計データである形状データとを入力し、内部処理可能な形式に変換した後、測定点データ形状判定部132に送る。測定点データ形状判定部132は、測定点データと設計データとを比較して、ワーク50の形状が設計寸法の許容範囲内にあるかどうか判定する。そして、基準点データ変更部133は、格納部112にアクセスして、この測定点データで基準点データを変更する。
<欠陥抽出方法>
次に、本実施形態に係る欠陥抽出装置1を用いた、ワーク50の欠陥抽出方法について説明する。
ここで、限定されるものではないが、前述のようにワーク50の表面の測定領域51は所定の数の測定ブロック52に区分けされている。1回のX軸方向走査で所定の数の測定ブロックを走査して、走査ピッチと撮像解像度によって規定される測定単位で光切断線Sに係るワーク50表面の3次元表面形状を示す測定点データを取得して、測定ブロックごとにRAMに格納する。1回のX軸方向走査が完了するとY軸方向移動を行い、次の測定ブロックに対するX軸方向走査を逆方向で行う。このような、X軸方向走査とY軸方向移動を繰り返すことで、ワーク50表面の測定領域51全体の測定点データを取得する。なお、測定死角の発生を考慮して、ワーク50を90度回転させた状態で、再度当該測定領域51に対して測定を行うようにしてもよい。また、本実施形態では、ワーク50の表面の欠陥検査は、測定ブロック52単位で行われ、測定ブロック52単位での欠陥判定結果をまとめて、最終的な欠陥判定が行われるが、これに限定されるものではない。
まず、ステップS601で、ユーザ又は搬送装置(不図示)によってワーク50が回転テーブル7上にセットされる。ステップS602で、光源制御部31は、レーザスリット投光器13を制御して、スリット光SLをワーク50に照射させる。ステップS603で、Xステージ制御部38、Yステージ制御部39及び回転テーブル制御部37は、測定開始ポイントである最初の測定ブロックがスリット光SLで照射されるように、Xステージ5、Yステージ6及び回転テーブル7を作動させる。
ステップS604で、Xステージ制御部38は、Xステージ5を制御して、Xステージ5をX軸正の方向に定速移動させる(X軸方向走査)。ステップS605で、X軸方向走査の間、カメラ17は、ワーク50を撮像して取得された画像データをコントローラ30に送信し、送られてきた画像データは、対応する測定ブロック52と関連付けられ画像メモリ32に展開される。X軸方向走査及び画像データの取得は、スリット光SLがワーク50の測定領域51のX軸側端に到達するまで行われる。
ステップS606で、コントローラ30は、スリット光SLがワーク50の測定領域51のX軸端に到達したかどうか判定する。到達した場合に(S606でYes)、ステップS607で、Xステージ制御部38は、Xステージ5の移動を停止させ、画像処理部33は、画像メモリ32に展開された画像データに対し、必要に応じて座標変換、レベル補正及びエッジ検出等の画像処理を施し、当該画像データの中から、スリット光SLによる光切断線Sに対応するデータを抽出する。そして、3次元測定点データ演算部34は、画像処理部33で生成された光切断線Sに係る座標値から三角測量法に基づいて演算することで、ワーク50表面の光切断線Sに対応する測定点群の各点について3次元位置座標(X,Y,Z)のデータ(測定点データ)を算出する。なお、前述のように、テーブルを用いて測定点データを算出するようにしてもよいし、測定ブロック52に対する測定が終了するたびに、測定点データを算出するようにしてもよい。
ステップS608で、コントローラ30は、算出された測定点データの中からワーク50のエッジに相当する測定点データを抽出(エッジ抽出処理)すべきかどうか判定する。この判定は、ワーク50の種類が予め分かっているため、ユーザにより予め指示されている。例えば、図4(a)に示すような表面に直線状の溝が形成されたワーク50に対してはエッジ抽出して、エッジに係る測定点データ(「エッジ測定点データ」という。)を用いてICPによる位置合わせ処理をするほうが効率的である。他方、図4(b)に示すような表面に溝等がなく平らな部分が多いワーク50に対してはエッジ抽出をせずに、算出された測定点データ全て(「全測定点データ」という。)を用いて位置合わせ処理をするため、エッジ抽出処理を省略するほうが効率的である。以後の説明においては、全測定点データを用いた処理を説明しているが、エッジ測定点データを用いる場合も同様である。
エッジ抽出すべきと判定される場合(S608でYes)、ステップS609で、コントローラ30は、3次元測定点データ演算部34で算出された全測定点データからワーク50のエッジに相当するエッジ測定点データを抽出するエッジ抽出ルーチンを実行する。図7を用いて、エッジ抽出ルーチンS609について説明する。
まず、表面評価モジュール110は、ステップS701で測定点全点のデータ(全測定点データ)を読み出し、ステップS702で、全測定点において測定不能のため生じた(高さ情報を有しない)データの欠落部分(ワーク50の境界も含む)には、測定下限値以下の指定値をダミーとして割り当てる。そして、表面評価モジュール110は、ステップS703で、高さ方向(Z軸方向)の値に対してエッジ検出フィルタ(例えばソーベルフィルタ等の微分フィルタ)をかけて微分値を算出し、ステップS704で、所定の閾値以上の微分値をエッジと判定し、当該エッジに係る測定点データ(エッジ測定点データ)をメモリに保存する。高さ情報がない欠落部に対して測定下限値以下の指定値をダミーとして割り当てているため、ワーク50の外周や貫通穴などの底がないところでもエッジの抽出が可能となる。
図6Aの説明に戻る。同種のワーク50に対する追加の基準点データが無い場合(つまり型修正後の基準点データが無い場合)(S610でNo)、ステップS611で、表面評価モジュール110は、ICPアルゴリズムを用いて、測定点群と基準点群との間の位置合わせ処理を行う(位置合わせルーチン)。図8を用いて、ステップS611の位置合わせルーチンについて説明する。
まず、表面評価モジュール110の入力部111は、ステップS801で、全測定点データを読み出し、ステップS802で、当該全測定点データの各測定点に対応する全基準点データを格納部112から読み出す。なお、ワーク50の表面に溝等が形成され、エッジが取りやすい測定対象物に対しては全測定点データの代わりにステップS609で取得されたエッジ測定点データを用いて位置合わせ処理をするとよい。他方、エッジを取得し難い測定対象物に対してはステップS607で取得された全測定点データを用いて位置合わせ処理をするとよい。
ステップS803で、表面評価モジュール110は、複合要素リストの作成ルーチンを実行する。本実施形態では、ネルダーミード法により合同変換パラメータを生成するために、ネルダーミード法における移動推定要素を組み合わせた複合要素リスト1001を用いる(図10)。但し、クォータニオン(四元数)で回転を表現する場合、後述する、ネルダーミード法での反射、拡大、縮小、収縮時の位置推定計算上、拡大、縮小成分も含まれるので、ネルダーミード法に関する頂点として拡大・縮小用の頂点は特に必要はない。なお、図10に示すように、合同変換パラメータは、回転、拡大及び縮小のパラメータとしての4つの四元数(q0〜q3)、並びに3次元のデカルト座標系を構成する3つの軸に沿った3つの平行移動成分(x,y,z)からなる7つの要素を用いて、ネルダーミード法の多面体の頂点にネルダーミード法を実行することにより生成され、その多面体の頂点の1つは、複合要素P4であり、前記多面体の残りの頂点は、現点P0、3つの軸の周りの回転P1〜P3及び3つの軸方向の平行移動P5〜P7である。また、複合要素P4は、当該四元数のうちの少なくとも1つから構成され、又は、当該四元数のうちの少なくとも1つ及び当該平行移動成分のうちの少なくとも1つから構成される。
ここで、本実施形態において、「複合要素」とは、ネルダーミード法に係る多面体の頂点の1つであって、移動又は回転要素を複合した要素である。すなわち、複合要素は、3つの軸平行移動要素(移動要素)及び3つの軸回転要素(回転要素)のうちいずれか2つの要素(例えば、X軸平行移動及びY軸平行移動のような軸平行移動の組み合わせ、Z軸平行移動及びX軸回転のような1つの軸平行移動と1つの軸回転との組み合わせ、Y軸回転及びZ軸回転のような軸回転の組み合わせ)を有するものである。
本実施形態では、3つの軸平行移動要素及び3つの軸回転要素から選択される2つの要素の組み合わせを変化させて複数用意されており、複合要素リスト1001は、該用意された複数の複合要素を含むものである。なお、「軸平行移動」とは、3次元直交座標系(デカルト座標系)の3つの軸(X軸、Y軸、Z軸)の1つに沿った平行移動を指す。よって、例えば、X軸に沿った軸平行移動はX軸平行移動となる。また、「軸回転」とは、上記3つの軸(X軸、Y軸、Z軸)周りの回転(ある軸を回転軸とした回転)を指す。よって、例えば、Y軸を回転軸として回転はY軸回転となる。
また、図10において、「Pitch」は、X軸回転における回転であり、「Yaw」は、Y軸回転における回転であり、「Roll」は、Z軸回転における回転である。よって、図10において、例えば「+Roll,+Pitch」は、正の方向に所定の角度だけZ軸回転させ、正の方向に所定の角度だけX軸回転させることを示す。なお、例として、図10において、Pitch、Yaw、Rollの回転角を5度とし、X軸、Y軸及びZ軸の平行移動量を1mmとしてもよい。
図9は複合要素リストの作成ルーチンS803を示す。まず、ステップS901で、表面評価モジュール110は、ネルダーミード法による位置合わせの推定要素として軸平行移動が必要か否かを判定する。なお、ユーザが入出力デバイス40を用いてコントローラ30に対して、当該軸平行移動が必要か否かを予め指示しておいてもよい。
当該軸平行移動が必要と判定する場合(S901でYes)、ステップS902で、表面評価モジュール110は、軸平行移動の要素に関する複合要素群を複合要素リスト1001(図10)に追加する。なお、本実施形態では、軸平行移動の要素に関する複合要素群(雛形)がコントローラ30の記憶装置に予め記憶されている。また、図10に示すようなネルダーミード法の各初期頂点P0〜P7(P4除く)のクォータニオン(回転・拡大・縮小)を表す四元数の初期値、及び3次元のデカルト座標系を構成する3つの軸に沿った3つの平行移動成分の初期値は、コントローラ30の記憶装置に予め記憶されている。よって、S901にて軸平行移動が必要であると判定されると、表面評価モジュール110は、当該記憶装置から初期値を有する初期頂点P0〜P7(P4除く)、及び軸平行移動に関する複合要素群を読み出し、該読み出された軸平行移動に関する複合要素群を頂点P4に係る複合要素リスト1001に追加する。
次に、ステップS903で、表面評価モジュール110は、ネルダーミード法による位置合わせの推定要素として軸回転及び/又は拡大・縮小が必要かどうか判定する。なお、ユーザが入出力デバイス40を用いてコントローラ30に対して、当該軸回転及び/又は拡大・縮小が必要かどうかを予め指示しておいてもよい。
当該軸回転及び/又は拡大・縮小が必要と判定する場合(S903でYes)、ステップS904で、表面評価モジュール110は、軸回転及び/又は拡大・縮小の要素に関する複合要素群を複合要素リスト1001(図10)に追加する。なお、本実施形態では、軸回転及び/又は拡大・収縮の要素に関する複合要素群(雛形)がコントローラ30の記憶装置に予め記憶されている。また、表面評価モジュール110は、当該記憶装置から軸回転及び/又は拡大の要素に関する複合要素群を読み出し、該読み出された軸回転及び/又は拡大の要素に関する複合要素群を複合要素リスト1001に追加する。
そして、ステップS905で、表面評価モジュール110は、ネルダーミード法の初期頂点のP4に、ステップS902及びS904において作成された複合要素リスト1001の中の1つを設定する。このとき、表面評価モジュール110は、設定された複合要素に対応する複合要素リスト番号をコントローラ30のRAMに保存し、後から参照し易いようにしておくとよい。なお、ステップS902及びS904でともにNo分岐であった場合、複合要素リスト1001が作成されていないため、表面評価モジュール110は、特許文献1の図1に記載の従来のネルダーミード法の初期頂点P0〜P7を設定値として設定するようにしてもよい。
ここで、後述するネルダーミード法に係る重心Pcentroidに、3つの軸平行移動及び3つの軸回転のうち2つの要素を軸とするデカルト座標系における象限の概念を適用して複合要素リスト1001を作成しておくことで、位置合わせによる評価値を局所解に陥るのを低減することができる。当該「2つの要素を軸とするデカルト座標系」は、ネルダーミード法に係る重心Pcentroidを原点とした、ある軸Eと、該軸Eに直交する軸Fとによって規定された2次元のデカルト座標系である。また、当該座標系は、E座標及びF座標共に正である領域の第1象限、E座標が負でありF座標が正である領域の第2象限、E座標及びF座標共に負である領域の第3象限、及びE座標が正でありF座標が負である領域の第4象限を有する。
また、複合要素になり得る、3つの軸平行移動(X軸平行移動、Y軸平行移動、Z軸平行移動)、及び3つの軸回転(X軸回転(Pitch)、Y軸回転(Yaw)、Z軸回転(Roll))のうち任意の2つの要素をそれぞれ軸E、軸Fに割り当てる場合を考える。このとき、デカルト座標系の軸の組み合わせ(E,F)は、(X,Y)、(Y,Z)、(X,Z)、(Pitch,x)、(Pitch,Y)、(Pitch,Z)、(Yaw,X)、(Yaw,Y)、(Yaw,Z)、(Roll,X)、(Roll,Y)、(Roll,Z)、(Pitch,Yaw)、(Yaw,Roll)、(Pitch,Roll)の15種類となる。例えば、(E,F)=(X,Y)であり、複合要素(+X,+Y)(X軸の正の方向に所定量(+X)だけ移動させ、Y軸の正の方向に所定量(+Y)だけ移動させる場合)の場合、デカルト座標系(X,Y)における座標は(+X,+Y)となり、この複合要素は当該デカルト座標系の第1象限にあることになる。また、複合要素(−X,+Y)(X軸の正の方向に所定量(−X)だけ移動させ、Y軸の正の方向に所定量(+Y)だけ移動させる場合)、デカルト座標系(X,Y)における座標は(−X,+Y)となり、この複合要素は当該デカルト座標系の第2象限にあることになる。他方、例えば、(E,F)=(Yaw、Roll)であり、複合要素(−Yaw,−Roll)(Y軸の負の方向に所定の回転角(−Yaw)だけ回転させ、Z軸の負の方向に所定の回転角(−Roll)だけ回転させる場合)、デカルト座標系(Yaw,Roll)における座標は(−Yaw,−Roll)となり、この複合要素は当該デカルト座標系の第3象限にあることになる。また、複合要素(+Yaw,−Roll)(Y軸の正の方向に所定の回転角(+Yaw)だけ回転させ、Z軸の負の方向に所定の回転角(−Roll)だけ回転させる場合)、デカルト座標系(Yaw,Roll)における座標は(+Yaw,−Roll)となり、この複合要素は当該デカルト座標系の第4象限にあることになる。
複合要素リスト1001に加えられる複合要素として、ある2つの要素の組み合わせについて、例えば、(P4:+X、+Y)及び(P4:+X、−Y)、(P4:+Roll、+Pitch)及び(P4:+Roll、−Pitch)、(P4:+Z、+Yaw)及び(P4:+Z、−Yaw)というように、当該2つの要素の組み合わせにより規定されるデカルト座標系における座標が第1象限にある場合と第4象限にある場合との2種類を設定するとよい。このように設定すると、ある2つの要素からなる複合要素についてネルダーミード法により反射、拡大、縮小、又は収縮を行っても、収束性が対角に並ぶ象限(第1象限及び第3象限、又は第2象限及び第4象限)に偏ることを低減することができる。つまり、2つの移動又は回転の要素からなる複合要素に対して、ネルダーミード法による反射、拡大、縮小、及び収縮の少なくとも1つを行う場合、当該2つの要素の組み合わせにより規定されるデカルト座標系において対角に位置する2つの象限に収束性を偏らせることを低減することが重要である。
ネルダーミード法における反射、拡大、縮小、及び収縮では、頂点の各要素に対して一定の係数が掛かかる。そのため、2つの要素からなる複合要素に対して反射、拡大、縮小、及び収縮のいずれか1つを行うと、ある象限にある複合要素に対応する座標は、ネルダーミード法に係る重心Pcentroidである原点に対して対角に位置する象限に位置するか、又は上記ある象限内に位置することになる。すなわち、例えば第1象限(第3象限)にある複合要素に係る座標は、第1象限又は第3象限に位置することになり、また第2象限(第4象限)にある複合要素に係る座標は、第2象限又は第4象限に位置することになる。このように、当該2つの要素から構成されるデカルト座標系において、頂点の2要素が全て正の数か負の数であれば収束性が第1象限と第3象限に偏り、片方要素が正の数でもう1つの要素が負の数であれば、第2象限と第4象限偏ってしまう。
従って、当該デカルト座標系の第1象限又は第3象限に位置する、ある2つの要素を複合要素として用いるのであれば、第2象限又は第4象限に位置する当該ある2つの要素を複合要素として加えることによって、ネルダーミード法の位置推定方向に幅ができ、評価値が局所解に陥ってしまうことをより低減することができる。すなわち、当該3つの軸平行移動及び3つの軸回転のうち任意の2つの要素の組み合わせについて、当該2つの要素からなるデカルト座標系における、当該2つの要素の座標が第1象限又は第3象限に位置するように設定された複合要素と、当該2つの要素の座標が第2象限又は第4象限に位置するように設定された複合要素とを対で設定するとよい。そのため、上記任意の2つの要素については、ネルダーミード法により反射、拡大、縮小、及び収縮の少なくとも1つを行っても、上記デカルト座標系の第1〜第4象限の全てを考慮した評価を行うことができる。
また、上記3つの軸平行移動及び3つの軸回転の各要素の複合を考えられる全ての組み合わせ(組み合わせ数を2つに限らない)、かつそれら組み合わせの各々について、全象限に対応するように複合した要素をリスト化して頂点P4に適用すると、ネルダーミード法に係る重心が平均化されてしまい局所解に陥りやすくなる可能性がある。よって、図10に示すように、移動に必要と考えられる2つの要素を複合させた複合要素をリスト化しておき、ネルダーミード法の解が収束する毎に、リストを切り替える等するとネルダーミード法に係る重心が変動し局所解に陥らなくなる。
図8の説明に戻り、ステップS804で、点群対応付け部113は、K−Dtree等を用いて、各測定点が最も小さい対応点間距離を有するように測定点と基準点とを対応付ける。また、点群対応付け部113は、各測定点間の隣接点間距離及び各基準点間の隣接点間距離も算出する。
ステップS805で、重み演算部114は、バイウェイト係数B(Xi)、バイウェイト係数B(Yi)、バイウェイト係数B(Zi)を算出する。なお、重み演算部114は、ステップS806が初回か否かに応じて(次のステップであるS806が所定の位置合わせにおける1番目の収束評価算出ルーチンであるか否かに応じて)、バイウェイト係数B(Xi)、バイウェイト係数B(Yi)、バイウェイト係数B(Zi)の算出処理を変えるようにしてもよい。
図11を用いて、ステップS806の収束評価値算出ルーチンについて説明する。ステップS806の処理が初回であると収束評価部115により判定された場合(S1101でYes)、重み演算部114は、各測定点について、パラメータn、lが共に初期値に設定された式(1)にユークリッド距離比率ud=1(100%)を代入して、バイウェイト係数B(Xi)、B(Yi)及びB(Zi)を算出する。本実施形態では、限定されないがパラメータnの初期値を「3」とし、パラメータlの初期値を「1」とする。
ステップS806の処理が初回では無いと収束評価部115により判定された場合(S1101でNo)、ステップS1103で、重み演算部114は、後述するステップS1110又はS1111にて変更されたユークリッド距離比率udの最大値となる距離(基準の距離)に対する、測定点ごとの対応点間距離(各測定点に固有の対応点間距離)の割合を算出して各測定点に対応するユークリッド距離比率udを算出する。なお、本処理を行っているということは、後述するステップS1106を一度行っているので、前回のネルダーミード法による暫定合同変換パラメータの算出ルーチンS1105により得られた暫定合同変換パラメータPAによって移動する場合の対応点間距離が算出されているので、ユークリッド距離比率udの算出時にはこれら対応点間距離を用いれば良い。重み演算部114は、当該算出されたユークリッド距離比率udを式(1)に代入することにより、バイウェイト係数B(Xi)、B(Yi)及びB(Zi)を算出する。なお、2回目以降の算出ルーチンS1105を行う場合は、後述するステップS1108にて式(1)で規定される波形特性が緩やかになるようにパラメータn、lが変更されている場合もある。
初回の位置推定時には、収束評価部115は、ステップS1102で、ネルダーミード法に係る頂点P0〜P7の基本移動量(四元数(q0、q1、q2、q3)及び平行移動成分(x、y、z))を初期化する(S1102)。他方、収束条件でのリトライ時(後述するS807やS811でNoの場合)では(ステップS1101でNo)、ステップS1103で、収束評価部115は、前回の収束時に評価値が悪化したか否かを判定する。
すなわち、収束評価部115は、コントローラ30のRAMに保存されている前回の収束時の各測定点に係る対応点間距離の平均値と、前々回の収束時の各測定点に係る対応点間距離の平均値とを読み出し、前回の収束時の対応点間距離の平均値が、前々回の対応点間距離の平均値よりも大きくなっていたら当該評価値が悪化したと判定し、ステップS1104に進む。他方、前回の収束時の各測定点に係る対応点間距離の平均値が、前々回の収束時の各測定点に係る対応点間距離の平均値以下となっていたら上記評価値が悪化していないと判定し、ステップS1105に進む。なお、S807又はS811でNoとなってから1回目のリトライ時には前々回の収束時の各測定点に係る対応点間距離の平均値は算出されていないため、当該1回目のリトライ時の場合には、収束評価部115は、自動的にステップS1105に進む。
ステップS1104で、収束評価部115は、ネルダーミード法に係る頂点のうち、複合要素に係る頂点P4については、複合要素リスト1001において現在設定されている複合要素を、その次の(別の)複合要素に変更し、頂点P0〜P3、P5〜P7についてはそれぞれ初期値に初期化する。
ステップS1105で、収束評価部115は、ネルダーミード法による暫定合同変換パラメータを算出するルーチンを実行する。図12を用いて、暫定合同変換パラメータを算出するルーチンS1105について説明する。
まず、収束評価部115は、ネルダーミード法に用いるために、ステップS1201で測定点データを読み込み、次にステップS1202で基準点データを読み込む。
ステップS1203で、収束評価部115は、ネルダーミード法の各頂点P0〜P7に対して、S805で算出されたバイウェイト係数B(N)を掛けたICP法評価値で最良点から最悪点まで評価計算を行い暫定的な格付けを行なう。すなわち、収束評価部115は、下記式(7)を用いて頂点P0〜P7ごとに評価値P(s)Eval(s:ネルダーミード法に係る頂点番号0〜7)を算出し、最良の頂点Pbest、最悪の頂点Pworst及び最悪の頂点の次点を抽出する。
ここで、iは点群の番号であり、kは点群に含まれる点の総数である。また、隣接点間距離diは、ステップS804にてすでに算出されている。
ここで、Xa(i)、Ya(i)、Za(i)はそれぞれ、各測定点に各頂点パラメータが反映されたものである。すなわち、ネルダーミード法に係る各頂点にから得られる暫定合同変換パラメータに従って各測定点を移動させ、当該移動後の各測定点のX要素、Y要素及びZ要素がそれぞれ、Xa(i)、Ya(i)、Za(i)となる。上記Xb(i)、Yb(i)、Zb(i)はそれぞれ、測定点に対応付けられた基準点の3次元位置座標である。
まず、収束評価部115は、ネルダーミード法に係る頂点P0について、頂点P0から得られる合同変換パラメータにより各測定点を移動させる。これにより、移動後の測定点に係る3次元位置座標(Xa(i)、Ya(i)、Za(i))が得られる。次いで、収束評価部115は、頂点P0の合同変換パラメータが反映されたXa(i)、Ya(i)及びZa(i)、並びにXb(i)、Yb(i)及びZb(i)を式(8)に代入して、頂点P0に対するeuclid(Xi)、euclid(Yi)、euclid(Zi)をそれぞれ算出し、それらを式(7)に代入して頂点P0に係る評価値P(0)Evalを算出する。そして、他のネルダーミード法に係る頂点P1〜P7についても同様にして、収束評価部115は、評価値P(1)Eval〜P(7)Evalを算出する。
このとき、バイウェイト係数B(N)について、収束評価部115は、ステップS805にて算出されたバイウェイト係数B(Xi)、B(Yi)及びB(Zi)を用いている。しかしながら、頂点P4に設定する複合要素を変更した場合(つまり、S1104を経てS1105を行う場合)、ステップS1104にて頂点P4として設定された複合要素にとって、ステップS1105の処理は、初めての処理となる。そこで、収束評価部115は、S805にて算出されたバイウェイト係数を破棄し、それと共に、重み演算部114は、各測定点について、式(1)のパラメータn、lを共に初期値に設定し、式(1)にユークリッド距離比率ud=1(100%)を代入して、バイウェイト係数B(Xi)、B(Yi)及びB(Zi)を算出する。そして、収束評価部115は、ステップS1105にて算出されたバイウェイト係数B(N)を用いて評価値P(0)Eval〜P(7)Evalを算出する。
収束評価部115は、バイウェイト係数B(Xi)、B(Yi)及びB(Zi)、並びにeuclid(Xi)、euclid(Yi)及びeuclid(Zi)により、頂点P0〜P7の各々に対して評価値P(0)Eval〜P(7)Evalを算出する。収束評価部115は、各頂点P0〜P7に対する評価値P(0)Eval〜P(7)Evalを算出した後、評価値P(0)Eval〜P(7)Evalを互いに比較し、最も評価値が小さい頂点を最良点Pbestと設定し、最も評価値が大きい頂点を最悪点Pworstと設定し、2番目に評価値が大きい頂点を最悪点の次点と設定する。
図12のS1204以降の処理については、従来のネルダーミード法による合同変換パラメータの算出処理と同様であるため、簡単に説明する。
ステップS1204で、収束評価部115は、図13に示す、ネルダーミード法の反射ルーチンを実行する。収束評価部115は、ステップS1301で、頂点P0〜P7の中から暫定最悪点Pworstを選定し、ステップS1302で、当該暫定最悪点Pworstの除いた全頂点間の重心Pcentroidを算出する。ここで、重心Pcentroid=(Pbest+P2+…+Pi−1)/(i―1)であり、iはネルダーミード法に係る全頂点の数である(本実施形態ではi=8)。ステップS1303で、収束評価部115は、反射係数α(本実施形態ではα=1)を用いて、暫定最悪点最悪点Pworstの反射点Preflectionを算出し、反射点Preflectionについて式(7)により評価値P(reflection)Evalを算出する。
ステップS1205で、収束評価部115は、反射点Preflectionの評価値P(reflection)Evalと、最悪点Pworstの評価値P(worst)Evalとを比較する。反射点Preflectionの評価値が最悪点Pworstの評価値よりも良ければ(S1205でYes)、ステップS1206で、収束評価部115は、最悪点Pworstを反射点Preflectionで置き換える。
収束評価部115は、ステップS1205でNoの場合には、最悪点Pworstを頂点Pwとし、S1206で最悪点Pworstを反射点Preflectionに置き換えた場合には、当該反射点Preflectionを頂点Pwとする。
ステップS1207で、収束評価部115は、頂点Pwの評価値P(w)Evalと最良点Pworstの評価値P(worst)Evalとを比較する。頂点Pwの評価値P(w)Evalが最良点Pbestの評価値P(best)Evalよりも良ければ(S1207でYes)、ステップS1208で、収束評価部115は、図14に示すネルダーミード法の拡大ルーチンを行う。
図14において、ステップS1401で、収束評価部115は、ステップS1204で取得された反射点Preflectionの評価値を保持しておき、ステップS1402で、拡大係数γ(本実施形態ではγ=2)を用いて、反射点Preflectionに対する拡大点Pexpansionを算出する。ここで、Pexpansion=Pcentroid+γ(Pcentroid−Preflection)である。ステップS1403で、収束評価部115は、式(7)を用いて、拡大点Pexpansionの評価値P(expansion)Evalを算出する。
図12の説明に戻り、ステップS1209で、収束評価部115は、拡大点Pexpansionの評価値P(expansion)Evalと、反射点Preflectionの評価値P(reflection)Evalとを比較する。拡大点Pexpansionの評価値P(expansion)Evalが反射点Preflectionの評価値P(reflection)Evalよりも良ければ(S1209でYes)、ステップS1210で、収束評価部115は、最悪点Pworstを拡大点Pexpansionで置き換え、ステップS1216に進む。拡大点Pexpansionの評価値P(expansion)Evalが反射点Preflectionの評価値P(reflection)Evalよりも悪ければ(S1209でNo)、ステップS1216に進む。ステップS1216で、収束評価部115は、ネルダーミード法が収束したかを判定する。収束していない場合(S1216でNo)、ステップS1203の処理に戻る。
頂点Pwの評価値P(w)Evalが最良点Pbestの評価値P(best)Evalより良くない場合(S1207でNo)、ステップS1211で、収束評価部115は、頂点Pwの評価値P(w)Evalと最悪点の次点の評価値P(次点)Evalとを比較する。頂点Pwの評価値P(w)Evalが最悪点の次点の評価値P(次点)Evalよりも良い場合(S1211でYes)、ステップS1216で、収束評価部115は、ネルダーミード法が収束したかどうか判定する。
頂点Pwの評価値P(w)Evalが最悪点の次点の評価値P(次点)Evalよりも悪い場合(S1211でNo)、ステップS1212で、収束評価部115は、図15に示すネルダーミード法の縮小ルーチンを行う。図15において、収束評価部115は、ステップS1501で、頂点Pwの評価値(頂点Pwが反射点Preflectionである場合はステップS1204にて算出された評価値、頂点Pwが最悪点Pworstである場合はS1203にて算出された評価値)を保持しておく。収束評価部115は、ステップS1502で、縮小係数ρ(本実施形態ではρ=0.5)を用いて、頂点Pwの縮小点Pcontractionを計算し、ステップS1503で、式(7)を用いて縮小点Pcontractionの評価値P(contraction)Evalを算出する。ここで、Pcontraction=Pcentroid+ρ(Pcentroid−Pw)である。
ステップS1504で、収束評価部115は、S1501にて保持された頂点Pwの評価値P(w)Evalと、S1503にて算出された縮小点Pcontractionの評価値P(contraction)Evalとを比較する。頂点Pwの評価値P(w)Evalが縮小点Pcontractionの評価値P(contraction)Evalよりも良ければ(S1504でYes)、ステップS1505で、収束評価部115は、頂点Pwを縮小点Pcontractionに置き換える。
図12の説明に戻り、ステップS1213で、収束評価部115は、頂点Pwの評価値P(w)Evalと、最悪点の次点の評価値P(次点)Evalとを比較する。頂点Pwの評価値P(w)Evalが最悪点の次点の評価値P(次点)Evalより良ければ(S1213でYes)、ステップS1216で、収束評価部904は、ネルダーミード法が収束したかどうか判定する。
頂点Pwの評価値P(w)Evalが最悪点の次点の評価値P(次点)Evalより悪い場合(S1213でNo)、ステップS1214で、収束評価部115は、図16に示すネルダーミード法の収縮ルーチンを行う。図16において、ステップS1601で、収束評価部115は、収縮係数σ(本実施形態ではσ=0.5)を用いて、最良点Pbest以外の全頂点P2〜Pworstをそれぞれ、この時点での暫定的な最良点Pbestに向けて収縮させる。その後、ステップS1215で、収束評価部115は、収縮後の最良点Pbest以外の頂点を収縮後の値に置き換える。
そして、ネルダーミード法の収束条件を満たした場合(S1216でYes)、収束評価部115は、その時のPbestを暫定合同変換パラメータPA(「第1のパラメータ」ともいう。)として設定する。
図11の説明に戻り、ステップS1105で暫定合同変換パラメータPAが取得されると、S1106において、収束評価部115は、各測定点を、暫定合同変換パラメータPAによって暫定的に移動させる。次いで、収束評価部115は、暫定的に移動された測定点群の各点について、当該移動された測定点群の各点とそれに対応する基準点との間の対応点間距離及びその平均値を算出し、当該算出された対応点間距離及びその平均距離をコントローラ30のRAMに保存する。
なお、暫定合同変換パラメータPAが算出された順に、当該対応点間距離及びその平均距離をRAMに保存することが好ましい。このようにすることで、前々回の対応点間距離と前回の対応点間距離とが順番にコントローラ30のRAMに保持されているので、ステップS1103における比較処理を容易に行うことができる。また、収束評価部115は、暫定移動された測定点群の各点とそれに対応する基準点との間のユークリッド距離をX、Y、Zの各要素について算出する。X要素のユークリッド距離UXi、Y要素のユークリッド距離UYi、及びZ要素のユークリッド距離UZiは式(9)で表される。
ここで、式(9)において、x1i、y1i及びz1iは、それぞれ暫定的に移動されたi番目の測定点siのX要素、Y要素及びZ要素であり、x2i、y2i及びz2iは、それぞれ暫定的に移動されたi番目の測定点siに対応する基準点miのX要素、Y要素及びZ要素である。
収束評価部115は、式(9)にて算出されたX、Y、Zの各要素のユークリッド距離UXi、UYi、UZiを基に、X、Y、Zの各要素について、ユークリッド距離の平均値(平均距離)を算出し、コントローラ30のRAMに保存する。また、X、Y、Z要素の各々について、ユークリッド距離の最大値(最大距離)を抽出し、コントローラ30のRAMに保存する。
次に、ステップS1107で、収束評価部115は、複合要素リスト1001をひととおり行なっても、位置合わせに失敗しているかどうか判定する。すなわち、収束評価部115が、複合要素リスト1001の全ての複合要素(図10の例では計30個)について暫定合同変換パラメータPAを算出しても評価値が収束していないと判定する場合、ステップS1108に進む。
位置合わせに失敗していると判定される場合(S1107でYes)、ステップS1108で、収束評価部115は、入出力デバイス40(ディスプレイ等)上にユーザに向けて注意を表示し、式(1)で示す波形特性(図5)の傾きを小さくするために、パラメータn、lの値を入力するようにユーザに促す。ユーザが入出力デバイス40(キーボード等)を介して、所望のパラメータn、lを入力すると、収束評価部115は、それに基づいて、式(1)のパラメータn、lを変更する。
本実施形態では、式(1)で表される波形特性のユークリッド距離比率udが50%の時の傾斜(このときの接線の傾き)が緩やかになるようにパラメータn、lを決定することが好ましい。図5においては、波形501の方が波形502よりも緩やかである。従って、例えば、現在、波形502に係るパラメータn=3、l=1が設定されている場合、ユーザによりパラメータn=2、l=1が入力されることにより、収束評価部115は、バイウェイト推定法に関する波形(式(1)の関数の波形)を波形502よりも緩やかな波形501に変更する。
なお、当該波形を緩やかにするパラメータの変更をコントローラ30が自動で行っても良い。この場合は、例えば、波形が緩やかになるようなパラメータn、lの組み合わせを、波形が急峻から緩やかに向かって複数用意し、それらをテーブル化してコントローラ30が有する記憶装置に予め保持させておく。そして、収束評価部115は、ステップS1108に進むと、当該テーブルを参照して、現在のパラメータn、lの組み合わせよりも波形が緩やかになるパラメータn、lの組み合わせを抽出し、該抽出されたパラメータに変更すれば良い。
ステップS1109で、収束評価部115は、現在設定されている複合要素リスト1001の中のある複合要素に対して、ネルダーミード法による暫定合同変換パラメータPAの算出処理S1105が初回であるか否かを判定する。複合要素リスト1001の中のある複合要素に対する初回の評価であれば(S1109でYes)、ステップS1110に進み、そうで無い場合は(S1109でNo)、ステップS1111に進む。
ある複合要素に対する初回の評価の場合(S1109でYes)、ステップS1110で、収束評価部115は、本実施形態に係るバイウェイト推定のユークリッド距離比率udの最大値(ユークリッド距離の基準の距離)を、X、Y、Zの各要素について、要素ごとの最大距離以上の値に設定する。すなわち、収束評価部115は、S1106にて取得したX要素のユークリッド距離UXの最大値を読み出し、式(1)のユークリッド距離比率udが100%となる距離(当該基準の距離)を、X要素のユークリッド距離UXの最大値以上に設定する。また、収束評価部115は、Y要素及びZ要素についても同様の設定を行う。このように設定することにより、式(1)におけるユークリッド距離比率udにおいて100%の距離を越える所期の位置ズレがあった場合に、測定形状に応じて起こり得る局所解に陥ることを低減することができる。
ステップS1109でNoの場合、ステップS1111で、収束評価部115は、本実施形態に係るバイウェイト推定のユークリッド距離比率の最大値(ユークリッド距離の基準の距離)を、X、Y、Zの各要素について、要素ごとの平均距離以上から最大距離未満の値に設定する。すなわち、収束評価部115は、S1106にて取得したX要素のユークリッド距離UXの平均値及び最大値を読み出し、式(1)でユークリッド距離比率udが100%となる距離(基準の距離)を、当該平均値以上かつ当該最大値未満の値に設定する。また、収束評価部115は、Y要素及びZ要素についても同様の設定を行う。このように設定することにより、収束にかかる繰り返し数(トライ数)を減らすことができ、時間的に速く収束させることができる。
次に、図17を用いて、局所解に陥っている可能性をチェックするための反復移動照合用閾値Rの使用ルーチンS1112について説明する。
ステップS1701で、収束評価部115は、各測定点とそれに対応する基準点との間の対応点間距離を算出し、予め設定した反復移動照合用閾値Rよりも大きい対応点間距離を有する測定点があるかどうか判定する。そのような測定点が存在しない場合には(S1701でNo)、反復移動照合用閾値R使用のルーチンは終了する。
存在する場合(S1701でYes)、ステップS1702で、収束評価部115は、閾値Rよりも大きい対応点間距離を有する測定点の集合(「差分測定点群」という。)に対して、当該差分測定点群をそれに対応する基準点群(「差分基準点群」という。)に近づけるための新たな暫定合同変換パラメータPBを生成する。ここで、暫定合同変換パラメータPBの生成は、差分測定点群の各測定点及びそれに対応する基準点を用いてステップS1105等と同様の処理を行うことにより得られるため、詳細な説明は省略する。
ステップS1703で、収束評価部115は、差分測定点群に係る暫定合同変換パラメータPBと全測定点(又はエッジに関する測定点)に係る元の暫定合同変換パラメータPAとを掛けあわせ、新たに暫定合同変換パラメータPans(「第2のパラメータ」ともいう。)を生成する。ここで、Pans=Σ(PA×PB)、PA×PB=[PA0 PA1 … PA6]×[PB0 PB1 … PB6]Tである。なお、Pansが意味するところは、暫定合同変換パラメータPAを用いて測定点群を移動させた後に、当該移動後の測定点群をさらに合同変換パラメータPBを用いて移動させる処理を一つの暫定合同変換パラメータで表現したものである。そのため、収束評価部115は、この暫定合同変換パラメータPansを用いることで、暫定合同変換パラメータPAで測定点群を移動させた続きから、基準点群及び測定点群のさらなる位置合わせを行うことができる。そして、収束評価部115は、暫定合同変換パラメータPansを用いて、全測定点と全基準点との間の位置合わせ処理を行う。
暫定合同変換パラメータPansを用いた位置合わせ処理が終了した場合、ステップS1704で、収束評価部115は、全基準点の各々とそれに対応する測定点との間の対応点間距離を計算し、全ての対応点間距離の中に、反復移動照合用閾値Rよりも大きい距離のものがあるかどうかを判定する。ある場合には(S1704でNo)、ステップS1702に戻る。
全ての対応点間距離の中に反復移動照合用閾値Rよりも大きい距離のものが無い場合(S1704でYes)、ステップS1705で、収束評価部115は、暫定合同変換パラメータPansを用いて移動させた後の測定点群と基準点群についての平均対応距離(対応点間距離の平均値)EBaveを算出し、また暫定合同変換パラメータPAを用いて移動させた後の測定点群と基準点群についての平均対応距離EAaveを算出する。
そして、収束評価部115は、平均対応距離EBaveと平均対応距離EAaveとを比較し、平均対応距離EBaveの評価が高かった(EAave>EBave)場合には(S1705でYes)、ステップS1706で、最終的な暫定合同変換パラメータ(「最終パラメータ」ともいう。)として暫定合同変換パラメータPansを採用する。他方、平均対応距離EBaveの評価が低かった(EAave<EBave)場合には(S1705でNo)、ステップS1707で、収束評価部115は、最終的な暫定合同パラメータとしてステップS1105等で算出された元の暫定合同変換パラメータPAを採用する。
このようにして、収束評価部115は、反復移動照合用閾値R使用のルーチンにおいて、元の暫定合同変換パラメータPAを用いて測定点群を移動させた後に、閾値Rよりも大きい対応点間距離を有する測定点だけで構成された差分測定点群を抽出し、差分測定点群(及び対応する差分基準点群)に対する暫定合同変換パラメータPBを算出し、Pans(=Σ(PA×PB))を求め、測定点群を元の暫定合同変換パラメータPAで移動させた場合の評価値(平均対応点間距離)と、当該ルーチンS1112で得られた暫定合同変換パラメータPansを用いて移動させた場合の評価値を比較し、よりよい評価値を有する方の暫定合同変換パラメータを最終的に選択する。このようにすることで、エッジのような輪郭的特徴を有しないワーク50に対する欠陥の抽出処理の場合であっても、局所解に陥った状態に対して外部刺激を与えることができ、ネルダーミード法に従い、位置合わせの真値に最も近づけることができ、その結果、測定点群と基準点群との間の位置合わせ精度が向上する。
図18に、本実施形態の位置合わせ精度の向上結果の一例を示す。図18(a)に示すように、反復移動照合用閾値Rの使用ルーチンS1112を実行しない従来技術では、あるワークを測定し位置合わせ処理を行った場合、測定点群と基準点群との間の位置ずれ量が0.52mmであった。これに対し、図18(b)に示すように、反復移動照合用閾値Rの使用ルーチンS1112を実行する本発明では、同じワークに対して同一の方法により測定し位置合わせ処理を行った場合、測定点群と基準点群との間の位置ずれ量は3.32×10−14mmであり、位置ずれは大きく低減し、位置合わせ精度が大きく向上した。
また、図19は、深溝等が表面に形成されていない(言い換えるとエッジを抽出しにくい)ワークに関する測定点群と基準点群とを位置合わせ処理した関係を示す具体例である。図19(a)は、当該ワークの基準点群1901を表し、図19(b)は、従来技術による方法により測定点群1902と基準点群1901とを位置合わせ処理した結果を示す。他方、図19(c)は、本実施形態の位置合わせ処理(つまり、反復移動照合用閾値Rの使用ルーチンS1112を行った場合)により測定点群1902と基準点群1901とを位置合わせ処理した結果を示す。
図19(b)に示すように、従来技術では、このように深溝等が無くエッジのとりにくい当該ワークの大きい面積の表面において基準点群と測定点群は概ね一致した状態で位置合わせ処理が収束する(局所解に陥る)が、端の付近や盛り上がった部位等では未だに正確な位置合わせ状態とはなっていない。しかしながら、図19(c)に示すように、本実施形態においては、測定点群1902と基準点群1901とは、端の付近や盛り上がった部位等においてもほぼ精度よく位置合わせが行われている。
以上のように、測定点群と基準点群とを位置合わせする際に、本発明のように反復移動照合用閾値Rの使用ルーチンS1112を実行することにより、より正確な位置合わせが可能となり、その結果、以下に述べるように欠陥抽出の精度も向上することになる。
図8の説明に戻る。ステップS807で、収束評価部115は、算出された逐次収束評価値に基づいてこの対応付けられた対応点群が逐次収束しているかどうか判定する(S807)。収束しない場合(S807でNo)、ステップS804に戻る。収束する場合(S807でYes)、ステップS808で、点群変換部116は、ステップS1705又はS1706にて取得された暫定合同変換パラメータ(Pans又はPA)を合同変換パラメータとして設定する。
ステップS809で、点群変換部116は、ステップS808で設定された合同変換パラメータを用いて測定点群の位置座標を変換し、測定点群を移動させる。ステップS810で、表面評価モジュール110は、移動後の全測定点群と全基準点群とから平均対応距離(対応点間距離の平均値)を算出する。
ステップS811で、表面評価モジュール110は、算出された平均対応点間距離と所定の閾値とを比較して、終了条件が満たされたかどうか(言い換えると、平均対応点間距離の値が当該所定の閾値以下であるかどうか)を判定する。なお、この判定ステップS811において、上限の繰り返し回数を付加的に設定しておくと好都合である。終了条件が満たされていない場合(S811でNo)、ステップS804に戻る。終了条件が満たされた場合(S811でYes)、この位置合わせルーチンは終了する。
図6Aの説明に戻り、位置合わせルーチンが終了すると、ステップS612で、欠陥評価モジュール120は、表面欠陥領域の検出を行う欠陥判定ルーチンを実行する。図20を用いて、欠陥判定ルーチンS612について説明する。
ステップS2001で、対応測定群抽出部121は、対応点間距離に係る閾値を用いて、対応する基準点との間の対応点間距離(X,Y,Z)が所定の閾値以上となる測定点の集合体(「特定測定点群」という。)を誤対応領域として抽出する処理を実行する。
誤対応領域が抽出されなかった場合(S2002でNo)、この欠陥判定ルーチンは終了する。誤対応領域が抽出された場合(S2002でYes)、ステップS2003で、欠陥判定部122は、当該誤対応領域に含まれている測定点それぞれの間の隣接点間距離が予め設定されている閾値以下となる集合をひと塊として、当該集合ごとに番号を付けるラベリング処理を行う。
ステップS2004で、欠陥判定部122は、当該集合ごとに特徴量(重心、等価楕円体長軸長、等価楕円体長軸角度、フェレ径等)を算出する。欠陥判定部122は、その特徴量が所定の設定値よりも大きい場合(S2005でYes)、当該集合を欠陥と判定し、その情報をコントローラ30の記憶装置に記憶させる。なお、欠陥判定部122は、特徴量が設定値以下である場合(S2005でNo)、欠陥と判定せずその情報を記録せず、このルーチンは終了する。
欠陥判定ルーチンS612が終了すると、ステップS613で、欠陥評価モジュール120は、型修正による形状違い判定ルーチンを実行する。図21を用いて、この判定ルーチンS613について説明する。
型修正による形状違い判定ルーチンS613では、ワーク50に係る金型の型修正による形状違いの影響が、型修正後の異なるワーク50同士で同じ位置・同じ場所に発生することを利用する。まず、型修正による形状違い判定部123は、ステップS2101で、前回の測定対象物の欠陥の特徴量を読み出し、ステップS2102で、今回の測定対象物の欠陥の特徴量を読み出す。
次に、型修正による形状違い判定部123は、前回と今回の欠陥の特徴量(重心、等価楕円長軸長、等価楕円長軸角度、フェレ径等)に差が所定の範囲内にあれば(S2103でYes)、ステップS2104で型修正箇所有りと判定し、当該所定の範囲外ならば(S2103でNo)、ステップS2105で型修正箇所無しと判定する。
型修正による形状違い判定ルーチンS613が終了し、型修正箇所がある場合(S614でYes)には、欠陥評価モジュール120は、その測定ブロック52に関する基準点データ(エッジ基準点データ及び/又は全基準点データ)を新たに型修正後の基準点データとして追加し(S615)、型修正箇所が無ければ(S614でNo)追加しない。
ステップS610の説明に戻り、同種のワーク50(測定対象物)について追加の基準点データが有る場合(つまり型修正後の基準点データが有る場合)(S610でYes)、ステップS616で、表面評価モジュール110は、上述したICPアルゴリズムを用いて、測定点群と型修正前の基準点群との間の位置合わせ処理、及び測定点群と型修正後の基準点群との間の位置合わせ処理を行う位置合わせルーチンを実行する。位置合わせルーチンS616の詳細は、位置合わせルーチンS611と同様であり、説明を省略する。
位置合わせルーチンS616が終了すると、ステップS617で、欠陥評価モジュール120は、ワーク50に係る金型の型修正前と型修正後のワーク50が混在しても、基準点群からずれた測定点群が欠陥なのか、あるいは型修正箇所なのかを判定する欠陥・型修正箇所判定ルーチンを実行する。図22を用いて、この判定ルーチンS617を説明する。
まず、ステップS2201で、誤対応測定群抽出部121は、型修正前の基準点データを基に、所定の閾値以上の対応点間距離を有する測定点の集合(つまり、特定測定点群)を誤対応領域として抽出する。誤対応領域が抽出されなかった場合(S2201でNo)、ステップS2207に進む。
誤対応領域が抽出された場合(S2201でYes)、欠陥判定部122は、ステップS2203で、当該誤対応領域に含まれている測定点のうち、予め設定され閾値以下の隣接点間距離を有する測定点の集合をひと塊として、当該集合ごとに番号を付けるラベリング処理を行い、ステップS2204で、当該集合ごとに特徴量(重心、等価楕円長軸長、等価楕円長軸角度、フェレ径等)を算出する。
ある集合に係る特徴量が所定の設定値よりも大きい場合(S2205でYes)、ステップS2206で、欠陥判定部122は、当該特徴量を有する当該集合を欠陥と判定し、その情報を第1の欠陥情報としてコントローラ30のRAMに記録する。全ての集合に係る特徴量が所定の設定値以下である場合(S2205でNo)、欠陥判定部122は、全ての集合に欠陥が無いと判定し、その情報を記録しない。
ステップS2207で、誤対応測定群抽出部121は、型修正後の基準点データを基に、所定の閾値以上の対応点間距離を有する測定点の集合(つまり、特定測定点群)を誤対応領域として抽出する。誤対応領域が抽出されなかった場合(S2208でNo)、ステップS2213に進む。
誤対応領域が抽出された場合(S2208でYes)、欠陥判定部122は、ステップS2209で、当該誤対応領域に含まれている測定点のうち、予め設定され閾値以下の隣接点間距離を有する測定点の集合をひと塊りとして、当該集合ごとに番号を付けるラベリング処理を行い、ステップS2210で、当該集合ごとに特徴量(重心、等価楕円長軸長、等価楕円長軸角度、フェレ径等)を算出する。
ある集合に係る特徴量が所定の設定値よりも大きい場合(S2211でYes)、ステップS2206で、欠陥判定部122は、当該特徴量を有する当該集合を欠陥と判定し、その情報を第2の欠陥情報としてコントローラ30のRAMに記録する。全ての集合に係る特徴量が所定の設定値以下である場合(S2211でNo)、欠陥判定部122は、全ての集合に欠陥が無いと判定し、その情報を記録しない。
次に、ステップS2201〜S2212にて抽出された欠陥が、ワーク50に係る金型の型修正による形状違いによるものではなく、本当の欠陥なら、型修正前と型修正後の両方の基準点データを基にした評価において欠陥として抽出されると考えられる。そこで、欠陥・型修正箇所判定部124は、第1の欠陥情報及び第2の欠陥情報の両方に欠陥として判定された共通の集合(塊)がある場合(S2213でYes)、ステップS2214で、それら共通の集合(塊)を欠陥として判定する。そうでない場合は、欠陥ではない判定する(S2213でNo)。
次に、S2201〜S2212にて抽出された欠陥が型修正前の基準点データからのみを検出した場合(言い換えると、第1の欠陥情報は得られたが、第2の欠陥情報は得られなかった場合)(S2215でYes)、ステップS2216で、欠陥・型修正箇所判定部124は、第1の欠陥情報が欠陥によるものではなく、金型の型修正に起因するものであると判定し、第1の欠陥情報を、型修正箇所とみなし、型修正後のワーク50(測定対象物)の数をカウントする。第2の欠陥情報のみ取得された場合、又は第1及び第2の欠陥情報が取得されない場合(S2215でNo)、欠陥・型修正箇所判定ルーチンは終了する。
欠陥・型修正箇所判定ルーチンS617が終了すると、ステップS618で、欠陥評価モジュール120は、型修正後のワーク50(測定対象物)の数が所定の設定値以下か否かを判定し、型修正前と型修正後の測定対象物が混在しているかどうか判定する。
型修正後のワーク50の数が所定の設定値以下なら型修正前後のワーク50が混載していると判定され(S618でYes)、ステップS621に進む。他方、型修正後のワーク50の数が所定の設定値より多い場合は型修正前のワーク50が無いと判定され(S618でNo)、欠陥評価モジュール120は、ステップS619で型修正前の基準点データを消去し、ステップS620で型修正後のワーク50の数のカウントをリセットする。
なお、ステップS606でX軸方向走査を停止すると、ステップS607からS620が行われると同時に、Yステージ制御部39は、ステップS611で、Yステージ6を動作させ、所定のピッチでワーク50をY軸方向にシフトさせる。ステップS607からS620の処理及びY軸方向のシフト処理S621が終了すると、ステップS623で、コントローラ30は、X軸方向走査をすべきワーク50上の測定領域がまだ残っているかどうか判定する(図6B)。
X軸方向走査をすべき測定領域が残っている場合(S623でYes)、ステップS622で、Xステージ制御部38は、X軸方向走査の方向が反転するようにXステージ5を作動させる。そして、ステップS604〜S623まで同様の処理が行われる。X軸方向走査をすべき測定領域が残っていない場合(S623でNo)、ステップS624で、光源制御部31は、レーザスリット投光器13の電源を落とし、スリット光SLの照射が停止される。
ステップS625で、コントローラ30は、測定死角の発生に伴う測定不能箇所の測定データを補完するために、回転テーブル7を90度回転させる必要があるかどうか判定する。当該判定の基準は、予めワーク50の形状等に応じて予めユーザが指定しておいてもよいし、コントローラ30が測定点データの取得状況を考慮して自ら判定してもよい。
回転テーブル7を90度回転させる必要がある場合(S625でYes)、回転テーブル制御部37は、回転テーブル7を90度回転させる。次いで、再びステップS602に戻り、同様の処理が繰り返される。なお、この90度の追加回転で不十分な場合には、最初の姿勢位置に対する180度位置と270度位置を行うようにしてもよい。
回転テーブル7を90度回転させる必要がない場合は(S625でNo)、ステップS626で、コントローラ30は、全ての測定ブロックにおける欠陥評価の結果に基づいて総合判定を行う。この総合判定において、ワーク50の全体を示す全体図の上で欠陥の位置をマーキングした欠陥位置表示図が入出力デバイス40(モニタ等)を通じて出力される。
次に、ワーク50に係る金型の摩耗に起因する形状違いによる誤判定を防止するために、基準点データ変更部133は、基準点データを所定の頻度で変更する基準点データ変更ルーチンS627を実行する。図23に基準点データ変更ルーチンS627を示す。
ステップS2301で、基準点データ変更部133は、ワーク50の数をカウントし、その数が所定の設定数以下なら(S2302でNo)、このルーチンは終了する。ワーク50の数が所定の設定数よりも大きいと(S2302でYes)、ステップS2303で、基準データ変更部133は、そのワーク50に欠陥有りかどうか判定する。ワーク50に欠陥がある場合には(S2303でYes)、このルーチンは終了する。欠陥が無い場合(S2303でNo)、ステップS2305で、測定点データ形状判定部132は、入力部131が読み出した測定点データからワーク50の形状が設計寸法どおりに形成されているか判定するする。形状がNGの場合(言い換えると、測定点データから推定されるワーク50の形状が設計寸法どおりの形状でない場合)(S2305でNo)、このルーチンは終了し、OKの場合(言い換えると、測定点データから推定されるワーク50の形状が設計寸法どおりの形状である場合)(S2305でYes)、ステップS2306で、基準点データ変更部133は、測定点データを基準点データに変更する。
このようにして、本実施形態に係る欠陥抽出装置1は、反復移動照合用閾値R使用のルーチンにおいて、算出された元の暫定合同変換パラメータPAを用いて測定点群を移動させた後に、閾値Rよりも大きい対応点間距離を有する測定点だけで構成された差分測定点群を抽出し、差分測定点群(及び対応する基準点群)に対する暫定合同変換パラメータPBを算出し、Pans(=Σ(PA×PB))を求め、全測定点群を元の暫定合同変換パラメータPAで移動させた場合の評価値(平均対応点間距離)と、反復移動照合用閾値R使用のルーチンで得られた暫定合同変換パラメータPansを用いて移動させた場合の評価値とを比較し、良い評価値を有する方の暫定合同変換パラメータを選択する。このようにすることで、エッジのような輪郭的特徴を有しないワークに対しても、局所解に陥った状態に対して外部刺激を与えることができ、ネルダーミード法に従い、位置合わせの真値にもっとも近づけることができ、その結果、精度よい位置合わせ処理が可能となる。
[第2実施形態]
次に、本発明の第2実施形態に係る欠陥抽出方法は、第1実施形態と略同一であるが、分離照合処理を行う点で異なる。
本実施形態に係る分離照合処理は、取得された測定点全てについて同一基準の位置合わせ処理や欠陥抽出処理等を提供するのではなく、ワーク50の測定部位に応じて、特徴的な傾向が生じる部位に係る測定点データに対する処理と、そうでない部位に係る測定点データに対する処理とを分離するものである。
図24A及び24Bを用いて、欠陥抽出に関する分離照合処理の例を説明する。例えば、図24Aに示すように、鋳造され表面に直線状の深溝55が形成されたワーク50から取得された測定点データに対して位置合わせ処理及び欠陥抽出処理を行う場合、ワーク50の比較的平らな部位(加工面)2401は加工により比較的きれいな面となっているが、深溝55の底の部位(鋳肌面)2402では鋳造上欠陥ではない比較的小さな凹凸が生じやすい。
図24Aに示すように、測定点群s1〜s9を基準点群m1〜m9に位置合わせした後に、加工面2401では符号2410で示す点群が欠陥に起因するものであるとすると、その欠陥抽出処理に用いる判定基準は、基準点に対する測定点の少しのずれ(比較的小さい対応点間距離)で欠陥と判定するものである。他方、鋳肌面2402では符号2412で示す部位が欠陥に起因するものであり、符号2411、2413で示す部分は欠陥に起因するものではなく、製造上生じてしまう比較的小さな凹凸に起因するものであるとする。そうすると、加工面2401に対する誤対応領域の判定基準(欠陥候補判定閾値)を鋳肌面2402に対して用いてしまうと、本来ならば欠陥ではない部分2411、2413も欠陥であると判定されるおそれがある。そのため、測定点データがワーク50のどの部位に対応するかに応じて、誤対応領域の判定基準(欠陥候補判定閾値)を変える(判定基準に違いをもたせる)とよい。
また、図24Bを用いて説明すると、ワーク50の加工面2401と鋳肌面2402について測定点(○)が得られたとすると、凹凸が生じやすい鋳肌面2402に対する測定点のバラつきの許容範囲は、加工面2401に対するものよりも大きい。各測定点(○)を対応する基準点(△)に対して位置合わせした後に欠陥判定処理を行う場合、鋳肌面2402に係る欠陥候補判定閾値dth2(測定点と対応する基準点との間の距離)は、加工面2401に係る欠陥候補判定閾値dth1よりも大きく設定することで、鋳肌面2402に製造上生じてしまう比較的小さな凹凸の影響を低減し、より正確な欠陥候補点を抽出することができる。この例では、位置合わせ後の測定点について、閾値Zthよりも大きいZ値を有する測定点に対して欠陥候補判定閾値dth1を適用し、閾値Zthよりも小さいZ値を有する測定点に対して欠陥候補判定閾値dth2を適用するようにしている。
さらに、撮像に際し画角の影響が生じる場合には、カメラ17からみて手間側にあたるワーク50の測定対象部分についての測定点間の間隔は、同奥側にあたる部分についての測定点間の間隔よりも大きくなることがある。そこで、本実施形態の分離照合処理を適用し、欠陥抽出処理や位置合わせ処理の際に、当該手間側に係る測定点に対する判定基準と、当該奥側に係る測定点に対する判定基準を変えるとよい。
本実施形態の分離照合処理を用いることにより、より正確な位置合わせ処理が可能となり、また、より正確な欠陥抽出処理が可能となる。
(その他)
なお、本発明の欠陥抽出処理に係るコントローラ30の各部が有する作用・機能は、別の部にその作用・機能を持たせても良い。例えば、収束評価部115が点群変換部116の機能を有していてもよいし、欠陥判定部122が誤対応測定点群抽出部121の機能を有していてもよい。