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

简介: 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


相关文章
|
算法 数据可视化
Halcon边缘检测和线条检测(1),文章含自适应/动态二值化等算子
Halcon边缘检测和线条检测(1),文章含自适应/动态二值化等算子
1596 0
|
1月前
|
Serverless 计算机视觉
语义分割笔记(三):通过opencv对mask图片来画分割对象的外接椭圆
这篇文章介绍了如何使用OpenCV库通过mask图像绘制分割对象的外接椭圆。首先,需要加载mask图像,然后使用`cv2.findContours()`寻找轮廓,接着用`cv2.fitEllipse()`拟合外接椭圆,最后用`cv2.ellipse()`绘制椭圆。文章提供了详细的代码示例,展示了从读取图像到显示结果的完整过程。
45 0
语义分割笔记(三):通过opencv对mask图片来画分割对象的外接椭圆
|
5月前
|
计算机视觉
OpenCV图像像素逻辑操作
OpenCV图像像素逻辑操作
ENVI Classic:如何进行图像融合(HSV变换/Brovey变换/PC变换)?
ENVI Classic:如何进行图像融合(HSV变换/Brovey变换/PC变换)?
1595 0
|
C++ Python
pcl/pcd/liblas点云强度intensity反射图像过滤显示
pcl/pcd/liblas点云强度intensity反射图像过滤显示
366 0
pcl/pcd/liblas点云强度intensity反射图像过滤显示
|
文字识别 监控 算法
Baumer工业相机堡盟相机使用BGAPISDK联合Halcon直接进行彩色图像显示(Color)(C#)(将图像数据Buffer转为HObject)
Baumer工业相机堡盟相机使用BGAPISDK联合Halcon直接进行彩色图像显示(Color)(C#)(将图像数据Buffer转为HObject)
155 0
|
存储 编解码 供应链
Baumer工业相机堡盟相机如何使用CameraExplorer软件查看相机图像相关参数如Binning像素合并、ROI图像剪切、PixelFormat像素格式功能等
Baumer工业相机堡盟相机如何使用CameraExplorer软件查看相机图像相关参数如Binning像素合并、ROI图像剪切、PixelFormat像素格式功能等
234 0
|
传感器 编解码 监控
Baumer工业相机堡盟相机如何使用Binning像素合并功能( Binning像素合并功能的优点和行业应用)(C++)(C#)
Baumer工业相机堡盟相机如何使用Binning像素合并功能( Binning像素合并功能的优点和行业应用)(C++)(C#)
250 0
|
API 计算机视觉 索引
OpenCV_02 图像的基本操作:图像IO+绘制图形+像素点+属性+图像通道+色彩空间的改变
注意:在调用显示图像的API后,要调用cv.waitKey()给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示出来。
108 0
|
编解码 计算机视觉
CV13 图像分辨率操作(图像金字塔与resize()函数)
其中,高斯核卷积运算就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值(券种不同)经过加权平均后得到。常见的 33与 55 高斯核(CV9 2D卷积与图像滤波)
203 0