Halcon边缘滤波器edges_image 算子

Halcon边缘滤波器edges_image 算子

基于Sobel滤波器的边缘滤波方法是比较经典的边缘检测方法。除此之外,Halcon也提供了一些新式的边缘滤波器,如edges_image算子。它使用递归实现的滤波器(如Deriche、Lanser和Shen)检测边缘,也可以使用高斯导数滤波器检测边缘。此外,edges_image算子也提供了非极大值抑制和滞后阈值,使提取出的边缘更细化。edges_image 算子同样能返回精确的边缘梯度和方向,这一点比Sobel滤波器要好一些,但是相应地所花的时间也长一些。对一些强调精度而不注重运算时间的场合,可以使用edges_image算子来提高检测效率。此外,也可以结合使用sobel_fast滤波器,以提高检测的速度。

该算子的原型如下:

bash 复制代码
edges_image (Image: ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High :)

其各参数含义如下。

参数1:Image为输入的单通道图像。

参数2:ImaAmp为输出的边缘梯度图像。

参数3:ImaDir 为输出的边缘方向图像。

参数4:Filter 为输入参数,表示选择的滤波算子。默认为canny,也可以选择derichel、derichel _int4、deriche2、deriche2 _int4、 lanserl、lanser2、mshen、shen、 sobel fast。

参数5:Alpha为输入参数,表示平滑的程度。值越小,表示平滑的程度越大。默认是0,也可以取0.1到1.1之间的值。

参数6:NMS 表示非极大值抑制。默认为nms,表示使用非极大值抑制;也可以设为none,表示不使用非极大值抑制。使用非极大值抑制可以使模糊的边界变得清晰,因为这步操作只留下边缘上梯度强度最大的点。

参数7和8:Low和High分别表示滞后阈值的低阈值和高阈值。边缘梯度比高阈值大的部分是可以被接受的;低于低阈值的部分将被排除;介于两者之间的,要看该像素是否与边缘点相连.相连的可以认为是边缘。

如图所示,其输入图像与图(a)所示的图像相同。这里使用了3种边缘提取方法进行对比。图(a)为使用canny 滤波器提取的,没有使用非极大值抑制的边缘梯度图像;图(b))为使用canny 滤波器提取的,使用了非极大值抑制的边缘梯度图像;图(c)在图(b)的基础上加入了灰度阈值处理,并描绘出了经阀值处理的框架图像。

实现代码如下:

bash 复制代码
dev_close_window ()
read_image(Image,'data/flower')
rgb1_to_gray (Image, GrayImage)
gen_image_proto (Image, ImageCleared, 1)
dev_open_window (0, 0, 256, 256, 'black', WindowHandle1)
dev_open_window (0, 256, 256, 256, 'black', WindowHandle2)
dev_open_window (0, 512, 256, 256, 'black', WindowHandle3)
edges_image (GrayImage, ImaAmpGray, ImaDirGray, 'canny', 1, 'none', -1, -1)
edges_image (GrayImage, ImaAmpGrayNMS, ImaDirGrayHyst, 'canny', 1, 'nms',20, 40) 
*对非极大值抑制后的边缘梯度图像进行了阈值处理
threshold (ImaAmpGrayNMS, RegionGray, 1, 255) 
*提取边缘轮廓
skeleton (RegionGray, EdgesGray) 
*用于结果显示和对比
dev_set_window (WindowHandle1)
dev_display (ImageCleared) 
dev_display (ImaAmpGray) 
dev_set_window (WindowHandle2)
dev_display (ImageCleared) 
dev_display (ImaAmpGrayNMS) 
dev_set_window (WindowHandle3)
dev_display (ImageCleared) 
dev_display (EdgesGray)

该例中使用camny滤波器对灰度图像进行边缘检测,可以快速地获取边缘梯度与方向信息。代码中使用了不同参数的edges_image 算子提取边缘,并使用了非极大值抑制(Non-Maximum Suppression,NMS)。接着对经非极大值抑制的边缘梯度图像进行阈值处理,提取出较亮的边缘部分。

因为经非极大值抑制后,边缘仅剩下梯度最大的像素,所以经阈值处理提取出的像素就是图像的边缘。而如果使用未经非极大值抑制的图像,可能阈值处理会提取出过多的像素,无法理想地表现出边缘信息。

与edges_image 算子类似的还有edges_color算子,该算子可以用于提取彩色图像的边缘,其原型如下:

bash 复制代码
edges_color(Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : )

其中第1个参数表示输入图像的类型为彩色图像,其他参数与edges_image算子类似。

相关推荐
m0_751336391 小时前
突破性进展:超短等离子体脉冲实现单电子量子干涉,为飞行量子比特奠定基础
人工智能·深度学习·量子计算·材料科学·光子器件·光子学·无线电电子
美狐美颜sdk4 小时前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk
DeepSeek-大模型系统教程4 小时前
推荐 7 个本周 yyds 的 GitHub 项目。
人工智能·ai·语言模型·大模型·github·ai大模型·大模型学习
郭庆汝5 小时前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python
小雷FansUnion6 小时前
深入理解MCP架构:智能服务编排、上下文管理与动态路由实战
人工智能·架构·大模型·mcp
资讯分享周7 小时前
扣子空间PPT生产力升级:AI智能生成与多模态创作新时代
人工智能·powerpoint
叶子爱分享8 小时前
计算机视觉与图像处理的关系
图像处理·人工智能·计算机视觉
鱼摆摆拜拜8 小时前
第 3 章:神经网络如何学习
人工智能·神经网络·学习
一只鹿鹿鹿8 小时前
信息化项目验收,软件工程评审和检查表单
大数据·人工智能·后端·智慧城市·软件工程
张较瘦_8 小时前
[论文阅读] 人工智能 | 深度学习系统崩溃恢复新方案:DaiFu框架的原位修复技术
论文阅读·人工智能·深度学习