使用 Camera Response Function 的 High Dynamic Range 與 Low Dynamic Range 範例

簡短描述

檔案: \examples\Processing\HDR_ImageComposition\HighDynamicRange\HDR_CRC_Bayer.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange\HDR_CRC_Color.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange\HDR_CRC_Gray.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_8bit_8192_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_8bit_16384_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_8bit_8192_4xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_10bit_8192_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_10bit_16384_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_10bit_8192_4xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_12bit_8192_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_12bit_16384_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_12bit_8192_4xCxp2L.vad

預設平台: mE5-MA-VCL, imaFlex CXP-12 Quad

簡短說明

根據 Debevec 和 Malik 的 HDR 演算法,以及 Reinhard 等人與 Fattal 等人提出的 LDR 演算法。

高動態範圍(HDR)影像能夠重現寬廣的亮度範圍。因此,極暗與極亮的細節皆能 融合於單一影像之中。 採用多數攝影技術時,無法僅透過單一曝光時間便達成如此寬廣的亮度範圍。 因此,HDR 影像是透過 不同曝光時間的影像所合成而成的。由於多數顯示器無法直接顯示 HDR 影像, 因此必須將其亮度縮減至 低動態範圍(LDR)影像的對比度,方能顯示該 HDR 影像。 此程序亦稱為色調映射。在 此 VisualApplet 範例中,實作了一種 依據 Debevec 與 Malik[Deb97] 所提出的 HDR 演算法。 LDR 演算法則依據Reinhard [Rei02] 與Fattal [Fat02] 所提出。以下將簡要 說明這兩種演算法。

High Dynamic Range Imaging

像素值 在圖片 i 中,其像素座標為 進行明確的生命週期管理即呼叫 可表示為輻照度值的函數 以及 曝光時間 :

方程式 32。


當我們定義 由此可知:

方程式 33。


在這裡我們呼叫 響應曲線。 它描述了像素值與 關於曝光時間 至場景輻照度 . 假設該值對每個像素而言都是恆定的。 鑑於 進行明確的生命週期管理即呼叫 , 可透過奇異值分解 方法計算 [Deb97]. 現在可以使用以下表達式來建立一張 HDR 影像 [Deb97]:

方程式 34。


其中 是對數輻照度值(底數 ) 在 生成的 HDR 影像中的座標 x,y 處。對於彩色影像 分別是紅色、綠色 和藍色的數值 (, 進行明確的生命週期管理即呼叫 ). 也就是說, 方程式 34 必須分別針對紅、綠、藍三種顏色值進行計算。 是曝光次數。 在 方程式 34 是一個加權函數:

方程式 35。


Low Dynamic Range Imaging

Bayer and Color Images

要顯示 HDR 影像,必須降低亮度與對比度。根據 Reinhard 等人 [Rei02] LDR 亮度 可計算如下:

式 (36)。


這裡 是經縮放的 HDR 亮度:

方程式 37。


參數 調整顯示之 LDR 影像的亮度。 典型值介於 0.09 至 0.72 之間 [Rei02]. 所謂的相對「世界」亮度 是根據 HDR 顏色計算得出的: , 進行明確的生命週期管理即呼叫 :

方程式 38。


平均值 在此範例中,其計算方式為

方程式 39。


根據 Fattal 等人 [Fat02] LDR 的色成分 , 進行明確的生命週期管理即呼叫 現在可以重建為

方程式 40。


灰階影像

LDR 影像值 用於在顯示器上輸出的灰階影像可按以下方式計算:

方程式 41。


這裡 是根據……進行的 HDR 處理所產生的結果 方程式 34. 是一個參數常數,可用於調整輸出影像的亮度。

VisualApplets 設計

針對包含極暗與極亮物體、亮度範圍極廣的場景,已於 VisualApplets 中實作 HDR/LDR 演算法,適用於 灰階(「HDR_CRC_Gray.vad」)、拜耳(「HDR_CRC_Bayer.vad」)及彩色(「HDR_CRC_Color.vad」)相機影像。 影像傳輸至電腦後,場景中的每個物體皆能正確顯示。 設計「HDR_CRC_Bayer.vad」的基本結構如圖347 所示。所有範例均遵循相同原則。 對於拜耳模式的原始影像,每個影像像素的紅、綠、藍值皆在 HierarchicalBox Bayer 中,採用 Bayer5x5Linear 運算子中計算。此方塊僅為範例「HDR_CRC_Bayer.vad」的內容。 在方塊 ImageSequence 中緩衝了一組三張影像。這三張影像應具備三種不同的曝光時間,以進行 HDR-LDR 處理。 應選擇適當的曝光時間,確保曝光序列中的每張影像中,每個像素 均不會出現曝光不足或過度曝光的情況。 您可透過以下運算子設定這些時間 SignalWidth width1 至 width3 在 HierarchicalBox 中 觸發器 (參見圖348)。 請注意,時間尺度為 8 ns 的系統時鐘計數。運算子 Generate-Period 的設定值必須至少大於 運算子 SignalWidth的操作子所耗費的最長時間。 width1 至 width3。此外,請參閱運算子 Generate-Period 的最小週期長度。 這三張影像將依照上文所述的 Debevec 和 Malik [Deb97] 提出的 HDR 演算法進行合併。此演算法已實作於 HierarchicalBox HDR 中(圖347)。對於灰階、拜耳及彩色影像,其實作方式均相同。 LDR 演算法實作於 LDR中實現。針對彩色/拜耳影像與灰階影像的實作方式有所不同(參見章節 及 )。生成的 RGB 影像之色彩,則在 HierarchicalBox OutputToPC中進行合併。此盒子在範例「HDR_CRC_Gray.vad」中並不存在。 運算子 SourceSelector 可讓使用者選擇要透過 DMA 傳輸的對象,是已處理的 HDR-LDR 影像,還是 (經拜耳去馬賽克處理的)相機原始影像。

