一、背景介紹
????????以前折騰保邊濾波時候,刷了一些Guided Filtering相關資料。這里主要是對它們做個算法效果復現和資料簡單整理。
二、Guided Filtering
1、基本原理
????????原版Guided Filtering的提出,主要是為了改善雙邊濾波做保邊平滑濾波器時候的梯度翻轉偽影和性能問題。相關算法原理和公式推導,已經有很多小伙伴講過了,我這里就不做詳細介紹了,感興趣的小伙伴們可以參考:在實現何凱明導向濾波去霧算法,處理中能夠出現圖像精度損失問題,有什么解決方案?
導向濾波小結:從導向濾波(guided filter)到快速導向濾波(fast guide filter)的原理,應用及opencv實現代碼
等相關資料。
2、算法實現
?
3、算法效果
????????左邊為輸入,右邊為濾波后結果圖像
?
4、復現代碼
????????網上直接抄過來的復現代碼:
https://github.com/yulinghan/ImageQualityEnhancement/blob/master/ltm/guidedfilter/guidedfilter.cpp?github.com/yulinghan/ImageQualityEnhancement/blob/master/ltm/guidedfilter/guidedfilter.cpp
三、Fast Guided Filtering
1、基本原理
????????這篇論文主要是對原始Guided Filtering的性能優化,基本思想來說是對輸入圖,引導圖和對應的濾波半徑,都進行相同倍數下采樣,通過減少處理像素來降低算法計算量。
????????然后對生成的mean_a, mean_b再上采樣到原圖尺寸,進行后續濾波處理。
2、算法實現
?
3、算法效果
????????左邊為輸入,中間為原版濾波結果,右邊為fast版本結果:
?
4、復現代碼
????????也是網上直接抄過來的復現代碼:
ImageQualityEnhancement/ltm/guidedfilter/fast_guidedfilter.cpp at master · yulinghan/ImageQualityEnhancement · GitHub
四、Weighted Guided Filter
1、基本原理
????????這篇論文的意義在于:對濾波邊緣加上權重信息控制,進一步增加增強算法的保邊平滑效果。
????????具體來說,是對Guided Filter中生成a的公式進行改進,原本的計算公式為:
?
????????可以看到不管輸入圖像上,像素是平坦區域還是紋理區域,畫紅框的正則平滑項都是一個固定值。本篇論文就是對這個做改進。
????????具體改進措施為,將原本的固定值正則項變為根據像素變化而跟隨變化的值,簡單來說就是像素越屬于平坦區域,那么濾波強度越高,越屬于紋理,則對應權重降低。
?
?
????????ε 是一個很小的常數,值被設定為(0.001xL)的平方。
2、算法實現
????????核心部分代碼實現如下所示:
?
?
3、算法效果
????????左邊為輸入,中間為原版濾波結果,右邊為Weighted Guided Filter版本結果
?
4、復現代碼
????????一樣是網上直接抄過來的復現代碼:
ImageQualityEnhancement/ltm/guidedfilter/weight_guidedfilter.cpp at master · yulinghan/ImageQualityEnhancement · GitHub
五、Gradient Domain Guided Image Filtering
1、基本原理
????????本篇是在Weighted Guided Filter上面的進一步拓展,
????????簡單來說,就是進一步將計算a的公式在保邊效果上做進一步的改進升級為:
?
????????其中:
?
?
????????詳細介紹的話,可以參考資料:
Gradient Domain Guided Image Filtering(梯度域導向濾波) - ayew - 博客園
2、算法實現
????????核心部分算法實現為:
?
3、算法效果
????????左邊為輸入,中間為原版濾波結果,右邊為Gradient Domain Guided Image Filtering版本結果:
?
4、復現代碼
????????簡單的代碼復現地址:
ImageQualityEnhancement/ltm/guidedfilter/gradient_guidedfilter.cpp at master · yulinghan/ImageQualityEnhancement · GitHub