Image noise processing撰寫一個程式(a)在一張圖片中將上雜訊, (b)設計方法將雜訊去除。(a) 說明加上的雜訊類型(Gaussian, Uniform, Salt-and-Pepper 等)與數量(20%, 50%等)
(b)說明所設計去除雜訊的方法
設計與測試多種雜訊分數越高
使用環境:
Visual studio 2017
opencv 3.4.2
實作方法:
1.imread讀取原圖並存進src
2.將src複製成兩分,gaussian添加gaussian noise,salt_pepper添加salt and pepper
3.定義兩個副函式,一個隨機選擇圖片中的列跟行,將值改為0(添加pepper),另一副函式則改為255(添加salt),
第一個參數為Mat,第二個為salt 和 pepper的數量。
4.對salt_pepper使用第3部的兩個副函式並印出來,數量為8000
5.利用randn函式做出一個gaussian noise矩陣,大小跟讀入的圖一樣,並且兩張相加
得到添加gaussian noise後的矩陣後印出來
6.利用cv::medianBlur對salt_pepper做中值平滑,參數為讀入的圖、輸出的圖、模板大小(須為奇數),做完後印出圖案
7.利用cv::GaussianBlur對gaussian做高斯平滑,參數為讀入的圖、輸出的圖、模板大小、高斯x軸的標準差、高斯y軸的標準差
(若兩個都設為0則會自動計算標準差),在這邊模板大小的size社的越大效果越好,但是執行時間越長。
8.將做完GaussianBlur的圖片印出
四、執行結果
執行結果:左上為salt and pepper,右上為gaussian,左下為salt and pepper做median blur,右下為gaussian做gaussianblur
沒有留言:
張貼留言