Halcon中亚像素边缘,轮廓提取处理的各种方法

halcon中亚像素边缘,轮廓提取

在图像处理中,提取图像特征主要从两个角度,区域或者边缘。提取亚像素边缘有三种思路,提取过后再用边缘模板匹配,连接与分割都可以。这里不涉及边缘对用作视觉测量类的算子,仅对刚学习halcon的新人而言。
在这里插入图片描述
这幅图代表着在项目的过程中使用边缘的三种思路。之前某大厂主管面的时候也是问的我这个问题,我觉得很有必要拿出来说一下,嘿嘿。当然,真正对边缘提取还要看光源的打光,项目具体需求等,这里只是简单介绍三种思路。
第一种思路是我很常用的思路,将ROI区域找出来之后,再对特定的区域从原图中剪切出来,对区域内的边缘进行提取。这里注意,边缘和轮廓是有些许区别的,边缘包括内部纹理和灰度阶变化的部分,常常指的是亚像素级别的线条。轮廓一般指区域四周部分。先提取区域的话,考虑到有成熟的阈值分割算法,如动态阈值分割,分水岭分割,阈值分割等等,可以排除掉一些光照带来的噪点影响。
在这里插入图片描述
如果放大图像细节的话,可以看到XLD(亚像素边缘)是一根线,会在像素内插补,放大图像不会变化,而轮廓是图像区域四周,放大看会看到不对像素内插补。很多时候图像处理算法工程师不区分边缘和轮廓的区别,但是最好严格区分一下吧,这样在halcon中看到contour和xld就知道区分了。
在这里插入图片描述
接下来第一种思路里相关算子做解释:
首先先将图像的区域分割出来,再对区域转成轮廓,再挑选轮廓出来(这一步可以使用特征检测查看xld的特征)
在这里插入图片描述

threshold (Image, Regions, 163, 255)
gen_contour_region_xld (Regions, Contours, 'border')
select_contours_xld (Contours, SelectedContours, 'contour_length', 0.5, 200, -0.5, 0.5)

第二种思路,直接将整幅图像转化成xld,再一步步挑选自己想要的xld

edges_sub_pix (Image, Edges, 'canny', 1, 20, 40)
select_shape_xld (Edges, SelectedXLD, 'circularity', 'and', 0.4, 0.6)

图像效果是
在这里插入图片描述
第三种就是根据整幅图灰度值范围找到xld,这里的xld是封闭的,这里是找到比128灰度值小的区域的xld

threshold_sub_pix (Image, Border, 128)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43376782/article/details/121821725