【halcon】亚像素轮廓XLD
XLD(eXtended Line Descriptions):XLD其实就是指的亚像素轮廓。
如何理解亚像素
上一篇《halcon入门小技巧》提到的:
threshold (Image, Region, 128, 255) 这个呢,是给了一个灰度的范围,通过像素进行划分区域。
像素已经是图片成像的最小单位了,下图就是将一张图片放大到看到像素的程度。这每一个方块就是一个像素,每个像素都有自己的一个灰度值。两个像素之间的灰度值是跳变的。
如果进一步细分,假设像素的正中间点才是该像素的值,像素其他地方的值是渐变的方式过度到另一个像素。那么像素内部除中间点之外的点的值需要参考周围像素的值。
现在又有一个函数,针对亚像素:
threshold_sub_pix (ImageReduced, Border, 128)这个函数的意思就是,按照上述的方式,推算出每个像素点中128这个灰度值应该出现在哪个位置,再将128的这个位置连线,得到一个轮廓称之为“亚像素轮廓”
当我们得到了一堆的轮廓之后,我们应该如何筛选呢?
我们可以通过长度选择轮廓线,首先通过halcon软件提供的特征提取功能,得到轮廓的长度
然后调用select_contours_xld进行筛选。
select_contours_xld (Border, SelectedContours, 'contour_length', 90, 120, -0.5, 0.5)
参数解释:
- Border, SelectedContours:从亚像素轮廓Border中选出符合条件的SelectedContours
- 'contour_length':表示条件是轮廓长度
- 90, 120:表示轮廓的长度范围
- -0.5, 0.5:作用目前还不清楚
此时还可以查看符合条件轮廓的个数:
count_obj (SelectedContours, Number)
通过亚像素轮廓得到区域
![](https://img-blog.csdnimg.cn/f3cabb57ff2147539abcbafc0052822f.png)
gen_region_contour_xld (SelectedContours, Region1, 'filled')
这里就会发现和亚像素轮廓不同,区域和图像一样是一像素为单位的。
再次通过区域得到image
reduce_domain (ImageReduced, Region1, ImageReduced1)
这里再解释一下reduce_domain,他是通过区域Region得到图片,区域可以很多个,但是得到的图片只能由一张,如果此时有多个Region,那么得到的图片是通过第一个Region生成的图片。
小结:
这里发现了一个小套路:
1、先得到亚像素轮廓
2、筛选轮廓
3、通过轮廓得到Region
4、通过Region得到图片
作者:宋桓公
出处:http://www.cnblogs.com/douzi2/
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。