opencv学习(三十二)之图像边缘检测Soble_Laplace_Canny

1. Sobel算子前面我们已经介绍了图像的卷积操作,而一个最重要的卷积运算就是对导数的计算,假设我们需要检测图像中的边缘部分,如下图所示: 前面我们介绍图像的高频和低频分量的时候说到,图像的高频分量一般出现在像素值显著改变的地方,而高频分量的出现就容易勾画出图像的轮廓。在高等数学中我们知道函数变化剧烈其所对应的导数值越大(极大值),所以表示图像像素值改变最大的一个方法就是求出图像的导数。其梯
摘要由CSDN通过智能技术生成

1. Sobel算子

前面我们已经介绍了图像的卷积操作,而一个最重要的卷积运算就是对导数的计算,假设我们需要检测图像中的边缘部分,如下图所示:
这里写图片描述
前面我们介绍图像的高频和低频分量的时候说到,图像的高频分量一般出现在像素值显著改变的地方,而高频分量的出现就容易勾画出图像的轮廓。在高等数学中我们知道函数变化剧烈其所对应的导数值越大(极大值),所以表示图像像素值改变最大的一个方法就是求出图像的导数。其梯度值剧烈的改变预示着图像中内容发生显著变化。假设我们有一张一维图像,图中灰度值的“跃升”表示边缘的存在:
这里写图片描述
通过对函数进行一阶微分我们可以更加清晰的看到边缘“跃升”的存在,即在其一阶微分中最大值代表其所对应的像素值变化剧烈。如下图:
这里写图片描述
从上面的介绍中我们可以推测对于图像边缘的检测可以通过定位梯度值大于邻域的像素的方法找到(或者推广到大于一个阈值即可认为是图像边缘)

Sobel算子是一个离散微分算子(discrete differentiation operator),它用来计算图像灰度函数的近似梯度并结合了高斯平滑和微分求导。假设被处理的图像位I, Sobel算子数学表达公式如下:

1.1在两个方向求导

  • .a 水平变化:将I与一个奇数大小的内核Gx进行卷积,比如当内核大小为3时,Gx计算结果为:
    这里写图片描述
  • .b 垂直变化:将I与一个奇数大小的内核Gy进行卷积,比如当内核大小为3时,Gy的计算结果为:
    这里写图片描述

1.2 在图像的每一点结合以上两个结果求出近似梯度:

这里写图片描述
有时也使用如下更简单的公司代替:
这里写图片描述

注意
当内核大小为3时,Sobel内核可能产生比较明显的误差,毕竟Sobel算子只是求取了导数的近似值,为了解决这一问题,opencv提供了Scharr函数,但该函数仅作用于大小为3的内核,该函数的运算与Sobel函数一样快,但结果更加精确,其内核如下:
这里写图片描述
关于Scharr的更多信息请点击

opencv中提供了sobel函数,其定义如下:

void cv::Sobel  ( InputArray  src,  
  OutputArray  dst,  
  int  ddepth,  
  int  dx,  
  int  dy,  
  int  ksize = 3,  
  double  scale = 1,  
  double  delta = 0,  
  int  borderType = BORDER_DEFAULT  
 ) 

当ksize=1时,内核形式为3x1或1x3(没有高斯平滑),ksize=1只能用于一阶或二阶x或y方向上的导数。当ksize=CV_SCHARR(-1)是一个特殊值,将会调用同样为3x3内核比Sobel计算的结果精确的Scharr滤波器。Scharr的核心是:
这里写图片描述

函数通过一个恰当的内核与图像进行卷积来计算图像导数,如下:
这里写图片描述

sobel算子结合高斯平滑和分化,所以结果有更好的抗噪性。通常这个函数设置为(xorder = 1, yorder = 0, ksize = 3)来计算图像在x方向上的导数,此时的核如下:
这里写图片描述
或(xorder = 0, yorder = 1, ksize = 3)来计算y方向图像导数,此时的核如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值