`

openCV入门----边缘检测(一):基于一阶导数的梯度算子

 
阅读更多

首先要了解一下梯度的概念,在高等数学中,对于连续的二维函数fxy),其点在(xy)处的梯度是一个二维列向量

V = [fx偏导数 fy偏导数]

那么梯度的幅值就是

               |V| = sqrtfx偏导数^2 + fy偏导数^2

从而对于离散的二维离散的函数fij),微分往往可以用差分表示,如下式:

              | V| = sqrt([f(i+1,j) - f(i,j)]^2 + [f(i,j+1) - f(i,j)]^2)

在图像处理中,往往将梯度幅值看作是梯度!两者不加以区分。为了方便计算,可以将上述根式近似为绝对值的形式:

              | V| = |f(i+1,j) - f(i,j)| + |f(i+1,j) - f(i,j)|

在实际应用中,往往使用另一种近似梯度-----Robert交叉梯度

              | V| = |f(i+1,j+1) - f(i,j)| + |f(i,j+1) - f(i+1,j)|

 

 

常用的两种一阶导数的图像增强算子:

Robert算子:

[-1, 0; 0, 1]:检测接近45度边缘 ----G1

[0, -1; 1, 0]:检测接近-45度边缘 ----G2

最终的robert交叉梯度图像为G = G1 + G2

 

Sobel算子:

[-1, -2, -1; 0, 0, 0; 1, 2, 1]:对水平边缘有较大响应 -----G1

[-1, 0, 1; -2, 0, 2; -1, 0, 1]:对竖直边缘有较大响应 -----G2

Sobel梯度图像 G = G1 + G2

(注:因为对于图像出来,人们更喜欢使用奇数尺寸的模板,于是sobel算子用得更为普遍)

Sobel算子在openCV中的使用:

cvSobel( const CvArr* scr , 

             CvArr* dst ,

             int    xorder,

             int    yorder,

             int    aperture_size = 3); 

<!--EndFragment-->

 

*Xorderyorder

 

 

X方向,y方向上的导数阶数,通常只用到0,1,最多2

*aperture_size:

扩展 Sobel 核的大小,必须是 1, 3, 5 或 7。 除了尺寸为 1, 其它情况下, aperture_size ×aperture_size 可分离内核将用来计算差分。对 aperture_size=1的情况, 使用 3x1 或 1x3 内核 (不进行高斯平滑操作)。这里有一个特殊变量 CV_SCHARR (=-1),对应 3x3 Scharr 滤波器,可以给出比 3x3 Sobel 滤波更精确的结果。这里的scharr滤波器实际上使用了下图所示的模板,与普通3*3模板不同的是微分权重系数不同


                                  
 

 

结果比对:



 Sobel普通3*3模板边缘检测效果



 scharr模板边缘检测效果

 

<!--EndFragment-->
  • 大小: 1.5 KB
  • 大小: 146.5 KB
  • 大小: 138.5 KB
1
2
分享到:
评论

相关推荐

    OpenCV边缘检测算子

    拉普拉斯算子是一种二阶微分算子,它通过计算图像像素的梯度平方来寻找图像中的边缘。在二维图像中,拉普拉斯算子通常表示为一个3x3的差分矩阵,其核为: ``` [0 -1 0] [-1 4 -1] [0 -1 0] ``` 这个算子对图像进行...

    OpenCvSharp-4.1.0-x86-20190417.zip

    OpenCV是一个广泛使用的开源计算机视觉库,它包含了大量的图像处理和计算机视觉算法,能够帮助开发者进行图像分析、识别、特征检测、视频处理等任务。 在C#环境下使用OpenCV,OpenCvSharp是首选的绑定库,它提供了...

    opencv-python-4.10.0.84.tar.gz

    在本案例中,我们讨论的是OpenCV的Python接口的4.10.0.84版本,它是一个经过编译的二进制包,文件名为`opencv-python-4.10.0.84.tar.gz`。 `opencv-python`库主要由以下部分组成: 1. 图像处理基础:包括读取、...

    OpenCvSharp-4.0.0-x86-20181130.zip

    OpenCvSharp是一个基于.NET框架的C#版OpenCV库,专为C#开发者提供了方便易用的接口来实现计算机视觉的功能。这个压缩包“OpenCvSharp-4.0.0-x86-20181130.zip”包含了OpenCvSharp 4.0.0版本的x86架构的库文件,适用...

    经典图像边缘检测(沈俊算子等)

    本文将深入探讨几种经典的边缘检测算子,包括Sobel算子、Prewitt算子、沈俊算子以及Canny算子。 Sobel算子是由Sobel在1970年提出的,它是一种基于微分法的边缘检测方法。相比于Prewitt算子,Sobel算子在计算梯度时...

    【C++】OpenCV边缘检测示例程序 by浅墨

    博文《【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑》的配套详细注释源代码。 博文链接: http://blog.csdn.net/poem_qianmo/article/details/25560901 1.已将dll...

    opencv-4.9.0-android

    这个"opencv-4.9.0-android"版本是OpenCV针对Android平台的特定优化版本,包含了最新的特性和性能改进。 1. **OpenCV库的核心功能**: - 图像处理:包括滤波、边缘检测(如Canny、Sobel、Laplacian)、色彩转换...

    opencv-python 3.4.1.15 opencv-contrib-python 3.4.1.15 win64版

    opencv-python 3.4.1.15 opencv-contrib-python 3.4.1.15 win64版,opencv-python 3.4.1.15 opencv-contrib-python 3.4.1.15,支持版本:python3.4,3.5,3.6

    opencv图像处理-opencv图像处理算法之边缘检测.zip

    7. **Roberts、Prewitt和Kirsch算子**:这些是一些简单的边缘检测算子,它们基于一阶微分操作来检测图像的边缘,相比Sobel和Laplacian,它们的计算复杂度较低,但可能不够精确。 边缘检测是计算机视觉中的基础步骤...

    OpenCV3.0.0-beta版本

    OpenCV(开源计算机视觉库)是一个强大的开源框架,专门用于图像处理和计算机视觉任务。它的全称是Open Source Computer Vision Library,由Intel公司发起,并由全球开发者社区不断维护和更新。OpenCV3.0.0-beta是该...

    OpenCV2.4.9_基于LoG算子及自定义算子的图像边缘检测

    OpenCV2.4.9的基于LoG算子及自定义算子的图像边缘检测的代码,相应位置有具体的注释,具体分析见博客http://blog.csdn.net/primetong/article/details/79589620

    PyPI 官网下载 | opencv-python-4.5.3.56.tar.gz

    《OpenCV-Python 4.5.3.56:深度学习与计算机视觉的利器》 OpenCV(开源计算机视觉库)是计算机视觉和机器学习领域的重要工具,它提供了丰富的功能,用于处理图像和视频数据。在Python环境中,OpenCV通过`opencv-...

    opencv-4.5.5-vc14_vc15最新版本

    这个压缩包“opencv-4.5.5-vc14_vc15最新版本”包含了OpenCV库的4.5.5版,适用于Visual Studio 2017(vc14)和Visual Studio 2019(vc15)编译环境。OpenCV库不仅支持C++,还提供了Python、Java等其他编程语言的接口...

    opencv3编程入门 勘误及配套源码 opencv3 OpenCV3-Intro-Book-Src-master

    《OpenCV3编程入门》是一本面向初学者的开源书籍,旨在帮助读者快速掌握OpenCV3库的使用。OpenCV(开源计算机视觉库)是一个强大的工具集,用于图像处理、计算机视觉以及机器学习任务。该书结合实际示例,详细介绍了...

    【OpenCV新手教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑.pdf

    Sobel算子是一种用于计算图像一阶和二阶导数的差分算子,常用于边缘检测。它通过两个3x3的模板分别计算水平和垂直方向的梯度,然后合成梯度幅值和方向。Sobel算子对噪声有一定的抗干扰能力,适用于快速检测图像的...

    VC++图像锐化和边缘检测

    4. Sobel边缘检测:Sobel算子是一种广泛应用的边缘检测算子,它结合了水平和垂直方向的一阶导数来估计图像的梯度。Sobel算子具有良好的噪声抑制能力,并能有效检测到图像的边缘。 5. Prewitt边缘检测算子:Prewitt...

    OpenCV-python 图像梯度1

    OpenCV-python 图像梯度 OpenCV 提供了三种不同的梯度滤波器(高通滤波器):Sobel、Scharr、Laplacian。这些滤波器可以用来检测图像中的边缘和梯度信息。 Sobel 算子是高斯平滑与微分操作的结合体,抗降噪能力很...

    opencv学习---运动目标(前景)检测源码下载

    在OpenCV库中,运动目标(前景)检测是计算机视觉领域的一个重要课题,它涉及到视频分析、监控系统、自动驾驶等多个应用场景。本教程将深入探讨如何使用OpenCV进行运动目标检测,特别是采用VIBE(ViBe)算法。VIBE是...

Global site tag (gtag.js) - Google Analytics