如何做張讓人眼前一「亮」的照片:增益圖 HDR 與 HDR 工作流

HDR 視頻大家都很熟悉了,因爲視頻,特別是電影,引入 HDR 技術的商業價值更高。iPhone 能拍攝杜比視界的視頻,而其他品牌手機能拍攝HDR10兼容的視頻。直播一般使用的是HLG HDR視頻。這些都是成熟、且在各自領域已被被廣泛兼容的標準。

然而照片並沒有這麼好的待遇,直到 2023 年 Adobe 和 Apple 才聯合發佈了第一版 HDR 照片標準 (ISO/TS 22028-5:2023),在後文中這一標準稱爲ISO HDR。

▍HDR 與 SDR 的區別

ISO HDR的標準實際上照抄了影視行業的做法。HDR 的全稱是高動態範圍 (High Dynamic Range),也就是說圖像中暗部和亮部細節都要完好保留。一張圖來解釋之:

對 HDR 與 SDR 的直觀解釋。素材 ©Mircea Iancu on Pixabay

在 SDR 屏幕上直接不做處理查看 HDR 照片,看到的效果如上圖的左 1。本文使用張家界天門山的一張照片作爲演示,左 1 的實際效果如下:

不經過處理查看 HDR 的效果和照片過曝一致

該如何解決?方法被稱爲色調映射 (tone mapping),也就是將 HDR 信息壓縮進 SDR 的高度,有很多種不同的方案,得到的結果也不同。類似於左 2 的壓縮方式效果爲:

看起來正常很多了的 SDR 照片

那真正的 HDR 照片是什麼樣子的?我也附了一張在下方。但你看到它的時候已經不是 HDR 了,因爲有三個階段可能出現問題:

真正的 HDR 照片,但它已經被服務器轉換了,所以你看不出來

服務器端的壓縮:一張照片上傳到網上,服務端可能會爲了節約空間將其壓縮爲其他格式以減少體積,在這個過程中可能會丟失 HDR 信息,屬於傳輸問題;

設備對 HDR 內容進行解碼:要求設備能將該照片識別爲 HDR,例如對於瀏覽器:桌面版的 Chrome 和 Edge 支持顯示增益圖 HDR,但 Safari 全系不支持。Windows 11 的圖庫對 HDR 有限支持,而 Apple 平臺在 iOS/iPad OS 18.1 以及 macOS 15.1之後,基本支持主流的 HDR 格式。此外,App 客戶端需要額外參數才能實現 HDR 顯示。這些屬於軟件問題;

兼容的顯示器:要求設備屏幕支持 HDR 。屬於硬件問題。

我們暫且不考慮問題 1 ,而問題 3 是錢就能解決的(買新硬件)。問題 2 是普及 HDR 照片的關鍵。

▍照片 HDR 的標準

回到 ISO HDR 上來,我們知道,每個像素點可用四個整型 (Int) 來表示,即 R、G、B 以及透明度 A。爲方便其見,我們只考慮一個通道(即只考慮 R)。在 8 bit 下的照片中,最亮的亮度記爲 255 (2^8−1),而最暗的像素記爲 0。

從 0 到 255 的灰度圖

我們把 255 對應的亮度記爲 SDR 下的最大亮度,其標準爲 200 nit。超過 200 nit 的部分就屬於 HDR 的範疇了:

超過 200 nit 就進入到 HDR 的範圍(此圖片已轉化爲 SDR)

最簡單的處理辦法,就是聲明該圖片是 HDR 的。超過 SDR 範圍的像素用大於 255 的數值去儲存之。照片的位數也需要從 8 bit 增加到至少 10 bit。在 10 bit 下,亮度最大爲 1023,相當於是 255 的 3.11 倍。

爲什麼不是 4 倍而是 3.11 倍?這涉及到伽馬這個參數。簡單來說就是人的眼睛對光的感受是對數的不是線性的。如果四個圖像看起來的亮度依次爲 1、2、3、4,那實際光強爲10:43:106:200。一般來說顯示器的伽馬爲 2.2,4^(1/2.2) = 3.11。

所以繼續沿用 2.2 的伽馬,10 bit 並不夠用!對於一個亮度最高 6400 nit 的物體(相當於 SDR 的 32 倍),我們需要 8+14 = 22 bit 才能儲存,這一開銷(接近 3 倍的文件體積)是不合算的。PQ 和 HLG HDR 定義了一個映射方式,對高亮度數據佔用的信息進行壓縮。因爲人眼對光的敏感性是指數的,比如說只有亮度差大於 2% 才能肉眼看出來。因此記錄數據時,沒必要從亮度 500 至 600 每隔 1 就記錄一下,完全可以 500、510、520、531、541、552…… 大幅減少所需的數據量。選擇合適的映射方式,使用 10 bit 就能在不丟失肉眼精度的情況下,將數據映射到最高 10,000 nit 的亮度。

