HDR入門基礎
周日·天文周曆|周一·星空攝影
周三·wikiHow | 周四·觀測指南 | 周五·天文視頻
亮度響應與HDR基礎
作者:章佳傑
1.基本概念
亮度響應
簡單地說,相機/膠片的亮度響應,就是指拍攝場景的真實亮度與成像後像素亮度/底片密度之間的關係。
很顯然,亮度響應的概念並不是數碼相機才有的,針對膠片一樣也有亮度響應的概念,參見 Sensitometry。 為說明問題方便,本文在不致引起混淆情況下不嚴格區分「亮度」、「光照度」、「曝光量」等概念, 行文中多以「亮度」敘述。
最理想情況下,我們希望這個亮度響應是個線性的關係。什麼意思呢? 就是說,無論一個場景原始的亮度是多少,如果場景入射的光亮度變成了 2 倍,那成像後的像素值也應該變成 2 倍。 在這種理想情況下,兩張曝光不同的照片,僅僅通過簡單的乘除運算就可以互相轉化。 事實上,這正是 倒易率 的理論依據。
亮度響應曲線
反應亮度響應的曲線,橫坐標一般為真實亮度的對數,縱坐標一般為像素亮度/底片密度, 也有反過來,以像素亮度/底片密度為橫坐標,以亮度的對數為縱坐標的。 亮度響應曲線也叫特徵曲線(characteristic curve)。
典型的膠片的亮度響應曲線如下圖所示(圖片來源 A PRACTICAL GUIDE TO USING FILM CHARACTERISTIC CURVES)
(https://www.filmshooterscollective.com/analog-film-photography-blog/a-practical-guide-to-using-film-characteristic-curves-12-25)
![不同膠片的亮度響應曲線]
上圖展示了不同的膠片類型的特徵曲線,可以看到,在大部分亮度區間內,膠片的亮度響應是線性的,(注意橫坐標是對數坐標)。這個區間範圍,對於彩色正片(第一排的兩幅圖)大約是 6~7 檔光圈,對於負片(第二篇兩幅圖)可以達到 10 檔光圈以上。
在線性區間之外,低的一端向上翹曲,稱為「趾部」;高的一端向下彎曲,稱為「肩部」。正是膠片的這種非線性響應特性,賦予了它豐富細膩的表達能力,也是 [區域曝光法][https://en.wikipedia.org/wiki/Zone_System] 的基礎。這裡展開又是一個內容龐大的話題,此處按下不表。
2. 數碼相機的亮度響應曲線
數碼相機與膠片相比,有很多的優勢,那麼數碼相機的亮度響應曲線是什麼樣的呢?
我們知道,數碼相機的感光元件 CCD 或者 CMOS 對光線是非常敏感的,同時它們的線性程度非常好,在非常大範圍內,數碼相機感光元件的輸出(電壓)與亮度呈現良好的線性關係。那麼我們是不是可以認為,數碼相機的亮度響應曲線就是一條直線呢?其實不然。相機廠商為了更好地模擬人眼視覺的非線性效應,同時也為了更有效地記錄很亮和很暗的場景,會在感光元件的線性輸出基礎上,增加一個非線性變換,然後才輸出到圖像。
下圖是我自己的佳能 6D 相機的亮度響應曲線(紅色通道),可以明顯看到,亮度響應曲線呈現類似於膠片特性曲線的 S 形輪廓。
![佳能 6D 紅色通道的亮度響應曲線]
從圖中我們可以看到,數碼相機的亮度響應曲線中的線性部分的範圍,比傳統膠片要小,大約只有 3 檔光圈左右。這意味著,對數碼照片而言,增加和減少曝光,並不是簡單地對當前像素值進行乘除運算,而應當是沿曲線滑動。
舉個例子,假設有一個點成像後亮度是 20%(如果是 8 bit 點陣圖格式,那麼就是 $255 imes 20\% = 51$),問如果增加一檔曝光,這個點的像素值是多少?從圖中曲線上我可以讀到(具體選哪一條曲線對結果幾乎沒有影響),亮度 20% 的點增加一檔曝光(橫坐標增加 1)後,亮度在 35% 左右。
當然,一般相機的感光元件都分為 RGB 三色,因此相機不同顏色通道的亮度響應曲線一般也是不一樣的。下圖是我自己的佳能 6D 相機的三通道響應曲線。
![佳能 6D 三通道亮度響應曲線]
引入這樣一種非線性關係,有什麼好處呢?
(1). 充分利用了人眼的視覺特性,更好地記錄場景信息。
在一個固定場景中,人眼更多地注意中間亮度的情況,如果中間亮度範圍內的對比度足夠,人眼就會覺得畫面是通透的;反之如果中間亮度範圍內對比度不足,就會覺得畫面發灰。
引入這樣的非線性,增加了中間亮度範圍內的對比度,同時也部分保留亮部和暗部的信息不缺失。
(2). 讓畫面更接近人眼感官效果
人眼對一個場景中各個不同亮度的感知是非線性的,並且人眼可以對極亮和極暗的場景做出反應。而相對的,將照片放在顯示器上或者列印出來,顯示器或者紙張並不能給出太大的明暗對比,因此需要把一個較大的明暗範圍「壓縮」到顯示器或者列印紙張能夠反應的明暗範圍,否則人眼看到會覺得缺失許多細節。線性映射情況下,人眼看去容易產生太亮或者太暗的感覺,因此引入一定的非線性因素是有必要的。
![線性映射和非線性映射]
上面兩張圖中,左圖是線性映射,右圖採用類似亮度響應曲線的 S 形曲線映射。兩張圖片中像素的取值範圍是一樣的,然而人眼看來右側的圖更接近真實感受,中間亮度部分對比度足夠,過亮和過暗的部分也能保留足夠的細節。
3. 實驗測量亮度響應曲線
說了那麼多,這個亮度響應曲線是怎麼得到的呢?理論上,我們可以用光照度計(測光表)測量一個場景中每一點的實際亮度,拍下照片後讀取圖片中每一點的像素值,把兩者畫在一起就得到亮度響應曲線了。實際上當然不可能做到,我們需要設計一個更可行的方案。
我們固定相機的光圈和 ISO 設置,只改變快門速度,按不同曝光量拍攝同一個場景的多張照片。在照片中的每一個點,在不同的曝光量下都會有不同的像素值。
![同一場景不同曝光量的多張照片]
我們把同一個點的不同曝光量下的像素值畫在一起,就得到了一條曲線,橫坐標是(對數)曝光量,縱坐標是像素值。由於我們固定了光圈,因此橫坐標的(對數)曝光量,正比於曝光時間的對數,所以可以直接採用曝光時間的對數作為橫坐標。
![曝光序列中某三個點的曝光曲線]
圖中所示的是照片中的三個點對應的三條曲線。還記得上文中提到的嗎?數碼相機改變曝光的話,像素點的值是沿著亮度響應曲線移動的。這意味著,圖中每一條曲線,都是亮度響應曲線的一部分,僅僅相差了一個平移量。如果把這幾條曲線左右平移一下,他們應該是能重合成一條光滑曲線的。所以我們需要對不同像素點的多條曲線進行對齊。
![對齊曝光曲線]
對齊之後,我們就獲得了一條光滑的曲線,這就是相機的亮度響應曲線。(本部分簡單介紹思路,詳細的數學過程放在最後,如果對數學不感興趣,可以跳過)。
採集足夠多的數據點之後,對齊這些不同的曝光曲線(轉化為求解一個數學上的優化問題),可以得到每一條曝光曲線的水平偏移量了(後面可以看到這個偏移量的用處),進而可以得到一條光滑的亮度響應曲線。
4. 推算場景實際亮度
如果給定一個像素點,通過上面的計算過程,我們可以得到這個像素點對應的曝光曲線的水平偏移量。這個偏移量是什麼意義呢?稍稍思考一下可以知道,這個偏移量實際上反映了這個點的真實亮度信息。所以利用上面的計算過程,我們可以推算出圖中每一個點的真實亮度(相差一個常數係數)。
![推算的場景實際亮度]
事實上,這已經是一張 HDR 圖片了,包含了這個場景中全部的亮度信息。在這張圖中,最亮點與最暗點亮度之比約為 12 萬倍,換算成光圈為 16.9 檔光圈,這已經比目前任何民用單反相機所能記錄的場景亮度範圍都大了。經過「色調映射」(tone mapping)即可轉換為平時看到的 HDR 效果的照片了。色調映射與前文所述的相機在亮度響應曲線中引入非線性有異曲同工之理。
![經過簡單 gamma 映射的 HDR 照片]
有關色調映射相關的內容,在以後的專欄文章中再進行討論。
5. 對齊曝光曲線的數學討論
本小節內容可以跳過。
責任編輯:解仁江
謝謝閱讀
『天文濕刻』 牧夫出品
微信號:astronomycn
拍攝星野銀河不同鏡頭的取景範圍
※鮮為人知的88星座以外的其他「星座」
※買下一顆恆星須要具體怎樣操作
※一條發現外星生命的研究之路
※如何給宇宙深處的天體拍個立體照
※業餘天文望遠鏡究竟可以看到多暗弱的天體
TAG:牧夫天文論壇 |
※JAVA學習 基礎入門
※JAVA學習基礎入門
※塔虎TASMANIAN TIGER 6L基礎雙肩包測評
※JAVA零基礎應該從哪裡入手
※碼高大事記!國內首本《VEX-EDR基礎入門與RobotC編程實例》圖書問世!
※SEO基礎入門篇之SEO代碼優化的作用
※ZNDS眾測:讓視界在你眼前,大朋VR頭盔E3基礎版
※MYSQL和JDBC的基礎回顧
※MongoDB for C#基礎入門
※手機APP-UI設計尺寸基礎知識
※Linux基礎入門篇之用戶管理
※佛學入門基礎
※AI CC視頻教程 零基礎入門自學軟體排版平面設計
※PROFINET基礎知識介紹
※python零基礎入門
※基礎體驗出色,尚需精品內容:HYPEREAL Pano三攝套裝評測
※Flask RESTful API 開發-基礎篇
※基礎篇與編輯器,編程HTML基礎入門竟如此簡單?
※PCB學習:PCB設計中焊盤製作基礎