1. 程式人生 > >影象處理自適應濾波

影象處理自適應濾波

本文主要介紹了自適應的中值濾波器,並基於OpenCV實現了該濾波器,並且將自適應的中值濾波器和常規的中值濾波器對不同概率的椒鹽噪聲的過濾效果進行了對比。最後,對中值濾波器的優缺點了進行了總結。

空間濾波器

一個空間濾波器包括兩個部分:

  • 一個鄰域,濾波器進行操作的畫素集合,通常是一個矩形區域
  • 對鄰域中畫素進行的操作

一個濾波器就是在選定的鄰域畫素上執行預先定義好的操作產生新的畫素,並用新的畫素替換掉原來畫素形成新的影象。 
通常,也可以將濾波器稱之為核(kernel),模板(template)或者視窗(window)

根據預定義的操作,可以將濾波器分為:

  • 線性濾波器
  • 非線性濾波器

而根據濾波器最終對影象造成的影響,可以將濾波器分為:

  • 平滑濾波器 ,通常用於模糊影象或者去除影象中的噪聲
  • 銳化濾波器,突出影象中的邊緣細節部分

中值濾波器 Median Filter

中值濾波器是一種常用的非線性濾波器,其基本原理是選擇待處理畫素的一個鄰域中各畫素值的中值來代替待處理的畫素,其主要功能是畫素的灰度值與周圍畫素比較接近,從而消除孤立的噪聲點,所以中值濾波器能夠很好的消除椒鹽噪聲。不僅如此,中值濾波器在消除噪聲的同時,還能有效的保護影象的邊界資訊,不會對影象造成很大的模糊(相比於均值濾波器)。

中值濾波器的效果受濾波視窗尺寸的影響較大,在消除噪聲和保護影象的細節存在著矛盾:濾波視窗較小,則能很好的保護影象中的某些細節,但對噪聲的過濾效果就不是很好;反之,視窗尺寸較大有較好的噪聲過濾效果,但是會對影象造成一定的模糊。另外,根據中值濾波器原理,如果在濾波視窗內的噪聲點的個數大於整個視窗內畫素的個數,則中值濾波就不能很好的過濾掉噪聲。

自適應中值濾波器 Adaptive Median Filter

上面提到常規的中值濾波器,在噪聲的密度不是很大的情況下(根據經驗,噪聲的出現的概率小於0.2),效果不錯。但是當概率出現的概率較高時,常規的中值濾波的效果就不是很好了。有一個選擇就是增大濾波器的視窗大小,這雖然在一定程度上能解決上述的問題,但是會給影象造成較大的模糊。

常規的中值濾波器的視窗尺寸是固定大小不變的,就不能同時兼顧去噪和保護影象的細節。這時就要尋求一種改變,根據預先設定好的條件,在濾波的過程中,動態的改變濾波器的視窗尺寸大小,這就是自適應中值濾波器 Adaptive Median Filter。在濾波的過程中,自適應中值濾波器會根據預先設定好的條件,改變濾波視窗的尺寸大小,同時還會根據一定的條件判斷當前畫素是不是噪聲,如果是則用鄰域中值替換掉當前畫素;不是,則不作改變。

自適應中值濾波器有三個目的:

  • 濾除椒鹽噪聲
  • 平滑其他非脈衝噪聲
  • 儘可能的保護影象中細節資訊,避免影象邊緣的細化或者粗化。

自使用中值濾波演算法描述

自適應濾波器不但能夠濾除概率較大的椒鹽噪聲,而且能夠更好的保護影象的細節,這是常規的中值濾波器做不到的。自適應的中值濾波器也需要一個矩形的視窗Sxy,和常規中值濾波器不同的是這個視窗的大小會在濾波處理的過程中進行改變(增大)。需要注意的是,濾波器的輸出是一個畫素值,該值用來替換點(x,y)處的畫素值,點(x,y)是濾波視窗的中心位置。

在描述自適應中值濾波器時需要用到如下的符號:

  • Zmin=Sxy中的最小灰度值
  • Zmax=Sxy中的最大灰度值
  • Zmed=Sxy中的灰度值的中值
  • Zxy表示座標(x,y)處的灰度值
  • Smax=Sxy允許的最大視窗尺寸

自適應中值濾波器有兩個處理過程,分別記為:A和B。 
A : 
A1 = ZmedZmin 
A2 = ZmedZmax 
如果A1 > 0 且 A2 < 0,跳轉到 B; 
否則,增大視窗的尺寸 
如果增大後窗口的尺寸 Smax,則重複A過程。 
否則,輸出Zmed

B
B1 = ZxyZmin 
B2 = ZxyZmax 
如果B1 > 0 且 B2 < 0,則輸出Zxy