基于OpenCvSharp的数字图像处理 - 模糊、平滑、去噪

创建项目  |  文件与显示  |  像素操作  |  图像彩色类型转换  |  模糊、平滑、去噪  |  锐化、边缘检测  |  二值化  |  形态学  |  位置变换  |  直方图  |  霍夫变换  |  图像优化  |  图像分割

完整示例项目

 

这一章的模糊处理,以及下一章的锐化处理,其实绝大部分都是用一个核跟图像做卷积,使用的核不一样,效果就不一样。

一、均值滤波

均值滤波使用的核是全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);

效果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章