Halcon边缘检测和线条检测(3),文章含BLOB检测常用方法和shape_trans外接算子的说明

一、边缘提取

1、设置ROI兴趣区域
2、快速二值化,并连接相邻区域。
这样做的目的是进一步减少目标区域,通过二值化将目标区域大概轮廓提取出来
3、提取最接近目标区域的轮廓
常用函数有boundary,gen_contour_region_xld

boundary(获取一个区域的边界)
Region (input_object)      Regions for which the boundary is to be computed.    区域
RegionBorder (output_object)    Resulting boundaries.    输出的边界
BoundaryType (input_control)    
Boundary type.边界类型
Default value: 'inner'
List of values: 'inner', 'inner_filled', 'outer'

linner    内边界。
inner_filled    内边界上的孔。
outer    外边界。

gen_contour_region_xld(生成区域的XLD轮廓)

4、根据自需求提取需要的初步轮廓
5、将初步提取的初步轮廓进行膨胀操作
6、将膨胀后的区域和原图进行减操作(在这步之前有可能需要对原图进行高斯滤波)。这样就能得到只有边缘的真实图像

7、用canny或其他算子(根据需要)提取亚像素轮廓,一般使用edges_sub_pix函数

8、处理和计算
得到真实的边缘XLD后你可能需要进一步处理得到你想要的线、弧等。
你可能用到的函数segment_contours_xld(分割)  union_collinear_contours_xld(联合相邻或相同
角度直线)select_contours_xld(提取想要的轮廓)smooth_contours_xld(平滑轮廓) union_cocircular_contours_xld(联合相同圆)
等等。得到轮廓后如果你不知道怎么处理后得到你想要的东西(线、弧、圆、角、矩形)你都可以将轮廓转化为点,然后用点集合来拟合任何你想要的东西。

二、BLOB分析检测
(1)应用ROI,可以使Blob分析加速。
(2)匹配ROI区域或图像,详将GUIDEIIB以形状为基础的匹配。
(3)校正图像<经常用来去除镜头畸变或把图像转换到参考点视角,如双目视觉时的图像校正>
(4)图像前处理
(5)引用分割参数
(6)分割图像
(7)区域处理
(8)特征提取
(9)把提取的结果转换到世界坐标中
(10)结果可视化。

相机的标定和矫正不在本篇的学习之中。直接讲提取BLOB

1、一般先使用均值滤波去噪

2、利用去噪图像与平滑图像的OFFSET提取区域边缘,常见函数dyn_threshold 

3、提取连通域dyn_threshold 

4、根据形状或是灰度等特征来提取你想要的blob。
另一种方法就是分水岭算法
watersheds (ImageGauss, Basins, Watersheds)/

还有的图形更简单直接二值化就可以啦
bin_threshold (Fin, Dark) //分割图像,输出Dark区域,Fin已经被处理为区域// 老版本算子

binary_threshold (Green, Region, 'max_separability', 'dark', UsedThreshold) 新版本算子
connection(Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 50000, 999999)
fill_up (SelectedRegions, RegionFillUp)
difference (Fin, Dark, Background) //计算Fin与Dark两个区域的补集//
还有个函数应该说是让你高兴还是沮丧呢,以为一个函数就可以直接提取你想要的,但是参数很难调整
lines_gauss(Image, Lines, 6, 0.3, 0.5, 'light', 'true', 'gaussian', 'true')


三、赃物检测
1、得到两个不同高斯标准差的高斯积卷
2、对原始图像进行傅里叶变换'to_fre'
3、用之前的积卷对图像做积卷滤波
4、傅里叶反变换‘from_fre’

 

四、不规则图形的转换,shape_trans

region操作:
选择相应区域

select_shape(regions,output,'select type',..requirements)

计算相应区域的面积,中心坐标:

area_center(regions,area,row,column)

不规则区域的转换:

shape_trans(region,regiontrans,type)

image.png

convex hull凸包围(由外向内包围)

outer_circle 外圆(能够包括对象的半径最小的圆形)

inner_circle 内圆

rectangle1 正矩形

rectangle2 最小包围矩形

inner_rectangle1 最大内矩形

 

---

参考文献

https://blog.csdn.net/C_gyl/article/details/96326913



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864