1.作業題目:撰寫一個程式(a)在一張圖片中將上雜訊,(b)設計方法將雜訊去除。
2.環境設置:
C++
visual studio 2017
opencv 3.4.3
3.實作:
(1)製造常態分佈亂數,使用以下公式
x = sqrt(-2.0 * log(u)) * cos(2.0 * M_PI * v) ;
其中 u, v 是0~1之間的亂數
加上標準差和和期望值會變成以下公式
X = sqrt(-2.0 * log(u)) * cos(2.0 * M_PI * v) * std + mean;
(2)這裡我門檻直設為2,尋訪圖片像素,並且計算X,如果X>2,BGR都設為255(白),
如果<-2,BGR設為0(黑),其他不變。然後就產生"胡椒鹽"了。
(3)我去雜訊的方法是每次造訪像素,取他周圍的8個像素包含自己共9個,然後取中位數來取代自己和周圍的像素的值,然後就產生"自己寫"了。
(4)直接用函式medianBlur,遮罩的值取3,產生"直接用函數",來比較"自己寫"的差異。
("自己寫"的圖片邊緣沒有處理到胡椒鹽)
4.結果:
沒有留言:
張貼留言