基於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);

效果如下:

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