【数字图像处理】边缘检测

边缘是指图像中像素灰度有阶跃变化或屋顶变化的像素的集合,存在于目标与背景、目标与目标、区域与区域之间,勾画出了目标物体的轮廓,使人们能对某种目标一目了然。

 

边缘一般分为:

  • 阶跃边缘:两边像素的灰度明显不同,呈现出阶梯状
  • 屋顶边缘:两边像素的灰度从逐步增加向逐步减少转变

常用的边缘检测算子有:

  • 梯度算子
  • Roberts算子
  • Prewitt算子
  • Sobel算子
  • Kirsch算子
  • Laplacian算子
  • Marr算子

 

梯度算子

特点:仅计算相邻像素的灰度差,对噪声比较敏感,无法抑制噪声的影响。

Roberts算子

与梯度算子相似,但是计算方向不同,Roberts算子计算的是45°方向的梯度。

可以看出,其效果比梯度算子略好一点,也同样对噪声敏感,对边缘定位不准确,提取边缘线条较粗。

Prewitt算子

与梯度算子不同的是,Prewitt算子采用3×3大小,顾及了局部的整体情况的同时抑制了噪声的影响,边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。

Sobel算子

与Prewitt算子类似,在四领域的权重为2,而其他像素的权值为1。Sobel算子在Prewitt算子的基础上增加了权重的概念,认为相邻点的距离远近对当前像素点的影响是不同的,距离越近的像素点对应当前像素的影响越大,从而实现图像锐化并突出边缘轮廓。

Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息。因为Sobel算子结合了高斯平滑和微分求导(分化),因此结果会具有更多的抗噪性,当对精度要求不是很高时,Sobel算子是一种较为常用的边缘检测方法。

其能够进一步抑制噪声,但是检测的边缘较宽。

Kirsch算子(方向算子)

利用一组模板对图像中的同一像素求卷积,选取最大值最为该像素的边缘强度,对应的方向则为边缘方向。

特点:在计算边缘强度的同时可以得到边缘方向,各方向间的夹角为45°。

Nevitia算子

与Kirsch算子不同的是,它由12个模板,且各方向间的夹角为30°而不是45°。

拉普拉斯算子

拉普拉斯(Laplacian)算子是n维欧几里德空间中的一个二阶微分算子,常用于图像增强领域和边缘提取。它通过灰度差分计算邻域内的像素,基本流程是:判断图像中心像素灰度值与它周围其他像素的灰度值,如果中心像素的灰度更高,则提升中心像素的灰度;反之降低中心像素的灰度,从而实现图像锐化操作。在算法实现过程中,Laplacian算子通过对邻域中心像素的四方向或八方向求梯度,再将梯度相加起来判断中心像素灰度与邻域内其他像素灰度的关系,最后通过梯度运算的结果对像素灰度进行调整。

通过模板可以发现,当邻域内像素灰度相同时,模板的卷积运算结果为0;当中心像素灰度高于邻域内其他像素的平均灰度时,模板的卷积运算结果为正数;当中心像素的灰度低于邻域内其他像素的平均灰度时,模板的卷积为负数。对卷积运算的结果用适当的衰弱因子处理并加在原中心像素上,就可以实现图像的锐化处理。
 

由于梯度算子和拉普拉斯算子都对噪声敏感,因此一般用他们检测边缘之前要先对图像进行平滑。

特点:

优点:

  1. 各向同性、线性和位移不变的
  2. 对细线和孤立点检测效果较好

缺点:

  1. 对噪声敏感,对噪声有双倍加强的作用
  2. 不能检测出边的方向
  3. 常产生双像素的边缘

Marr算子

由于拉普拉斯算子在检测前需要平滑,于是在拉普拉斯基础上发展了Marr算子,平滑函数采用正态分布的高斯函数。

参考资料:

[Python图像处理] 十七.图像锐化与边缘检测之Roberts算子、Prewitt算子、Sobel算子和Laplacian算子

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值