首先要了解一下梯度的概念,在高等数学中,对于连续的二维函数f(x,y),其点在(x,y)处的梯度是一个二维列向量
V = [f对x偏导数 f对y偏导数]’
那么梯度的幅值就是
|V| = sqrt(f对x偏导数^2 + f对y偏导数^2)
从而对于离散的二维离散的函数f(i,j),微分往往可以用差分表示,如下式:
| 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-->
*Xorder,yorder:
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-->
相关推荐
赠送jar包:opencv-4.5.5-1.5.7.jar; 赠送原API文档:opencv-4.5.5-1.5.7-javadoc.jar; 赠送源代码:opencv-4.5.5-1.5.7-sources.jar; 赠送Maven依赖信息文件:opencv-4.5.5-1.5.7.pom; 包含翻译后的API文档:...
OpenCV-MinGW-Build-OpenCV-4.5.0-with-contrib
opencv学习---运动目标(前景)检测
赠送jar包:opencv-4.5.1-1.5.5.jar; 赠送原API文档:opencv-4.5.1-1.5.5-javadoc.jar; 赠送源代码:opencv-4.5.1-1.5.5-sources.jar; 赠送Maven依赖信息文件:opencv-4.5.1-1.5.5.pom; 包含翻译后的API文档:...
赠送jar包:opencv-4.5.1-1.5.5.jar; 赠送原API文档:opencv-4.5.1-1.5.5-javadoc.jar; 赠送源代码:opencv-4.5.1-1.5.5-sources.jar; 赠送Maven依赖信息文件:opencv-4.5.1-1.5.5.pom; 包含翻译后的API文档:...
基于opencv2.4.7和vs2010开发环境的图像处理,用于图像处理的边缘检测,其中用到了拉普拉斯算子,Scharr算子,检测所得图像为彩色。
博文《【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑》的配套详细注释源代码。 博文链接: http://blog.csdn.net/poem_qianmo/article/details/25560901 1.已将dll...
赠送jar包:opencv-4.5.5-1.5.7.jar; 赠送原API文档:opencv-4.5.5-1.5.7-javadoc.jar; 赠送源代码:opencv-4.5.5-1.5.7-sources.jar; 赠送Maven依赖信息文件:opencv-4.5.5-1.5.7.pom; 包含翻译后的API文档:...
1.android 版的opencv-4.5.5 sdk; 2.含有opencv-contrib-4.5.5 扩展模块; 3.可以在android studio 中加载,通过java 层调用,也可以添加so库+头文件的方式在jni 层调用; 4.适用于arm64-v8a架构,即64bit cpu。
opencv3编程入门 勘误及配套源码 opencv3 OpenCV3-Intro-Book-Src-master
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
OpenCvSharp-4.5.2-20210405.rar
适用于Windows64位,对应Python 3.6版本,OpenCV为3.4.1.15版本;内含有《opencv_contrib_python-3.4.1.15-cp36-cp36m-win_amd64.whl》和《opencv_python-3.4.1.15-cp36-cp36m-win_amd64.whl》两个文件
# OpenCV-MinGW-Build MinGW version of OpenCV compiled on Windows. ## [OpenCV 3.4.1](https://github.com/huihut/OpenCV-MinGW-Build/tree/OpenCV-3.4.1) ``` git clone -b OpenCV-3.4.1 git@github....
新手学习opencv--基于Hog的视频行人检测
opencv 安装包 opencv-4.1.2-vc14_vc15 opencv 安装包 opencv-4.1.2-vc14_vc15 opencv 安装包 opencv-4.1.2-vc14_vc15 opencv 安装包 opencv-4.1.2-vc14_vc15 opencv 安装包 opencv-4.1.2-vc14_vc15 opencv 安装包 ...
opencv-4.8.0-windows.exe : windows下的包 opencv-4.8.0-android-sdk.zip : Android下的包 opencv-4.8.0.zip : openCV的源码 具体openCV的使用,可以看我的博客 : ...
OpenCV-2.2.0-win32-vs2010.exe
opencv-contrib-python-3.4.1.15.whl 包含支持SIFT!!!下载文中链接, pip install opencv-contrib-python-3.4.1.15。找了一上午, 终于在这里发现:...
OpenCV2.4.9的基于LoG算子及自定义算子的图像边缘检测的代码,相应位置有具体的注释,具体分析见博客http://blog.csdn.net/primetong/article/details/79589620