很多时候当我们用edges_sub_pix, threshold_sub_pix 等算子得到边缘后,因为有噪声、物体本身断裂等原因 很多边缘是共线但是断裂的
如下图所示,提取键盘的网格,左图有很多共线线段,右图为共线连接后的结果
更详细信息可查阅自带例程:measure_grid.hdev
![](https://images2015.cnblogs.com/blog/328181/201602/328181-20160227112754068-1297870504.jpg)
![](https://images2015.cnblogs.com/blog/328181/201602/328181-20160227112754661-605713999.jpg)
一个更直观的例子提取网格,左图因为网格有交叉点通过edges_sub_pix得到是断裂的网格线,右图为union_collinear_contours_xld的结果
![](https://images2015.cnblogs.com/blog/328181/201602/328181-20160227112755193-1369524677.jpg)
![](https://images2015.cnblogs.com/blog/328181/201602/328181-20160227112755724-874750420.jpg)
union_collinear_contours_xld参数详解:
MaxDistAbs: 沿参考回归线方向轮廓端点的最大距离。等于临近的端点在第一条回归线上的投影距离。
![](https://images2015.cnblogs.com/blog/328181/201602/328181-20160227112756224-857581128.png)
MaxDistRel:轮廓端点距离相对于沿参考回归线方向相对于被延长的轮廓的长度的值
![](https://images2015.cnblogs.com/blog/328181/201602/328181-20160227112756865-1052979494.png)
MaxShift:轮廓到参考回归线的最大距离(垂直距离),这个参数决定,即使两个轮廓处于平行,也会合并
![](https://images2015.cnblogs.com/blog/328181/201602/328181-20160227112757193-914641989.png)
MaxAngle: 两个轮廓的最大角度差,弧度制
![](https://images2015.cnblogs.com/blog/328181/201602/328181-20160227112757646-1906294334.png)
Mode: :比如,edges_sub_pix附着于每个轮廓点一些属性:角度、边缘方向等可参考get_contour_attrib_xld。
选择默认值'attr_keep',所有的属性都会考虑,如果输入轮廓过多,可能就会影响性能,尤其是接下来用不到这些属性。这时,使用'attr_forget'比较好。
NOTCE: 共线轮廓不能和其它轮廓有较大重叠度。最大重叠度为0.5像素。
如果想要合并重叠轮廓就用Unoin_collinear_contours_ext_xld,这是本算子的一个扩展算子。
关注微信:halconhub,每日获取halcon精华文章
![](https://images2015.cnblogs.com/blog/328181/201602/328181-20160227112758083-1563952260.jpg)