五种边缘检测算法(附代码)

一、Roberts 边缘检测算子

Roberts边缘检测算子根据任意一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差,即:
在这里插入图片描述
然后根据式(1.9.2)计算出Roberts的梯度幅度值:
在这里插入图片描述
它们的卷积算子为:
在这里插入图片描述
Roberts检测器较为简单,但具有一些功能上的限制,例如,它是非对称的,而且不能检测诸如45°倍数的边缘。然而,它还是经常用于硬件实现中,因为它既简单又快速。

二、Sobel 边缘检测算子

对数字图像的每个像素,考察它上下左右邻点灰度的加权差,与之接近的邻点的权大。据此,定义Sobel算子如下:
在这里插入图片描述
卷积算子为:
在这里插入图片描述
Sobel 算子很容易在空间上实现,边缘检测效果较好,且受噪声的影响也较小。邻域增大抗噪性会更好,但计算量也会增大,得出的边缘也会相应变粗。Sobel算子会检测出许多伪边缘,边缘定位精度不够高,在精度要求不高时是一种较常用的边缘检测方法。

三、Prewitt 边缘检测算子

Prewitt 边缘检测算子模板如下:
在这里插入图片描述
图像中的每个像素都用这两个核作卷积,一个核对垂直边缘影响最大,另一个核对水平边缘影响最大。两个卷积的绝对值的最大值作为该点的输出值。不能简单的将小于0的值处理为0,这样会丢失信息。它比Sobel检测器在计算上要简单一些,但比较容易产生一些噪声。

四、 LoG 检测器

高斯函数
在这里插入图片描述
其中,r2=x2+y2,σ是标准偏差。这是一个平滑函数,若和一幅图像卷积,则会使图像变模糊。模糊程度由σ的值决定。该函数的拉普拉斯算子为:
在这里插入图片描述
求二阶导数是线性运算,所以 ▽2h®用对图像进行卷积与先用平滑函数对图像卷积再计算结果的拉普拉斯算子是一样的。这是LoG检测器最关键的概念,用 ▽2h®对图像卷积会产生两个效果:是图像变平滑(从而减少噪声);计算拉普拉斯算子,以便产生双边缘图像。然后,定位边缘就是找到两个边缘之间的零交叉。

五、Canny边缘检测器

Canny检测器的效果较好,更适合用于检测真正的弱边缘。Canny算子给出了一个好的边缘检测算子的3个指标:低失误率,即真正的边缘点尽可能提取,非边缘点尽可能不提取;高位置精度,检测的边缘应尽可能接近真实边缘;对每一个边缘点有唯一的响应,即得到单像素宽度的边缘。

六、代码

clear all;
I = imread(‘d:\office.bmp’);
I=rgb2gray(I);
BW1 = edge(I,‘sobel’); %利用Sobel算子进行边缘检测
BW2 = edge(I,‘roberts’); %利用roberts算子进行边缘检测
BW3 = edge(I,‘prewitt’); %利用prewitt算子进行边缘检测
BW4 = edge(I,‘log’); %利用log算子进行边缘检测
BW5 = edge(I,‘canny’); %利用canny算子进行边缘检测
subplot(2,3,1),imshow(I)
subplot(2,3,2),imshow(BW1)
subplot(2,3,3),imshow(BW2)
subplot(2,3,4),imshow(BW3)
subplot(2,3,5),imshow(BW4)
subplot(2,3,6),imshow(BW5)

在这里插入图片描述

  • 23
    点赞
  • 267
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值