Image Deconvolution: Frequency domain and Wiener filtering
Image Deconvolution: An Introduction
如果一張影像拍照時手振了,或是沒對好焦模糊了,通常我們會值接刪除重拍,但在某些特殊應用的場合,我們會需要如 CSI 犯罪現場中用的神奇補強手段,其實電視劇中只是稍微誇大效果 (我們也沒用這麼酷炫的UI ),但理論上是可行的,這個過程叫做 deconvolution 或稱為 deblur。
Image Deconvolution 嘗試將所有光學過程反轉,求解符合數學模型的原始射線。本文將會帶到基本的數學模型及簡單例子;並且整理分類常見的解法。
Deconvolution 做法跟把模糊照片銳化( Sharpness filtering ) 有數學模型上的根本差異,並且在某些特殊強況有著決定性的差異。知道了以後在判斷什麼影像該用什麼方法補救上會有不少幫助。
範例程式給讀者參考,有興趣的讀者可以先玩看看再開始閱讀本文,比方說將下圖變清楚 (參數為 13×13 tap 的 circle PSF )
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。
Non-Local Means denoising: from 3D denoising viewpoint
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〉
Trilateral Filtering
不囉嗦直接看圖, Trilateral filtering 先行一個保證經過 \(x\) 的 piece-wised linear regression,而其 difference weighting 來自於與 linear model 的距離。而第二個困難點則是其 window 大小是由 gradient pyramid 根據 local feature 而來。

Reference
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 影像。
很多演算法 (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 的過程,才能使其顯示在螢幕上。
Effective Chromatic Noise Reduction (Noiseware-like)
無論我們在 RGB colorspace 怎麼解永遠都不好,消除 chromatic noise 的同時一定會有機會影響細節,問題就是在 RGB channel 隱含了很大的 intensity 成分。必須要轉換到有 color-phase 和 color-saturation 的空間,完整的將 luminance 區隔開來,然後處理那些對人眼影響不大,但不規則卻會很惱人的 noise channels。 如Lab、YUV、HSV、YCbCr;都是不錯的選擇。
- transform RGB image to luminance-split color space.
- smooth the non-luminance channels (may use bilateral filtering), NOTE that the
smooth window size must be large enough (eg. 21×21 pixels). - well-blended with original channels if we don’t want to lose too much color especially in small object region.
- inverse transform colorspace.
- Done.
與主流 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}\]

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

將原圖建立 Laplacian Pyramid 拆為 9 層(\(n=0…8\)),其中最後一層為 low pass 影像(\(n=8\)),如下圖所示
- \(G_{i+1}=downsample(G_{i})\)
- \(G^{‘}_{i}=upsample(G_{i+1})\)
- \(L_{i}=G_{i}-G^{‘}_{i}\)

閱讀全文〈High Dynamic Range Compression and Detail Enhancement using Laplacian Pyramid〉











