四、高通滤波器
前面一章介绍了使用内核矩阵实现低通滤波器,这个滤波器能够删除或者减弱高频分量。这本节中,我们将介绍相反转换的增加高频分量的方法,也就是高通滤波器。主要用于边缘的检测。
4.1 Sobel函数
opencv中提供了函数cv::Sobel,利用矩阵卷积方法 近似 实现方向导数的计算。
函数头文件:#include <opencv2/imgproc/imgproc.hpp>
函数定义:
CV_EXPORTS_W 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 );
函数使用:
cv::Sobel(image,sobelX,CV_8U,1,0,3,0.4,128);
cv::Sobel(image,sobelY,CV_8U,0,1,3,0.4,128);
函数参数介绍:
int ddepth : 图像深度,或者说图像处理后值的大小范围
dx,dy :决定是对横向和纵向的Sobel处理
ksize :内核矩阵的大小,默认为3
scale :函数处理后值乘以的系数 即 值*scale
delta :函数处理后值的补偿, 即 值*scale + delta
函数说明:
函数实现对图像进行求方向导数,当ksize等于3时,方向导数可以近似用内核Gx,Gy和图像I卷积,如下:
水平与垂直相加,也可以近似为:
。
当然还有另外一个比Sobel函数的近似效果更好的 Scharr函数,