创建项目 | 文件与显示 | 像素操作 | 图像彩色类型转换 | 模糊、平滑、去噪 | 锐化、边缘检测 | 二值化 | 形态学 | 位置变换 | 直方图 | 霍夫变换 | 图像优化 | 图像分割
这一章的模糊处理,以及下一章的锐化处理,其实绝大部分都是用一个核跟图像做卷积,使用的核不一样,效果就不一样。
一、均值滤波
均值滤波使用的核是全1核,再归一化。如五阶核:
Mat src = new Mat(img_lenna, ImreadModes.Grayscale);
Mat result = new Mat();
Cv2.Blur(src, result, new OpenCvSharp.Size(5, 5));
result.SaveImage(img_result);
效果如下:
二、中值滤波
中值滤波并不是跟核卷积,而是取核范围内像素的中位数。中值滤波处理椒盐噪声有显著效果。
Mat src = new Mat(img_noise);
Mat result = new Mat();
Cv2.MedianBlur(src, result, 3);
result.SaveImage(img_result);
效果如下:
三、高斯滤波
高斯滤波所所用的核使用高斯函数进行近似,一个5*3的核如下图所示:
Mat src = new Mat(img_lenna);
Mat result = new Mat();
Cv2.GaussianBlur(src, result, new OpenCvSharp.Size(3, 5), 0);
result.SaveImage(img_result);
效果如下:
四、双边滤波
双边滤波相较于高斯滤波,能更好的保留边缘信息。
Mat src = new Mat(img_lenna);
Mat result = new Mat();
Cv2.BilateralFilter(src, result, 5, 10, 2);
result.SaveImage(img_result);
效果如下: