図1に本発明のパターン検査装置1の構成図を示す。本発明のパターン検査装置は、被検査物90の回路パターンを撮影する画像撮影部10と、撮影された画像を補間処理する補間部20、補間された画像を2値化する2値化部30、2値化した画像を膨張若しくは縮小して基準となる画像を作る膨張縮小部40、基準となる画像と検査対象画像の位置を合わせる位置合わせ部50、位置を合わせた画像同士の画素同士を論理演算する演算部60、演算結果を判定する判定部70、そして記憶部80を含む。
画像撮影部10は、少なくともカメラ11と照明12を有する。カメラ11は被検査物90のパターンの画像を画像データVdに変換し出力する。従って、CCDなどの光電子変換素子を用いたものが好ましい。CCDは画素が2次元に配列されたものであっても、ラインセンサなどのように1次元に配列されたものであってもよい。また、被検査物90を上方から撮影するため、テレセントリックスタイプのレンズを搭載したものがより好ましい。なお、通常の可視光の波長を用いるだけでなく、近赤外や紫外波長帯の光を検出するようにしてもよい。
画像データVdは、光電子変換素子によって電気信号に変換された画素情報の集合である。具体的には、CCDの1画素が受光した光を8ビット若しくは10ビットの階調に変換された値(階調値)と画素の位置(座標など)のセットが1画像分集まったものである。1例を挙げると、CCDの有効画素数が500万画素あり、1画素あたり10ビットの階調値に変換される場合は、1画像分の画像データVdは、階調値だけで5000万ビット(50Mbit)になる。
照明12は、被検査物90の撮影に光を当てて、コントラストを得るためのものである。特に制限されるものではなく、リング形状の蛍光灯やLED、光ファイバライトガイドなどを好適に用いることができる。
また、被検査物90を上方から照らすだけでなく、被検査物90の下方から照らして、透過光をカメラ11で撮影してもよい。
補間部20以降は、画像データVdに対する画像処理を行う。それぞれの構成要素は専用のハードウェアを作成することもできる。しかし、変更が容易である点と現在のコンピュータの処理速度は十分に速いことを考えると、コンピュータによるソフトウェア的な処理が主となる。
従って、補間部20、2値化部30、膨張縮小部40、位置合わせ部50、演算部60、判定部70は、コンピュータとソフトウェアで実行されことを表すため、制御装置85の要素として説明を進める。これらの要素はソフトウェアとコンピュータで実行可能である。
なお、記憶部80は、制御装置85に含まれるように図示した。具体的には、半導体メモリが好適に用いられるからである。しかし、制御装置85の外側に設置されたハードディスクなどの2次記憶媒体が含まれていても良い。
補間部20は、画像撮影部10から出力された画像データVdを受け取り、画素の補間を行う。画素の補間とは、画素と画素の間に新たな画素を設け、両側の画素のデータに基づいて新たな画素に対する画像データを作成することである。
図2を参照して、本発明における補間部20の役割について詳細な説明を行う。今、被検査物90の大きさが4cm×4cm四方の大きさであり、画像撮影部のCCD13が10画素×10画素(全部で100画素)であった場合を仮定する(図2(a))。図2ではCCD13の裏側が見えている。このCCD13で被検査物90を撮影するとCCDの1つのセルは、被検査物の4mm四方91からの光を平均した値を出力する。すなわち、解像度は10ドット/4cmとなる。
もし、被検査物上にパターンされた回路のリード幅がこの解像度では十分な検査ができないとすると、解像度を上げなければならない。具体的な方法としては、より多くの画素を有するCCDを用いる方法か、被検査物をより細かく撮影する方法のいずれかを選択することとなる。一般にこのようなパターン検査の場合は、リードのピッチ(リード幅と隣接するリードまでの間隔長を合わせた長さ)の1/20程度の分解能が必要とされている。
図2(b)では、被検査物90を4分割し、それぞれをCCD13で撮影した場合を示す。この場合、被検査物の2cm×2cm四方の領域を100画素のCCDで撮影するため、CCDの1つのセルは、2mm四方92の領域からの光の平均値を出力する。この場合の解像度は10ドット/2cmであり、図2(a)の倍になる。このようにすると、解像度は向上するが、1枚の被検査物からの画像データ量は4倍になる。画像データ量は、CCDの画素密度を4倍にして、1回の撮影で被検査物を撮影した場合も同じように増える。
CCDなどの光電子変換素子の場合は、画素数とデータ転送速度は、比例関係になく、多くの画像データを転送しようとするとそれだけ時間がかかってしまう。従って、被検査物のリード幅が狭くなるに従い、解像度を高くしなければならず、検査に時間がかかることとなる。
しかし、図2(a)で示した例のように、被検査物を100個の画素のCCDで撮影し、得られた画像データを補間によって4倍のデータ量にすれば、短い時間で検査を行うことができる。そして、パターン検査のように、リードの欠損や余分な突起といったリードの有無だけが主たる検出目的である場合は、補間によってデータ量を増やしても、十分実用に耐えうる。本発明はこのような考えに基づいて想到されたものである。従って補間部20の存在は、本発明において重要な役割を担う。
図1に戻って、補間部20の説明を続ける。画素間の補間には一番近い画素のデータをそのまま適用するニアレストネイバー法、隣接する画素のデータを直線で結んで補間するバイリニア法(線形補間法)、複数のデータから3次元的に計算するバイキュービック法(双3次補間法)等が知られており、これらを一部変更した方法も多く提案されている。本発明では、どの方法を用いても良いが、隣接する画素のデータを用いる補間方法であればより好適である。また、計算時間がかかる複雑な補間法よりも、直線近似を用いる補間法がより好ましい。
図3には補間の様子を示す。また、図4に、補間部20の処理フローの1例を示す。ここでは、バイリニア補間法で、画像データVdを4倍のデータ量にする場合について説明をする。なお、補間によってどの程度のデータ量にするかを示す指標を補間レベルと呼ぶ。画像の場合は2次元であるので、1辺の倍率でこれを呼ぶことにする。従って本説明は補間レベルが2倍の場合について説明を行う。
図3において、太線四角15は画像データVdの画素に対応する。図では、画像データVdの中の4つの画素を取り出して表示している。画素(X、Y)は画像データVdの画素であることを示している。また、Vd(X、Y)は、画素(X、Y)の画素データを表す。画素データとは、画素の階調値をいう。
XとYは画像データVd上での画素の位置を表す。Xは横方向でYは縦方向である。図3でXは右に行くほど、またYは下に行くほど数が増えるとする。従って、画素(X、Y)の右隣の画素は(X+1、Y)となる。画素(X、Y)の下は(X、Y+1)である。また、XとYは、画素の中心座標と考えても良い。すなわち、図3では、画素(X、Y)の中心の座標が(X、Y)としてもよい。
これに対して補間された画像データは補間画像データCで表す。補間画像データCの画素は、補間画素と呼び、画像データVdの画素の1/4の大きさである。補間画像データCも座標を書くことで画素の位置を表す。図3では、(x、y)が補間画像データの中で位置(x、y)の画像であることを表す。また、画像データVd上の4つの画素を表す点線四角16は、太線四角15と同じである。この4つの画素中には、9つの補間画素25が含まれていることを表している。
また、C(x、y)と記載することで(x、y)の位置での画素データ(階調値)を表すものとする。補間画像は画像データVdより細かい画素であるので、画素(x、y)の隣の画素は画素(x+0.5、y)となる。
なお、座標(X、Y)と座標(x、y)の間の関係は、特に限定されるものではなくどのような関係であってもよい。例えば、座標(x、y)をXYの座標系で見た場合に(X+a、Y+b)といった関係であってもよい。ここでは説明を簡単にするために、座標(x、y)は座標(X、Y)に一致するとする。言い換えると、C(x、y)はVd(X、Y)と等しいということである。同様にC(x+1、y)、C(x、y+1)、C(x+1、y+1)はそれぞれVd(X+1、Y)、Vd(X、Y+1)、Vd(X+1、Y+1)に等しい。
バイリニア補間法は補間される1つの画素データを周囲にある4つの補間前画素データから求めるものである。具体的には、画素(x、y)の画素データは、画素データであるVd(X、Y)、Vd(X+1、Y)、Vd(X、Y+1)およびVd(X+1、Y+1)の4つのデータと、座標(x、y)、(X、Y)、(X+1、Y)、(X、Y+1)および(X+1、Y+1)を使って求める。また、画素(x、y)から画素(x+1、y+1)までの9つの画素(25)の画素データは、すべて、Vd(X、Y)、Vd(X+1、Y)、Vd(X、Y+1)およびVd(X+1、Y+1)の4つのデータとそれぞれの画素の座標から求める。
図4を参照して、補間処理(S200)では、まず画像データVdを受け取り(S202)、初期化を行った後(S203、S204)、終了処理の判定を行う(S206)。初期化は座標を表すx、yの変数の初期化である。初期化は、例えば、最初に計算する座標(x、y)が(0、0)であればxとyをそれぞれ「−0.5」の値にする。なお、図4では、後のフローを説明する都合上、yの初期化とxの初期化を分けて記載した。また、その他の初期化が必要な場合はステップS203で行ってもよい。
終了処理の判定は、計算すべき画素データの有無で判定するが、装置全体の制御から割り込みがかかってもよい。ここでは、y座標が補間すべき最後のy座標であるか否かで判断することとしている。つまり、x方向の画素を補間で求め、次にy座標を進めてから、またx方向の画素について補間画素データを求める。
次に変数yをインクリメントした後(S208)、さらにx座標についても最後のx座標か否かを判断する(S210)。x座標が最後でなかった場合は、やはりxをインクリメントする(S212)。そして、画素(x、y)の周囲にある4つの元画素を検索し求める(S214)。4つの元画素が求まったら、補間画素値C(x,y)を求める(S216)。なお、C(x、y)を単にCxyと記載している。また、ここで補間画素値C(x,y)は、以下の(1)式で求める。
・・・・・(1)
処理をステップS210に戻し、x方向の画素についての計算が終了した場合は、処理をステップS204に戻しxを初期化し、再びy方向の画素についての計算が終了したか否かを判断する。
全ての補間画素について階調値の計算が終了したら、結果を出力し(S218)この処理を終了する(S220)。この補間画像データは補間画素データVcdとなる。なお、ここで示した補間処理は、1例でありフロー処理230の部分は適宜変更されてもよいし、他の補間方法を用いても良い。また、補間レベルも3倍、4倍等であってもよい。また、画素(X、Y)と画素(x、y)が一致する場合は、(1)式よりC(x、y)=Vd(X、Y)となるので、Vd(X、Y)をそのままC(x、y)の値としてもよい。このようにすることで計算回数を減らすことができる。
図1に戻って、2値化部30は、補間画像データVcdを受け、2値に変換する。2値に変換することで後段の演算を非常に高速に行うことができるからである。2値化は補間された画像データVcdの画素データ毎に所定の閾値Thと比較し、大きければ1、小さければゼロにする処理である。
図5に2値化部での処理フロー(S300)を示す。補間画像データVcdが入力される(S302)と、初期化を行い(S304)、終了判断を行う(S306)。座標を表す変数x、yをインクリメントし(S308)、補間画素データC(x、y)の値が閾値Thより大きいかを判断する(S310)。大きい場合はC(x、y)に1を代入し(S312)、そうでない場合はゼロを代入する(S314)。通常、閾値Thは階調値の半分の値にするが、他の事情で別の値に設定することもできる。なお、座標を表す変数xとyのインクリメント(S308)は、全ての補間画素についてこの処理が行われるように適宜初期化とインクリメントが繰り返されることを表す。具体的には図4のステップ(S204乃至210)の処理等である。本明細書においては、簡便のために以後のフローでも、図5のステップ(S306)とステップ(S308)のように、「2つの変数をインクリメントする」という記載とそれぞれの変数を引数として持つ値が「end」であるか否かという記載で、2つの変数については、必要とされる全ての範囲について変化させることを表す。
処理をS306に戻して、全ての処理が終了したら、補間された画像データVcdは2値化された画像データBcdとして出力される(S316)。これを2値画像データと呼ぶ。そしてその後処理はメインの処理に返される(S320)。なお、2値画像データBcdの各画素の値は1かゼロであるので、1ビットのデータとしておけば、全体のデータ量を大幅に削減することができる。
再び図1に戻って、2値化部30から出力された2値画像データBcdは、膨張縮小部40と位置あわせ部50に入力される。後に図15の説明で詳細を述べるが、膨張縮小部と位置合わせ部はどちらかが選択的に動作する。
膨張縮小部40は、基準パターンの2値画像データBcdのパターンの部分を太くしたり、細くしたりして、被検査物が有する欠陥の許容される範囲を示す2値画像データを作成する。
例えば、リード幅は基準パターンのリード幅の4/3倍までは許容されるとすると、膨張縮小部40は、基準パターンの2値画像データのリード部分の幅を4/3倍にした2値画像データを作成する。このような2値画像データは、被検査物の2値画像データに対する許容範囲を与えるものである。これを2値膨張画像データBcdxと呼ぶ。2値膨張画像データは被検査物の突起を検査するためのデータであるので突起部検査用標準データとも呼ぶ。
同様にリードの幅は基準パターンのリードの幅の2/3倍より狭くてはいけないと決めるなら、基準パターンのリードの幅を2/3倍にした2値画像データも許容範囲を与える2値画像データである。これを2値縮小画像データBcdsと呼ぶ。2値縮小画像データは、あるべきリードがない部分を検査するためのデータであるので、欠陥部検査用標準データとも呼ぶ。
図6に処理のフローを示す。ここでは、膨張処理のフロー(S400)を示す。2値画像データBcdが入力されると(S402)、BcdのコピーであるBCの作成とBCXというメモリ領域の確保を行う(S404)。BCというコピーを作成するのは被検査物の2値画像データBcdを壊さないためである。また、BCXは2値膨張画像データとなるデータである。従って、BCXはBCの画素と同じ数の画素を有する。また、BCもBCXも2値画像データである。
次に終了判断を行う(S406)。ここでは、以下の膨張処理Pexが所定の回数Ne回行われたかどうかで判断する。所定の回数Neは、画素の分解能とパターンのリードの幅などから予め決められる回数である。もちろん、全体の制御からの割り込みで終了してもよい。
次に座標を表す変数であるxとyを初期化する(S408)。そしてxとyをインクリメントした後(S410)、2値化画像データBC(x、y)の値が1であるかどうかを判断する(S412)。なお、画素の位置を座標で表し、データ名をつけることでその画素の値を表すのは、本明細書を通じて同じである。また、図ではBC(x、y)をBCxyと略記した。同様にBCX(x、y)をBCXxyと略記する。
もし値が1である場合はBC(x、y)に対応するBCX(x、y)の値を1とした上に、BCX上で隣接する画素の値を全て1にする(S414)。隣接する画素とは、自分の最も近い周囲にある8つの画素を指す。これらを周辺画素とも呼ぶ。ここでは隣接する8つの周辺画素をPBX1乃至PBX8と表した。
図7を用いてこの処理を説明する。図7(a)で、2値画像データBCは、2値画像データBcdのコピーである。図では、一部分だけを抜き取って示した。黒の部分は値が1の画素であり、白は値がゼロの画素を示す。図では4箇所が値1の画素である。
図7(b)で2値画像データBCXは、膨張された2値画像データが格納される。今2値画像データBC上のAの点が画素(x、y)であったとすると、BCX上では画素AXが対応する画素である。BCとBCXは同じ画素数を有するので、位置を表す座標は同じである。
そこで、まずBCX上の画素AXの階調値を1とする。そして、隣接する画素の値を1にする。隣接する画素とは、画素AXの周囲の画素でXの太線枠内にあって、画素AX以外の8つの画素である。
これがステップS414の処理である。なお、隣接する画素がすでに値1であった場合は、1のままにする。このようにすることで、値が1であった画素は値が1のまま維持される。また、値がゼロであった画素は、値が1の画素に隣接していれば1になる。すなわち、値が1の画素とゼロの画素の境界部分で値が1の画素の数が増えたことになる。これは最初の2値画像データBcdが1画素分だけ膨張したということである。
図7では、2値画像データBC上で値が1である4つの画素に対してこの処理を行った結果の2値画像データBCX(図7(b))を示した。なお、BCX上で膨張処理を行う前の画素に相当する画素は斜線で示した。図7(b)の2値画像データBCX上で白でない四角が膨張処理後に値が1になった画素を表す。
図6に戻って、もしBC(x、y)が1でない、すなわちゼロなら何もせずスキップする(S412のN分岐)。次にBC(x、y)が最後の画素かどうかを判断する(S416)。最後でない場合は変数のインクリメント処理(S410)に戻る。最後の画素であった場合は、BCXの画素の値をBCにコピーする(S418)。すなわち、BCとBCXは同じデータとなる。このようにするのは、次の膨張処理の元になるデータを2値画像データBCとして蓄えておくためである。そして、処理回数Pexをインクリメントし(S418)、処理Pexが所定回数に達したか否かの判断(S406)まで戻る。
終了判断(S406)に戻り、所定回数に達しない場合は、再度1画素分の膨張処理を行う。すでにBCは2値画像データBcdよりも1画素分だけ膨張した画像データとなっている。つまり、2回目からの処理では2値画像データBCを基準とすることでBCXにはさらに1画素分だけ膨張した画像データを得ることができる。また、2回目以降の処理では2値画像データBCは、2値画像データBcdと同じではない。
どのくらい膨張させたデータが必要なのかは、予め決めておくことであるので、何回膨張処理を繰り返すかも予め決めておくことができる。所定回数Neだけ膨張処理を行った結果は2値膨張画像データBcdxとして出力される(S420)。そして処理はメインに返される(S422)。
図8には縮小処理のフローを示す。縮小処理(S454)は膨張処理の場合の1をゼロと置き換えた処理であり、1回の縮小処理で1画素分だけ値がゼロの画素が増える。ステップS454で周辺画素の値をPBS1〜PBS8として示した。所定の回数Nsだけ縮小処理を行った結果(S445)は、2値縮小画像データBcdsとして出力される(S460)。
なお、膨張処理や縮小処理は回路パターンの部分に行われるもので、画像データの全てにわたって行われなくてもよい。例えば、後述する位置合わせなどに用いるため回路パターンの周辺部分に配置した位置合わせ用マーカーや、文字などにはこれらの処理を行わなくてもよい。
図1に戻って、2値膨張画像データBcdxと2値縮小画像データBcdsは記憶部80に記憶される。なお、これらは、突起部検査用標準データBcdxと欠陥部検査用標準データBcdsでもある。またこれをまとめて2値標準画像データBstdと呼ぶ。
次に位置合わせ部50について説明する。位置合わせ部50は、2値化画像データBcdと2値膨張画像データBcdxおよび2値縮小画像データBcdsとの位置合わせを行う。この場合、2値化画像データBcdとBcdxやBcdsは別のパターンの画像データである。すなわち、BcdxやBcdsは基準となる回路パターンに基づいた画像であり、これらと比較される2値画像データBcdは被検査物のパターンに基づく画像である。
従って、同じ画像撮影部で撮影された画像データであっても、微妙に位置がずれる場合があり、同じ位置の画素同士の値を比較できないおそれがある。より具体的には、Bcdの(x、y)の画素とBcdxやBcdsの(x、y)の画素は、回路パターンの同じ場所に該当しない場合があるということである。
位置合わせ部50はBcdの画素に対応するBcdxやBcdsの画素を決める。画像処理において、画像を重ねる方法は、一方の画像を他方に対して位置を上下左右に移動させながら重ね合わせの残差が最小になる点を求める残差マッチング法、2つの画像の正規化相関値が最大になる点を求める正規化相関法、画像データのフーリエ変換面で合わせる位相限定相関法、画像のエッジ点列を用いる幾何マッチング法やベクトル相関法等の方法が知られている。
本発明ではどの方法を用いてもよいが、被検査物の2値化画像データと比較する画像データは膨張させたり、縮小させたりした画像であるので、画像データ全部を用いて重ねる方法よりも、位置合わせのためのマーカーなど、画像データの一部を用いた方法が好ましい。
図9に位置合わせ処理のフロー(S500)を示す。ここでは、残差マッチング法で位置合わせを行う例を示す。2値画像データBcdが入力される(S502)と、記憶部80から2値膨張画像データBcdxを取得する(S504)。2値縮小画像データBcdsについても位置あわせを行うが、全く同じ処理なので、ここでは2値膨張画像データについて説明し、Bcdsとの位置合わせ処理については記載を省略する。
次に終了判定を行う(S506)。回路パターンの検査は、基準パターンと被検査物のパターンが大きくことなることはなく、位置合わせは微小な調整でよい。すなわち、予め位置合わせのためにずらす画素数を決めておくと処理を早くできる。従って、横方向にずらす画素数iと縦方向にずらす画素数kを予め与えておき、どの被検査物に対しても同じ回数だけ計算させるようにしてもよい。
具体的には、iとkを−5から5までと決めておき、最初の値をそれぞれ−5に決めておくなどである。以下の処理でiとkをインクリメントしてそれぞれが5になったら終了すようにすれば、縦横10画素ずつずらせた中で最も一致した場合を見つけることができる。
図10にはマーカーの例を示す。図10(b)は、2値膨張画像データBcdxの全領域である。被検査物には回路パターンと関係ない部分に位置合わせ用のマーカーが印刷してあるものとする。それらのマーカーは、画像データに反映される。そこで、2値画像データには、位置合わせ用のマーカーMkが値1の画素として残る。
位置合わせには、このマーカーを含む、データの領域を利用する。2値膨張画像データBcdxの左上、左下、右上、右下のそれぞれの領域をRlu、Rlw、Rru、Rrwとする。図10(a)は、Rluの拡大図である。マーカーMkの部分は値が1の部分である。黒マスで表した。ここではマーカーは鍵形である。
図11を参照して、51は、2値膨張画像データBcdxの左上のマーカーで、52が被検査物の2値画像データBcdの左上のマーカーを示す。なお2値膨張画像データは、膨張処理を受けているが、このマーカーの部分は膨張処理を行わない。位置合わせができなくなるからである。
画像を撮影した際の誤差で、マーカーを示す画素は1画素分だけずれているとする。位置合わせフローは、2値画像データBcdを1画素ずつずらせながら、マーカー同士が最も重なる点を見つける。図11(c)は、BcdxとBcdの右上の領域を重ねてずらすことで、それぞれのマーカーが重なった場合の図を示す。このとき、それぞれの領域は、ずれている。
図9のフローに戻って、BcdとBcdxのそれぞれの4隅の領域を抜き出す(S508)。2値画像データBcdの4隅のデータはRlu、Rlw、Rru、Rrwとし、2値膨張画像データBcdxの4隅のデータは、Rlux、Rlwx、Rrux、Rrwxとする。抜き出した領域は画素の位置データ(x、y)と画素の値からなるデータである。
これらの4隅の領域のデータをまとめて[Bcd]および[Bcdx]と表す。そして、[Bcd]を横方向にi画素、縦方向にk画素ずらすことを[Bcd](i、k)と表す。
そして、2値膨張画像データBcdxの4隅の領域のデータ[Bcdx]と、2値画像データBcdの4隅のデータ[Bcd]を横にi画素ずらせ縦方向にk画素ずらせたデータ[Bcd](i、k)との排他的論理和の否定を求める(S510)。
この演算で、画素の値がゼロ若しくは1同士の画素は結果がゼロとなり、画素同士の値が異なる場合は、結果が1となる。領域データ[Bcdx]の全ての画素についてこの演算を行いその総和Hを求める。ステップS510で「Σ」は4隅の領域内の全ての画素について総和を求める意味である。
この値Hと最小値Minとを比較する(S512)。最小値Minは最初に適当な大きさの値をいれておく。もしMinの方が大きければ演算結果Hと入れ替え、その時のiとkの値をExiおよびExkとして記録する(S514)。そうでなければスキップする。そしてiとkをインクリメントし(S516)、終了処理(S506)に戻る。
全てのiとkについて処理が終了したときに記録されているExiおよびExkが2値画像データと2値膨張画像データの対応画素同士のずれ量である。またこのずれ量は対応画素同士の位置を合わせる補正量となる。これを出力し(S518)、処理をメインに戻す(S520)。
この位置合わせは2値膨張画像データBcdxだけでなく、2値縮小画像データBcdsとの間でも求める。2値縮小画像データとの補正量はShiおよびShkとして求める。なお、BcdxとBcdsは元々1つの基準パターンからの画像であるので、(Exi、Exk)か(Shi、Shk)のいずれか一方だけで代用してもよい。
なお、ここでは、2値画像データ同士で位置合わせを行う場合について説明したが、検査対象パターンと基準パターンの補間画像データ同士や補間を行う前の画像データ同士の段階のデータ同士で位置合わせを行ってもよい。また、本説明では、2値化された画像データの4隅の領域を使って位置合わせを行ったが、4隅に限定されるものではない。また位置合わせの領域も隅ではなく、回路パターンの中央部や辺の部分であってもよい。
また、本実施例の説明では、被検査物が平面内で位置がずれた場合を想定した位置合わせについて詳細に説明を行った。しかし、画像撮影部での撮影の際に、被検査物が裏側に異物をかみ込み、カメラ11に対して斜めに撮影される場合もある。いわゆるチルト状態で撮影された場合である。
図12(b)には、そのような状態で撮影された被検査物の2値画像データ54を示す。図12(a)は、チルトがない状態で撮影された基準パターンの2値膨張画像データのマーカーである。2値画像データ54は、撮影の際に回路パターンが斜めに撮影されてしまい、縦方向に縮んだ映像となっている場合を示した。
2値画像データの4隅のマーカー間の画素数をカウントすることで、縦横それぞれ何画素分歪が生じているかは把握できる。従って、画像が歪んでいる場合は、膨張縮小処理を使って、これを補正してもよい。
具体的には、歪んだ画素分だけ膨張若しくは縮小処理を行う。例えば図12では、縦方向に2画素分だけ歪んでいる。そこで、縦方向に1画素分だけ膨張させる。膨張処理は図6のフローで、ステップS405の処理回数Neを1とし、ステップS414の周辺画素をPBX2とPBX7だけにする。これらの周辺画素は対象画素の縦方向上下の画素である。
図12(c)には、縦方向に1画素分膨張させた2値画像データを示す。画素55と画素56は膨張処理によって値が1になった画素である。このデータを2値膨張画像データと位置合わせを行った結果を図12(d)に示す。
このように、全体もしくは部分的に被検査物のパターンが基準パターンと異なる場合は、撮影時のチルトの場合だけでなく、他のケースでも発生しうる。例えば、検査パターンはエッチング加工によって作製するが、エッチング条件によってその太さが変わる。このような場合も被検査物のパターンと基準パターンの太さが同じようになるように検査対象パターンを膨張・縮小することで、精度の高い補正ができる。
再び図1を参照して、位置合わせ部50は、これらの位置補正データをIfalとしてまとめて出力する。すなわち、Ifalには、Exi、Exk、Shi、Shkが含まれる。また、2値化画像データBcd、2値化膨張画像データBcdx、2値化縮小画像データBcdsも同時に出力される。
次に演算部60の処理について説明を行う。演算部60は、Bcd、Bcdx、BcdsとIfalが入力され、位置補正データに基づきBcdとBcdxおよびBcdsとの差分を求める。
図13に処理のフロー(S600)を示す。ここでも、2値膨張画像データBcdxと2値画像データBcdとの処理を例示する。BcdxとBcdおよび位置合わせの補正量Exi、Exkが入力されたら(S602)、終了判定を行う(S604)。ここでは、BcdとBcdxを画素毎に比較するので、座標を表す変数x、yについて比較すべき画素に対する処理が終わったか否かを判断する。
そして、2値画像データBcdの画素(x+i、y+k)の値から2値膨張画像データBcdxの画素(x、y)の値を引き(S606)、引き算結果Lxが正かどうかを判断する(S608)。
Bcdxは、基準となるパターンを膨張させて作成されたデータなので、被検査物の画像2値画像データBcdの方が大きくなるのは、膨張させた分より大きな突起があることを意味する。そこでもしその値が正であったとすると、結果を示すCdxをインクリメントする(S610)。すなわち、Cdxには、被検査物の画像データの中で、膨張させた画像より大きかった画素の数が記録される。そして、xとyをインクリメントし(S612)、終了判定(S604)に戻る。
比較すべき画素が終了したら、Cdxを出力し(S614)、処理をメインに返す(S614)。
一方、縮小データであるBcdsと比較する場合は、画素Bcds(x,y)の階調値から画素Bcd(x+i、y+k)の階調値を引き、結果Lsが正か否かを判断する。図14にフローを示す。縮小画像データであるBcdsの方が階調値が大きいというのは、被検査物のパターンがあるべき部分にないことを示しており、欠損があることを意味する。
演算部60は、2値膨張画像データとの差分であるCdxと2値縮小画像データとの差分であるCdsを出力する。
次に判定部70の処理について説明する。判定部70は、膨張画像データとの差分であるCdxと縮小画像データとの差分であるCdsを受け取り、所定の閾値と比較し、被検査物のパターンと基準パターンの類似度、若しくは良否といった関係を判定する。
なお、処理速度を重視する場合はこのように差分画像の画素値の合計で良否を判断するが、処理時間に余裕のある場合は、いわゆるラベリング処理を差分画像に実施し、各欠陥部分の面積を求め、この面積がある閾値を越えた部分を欠陥とするとより精度の良い検査が可能である。
図15にフロー(S700)を示す。CdxとCdsが入力されると(S702)、Cdsが縮小閾値Thsより小さいか否かを判断する(S704)。Cdsが縮小閾値Thsより大きい場合は(S704のN分岐)、さらにCdxが膨張閾値Thxより小さいかを判断する(S710)。CdxがThxより大きい場合(S710のN分岐)は、被検査物の2値画像データは、2値膨張画像データより大きい部分があり、尚且つ2値縮小画像データよりも小さい部分があることを示している。これは、4/3倍に膨張させた部分よりも大きい突起があり、かつ2/3倍よりも細い部分もあることを示す。この場合は、類似度Simを1とする(S714)。類似度1は最も類似しない事を表す。
また、CdxがThxよりも小さい場合(S710のY分岐)は、2値縮小データよりも小さい部分があるということである。そこで類似度Simを2とする(S712)。
CdsがThsより小さい場合(S704のY分岐)は、さらにCdxがThxより小さいかを判断する(S706)。CdxがThxより大きい場合(S706のN分岐)は、2/3倍より狭い部分はないが、4/3倍より太い部分があることを示している。そこで、類似度Simを3とする(S708)。狭い部分だけがある場合よりも類似度を高くしたのは、1例であり、別の類似度としてもよい。
CdsがThsより小さく、CdxがThxより小さければ(S706のY分岐)、4/3倍より太い部分もないし、2/3倍より狭い部分もないということなので、類似度Simを5とする(S708)。そして、その類似度Simを最終結果Conとして(S716)出力する(S718)。なお、ここで説明した類似度Simの決め方は1例であって、他の判定基準によって決定してもよい。
例えば、上記の例でSimが5の時は、「良」判断とし、その他の場合は「不可」判断として最終結果Conを出力してもよい。また、CdxとCdsの値によって、隣接するリードと接触してしまう「ショート」、4/3倍より広い「膨らみ」、2/3倍より狭い「欠け」、リードがなくなってしまっている「断線」という判断を類似度としてもよい。さらに、最終結果Conは類似度Simだけでなく、CdxやCdsを共に出力してもよい。このようにすることで類似の程度も把握しやすくなる。
すなわち、最終出力Conは演算部60からの結果に基づいて処理された検査対象パターンと基準パターンの関係を表す値若しくは判断を含めばよい。
再び図1に戻って、判定部70からは最終結果Conと被検査物の識別番号Widが出力される。出力端88には、他のコンピュータや、表示装置等が接続されてもよい。また、被検査物を弁別する装置へ接続されてもよい。
次に図16の検査方法のフロー(S1000)を参照して、図1の検査装置を用いた回路のパターンを検査する方法について説明する。この検査方法のフローは、これまで説明してきたフローに対するメインの処理フローである。検査を始めると、最初に2値標準画像データBstdの有無を判断する(S1002)。これは図1の記憶部80を調べることで判断することができる。2値膨張画像データBcdx若しくは2値縮小画像データBcdsのいずれかだけの有無を確認してもよい。
2値標準画像データがない場合は、基準となるパターンを撮影する(S1004)。撮影には撮影部を用いて撮影する。ここで得られた画像データは、基準画像データと呼ぶ。基準画像データは補間処理(S200)によって基準補間画像データに変換される。さらに、2値化処理(S300)によって基準2値画像データに変換したのち、膨張縮小処理(S400およびS440)を行い、突出部検査用標準データ(2値膨張画像データ)Bcdxおよび欠陥部検査用標準データ(2値縮小画像データ)Bcdsを作成する。これらは、2値標準画像データとして記憶部80に記録する(S1006)。
すでに2値標準画像データが存在する場合は、被検査物を撮影する(S1008)。ここで得られた画像データを検査対象画像データと呼ぶ。そして検査対象画像データを補間処理(S200)によって、検査対象補間画像データに変換する。さらに、2値化処理(S300)によって検査対象2値画像データにする。
そして2値標準画像データである突出部検査用標準データと欠陥部検査用標準データとの位置合わせ処理を行う(S500)。すなわち、図1の膨張縮小部40は2値標準画像データを得るために動作させ、位置合わせ部50は被検査物を検査する際に動作させる部分である。
その後、位置合わせをした画素同士で引き算を行う(S600)。結果は判定処理によって、最終結果を出力する(S700)。次の検査物の有無があれば(S1010)、S1002に戻り、検査を繰り返す。なければ、検査を終了する(S1012)。
以上のように本発明は解像度の低い画像で撮影し、補間によって情報量を増やし、基準となるデータと比較することで、回路パターンと基準パターンの類似度を判定する。なお、類似度は良否という形の最終結果として出力してもよい。