一、说明
在区域运算的时候,有时候需要用图形的顶点来描述,比如,两个图中对象需要对齐,或者仿射变换,于是特征点是需要提取的。本文给出一个提取顶点的示例。
二、算子
1.1 get_region_polygon算子
(1)算子描述
halcon的get_region_polygon算子用于获取给定的二值化区域中的多边形表示。该算子需要一个输入参数Region,代表需要转换的二值化区域,以及一个输出参数Polygon,代表转换后得到的多边形表示。对于多连通区域,get_region_polygon算子将返回一个多边形数组,每个多边形代表一个连通区域。如果输入区域中包含洞,则多边形数组的每个元素将包含一个内环和一个外环,用于分别表示洞和外部区域。通常,get_region_polygon算子会用于将二值图像的检测结果转换为几何信息,用于后续的图像分析和处理。
操作符get_region_polygon计算一个多边形来近似一个区域(region)的边缘。多边形是行(rows)和列坐标(columns)的序列。它描述了区域的轮廓。只返回多边形的基点。参数Tolerance表示多边形与区域边缘之间的最大距离。该区域的空洞被忽略。操作符get_region_polygon以元组的形式返回坐标。
(2)算子句型
get_region_polygon(Region : : Tolerance : Rows, Columns)
(3)参数描述表
参数 | 描述 | 性质 |
---|---|---|
Region | 输入区域 | 输入 |
Tolerance | 误差hausdroff距离 | 输入 |
Rows | 多项式基点行坐标 | 输出 |
Columns | 多项式基点列坐标 | 输出 |
1.2 gen_cross_contour_xld算子
(1)算子描述
gen_cross_contour_xld
是HALCON中用于生成十字形轮廓的算子。它可以用于创建与输入轮廓位于相同位置的十字形轮廓,其中十字形的大小和宽度可以通过传递参数进行控制。
(2)算子的句型
gen_cross_contour_xld (Contour: ContXLD, Row, Col, Size, Width: Integer)
(3)参数表
参数 | 意义 | 性质 |
---|---|---|
| 输出顶点集合。 | 输出 |
| 十字形的中心点所在行 | 输入 |
| 十字形的中心点所在列。 | 输入 |
| 十字形的大小(长度)。默认值为10。 | 输入 |
Width : | 十字形的宽度。默认值为1。 | 输入 |
执行以上代码将会创建一个名为Cross
的XLD对象,它代表了一个在(60,70)处中心点的大小为30、宽度为4的十字形轮廓。在显示图片Image
的同时,还会在屏幕上显示Cross
对象。
三、代码
read_image (Image, 'F:/images/pic/spin.jpg')
binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)
connection (Region, ConnectedRegions)
dev_set_line_width (3)
*提取线条
select_obj (ConnectedRegions, ObjectSelected, 1)
get_region_polygon (ObjectSelected, 5, Rows1, Columns1)
*显示线条上的拐点
gen_cross_contour_xld (Cross, Rows1, Columns1, 30, 0.785398)
四、输入图和结果
输入图
结果输出:
五、后记
在结果图上的X点中,折点数量受get_region_polygon (ObjectSelected, 5, Rows1, Columns1)参数Tolerance的影响,Tolerance越小,折点数量越多。