基本設計結構

圖 347. 基本設計結構


方框內內容 觸發器

圖 348. 「觸發器」方塊的內容


在圖中, 349 您可以查看 HierarchicalBox 的內容 HDR. 對於這組具有緩衝的 影像序列中的三張影像,分子中的加數 以及分母 的 方程式 34 是針對 圖片一至三所計算的(HierarchicalBox 圖片1 設為 圖片3) 分別針對紅色、綠色和藍色。

HDR 包裝盒內容物

圖 349. 方框HDR的內容


在圖中, 350 您可以在圖 1 的「HierarchicalBox」中看到關於紅色所做的這項計算 Red 在盒子裡 圖片1) 作為範例。所有影像的所有顏色皆以相同方式進行處理。相機響應曲線 (CRC) 的對數值會透過 HierarchicalBox 中的查表表, 映射至 (紅/綠/藍) 像素值 超過127 若像素值大於 127 或位於方框內 underequal127 若像素值小於或等於 127。這些查找表的內容 gO127 進行明確的生命週期管理即呼叫 g_ueq_127 因為 紅色、綠色和藍色的顏色可透過 Matlab 程式模組「HDR_CRC.m」、「sample.m」和「gsolve.m」(位於 \examples\Processing\Advanced\HighDynamicRange\ 目錄下)進行計算,這些模組 是基於 Debevec 和 Malik 的程式碼 [Deb97] 並部分參考 M. Eitz 的例子 [Eit07]. 請參閱「HDR_CRC.m」中的簡明說明手冊,以獲取有關如何使用此程式碼的進一步指示。 透過 CONST 運算子 LNdt1 (以及類比 LNdt2 進行明確的生命週期管理即呼叫 LNdt3 (針對圖 2 和 3) 可設定曝光時間的對數(底數:e)值。請注意,此值必須乘以 由於有 16 個分數位元。 可透過參數選擇相應的時間基準 LNTimeBase. 的值為 , 或 將時間尺度設定為秒、毫秒或 微秒。在查表中 重量 如圖所示。 350 的加權函數 方程式 35 已實作。透過 Matlab 程式模組「HDR_CRC.m」、「sample.m」及「Weight.m」,即可建立加權表「Weights.txt」 。 請一併參閱「HDR_CRC.m」中的簡短說明手冊 (若處理灰階影像,則請參閱「HDR_CRC_Gray.m」)以獲取進一步指示。HierarchicalBox 的最終輸出結果 Red (以及類比 綠色 進行明確的生命週期管理即呼叫 Blue) 在盒子裡 圖片1 (以及類比 圖片2 進行明確的生命週期管理即呼叫 圖片3) 接著是 進行明確的生命週期管理即呼叫 .

圖像 1 中「Red」元件的內容

圖 350.影像 1中「紅色」色道的內容


回到圖中。 349 作為盒內內容物 HDR. HDR 色彩成分對數值的計算 , 進行明確的生命週期管理即呼叫 根據 方程式 34 在包廂內進行 Red, 綠色 進行明確的生命週期管理即呼叫 Blue. 對分子中所有分量進行求和 以及 分母 此處實作了值與最終除法 (參見圖中的紅色部分 351 (例如)。

HDR 模式下紅色方框內的內容

圖 351.HDR模式下紅色方框的內容


那個盒子 Lw 如圖所示。 349 包含 HDR 顏色數值的計算 , 進行明確的生命週期管理即呼叫 根據其對數值。 指數函數是透過查表來實現的。接著,根據 HDR 色彩分量,依照以下公式計算出相對「世界」亮度「Lw」: 方程式 38. 根據 方程式 39 是在方框中計算出來的 Lw_d 在模組中 LDR (參見基本設計結構圖。) 347). 該文的全部內容為 LDR 如圖所示。 352.

設計檔「HDR_CRC_Bayer.vad」與「HDR_CRC_Color.vad」中 LDR 區塊的內容

圖 352. 設計檔「HDR_CRC_Bayer.vad」與「HDR_CRC_Color.vad」中LDR區塊的內容


該模組 Ls 包含根據以下公式計算的歸一化亮度: 方程式 37 即相對「世界」亮度的比值,再乘以其平均值 並乘以一個「亮度參數」 a. 透過調整此參數值,您可以改變最終處理後影像的亮度。您可以在 VA 設計中的註解框中找到此參數的適當數值;若想進一步了解,請參閱 [Rei02]. LDR_亮度 根據以下公式 計算 LDR 亮度 方程式 36. 此數值最終會與 HierarchicalBox 的輸出相乘 HDRColor , 進行明確的生命週期管理即呼叫 分別針對紅色、綠色和藍色這三個色分量。所得結果即為 LDR 的紅色、綠色和藍色色分量 [Fat02] 為經處理後的輸出影像。 HierarchicalBox 的內容 LDR 圖中顯示了灰階影像的處理方式。 353.

設計檔「HDR_CRC_Gray.vad」中 LDR 方塊的內容

圖 353. 設計「HDR_CRC_Gray.vad」中LDR方塊的內容


在 HierarchicalBox 中 Exp_Ln 是根據 其對數值計算得出的 由於進行了 HDR 處理(方程式 34). 在方框內 SQRT 根據第 節中的演算法,計算出平方根 . 結果除以它本身 加上 . 該數值的 此外,還可透過操作員設定輸出影像的亮度 ShiftLeft_亮度.