本篇主要总结一下缺陷检测中测量拟合的方法。通过测量被测物的尺寸(长短粗细、高矮胖瘦、间隙宽窄,包括我以前做过的平面度、平行度、轮廓度)等问题来检测产品是否合格。
测量拟合
在产品生产过程中会不可避免的产生尺寸缺陷和表面外观缺陷,前几篇的缺陷着重于表面外观的检测,本篇基于尺寸缺陷检测用测量拟合的方法来实现。
halcon中测量算子分析:
在机器视觉中,测量是必不可少的一个分支。测量主要包括有物体大小的测量、距离的测量以及物体完整度检测等。在工业机器视觉里面常用的有1维测量和2维测量,不过大部分的测量都是要基于标定之后(需要获取环境参数,比如得到pixel的物理大小)不经过标定的测量都只是测量物体的相对大小(像素大小)。
1维测量:
像点到点的距离,边缘对的距离等沿着一维方向的测量都属于1D测量范畴。Halocn的一维测量的步骤:
创建测量矩形或者测量扇形区域(gen_measure_rectangle2,gen_measure_arc)
测量单边缘或边缘对(measure_pos,measure_pairs)
显示
相关算子:
gen_measure_rectangle2(形成测量矩形)
gen_measure_rectangle2( Row, Column, Phi, Length1, Length2, Width, Height, Interpolation : MeasureHandle)
参数列表:
Row//仿射矩形中心行坐标
Column//仿射矩形中心列坐标
Phi//仿射矩形的纵轴水平角,单位弧度 ,注意:测量矩形的测量方向的选择
Length1//仿射矩形宽度的一半
Length2//仿射矩形高度的一半
Width//图像的宽度
Height//图像的高度
Interpolation //插值类型('bicubic', 'bilinear', 'nearest_neighbor')
MeasureHandle//测量对象句柄
gen_measure_arc(形成测量扇形)
gen_measure_arc( Row, Col, Radius, AngleStart, AngleExtent, Radius, Width, Height, Interpolation :MeasureHandle)
参数列表:
Row//中心点行坐标
Col//中心点列坐标
AngleStart//起始角度
AngleExtent//角度范围
Radius//半径
Width//图像宽
Height//图像高
Interpolation //插值方法
MeasureHandle//句柄
measure_pos(测量单边缘)
measure_pos (Image, MeasureHandle, Sigma, Threshold, Transition, Select, RowEdge, ColumnEdge, Amplitude, Distance)
参数列表:
Sigma//高斯平滑系数(图像上可能会有噪点,影响我们对边缘的判断)
Threshold//阈值(代表阈值超过该值把它当做边缘)
Transition//极性
Select//边缘选择
RowEdge//找到的边缘中心的行坐标
ColumnEdge//找到的边缘中心列坐标
Amplitude//边缘幅度
Distance//相邻边缘之间的距离
measure_pairs(测量边缘对)
measure_pairs(Image ,MeasureHandle, Sigma, Threshold, Transition, Select : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
参数列表:
Image//输入图像
MeasureHandle//测量对象句柄
Sigma//高斯平滑参数
Threshold最//小边缘幅度
Transition//边缘对极性,
Select //选择边缘对
RowEdgeFirst//边缘点对的第一个边缘的中心行坐标
ColumnEdgeFirst//边缘点对的第一个边缘的中心列坐标
AmplitudeFirst//第一个边缘的幅度
RowEdgeSecond//第二个边缘中心行坐标
ColumnEdgeSecond//第二个边缘中心列坐标
AmplitudeSecond//第二个边缘幅度
IntraDistance//两个边缘对之间的距离
InterDistance//相邻边缘对之间的距离
二者区别:
translate_measure(转换度量对象)
描述:一般用于一个程序中有很多测量矩形的情况,当使用第二个测量矩形时,不需要重新gen_measure_rectangle2生成,将第二个测量矩形的中心坐标放到该算子的第二、三个参数当中即可。
translate_measure( MeasureHandle, Row, Column )(选用)
参数列表:
MeasureHandle//测量句柄
Row//新参考点的行坐标
Column //新参考点的列坐标