图像模糊原理
线性滤波—主要为均值滤波和高斯滤波
高斯滤波考虑对应距离的权重值进行相加,均值则各处都一样
非线性滤波–中值滤波和双边滤波
与高斯滤波不同,双边滤波不仅仅考虑距离权重,海鲜定了像素值问题,因此可以考虑到轮廓
具体使用:
//-------------图像模糊--------------
Mat ImageBlur, dst,gaosiBlur,mediaBlur,bilateralImage;
ImageBlur = imread("C:/Users/18929/Desktop/博客项目/项目图片/01.jpg");
if (ImageBlur.empty())
{
printf("could not load image");
return -1;
}
char input_title[] = "Input_Image";
char output_title[] = "blur_Image";
char gaosi_title[] = "gaosi_blur";
blur(ImageBlur, dst, Size(3, 3), Point(-1, -1));//使用3*3的盒子进行卷积操作,Point(-1,-1)--表示指向默认中心点
GaussianBlur(ImageBlur, gaosiBlur, Size(3, 3), 11, 11);//高斯模糊,11,11是高斯模糊的底数
medianBlur(ImageBlur, mediaBlur, 3);//中值滤波,同中值代替中间值,3表示盒子大小3*3,有利于去除椒盐噪点
bilateralFilter(ImageBlur, bilateralImage, 15, 150, 3);//双边滤波,15--计算区域的半径,150--计算的像素阈值范围,即像素插值150内的才计算,3--根据其来计算d,sigmaspace
namedWindow(input_title, WINDOW_AUTOSIZE);
imshow(input_title, ImageBlur);
//namedWindow(output_title, WINDOW_AUTOSIZE);
//imshow(output_title, dst);
//namedWindow(gaosi_title, WINDOW_AUTOSIZE);
//imshow(gaosi_title, dst);
imshow("meida_Image", mediaBlur);
imshow("Bilateral_Image", bilateralImage);
//使用双边滤波模糊图像后,再通过掩膜操作提高图片锐度,即可完成ps效果
Mat resultImg;
Mat kernel = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(bilateralImage, resultImg, -1, kernel, Point(-1, -1), 0);//-1--图像深度,Point---1,-1默认为中心点,0--边框
imshow("result_Image", resultImg);
waitKey(0);
return 0;