函数原型
void GaussianBlur( InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT );
参数说明
- InputArray类型的src,输入图像,如Mat类型。
- OutputArray类型的dst,输出图像。
- Size类型的ksize,高斯内核的大小。
- double类型的sigmaX,高斯核函数在X方向的标准偏差。
- double类型的sigmaY,高斯核函数在Y方向的标准偏差。
- int类型的borderType,推断图像边缘像素的边界模式。
测试代码
#include<iostream> #include<opencv2/opencv.hpp> #include<ctime> using namespace std; using namespace cv; int main(void) { cv::Mat test = imread("long.jpg"); cv::Mat result; cv::GaussianBlur(test, result, Size(7, 7),0,0); imshow("original", test); imshow("result", result); waitKey(0); system("pause"); return 0; }
测试效果
图1 对比图
图2 原图细节
图3 高斯滤波后细节
高斯滤波是一种线性平滑滤波,可有效消除高斯噪声,图像的高斯模糊过程也是图像与正态分布做卷积的过程,另外高斯函数的傅里叶变换也是高斯函数,所以高斯模糊也属于一个低通滤波操作