1. 程式人生 > >【影象處理】引導濾波器

【影象處理】引導濾波器

1,定義

引導濾波:即需要引導圖的濾波器,引導圖可以是單獨的影象或者是輸入影象,當引導圖為輸入影象時,引導濾波就成為一個保持邊緣的濾波操作,可以用於影象重建的濾波。

引導濾波的流程見下圖:

假設輸入影象為p,輸出影象為q,引導圖為IqI在以畫素k為中心的視窗中存在區域性線性關係:

視窗半徑為rab為線性係數,且在區域性視窗k中為常數。這個模型保證了只有在I存在邊緣的情況下,q才會存在邊緣。這是因為:。這與在去霧、超解析度、摳圖等研究中使用的模型是一致的。

qp去除噪聲或者紋理之後的影象:

為確定以上公式中的線性係數,並滿足使得qp的差別最小,轉化為最優化問題:

以上公式的求解可以利用線性迴歸:

在這裡, μkσk^2表示I在區域性視窗wk中的均值和方差。 |ω|是視窗內的畫素數,pk表示p在視窗wk中的均值。當求的akbk後:

其中,

演算法流程:f為一個視窗半徑為r的均值濾波器,corr為相關,var為方差,cov為協方差。

2,邊緣保持

I=P時,引導濾波就變成了邊緣保持的濾波操作,此時:

考慮兩種情況:

即在高方差區域,保持值不變,在平滑區域,使用臨近畫素平均。

3,彩色濾波

直觀的方法就是直接將引導濾波應用到三個顏色通道中(RGB):

取值:i=123

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 2010 (Oral).
  • , by Kaiming He, Jian Sun, and Xiaoou Tang, in TPAMI 2013.