導向濾波算法分析

本文從數學上推導導向濾波的算法,其算法的具體實如今下一篇導向濾波算法的實現介紹。html

設引導圖G,輸入圖像P,輸出圖像Q。導向濾波的目標是使得輸入P和輸出Q儘可能相同,同時紋理部分和引導圖G類似。算法

爲了知足第一個目標,使輸入P和輸出Q儘量類似,咱們要求最小化平方差函數

爲了知足第二個目標,使輸出圖像Q的紋理和引導圖G的紋理類似,咱們要spa

積分獲得3d

考慮一個小窗口Wk,在Wk內認爲a,b保持不變,設爲ak,bk。Wk內的像素知足code

  (1)htm

把(1)代入第一個目標,使窗口內的像素同時知足上面兩個條件。blog

  (2)get

其中ε是一個懲罰大的ak的正則化參數。使(2)最小,知足數學

其中|W|是窗口Wk的像素總數。解得

  (3)

  (4)

若是設/pk是輸入圖P在窗口Wk的平均值,μk和σk2是引導圖G在窗口Wk的平均值和方差。咱們發現

  (5)

  (6)

其中是引導圖G和輸入圖P在Wk的協方差。

計算出ak,bk後,就能夠根據(1)來計算窗口Wk的輸出像素。對於一個像素i,輸出值qi和全部覆蓋像素i的窗口Wk有關。因此當Wk不一樣,qi的值也不相同。一個簡單的策略是平均全部可能的qi值。計算了全部覆蓋i的窗口Wk的ak,bk,全部覆蓋像素i的窗口Wk的個數爲|W|,那麼

  (7)

  (8)

其中

-----------------------------------------

特別的,當引導圖G和輸入圖像P相同的時候,導向濾波出現邊緣保持平滑特性,分析以下。當G=P時,很明顯,由式(5)(6)獲得。當ε=0時,ak=1,bk=0,即輸出和輸入圖像相同。若是ε>0,考慮兩種狀況。

第一種,高方差。若是圖像P在窗口Wk中有不少變化,那麼σk2>>ε,有ak≈1,bk≈0

第二種,平坦塊。那麼σk2<<ε,有ak≈0,bk≈μk。若是整個輸入圖像都如窗口Wk似的很平坦的,當ak,bk被平均後獲得/ak≈0,/bk≈μk,qi≈μk

這樣,當一個像素在高方差的窗口中時,它的輸出值是不變的。在平坦區域中,它的輸出值變成周圍窗口像素的平均值。具體的,高方差和平坦的標準是由參數ε控制的。若是窗口的方差比此參數小的多則被平滑,那麼方差大得多的則被保留。而窗口的大小決定了是參考周圍多大範圍的像素來計算方差和均值。

------------------------------------------

至此,已經能夠根據(5)~(8)式計算導向濾波的參數,從而計算輸出圖像Q。導向濾波的的算法實如今下一篇文章介紹。下面把導向濾波用通用濾波器核來表達進行進一步分析。

導向濾波在像素點i的濾波結果能夠表達爲一個加權平均

  (9)

其中i,j都是像素下標。濾波器核Wij是引導圖G的函數而且與P獨立。下面計算濾波器核。把(6)帶入(8)消去b獲得:

  (10)

求偏導

  (11)

其中

  (12)

當j處於窗口Wk時,不然爲0

  (13)

把(12)(13)帶入(11)獲得

  (14)

考慮含有邊緣階躍信號的圖像,若是i,j在邊緣的同一側,(gik)和(gjk)符號相同,而當它們在邊緣的兩側時則符號不一樣。因此Wij(G)當兩個像素點在邊緣的兩側時比在相同邊時要小得多。這就說明隔着邊緣的時候,pj對結果的貢獻很小,窗口像素不會平均到一塊兒。而當j和i在邊緣的同側時,輸出像素qi是同側像素的加權平均值。加權係數由導向圖G決定。所以能夠看到,導向濾波確實能夠起到保留邊緣的做用。

相關文章
相關標籤/搜索