C++ OpenCV——空间域处理之空间滤波

#include
#include

using namespace std;
using namespace cv;

//方框滤波 BoxFilter
//均值滤波 Blur
//高斯滤波 GaussianBlur
void OpenCVSmoothLinearFilter()
{
	Mat img = imread("Fig0333(a)(test_pattern_blurring_orig).tif",0);
	Mat boxfliter,blur,gaussianblur;
	
	cv::boxFilter(img,boxfliter,-1,Size(7,7));
	cv::blur(img,blur,Size(7,7));
	cv::GaussianBlur(img,gaussianblur,Size(7,7),0,0);
	imshow("方框滤波 boxFliter",boxfliter);
	imshow("均值滤波 blur",blur);
	imshow("高斯滤波 GaussianBlur",gaussianblur);
}

//中值滤波 medianBlur
//双边滤波 bilateralFilter
void OpenCVSmoothNonLinearFilter()
{
	Mat img = imread("Fig0338(a)(blurry_moon).tif",0);
	Mat img2 = imread("Fig0335(a)(ckt_board_saltpep_prob_pt05).tif",0);
	Mat bilateralimg,medianimg;
	cv::bilateralFilter(img,bilateralimg,25,25*2,25/2);
	cv::medianBlur(img2,medianimg,7);

	imshow("中值滤波 medianBlur",medianimg);
	imshow("双边滤波 bilateralFilter",bilateralimg);
}


void main()
{
	//OpenCVSmoothLinearFilter();
	OpenCVSmoothNonLinearFilter();
	waitKey();
}
  • 线性平滑(方框滤波、均值滤波、高斯滤波)
    C++ OpenCV——空间域处理之空间滤波_第1张图片

  • 非线性平滑(中值滤波、双边滤波)
    C++ OpenCV——空间域处理之空间滤波_第2张图片

你可能感兴趣的:(OpenCV,平滑滤波,Opencv,C++,双边滤波,线性平滑)