HALCONは極めて高精度で計測を行うためのオペレータが用意されています。カメラのひずみや良い照明を使うことで画像のノイズレベルを低く抑えることにより、サブピクセル精度として1/10~1/50ピクセルを実現することができます。
サブピクセル精度はXLD(Extended Line Description)という線分から構成されるデータにより計算されます。
ここでは、BGAのボール部分の寸法計測をサブピクセル精度で行うアプローチを紹介します。
サブピクセル精度で計測する方法として次に示す2つのアプローチがあります。
【1】 画像をサブピクセルレベルで2値化して輪郭情報を得る方法
【2】 画像のエッジ情報を元にサブピクセルレベルで輪郭情報を得る方法
【1】 画像をサブピクセルレベルで2値化して輪郭情報を得る方法HALCONではサブピクセルレベルで2値化を行うオペレータが用意されています。これにより、指定したしきい値を囲うようなXLD情報を取得します。
XLDとはExtended Line Descriptionの略であり、サブピクセル精度を持つ点列データです。このXLDデータを操作することで高精度な計測、検査を実現することができます。XLDデータはサブピクセル精度の点データの集合であり、通常ならばこの扱いが非常に困難なのですが、洗練された設計により、HALCONではこのXLDデータをオブジェクトとして操作することで高い操作性を実現しています。この操作性により様々な応用が可能となります。
次に、このXLDを円近似し、この円の直径を求めることで、BGAボール部分の寸法計測を行います。
2値化により得られたXLDとそれを円近似した際のXLDを重ねて表示しました。
この手法は、ある特定のしきい値を元に2値化をしているだけなので処理速度は速いのですが、輝度変化などに弱く、2値化するためのパラメータを試行錯誤で探す必要があります。【2】 画像のエッジ情報を元にサブピクセルレベルで輪郭情報を得る方法
単純2値化を行った画像に対し、エッジ情報を求めます。
求めたエッジ情報を内側、外側に膨らませた領域を作成します。
この領域に対象を絞り、サブピクセル精度でエッジ情報を取得します。
単純2値化(threshold)を行った画像に対し、エッジ情報(boundary)を求め、それを内側、外側に対して膨らませた(dilation_circle)領域に対象を限定してサブピクセル精度でエッジ情報を取得(edges_sub_pix)し、それを円近似するようなXLDをfit_circle_contour_xldにて求め、gen_ellipse_contour_xldにて描画します。
次に、この等高線を円近似し、この円の直径を求めることで、BGAボール部分の寸法計測を行います。
2値化により得られた等高線と、それを円近似した際のXLDを重ねて表示しました。
この手法はエッジ情報を元に等高線を取得しているため、画像における輝度変化に対してロバストに動作します。