halcon第十讲,XLD概念与应用

1.什么是XLD

XLD(eXtended Line Descriptions):说白了XDL就是一个轮廓函数,他不是像素,职业界通常称他为亚像素,他比像素更精确,可以精确到像素内部的一种描述。

我们都知道图片是由像素组成,当我们用halcon读取图像Image的时候,获得的数据就是像素。
拿到图像后我们会对他二值化,或者阈值处理,这样得到轮廓其实就是用亚像素轮廓来表示。

上面提到的亚像素轮廓其实在halcon中指的就是xld,它可以表示直线或多边形,是一组有序的控制点集合,控制点顺序用来说明彼此相连的关系。

亚像素的轮廓我们又把他分为两种:
1.闭轮廓:首尾相交
2.开轮廓:首尾不相交

2.XLD的应用

threshold_sub_pix(Image:Boreder:Threshold:):提取xld并不是沿着像素与像素边界交界的地方,而是halcon经过某种计算得出的位置(一种描述)。其中Threshold为提取xld的阈值,灰度值以阈值为界提取xld。

xld的特征部分和region有很多相同的部分:

1.基础特征:xld面积,中心,宽高,左上角及右下角坐标。

2.形状特征:圆度,紧密度,长度,矩形度,凸性,偏心率,蓬松度(bulkiness),外接圆半径,外接矩形的方向及两边长度等。

3.云点特征:云点面积,中心,等效椭圆半轴及角度,云点方向等。

4.几何特征:二阶矩等。

选取特定xld:

使用算子:

select_shape_xld(XLD:SelectedXLD:Features,Operation,Min,Max:)

作用:选择特定形状特征要求的xld轮廓或多边形

XLD:要提取的XLD

SelectedXLD:提取到的XLD

Features:提取XLD的特征依据

Operation:特征之间的逻辑关系(and or)

Min,Max:特征值的要求范围

Select_Contours_xld(Contours:SelectedContours:Features,Min,Max,Min2,Max2:)

作用:选择多种特征要求的XLD轮廓 (如长度 开闭 方向 等特征,不支持多边形)

Contours:要提取的XLD轮廓

SelectedContours:提取到的XLD轮廓

Features:提取XLD轮廓的依据(筛选)

Min,Max,Min2,Max2:特征值的范围

area_center_xld(XLD:::Area,Row,Column,PointOrder)

作用:计算xld的面积和中心位置

下面来看看XLD的合并操作:

union_collinear_contours_xld:合并在同一直线的XLD

union_cocircular_contours_xld:合并在同圆的XLD

union_adjacent_contours_xld:合并邻近的XLD

这些算子以后会详细讲解。

再来看看XLD的合并操作:

把XLD转换成其他规则形状的XLD,相应说明及算子和region的很类似:

1.convex hull

2.outer_circle

3.retangle1

4.retangle2

这四种类型转换使用同一个算子:

shape_trans_xld(XLD:XLDTrans:Type:)

作用:转换XLD的形状,其中Type为转换的类型如上面的四种类型

接下来看看XLD的分割操作:

算子:

segment_contours_xld(Contours:ContoursSplit:Mode,SmoothCont,Max,LineDist1,MaxLineDist2:)

具体操作以后再说。

然后就是XLD的拟合操作:(fit_***_contour_xld)

具体算子如下:

fit_line_contour_xld:拟合直线

fit_circle_contour_xld:拟合圆

fit_ellipse_contour_xld:拟合椭圆

fit_retangle2_contour_xld:拟合矩形

推荐阅读更多精彩内容