保持邊緣的濾波函式————Guided Image Filtering
1,定義
引導濾波:即需要引導圖的濾波器,引導圖可以是單獨的影象或者是輸入影象,當引導圖為輸入影象時,引導濾波就成為一個保持邊緣的濾波操作,可以用於影象重建的濾波。
引導濾波的流程見下圖:
假設輸入影象為p,輸出影象為q,引導圖為I,q與I在以畫素k為中心的視窗中存在區域性線性關係:
視窗半徑為r,a,b為線性係數,且在區域性視窗k中為常數。這個模型保證了只有在I存在邊緣的情況下,q才會存在邊緣。這是因為:。這與在去霧、超解析度、摳圖等研究中使用的模型是一致的。
q即p去除噪聲或者紋理之後的影象:
為確定以上公式中的線性係數,並滿足使得q與p的差別最小,轉化為最優化問題:
以上公式的求解可以利用線性迴歸:
在這裡, μk和σk^2表示I在區域性視窗wk中的均值和方差。 |ω|是視窗內的畫素數,pk表示p在視窗wk中的均值。當求的ak和bk後:
其中,
,
演算法流程:f為一個視窗半徑為r的均值濾波器,corr為相關,var為方差,cov為協方差。
2,邊緣保持
當I=P時,引導濾波就變成了邊緣保持的濾波操作,此時:
,
考慮兩種情況:
即在高方差區域,保持值不變,在平滑區域,使用臨近畫素平均。
3,彩色濾波
直觀的方法就是直接將引導濾波應用到三個顏色通道中(RGB):
取值:i=1,2,3
4,簡單示例
下載作者程式碼後,有兩個主要函式:guidedfilter.m(灰度影象)和guidedfilter_color.m
I = double(imread('.\img_smoothing\cat.bmp')) / 255;
p = I;
r = 4; % try r=2, 4, or 8
eps = 0.2^2; % try eps=0.1^2, 0.2^2, 0.4^2
q = guidedfilter(I, p, r, eps);
figure();
imshow([I, q], [0, 1]);
結果圖:
5,一些資源
同時作者提供了程式碼和ppt可供參考,也可從博主資源中下載。
相關論文:
- , by Kaiming He, Jian Sun, and Xiaoou Tang, in ECCV
- , by Kaiming He, Jian Sun, and Xiaoou Tang, in TPAMI 2013.