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。

Continue reading "HDR一些基本觀念"

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 演算法

Solving the Discrete Poisson Equation using Conjugate Gradient Method

在 Tone mapping: A quick survey. (Tone mapping 原理) 中我們介紹了 gradient domain 的解法,本篇暨 FFT(DST) 解法後,提供一個 spatial domain 的 optimization 方式。

與原始論文使用 Multigrid 不完全相同,但Conjugate gradient 的作法可被 Multigrid 利用來取代 Gauss–Seidel method 作為 smooth 的方法。與 Multigrid 相比直接求解可能需要更多次的 iteration (大約2000次)。

Continue reading "Solving the Discrete Poisson Equation using Conjugate Gradient Method"

Local Laplacian Filtering : Image Detail Enhancement and Tone Mapping

memorial_llc_gradient
left: enhanced by fast local Laplacian filtering [2]. N=100, \alpha=0.25, \beta=0, \sigma_{r}=log(2.5), right: enhanced by gradient domain compression[3]

Introduction

本篇利用了標準的Laplacian pyramid,藉由操作修改residual layer來達到detail enhancement與tone mapping的效果。想當然是halo free;此外的特色是no optimizationno gradient domain manipulation,所以適用實作和加速。上圖則是激動人心的差異!

92203ad0721401323a780e6b1a4283f8

 

 

這邊我實作了一個簡易版的 javascript demo ,速度很慢,不要太期待。

 

Continue reading "Local Laplacian Filtering : Image Detail Enhancement and Tone Mapping"

Gradient domain high dynamic range compression with local Poisson solver

flowsolver本篇參考論文 A real-time implementation of gradient domain high dynamic range compression using a local Poisson solver

 

1. Model

前情提要,在前一篇中我們討論到了gradient domain的Poisson reconstruction,給定已知的divergence \operatorname{div}{G},嘗試重建I


\begin{align}
\nabla^2{I}&=\nabla_{x} \cdot \Phi\cdot\nabla_{x} f +\nabla_{y} \cdot \Phi\cdot\nabla_{y} f \\
&=\operatorname{div}{G} \label{eq:model}
\end{align}

2. Integral Problem

基本上這可看為一個積分問題,用一維的gradient思考,\nabla{f}套用衰減函數\Phi後由任何一邊開始積分就可以返回I,如下式可以積回任何第n點的I_n,其中C為一個常量

I_n=\sum_{i=0}^{n}{\nabla{f}_i{\Phi_i}}+C

一個直白的說法就是給你數個位置的個坡度,然後以平滑的方式重建回斜坡

但在二為空間就不是如此,從任何一邊積分的結果都會有所不同,所以在無法兼顧的情況下,我們僅能將其轉換為一個optimization問題來看,使其符合目標式\eqref{eq:model}從任何單點來看都需要整個畫面的divergence才能完整的重建

 

Continue reading "Gradient domain high dynamic range compression with local Poisson solver"

Tone mapping: A quick survey. (Tone mapping 原理)

c1aa14506d4d0132e77d6ea4796472e0

假設已經有一個HDR影像,如何顯示在8-bit螢幕上哩? Tone mapping三巨頭,依照結果優排序! 三種都是local tonemapping,都是SIGGRAPH02耶! 那年真流行HDR。

  1. Gradient domain high dynamic range compression
  2. Fast Bilateral Filtering for the Display of High-Dynamic-Range Images
  3. Photographic Tone Reproduction for Digital Images

tm

2和3的方法皆屬於edge preserving,對比度較差;而方法1屬於gradient preserving,對比度較佳。當然這三種算法的結果也反映了演算法複雜程度...

 

Continue reading "Tone mapping: A quick survey. (Tone mapping 原理)"

Camera response curve calibration

公式參考引用數驚人的[1]"Paul E. Debevec and Jitendra Malik. Recovering High Dynamic Range Radiance Maps from Photographs. In SIGGRAPH 97, August 1997."

1. Introduction

在影像處理中,有幾個主題如HDR, Lens shading correction, shape from shading等,都需精準的由intensity判斷一些重要訊息,然而在真實的相機中,input irradiance E和輸出的intensity Z未必是與曝光時間\Delta{t}呈線性關係,而是一個類似gamma curve的非線性的對應曲線。這會造成計算上的誤差,甚至是許多artifact的產生,因此校正這個關係使得整張影像的intensity Z與input irradiance E呈線性變成一個研究主題。

  • Remark: 這部分是我自己的碎碎念

Continue reading "Camera response curve calibration"