圖像處理 - 濾波器 Filter

濾波器是圖像處理和計算機視覺中最基礎的運算,可以實現很多種不同的圖像變換。

中值濾波

中值濾波(Median filter)是一種典型的非線性濾波技術,基本思想是用像素點鄰域灰度值的中值來代替該像素點的灰度值,該方法在去除脈衝噪聲、椒鹽噪聲的同時又能保留圖像邊緣細節,.

中值濾波是基於排序統計理論的一種能有效抑制噪聲的非線性信號處理技術,其基本原理是把數字圖像或數字序列中一點的值用該點的一個鄰域中各點值的中值代替,讓周圍的像素值接近的真實值,從而消除孤立的噪聲點,對於斑點噪聲(speckle noise)和椒鹽噪聲(salt-and-pepper noise)來說尤其有用,因爲它不依賴於鄰域內那些與典型值差別很大的值。中值濾波器在處理連續圖像窗函數時與線性濾波器的工作方式類似,但濾波過程卻不再是加權運算。

中值濾波在一定的條件下可以克服常見線性濾波器如最小均方濾波、方框濾波器、均值濾波等帶來的圖像細節模糊,而且對濾除脈衝干擾及圖像掃描噪聲非常有效,也常用於保護邊緣信息, 保存邊緣的特性使它在不希望出現邊緣模糊的場合也很有用,是非常經典的平滑噪聲處理方法。

中值濾波器與均值濾波器比較的 優勢 :在均值濾波器中,由於噪聲成分被放入平均計算中,所以輸出受到了噪聲的影響,但是在中值濾波器中,由於噪聲成分很難選上,所以幾乎不會影響到輸出。因此同樣用3x3區域進行處理,中值濾波消除的噪聲能力更勝一籌。中值濾波無論是在消除噪聲還是保存邊緣方面都是一個不錯的方法。  

中值濾波器與均值濾波器比較的 劣勢 :中值濾波花費的時間是均值濾波的5倍以上。

源代碼 “\opencv\sources\modules\imgproc\src\smooth.cpp”的第1653行開始

雙邊濾波

雙邊濾波(Bilateral filter)是一種非線性的濾波方法,是結合圖像的空間鄰近度和像素值相似度的一種折衷處理,同時考慮空域信息和灰度相似性,達到保邊去噪的目的。具有簡單、非迭代、局部的特點。

雙邊濾波器的好處是可以做邊緣保存(edge preserving),一般過去用的維納濾波或者高斯濾波去降噪,都會較明顯地模糊邊緣,對於高頻細節的保護效果並不明顯。雙邊濾波器顧名思義比高斯濾波多了一個高斯方差sigma-d,它是基於空間分佈的高斯濾波函數,所以在邊緣附近,離的較遠的像素不會太多影響到邊緣上的像素值,這樣就保證了邊緣附近像素值的保存。但是由於保存了過多的高頻信息,對於彩色圖像裏的高頻噪聲,雙邊濾波器不能夠乾淨的濾掉,只能夠對於低頻信息進行較好的濾波。

在雙邊濾波器中,輸出像素的值依賴於鄰域像素值的加權值組合:

而加權係數w(i,j,k,l)取決於定義域核和值域核的乘積。

其中定義域核表示如下(如圖):

定義域濾波 對應圖示:

值域核表示爲:

值域濾波:

兩者相乘後,就會產生依賴於數據的雙邊濾波權重函數:


bilateralFilter函數的源碼 也比較冗長,在“D:\Program Files\opencv\sources\modules\imgproc\src\smooth.cpp”源碼文件中。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章