この発明は,コントラストの低い画像,ノイズを含む画像であっても安定した画像処理を行なえるようにすることを目的とする。
この発明はまた,モデル画像の設定が不要となり,オペレータによる操作を簡便にすることを目的とする。
この発明はさらに,構成および処理を簡素にすることを目的とする。
この発明はさらに対象物の制限をできるだけ少なくすることを目的とする。
この発明による画像処理装置は,複数の画素を含み,各画素がレベル・データを持つ,所与の画像データにおいて,処理単位のレベル勾配の少なくとも方向を算出する勾配算出手段,上記勾配算出手段によって算出されたレベル勾配の方向に対応する方向と所与の長さとを持つ線分を表わす線分画像データを生成する線分生成手段,および上記線分生成手段によって生成された線分画像データを記憶する線分画像記憶手段を備えているものである。
各画素のレベル・データとは,2ビット以上で表わされるグレイ・レベル・データである。
処理単位とは基本的には画素であるが,複数の画素からなるブロックでもよい。
画素のレベル・データは,それが輝度データであれば,明るさ(暗さ),または濃度を表わす。したがって,レベル勾配は明るさの勾配,暗さの勾配,濃度の勾配等の用語を用いて表現することもできる。画像データは輝度データに限らず,色(たとえば,赤,緑,青)を表わすデータでもよい。この場合にはレベル勾配は色の濃度の変化を表すことになろう。いずれにしてもレベル勾配の方向とは最大勾配(勾配の大きさが正または負の最大値を示す)の方向である。
レベル勾配の方向に対応する方向には,画像処理の目的に応じて様々な態様がある。その一はレベルが増加する方向(正の方向)であり,その二はレベルが減少する方向(負の方向)である。その三は,レベル勾配の方向に垂直な方向である。レベル勾配の方向に垂直な方向には2方向存在するが,いずれか一方向でもよいし,両方向でもよい。
一例を示すと,図1(A) に示すように,円(またはそれに近い形)を表わす画像(対象物の画像)があり,円の内部が相対的に明るく,背景が相対的に暗いとする。円の輪郭線Cの位置(画素)またはその付近で零でないレベル勾配が算出される。(作図の都合上,輪郭線Cは破線で明瞭に示されているが,一般的には輪郭線Cの付近で画像データの表わすレベル(明るさ,暗さ,濃度)が他の部分よりも急激に変化していると理解されたい。また,このレベルの変化は輪郭線Cの接線方向に垂直な方向に最大値を示すものと仮定している。このことは,後述する他の例についても同じである。)画像が明るい方が画像データのレベルが高いと仮定する(実際にはこの逆も,もちろんありうる)。零でないレベル勾配が算出された画素からレベルが増加する方向(正の方向)に所定の長さ(後述する)の線分を生成したとすると,図1(B) に示すように,輪郭線Cから円の中心に向かう多数の線分Lが描画される。これにより,輪郭線Cの位置または円の存在が明瞭になる。線分Lをもっと長くすれば円の中心が分る。逆に,零でないレベル勾配が算出された画素からレベルが減少する方向(負の方向)に適当な長さの線分を生成したとすると,図2(A) に示すように,輪郭線Cから放射状に円の外方に向かう多数の線分Lが描画される。輪郭線Cの位置または円の存在が明瞭になる。
もう一つの例を示すと,図3(A) に示すように,方形を表わす画像(対象物の画像)があり,方形の内部が相対的に明るく,背景が相対的に暗いとする。方形の輪郭線Cを表わす画素において零でないレベル勾配が算出される。零でないレベル勾配の方向は輪郭線Cに垂直な方向である。零でないレベル勾配が算出された画素からレベル勾配の方向に垂直な2つの方向に所定の長さの線分Lを生成したとすると,図3(B) に示すように,輪郭線Cと重なる線分Lや輪郭線Cの延長上に延びる線分Lが描画される。方形の存在,その輪郭線Cの位置,方形の方向等が明瞭になる。
線分画像記憶手段に記憶された線分画像データに基づいて画像処理,たとえば,後述する対象画像の検出または認識(存在の検出,位置の検出,方向の検出),線分画像の表示が行なわれる。
この発明によると,所与の画像上において処理単位(たとえば画素)ごとに画像データのレベル勾配が算出され,算出されたレベル勾配の方向に対応する方向と所与の長さとを持つ線分を表わす線分画像が得られる。輪郭が必ずしも明瞭でない画像であっても明瞭な線分が得られる。したがって,コントラストの低い画像,ノイズを含む画像であっても,安定な画像処理が可能となる。構成または処理も比較的簡素である。基本パターン(モデル画像)の設定も不要である。
この発明の一実施態様においては,上記所与の画像データを記憶する画像記憶手段が設けられる。上記勾配算出手段は上記画像記憶手段に記憶された画像データについて処理単位ごとにレベル勾配を算出する。
もっとも,すべての画像データを一時的に記憶する画像記憶手段は必ずしも設けなくてもよい。たとえば,互いに隣接する複数の走査線に沿う画像データを複数のライン・メモリ上をシフトさせながら実時間でレベル勾配を算出する形態とすることもできる。
上述した所与の画像データはビデオ・カメラ(またはテレビ・カメラ)(スチル・カメラを含む)によって撮像された一画面分の画像データでもよいし,メモリに記憶されている一画面分の画像データでもよいし,一画面分の画像データから取出された一部の領域内の画像データでもよい。この領域は一般的にはウインドウを設定することにより規定されよう。
この発明の一実施態様においては,画像処理装置には,入力画像データにおいて設定された処理領域内の画像データを取出して上記勾配算出手段に与える画像データ取出手段がさらに設けられる。
入力画像データはビデオ・カメラによって対象物を撮像することによって得られる画像データ,メモリにストアされている画像データ,他の装置から伝送される画像データ等を含む。
この発明の好ましい一実施態様においては,上記の処理領域を設定する手段がさらに設けられる。
この設定手段には種々の形態がある。その一は,表示装置上に入力画像データによって表わされる画像を表示し,この表示画面上において,処理の対象となる部分(対象画像を含む領域)をカーソル等を用いて指定するものである。設定手段は表示装置と,カーソルを移動させる入力を与える入力装置とから構成されよう。
その二は,あらかじめ定められた位置にあらかじめ定められた(または入力された)大きさの領域を設定するものである。この場合には設定手段は位置および大きさを記憶する手段と,この記憶手段に基づいて処理領域を画像データ上で定める手段とから構成されよう。
線分生成手段によって生成される線分はグレイ・レベル(2ビット以上)の画像データによって表わすこともできるし,2値レベルの画像データによって表わすこともできる。線分をグレイ・レベルで表わした場合にそのレベルは固定でも,可変でもよい。2値レベルの場合には,線分画像データは1または0のいずれかの値をとる。線分画像データは,線分の始点(座標),終点(座標)およびレベル(値)を表わすデータによっても表現することができる。
好ましい実施態様においては,上記勾配算出手段はレベル勾配の方向に加えてレベル勾配の大きさを算出する。この場合に,線分生成手段は,算出されたレベル勾配の大きさに応じたレベル(明るさ,暗さ,または濃度(色の濃度を含む))を持つ線分画像データを生成するものであることが好ましい。このことによって,レベル勾配の大きさに応じたレベルで線分が描画される。
さらに好ましい実施態様においては,上記勾配算出手段によって算出されたレベル勾配の大きさと所定しきい値レベルとを比較し,レベル勾配が所定しきい値レベル以上である場合にのみ,線分画像を生成する(線分画像のレベルは固定でも,上述のようにレベル勾配の大きさに応じた値でもよい)。レベル勾配は上述のように正または負の値を持つから,ここでは,レベル勾配の絶対値が所定しきい値レベル(正の値)以上であるかどうかを判断すると理解されたい。
算出されたレベル勾配が小さい場合には線分画像は生成されないから,小さいレベル変化やノイズによる影響を受けないようにすることができる。所定しきい値レベルは,外乱として処理対象から除外するかどうかという観点から定めればよい。
図1(B) においては線分の長さが短く設定されている。線分の長さを円の半径よりも大きくした場合には,図2(B) に示すように,多数の線分が中心およびその付近で重なって描画される。(図2(B) および図4(B) においては分りやすくするために,線分の数を少なくしてある。)
多数の線分の画像を記憶する線分画像記憶手段への線分画像データの記憶のやり方には2通りある。
その一は,各画素について,既に記憶している線分画像データ(レベル・データ)(0を含む)に,新たな線分画像データ(レベル・データ)を加算し,加算結果を記憶するものである。線分画像記憶手段は加算手段を含むことになる。このやり方は,線分画像データをグレイ・レベルで表わした場合,2値レベルで表わした場合のいずれにも適用できる。上記の加算とは,新たな線分画像データを換算して(たとえば係数を乗じるなど)加算することを含む。線分が重なって描画される画素については,線分が重なる毎に画像データのレベルが増大して(累積されて)いく。
その二は,加算処理をすることなく新たな線分画像データを記憶するものである。結果として,線分画像データを表わす画像データ(0を除く)が既に記憶されている画素については記憶データはそのまま維持される(新たな線分画像データを上書きしても,書込まなくてもよい)。画像データが記憶されていない(0である)画素についてのみ,結果的に,その画素についての新たな線分画像データが新たに書込まれることになる。このやり方も,線分画像データをグレイ・レベルで表わした場合,2値レベルで表わした場合のいずれにも適用できるが,特に2値レベルで表わした場合に有効である。たとえば,線分画像データを2値レベルの1で表現した場合に,線分が密集して描画される部分では1の画像データが密集している。
零でない勾配レベルが算出されたときに,どの程度の長さの線分を,またはどの位置からどの位置までの線分を生成するかということについては,いくつかの態様がある。
その一は,図1(B) から図2(B) 等を参照して説明したように,処理単位の位置(画素またはブロックの中心)から,算出された勾配の方向に対応する方向に,所与の長さをもつ線分を生成するものである。この場合には,線分の長さをあらかじめ設定しておくか,入力すればよい。
その二は,図4(A) に示すように,処理単位の位置(画素またはブロックの中心)eから線分Lの始点までの距離dと,処理単位の位置eから線分Lの終点までの距離Dとを与えるものである。この場合には,線分生成手段は,与えられた距離dとDと算出されたレベル勾配の方向とを用いて始点と終点の位置を算出し,算出されたレベル勾配の方向に対応する方向に,算出された始点から終点までの線分Lを生成する。
図4(B) は距離dとして円の半径よりも小さく0ではない値を採用し,距離Dとして円の半径よりも大きくかつ直径よりも小さい値を採用した場合に描画される線分Lの例を示している。図5(A) は,距離dとDをともに円の半径に等しい値に設定した例を示している。生成される線分Lは点(1画素)となる(点も線分に含まれることとする)。図5(B) 図はd=0,D=∞(無限大)とした場合で,かつ線分を円の外側に描いた例である。円を内部に含む処理領域Wが設定されており,処理領域Wの境界が距離=無限大の位置である。処理単位の位置から長さ無限大の線分を描くと表現することもできる。
線分の長さ,距離d,D等は処理目的に応じて定めればよい。
好ましい実施態様では,線分の長さ,距離d,D等を設定または入力する手段がさらに設けられる。利用者はこれらの値を設定または入力する操作で足りるので,操作が容易である。もちろん,これらの値は処理目的に応じてあらかじめ設定しておいてもよい。
特定の形状または大きさ(許容された範囲内の形状または大きさ)を持つ対象画像の存在の有無の検出,その方向またはその中心位置の検出等を行うために,好ましい実施態様においては,画像処理装置は,上記線分画像記憶手段に記憶された線分画像データによって表わされる線分が密集して存在する箇所を検出する手段を備えている。この検出手段は,線分画像記憶手段に線分画像データを加算しながら書込む場合と,加算しないで書込む場合のいずれにも適用できるが,特に,2値で表わされた線分画像データを加算しないで記憶する線分画像記憶手段に対して有効である。
一例を挙げると,適当な大きさの領域(たとえば10×10画素)において,線分が存在する(線分を描画している画素,または線分を表わすデータを持つ画素)の数が多い場合(所定しきい値を超える場合)に,その領域は線分の密集箇所といえる。上記の領域は処理範囲(領域)にわたってスキャニングされる。
他の好ましい実施態様においては,画像処理装置は,上記線分画像記憶手段に記憶された線分画像データ・レベルのうち最大レベルを示す画素の位置を検出する手段を備えている。この検出手段は線分画像データを加算しながら記憶する線分画像記憶手段に対して有効である。
線分画像データの加算結果(累積結果)の最大レベルが所定のしきい値を超えているかどうかを判定する手段をさらに備えることが好ましい。
これらの検出手段による線分の密集箇所の存在(位置)の検出,最大レベルの画素の位置の検出,または所定しきい値を超える最大レベルの存在(位置)の検出は各種の検査に応用される。しきい値は検査の目的に応じて試行錯誤により定められよう。
たとえば図4(B) の例では,ある半径(またはそれに近い値をもつ半径)をもつ円またはそれに近い形状(そのような形状をもつ対象物)の存在と位置が検出される。半径がaからb(a<b)までの円形またはそれに近い形状を検出する場合には,処理単位(画素等)から線分の始点までの距離dとして半径aを採用し(d=a),処理単位(画素等)から線分の終点までの距離Dとして半径bを採用すればよい(D=b)。円形状(対象物)の半径がaからbまでの場合に限り,線分がその中心付近で密集する,または最大レベルがしきい値を超えるので,その箇所を中心とする円(またはそれに近い形状)が存在すると判定される。同様に円弧状の輪郭をもつ形状または対象物を検出できる。
図5(A) に示す例では半径rがr=d=Dである円(またはそれに近い形状)が存在する場合に,その中心に線分(点)が密集する,または最大レベルがしきい値を超えるので,そのような円の存在と中心位置を確認することができる。中心位置の検査のみならず,半径検査,真円度検査に適用することができる。
したがって,後述するように,被検査対象についての画像を表わす画像データを,特定の形状を持つ対象物の存在と位置,画像データ・レベルの変化として現れる欠陥領域の存在と位置等の検査に用いることができる。
上記の画像処理装置によると,円形または対象物の位置は必ずしも充分に正確に特定されるとは限らない。しかしながら,所定の円形または対象物の少なくとも存在とそのおおよその位置が判明するので,正確な位置,形状を特定することが必要であれば,エッジ抽出法等の他の方法を用いればよい。
さらに他の応用例としては,角が丸く面取りされた対象物の面取り半径(曲率半径)の検査がある。この場合には,面取り半径の公差の最小値をd,最大値をDとすればよい。このことにより,面取り半径が公差内にある場合にのみ,線分が密集する,または最大レベルが所定しきい値を超える。
図3(B) に示す例においては,方形の輪郭線および角において線分が密集する,または最大レベルがしきい値を超える。したがって,方形または対象物の直線状の輪郭,角で代表される2つ以上の直線の交点の存在と位置,配置方向等を検出することができる。これは,寸法検査,面積検査,重心位置検査,方向(主軸方向,辺の方向,対角線の方向)検査等に応用できる。
累積された線分画像データを記憶する線分画像記憶手段に記憶された各画素の画像データのレベルを所定のしきい値と比較し,しきい値を超えるレベルのデータをもつ画素が表わす形状を生成(描画)するようにすることもできる。ノイズ等の外乱の影響を排除できる。
上述した各種の検査においては,好ましくは,対象物がカメラによって撮像され,この撮像によって得られた画像データが勾配算出手段に与えられる。画像処理装置はカメラのような撮像手段を持つ。
さらに好ましい実施態様においては,上記線分生成手段によって生成された線分を表わす線分画像データ,または線分画像記憶手段に記憶された線分画像データによって表わされる線分画像を表示する表示装置が設けられる。この表示をみることにより,上記勾配算出手段,線分生成手段または線分画像記憶手段による処理過程を視覚によって確認またはチェックすることができる。所定しきい値以上のレベルを持つ線分の部分のみを表示するようにしてもよい。
表示装置の表示画面には,線分画像に加えて,撮像手段によって撮像された画像(対象画像)または勾配算出手段の処理対象である画像データによって表わされる画像(対象画像)を重ねて表示することが好ましい。さらに,これらの対象画像のエッジを抽出し,エッジ画像を線分画像に重ねて表示してもよい。望ましくは,対象画像を表示する,しない,エッジ画像を表示する,しない,を選択できるようにする。対象画像とエッジ画像の両方を線分画像に重ねて表示してもよいのはいうまでもない。
この発明の望ましい実施態様においては,上述のようにして検出された密集箇所,最大レベルを持つ画素,またはしきい値を超える最大レベルを持つ画素の位置を示すマークを対象画像またはエッジ画像に重ねて表示する。対象画像とエッジ画像を重ねて表示してもよい。対象画像とエッジ画像のいずれかを表示するように切換えることもできる。線分画像をさらに重ねて表示してもよい。
この発明はさらに,与えられた画像データにおいて,処理単位のレベル勾配の少なくとも方向を算出し,算出したレベル勾配の方向に対応する方向を持つ線分を表わす線分画像データを生成する画像処理手段,および上記画像処理手段によって生成された線分画像データによって表わされる線分画像を表示する表示手段を備えた画像処理装置を提供している。
画像処理手段による処理過程を表示装置に表示された線分画像を通して視覚的に確認またはチェックすることができる。
上記画像データによって表わされる画像(対象画像)を上記線分画像に重ねて表示するとよい。または,上記画像データによって表わされる画像のエッジを抽出し,上記画像データによって表わされる対象画像に加えて,または代えて,抽出されたエッジの画像を表示することが好ましい。対象画像表示とエッジ画像表示を切替える手段を設けることもできる。
この発明はさらに,上述したすべての画像処理を実行する方法,および上述したすべての画像処理をコンピュータに実行させるようにコンピュータを制御するプログラムを記録した媒体を提供している。
この発明による画像処理装置を別の観点から規定すると,次のように表現される。すなわち,この発明による画像処理装置は,与えられた画像データにおいて,レベル勾配が所定値以上である複数のエッジを抽出する手段,抽出されたエッジの方向に対応する方向にのびる線分を各エッジについて設定する手段,および複数の線分の交点の有無とその位置を検出する手段を備えているものである。
線分の方向は,代表的には,エッジの方向に直交する方向またはエッジの方向と同じ方向である。
画像上の少なくとも2点についてエッジを検出し,線分を設定することによりその交点の有無を判別することができ,交点が有る場合にはその位置を算出することができる。一または複数の交点を検出することによって対象画像の形状,位置,方向等を判別できる。
この発明はさらに,上述した各種の検査を行なうのに適した検査装置を提供している。
この検査装置は,検査対象物を表わす画像データを入力する画像入力手段,上記入力画像データにおいて,処理単位のレベル勾配の少なくとも方向を算出し,算出したレベル勾配の方向に対応する方向を持つ線分を表わす線分画像データを生成する手段,および生成された線分画像データに基づいて,線分画像が密集または重なった箇所の有無と位置を検出する手段を備えているものである。
上記のレベル勾配の方向に対応する方向は,代表的には,レベル勾配の方向またはレベル勾配の方向に垂直な方向である。レベル勾配の大きさが所定値以上のものについてのみ線分を生成することが好ましい。
線分画像が密集している箇所とは先に述べた通りである。線分画像が重なった箇所とは,線分の交点の画素,線分画像データの累積値が所定しきい値を超えた画素,累積値が最大の画素,累積値が最大であってかつ所定しきい値を超えた画素などいう。
この発明による検査装置は,そのオペレータが基準パターン(モデル画像)の設定が不要であるなど,操作が簡便であるとともに,構成,処理が簡素である。検査対象の形状,大きさ等についての制限も殆どない。照明変動,ノイズ等の外乱の影響を受けにくく,またコントラストの低い不鮮明な画像にも適用できる。
一実施態様では,上記線分画像データに基づいて,線分画像を表示する表示装置が設けられる。線分画像の生成過程が視覚的に明らかになる。
上記表示装置には上記入力画像データによって表わされる対象物の画像を線分画像に重ねて表示することが好ましい。
他の実施態様では,検出された,線分画像が密集した,または重なった箇所の位置を,上記入力画像データによって表わされる対象物の画像または上記入力画像データから抽出されたエッジ画像上に表示する表示装置が設けられる。
種々の検査目的に適合させるために,線分の長さ,または線分の始点と終点に関するデータを入力する手段がさらに設けられる。
この発明の検査装置は,対象物における欠陥領域の有無と位置の検査,対象物における円形または円弧形状の有無と位置の検査,円または円弧の中心位置の検出,半径の測定,真円度の検査,対象物の辺や角の有無と位置の検査,寸法,面積,重心位置,方向等の検査に利用できる。
この発明のさらに他の特徴は図面を参照した実施例の説明において一層明らかになるであろう。
この実施例はBGA(ball grid array ),すなわち下面にはんだボールの端子をアレイ状に配置したLSI(Large Scale Integration )のパッケージを実装(搭載)した基板のX線透過画像を処理するものである。はんだボール(はんだバンプを含む)が溶融したものもこの実施例でははんだボールというものとする。この画像処理装置ははんだボール内にボイドが存在していないかどうかを検査するものである。
図6は,画像処理装置に供給される画像データを生成するための構成を示すものである。
検査対象の基板18は,支持機構(図示略)によりX線照射部16とX線変換部17との間に支持されており,X線変換部17の下方位置にはカメラ20が配置されている。X線照射部16は,微小なX線発生源より基板18に対しX線を照射する。基板18を透過したX線はX線変換部17で可視光線に変換される。カメラ20は,変換された可視光線を撮像して,各はんだボールの内部状態を表わすX線透過画像を表わす画像データを生成し,画像処理装置に供給する。
図7は画像処理装置の電気的構成を示すものである。
画像処理装置は,画像入力部2,画像メモリ3,画像出力部4,線分画像メモリ5,文字メモリ6,制御部11,タイミング制御部12,モニタ表示装置13,I/Oポート14などにより構成される。
画像入力部2は,カメラ20からのアナログ映像信号をディジタル画像データに変換するためのA/D変換器などを備えている。画像入力部2において生成されたディジタル・グレイ・レベル画像データは画像メモリ3に格納され,次の画像データ入力時まで保存される。
線分画像メモリ5は,後述する線分画像を表わす線分画像データを記憶するものである。このメモリ5の線分画像データはボイドの検出処理や線分画像のモニタ表示装置13への表示等のために用いられる。後述する線分画像の輝度レベルが8ビットで表わされる場合には,このメモリ5は1画素当り16ビットまたは32ビットを記憶できるものである。
文字メモリ6には検査結果などモニタ表示装置13上に表示するためのテキスト・データ,その表示位置を示すデータ等が格納されている。
これらメモリ5,6および画像メモリ3は,それぞれアドレス/データ・バスを介して制御部11に接続されており,制御部11からの指令およびタイミング制御部12からのタイミング信号に応じて,記憶データを画像出力部4へ出力する。
画像出力部4は,各メモリ3,5,6からの出力データを合成処理する画像合成回路や,D/A変換回路を備え,これら回路により検査結果表示用の画像信号を生成してモニタ表示装置13へ出力する。
制御部11は,主にCPU7,ROM8およびRAM9により構成される。制御部11はさらに検査のための一連の手順をCPU7に実行させるための制御プログラムがインストールされたハードディスク10を備えている。CPU7は,ハードディスク10にインストールされた制御プログラムに基づいて,アドレス/データバスを介して上述したメモリ3,5および6にアクセスして,検査対象である基板上の各はんだボールの良否の判定処理を実施し,その結果をモニタ表示装置13に出力する。
I/Oポート14は,キーボードやマウスなどの入力部や,外部記憶装置,伝送部のような出力部を接続するためのものである。入力部からは,後述する検査条件や検査領域の設定データが入力される。出力部へは,ファイル化された最終検査結果が出力される。
図8は画像メモリ3に格納されているグレイ・レベル画像データによって表わされる画像の一例を示すものである。複数個のはんだボール21の画像が背景(基板の画像)よりも明るく現れている。はんだボール21の画像の中には,はんだボール内部のボイド22の画像が映っているものもある。ボイド22の画像ははんだボール21の画像よりもやや暗い。
CPU7は,図8に示されるような入力画像において,はんだボールごとにそれを囲む大きさの検査領域rk (k=1〜6)を設定する。各検査領域rk において,画素ごとに,グレイ・レベル画像データのレベル勾配の方向と大きさを算出する。CPU7はさらに,算出したレベル勾配の方向に沿う方向を持ち,所定の長さの線分を生成する(後述するように,レベル勾配の大きさが所定値以上の場合についてのみ線分が生成される)。線分の画像もグレイ・レベル画像であり,そのレベルは算出したレベル勾配の大きさに対応する。このようにして生成された線分画像データは線分画像メモリ5に格納される(後述するように,レベルは画素ごとに累積されていく)。線分画像データは画素ごとにレベル・データを持つ画像データであってもよいし,線分の始点,終点およびレベルを表わすデータによって構成することもできる。
各検査領域内のすべての画素についてのレベル勾配の算出,必要な線分画像の作成が終了すると,CPU7は線分画像の密集の度合い,または最大レベルをもつ画素の検出,最大レベルと所定のしきい値レベルとの比較を行い,最終的に検査領域内にボイド22の画像が存在するかどうかを判定する。
画像処理装置における具体的な処理手順を説明する前に,線分画像の生成処理,および線分画像に基づくボイドの有無の判定原理について説明する。
画像データにおけるレベル勾配の算出処理では,検査領域内の各画素ごとに,その画素を中心とする所定大きさの局所領域において微分処理を行って,X,Y各軸方向のレベル勾配を算出し,これら算出した値を用いて最終的に各画素におけるレベル勾配を求める。
たとえば図9に示すように,座標位置(x,y)にある画素gに対し,3×3の局所領域を設定する。ソーベル手法による微分処理では,各軸方向のレベル勾配dx(x,y),dy(x,y)は,それぞれ,各画素の輝度(明るさ)レベルIを用いて,式(1) ,(2) により算出される。
dx(x,y)=[I(x+1,y-1)+2・I(x+1,y)+I(x+1,y+1)]
-[I(x-1,y-1)+2・I(x-1,y)+I(x-1,y+1)] …式(1)
dy(x,y)=[I(x-1,y+1)+2・I(x,y+1)+I(x+1,y+1)]
-[I(x-1,y-1)+2・I(x,y-1)+I(x+1,y-1)] …式(2)
X軸,Y軸方向へのレベル勾配は,それぞれdx(x,y),dy(x,y)の大きさを持ち,X軸,Y軸方向に向かうベクトルにより表わされる。したがって,画素gにおけるレベル勾配はこれらX軸,Y軸方向へのベクトルの合成によって表わされる。合成ベクトルの大きさEi (x,y)は次式で与えられ,方向は最大の勾配を示す方向となる。
Ei(x,y)=[(dx(x,y))2+(dy(x,y))2]1/2 …式(3)
図10(A) から図10(H) は,画素ge とその近傍の画素の輝度レベル分布によってレベル勾配の方向がどのようになるかを種々の例をもって示すものである。ハッチングされている部分の方が輝度値が高い(明るい)。
ベクトルFはX軸およびY軸方向へのレベル勾配のベクトルの合成ベクトルである。図示の例ではベクトルFは輝度レベルの高い方から低い方に向かっているが,レベル勾配の正の方向をどちらに選ぶかに応じてベクトルFの向きは決まる。
画素ge からX軸の正方向に沿うベクトルBを0度として,合成ベクトルFのベクトルBに対する反時計回り方向の角度Ec (x,y)によりレベル勾配の方向を表現する。
X,Y各軸方向のレベル勾配の大きさ(正,負または零)に応じて,ベクトルFは,基準ベクトルBに対し,0〜90度, 90〜180度,180〜270度,270〜360度のいずれかの角度範囲に設定される。レベル勾配の方向を示す角度Ec (x,y)は,レベル勾配の大きさdx(x,y),dy(x,y)による条件に応じて,つぎの式(4) 〜式(9) のいずれかにより算出される(単位は度である)。また画素ge におけるレベル勾配の大きさはベクトルFの長さに相当するから,上述した式(3) により算出される。
dx(x,y)<0 かつ dy(x,y)>0 ならば
Ec(x,y)=-arctan(dx(x,y)/dy(x,y)) …式(4)
dx(x,y)>0 かつ dy(x,y)≠0 ならば
Ec(x,y)=180-arctan(dx(x,y)/dy(x,y)) …式(5)
dx(x,y)≦0 かつ dy(x,y)<0 ならば
Ec(x,y)=360-arctan(dx(x,y)/dy(x,y)) …式(6)
dx(x,y)>0 かつ dy(x,y)=0 ならば
Ec(x,y)=180 …式(7)
dx(x,y)≦0 かつ dy(x,y)=0 ならば
Ec(x,y)=0 …式(8)
dx(x,y)=0 かつ dy(x,y)>0 ならば
Ec(x,y)=90 …式(9)
図11は,図8に示す入力画像のうち,検査領域r2 内の画像の輪郭線のみを抽出して示すものであり,はんだボールの画像の輪郭線とボイドの画像の輪郭線とが示されている。この輪郭線上の代表点e1,e2について算出されるレベル勾配を表わすベクトルF1 ,F2 もあわせて示されている。
はんだボールの画像は背景部分よりも輝度レベルが高いから,はんだボールの輪郭線上の点e1 では,この点e1 から背景側へ向かうベクトルF1 が得られる。一方,ボイドの画像ははんだボールの画像よりも輝度レベルが低いから,ボイドの輪郭線上の点e2 におけるレベル勾配は,点e2 の位置から内側に向かうベクトルF2 により表わされる。
図12は図11に示すはんだボールの輪郭線およびボイドの輪郭線上のすべての(図示できる範囲で)点(画素)について,レベル勾配の方向を表わす線分を描いたものである(線分画像のレベルを一定と仮定している)。
はんだボールの輪郭線上においては,すべての線分L1 が外方(背景側)へ向かっている。
これに対して,ボイドの輪郭線上においてはすべての線分L2 がボイドの内部に向かっている。すべての線分L2 はボイドの内部において交わり,ないしは重なり合っている。線分L2 の交わり,ないしは重なりが,検査領域内にボイドの画像が存在するか否かを判定するに重要である。この意味で,線分の長さ,または線分の始点と終点の位置は重要である。
図11および図12は輪郭線がはっきりとしていることを前提として描いたものであるが,実際の画像では画像の各部分(背景,はんだボール,ボイド)の境界は鮮明でないことが多いので,線分の方向はきれいな放射状とはならず,線分の始点も円周の上に存在するとは限らない。しかしながら,上述のようにして描かれる線分は鮮明であり,かつその全体的な像から境界が明瞭に浮び上る。
図13(A) から図13(D) は長さ,始点と終点がそれぞれ異なる線分の例を示すものであり,円形の輪郭線上に代表点ep とeq をとって,それらの点についてレベル勾配を求めた結果得られる線分を示している。
図13(A) では2つの線分Lp とLq はその線分を作成するためのレベル勾配算出の対象となった画素ep ,eq から始まり,円の直径よりも長い長さを持つ。輪郭線上のすべての点について線分を描いた場合に,それらの線分は互いに重なり,これらの線分が表わす全体像は円(輪郭線)よりも大きくなる。円の存在は検出可能であるが,その大きさ,中心等の検出は困難である。
図13(B) では画素eq から線分Lq の始点までの距離dは円の半径よりも大きく,画素eq から線分Lq の終点までの距離Dは円の直径よりも大きい(線分Lp についても同じ)。線分は円の輪郭を中心として円環状に密集することになる。この場合にも円の存在は検知できるが,その中心や大きさの検出は困難である。
図13(C) では,線分Lp ,Lq は画素ep ,eq を始点とし,その長さは円の半径よりも短い。したがって,線分は円の内側に沿って密集し,円の中心には存在しない。この場合にも円の存在の検知は可能であるが,その中心の検出は困難である。
図13(D) では,画素eq から線分Lq の始点までの距離dが円の半径よりも小さく,画素eq から線分Lq の終点までの距離Dは円の半径よりも大きくかつ円の直径よりも小さい。この場合には線分は円の中心付近に密集する。線分が重なっている画素については,その画素を通るすべての線分の輝度レベルを加算(累積)すると,円の中心で最大数の線分が重なるから,加算値は円の中心で最大となる。このように加算値の最大レベルを検出することにより,円の中心を検出することが可能である。これは図4(B) を用いて先に説明したのと同じである。
したがって,あらかじめ不良と判定すべきボイドの大きさに応じて,画素と線分の始点の位置関係(距離d),およびライン長さ(距離D)を設定しておく必要がある。
各画素を通る線分の輝度レベルを加算せずに,単に線分が有るか無いか(密集の度合い)によってもボイドの検出は可能である。すなわち,局所領域(たとえば,10画素×10画素)において線分が描画されている画素数の割合が高いところほど線分が密集していると判断する。
このような考え方は,対象物が略円形である場合に,ある範囲の半径を有するものだけを抽出する用途に利用することができる。たとえば,半径がaからbまでの対象物を抽出したい場合には,キーボードからaとbの値を入力する。画像処理装置は画素の位置から線分の始点までの距離をa(d=a),画素の位置から線分の終点までの距離をb(D=b)に設定する。そうすると対象物の半径がaからbまでの場合に限り線分の密集が発生するので,線分の密集が検出できれば,その場所に目的の対象物が存在すると判定することができる。
距離dとDとを同一の値に設定することもできる。この場合には線分の長さは0である。実際には1画素だけが線分となる。このようにすると,図5(A) に示すように,対象物が設定した値(d=D)の半径を持つ円の場合は非常に狭い領域に線分(点)が集中し,それ以外の場合は線分(点)が分散するので,その分散の程度により円の目標半径からの誤差の程度または真円の程度を知ることができる。
画素から線分の終点までの距離Dは無限大でもよい。これは,実際には線分画像メモリで表現される領域の端に行き着くまで線分を引くことを意味する。d=0,D=∞をデフォルト値としておけば,半径の大きさにかかわりなく,円や円弧が存在することについての検出ができる。特に図5(B) に示すように,線分を円の外側に向かって引く場合に有効である。
この実施例では,上述した原理に基づき,画素の位置から線分の終点までの距離Dと,画素の位置から線分の始点までの距離dとを,検査条件として設定することにより,所定値以上の大きさのボイドを,検出対象として検出するようにしている。また,この検査条件を必要に応じて変更して再度検査を実施することも可能である。
図14および図15は画像処理装置において,カメラ20から入力された1枚の画像に対する制御手順を示す。検査条件となる画素の位置から線分の終点までの距離D,および画素の位置から線分の始点までの距離dは,この手順の実行に先立って入力され,RAM9内に記憶されているものとする。
まずステップST0 で,カメラ20からの画像信号がディジタル変換されて画像メモリ3に格納されると,CPU7は,この入力画像を画像出力部4を介してモニタ13に表示させる。
オペレータが,マウスなどを用いて,表示画像上で,はんだボールのうちの任意の1個を含むように検査領域を指定する。CPU7はこの指定位置に基づき,検査領域の設定位置(はんだボールとの相対位置関係)や領域の大きさを認識する。基板上の各はんだボールの位置(たとえば基板の座標原点を基準とする位置)は,あらかじめ,またはこの時点で既に入力されているものとする。CPU7は,検査領域の指定を受けた以外のはんだボールについても,はんだボールと検査領域との位置関係を用いて,検査領域をそれぞれ設定する(ステップST1 )(図8参照)。検査領域の位置は,その領域の左上,右下の頂点の座標(xk1,yk1),(xk2,yk2)により表わされる。
CPU7は,ステップST2 へ移行して,線分画像メモリ5内の各画素のレベル・データを0にクリアし,その後,検査領域ごとに,ステップST3 〜ST19の処理を繰り返し実行する。
ステップST3 では,着目画素gの初期位置が検査領域の左上頂点の位置(xk1,yk1)に定められる。ステップST4 では,式(1) ,(2) に基づいて,着目画素gにおけるX軸,Y軸方向のレベル勾配dx(x,y),dy(x,y)が算出される。dx,dyがともに0の場合にはステップST6 〜ST10をスキップする。dx,dyのいずれかが0でなければ,式(4) 〜(9) のいずれかdx,dyに適合するものにしたがって,レベル勾配の方向を示す角度Ec (x,y)およびレベル勾配の大きさEi (x,y)が算出される(ステップST6 )。
続いて算出したレベル勾配の大きさEi (x,y)が所定のしきい値EiLB より大きいかどうかがチェックされる(ステップST7 )。レベル勾配の大きさEi (x,y)がしきい値EiLB 以下であれば,線分を生成するステップST8 〜ST10の処理は行われない。入力画像における輝度むら等の検出すべき対象ではないものについては線分を生成しないことにより,無駄な処理を省き,誤った検査結果が得られるのを防ぎ,全体として処理の高速化を図る。
CPU7は,着目画素gの位置(x,y)において,反時計回りの方向にEc (x,y)の方向を線分の方向として定める。この設定方向において,着目画素gから距離d,Dそれぞれ離れた各点を,着目画素gに対応する線分の始点,終点として設定し,線分画像メモリ5において,これらの点に相当する座標(xo ,yo ),(xT ,yT )を認識または算出する(ステップST8 )。CPU7は,次のステップST9 で線分画像メモリ5において,上記の始点および終点により規定される線分上のすべての画素の座標を算出または認識し,認識した各画素に対し,それぞれの画素が現在保有する(その画素に対応して記憶されている)レベル値にステップST6 で算出されたレベル勾配の大きさEi (x,y)に相当するレベル値を加算し記憶する(ステップST10)。
ステップST11〜ST14は,検査領域内の画像の着目位置を順次ずらす処理を示すものである。以下同様にして,検査領域内でレベル勾配の大きさがしきい値EiLB を超える画素毎に,そのレベル勾配の方向に沿い,かつレベル勾配の大きさに相当するレベルを有する線分が設定されて,線分画像が生成されていく。
線分画像メモリ5内で線分上に存在するとして認識された画素のレベル値には,新たに設定される線分のレベルに応じた値が加算されてゆくから,線分が重なっている画素は他の画素よりも高いレベル値を保有するようになる。レベル勾配の大きさEi (x,y)が大きいほど,高いレベル値を持つ線分が設定される。また一般に,画像上のはんだボールやボイドの輪郭ではレベル勾配は大きいから,ボイドの輪郭に沿う部分において生成された線分はボイドの内部で数多く重なることになり,ボイドの内部で画素のレベル値はきわめて高くなる。
CPU7は,検査領域内のすべての画素について処理を終えると,処理対象の検査領域内における画素の持つレベルの最大値Dmax を抽出する(ステップST15)。検出されたレベルの最大値Dmax は,ステップST16で所定の基準値DLBと比較される。Dmax がDLBを上回るときは,検査領域内にボイドの画像が存在すると判定され,さらにレベルの最大値Dmax が得られる画素の位置が認識される(ステップST17,ST19)。またDmax がDLB以下である場合には,検査領域内にはボイドの画像はないものと判断される(ステップST18)。
同様にしてすべての検査領域についての処理が終了すると,ステップST20で「YES 」となってステップST21へと移行する。CPU7は,線分画像メモリ5内の各画素のレベル値を順次読み出して,式(10)により,各レベル値P(x,y)を8ビット構成で表示可能な値になるように正規化する。
P(x,y)←P(x,y)×255/Dmax …式(10)
この後,CPU7は,正規化された線分画像データを,原入力画像データや判定結果を示すテキスト・データなどとともに画像出力部4に出力して合成処理させ,モニタ表示装置13へ出力させる(ステップST22)。対象の輪郭を抽出して輪郭を表示してもよい。
上記のステップST21では検査領域ごとに線分画像データを最大輝度レベルDmax で正規化しているので,すべての領域において正規化後の最大輝度は同じである。他方,すべての検査領域内における最大輝度レベルを検出し,この最大輝度レベルですべての検査領域の画像データを正規化すると,ボイドの存在しない検査領域ではその領域全体の輝度が小さいから暗く見え,ボイドが存在しないことが明瞭に分かるようになる。もちろん,あらかじめ定めたレベルを用いて全領域の画像データを正規化してもよいし,正規化を行わないようにしてもよい。
上記実施例では,各線分画像に,そのレベル勾配の大きさに応じたレベル値をもたせるようにしているが,これに限らず,すべての線分を同一のレベルで表わすようにしてもよい。しかしながら,輝度むらなどのノイズによるレベル勾配に対応する線分と,輪郭におけるレベル勾配に対応する線分とが同一の条件で生成されると,誤検出が生じるおそれがあるので,ステップST7 のようにレベル勾配の大きさが所定のしきい値以下のものは,線分生成処理対象から除外するのが望ましい。
図16(A) および図16(B) は,上述した制御手順により生成された判定結果の表示例を示す。図16(A) に示す例では,線分画像の中からレベル値がしきい値DLBを超える部分の画像30だけが抽出されて高い輝度を持つようにレベル変換され,原入力画像上に重ね合わせて表示されている。また画面の左上の位置には,ボイドの存在により不良と判定されたはんだボールの個数を示す文字情報31が表示されている。
図16(B) の表示例は,抽出されたボイドの位置を報知するようにしたもので,原入力画像に,ステップST19の処理で最大のレベル値Dmax が得られる画素の位置を示すマーク32が入力画像に重ね合わせて表示されている。
検査結果の表示例は上記に限らず,線分画像そのものを表示するようにしてもよく,また図16(A) ,図16(B) に示すような画像,エッジ画像,Ei (x,y)>EiLB を満たす画素による画像,線分画像などを適宜切り換えて表示して,検査の過程を確認できるようにしてもよい。
また上記実施例では,はんだボール毎に検査領域を設定しているが,これに限らず,画像上のすべてのはんだボールを含むように検査領域を設定してもよい。この場合,検査領域内の画像データについて,図14のステップST4 〜ST10と同様の処理を一度実行した後,しきい値DLBを超えるレベル値を有する画素を検索し,その画素の位置を各はんだボールの配置位置と照合することにより,ボイドを有するはんだボールを認識することができる。
また上記の実施例では,検出対象のボイドの輝度レベルが周囲の輝度レベルよりも低くなるため,各線分をボイドの内側に向かって設定しているが,はんだボールのように周囲よりも高い輝度レベルを有する対象物を検出対象とする場合には,線分を外方に向かって設定する必要がある。
さらに勾配算出処理の誤差などによる影響を考慮して,線分を設定すべき方向に加えて,その方向から±2度の方向にも線分を引き,合計3本の線分を設定するようにすれば,対象物の検出精度をさらに向上させることができる。
上記実施例では,はんだボールのX線透過画像に基づいて内部のボイドの有無を検査しているが,基板を通常の照明下で撮像した画像を用いてはんだ表面のピンホールの有無を検出する場合にも,上記と同じ方法を適用することができる。
さらに検査対象は円形状のものに限らない。たとえば輪郭形状の一部のみが円弧の形状をとるような対象物について,上記実施例と同様の方法で線分を設定すると,生成される線分が円弧の中心位置付近で重なり合うようになる。また,物品の角を丸く面取りする場合に,面取り半径の公差の最小値をd,最大値をDとして上述した処理を行なうと,面取り半径が公差内である場合だけ線分の密集が発生するので,面取り半径の検査を簡単に行うことができる。
また上記実施例の画像処理装置によれば,矩形状の輪郭を有する対象物や,角を有する対象物を抽出することも可能である。この場合には,図3(B) に示すように,レベル勾配の方向に垂直な2方向を向く線分を生成することにより,線分の交点を角の位置として抽出することになる。したがって方向の特定が可能な形状のものを処理対象物とする場合,この処理結果により,対象物の位置のみならず,対象物がいずれの方向を向いて位置しているかも確認することが可能となる。
図17は,十字型の輪郭形状を有する対象物のグレイ・レベル画像の例を示すもので,対象物の画像は背景の画像よりも高い輝度レベルをもって現れている。
図18は,図17に示す対象物の輪郭の部分で算出されるレベル勾配の方向を示すもので,レベル勾配の方向は各辺に垂直で背景に向かう。
図19は,図7の画像処理装置に図17のグレイ・レベル画像を入力して,対象物の位置や傾きを計測する手順を示す。画像処理装置には,対象物を通常の照明下で撮像して得られた画像データが供給される。
まずステップST30で,カメラからの画像データが入力されると,CPU7は,図14の手順と同様に,画像上での検査領域の指定を受け,指定された領域の左上,右下の各頂点位置の座標(x1 ,y1 ),(x2 ,y2 )を取り込み,検査領域の設定位置として認識する(ステップST31)。CPU7は,つぎのステップST32で,線分画像メモリ5の各画素のエリアをクリアし,その後,検査領域内の各画素に順次着目し,各画素毎にステップST34〜ST43の処理を実行する。
上記ループにおいて,CPU7は,図14,図15の手順と同様に,着目画素g(x,y)のX,Y方向の濃度勾配dx(x,y),dy(x,y)を算出する。各画素について,それぞれレベル勾配の方向Ec (x,y)およびレベル勾配の大きさEi (x,y)を算出する(ステップST34〜ST36)。算出したレベル勾配の大きさEi (x,y)がしきい値EiLB よりも大きければ(ステップST37),ステップST38で,検出されたレベル勾配の方向Ec (x,y)に対し,反時計回りに90度の角度をなす方向に沿って第1の線分を設定し,さらにステップST39で,この第1の線分と反対の方向,すなわち上記レベル勾配の方向Ec (x,y)に対し,反時計回りに 270度の角度をなす方向に沿って第2の線分を設定する。
このステップST38,ST39における各ラインの設定処理は,いずれも前記図14のステップST8 〜ST10に示したのと同様の手順により行われる。
検査領域内のすべての画素に対する処理が完了すると(ステップST40〜ST43),CPU7は,線分画像メモリ5内の各画素のレベル値をチェックし,検査領域内において所定のしきい値Dth以上のレベル値をとる画素を抽出する(ステップST44)。
図17に示すグレイ・レベル画像上の対象物について,そのレベル勾配の方向に垂直な2方向に沿って線分を設定すると,図20に示すように,対象物の輪郭を構成する各辺の長さ方向に沿って,線分が重なり合う線分画像が生成される。この場合,各方向の線分により形成される16個の交点のうち,対象物の角に対応する12の交点(図中●印で示す)において最も多くのラインが集中するから,これらの交点において得られるレベル値と,他の交点(図中×印で示す)において得られるレベル値との間に前記しきい値Dthを設定することにより,前記ステップST44において,対象物の角に相当する画素を検出することができる。
このようにして対象物の角に相当する画素が検出されると,つぎのステップST45で,CPU7は,各検出位置の座標を用いて,重心など対象物の位置を表わす代表点の座標を算出するとともに,検出位置の位置関係から対象物の主軸(2軸ある)を特定して,その軸方向がいずれの向きを向いているかを算出する。
この後,上記算出結果をモニタ表示装置13などへ出力したり,算出結果から画像の位置ずれや回転ずれを認識して,対象物の詳細な認識処理を実施するなど,目的に応じた処理が実施される。
図14,図15,図19に示す処理は,いずれもカメラにより生成された画像を画像処理装置内に直接取り込んで処理するようにしているが,これに限らず,離れた場所で生成されたディジタル画像データをI/Oポート14を介して入力して,処理することも可能である。
図14,図15,図19に示す処理は,いずれもハードディスク10にインストールされた制御プログラムに基づきCPU7により実行されるが,このうち一部の処理を,ハードウェアにより実施するようにすれば,CPU7の負担を減らして,処理をさらに高速化することができる。
図21は,画像処理装置の他の構成例を示すもので,図7に示す構成に加え,レベル勾配計測部25および重なり抽出部26が付加された構成をとる。
レベル勾配計測部25は,画像メモリ3に格納された入力画像上の各画素データを順次取り込んでX,Y方向レベル勾配dx(x,y),dy(x,y)を算出する微分処理回路や,これらレベル勾配dx(x,y),dy(x,y)からレベル勾配の大きさEi (x,y)やレベル勾配の方向を示す角度EC (x,y)を算出するための演算回路を具備する。また重なり抽出部26は,線分画像メモリ5の各画素を順次取り込んで,輝度レベルの最大値をとる画素を抽出したり,その最大値をしきい値DBLまたはしきい値Dthと比較するための回路構成を具備する。
CPU7は,レベル勾配計測部25を用いて検査領域内のレベル勾配の大きさやレベル勾配の方向を算出し,その後,これら算出結果を用いて,所定の大きさ以上のレベル勾配について,検査すべき対象物の形状に応じた方向に線分を設定する。そしてこの線分生成処理が完了すると,重なり抽出部26を作動させて,線分画像の重なりを検索させ,その検索結果に応じて,対象物の有無の判定,位置や傾きの計測処理を実施する。
画像処理装置の構成は,上記の実施例に限らず,例えば,線分画像の生成処理をハードウェアにより実施することも可能である。