繼 3D, 4K, 之後, 最近流行 HDR (high dynamic range). 除了亮到讓人眼睛快瞎掉的 Dolby Vision 之外, 還有簡單版的 HDR10. 根據 [1] 的說法, CEA (Consumer Electronics Association) 規範要符合以下的條件才算支援 HDR10 (CEA 861.3):
- EOTF: SMPTE ST 2084
- Color Sub-sampling: 4:2:0 (for compressed video sources)
- Bit Depth: 10 bit
- Color Primaries: ITU-R BT.2020
- Metadata: SMPTE ST 2086, MaxFALL, MaxCLL
其中, 一定要支援 10 bit 就不用說了, 不然怎麼能叫 HDR 10. Color format 要支援 4:2:0 也很容易理解, 大部分的 video decoder 都支援 420. 至於 EOTF (electro-optical transfer function), 如字面上所說是電光轉換. 也就是一個視訊的強度 (10~12 bit), 要如何對應到電視上的亮度 (0~10,000 nit = cd/cm2).
在薄薄 14 頁要賣 50 美元的 ST 2084 規格中, input linear color value L 和 output optical value C (單位是 cd/cm2) 可以有線性對應: C = 10,000 x L. 以及非線性的對應公式.
根據 Barten Ramp (BT.2246) [2], 亮度極低時, 對比不重要. 亮度極高時, 人類對對比的感覺飽和. 粉紅色部分是人類看得到的, 淡綠色是人類看不出來的. 縱軸是每個灰階佔多少百分比. (我推了一下, 這百分比應該是非線性的量化, 日後再補充.) 這條 Barten Ramp 大概落在 10 bit 左右. 所以不到 10 bit 就不算是 HDR.
接下來, 看一下 BT. 2020. 它是下圖黑色的三角形, 而我們一般的 HDTV 所用的 rec. 709, 則是黃色的小三角形. 而整個彩色的部分, 就是人類可以看到的色域 (color space). 那麼下圖的 x, y 又各是什麼呢?請參考 CIE 1931 color space [3], 其實它是三維的 XYZ. Y 代表亮度 (luminance), Z 是人類對藍色訊號的反應 – 也就是人眼 S cone 細胞的反應. X 代表 cone 細胞的非負反應的線性組合. 據說 XZ 就可以代表人類對顏色的反應.
不過, 講了半天. XYZ 怎麼變成 xy 了?因為我們現在談色域, 所以亮度就不重要了. 重新定義 x = X / (X+Y+Z), y = Y / (X+Y+Z). 那麼 z = 1-x-y 可以忽略不談, 我們知道 xyz 和 XYZ 可以互轉. 最後我們就用 x, y 來表示整個色域, 靠近紅色的部分是 x 大 y 小. 靠近藍色是 x 小 y 小, 靠近綠色是 x 小, y 大. 上圖把波長 (單位 nm) 都標上去了.
總而言之, HDR BT2020 必須是大黑三角形這裡面涵蓋的顏色. 啊!為何有時叫做 BT 2020, 有時叫做 Rec 2020 呢?因為 BT 是 ITU-R 的分類, Rec 是 Recommendation ITU-R BT.xxx 的起始字, 所以兩者是同一個東西.
接下來解釋 meta data, 在更薄沒有更便宜 – 還是 50 USD, 只有 6 頁厚的 st 2086 裡面規範了, meta data 要包括一個 display primaries 描述色域圖 (color space) 上三個點頂的座標, 以及一個白點 (white point) – 上面的色域圖中間最白的那一點就是了. 這幾個數字都要精確到四位小數.
最後 metadata 需要描述 luminance 的最大值和最小值 (單位是 cd/cm2), 需要四位數字和兩位小數. 因為影片若不包括 luminace 的訊息, 光是看到 YUV 的 10 bit 也無法反推此數字. 因此在片源 (bit stream) 中 必須把這個值保留在 VUI/SEI, 才能傳給電視知道.
[REF]