本文從數學上推導導向濾波的算法,其算法的具體實如今下一篇導向濾波算法的實現介紹。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在邊緣的同一側,(gi-μk)和(gj-μk)符號相同,而當它們在邊緣的兩側時則符號不一樣。因此Wij(G)當兩個像素點在邊緣的兩側時比在相同邊時要小得多。這就說明隔着邊緣的時候,pj對結果的貢獻很小,窗口像素不會平均到一塊兒。而當j和i在邊緣的同側時,輸出像素qi是同側像素的加權平均值。加權係數由導向圖G決定。所以能夠看到,導向濾波確實能夠起到保留邊緣的做用。