何凱明大神的代表作之一
論文地址:Guided Image Filtering
導向濾波的一般表達方式
qi=j∑Wij(I)pj
其中
q表示輸出,
p表示輸入,
I表示導向圖。
先驗假設
假設在局部範圍內,輸出圖與導向圖的關係可以用一個線性模型表示:
qi=akIi+bk,∀i∈ωk
另外輸出圖是由輸入圖減去噪聲(需要被濾掉的部分)得到
qi=pi−ni
能量函數和求解
我們需要做的就是最小化能量函數
E(ak,bk)=i∈ωk∑((akIi+bk−pi)2+ϵak2)
其中
ϵ爲正則項,防止係數
ak過大。
對
ak和
bk求導:
∂ak∂E=2i∑N((−pi+akIi+bk)Ii+ϵak)
∂bk∂E=−2i∑N(pi−akIi−bk)
先求取
bk,令偏導數爲零:
0=i∑N(pi−akIi−bk)⇒Nbk=i∑N(pi−akIi)⇒bk=N1i∑N(pi−akIi)⇒bk=N1i∑Npi−akN1i∑NIi⇒bk=pkˉ−akμk
其中
pkˉ爲輸入圖窗口內的平均值,
μk爲導向圖在窗口內的平均值。
同理,再來求
ak
0=i∑N((−pi+akIi+bk)Ii+ϵak)⇒0=∑−piIi+∑akIi2+∑bkIi+∑εak⇒∑piIi−∑bkIi=ak∑(Ii2+ϵ)⇒∑piIi−∑(pk−akμk)Ii=ak∑(Ii2+ϵ)⇒ak=∑(Ii2−μkIi+ϵ)∑(piIi−pkIi)⇒ak=∑Ii2−N1∑Ii∑Ii+ϵ∑(piIi)−N1∑pi∑Ii=N1∑Ii2−N1∑IiN1∑Ii+ϵN1∑(piIi)−N1∑piN1∑Ii
根據方差和協方差公式
var(X)=n−1∑i=1n(Xi−Xˉ)2Cov(X,Y)=E[(X−E[X])(Y−E[Y])]Cov(X,Y)=E[XY]−E[X]E[Y]
可以得到
ak=Var(I)+NϵCov(p,I)=σk2+ϵCov(p,I)
當導向圖與輸入圖相同時,導向濾波就變成了以輸入圖自身爲導向的保邊濾波。上面表達式就會變成
akbk=σk2+εσk2=(1−ak)μk
- 當遇到邊緣區域,方差較大,此時
σk2>>ϵ,有
q=p
- 反之,當方差較小,
σk2<<ϵ,輸出均值
q=μk
其實更仔細思考一下,這裏對「邊緣」和「平坦」區域的定義實際上是取決於
ϵ的取值,當區域方差遠大於
ϵ時,則「定義爲」這次濾波中的邊緣區域,在濾波時會被保留,反之則是平坦區域。
思考
圖像濾波與線性迴歸的關係
線性迴歸:有一些離散點
xi,需要擬合一條直線
yi使得
ϵ=∑i(yi−(axi+b))2最小。
圖像去噪:有一些含有噪聲的像素
pi,需要擬合一個線性函數找到沒有噪聲的圖像
qi,使得
ϵ=∑i(pi−qi)2最小。
擴展
簡化計算
可以看到按照濾波公式,對於輸出的每一個像素,都需要計算輸入圖和導向圖在窗口內的均值,以此得到
ak和
bk。但是這其中有很多重複計算,此時可以通過計算經過所有覆蓋當前像素的窗口的平均
ak和
bk來計算單個像素的輸出
qi=aˉiIi+bˉi
經過這個改變之後可能無法滿足最初的
∇q=a∇I,但是仍然可以保證在強邊緣附近導向圖的信息是可以被保留下來的
∇q≈aˉ∇I。
濾波覈計算
根據最開始的一般表達式,可以知道輸出
qi是線性依賴於輸入
pi,所以要求取濾波核只需要使用
qi對
pi求導就可以。將上面表達式中的
bk替換掉,可以得到
qi=∣ω∣1k∈ωi∑(ak(Ii−μk)+pˉk)
∂pj∂qi=∣ω∣1k∈ωi∑(∂pj∂ak(Ii−μk)+∂pj∂pˉk)
其中
∂pj∂pˉk=∣ω∣1δj∈ωk=∣ω∣1δk∈ωj
是一個狄拉克函數,在窗口內部爲1,其餘地方爲0。
在根據
ak的表達式對
pj求導
∂pj∂ak=σk2+ϵ1(∣ω∣1i∈ωk∑∂pj∂piIi−∂pj∂pˉkμk)=σk2+ϵ1(∣ω∣1Ij−∣ω∣1μk)δk∈ωj
代回原式就得到了濾波核的表達式
∂pj∂qi=∣ω∣21k∈ωi,k∈ωj∑(1+σk2+ϵ(Ii−μk)(Ij−μk))
根據濾波核表達式,當像素
i和
j都在窗口內部,但處於一個邊緣的同側時(
)
\frac{\partial q_{i}}{\partial p_{j}}=\frac{1}{|\omega|^{2}} \sum_{k \in \omega_{i}, k \in \omega_{j}}\left(1+\frac{\left(I_{i}-\mu_{k}\right)\left(I_{j}-\mu_{k}\right)}{\sigma_{k}^{2}+\epsilon}\right)
∂pj∂qi=∣ω∣21k∈ωi,k∈ωj∑(1+σk2+ϵ(Ii−μk)(Ij−μk))
根據濾波核表達式,當像素
i和
j都在窗口內部,但處於一個邊緣的同側時(顏色相近),括號內後半部分的計算結果爲正,融合權重很高;反之如果處於邊緣的異側,括號內後半部分結果爲負,融合權重就會小很多。
高斯導向濾波
由於導向濾波算法採用的是均值濾波,在紋理不那麼強或是均勻紋理時,導向濾波會退化成兩個均值濾波的串聯,多次均值濾波的串聯雖然可以近似高斯濾波,但是僅兩次均值濾波還是會造成權重在x和y方向附近比其他方向稍大,如圖
這是可以在能量函數前面加一個高斯核,讓權重可以更加均勻分佈