当前位置:网站首页>halcon知识:区域(Region)上的轮廓算子(2)

halcon知识:区域(Region)上的轮廓算子(2)

2022-06-24 03:34:00 无水先生

一、提要

区域和轮廓在计算中总是互相交替使用,因此,了解好轮廓,能够更好地解决区域问题。本篇介绍三个获取外轮廓的例子。

二、凸包络

2.1 . get_region_convex算子

功能:查询突起的外表作为轮廓(contour)。

read_image (Image, 'f:/images/DOTS/block.jpg')
rgb1_to_gray(Image,gray)

get_image_size(gray,width,height)
* gen_rectangle1(rect,0,0,height,width)
fast_threshold (gray,regin,0, 50 , 7)
get_region_convex(regin, row, col)
gen_image_const(BlkImage,'byte',width,height)

for I:=0 to |row|-1 by 1
    tmpRow :=row[I]
    tmpCol :=col[I]
    set_grayval(BlkImage, tmpRow, tmpCol, 228)
endfor
dev_display(BlkImage)
disp_polygon(3600, row, col)

原图:

显示突出点: 

 将突出点连接的图形为:

2.2 如何从散列点生成轮廓区域

  

  • gen_region_polygon( : Region : Rows, Columns : )

通过散列点坐标,生成一个区域,该区域是轮廓条区域。通过该区域,可以生成亚像素轮廓线。如(上图的红色线状区域)。

  • gen_contour_nurbs_xld

        gen_contour_nurbs_xld 生成近似 NURBS 曲线(非均匀有理 B 样条曲线)的 XLD 轮廓。 NURBS 曲线由其度数、控制多边形(通过行和列)、权重向量和节点向量指定。(上图的绿色线状区域)。       

 曲线的度数决定了曲线的可微性等级。曲线位于其控制多边形 (Rows,Cols) 的凸包内。权重中的权重决定了曲线被各个控制点(行、列)吸引的程度。如果选择“自动”,则会生成对所有控制点具有相同权重的权重向量。 Knots 向量描述了曲线的域。通常,此参数可以设置为“自动”。

        生成的 Contour 的精度取决于两个参数 MaxDistance 和 MaxError。 MaxDistance 限制两个后续 Contour 点的最大距离。生成的 Contour 和实际 NURBS 曲线之间的最大距离限制为 MaxError。默认情况下,近似值必须满足这两个约束,但可以将这些参数之一设置为“省略”。选择的 MaxError 和 MaxDistance 越低,曲线的近似值就越好。请注意,所有等高线点都准确地位于曲线上(数值不准确除外)。

原网站

版权声明
本文为[无水先生]所创,转载请带上原文链接,感谢
https://yamagota.blog.csdn.net/article/details/125427995