1. 程式人生 > >[Matlab]如何去除影象中的椒鹽雜訊(1)? 均值濾波(mean filter)

[Matlab]如何去除影象中的椒鹽雜訊(1)? 均值濾波(mean filter)

 

仔細看,似乎有一些微小顆粒參雜在上圖,沒有錯,這在影象處理領域中,一般被稱為椒鹽雜訊(salt & pepper noise)。其特點是以黑點或是白點形式呈現,形同一粒粒"黑色"胡椒或是"白色"鹽巴灑在圖片上。換句話說,以8位元灰階圖為例,畫素灰階值範圍由0~255,"黑色"胡椒的數值是0,"白色"鹽巴的數值則為255。

 

OK,如何消除這種令人感到雜亂的椒鹽雜訊,使得影象表現更加清晰呢?

一般常用的方式有兩種:

1.均值濾波(mean filter): 顧名思義,其指的是擷取周圍其他畫素灰階的平均值做為該畫素的灰階值,至於擷取周遭多大的範圍,端看遮罩濾片設定的尺寸大小。然而,均值濾波的缺點是影象處理後易造成模糊,邊緣明暗的銳利度會失真。

2.中值濾波(median filter): 相較於均值濾波,其指的是擷取周圍其他畫素灰階的中值做為該畫素的灰階值,所以該方法需要先對遮罩濾片內的灰階值進行排序,再挑出中值。

 

對於椒鹽雜訊來說,中值濾波的效果明顯優於均值綠波,原因是中值濾波利用排序方式取出中值,自然不會擷取到最大值255或是最小值0(除非遮罩濾片範圍內全是最大值255或是最小值0)。但均值濾波則是將最大值255或是最小值0一起計算得到平均值。

 

先來試試均值濾波對於椒鹽雜訊的效果吧~~

圖一是利用matlab簡易實現均值濾波的程式碼,其中包含如何產出具有椒鹽雜訊的影象,和兩種可計算均值濾波的matlab指令。

圖一

 

圖二是任意擷取影象的一行灰階數值,並比較濾波前(藍線)和濾波後(紅線)的效果,其中明顯看到濾波後已不再出現濾波前的0和255灰階值了。

圖二

 

圖三是均值濾波後的圖,邊緣明暗銳利度沒有明顯失真的狀況,或許之後以文字或數字等等屬於需高銳利度的影象,應可明顯看出失真的狀況。

圖三

 

-----如果文章對您有幫助,開啟微信掃一掃,請作者喝杯咖啡。-----