影像雜訊去除 — 平滑法(Smoothing Method)

針對影像的雜訊干擾、灰階分布集中等問題,可綜合應用面罩(Mask)、捲積(Convolution)等技巧,對局部像素做加權運算,達到影像降噪的效果。

Ken Huang
電腦視覺

--

前言

影像常因環境影響,導致灰階分布集中、影像中含有雜訊,進而影響內容資訊的判讀,若能盡量恢復影像品質,則有助於使用者理解圖像資訊。舉例來說,X 光影像是醫學領域常用來判斷疾病的依據,若能使影像更清晰,則有助於醫生判讀發病區域、疾病嚴重程度。

這篇文章會先介紹最簡單的「平滑法(Smoothing Method)」,此做法利用一個小型的矩陣作為面罩(Mask)對原始影像進行捲積(Conolution),再將捲積得到的響應值(Response)取代矩陣中心的像素值。

單純用文字描述可能太抽象,接著我們舉個 3 * 3 的灰階影像做為範例,直觀一點來看數值上的變化。

平滑法(Smoothing Method)運算方式

這個 3 * 3 的灰階影像,長這樣:

如果是 N * N 的 Mask,那 Mask 的每個 Element 就是1/N²:

以這個 3 * 3 的例子來說,每個 Element 就是 1 / 9

就等於對 Mask 內的像素取平均值,這個例子來說就是(5+6+2+3+28+3+1+4+2)/ 9

= 54 / 9

= 6 (這邊如果有小數點就四捨五入)

最後再覆蓋正中間的像素:

再來就透過實際的影像來看它經過平滑法之後的視覺效果。

平滑法(Smoothing Method)實作

透過 python 的 Open-CV 可以用 filter2D function 直接指定原始影像與 Mask,只要先透過 numpy 創造一個 Mask 再放到 fileter2D 很快就能實作出結果:

可以從結果看出,Mask的大小越大,影像會越平滑,尤其在「邊緣」的部分效果更明顯。

Source code:

結論

雜訊去除的方法,其實也可使用先前介紹過的傅立葉轉換(Fourier Transform,FT)離散餘弦轉換(Discrete Cosine Transform,DCT),這兩種做法對具有週期性的雜訊(例如一些網格狀的紋理)比較敏感,缺點是運算上比較複雜。

這篇介紹的平滑法因為採用 Mask、Convolution 等技巧,所以運算上會比 FT 或 DCT 快許多,但若處理的是週期性雜訊,會將雜訊本身的資訊融入原始圖像,那就可能造成影像整體明暗度提升或下降,也可能產生色偏。因此在不同條件下可選擇較合適的手法來處理影像雜訊。

除了平滑法之外,還有類似的做法叫做「中值法」、「中央加權中值法」,我就之後的文章再繼續介紹,再回來補上連結~

--

--

Ken Huang
電腦視覺

在網路上自學的過程中,體會到開放式資源的美好,希望藉由撰寫文章記錄研究所的學習過程,同時作為回饋網路世界的一種方式。Email : kenhuang2019iii@gmail.com ,如果有任何問題都歡迎與我聯繫。