一、概述
????????引導濾波是由何愷明等人于2010年發表在ECCV的文章《Guided Image Filtering》中提出的,后續于2013年發表。引導過濾器根據局部線性模型原理,通過考慮引導圖像的內容來計算過濾輸出,引導圖像可以是輸入圖像本身或另一個不同的圖像。具有以下特點:
- 引導濾波器可以像流行的雙邊濾波器一樣用作邊緣保留平滑算子,但在邊緣附近有更好的效果。
- 引導過濾器也是平滑之外的一個更通用的概念:它可以將引導圖像的結構傳輸到過濾輸出,從而實現新的過濾應用,例如去霧和引導羽化。
- 此外,無論核大小和強度范圍如何,引導濾波器自然具有快速且非近似的線性時間算法。目前它是最快的邊緣保留濾波器之一。
Research:
- Wikipedia中指出,引導過濾器是一種具有代表性的邊緣保持平滑技術。
- MATLAB 2014中提供了引導過濾器在這一新函數。
- OpenCV 3.0中提供了引導過濾器在這一新函數。
Related Publications:
Guided Image Filtering, by Kaiming He, Jian Sun, and Xiaoou Tang, in?ECCV?2010 .
Guided Image Filtering, by Kaiming He, Jian Sun, and Xiaoou Tang, in?TPAMI?2013.
See Also:
Fast Guided Filter, by Kaiming He and Jian Sun, in arXiv 2015.
Resources:
ECCV 2010 presentation slides
Guided Filter:?Code
Fast Guided Filter:?Code
二、原理
????????引導濾波的定義中,用到了局部線性模型,該模型認為,某函數上一點與其鄰近部分的點成線性關系,一個復雜的函數就可以用很多局部的線性函數來表示,當需要求該函數上某一點的值時,只需計算所有包含該點的線性函數的值并做平均即可。我們可以將圖像看成一個二維函數,因此,而且沒法寫出解析表達式,因此我們假設該引導濾波函數的輸出與輸入在一個二維窗口內滿足線性關系,如下:
????????
????????這里p是輸入圖像?,I是引導圖像?,q是濾波輸出圖像,?ak和bk是系數, ωk是窗口。
????????對上式兩邊取梯度,可以得到:
????????????
????????即當引導圖像I有梯度時,輸出 圖像q 也有類似的梯度,現在可以解釋為什么引導濾波有邊緣保持特性。
? ? ? ? ?接下來需要計算ak和bk,我們將輸入圖像p納入考慮范圍中,根據一般的加性噪聲模型,我們很容易得到以下式子:
????????
? ? ? ? 其中ni表示需要去除的噪聲或紋理。
? ? ? ??顯然,我們現在要找到一個解能夠最小化輸出圖q和輸入圖p的差別。定義代價函數如下:
?????????? ? ? ?
???????? 這里,是正則化參數,我們對代價函數求最小值,
????????
?????????令偏導為0,計算得到:
? ? ? ? ? ? ?
? ? ? ? ?其中pk和uk分別是P和I窗口內的均值。 得到bk,我們再求ak
??????????????????根據方差和協方差公式,
?????????????????
? ? ? ? ? ?最終計算得到:
? ? ? ? ??????????
三、實現及效果
? ? ? ? 引導濾波算法偽代碼如下圖:
實際測試結果如下:
????????
?
????????