halcon深度学习分几步(机器视觉halcon学习系列---XLD的介绍和使用)(1)

定义

XLD是eXtended Line Description的缩写,中文你可以直译过来解释为 扩展线的描述,XLD可以来表达轮廓和多边形数据。XLD属于图像变量,轮廓是一系列的二维点组成,一系列点连接成线,这里的可以看到这些连接的线是从像素中穿过去的,我们叫这是亚像素精度(sub_pixel),在halcon中,XLD不仅包括点集,而且XLD里面保存了局部和全局的属性,典型的属性有点的幅度以及轮廓分割的回归参数

halcon深度学习分几步(机器视觉halcon学习系列---XLD的介绍和使用)(2)

XLD轮廓

在halcon中,还可以对轮廓XLD进行一系列的处理,例如可以通过select_shape_xld选择特定的特征对象XLD,还可以segment_contour_xld来把轮廓分割,还可以把union_*_contours_xld一系列算子对轮廓进行合并等操作。

我们认识了XLD之后,我们可以使用XLD拿来干嘛呢? XLD可以用来做测量,XLD创建模板,XLD可以用来拟合直线等。

获取XLD

在获取XLD中,一种是交互式画XLD,draw_xld,这种方式在实际基本没有使用,意义不大。还有一种是通过read_contour_xld_dxf读取XLD,这是通过CAD画的轮廓图,或者通过write_contour_xld_dxf写入的轮廓,这里面可能在某些应用中会使用,前期通过CAD建模,读取到XLD后我们就可以拿来用作匹配的轮廓。

halcon深度学习分几步(机器视觉halcon学习系列---XLD的介绍和使用)(3)

xld保存

halcon深度学习分几步(机器视觉halcon学习系列---XLD的介绍和使用)(4)

dxf轮廓转换

还有一种方式是直接通过算法来获取XLD轮廓,在这里是基于亚像素的轮廓,对应着有彩色图像和灰度图像的获取。edge_color_sub_pix、edges_sub_pix,这两个算子我们会经常使用。

我们还可以通过gen_contour_*_xld系列算子来转换成XLD,只不过,在这里有些是亚像素精度,有些是像素精度。

当我们得到轮廓后,还需要对轮廓进行修饰,常用的使用select_shap_xld,主要的特征有四类,基本、形状、点、moments等特征。

halcon深度学习分几步(机器视觉halcon学习系列---XLD的介绍和使用)(5)

select_shape_xld

有时候也需要对轮廓进行分割,通过segment_contours_xld来进行分割,获取特定轮廓的坐标点通过get_contour_xld算子获取,这个算子输出轮廓的坐标点集,我们可以使用这些点集来进行特定的应用,可以是拟合直线、拟合圆、判断最大最小值,这就是你的业务逻辑的事情了。

总结一下,XLD是halcon里面的一种数据格式,把点集封装了一下,点集连接成线,这些点集有一些自己的特性,halcon已经封装好了,XLD在应用中是广泛使用的一种工具,用来分割图像特征,学会使用XLD工具会给我们工作带来极大的便利。

,