以下、本発明の実施形態について、図面を参照しながら説明する。ただし、以下の実施形態で説明される寸法、材料、形状、構成要素の相対的な位置等は任意であり、本発明が適用される装置の構造又は様々な条件に応じて変更される。また、特別な記載がない限り、本発明の範囲は、以下に説明される実施形態で具体的に記載された形態に限定されるものではない。なお、以下で説明する図面で、同機能を有するものは同一符号を付け、その繰り返しの説明は省略することもある。
図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及び生成部117を有する。なお、点群対応付け部113、重み演算部114、収束評価部115及び点群変換部116を合わせて「位置合わせ手段」といい、位置合わせ手段は、測定点と基準点とを位置合わせする。
入力部111は、3次元測定点データ演算部34からの測定点データを取得し、格納部112は、ワーク50の基準となる表面形状を表す基準点データを格納している。ワーク50表面の欠陥評価を測定ブロック52(図4)ごとに行う場合には、基準点データは、ワーク50の測定領域51の予め区分けされた測定ブロック52ごとに対応するように、区分けされていてもよい。また、後述するように、格納部112には、間引き測定点群の各測定点に対応する基準点からなる間引き基準点群のデータも格納される。
点群対応付け部113は、K−Dtree等を用いて、各測定点が最も小さい対応点間距離(測定点と対応する基準点との間の距離)を有するように、測定点と基準点とを対応付ける。また、点群対応付け部113は、基準点と測定点とを対応付けた後に、各測定点間の隣接点間距離(測定点に係る隣接点間距離)及び/又は各基準点間の隣接点間距離(基準点に係る隣接点間距離)を算出する。
ここで、本実施形態では、所定の位置合わせアルゴリズムを用いて、測定ブロック52ごとに、各測定点とそれに対応する基準点との間の距離(対応点間距離)を逐次収束させて、測定ブロック52に含まれる複数の基準点(基準点群)と複数の測定点(測定点群)との位置合わせ処理を行う。所定の位置合わせアルゴリズムとしては、ICP(Iterative Closest Point)アルゴリズムが用いられる。ICPアルゴリズムは、対応点間距離の2乗和を最小とする合同変換パラメータ(R,t)を推定し、逐次収束させていくアルゴリズムである。ここで、Rは回転行列、tは平行移動ベクトルである。
重み演算部114は、点群対応付け部113により算出された基準点miに係る隣接点間距離(又は測定点siに係る隣接点間距離)diに基づいて、基準点miに係る隣接点間距離の重み係数(又は測定点siに係る隣接点間距離重み係数)γiを算出する。ここで、iは、基準点(又は測定点)の点番号であって1≦i≦kであり、kは、基準点(又は測定点)の総数(測定ブロック52ごとに欠陥の評価を行う構成では、測定ブロック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となる関数としてもよい。当該所定の閾値は、基準点群や測定点群の特性により適切に決定することにより、想定している位置座標と実際の位置座標との誤差が大きいことが予想される測定点とそれに対応する基準点とが逐次収束評価に及ぼす影響を低減することができる。
このようなICPアルゴリズムを用いる位置合わせ処理において、M推定を導入し、対応点間距離に基づいて決定された対応点間距離の重み係数を逐次収束処理における逐次収束評価に用いる。例えば、測定点si(又は対応する基準点mi)に係る対応点間距離をeiとすると、対応点間距離の重み係数ρiは、重み関数をPとすると、
ρi=P(ei)
で求められる。ここで、重み関数Pを次のようなしきい値関数としてもよい。
|ei|が設定幅Bi以下の場合、
ρi=(Bi 2/2 )(1−(1−(ei/Bi)2)
|ei|が設定幅Biを越える場合、
ρi=(Bi 2/2 )。
逐次収束処理における逐次収束評価値Jは、全点数をNとすれば、対応点間距離ei、対応点間距離の重み係数ρi及び隣接点間距離の重み係数γiをパラメータとする評価関数Hを用いて以下の式より導出することができる。
J=(1/N)ΣH(ei,ρi,γi) …(1)
演算を簡単化するために、トータル重み係数wiを各重み係数の乗算とし、
J=(1/N)ΣH(ei,wi)、wi=ρi×γi …(2)
となる。
収束評価部115は、測定点群と基準点群とを位置合わせするための合同変換パラメータ(単に「パラメータ」ともいう。)を算出し、合同変換パラメータを用いて測定点群を基準点群に収束移動させようとする際に式(2)を用いて、その逐次収束評価値を算出し、測定点群の移動が基準点群に逐次収束していくかどうかを評価する。
点群変換部116は、収束評価部115によって収束すると判定された合同変換パラメータを用いて測定点群の位置座標を変換する。言い換えると、点群変換部116は、当該合同変換パラメータを用いて、測定点群を基準点群に向けて移動させる。また、点群変換部116は、各測定点に係る対応点間距離及びその平均値(平均対応点間距離)も算出する。
生成部117は、詳細には後述するが、各測定点に係る勾配強度を算出し、勾配強度とその点数に関するヒストグラムを作成する。そして、生成部117は、当該ヒストグラムの中から大きい勾配強度を有するビン(縦棒)から順にビンを加算していき、加算したビンに含まれていない測定点を全測定点から間引くことにより、間引き測定点群を生成する。
欠陥評価モジュール120は、誤対応測定点群抽出部121、欠陥判定部122、型修正による形状違い判定部123及び欠陥・型修正箇所判定部124を有する。誤対応測定点群抽出部121は、後述する表面欠陥の判定アルゴリズムに基づいて、欠陥に対応した測定点を含むと推定された領域である誤対応領域(欠陥の候補点)を抽出する。欠陥判定部122は、誤対応測定群抽出部121にて抽出された誤対応領域が欠陥であるか否かを判定する。
さて、測定対象物が金型製作されるような製品の場合、ロット生産の途中で金型の一部を修正した場合、金型修正後の正常に製作された製品の形状と、金型修正前の基準点データによる形状が一致しなくなり、その不一致を欠陥とみなしてしまう問題が生じる。後述する、型修正による形状違い判定ルーチンS613A、S613B及び欠陥・型修正箇所判定ルーチンS618は、この問題を解決すべく、欠陥判定部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の欠陥抽出方法について説明する。
図5に示すように、従来技術では、対応点間距離の収束に時間がかかり、かつ、最終的に測定点と基準点との間の対応点間距離が0.1(mm)から小さくならない等、位置合わせ精度があまり良いものではなかったが、本実施形態に係る欠陥抽出方法は、収束速度を向上させ、かつ、最終的な測定点と基準点との間の対応点間距離が0.0001(mm)となったように位置合わせ精度を向上させることができる。
ここで、限定されるものではないが、前述のようにワーク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は、全測定点から最初の位置合わせ処理に用いる測定点以外の測定点を間引くために用いる勾配強度を算出するために、勾配強度算出ルーチンを実行する。図7を用いて、勾配強度算出ルーチンS608について説明する。
ステップS701で、生成部117は、全測定点のデータを読み出す。ステップS702で、生成部117は、図8に示すように、ある測定点s5について、それに隣接する測定点s1〜s4、s6〜s9の3次元位置座標(x,y,z)を基に、x方向の近傍については式(3)を用い測定点s5の左右側として加重平均値xlw及びxrwを算出し、y方向の近傍については式(4)を用い測定点s5の上下側として荷重平均値yuw及びybwを算出する。なお、zl0=zu0、zr0=zu2、zl2=zb0、及びzr2=zb2である。
ステップS703で、生成部117は、式(5)及び(6)を用いて、x領域の補間したz値及びy領域の補間したz値を線形補間により算出する。ここで、式(5)及び(6)において、x0、x1、z0、z1及びy0、y1、z0、z1は、それぞれ加重平均値の線形上にある近傍座標を示す。
ステップS703で、さらに、生成部117は、x方向の微分量及びy方向の微分量を、式(7)を用いて算出し、最終的に式(8)を用いて測定点s5に係る勾配強度Iを算出する。このようにして、生成部117は、全測定点の各点に対して勾配強度を算出する。なお、勾配強度は、測定点と関連付けて、言い換えると測定点がどの程度の勾配強度を有しているかが分かるようにコントローラ30のRAMに記憶される。
ステップS704で、生成部117は、全測定点の各点に係る勾配強度を標準化する。例えば、全測定点のうち最大の勾配強度を有する測定点の勾配強度が1となるように、その他の測定点の勾配強度を、当該最大の勾配強度で割ることにより標準化する。
生成部117は、ステップS705で予め設定された点数閾値Tpを読み出し、ステップS706で予め設定された点数閾値に係る許容値Δを読み出す。なお、限定されないが、点数閾値Tpは全測定点の数の100分の1程度であり、許容値Δは、0であってもよいし、点数閾値Tpの10%程度であってもよい。
ステップS707で、生成部117は、全測定点に係る標準化された勾配強度のヒストグラムを作成する。ヒストグラムのビン(縦棒)の幅を、例えば勾配強度0.1ごとに点数(測定点の数)を積み上げるように設定してもよい。
ステップS708で、生成部117は、当該ヒストグラムの中で最も大きい勾配強度(=1.0)を有する測定点が含まれるビンから降順に、ビンを加算していく。ビンを加算した結果、合計の加算点数が点数閾値Tpから許容値Δを引いた数(Tp−Δ)未満であれば(S709でNo)、ステップS708が繰り返される。
ビンを加算していった結果、合計の加算点数が点数閾値から許容値を引いた数(Tp−Δ)以上である場合(S709でYes)、ステップS710で、生成部117は、当該加算点数が点数閾値Tpに許容値Δを加えた数(Tp+Δ)以下であるかどうか判定する。言い換えると、点数閾値Tpから許容値Δを引いた数(Tp−Δ)を第1の閾値とし、点数閾値Tpから許容値Δを加えた数(Tp+Δ)を第2の閾値とすると、ステップS709及びS710の条件を満たす範囲は、第1の閾値≦加算点数≦第2の閾値である。
加算点数が点数閾値Tpに許容値Δを加えた数(Tp+Δ)より大きい場合(S710でNo)、ステップS711で、生成部117は、Tp+Δを超えてしまう原因となったビンを加算する前の値に加算点数を戻し、その原因となったビンの分解能を10倍に上げ(言い換えると、ステップS707で作成したヒストグラムの当該ビンの幅を10分の1に狭め)、局所的に分解能を上げたヒストグラムを作成する。なお、10倍に限定されるものではなく、5倍であってもよいし、2倍であってもよい。
加算点数が点数閾値Tpに許容値Δを加えた数(Tp+Δ)以下の場合(S710でYes)、ステップS712で、生成部117は、加算したビンに含まれる測定点以外の測定点を全測定点の中から間引き(取り除き)、加算したビンに含まれる測定点(言い換えると、全測定点の中で勾配強度が大きいほうから所定数の測定点)からなる測定点群(「間引き測定点群」という。)のデータを生成する。
例えば、図9に示すように、全測定点の勾配強度についてヒストグラム900が得られたとする。最も大きい勾配強度を有する測定点が含まれるビン901から降順に、その次のビン902、903、904…といった具合にビンを積み上げ、最終的にビン910まで加算したときに、ステップS709及びS710の条件を満たしたとする。そして、加算したビン901〜910に含まれる測定点以外の測定点を全測定点の中から間引き、加算したビン901〜910に含まれる測定点からからなる間引き測定点群920のデータを生成する。
図6Aの説明に戻って、同種のワーク50に対する追加の基準点データが無い場合(つまり型修正後の基準点データが無い場合)(S609でNo)、ステップS610で、表面評価モジュール110は、ICPアルゴリズムを用いて、間引き測定点群と対応する基準点群(「間引き基準点群」という。)との間の位置合わせ処理を行う(間引き測定点群に対する位置合わせルーチン)。このステップは、言わば、測定点と基準点との間の高速位置合わせ処理である。
図10を用いて、間引き測定点群に対する位置合わせルーチンS610について説明する。まず、表面評価モジュール110の入力部111は、ステップS1001で、間引き測定点群のデータを読み出し、ステップS1002で、当該間引き測定点群の各測定点に対応する基準点(間引き基準点群)のデータを格納部112から読み出す。
ステップS1003で、点群対応付け部113は、K−Dtree等を用いて、間引き測定点群の各測定点が最も小さい対応点間距離を有するように測定点と基準点とを対応付ける。また、点群対応付け部113は、各測定点間の隣接点間距離及び各基準点間の隣接点間距離も算出する。
ステップS1004で、重み演算部114は、間引き測定点群の測定点siに関する対応点間距離に基づく重み係数ρiと、基準点(又は測定点)に係る隣接点間距離に基づく重み係数γiを算出し、これらを掛けあわせてトータル重み係数wi(=ρi×γi)を算出する。
ステップS1005で、収束評価部115は、式(2)を用いて、逐次収束評価値を算出する。ステップS1006で、収束評価部115は、算出された逐次収束評価値に基づいてこの対応付けられた対応点群が逐次収束しているかどうか判定する。収束しない場合(S1006でNo)、ステップS1003に戻る。
収束する場合(S1006でYes)、ステップS1007で、収束評価部115は、間引き測定点群と間引き基準点群とができる限り一致するような合同変換パラメータ(R,t)(「第1のパラメータ」ともいう。)を生成する。ここで、Rは回転行列、tは並進移動ベクトルである。
ステップS1008で、点群変換部116は、ステップS1007で生成された合同変換パラメータを用いて、間引き測定点群の各測定点の位置座標を変換し、間引き測定点群を移動させる。また、ステップS1009で、点群変換部116は、当該合同変換パラメータを用いて、全測定点の位置座標を変換し、全測定点を移動させる。なお、変換された位置座標を有する全測定点のデータは、後述する全点位置合わせルーチンS611で使用されるため、コントローラ30のRAMに一時的に保存される。
ステップS1010で、点群変換部116は、移動後の間引き測定点群の各測定点について対応する基準点との間の対応点間距離を算出し、その平均値も算出する。
ステップS1011で、表面評価モジュール110は、移動後の間引き測定点群に係る対応点間距離の平均値と予め設定された閾値とを比較し、終了条件が満たされたかどうか(言い換えると、対応点間距離の平均値が当該所定の閾値以下であるかどうか)を判定する。なお、この判定ステップS1011において、上限の繰り返し回数を付加的に設定しておくと好都合である。終了条件が満たされていない場合(S1011でNo)、ステップS1003に戻る。終了条件が満たされた場合(S1011でYes)、この間引き測定点群に対する位置合わせルーチンは終了する。
図6Aの説明に戻り、間引き測定点群に対する位置合わせルーチンS610が終了すると、ステップS611で、ステップS1009において移動させた全測定点に対する位置合わせルーチンが行われる。このステップは、言わば、位置合わせの最終的な微調整処理である。図11を用いて、間引き測定点群に対する位置合わせルーチンS611について説明する。
まず、入力部111は、ステップS1101で、ステップS1009において移動させた全測定点のデータ(移動後の全測定点の各点に係る変換後の位置座標のデータ)を読み出し、ステップS1102で、全基準点のデータを格納部112から読み出す。
ステップS1103で、点群対応付け部113は、K−Dtree等を用いて、全測定点の各点が最も小さい対応点間距離を有するように測定点と基準点とを対応付ける。また、点群対応付け部113は、各測定点間の隣接点間距離及び各基準点間の隣接点間距離も算出する。
ステップS1104で、重み演算部114は、測定点siに関する対応点間距離に基づく重み係数ρiと、基準点(又は測定点)に係る隣接点間距離に基づく重み係数γiを算出し、これらを掛けあわせてトータル重み係数wi(=ρi×γi)を算出する。
ステップS1105で、収束評価部115は、式(2)を用いて、逐次収束評価値を算出する。ステップS1106で、収束評価部115は、算出された逐次収束評価値に基づいてこの対応付けられた対応点群が逐次収束しているかどうか判定する。収束しない場合(S1106でNo)、ステップS1103に戻る。
収束する場合(S1106でYes)、ステップS1107で、収束評価部115は、全測定点と全基準点とができる限り一致するような合同変換パラメータ(R,t)(「第2のパラメータ」ともいう。)を生成する。
ステップS1108で、点群変換部116は、ステップS1107で生成された合同変換パラメータを用いて、全測定点の位置座標を変換し、全測定点を移動させる。ステップS1109で、点群変換部116は、移動後の全測定点の各点について対応する基準点との間の対応点間距離を算出し、その平均値も算出する。
ステップS1110で、表面評価モジュール110は、算出された対応点間距離の平均値と予め設定された閾値とを比較し、終了条件が満たされたかどうか(言い換えると、対応点間距離の平均値が当該所定の閾値以下であるかどうか)を判定する。ここで、ステップS1110における当該閾値は、ステップS1011における閾値よりも小さい値に設定し、ステップS1110では、ステップS1011よりも高い位置合わせ精度が要求されるようにしてもよい。なお、この判定ステップS1110において、上限の繰り返し回数を付加的に設定しておくと好都合である。終了条件が満たされていない場合(S1110でNo)、ステップS1103に戻る。終了条件が満たされた場合(S1110でYes)、この間引き測定点群に対する位置合わせルーチンは終了する。
図6Aの説明に戻り、ステップS612で、欠陥評価モジュール120は、表面欠陥領域の検出を行う欠陥判定ルーチンを実行する。図12を用いて、欠陥判定ルーチンS612について説明する。
ステップS1201で、対応測定群抽出部121は、対応点間距離に係る閾値を用いて、対応する基準点との間の対応点間距離が所定の閾値以上となる測定点の集合体(「特定測定点群」という。)を誤対応領域として抽出する処理を実行する。
誤対応領域が抽出されなかった場合(S1202でNo)、この欠陥判定ルーチンは終了する。誤対応領域が抽出された場合(S1202でYes)、ステップS1203で、欠陥判定部122は、当該誤対応領域に含まれている測定点それぞれの間の隣接点間距離が予め設定されている閾値以下となる集合をひと塊として、当該集合ごとに番号を付けるラベリング処理を行う。
ステップS1204で、欠陥判定部122は、当該集合ごとに特徴量(重心、等価楕円体長軸長、等価楕円体長軸角度、フェレ径等)を算出する。欠陥判定部122は、その特徴量が所定の設定値よりも大きい場合(S1205でYes)、当該集合を欠陥と判定し、その情報をコントローラ30の記憶装置に記憶させる。なお、欠陥判定部122は、特徴量が設定値以下である場合(S1205でNo)、欠陥と判定せずその情報を記録せず、このルーチンは終了する。
図6Aの説明に戻り、欠陥判定ルーチンS612が終了すると、次のステップで、欠陥評価モジュール120は、型修正による形状違い判定ルーチンを実行する。このルーチンでは、以下図13及び14を用いて説明する2種類の型修正による形状違い判定ルーチンS613A、S613Bのいずれかが実行される。いずれのルーチンを使用するかはワーク50の種類等に応じて変更してもよい。例えば、深溝等のエッジを抽出できるワーク50に対しては、型修正による形状違い判定ルーチンS613Bを使用し、そうでないワーク50に対しては型修正による形状違い判定ルーチンS613Aを使用するようにすればよい。
まず、図13に示す第1の型修正による形状違い判定ルーチンS613Aでは、ワーク50に係る金型の型修正による形状違いの影響が、型修正後の異なるワーク50同士で同じ位置・同じ場所に発生することを利用するものである。
型修正による形状違い判定部123は、ステップS1301で前回の測定対象物(ワーク50)の欠陥の特徴量を読み出し、ステップS1302で今回の測定対象物の欠陥の特徴量を読み出す。
次に、型修正による形状違い判定部123は、前回と今回の欠陥の特徴量(重心、等価楕円長軸長、等価楕円長軸角度、フェレ径等)の差が所定の範囲内にあれば(S1303でYes)、ステップS1304で型修正箇所有りと判定し、当該所定の範囲外ならば(S1303でNo)、ステップS1305で型修正箇所無しと判定する。
次に、図14に示す第2の型修正による形状違い判定ルーチンS613Bでは、ワーク50の型修正による形状違いが型修正前の形状と類似していることを利用するものである。
ステップS1401で、型修正による形状違い判定部123は、基準点データを読み出す。エッジに係る測定点(エッジ測定点)の抽出が比較的可能な深溝等を有するワーク50に対する処理の場合には、当該基準点データには、全基準点のデータに加えて、当該ワークのエッジに係るエッジ基準点のデータも含まれる。
ステップS1402で、型修正による形状違い判定部123は、今回の測定対象物の欠陥の特徴量を読み出す。ステップS1403で、型修正による形状違い判定部123は、読み出した基準点データと特徴量とから、当該欠陥がワーク50の垂直な側面部又は底面部(若しくは上面)に対応するものであるのか判定する。
垂直な側面部に対応する場合(S1403でYes)、型修正による形状違い判定部123は、ステップS1404で当該欠陥と同程度の領域をエッジ基準点データから抽出し、ステップS1405で、当該欠陥に係る測定点とエッジ基準点とで位置合わせ処理を行う。この位置合わせ処理は、ステップS610と同様であり、説明を省略する。
垂直な側面部に対応しない場合(S1403でNo)、型修正による形状違い判定部123は、ステップS1406で当該欠陥と同程度の領域を全基準点データから抽出し、ステップS1407で、当該欠陥に係る測定点と全基準点とで位置合わせ処理を行う。この位置合わせ処理は、ステップS610と同様であり、説明を省略する。
ステップS1408で、型修正による形状違い判定部123は、当該欠陥に係る測定点が示すワーク50の形状と基準形状との類似度を算出する。当該類似度は、特徴量(例えば等価楕円長軸長)を対応点間距離の平均値で割った値とする。
ステップS1409で、型修正による形状違い判定部123は、類似度が所定の閾値よりも高いか否か判定する。高い場合(S1409でYes)、型修正による形状違い判定部123は、型修正箇所が有ると判定し、低い場合(S1409でNo)、型修正による形状違い判定部123は、型修正箇所が無いと判定する。
図6Aの説明に戻り、型修正による形状違い判定ルーチンS613A又はS613Bが終了し、型修正箇所がある場合(S614でYes)には、欠陥評価モジュール120は、その測定ブロック52に関する基準点データを新たに型修正後の基準点データとして追加し(S615)、型修正箇所が無ければ(S614でNo)追加しない。
ステップS609の説明に戻り、同種のワーク50(測定対象物)について追加の基準点データが有る場合(つまり型修正後の基準点データが有る場合)(S609でYes)、ステップS616で、表面評価モジュール110は、上述したICPアルゴリズムを用いて、間引き測定点群と型修正前の基準点群との間の位置合わせ処理、及び間引き測定点群と型修正後の基準点群との間の位置合わせ処理を行う位置合わせルーチンを実行する。位置合わせルーチンS616の詳細は、位置合わせルーチンS610と同様であり、説明を省略する。
また、ステップS617で、表面評価モジュール110は、上述したICPアルゴリズムを用いて、全測定点群と型修正前の基準点群との間の位置合わせ処理、及び全測定点群と型修正後の基準点群との間の位置合わせ処理を行う位置合わせルーチンを実行する。位置合わせルーチンS617の詳細は、位置合わせルーチンS611と同様であり、説明を省略する。
位置合わせルーチンS617が終了すると、ステップS618で、欠陥評価モジュール120は、ワーク50に係る金型の型修正前と型修正後のワーク50が混在しても、基準点群からずれた測定点群が欠陥なのか、あるいは型修正箇所なのかを判定する欠陥・型修正箇所判定ルーチンを実行する。図15を用いて、この判定ルーチンS618を説明する。
まず、ステップS1501で、誤対応測定群抽出部121は、型修正前の基準点データを基に、所定の閾値以上の対応点間距離を有する測定点の集合(つまり、特定測定点群)を誤対応領域として抽出する。誤対応領域が抽出されなかった場合(S1501でNo)、ステップS1507に進む。
誤対応領域が抽出された場合(S1501でYes)、欠陥判定部122は、ステップS1503で、当該誤対応領域に含まれている測定点のうち、予め設定され閾値以下の隣接点間距離を有する測定点の集合をひと塊として、当該集合ごとに番号を付けるラベリング処理を行い、ステップS1504で、当該集合ごとに特徴量(重心、等価楕円長軸長、等価楕円長軸角度、フェレ径等)を算出する。
ある集合に係る特徴量が所定の設定値よりも大きい場合(S1505でYes)、ステップS1506で、欠陥判定部122は、当該特徴量を有する当該集合を欠陥と判定し、その情報を第1の欠陥情報としてコントローラ30のRAMに記録する。全ての集合に係る特徴量が所定の設定値以下である場合(S1505でNo)、欠陥判定部122は、全ての集合に欠陥が無いと判定し、その情報を記録しない。
ステップS1507で、誤対応測定群抽出部121は、型修正後の基準点データを基に、所定の閾値以上の対応点間距離を有する測定点の集合(つまり、特定測定点群)を誤対応領域として抽出する。誤対応領域が抽出されなかった場合(S1508でNo)、ステップS1513に進む。
誤対応領域が抽出された場合(S1508でYes)、欠陥判定部122は、ステップS1509で、当該誤対応領域に含まれている測定点のうち、予め設定され閾値以下の隣接点間距離を有する測定点の集合をひと塊りとして、当該集合ごとに番号を付けるラベリング処理を行い、ステップS1510で、当該集合ごとに特徴量(重心、等価楕円長軸長、等価楕円長軸角度、フェレ径等)を算出する。
ある集合に係る特徴量が所定の設定値よりも大きい場合(S1511でYes)、ステップS1506で、欠陥判定部122は、当該特徴量を有する当該集合を欠陥と判定し、その情報を第2の欠陥情報としてコントローラ30のRAMに記録する。全ての集合に係る特徴量が所定の設定値以下である場合(S1511でNo)、欠陥判定部122は、全ての集合に欠陥が無いと判定し、その情報を記録しない。
次に、ステップS1501〜S1512にて抽出された欠陥が、ワーク50に係る金型の型修正による形状違いによるものではなく、本当の欠陥なら、型修正前と型修正後の両方の基準点データを基にした評価において欠陥として抽出されると考えられる。そこで、欠陥・型修正箇所判定部124は、第1の欠陥情報及び第2の欠陥情報の両方に欠陥として判定された共通の集合(塊)がある場合(S1513でYes)、ステップS1514で、それら共通の集合(塊)を欠陥として判定する。そうでない場合は、欠陥ではない判定する(S1513でNo)。
次に、S1501〜S1512にて抽出された欠陥が型修正前の基準点データからのみを検出した場合(言い換えると、第1の欠陥情報は得られたが、第2の欠陥情報は得られなかった場合)(S1515でYes)、ステップS1516で、欠陥・型修正箇所判定部124は、第1の欠陥情報が欠陥によるものではなく、金型の型修正に起因するものであると判定し、第1の欠陥情報を、型修正箇所とみなし、型修正後のワーク50(測定対象物)の数をカウントする。第2の欠陥情報のみ取得された場合、又は第1及び第2の欠陥情報が取得されない場合(S1515でNo)、欠陥・型修正箇所判定ルーチンS618は終了する。
図6Aの説明に戻り、欠陥・型修正箇所判定ルーチンS618が終了すると、ステップS619で、欠陥評価モジュール120は、型修正後のワーク50(測定対象物)の数が所定の設定値以下か否かを判定し、型修正前と型修正後の測定対象物が混在しているかどうか判定する。
型修正後のワーク50の数が所定の設定値以下なら型修正前後のワーク50が混載していると判定され(S619でYes)、ステップS622に進む。他方、型修正後のワーク50の数が所定の設定値より多い場合は型修正前のワーク50が無いと判定され(S619でNo)、欠陥評価モジュール120は、ステップS620で型修正前の基準点データを消去し、ステップS621で型修正後のワーク50の数のカウントをリセットする。
なお、ステップS606でX軸方向走査を停止すると、ステップS607からS621が行われると同時に、Yステージ制御部39は、ステップS622で、Yステージ6を動作させ、所定のピッチでワーク50をY軸方向にシフトさせる。ステップS607からS621の処理及びY軸方向のシフト処理S622が終了すると、ステップS624で、コントローラ30は、X軸方向走査をすべきワーク50上の測定領域がまだ残っているかどうか判定する(図6B)。
X軸方向走査をすべき測定領域が残っている場合(S624でYes)、ステップS623で、Xステージ制御部38は、X軸方向走査の方向が反転するようにXステージ5を作動させる。そして、ステップS604〜S624まで同様の処理が行われる。X軸方向走査をすべき測定領域が残っていない場合(S624でNo)、ステップS625で、光源制御部31は、レーザスリット投光器13の電源を落とし、スリット光SLの照射が停止される。
ステップS626で、コントローラ30は、測定死角の発生に伴う測定不能箇所の測定データを補完するために、回転テーブル7を90度回転させる必要があるかどうか判定する。当該判定の基準は、予めワーク50の形状等に応じて予めユーザが指定しておいてもよいし、コントローラ30が測定点データの取得状況を考慮して自ら判定してもよい。
回転テーブル7を90度回転させる必要がある場合(S626でYes)、回転テーブル制御部37は、回転テーブル7を90度回転させる。次いで、再びステップS602に戻り、同様の処理が繰り返される。なお、この90度の追加回転で不十分な場合には、最初の姿勢位置に対する180度位置と270度位置を行うようにしてもよい。
回転テーブル7を90度回転させる必要がない場合は(S626でNo)、ステップS627で、コントローラ30は、全ての測定ブロックにおける欠陥評価の結果に基づいて総合判定を行う。この総合判定において、ワーク50の全体を示す全体図の上で欠陥の位置をマーキングした欠陥位置表示図が入出力デバイス40(モニタ等)を通じて出力される。
次に、ワーク50に係る金型の摩耗に起因する形状違いによる誤判定を防止するために、基準点データ変更部133は、基準点データを所定の頻度で変更する基準点データ変更ルーチンS628を実行する。図16を用いて、基準点データ変更ルーチンS628について説明する。
ステップS1601で、基準点データ変更部133は、ワーク50の数をカウントし、その数が所定の設定数以下なら(S1602でNo)、このルーチンは終了する。ワーク50の数が所定の設定数よりも大きいと(S1602でYes)、ステップS1603で、基準データ変更部133は、そのワーク50に欠陥有りかどうか判定する。ワーク50に欠陥がある場合には(S1603でYes)、このルーチンは終了する。欠陥が無い場合(S1603でNo)、ステップS1605で、測定点データ形状判定部132は、入力部131が読み出した測定点データからワーク50の形状が設計寸法どおりに形成されているか判定するする。形状がNGの場合(言い換えると、測定点データから推定されるワーク50の形状が設計寸法どおりの形状でない場合)(S1605でNo)、このルーチンは終了し、OKの場合(言い換えると、測定点データから推定されるワーク50の形状が設計寸法どおりの形状である場合)(S1605でYes)、ステップS1606で、基準点データ変更部133は、測定点データを基準点データに変更する。
このようにして、本実施形態に係る欠陥抽出装置1は、全測定点の中からから大きい勾配強度を有する測定点(間引き測定点群)と対応する基準点との間の位置合わせ処理を行った後、全測定点と全基準点との間の位置合わせ処理を行う。このように、最初の位置合わせ処理で、位置合わせ処理すべき測定点の数を大幅に(約100分の一程度に)減らして基準点との位置合わせを少ないデータ量で高速に行うことができ、その後の全測定点に対する位置合わせ処理でより高精度に位置合わせするために微調整することができる。これにより、全ての測定点のみに対する位置合わせ処理を行う従来の場合に比べて、測定点と基準点との位置合わせ処理に費やす時間を大幅に(約300分の一に)低減するとともに、位置合わせ精度も大幅に(約1000倍に)向上し、製造現場における検査ラインにも十分に用いることが可能となる。
また、エッジのような輪郭的特徴を有しないワークに関しては、勾配強度の大きい測定点の数は、図9のヒストグラムに示すように全数に対して非常に少ない。そのため、全測定点のみを用いて位置合わせ処理を行っても、そのような少ない数の測定点の影響は無視され、大きい勾配強度を有する測定点に対する位置合わせ精度が比較的低減しやすい問題があるが、本発明は、勾配強度の大きい方から所定数の測定点を間引き測定点群として採用し、間引き測定点群に対する位置合わせ処理を最初に行うようにしているため、そのような問題をも解決する。その結果、全測定点に対する位置合わせの精度が向上し、ひいては欠陥抽出の精度も向上する。
(その他)
なお、本発明の欠陥抽出処理に係るコントローラ30の各部が有する作用・機能は、別の部にその作用・機能を持たせても良い。例えば、収束評価部115が点群変換部116や生成部の機能を有していてもよいし、欠陥判定部122が誤対応測定点群抽出部121の機能を有していてもよい。