图像边缘检测

一、算法原理

图像分割的一种重要途径是通过边缘检测,即检测灰度级或者结构具有突变的地方,表明一个区域的终结,也是另一个区域开始的地方。这种不连续性称为边缘。不同的图像灰度不同,边界处一般有明显的边缘,利用此特征可以分割图像。图像中边缘处像素的灰度值不连续,这种不连续性可通过求导数来检测到。对于阶跃状边缘,其位置对应一阶导数的极值点,对应二阶导数的过零点(零交叉点)。因此常用微分算子进行边缘检测。

常用的一阶微分算子有Roberts算子、Prewitt算子和Sobel算子,二阶微分算子有Laplace算子和Kirsh算子等。在实际中各种微分算子常用小区域模板来表示,微分运算是利用模板和图像卷积来实现。这些算子对噪声敏感,只适合于噪声较小不太复杂的图像。由于边缘和噪声都是灰度不连续点,在频域均为高频分量,直接采用微分运算难以克服噪声的影响。因此用微分算子检测边缘前要对图像进行平滑滤波。

Roberts算子有利于对具有陡峭边缘的低噪声图像的分割;Laplacian算子具有各向同性的特点;Roberts算子和Laplacian算子在实施过程中大大增强了噪声,恶化了信噪比。Prewitt算子、Sobel算子等有利于对具有较多噪声且灰度渐变图像的分割。Canny算子是具有平滑功能的二阶和一阶微分算子,边缘检测效果较好。Canny算子是高斯函数的一阶导数,它在噪声抑制和边缘检测之间取得了较好的平衡。

Roberts算法:取一个2*2模板,计算方式如下

Sobel算法:取一个3*3模板,计算方式如下

    

Prewitt算法:取一个3*3模板,计算方式如下

Canny算法:(1)首先,对原始图像进行高斯滤波以降低噪声的影响。高斯滤波使用一个二维高斯核对图像进行卷积操作,可以平滑图像并模糊细节。

                     (2)取一个3*3模板,计算方式如下

                    (3)非极大值抑制:对梯度幅值图像进行非极大值抑制,目的是细化边缘并消除不明显的边缘。对于每个像素点,只保留沿着梯度方向上具有最大幅值的像素,其他像素被抑制为零。

                    (4)双阈值边缘连接:根据设定的高阈值和低阈值,对非极大值抑制后的图像进行阈值处理。高于高阈值的像素被视为强边缘,低于低阈值的像素被排除,介于两者之间的像素被视为弱边缘。然后,通过连接强边缘像素和与之相连的弱边缘像素,形成完整的边缘。

MATLAB中内置有图像边缘检测的edge函数,可以使用该函数获得经过Sobel、Prewitt、Roberts、Canny算子处理后的原图像边缘提取图。其中Canny算子处理后的图像效果最佳,细节丰富,边缘连续。

二、处理结果分析

图2.1图像边缘检测

如图2.1所示,使用Sobel、Prewitt、Roberts算子处理后的效果相差不大,三者都未完全提取出人像的面部轮廓,Canny算子处理后的效果最佳。Canny算子在噪声抑制和边缘检测之间取得了较好的平衡。相比Robets算子对噪声较为敏感,无法抑制噪声的影响而且其提取的边缘轮廓较粗,边缘定位不是很准确。

三、MATLAB代码

工程链接:https://download.csdn.net/download/m0_68251389/88557816

I=imread('lena.jpg');%获取图像的灰度信息
BW_sobel=edge(I,'sobel');%使用sobel算子进行边缘提取
BW_prewitt=edge(I,'prewitt');%使用prewitt算子进行边缘提取
BW_roberts=edge(I,'roberts');%使用roberts算子进行边缘提取
BW_canny=edge(I,'canny');%使用canny算子进行边缘提取
subplot(2,3,1)
imshow(I);xlabel("原始图像");
subplot(2,3,2)
imshow(BW_sobel);xlabel("sobel检测");%展示sobel提取后的图像
subplot(2,3,3)
imshow(BW_prewitt);xlabel("prewitt检测");%展示prewitt提取后的图像
subplot(2,3,4)
imshow(BW_roberts);xlabel("roberts检测");%展示roberts提取后的图像
subplot(2,3,5)
imshow(BW_canny);xlabel("canny检测");%展示canny提取后的图像

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值