1. 程式人生 > >雙邊濾波和引導濾波的原理

雙邊濾波和引導濾波的原理

效果 高斯函數 簡單的 情況 通過 其中 明顯 算法 src

雙邊濾波很有名,使用廣泛,簡單的說就是一種同時考慮了像素空間差異與強度差異的濾波器,因此具有保持圖像邊緣的特性。

先看看我們熟悉的高斯濾波器

技術分享

其中W是權重,i和j是像素索引,K是歸一化常量。公式中可以看出,權重只和像素之間的空間距離有關系,無論圖像的內容是什麽,都有相同的濾波效果。

再來看看雙邊濾波器,它只是在原有高斯函數的基礎上加了一項,如下

技術分享

其中 I 是像素的強度值,所以在強度差距大的地方(邊緣),權重會減小,濾波效應也就變小。總體而言,在像素強度變換不大的區域,雙邊濾波有類似於高斯濾波的效果,而在圖像邊緣等強度梯度較大的地方,可以保持梯度。

引導濾波

引導濾波是近三年才出現的濾波技術,知道的人還不多。它與雙邊濾波最大的相似之處,就是同樣具有保持邊緣特性。在引導濾波的定義中,用到了局部線性模型,至於該模型,可以暫時用下圖簡單的理解

技術分享

該模型認為,某函數上一點與其鄰近部分的點成線性關系,一個復雜的函數就可以用很多局部的線性函數來表示,當需要求該函數上某一點的值時,只需計算所有包含該點的線性函數的值並做平均即可。這種模型,在表示非解析函數上,非常有用。

同理,我們可以認為圖像是一個二維函數,而且沒法寫出解析表達式,因此我們假設該函數的輸出與輸入在一個二維窗口內滿足線性關系,如下

技術分享

其中,q是輸出像素的值,I是輸入圖像的值,i和k是像素索引,a和b是當窗口中心位於k時該線性函數的系數。其實,輸入圖像不一定是待濾波的圖像本身,也可以是其他圖像即引導圖像,這也是為何稱為引導濾波的原因。對上式兩邊取梯度,可以得到

技術分享

即當輸入圖像I有梯度時,輸出q也有類似的梯度,現在可以解釋為什麽引導濾波有邊緣保持特性了。

下一步是求出線性函數的系數,也就是線性回歸,即希望擬合函數的輸出值與真實值p之間的差距最小,也就是讓下式最小

技術分享

這裏p只能是待濾波圖像,並不像I那樣可以是其他圖像。同時,a之前的系數(以後都寫為e)用於防止求得的a過大,也是調節濾波器濾波效果的重要參數。通過最小二乘法,我們可以得到

技術分享

其中,技術分享是I在窗口w_k中的平均值,技術分享是I在窗口w_k中的方差,技術分享是窗口w_k中像素的數量,技術分享是待濾波圖像p在窗口w_k中的均值。

在計算每個窗口的線性系數時,我們可以發現一個像素會被多個窗口包含,也就是說,每個像素都由多個線性函數所描述。因此,如之前所說,要具體求某一點的輸出值時,只需將所有包含該點的線性函數值平均即可,如下

技術分享

這裏,w_k是所有包含像素i的窗口,k是其中心位置。

當把引導濾波用作邊緣保持濾波器時,往往有 I = p ,如果e=0,顯然a=1, b=0是E(a,b)為最小值的解,從上式可以看出,這時的濾波器沒有任何作用,將輸入原封不動的輸出。如果e>0,在像素強度變化小的區域(或單色區域),有a近似於(或等於)0,而b近似於(或等於)技術分享,即做了一個加權均值濾波;而在變化大的區域,a近似於1,b近似於0,對圖像的濾波效果很弱,有助於保持邊緣。而e的作用就是界定什麽是變化大,什麽是變化小。在窗口大小不變的情況下,隨著e的增大,濾波效果越明顯。

在濾波效果上,引導濾波和雙邊濾波差不多,在一些細節上,引導濾波較好。引導濾波最大的優勢在於,可以寫出時間復雜度與窗口大小無關的算法(打算在之後的文章中討論),因此在使用大窗口處理圖片時,其效率更高。

雙邊濾波和引導濾波的原理