opencv的Sobel导数、Scharr滤波器、Laplacian算子、Canny边缘检测

本文介绍了OpenCV中用于图像处理的Sobel导数、Scharr滤波器和Laplacian算子,以及Canny边缘检测的基本原理和应用。Sobel算子用于边缘检测,结合高斯平滑和微分求导,Scharr滤波器在3x3内核下提供更精确的结果。文章通过代码示例展示了如何在C++中使用这些算子进行图像操作。
摘要由CSDN通过智能技术生成

本文主要对opencv的Sobel导数、Scharr滤波器、Laplacian算子、Canny边缘检测的函数进行简单的说明。


1、Sobel导数

      索贝尔算子(Sobel operator)是图像处理中的算子之一,主要用作边缘检测。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。Sobel导数结合了高斯平滑和微分求导。

假设被作用图像为 I:

  1. 在两个方向求导:

    1. 水平变化: 将 I 与一个奇数大小的内核 G_{x} 进行卷积。比如,当内核大小为3时, G_{x} 的计算结果为:

      G_{x} = \begin{bmatrix}-1 & 0 & +1  \\-2 & 0 & +2  \\-1 & 0 & +1\end{bmatrix} * I

    2. 垂直变化: 将:math:I 与一个奇数大小的内核 G_{y} 进行卷积。比如,当内核大小为3时, G_{y} 的计算结果为:G_{y} = \begin{bmatrix}-1 & -2 & -1  \\0 & 0 & 0  \\+1 & +2 & +1\end{bmatrix} * I

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

    G = \sqrt{ G_{x}^{2} + G_{y}^{2} }

    有时也用下面更简单公式代替:

    G = |G_{x}| + |G_{y}|

Sobel

Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator.

C++:  void  Sobel (InputArray  src, OutputArray  dst, int  ddepth, int  dx, int  dy, int  ksize=3, double  scale=1, double  delta=0, int  borderType=BORDER_DEFAULT  )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值