伽馬 2.2 的曲線(紅)與某種 HLG 的曲線(藍色)

我們把整型映射到 0-1 範圍的浮點中。在 SDR 空間中,200 nit 的亮度以 1.00 儲存。而在上圖對應的 HLG 中,這一亮度大約以 0.55 進行儲存。1000 nit 的亮度將以約 0.75 進行儲存(橫座標 5),而 1.00 的數據會對應 2400 nit 的亮度。我們把這個照片最高支持的餘量 (headroom) 稱爲 12,即表示 HDR 亮度最大爲 SDR 的 12 倍。

現在來考慮該如何解碼這一圖像。如果軟件知道你使用的是 PQ 或者 HLG ,那它將正確的把 0.55 映射到 200 nit、0.75 映射到 1000 nit、1.00 映射到 2400 nit。但如果軟件並不知道,仍然以錯誤的伽馬 2.2 對其進行處理,那麼這些亮度將變成 110、150 以及 200nit,即出現了色調映射(好在 HLG HDR 考慮了這一問題,這種映射不能說是錯誤的,因爲 SDR 部分得到了正確呈現,只不過亮度有所降低):

這是一個以 HLG 曲線儲存的照片,如果你用瀏覽器查看能看到 HDR 效果

第二個問題在於,創作者可能使用的是最高 1600 nit 的顯示器,並創作了在這個範圍內的作品,但觀衆使用的是最高 400 nit 的顯示器,其只能顯示比 SDR 亮一倍的內容。這個時候,有兩種辦法進行處理。第一個稱爲滾降 (roll-off),第二個被稱爲硬切 (hard-clipping)。

滾降和硬切的解釋

滾降本質上也是一種色調映射,且這種操作是軟件(甚至是顯示器本身)進行的,不可控。那有沒有辦法做到最大的兼容性?最簡單的做法就是:我把 SDR 和 HDR 照片打包一塊,支持你就看 HDR,不支持就 SDR。

這一方法最大的缺點就是——文件體積翻倍。有沒有優雅一些的方案?這時候增益圖 HDR 就出來了。

▍增益圖 HDR

早在 2020 年,Apple 發佈 iPhone 12 後,就引入了私有的一套 HDR 儲存、顯示流程,被稱爲 Apple HDR。簡單來說,我們只記錄 SDR 圖片本身(稱爲基本圖),以及 SDR 與 HDR 之間的亮度差異作爲增益圖:

增益圖 HDR 的圖示 ©Google

上圖左側爲 HDR 照片,中間爲 SDR 照片。兩個照片的亮度差異可用單色的右圖表示。單色照片儲存所需的空間要小得多,因此整體文件大小不會比 SDR 多多少。

天門山照片的增益圖,其信息量很少因此佔用空間不多

Apple HDR 是私有的,後來 Adobe 申請了一系列專利,並拉上 Apple 一塊推出了增益圖 HDR 的國際標準 ( ISO/DIS 21496-1 ),在本文中稱之爲ISO 增益圖。

在 ISO 增益圖標準中,增益圖通道數量可選單色或者 RGB。RGB 增益圖包含三個通道,其體積也相應地會有增加。比如 iOS 18 開始,iPhone 15、16 系列拍攝得到的是 RGB 增益圖的 HEIC 或 JPG,iPhone 14 及之前得到的是單色增益圖的 HEIC 或 JPG。

通過上變換獲得 Adaptive HDR(Apple 平臺的 ISO 增益圖 HDR)©Apple

增益圖每個通道的每個像素,取值範圍會映射到 [−1, 1]。正數表示在基本圖的基礎上增加亮度,負數表示在基本圖的基礎上降低亮度。因此 ISO 增益圖,可以用 HDR 照片作爲基本圖,SDR 照片通過 HDR 和增益圖計算出來。

ISO 增益圖 HDR 支持的格式包括:JPEG、HEIC、AVIF、JXL、TIFF 等。理論上每個格式都有單色和 RGB 增益圖兩個選項。HEIC、AVIF、JXL、TIFF 等格式可選下變換(HDR 作爲基本圖)或者上變換(SDR 作爲基本圖),下變換還可以選擇 PQ 或者 HLG 作爲 HDR 基本圖的曲線。粗略來看,一共有超過 34 種可能的組合。

