图像模糊原理
线性滤波—主要为均值滤波和高斯滤波
高斯滤波考虑对应距离的权重值进行相加,均值则各处都一样
非线性滤波–中值滤波和双边滤波
与高斯滤波不同,双边滤波不仅仅考虑距离权重,海鲜定了像素值问题,因此可以考虑到轮廓
具体使用:
//-------------图像模糊-------------- 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;