引導濾波GuidedFilter

2021-10-11 23:17:33 字數 1689 閱讀 2152

何愷明讀博士提出基於暗通道採用引導濾波去霧演算法獲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中的和,再除以視窗中畫素的個數,剛好就是盒式濾波,因此我們可以將...