guided filter(導向濾波)導讀


本文爲筆者閱讀Kaiming He於2013年發表的guided image filtering時的筆記和實驗合集,作者在文中省略的一些步驟給予了補充,在此記錄下來,希望對後來者有益。
本文分爲如下兩部分:
1.論文閱讀及算法原理介紹
2.基於matlab的簡單實現


  1. 論文閱讀及算法原理介紹
    先給出線性移-變濾波器的基本概念:給出輸入圖像p,指導圖像I,得到輸出圖像,輸入圖像p和指導圖像I可以是同一幅圖像。濾波之後的圖像可以用如下加權公式表示:
    qi=jWij(I)pj q_i=\sum_j^{}W_{ij}(I)p_j
    其中ii爲當前濾波點的索引,jj爲濾波器模版覆蓋的所有像素點的索引,濾波器(卷積核)WijW_{ij}是指導圖像II的函數,與輸入圖像pp獨立。

可以用如下圖簡單解釋上述過程:
在這裏插入圖片描述

所謂線性移-變濾波器包含兩個性質:(1)線性性:濾波器通過線性加權進行濾波;(2)移-變:濾波其係數WijW_{ij}隨着圖像中心的變化而變化,與之相對應的是移-不變濾波器,如傳統的高斯濾波器/邊緣檢測算子等濾波器,一旦濾波器定下來不隨着像素點的移動而改變。上述公式中的下標索引ii爲紅色像素點所對應的空間位置(下標),下標索引jj爲所有藍色和黃色像素點對應的空間位置。

一個簡單的線性移-變濾波器就是聯合雙邊濾波器,示意圖如下圖:
在這裏插入圖片描述
其核函數爲:
Wijbf(I)=1Kiexp(xixj2σs2)exp(IiIj2σr2) W_{ij}^{bf}(I)=\frac{1}{K_i}\exp\left(-\frac{\Vert{x_i-x_j}\Vert^2}{\sigma_s^2}\right)\exp\left(-\frac{\Vert{I_i-I_j}\Vert^2}{\sigma_r^2}\right)
其中KiK_i爲歸一化係數,與傳統的雙邊濾波器不同的是,這裏在range方向上用指導圖像II來衡量相似度,如果range方向上相似度用原始圖像來作指導,那麼聯合濾波器就退化爲傳統的雙邊濾波器。
下面給出guided filter的建模及推導過程:guided filter是指導圖像和輸出圖像在一個局部區域內的線性模型,即假定輸出圖像qq是指導圖像II在以kk爲中心的窗口ωk\omega_k線性變換:
qi=akIi+bk,iωk q_i=a_kI_i+b_k,\quad\forall i \in \omega_k
這裏(ak,bk)(a_k,b_k)在窗口ωk\omega_k中爲常數。對公式兩邊求導可知q=aI\nabla q=a\nabla I,因此如果指導圖像II中爲邊緣的地方,輸出圖像也有邊緣。

在這裏插入圖片描述

