1. 程式人生 > >影象處理-雙邊濾波 Bilateral Filtering

影象處理-雙邊濾波 Bilateral Filtering

在Shader中實現雙邊濾波的時候,總感覺理解的不太透徹,這裡寫部落格記錄一下。

參考資料:
演算法原理
GPUImage中Bilateral Filtering的實現

高斯濾波 空間域

在理解雙邊濾波之前,先來理解上面是高斯濾波
高斯濾波是一種線性平滑濾波,適用於消除高斯噪聲,廣泛應用於影象處理的減噪過程。
為了實現線性的平滑,高斯濾波器和高斯分佈(正態分佈)是有關係的。
一個二維的高斯函式如下:

其高斯核的影象為:
這裡寫圖片描述

有了高斯函式之後就可以得到高斯模板,常用的高斯模板(也就是高斯核)是這樣的:

雙邊濾波 空間域+值域

高斯濾波可以看成是基於畫素點的歐式距離
雙邊濾波是結合畫素點之間的歐式距離

與畫素點之間的顏色差異

上圖中,最右邊是歸一化的公式,其目的是為了完全平滑的影象結果不變。雙邊濾波之所以可以保留邊緣是因為其濾波模板不僅僅依賴於畫素的位置關係,更依賴於其顏色,所以邊緣可以被保留。

高斯濾波對比雙邊濾波

不管是什麼樣的圖片,其高斯濾波模板視覺化的圖都差不多,見下圖:

因為不同的畫素會影響到雙邊濾波模板,當畫素為為下圖中藍色方框(中心畫素點落在右邊,偏白色)的時候:

其雙邊濾波模板視覺化的圖見下圖: