OpenCV(图像模糊二)

使用OpenCV2.4.9+VS2013

#include 
#include 

using namespace cv;
using namespace std;

int main(int argc, char** argv) {
	Mat src, dst;
	src = imread("F:\\test1.png");
	if (src.empty()) {
		cout << "could not load image..." << endl;
		return -1;
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);

	//medianBlur(src, dst, 3);		//中值滤波
	bilateralFilter(src, dst, 15, 100, 5);		//双边滤波,轮廓还在
	namedWindow("BiBlur Filter Result", CV_WINDOW_AUTOSIZE);
	imshow("BiBlur Filter Result", dst);

	Mat gblur;
	GaussianBlur(src, gblur, Size(15, 15), 3, 3);		//高斯滤波,整体模糊,轮廓也是模糊的
	imshow("Gussian Blur Demo", gblur);

	Mat resultImage;		//在双边滤波的基础上进行掩模操作,提高了图像对比度,使图像更清晰
	Mat kernel = (Mat_(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
	filter2D(dst, resultImage, -1, kernel, Point(-1, -1), 0);
	imshow("Final Result", resultImage);

	waitKey(0);
	return 0;
}

运行结果:

1.  高斯模糊与高斯双边模糊的对比

    高斯模糊克服了边缘信息丢失的缺陷,但无法完全避免。因此,其轮廓也是模糊的;

    高斯双边模糊是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变。

OpenCV(图像模糊二)_第1张图片

2. 在高斯双边滤波的基础上进行掩模操作,提高图像的对比度

OpenCV(图像模糊二)_第2张图片

你可能感兴趣的:(OpenCV(图像模糊二))