Deblur: 運動模糊影象復原 (一)
本次博文主要想記錄一下自己在做運動模糊影象復原時的一些總結和心得感悟,方便以後回顧。
Reference:
Deblurring Text Images via L0 -Regularized Intensity and Gradient Prior
主要難點: 估計模糊模型
解決方式:
①使用金字塔模型,建立模糊影象相應的層級影象;並根據縮放比例建立模糊模型的大小。可以手動設定金字塔底層模型的大小。
②初始化金字塔頂層模型。
③根據對應層級模糊影象的L0亮度和梯度 + 對應層級的模糊模型 = 預估當前層級的latent image。可設定多次迭代,更新預估結果。
④使用latent image和blurred image預估當前層級的模糊模型。
⑤根據金字塔層級,一層層迴圈進行第③第④步,直至最底層。到這裡就可以得到預估的完整模糊模型——kernel。
復原運動模糊的影象:
Blurred image = deblurred image 卷積 kernel
可採用快速傅立葉變換,對blurred image進行反捲積得到復原影象。
注意的點:
- Ringing remove 這種畸變會影響復原效果——振鈴抑制
- 高飽和度的影象,比如過曝影象,需要做特殊處理
- 做一些去燥處理
對這種blind deblur方法的理解:
依賴於intensity和gradient的先驗概率設定。在處理中作者設定每次迭代時根據經驗更新這兩個數值。
依賴於fft、dst等變換,以及卷積操作。計算量大。
依賴於影象下采樣方法。在計算下采樣影象的大小和抽樣位置時需要注意。同時對取樣的插值方法的差異性值得注意。比如線性插值和雙線性插值,兩種方法對效果和速率上影響不小。
振鈴失真的去除依賴於拉皮拉斯方法與latent image的差異圖。
測試效果:
C++轉換後的程式碼效果總是低於作者的測試效果。
對於一些抖動影象的復原效果還是比較理想的。但並非所有抖動影象效果都好。
為什麼要採用這種方法進行模糊影象的復原?
- 可參考文獻A Comparative Study for Single Image Blind Deblurring。
- 傳統方法在某些領域的應用,當前還不能完全用深度學習的方式替代。後續可繼續研究深度學習在deblur方面的相關內容。