OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
高動態範圍成像

下一篇教程: 高階影像拼接API(Stitcher類)

原始作者Fedor Morozov
相容性OpenCV >= 3.0

簡介

如今,大多數數字影像和成像裝置使用每通道8位,這使得裝置的動態範圍限制在兩個數量級(實際為256級),而人眼可以適應光照條件變化達十個數量級。當我們拍攝真實場景時,明亮區域可能會過曝,而黑暗區域可能會欠曝,因此我們無法透過單次曝光捕獲所有細節。HDR成像處理的影像使用每通道超過8位(通常是32位浮點值),從而實現更寬的動態範圍。

獲取HDR影像有多種方法,但最常見的方法是使用不同曝光值拍攝的場景照片。為了結合這些曝光,瞭解相機的響應函式很有用,並且存在用於估計響應函式的演算法。HDR影像混合後,必須將其轉換回8位才能在常用顯示器上檢視。這個過程稱為色調對映。當場景中的物體或相機在拍攝之間移動時,還會出現額外的複雜性,因為不同曝光的影像需要進行配準和對齊。

在本教程中,我們將演示如何從曝光序列生成和顯示HDR影像。在我們的示例中,影像已對齊且沒有移動物體。我們還將展示一種稱為曝光融合的替代方法,它生成低動態範圍影像。HDR處理管道的每個步驟都可以使用不同的演算法實現,因此請查閱參考手冊以檢視所有演算法。

曝光序列

原始碼

示例影像

包含影像、曝光時間和 `list.txt` 檔案的資料目錄可以從此處下載。

解釋

  • 載入影像和曝光時間

首先,我們從使用者定義的資料夾中載入輸入影像和曝光時間。該資料夾應包含影像和 list.txt 檔案,該檔案包含檔名和逆曝光時間。

對於我們的影像序列,列表如下:

memorial00.png 0.03125
memorial01.png 0.0625
...
memorial15.png 1024
  • 估計相機響應

對於許多HDR構建演算法來說,瞭解相機響應函式(CRF)是必要的。我們使用其中一種校準演算法來估計所有256個畫素值的逆CRF。

  • 生成HDR影像

我們使用Debevec的加權方案,利用上一步計算出的響應來構建HDR影像。

  • 色調對映HDR影像

由於我們想在常見的LDR顯示器上檢視結果,我們必須將HDR影像對映到8位範圍,同時保留大部分細節。這是色調對映方法的主要目標。我們使用帶有雙邊濾波的色調對映器,並將伽馬校正值設定為2.2。

  • 執行曝光融合

當不需要HDR影像時,還有一種合併曝光的替代方法。這個過程稱為曝光融合,它生成不需要伽馬校正的LDR影像。它也不使用照片的曝光值。

  • 寫入結果

現在是時候檢視結果了。請注意,HDR影像無法儲存在常見的影像格式中,因此我們將其儲存為Radiance影像(.hdr)。此外,所有HDR成像函式都返回[0, 1]範圍內的結果,因此我們應該將結果乘以255。

您可以嘗試其他色調對映演算法:cv::TonemapDragocv::TonemapMantiukcv::TonemapReinhard。您還可以根據自己的照片調整HDR校準和色調對映方法中的引數。

結果

色調對映影像

曝光融合

附加資源

  1. Paul E Debevec and Jitendra Malik. Recovering high dynamic range radiance maps from photographs. In ACM SIGGRAPH 2008 classes, page 31. ACM, 2008. [70]
  2. Mark A Robertson, Sean Borman, and Robert L Stevenson. Dynamic range improvement through multiple exposures. In Image Processing, 1999. ICIP 99. Proceedings. 1999 International Conference on, volume 3, pages 159–163. IEEE, 1999. [230]
  3. Tom Mertens, Jan Kautz, and Frank Van Reeth. Exposure fusion. In Computer Graphics and Applications, 2007. PG'07. 15th Pacific Conference on, pages 382–390. IEEE, 2007. [191]
  4. 維基百科-HDR
  5. 從照片中恢復高動態範圍輻射圖(網頁)