图像滤波包括线性滤波和非线性滤波,其中线性滤波包括:方框滤波(BoxBlur函数)/均值滤波(Blur函数)/高斯滤波(GaussianBlur函数)。非线性滤波包括中值滤波(medianBlur函数)和双边滤波(bilateralBlur函数).
滤波就是将信号中的特定波段滤除掉,可分为低筒滤波和高通滤波,以高斯滤波为例,就是用高斯函数作为滤波函数进行滤波的,低通滤波就是模糊,高通滤波就是锐化。高斯模糊可以用来减少图像噪声以及降低细节层次,这种模糊技术生成的图像的视觉效果好像是经过一个半透明的屏幕观察图像。
下面代码环境:VS2013+OpenCV3.0
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
cout << "Reading image!" << endl;
Mat src = imread("101200.jpg");
imshow("原图", src);
//进行均值滤波
Mat dst1,dst2,dst3;
blur(src, dst1, Size(9, 9));
imshow("均值滤波", dst1);
//高斯模糊,用于减少图像噪声以及降低细节层次
GaussianBlur(src,dst2,Size(9,9),0,0);
imshow("高斯滤波",dst2);
//方框滤波
boxFilter(src, dst3, -1, Size(9, 9));
imshow("方框滤波",dst3);
waitKey(0);
return 0;
}
效果: