Image Deconvolution: An Introduction

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

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

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

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

閱讀全文〈Image Deconvolution: An Introduction〉

HDR一些基本觀念

這篇其實是回答讀者提問的文章

在回答讀者之前,因為我其實看不太懂題問,所以想先講解一些背景觀念,希望可以把一些誤解或模糊的地方補齊。

Dynamic Range & bit

Dynamic Range 的定義係指影像中最大值與最小非0值之比值,這個比值與單位無關,可以是 \(cd/m^2\) 或是 intensity。我們買顯示器的 1:10000 對比度就是指這個比值。

以能量 \(E\) 為單位,而 sensor 對能量曝光採樣 \(E\Delta{t}\) ,並經過 quantization & truncation 得到我們記錄的 intensity \(Z=f(E\Delta{t})\)單位。這邊 quantization level 通常是 8-bit也就是我們熟悉的 RGB24,因此可以得知,在硬體固定的 quantization level 下,一張影像的最大  dynamic range 也是固定的。

假設一個 intensity 代表一個能量單位 \(\Delta{Z}=\Delta{E}\) ,要得到相對於一般影像更高的 dynamic range 勢必要提升 bit 數,或是增加 \(\Delta{E}\) 的大小,而後者會犧牲畫值的細緻度產生 false contour。因此一般論文常指的 HDR 影像通常是高於 8-bit per-channel。

閱讀全文〈HDR一些基本觀念〉

Non-Local Means denoising: from 3D denoising viewpoint

dbf8575077770132fa957a78463f1f20

 

1. Introduction

傳統的 denoise 著重在 local means 的方法,基本上不外乎是在 target pixel 的附近判斷是否要保留或是抹除 target pixel。缺點是抹除的同時卻也模糊了細節,然後方向就跑去 anisotropic diffusion,neighbor 的判斷越來越多考量和限制, edge 強弱和方向啥的。

這邊要提的 non-local means 的方式主要基於 patch search 的方式來尋找相似的區塊作平均。

閱讀全文〈Non-Local Means denoising: from 3D denoising viewpoint〉

HDR / Tonemapping essentials

Raw檔本身就是超過 8-bit 的 HDR 影像

看到很多人為了要產生 HDR 檔案,卻是用一個 raw 檔調整曝光輸出包圍曝光影像,爾後再丟 Photoshop 合併為 HDR 影像。這明顯是脫褲子放屁的過程,甚至會使畫質下降,直接把 raw 轉存成 HDR 檔就好了 (只要是32-bit的 container 都裝得下,如 TIF、HDR、EXR、DNG)。

會用到複數張 8-bit 包圍曝光影像是應用在其他消費機僅能輸出 JPG 的情況。而單眼相機的 sensor 通常是在 12~14bit,當然若需要更高的 dynamic range 如產生 32-bit HDR,可以考慮合併複數張的 raw 影像。

產生 HDR 影像的演算法

很多演算法 (Photomatix) 會使影像變模糊

我直接點出因為 photomatix 的演算法是使用 gradient domain compression (SIGGRAPH02)。在解 Poisson equation 時由於是最小化 L-2 norm,會有平均化誤差的特性,在減低 halo effect 的同時也把影像變糊了。

而 Adobe 新版的 lightroom 使用了新的演算法 ( Local Laplacian Filtering )。可以減低模糊的情況,並且同時也沒有 halo effect。演算法 / Demo / Paper

HDR 和 Tonemapping 是兩件事情

HDR影像一般指色彩強度超過 8-bit [0~255] 範圍的影像,而 tonemapping 則是將其動態範圍壓縮回 8-bit 的過程,才能使其顯示在螢幕上。

經典的 tonemapping 演算法

Effective Chromatic Noise Reduction (Noiseware-like)

無論我們在 RGB colorspace 怎麼解永遠都不好,消除 chromatic noise 的同時一定會有機會影響細節,問題就是在 RGB channel 隱含了很大的 intensity 成分。必須要轉換到有 color-phase 和 color-saturation 的空間,完整的將 luminance 區隔開來,然後處理那些對人眼影響不大,但不規則卻會很惱人的 noise channels。 如Lab、YUV、HSV、YCbCr;都是不錯的選擇。

  1. transform RGB image to luminance-split color space.
  2. smooth the non-luminance channels (may use bilateral filtering), NOTE that the
    smooth window size must be large enough (eg. 21×21 pixels).
  3. well-blended with original channels if we don’t want to lose too much color especially in small object region.
  4. inverse transform colorspace.
  5. Done.

sample source

與主流 denoise 軟體比較,canon DPP、Noiseware,都在強 edge 附近使用了較多原圖的顏色,所以邊緣的 chromatic 雜訊也較多,但是更有機會保留色彩。

Joint Bilateral Upsampling in Laplacian Pyramid

在 Laplacian pyramid 重建回原影像時,我們嘗試利用 edge-preserved upsampling 的方式重建。

\[G_{i}=upsample(G_{i+1})+L_{i}\]

compare
left: Gaussian, center: joint bilateral, right: ground truth

與 Gaussian upsampling 比較,joint bilateral upsampling 利用 Gaussian pyramid 中前一級較大解析度的影像作為 guide image。可以發現在高光處的擴散光暈有明顯的減少,更接近 ground truth 的結果。

 

閱讀全文〈Joint Bilateral Upsampling in Laplacian Pyramid〉