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文章来源:https://www.toymoban.com/news/detail-625401.html
threshold_sub_pix (Image, Border, 128)
文章来源地址https://www.toymoban.com/news/detail-625401.html
到了这里,关于Halcon中亚像素边缘,轮廓提取处理的各种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!