Image Deconvolution: An Introduction

如果一張影像拍照時手振了,或是沒對好焦模糊了,通常我們會值接刪除重拍,但在某些特殊應用的場合,我們會需要如 CSI 犯罪現場中用的神奇補強手段,其實電視劇中只是稍微誇大效果 (我們也沒用這麼酷炫的UI ),但理論上是可行的,這個過程叫做 deconvolution 或稱為 deblur。

Image Deconvolution 嘗試將所有光學過程反轉,求解符合數學模型的原始射線。本文將會帶到基本的數學模型及簡單例子;並且整理分類常見的解法。

Deconvolution 做法跟把模糊照片銳化( Sharpness filtering ) 有數學模型上的根本差異,並且在某些特殊強況有著決定性的差異。知道了以後在判斷什麼影像該用什麼方法補救上會有不少幫助。

範例程式給讀者參考,有興趣的讀者可以先玩看看再開始閱讀本文,比方說將下圖變清楚 (參數為 13×13 tap 的 circle PSF )

Model

提到 deconvolution 或 deblur ,首先要從最基本的 convolution theorem 解說起,假設已知一個光學系統有光線 (light)、鏡片 (lens) 與感光元件 (sensor)。一條射線在感光元件上呈現的樣子我們稱之為 point spread function ( PSF ),在 frequency domain 稱之為 impulse response ,通常形狀與光圈葉片的形狀有關,大小則是與物距和焦距的差成正比。

當物體清晰時, PSF 通常為最小的單點,模糊時則為暈開的 PSF ;影像最後成像在sensor上的結果我們可視為 pinhole camera model 投影與 PSF convolution 的結果。如下式:

\[\begin{equation} \label{eq:model}
I=L\otimes{P}
\end{equation}\]

其中\(I\)為最後 sensor 上之影像(image),\(L\)為 pinhole 理想上的影像 (latent image),\(P\)則表PSF;\(\otimes\)代表 convolution operator。

\(P\)可能是一個最簡單的 box blur kernel 或是複雜的 motion blur,我們的目的就是給定已知影像\(I\),求出\(L\)清晰的影像,拔除 PSF 的影響力。

example of a box blur kernel\[\frac{1}{9}\begin{bmatrix}1&1&1\\1&1&1\\1&1&1\end{bmatrix}\]

example of a motion blur kernel\[\frac{1}{3}\begin{bmatrix}0&0&1\\0&1&0\\1&0&0\end{bmatrix}\]

  • Remark: PSF包含但不限於 blur kernel ,PSF也可能是 gradient kernel 如 Sobel、Laplace operator ,或是任何一種 convolution operator 。意思是甚至可以由一張影像的 gradient 反推回原訊號,主流的關鍵字有 poisson equation、gradient domain reconstruction。

Methods

求解方法可以歸類成兩大派系; frequency domain 與 spatial domain 兩種。其中又以 Wiener filter 為 frequency domain 的經典例子,而 spatial domain 流則以 Lucy Richardson deconvolution 最常被當作標準。此外, convolution 的行為可被看作 explicit 或 implicit filtering,故後面會談到先進的 optimization 手段如 conjugate gradient method。幾乎所有論文的方法都是修改這三種模型而來。

下面是一些特性

  • Wiener deconvolution
    • solve in frequency domain
    • fast (FFT) and non-iterative solver
    • some artifact at image border ( wrap-around errors )
  • Lucy Richardson deconvolution
    • solve in spatial domain
    • iterative solver
    • less ringing artifact at few iteration
  • Optimization \(Ax=b\)
    • solve in spatial domain ( or frequency domain in some equations )
    • iterative solver (much more fast convergence)
    • strong ringing artifact without any constrain prior

Blind & Non-Blind

在 deconvolution 領域中,由未知或已知 PSF 的問題分別拆成 blind & non-blind 兩種主要解法。

Non-blind deonvolution 多應用在已知光學特性的照片上,如顯微鏡天文望遠鏡,這些高光學精度的應用上。他們的 PSF 在製造時就被嚴格定義出來,deconvolution可以幫助克服光學繞射產生的模糊現像,或是鏡片製造瑕疵

一個小故事就是哈伯天文望遠鏡在製造時鏡片磨錯了,雖然最終的解法是在下一次太空任務加掛校正鏡片,但在這其間的影像則是利用 deconvolution 來解決,也就是鏡片誤差的意外的使 deconvolution 技術受到重視XD

Blind deconvolution 是為 non-blind 的宇集合,應用在未知 PSF 的場合,如消費相機手振影像的照片,將算法步驟拆解如下:

  1. Estimate PSF
  2. Non-blind deconvolution

當然如果是純 blind 的結果多半是不會很好,所以後來也有許多論文考慮利用陀螺儀和加速度計,來增加估測 PSF 的限制式。非常幸運的是目前手機都有這些工具,只要在曝光時記錄這些訊息,就有機會修正手振的模糊影像。

Challenges

ill-posed Problem

Blind deconvolution ,給一個簡單的數值運算,可以找出無限種組合都符合相乘等於11,意思是我們只要稍為估錯一點 PSF ,得到的基本上就是個渣…所以一個良好的 prior constrain 是很重要的,這也是大家發揮創意的地方。

\[
\begin{align*}
11 &= 1 \times 11 \\
11 &= 2 \times 5.5 \\
11 &= 3 \times 3.667 \\
\end{align*}
\]

Ringing

第二討厭的就是 ringing 了,這邊特指在物體或畫面邊緣的漣漪。

ringing
ringing example [4]
主要造成 ringing 的原因有三大類,其中第三類最好解,在下篇就會碰到

  • Noise
  • PSF error
  • Lost of image boundary information (easy to eliminate)

Reference

  1. Deconvolution using natural image priors SiGGRAPH 2007, Levin et al.
  2. High-quality Non-blind image Deconvolution PSiVT 2010, Jong-Ho et al.
  3. Progressive Inter-scale and Intra-scale Non-blind Image Deconvolution SIGGRAPH 2008.
  4. High-quality Motion Deblurring from a Single image SiGGRAPH 2008, Shan et al.
  5. Old and New Algorithms for Blind Deconvolution, Yair Weiss.

在〈Image Deconvolution: An Introduction〉中有 1 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *