一、说明

        在区域运算的时候,有时候需要用图形的顶点来描述,比如,两个图中对象需要对齐,或者仿射变换,于是特征点是需要提取的。本文给出一个提取顶点的示例。

二、算子 

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)参数描述表

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)参数表

        执行以上代码将会创建一个名为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)

四、输入图和结果

输入图

【halcon资料】取出区域的轮廓上所有转折点-LMLPHP

结果输出:

【halcon资料】取出区域的轮廓上所有转折点-LMLPHP

五、后记

        在结果图上的X点中,折点数量受get_region_polygon (ObjectSelected, 5, Rows1, Columns1)参数Tolerance的影响,Tolerance越小,折点数量越多。

05-22 17:36