何愷明讀博士提出基於暗通道採用引導濾波去霧演算法獲cvpr2009最佳**,現在應用面很廣、很廣;能夠克服雙邊濾波的梯度翻轉現象,在濾波後影象的細節上更優,主要美顏演算法差不多都用這個。
先貼偽**:
實現的話可以採用積分圖加速。
其中i是引導影象,p是輸入的待濾波影象,w是根據引導圖i確定的權重值,q是濾波後的輸出影象。
1、如果權重w與引導圖無關,那便是乙個常量,比如高斯濾波那種,這種我們相對就特別好理解。權重確定:2、如果權重與引導圖相關,我們的影象就會受到引導圖影響,比如雙邊濾波中,我們採用和中心畫素差值作為引導,但這嚴格上還算不上引導圖。只能只能時有影響,有引導。
μk是視窗內畫素點的均值,i
ii_i
ii指位於視窗中心的畫素值,i
ji_j
ij指視窗內j位置的畫素點的值,σk2
σ_k^2
σk2
代表視窗內畫素點的方差,ε是乙個懲罰值。
(ii−μk)
(ij−
μk)(i_i-μ_k)(i_j-μ_k)
(ii−μ
k)(
ij−
μk)
這一項表明,如果中心畫素值i
ii_i
ii小於均值時,i
ji_j
ij如果約大於均值,該項值就是負值,權重1+(-0.幾)就會越小
ε懲罰項的值越大,則分母越大,引導圖對影象的影響就越小,極端情況(比如正無窮),wij但是,實際上我們不用搞得太複雜,我們直接假設該點輸出值和該點引導圖的值是線性關係:w_wi
j就將退化為1/w
21/w^2
1/w2
,這個w
ww呢,實際上就是視窗邊長,也就是說極端情況下會退化為均值濾波器
然後我們採用最小二乘去估計出ak、
bka_k、b_k
ak、bk
兩個係數即可:
a的分子為i和p的協方差,分母部分為i的方差加上截斷值ε,b的值為p的均值減去a乘以i的均值。可以看出當a值很小時,b約等於視窗內畫素點的均值pk,近似於均值濾波。而當a值很大時,輸出則主要取決於a*▽i的大小,梯度資訊能夠得到保留。
更多詳細參考:【拜小白opencv】33-平滑處理6——引導濾波/導向濾波(guided filter)
雙邊濾波與引導濾波
雙邊濾波 雙邊濾波很有名,使用廣泛,簡單的說就是一種同時考慮了畫素空間差異與強度差異的濾波器,因此具有保持影象邊緣的特性。先看看我們熟悉的高斯濾波器 其中w是權重,i和j是畫素索引,k是歸一化常量。公式中可以看出,權重只和畫素之間的空間距離有關係,無論影象的內容是什麼,都有相同的濾波效果。再來看看雙...
保邊濾波器 雙邊濾波與引導濾波
雙邊濾波 雙邊濾波很有名,使用廣泛,簡單的說就是一種同時考慮了畫素空間差異與強度差異的濾波器,因此具有保持影象邊緣的特性。先看看我們熟悉的高斯濾波器 其中w是權重,i和j是畫素索引,k是歸一化常量。公式中可以看出,權重只和畫素之間的空間距離有關係,無論影象的內容是什麼,都有相同的濾波效果。再來看看雙...
引導濾波的OpenCV實現
實現這種演算法的關鍵思想是盒式濾波 box filter 而且必須是通過積分圖來實現的盒式濾波,否則不可能與視窗大小無關,好在opencv的boxfilter函式滿足這個要求。再看看引導濾波的公式 先計算a k的分子,ip 在視窗w k中的和,再除以視窗中畫素的個數,剛好就是盒式濾波,因此我們可以將...