又回到兼容性上來,畢竟 ISO 增益圖是 2024 年才推出的標準,並不是所有的組合在目前都能被廣泛兼容。

谷歌負責 JPG 格式的增益圖的實際應用,並制定了 UltraHDR 庫(即 JPG 格式的增益圖 HDR)。UltraHDR 有兩種可能的方式:單色增益圖或 RGB 增益圖。即使 UltraHDR 種類只有兩種,但兼容性也存在問題。

UltraHDR 的文件結構 ©Google

例如在 iOS 18.1之前,Apple 設備(macOS 除外)無法識別 Adobe 輸出的 RGB 增益圖 JPG 文件。現在支持分享 HDR 圖片的社區(例如 Instagram、酷安),也都會先把任何格式的 HDR 轉化爲單色增益圖 JPG,並可能導致亮度的一些變化。

所以,並不建議直接分享 ISO HDR 或者 RGB 增益圖 HDR,而是需要將他們轉化爲單色增益圖 HDR。在考慮這個問題之前,我先總結了獲得 ISO 增益圖 HDR 的方法:

Android 手機直接拍攝:獲得的是單色增益圖的 UltraHDR,UltraHDR 在 Android 14 引入;

Adobe 的 ACR 輸出:獲得 RGB 增益圖的 JPG、TIFF、PNG、AVIF 和 JXL。其中 JPG、AVIF 和 TIFF是上變換,JXL 是下變換;

iPhone 拍攝:15 和 16 獲得 RGB 增益圖的 HEIC 或 JPG,14 以及之前獲得單色增益圖的 HEIC 或 JPG;

使用 libultrahdr 庫:可輸出單色或 RGB 增益圖的 JPG;

使用 Apple 平臺的 ciimage api:可輸出 RGB 增益圖的 HEIC 或 JPG。

▍HDR 照片工作流

軟件

桌面端,處理 RAW 文件首選使用 Lightroom(收費),Darktable (開源軟件)支持輸出EXR、AVIF (PQ HDR) 格式的照片,Photomator(收費)支持輸出 ISO HDR 文件。

移動端仍然建議使用 Lightroom(收費)。Photomator(收費)等軟件也支持輸出 ISO HDR 文件。

顯示器

桌面端你需要一個HDR1000 認證的顯示器獲得最佳效果,最低也要 HDR600。推薦使用 M1 Pro 芯片以後的 14 或 16 寸 MacBook Pro,最高支持 1600 nit 亮度。 其餘 MacBook 在中低亮度下可提供最高 1 檔的餘量 (headroom = 2)。

HDR1000 的顯示器在保證 SDR 200nit 的情況下還有 2 檔以上的 HDR 空間

移動端建議 iPhone 12 及更新的機型(不包括 SE 3)或系統版本在 Android 14 以上且支持 HDR 顯示的安卓。iPad 只建議最新的 M4 Pro 或者 miniLED 款 12.9 寸 Pro,否則只能提供最高 1 檔的餘量:

Apple 設備的 HDR 兼容性,最高 5x SDR 纔有較好效果 ©Apple

輸出與儲存

處理完成後,照片以 HDR 的格式進行輸出,LR 可直接輸出 AVIF、JPG 或 JXL 等小體積格式。或者輸出 16 bit 的 ISO HDR(如 PNG、TIFF)、EXR 作爲中間文件進行後續壓縮。

目前 LR 支持輸出 5 種 HDR 格式

根據需求,對照片進行壓縮。如果不需要兼容性(例如只儲存在本地,不分享不上雲),可採用 ISO HDR 進行儲存。建議使用 10bit HEIC、AVIF 或 JXL,曲線可選 PQ 或 HLG。

如果需要兼容性,例如社交軟件分享,雲儲存,可選單色增益圖 HDR,或者使用 RGB 增益圖 HDR,等未來普及(比如目前 Google Photos 不支持識別 RGB 增益圖 HEIC)。

不推薦以 UltraHDR 儲存,JPEG 壓縮效率低質量相比較差。但可以將其用於照片分發。

macOS 平臺生成 HEIC HDR 的 CLi 工具

在 macOS 平臺,我寫了一個命令行工具用於將 HDR 照片轉化爲 ISO 增益圖或 ISO HDR 格式的 HEIC 文件。支持生成單色增益圖獲得最大兼容性。軟件以 MIT 協議開源。

https://sspai.com/post/94425?utm_source=wechat&utm_medium=social

作者:chemharuka

責編:廣陵止息