一维测量中measure_pos和measure_pairs算子

一般我们进行一维尺寸测量有两个关键步骤:

一 设置测量区域

        首先需要设定测量区域的大小,一般是通过gen_measure_rectangle2 来查找平面区域的边缘距离,通过gen_measure_arc来设定圆弧区域的边缘距离;

                 一维测量中measure_pos和measure_pairs算子_第1张图片

注意生成图像的角度,会影响你找边缘的方向 及找边缘的结果;

二  执行测量任务

在一维测量中有两个测量关键算子measure_pos和measure_pairs

Halcon 的F1文档中关于measure_pos有如下说明:

measure_pos(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdge, ColumnEdge, Amplitude, Distance)

这个算子会找寻你设定检测区域内的边缘

算子中的参数Threshold和Amplitude 都涉及到边缘的幅度值;

         以前 我理解边缘幅度值边缘处渐变的灰度差值,但现在看来这个理解是不准确的,应该是边缘灰度值变化的趋势,因为由黑到白(小变大)和由白到黑(大变小) 在图形中反映出幅度为负和正;因此可以理解这个幅度值是有正负的;

话回参数:

Threshold 设置的是你选取的幅度阈值下限;

Amplitude  获取的是你提取到的边缘处的幅度大小;

Transition=‘positive’  代表找寻所有正边缘 :所谓正边缘即为在查找方向上从黑到白过渡变化的边缘;

Transition=‘negative’  代表找寻所有负边缘 :所谓负边缘即为在查找方向上从白到黑过渡变化的边缘;

Transition=‘all’  代表找寻所有边缘 ;

measure_pairs属于加强版的measure_pos 

halcon 的F1文档中关于measure_pairs有如下说明:

measure_pairs(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)

首先需要明确几点:

1、这个算子找出的都是边缘对(两个边形成一对边缘),边缘给出的是边缘对打间距值;

2、边缘查找的方向性;

边缘查找的方向影响边缘查找的效果,从一个方向看是从白到黑,从反方向看就是从黑到白;正确的查询方向为MeasureHandle矩形的绘制角度方向是正方向还是反方向;

在halcon自带例子 测量灯丝的宽度的例子fuse.hdev中

当测量矩形的以rad(90)角度生成时,RowEdgeFirst 坐标为两条钨丝的下边缘坐标,说明查找方式是从矩形下边缘到上边缘;

                                                                      

当测量矩形的以rad(-90)角度生成时,RowEdgeFirst 坐标为两条钨丝的上边缘坐标,说明查找方式是从矩形下边缘到上边缘;

                                                                    

3、算子参数Transition 控制着哪种类型的边缘来组成边缘对;

根据F1文档的解释:

Transition=‘positive’  沿测量矩形中轴线方向(查询方向为MeasureHandle矩形的绘制角度方向),第一个边缘点是 黑-白的点,第二个点是白-黑的点 具有这样特征的边缘将会组成边缘对;

Transition=‘negitive’  沿测量矩形中轴线方向,第一个边缘点是 白-黑的点,第二个点是黑-白的点 具有这样特征的边缘将会组成边缘对;

Transition=‘all’     沿测量矩形中轴线方向,所有具有白黑白 ,或者黑白黑过渡特征的边缘对都会被找出;

4、算子参数 IntraDistance ;
         边缘对内边缘之间的距离。
5、算子参数 InterDistance ;
       连续边缘对之间的距离。


文章内容为自己理解和相关文档学习而得,不足之处欢迎批评指正!!

你可能感兴趣的:(Halcon一维测量)