通常的加性去噪模型假設輸入圖像pp爲輸出圖像qq(恢復圖像)加上某些分量nn(這裏的nn可以理解成噪聲或者某些細小的結構或振盪,比如紋理),因此有如下模型:
pi=qi+ni p_i=q_i+n_i
寫成輸出圖像的形式:
qi=pini q_i=p_i-n_i
guided filter建模的思想在於尋找這樣(ak,bk)(a_k,b_k),使得qi=akIi+bkq_i=a_kI_i+b_k指導濾波之後的輸出圖像qiq_i和輸入圖像儘可能相似(差異儘可能小),基於這樣的想法,很自然就有了將ωk\omega_k窗口中濾波後的qiq_i和濾波之前的pip_i的所有誤差(差異)都累加起來,使得誤差最小的(ak,bk)(a_k,b_k)就是我們要找的guided filter,於是很自然就建立的下面的模型:
minE(ak,bk)=miniωk(akIi+bkpi)2 \min E(a_k,b_k)=\min\sum_{i\in\omega_k}(a_kI_i+b_k-p_i)^2
仔細觀察這個模型會發現一個問題,我們尋找輸出qiq_i是爲了在結構上儘可能地和輸入圖像pip_i相似,但是如果通過求解這個最小化模型給出的結果使得qiq_ipip_i相等,即輸出圖像和輸入圖像一模一樣,那麼做這個濾波就失去了意義,在該式中,令bk=0,ak=pi/Iib_k=0,a_k=p_i/I_i即可得到描述的結果,此時minE(ak,bk)=0\min E(a_k,b_k)=0,此乃我們在機器學習/模式識別/人工智能中常說的“過擬合”。於是需要考慮的是改造上面的模型,給它引入一個懲罰項,讓輸出圖像qiq_i儘可能的和輸入圖像pip_i儘可能相似,但又不能讓它們完全相等,於是給模型加上一個L2L^2範數的正則項,並且給正則項加入一個ϵ\epsilon來控制懲罰的強度,爲什麼L2L^2範數的正則項可以達到“泛化”和防止“過擬合”的目的,後面會給出一個詳細的解釋。於是上面的模型修正爲:
minE(ak,bk)=miniωk((akIi+bkpi)2+ϵak2) \min E(a_k,b_k)=\min \sum_{i\in\omega_k}((a_kI_i+b_k-p_i)^2+\epsilon a_k^2)
這樣纔得到了作者在文中給出的模型,這個模型的求解很簡單,不用去查所謂的迴歸分析等內容,這是一個無約束的二次最優話問題,顯然是一個凸優化問題,極值點乃最優點,簡單運用一下高等數學中的極值點的必要條件即可求解出(ak,bk)(a_k,b_k),這裏送佛送到西,給出推導的詳細過程:
使得E(ak,bk)E(a_k,b_k)取得極小值的必要條件是:
E(ak,bk)ak=0E(ak,bk)bk=0 \frac{\partial E(a_k,b_k)}{\partial a_k}=0\\ \frac{\partial E(a_k,b_k)}{\partial b_k}=0
E(ak,bk)E(a_k,b_k)的具體模型有:
KaTeX parse error: Expected 'EOF', got '&' at position 43: …{\partial a_k} &̲=\sum_{i\in\ome…
先對bkb_k的偏導數進行化簡:
iωk(akIi+bkpi)=0iωkbk=iωk(piakIi)iωkbk=iωkpiakiωk(Ii) \begin{aligned} & \sum_{i\in\omega_k}(a_kI_i+b_k-p_i)=0 \\ & \sum_{i\in\omega_k}b_k=\sum_{i\in\omega_k}(p_i-a_kI_i) \\ & \sum_{i\in\omega_k}b_k=\sum_{i\in\omega_k}p_i-a_k\sum_{i\in\omega_k}(I_i) \\ \end{aligned}
ωk\omega_k中像素的個數有ω\lvert\omega\rvert個,那麼
bkω=iωkpiakiωkIi b_k\lvert\omega\rvert=\sum_{i\in\omega_k}p_i-a_k\sum_{i\in\omega_k}I_i
兩邊同時除以ω\lvert\omega\rvert
bk=iωkpiakiωkIiω=pkakμk b_k=\frac{\sum_{i\in\omega_k} p_i-a_k\sum_{i\in\omega_k}I_i}{\lvert\omega\rvert}=\overline{p}_k-a_k\mu_k
在對aka_k的偏導數進行化簡
iωkIi(akIi+bkpi)+ϵak=0iωk(akIi2+IibkIipi+ϵak)=0 \begin{aligned} &\sum_{i\in\omega_k}I_i(a_kI_i+b_k-p_i)+\epsilon a_k = 0 \\ &\sum_{i\in\omega_k}(a_kI_i^2+I_ib_k-I_ip_i+\epsilon a_k) = 0 \end{aligned}
將上面求出的bkb_k公式帶入該式,有
iωkakIi2+Ii(pkakμk)Iipi+ϵak=0iωk(Ii2Iiμk+ϵ)ak+Iipi=0akiωk(Ii2Iiμk+ϵ)=iωk(IipiIipk) \begin{aligned} &\sum_{i\in\omega_k}a_kI_i^2+I_i(\overline{p}_k-a_k\mu_k)-I_ip_i+\epsilon a_k=0\\ &\sum_{i\in\omega_k}(I_i^2-I_i\mu_k+\epsilon)a_k+I_ip_i=0\\ &a_k\sum_{i\in\omega_k}(I_i^2-I_i\mu_k+\epsilon)=\sum_{i\in\omega_k}(I_ip_i-I_i\overline{p}_k) \end{aligned}

ak=iωk(IipiIipk)iωk(Ii2Iiμk)+iωkϵ=iωkIipipkiωkIiiωk(Ii2Iiμk)+ωϵ=1ωiωkIipipkiωkIiω1ωiωk(Ii2Iiμk)+ϵ=1ωiωkIipipkμk1ωiωk(Ii2Iiμk)+ϵ=1ωiωkIipipkμk1ωiωkIi2μkiωkIiω+ϵ=1ωiωkIipipkμk1ωiωkIi2μkiωkIiω+ϵ=1ωkiωkIipipkμk1ωkiωkIi2μkμk+ϵ=1ωiωIipipkμk1ωiωkIi2μk2+ϵ \begin{aligned} a_k & = \frac{\sum_{i\in\omega_k} (I_i p_i - I_i \overline{p}_k)}{\sum_{i\in\omega_k}(I_i^2-I_i\mu_k)+\sum_{i\in\omega_k}\epsilon} \\ & = \frac{\sum_{i\in\omega_k}I_i p_i - \overline{p}_k\sum_{i\in\omega_k}I_i}{\sum_{i\in\omega_k}(I_i^2-I_i\mu_k)+|\omega|\epsilon} \\ & = \frac{\frac{1}{|\omega|} \sum_{i\in\omega_k}I_i p_i-\frac{\overline{p}_k\sum_{i\in\omega_k}I_i}{|\omega|}}{\frac{1}{\omega}\sum_{i\in\omega_k}(I_i^2-I_i\mu_k)+\epsilon} \\ & = \frac{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i p_i - \overline{p}_k\mu_k}{\frac{1}{|\omega|}\sum_{i\in\omega_k}(I_i^2-I_i\mu_k)+\epsilon} \\ & = \frac{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i p_i - \overline{p}_k\mu_k}{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i^2-\mu_k\frac{\sum_{i\in\omega_k}I_i}{|\omega|}+\epsilon} \\ & = \frac{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i p_i-\overline{p}_k\mu_k}{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i^2-\mu_k\frac{\sum_{i\in\omega_k}I_i}{|\omega|}+\epsilon} \\ & = \frac{\frac{1}{|\omega_k|}\sum_{i\in\omega_k}I_i p_i - \overline{p}_k\mu_k}{\frac{1}{|\omega_k|}\sum_{i\in\omega_k}I_i^2-\mu_k\mu_k+\epsilon} \\ & = \frac{\frac{1}{|\omega|}\sum_{i\in\omega}I_i p_i - \overline{p}_k\mu_k}{\frac{1}{|\omega|}\sum_{i\in\omega_k}I_i^2-\mu_k^2+\epsilon} \\ \end{aligned}

由方差定義,
E(XX)2=EX22EXX+EX2=EX22XEX+EX2=EX22XEX+EX2=EX22XX+X2=EX2X2 \begin{aligned} E(X-\overline{X})^2 & = EX^2-2EX\overline{X}+E\overline{X}^2 \\ & = EX^2-2\overline{X}EX+E\overline{X}^2 \\ & = EX^2-2\overline{X}EX+E\overline{X}^2 \\ & = EX^2-2\overline{X}\overline{X} + \overline{X}^2 \\ & = EX^2 -\overline{X}^2 \\ \end{aligned}
於是有,
ak=1ωiωkIipipkμkσk2+ϵ a_k=\frac{\frac{1}{|\omega|}\sum_{i\in\omega_k}{I_i p_i}-\overline{p}_k\mu_k}{\sigma_k^2+\epsilon}
至此,算法的建模和求解的理論推導過程完畢。
guided filter的計算算法的僞代碼描述如下:
在這裏插入圖片描述
嚴格來說,至此算法部分已經結束,後面部分從理論和應用角度來理解guided filter在實際的濾波過程中和傳統濾波器的關係及其相對於傳統濾波器所體現出來的優點。
邊緣保持特性:guided filter在用作平滑濾波器具有邊緣保持特性,在此我麼以I=pI=p的特殊情況爲例,從理論角度分析guided filter的邊緣保持性質。
I=pI=p代入(ak,bk)(a_k,b_k)的求解公式中,有
ak=σk2σk2+ϵbk=(1ak)μk \begin{aligned} &a_k=\frac{\sigma_k^2}{\sigma_k^2+\epsilon}\\ &b_k=(1-a_k)\mu_k \end{aligned}
ϵ=0\epsilon=0時,有ak=1,bk=0a_k=1,b_k=0,此時濾波後的圖像爲qi=akIi+bk=Ii=piq_i=a_kI_i+b_k=I_i=p_i等價於完全沒有濾波。
ϵ>0\epsilon>0時,有如下兩種情況:
(1)指導圖像像素值在ωk\omega_k的小窗口內有劇烈變化,即高方差區域,σk2\sigma_k^2遠大於ϵ\epsilon
ak=1,bk=0a_k=1,b_k=0
濾波後圖像爲:
qi=akIi+bkIipiq_i=a_kI_i+b_k\approx I_i \approx p_i
也就是說在變化明顯的區域,該區域濾波後幾乎保持不變,從而具有很好的邊緣保持特性。
(2)指導圖像像素在ωk\omega_k的小窗口內變化不大,即平坦區域,σk2\sigma_k^2接近於0,σk2\sigma_k^2遠小於ϵ\epsilon
ak0,bkμka_k \approx 0, b_k \approx \mu_k
濾波後圖像爲:
qi=akIi+bkμkq_i = a_kI_i + b_k \approx \mu_k
也就是說在變化不怎麼明顯的平坦區域,該區域濾波後相當於對該區域做了均值濾波,從而對平坦區域就有很好的平滑作用。
將guided filter的參數和雙邊濾波器類比:rσs,ϵσr2r \leftrightarrow \sigma_s, \epsilon \leftrightarrow \sigma_r^2參數支箭有一個廣義上類似的作用。
在本部分的開頭碩大guided filter時一個線性移-變濾波器,這裏我們結合公式推導來給出guided filter的線性移-變濾波器形式,並給出其物理上的解釋。移變濾波器公式爲:
qi=jWij(I)pjq_i = \sum_{j}{W_{ij}(I)p_j}
兩邊同時對pjp_j求偏導數,即可推出guided filter作爲線性移-變濾波器的具體公式:
Wij(I)=qipjW_{ij}(I)=\frac{\partial q_i}{\partial p_j}
qi=akIi+bk=1ωkiinwkakIi+pk=1ωkiinwkak(Iiμk)+pkq_i=a_kI_i+b_k=\frac{1}{|\omega|}\sum_{k|i in w_k}{a_kI_i + \overline p_k} = \frac{1}{|\omega|}\sum_{k|i in w_k}{a_k(I_i-\mu_k)} + \overline p_k以及aka_k的具體公式代入上式,有
Wij(I)=1ωk(akpj(Iiμk)+pkpj) W_{ij}(I)=\frac{1}{\omega}\sum_{k}{(\frac{\partial a_k}{\partial p_j}(I_i-\mu_k)+\frac{\partial \overline p_k}{\partial p_j})}
pkpj=1ω(p1++pω)pj=1ωδkωk\frac{\partial \overline p_k}{\partial p_j}=\frac{1}{|\omega|}\frac{\partial (p_1+\cdots+p_{|\omega|})}{\partial p_j} = \frac{1}{|\omega|}\delta_k \in \omega_k
akpj=1σk2+ϵ(1ωiωkpipjIiqkpjμk)=1σk2+ϵ(1ωIj1ωμk)δkwj \begin{aligned} \frac{\partial a_k}{\partial p_j} & = \frac{1}{\sigma_k^2 + \epsilon}(\frac{1}{|\omega|}\sum_{i\in\omega_k}\frac{\partial p_i}{\partial p_j}I_i - \frac{\partial \overline q_k}{\partial p_j}\mu_k) & = \frac{1}{\sigma_k^2 + \epsilon}(\frac{1}{|\omega|}I_j - \frac{1}{|\omega|}\mu_k)\delta_{k\in w_j} \end{aligned}
將二式代入移-變濾波器中,有
Wij(I)=qipj=1ω2iωi,jωj(1+(Iiμk)(Ijμk)σk2+ϵ) W_{ij}(I)=\frac{\partial q_i}{\partial p_j} = \frac{1}{|\omega|^2}\sum_{i\in\omega_i,j\in\omega_j}(1+\frac{(I_i-\mu_k)(I_j-\mu_k)}{\sigma_k^2+\epsilon})
在這裏插入圖片描述
IiμkI_i-\mu_kIjμkI_j-\mu_k符號相同,即在以像素塊ωk\omega_k的均值μk\mu_k的度量下符號相同,即像素點相似,那麼對應的移-變濾波器係數大,從而加權的權重更大;反之,符號相反,差異很大,權重係數小。從而,從濾波器的角度也解釋了guided filter具有邊緣保持和平滑濾波特性。如果把圖像理解爲隨機場的話:
(Iiμk)(Ijμk)σk2+ϵ \frac{(I_i-\mu_k)(I_j-\mu_k)}{\sigma_k^2+\epsilon}
可以理解爲調製後的相關函數,相關函數越逼近1,說明相關性越大,從而兩個像素對應的像素相似度越高,反之越逼近-1,說明相關性越小,圖像相似度越小。

Guided filter的梯度保持特性:
設輸入信號爲pp,它的的base部分爲qq,細節部分爲d=pqd=p-q,在I=pI=p時,ak=σk2σk2+ϵ<1a_k=\frac{\sigma_k^2}{\sigma_k^2+\epsilon}<1
那麼
xd=xpxq=(1ak)xp \partial_x d = \partial_x p - \partial_x q = (1-a_k)\partial_x p
這說明細節的梯度方向和原始信號的梯度方向一致,不會出現梯度方向反轉。
在這裏插入圖片描述
上圖中bilateral filter的細節部分出現了明顯的梯度反轉,而guided filter則保持梯度方向不變。這反應在圖像上就是在邊緣部分,一個有或多或少的振鈴現象,另一個則能夠避免這樣的現象出現。

guide filter面對三位彩色圖像的情形也很容易推廣,在這裏就不再贅述了。

這裏補充一下爲什麼在建模的時候加入L2L^2範數正則化:
很多做過病態反問題的人給出的回答時,正則化的引入可以帶來更穩定的數值解,而不至於在輸入引入很小的擾動時,數值解很大地偏離了理論解。
做模式識別的人給出的回答是正則化的引入可以防止過擬合,給訓練系統更好的泛化能力。在前面的建模部分,也分析了guided filter在指導圖像和輸入圖像一致時,L2L^2範數正則化在一定程度上防止了過擬合情形的出現,下面給出L2L^2範數正則化防止過擬合的理論依據。
假定最優化模型已經建立,最優化目標函數爲:J(ω;X,y)J(\omega;X,y),給目標函數加入L2L^2範數正則項ω=α2ωTω||\omega||=\frac{\alpha}{2}\omega^T\omega,新的目標函數爲:
Jnew(ω;X,y)=ωJ(ω;X,y)+αω J_{new}(\omega;X,y)=\nabla_\omega J(\omega;X,y)+\alpha\omega
對其求梯度,有
ωJnew(ω;X,y)=ωJ(ω;X,y)+αω \nabla_{\omega}J_{new}(\omega;X,y)=\nabla_{\omega}J(\omega;X,y)+\alpha\omega
對於ω=argminωJ(ω;X,y)\omega^{\star}=arg\mathop{min}\limits_{\omega}J(\omega;X,y)現在我們將多元函數J(ω;X,y)J(\omega;X,y)ωstar\omega^{star}做一個二階的泰勒近似,於是有:
J~(ω)=J(ω)+12(ωω)TH(ωω) \tilde{J}(\omega)=J(\omega^{\star})+\frac{1}{2}(\omega-\omega^{\star})^TH(\omega-\omega^{\star})
這裏H爲J的Hessian矩陣,對其求偏導數,沒有梯度項時因爲極點值必要條件:梯度在極點爲零,有
ωJ~(ω)=H(ωω) \nabla_{\omega}\tilde{J}(\omega)=H(\omega-\omega^{\star})
在極點值處,顯然上式爲零,現在考慮加入L2L^2範數正則項,
αω+H(ωω)=0 \alpha\omega+H(\omega-\omega^{\star})=0
(H+αI)ω=Hω (H+\alpha I)\omega=H\omega^{\star}
ω=(H+αI)1ω \omega=(H+\alpha I)^{-1}\omega^{\star}
α\alpha很接近0時,此時的ω\omega和沒有正則項的極值點很接近,那麼α\alpha逐漸增大呢?
由於Hessian矩陣時一個實的對稱矩陣,因此可以對其做正交分解,即存在正交矩陣Q和對角矩陣Λ\Lambda使得H=QΛQTH=Q\Lambda Q^T,於是有
ω=(QΛQT+αI)1QΛQTω=[Q(Λ+αI)QT]1QΛQTω=Q(Λ+αI)1QTQΛQTω=Q(Λ+αI)1ΛQTω \begin{aligned} \omega & = (Q\Lambda Q^T + \alpha I)^{-1}Q\Lambda Q^T \omega^{\star} \\ & = [Q(\Lambda+\alpha I)Q^T]^{-1}Q\Lambda Q^T\omega^{\star} \\ & = Q(\Lambda+\alpha I)^{-1}Q^TQ\Lambda Q^T \omega^{\star} \\ & = Q(\Lambda+\alpha I)^{-1}\Lambda Q^T\omega^{\star} \\ \end{aligned}
(Λ+αI)1Λ=(λ1+αλ2+αλn+α)1(λ1λ2λn)=(λ1λ1+αλ2λ2+αλnλn+α) \begin{aligned} (\Lambda+\alpha I)^{-1}\Lambda &= \begin{pmatrix} \lambda_1+\alpha & & & \\ & \lambda_2+\alpha & & \\ & & \ddots & \\ & & & \lambda_n+\alpha \\ \end{pmatrix}^{-1} \begin{pmatrix} \lambda_1 & & & \\ & \lambda_2 & & \\ & & \ddots & \\ & & & \lambda_n \\ \end{pmatrix} \\ &= \begin{pmatrix} \frac{\lambda_1}{\lambda_1+\alpha} & & & \\ & \frac{\lambda_2}{\lambda_2+\alpha} & & \\ & & \ddots & \\ & & & \frac{\lambda_n}{\lambda_n+\alpha} \\ \end{pmatrix} \end{aligned}
這說明α\alpha對特徵值起到了衰減調製作用,遠小於α\alpha的特徵值,在α\alpha的調製下幾乎不能對系統特徵起到作用,而想法,在α\alpha的調製下保留了那些相對於α\alpha同一數量級甚至更高數量級的特徵。這纔是L2L^2正則化得以能夠進行繁華的理論原因。這裏的ω\omega就是guided filter濾波器中的aka_kα\alpha即爲guided filter中的ϵ\epsilon

到這裏權重調製的作用已經很清晰了,可能有的讀者線性代數功底不夠,更進一步完善一下細節。
Q=[q1,q2,,qn]Q=[q_1,q_2,\cdots,q_n],分量爲列向量,那麼QT=[q1,q2,,qn]T=Q^T=[q_1,q_2,\cdots,q_n]^T=,代入ω\omega中,有

ω=Q(Λ+αI)QTω=(q1,q2,,qn)(λ1λ1+αλ2λ2+αλnλn+α)(q1Tq22qn2)ω=(i=1nλiλi+αqiqiT)ω \begin{aligned} \omega & = Q(\Lambda+\alpha I)Q^T\omega^{*} \\ & = \begin{pmatrix} q_1,q_2,\cdots,q_n \end{pmatrix} \begin{pmatrix} \frac{\lambda_1}{\lambda_1+\alpha} & & & \\ & \frac{\lambda_2}{\lambda_2+\alpha} & & \\ & & \ddots & \\ & & & \frac{\lambda_n}{\lambda_n+\alpha} \end{pmatrix} \begin{pmatrix} q_1^T \\ q_2^2 \\ \vdots \\ q_n^2 \\ \end{pmatrix}\omega^{*} & = (\sum_{i=1}^{n}\frac{\lambda_i}{\lambda_i+\alpha}q_i q_i^T) * \omega^{*} \\ \end{aligned}

到這裏就非常清晰了,如果α\alpha遠大於某些特徵值,那麼這個值對應的權重爲11+0\frac{1}{1+\infty}\approx 0,對應的特徵在正則項的調製下可以忽略不計,反之則該特徵值對應的特徵很強,對應的權重也很大,是主要特徵。反映到guided filter中,就對應了ϵ\epsilonaka_k的調製作用,指導圖像的ωk\omega_k圖像塊的方差就對應了這裏的特徵值λ\lambda,ϵ/σk2\epsilon / \sigma_k^2的相對大小,就決定了對應的權重調製到什麼程度。

2.基於matlab的簡單實現
該部分僅僅從guided filter的原理層面對其進行matlab簡單實現,筆者一直認爲matlab只是驗證算法正確性的工具,代碼儘可能貼近原理,算法性能優化及性能對比還是以c/cpp等工程應用編程語言爲準,其O(N)的快速算法這裏不涉及。matlab自帶的imfilter本身經過加速,用for循環進行計算反而會降低其速度。
爲了方便和原理對比,這裏再貼一下算法的僞代碼描述:
在這裏插入圖片描述
單通道灰度圖像實現

function q = guided_filter(I, p, r, epsilon)
% demo realization of guided filter
% just used to illustrate the principle of guided filter
w = fspecial('average', 2*r+1);
mean_I = imfilter(I, w);
mean_p = imfilter(p, w);
corr_I = imfilter(I.*I, w);
corr_Ip = imfilter(I.*p, w);
var_I = corr_I - mean_I .* mean_I;
cov_Ip = corr_Ip - mean_I .* mean_p;
a = cov_Ip ./ (var_I + epsilon);
b = mean_p - a .* mean_p;
mean_a = imfilter(a, w);
mean_b = imfilter(b, w);
q = mean_a .* I + mean_b;
end

參考文獻:

  1. KaiMing He, Jian Sun and Xiaoou Tang, Guided Image Filtering, IEEE Trans on PAMI, Vol, No.6, June 2013, P1397-1409
  2. Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, Chap7 Regularization for Deep Learning, P231-234.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章