Matlab 图像—边缘检测算法及效果演示

新机器视觉

共 1359字,需浏览 3分钟

 ·

2022-11-21 22:06

点击下方卡片,关注“新机器视觉”公众号

重磅干货,第一时间送达

来源:古月居

边缘检测


在图像中,边缘是一条曲线,其走势与图像中强度快速变化的路径一致。边缘通常与场景中目标的边界相关联。边缘检测用于确定图像中的边缘。


要寻找边缘,您可以使用 edge 函数。此函数使用以下两个标准之一来寻找图像中强度迅速变化的位置:


  • 强度的一阶导数的模大于某个阈值的位置

  • 强度的二阶导数有过零点的位置


edge 提供几个导数估算器,其中每个都实现以下定义之一。


对于其中一些估算器,您可以指定运算是否应对水平边缘、垂直边缘敏感或对两者都敏感。


edge 返回二值图像,其中包含的 1 对应于找到边的位置,0 对应于其他位置。


edge 提供的最强大的边缘检测方法是 Canny 方法。Canny 方法与其他边缘检测方法的不同之处在于,它使用两种不同阈值(用于检测强边缘和弱边缘),并且仅当弱边缘连通到强边缘时才在输出中包括弱边缘。


因此,这种方法不太可能受到噪声的影响,更可能检测到真正的弱边缘。


检测图像中的边缘


此示例说明如何同时使用 Canny 边缘检测器和 Sobel 边缘检测器来检测图像中的边缘。



Matlab 代码


I = imread('coins.png');imshow(I);% 将 Sobel 和 Canny 边缘检测器同时应用于图像,并显示它们以进行比较。BW1 = edge(I,'sobel');BW2 = edge(I,'canny');figure;imshowpair(BW1,BW2,'montage')title('Sobel Filter                                   Canny Filter');


代码效果如下:


边缘算法:robert


边缘定位精度较高,对于陡峭边缘且噪声低的图像效果较好,但没有进行平滑处理,没有抑制噪声的能力。


BW1=edge(Img,'Roberts',0.16);


边缘算法:sobel prewitt


进行了平滑处理,对噪声具有一定抑制能力,但容易出现多像素宽度。


BW2=edge(Img,'Sobel',0.16);BW3=edge(Img,'Prewitt',0.16);


边缘算法:laplacian


对噪声较为敏感,使噪声能力成分得到加强,容易丢失部分边缘方向信息,造成一些不连续的检测边缘,同时抗噪声能力较差。


边缘算法:log


抗噪声能力较强,但会造成一些尖锐的边缘无法检测到。


BW5=edge(Img,'LOG',0.16);


边缘算法:canny


最优化思想的边缘检测算子,同时采用高斯函数对图像进行平滑处理,但会造成将高频边缘平滑掉,造成边缘丢失,采用双阈值算法检测和连接边缘。


BW6=edge(Img,'Canny',0.16);


效果对比



还有一篇更加偏向于原理讲解的文章:


图像边缘检测及提取方法总结(含Matlab代码)

https://blog.csdn.net/LemonXQ/article/details/79695641


本文仅做学术分享,如有侵权,请联系删文。

—THE END—

浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报