10-图像模糊(二)
中值滤波和双边滤波
- 中值滤波
- 统计排序滤波器
- 中值滤波对于椒盐噪声有很好的抑制作用 原理是:将Size(xradius,yradius)窗口中的像素值排序,取中值赋给窗口中心点
- 双边滤波
- 均值滤波无法客服边缘像素信息丢失的缺陷,原因是均值滤波基于平均权重
- 高斯滤波部分克服了该缺陷,但仍无法完全避免,因为没有考虑到像素值的不同
- 高斯双边模糊是保留边缘的滤波方法,避免了边缘信息的丢失,能够保证图像轮廓不变
相关API
代码演示
代码语言:javascript复制#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main() {
Mat src = imread("D:\heroRcData\opencvProject\arrowImg\02\01.jpg");
if (!src.data) {
cout << "could not load image..." << endl;
return -1;
}
namedWindow("input image", CV_WINDOW_AUTOSIZE);
imshow("input image", src);
//***************************************************
//中值滤波
Mat dst_median;
medianBlur(src, dst_median, 5);
string median_window = "medianBlur image";
//imshow(median_window, dst_median);
//***************************************************
//双边滤波
Mat dst_bilateral;
bilateralFilter(src, dst_bilateral, 5, 150, 5);
string bilateral_window = "bilateral image";
imshow(bilateral_window, dst_bilateral);
//**************************************************
//高斯滤波(用于对比 凸显双边滤波效果)
Mat dst_Gauss;
GaussianBlur(src, dst_Gauss, Size(5, 5), 11, 11);
string Gauss_window = "Gauss image";
namedWindow(Gauss_window, CV_WINDOW_AUTOSIZE);
imshow(Gauss_window, dst_Gauss);
waitKey(0);
return 0;
}