赞
踩
Sobel 算子是一个离散的一阶微分算子,用来计算图像灰度函数的近似梯度。
在空间域上Sobel算子很容易实现,执行速度快,对部分噪声具有平滑作用,还能够提供较为精确的边缘方向信息,缺点是边缘定位精度不够高。边缘是指一个物体与另一个物体的分界处,一般边缘内外处都会有灰度值上的差异,Sobel算子就是通过像素点空间邻域内上下,左右相邻点的灰度加权运算,求取物体边缘。
索贝尔算子是计算机视觉领域的一种重要处理方法。主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测。索贝尔算子是把图像中每个像素的上下左右四领域的灰度值加权差,在边缘处达到极值从而检测边缘。
索贝尔算子主要用作边缘检测。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。
索贝尔算子不但产生较好的检测效果,而且对噪声具有平滑抑制作用,但是得到的边缘较粗,且可能出现伪边缘。
经典Sobel的卷积因子为:
对于待检测边缘的图像I,分别在水平(X)方向和垂直方向(Y)方向求导,方法是分别图像I与卷积核Gx和Gy进行卷积,公式表述如下:
图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小(G即为Sobel求得的梯度图像)。
(或者用下面简单粗暴的方法计算G
)
然后可用以下公式计算梯度方向。
在以上例子中,如果以上的角度θ等于零,即代表图像该处拥有纵向边缘,左方较右方暗。
函数功能:
函数原型:
dst = cv2.Sobel(src, ddepth, dx, dy[, dst[, ksize[, scale[, delta[, borderType]]]]])
必选参数(前四个是必须的参数):
src
- 需要处理的图像ddepth
- 图像的深度,-1表示采用的是与原图像相同的深度。目标图像的深度必须大于等于原图像的深度dx
- 对x轴方向求导的阶数,一般为0、1、2,其中0表示这个方向上没有求导dy
- 对y轴方向求导的阶数,一般为0、1、2,其中0表示这个方向上没有求导其后是可选的参数:
dst
- 目标图像ksize
- Sobel算子的大小,必须为1、3、5、7scale
- 缩放导数的比例常数,默认情况下没有伸缩系数delta
- 可选增量, 将会加到最终的dst中,同样,默认情况下没有额外的值加到dst中borderType
- 图像边界的模式。这个参数默认值为cv2.BORDER_DEFAULT说明:
在经过处理后,需要用convertScaleAbs()
函数将其转回原来的uint8
形式,否则将无法显示图像,而只是一副灰色的窗口。
函数功能:
uint8
类型函数原型:
dst = cv2.convertScaleAbs(src[, dst[, alpha[, beta]]])
参数:
src
- 源图像dst
- 输出图像可选参数
alpha
是伸缩系数beta
是加到结果上的一个值,结果返回uint8类型的图片例如下面用法,转化XY方向:
absX=cv2.convertScaleAbs(x) # 转回uint8
absY=cv2.convertScaleAbs(y)
由于Sobel算子是在两个方向计算的,最后还需要用cv2.addWeighted(…)函数将其组合起来
函数功能:
函数原型为:
dst = cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]])
参数:
src1
- 第一张图片alpha
- 是第一幅图片中元素的权重src2
- 第二张图片beta
- 是第二幅图片中元素的权重gamma
- 是加到最后结果上的一个值#include <iostream> #include <math.h> #include <opencv2/opencv.hpp> #include <opencv2/highgui.hpp> #include <opencv2/highgui/highgui_c.h> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src, dst; src = imread("./test2.jpg"); if (!src.data) { printf("could not load image...\n"); return -1; } char INPUT_TITLE[] = "input image"; char OUTPUT_TITLE[] = "sobel-demo"; namedWindow(INPUT_TITLE, CV_WINDOW_AUTOSIZE); // namedWindow(OUTPUT_TITLE, CV_WINDOW_AUTOSIZE); imshow(INPUT_TITLE, src
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。