Rec. ITU-R BT.2100 小註解

又來一個新的 HDR 規格 – BT.2100 [1]. 難道它能讓我們看到更多顏色?不!比較 WIKI 2020 和 WIKI 2100 的 CIE 1931 chromaticity diagram, 兩者可是長得一模一樣.

Chroma那是有更多 bit ?也不是, 兩者都可以到 12 bit. 主要的差異是 BT. 2020 只定義了色域, 沒有定義 HDR 的 OTP (optical transfer function). 而 BT. 2100 明定了 HDR, 因此也有人說 BT. 2100 = BT. 2020 + HDR [2].

BT. 2100 的 HDR 有兩種選擇:

  1. PQ (Perceptual Quantization), 用於 HDR10 和 Dolby Vision.
  2. HLG (Hybrid Log-Gamma)

在 resolution 的方面, 它定義了 1080, 4K, 8K. Frame rate 則支持常用的幾種. 24, 25, 30, 50, 60, 100 and 120 fps (frames per second).

回過頭來看什麼是 PQ? PQ 是SMPTE ST 2084 中所描述的 HDR transfer function.一如它的名稱, perceptual 是感知的, quantization 是量化. 因此這條轉換曲線是根據人的視覺所覺能力所決定的. 在 ref [1] 裡面可以查到 OETF (Optical to Electro transfer function), EOTF 和 OOTF.

HLG 比較著重和 SDR 的相容性, 在 SDR 這段區間裡, 兩者沒有太大的差異. 因此公式也簡單多了. 這樣的好處是 HDR 的片子放在 SDR 的電視上看也不容易失真 [4]. 若是用 PQ 的HDR 播在 SDR TV 上就會變成慘白狀.

hlg-at-sdr-tv

[Note] 上圖擷取自 WIKI [3].

再來解釋 PQ10 和 HLG10, 它和 HDR10 有何不同呢? HDR10 是完整的規格, 所以有色域 (BT. 2020), 有 EOTF (也就是 PQ),  有 10 bit, 有 metadata (BT. 2086, MaxCLL, MaxFALL). PQ10 和 HLG10 就只是 PQ 和 HLG 在 10 bit 的 EOTF/OETF 轉換方式.

其中, MaxCLL, MaxFALL 定義於 Blu-ray Disc 規格, 由於在後製的時候才能算出整個 program 的最大亮度, 故現場直播 (live program) 時, 這兩個值是 0.

  • MaxxFALL – Maximum Frame Average Light Level; this is the largest average pixel light value of any video frame in the program
  • MaxCLL – Maximum Content Light Level: this is the largest individual pixel light value of any video frame in the program

[REF]

  1. https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.2100-0-201607-I!!PDF-E.pdf
  2. http://www.flatpanelshd.com/news.php?subaction=showfull&id=1467719709
  3. https://en.wikipedia.org/wiki/Hybrid_Log-Gamma
  4. https://tech.ebu.ch/docs/events/IBC2015/IBC_Fact_Sheet_HDR_Demo_Final.pdf

Philips HDR 白皮書小註解

根據 WIKI 的記載, HDMI 2.1 的規格來自於 Philips HDR 白皮書 [1]. 雖然這句話簡直不能說是中文: “HDMI 2.0A涵蓋HDR EOTF信令和靜態後設資料後設資料的動態是HDMI 2.1所涵蓋。" 那麼, 我們來看一下白皮書吧!

白皮書認為: 電視或影片大致分為 HDR 和 SDR 兩大類. 我們只需要壓出一種品質的片子, 然後帶一些參數, 就可以在 HDR 或 SDR 的電視上播放!  (白皮書的圖如下)

Philips-White-Paper-768x372

如果一開始就製作出 HDR 品質的片子, 那麼以 HDR 播出一定不會是問題. 至於怎麼產生出 SDR 的版本, 白皮書說這是 colorist 或 artist 要做的工作. 他們根據 frame 或是 scene 的場景轉換, 分別調整出對應的 content-dependent 的 tone mapping 參數. 然後把調好的參數, 根據定價 120 USD 的 SMPTE standard ST 2094-20 [2], 放進 video bit stream 的 SEI ( supplemental enhancement information) [3].  

class SEIToneMappingInfo : public SEI
{
Public:
 PayloadType payloadType() const { return TONE_MAPPING_INFO; }
 SEIToneMappingInfo() {}
 virtual ~SEIToneMappingInfo() {}
 Int m_toneMapId;
 Bool m_toneMapCancelFlag;
 Bool m_toneMapPersistenceFlag;
 Int m_codedDataBitDepth;
 Int m_targetBitDepth;
 Int m_modelId;
 Int m_minValue;
 Int m_maxValue;
 Int m_sigmoidMidpoint;
 Int m_sigmoidWidth;
 std::vector<Int> m_startOfCodedInterval;
 Int m_numPivots;
 std::vector<Int> m_codedPivotValue;
 std::vector<Int> m_targetPivotValue;
 Int m_cameraIsoSpeedIdc;
 Int m_cameraIsoSpeedValue;
 Int m_exposureIndexIdc;
 Int m_exposureIndexValue;
 Bool m_exposureCompensationValueSignFlag;
 Int m_exposureCompensationValueNumerator;
 Int m_exposureCompensationValueDenomIdc;
 Int m_refScreenLuminanceWhite;
 Int m_extendedRangeWhiteLevel;
 Int m_nominalBlackLevelLumaCodeValue;
 Int m_nominalWhiteLevelLumaCodeValue;
 Int m_extendedWhiteLevelLumaCodeValue;
};

至於調整參數時用的電視的 st 2086 規範中的參數, 當然也要放進去. ( The characteristics of the display used for grading or monitoring, such as peak luminance and black level, are added as SMPTE ST 2086 metadata to the video stream. )

另外一個變形是, 傳出 SDR 的 video bit stream, 並且帶上一些參數, decoder 端原則可以解出 SDR 版本, 並且透過計算產生 inverse dynamic range conversion 的 HDR 版本. 這些轉換原理不管壓成  SDR 或是 HDR bit stream 時都是一樣的. 但是為了確保在 decoder 端 (通常是 OTT 或是 STB) 可以把 SDR 再還原出 HDR, 在 encoder 端做 HDR 轉 SDR 的時候, 不能夠用到硬砍的方式 (hard clipping is not allowed).

上述的討論只限於 decoder 和 encoder 之間, 還沒有考慮到 HDMI. 畢竟 HDMI 只傳 raw data, 可想而知那些相關的係數都要透過額外的 HDMI 封包來傳. 在 HDMI 2.0 的時代, 我們通常是傳靜態的 ST 2086 metadata. 至ˊ於動態的部分, 目前 HDMI 的網站 [4] 還沒看到 2.1 的規格, 只看到 2.0b 而已.

[REF]

  1. http://www.flatpanelshd.com/downloads/philips_hdr_white_paper.pdf
  2. http://www.techstreet.com/standards/smpte-st-2094-20-2016?product_id=1922111
  3. https://hevc.hhi.fraunhofer.de/HM-doc/_s_e_i_8h_source.html
  4. http://www.hdmi.org/manufacturer/

HDR10 小註解

繼 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.

Barten-Ramp-768x462

接下來, 看一下 BT. 2020. 它是下圖黑色的三角形, 而我們一般的 HDTV 所用的 rec. 709, 則是黃色的小三角形. 而整個彩色的部分, 就是人類可以看到的色域 (color space). 那麼下圖的 x, y 又各是什麼呢?請參考 CIE 1931 color space [3], 其實它是三維的 XYZ. Y 代表亮度 (luminance), Z 是人類對藍色訊號的反應 – 也就是人眼 S cone 細胞的反應. X 代表 cone 細胞的非負反應的線性組合. 據說 XZ 就可以代表人類對顏色的反應.

bt709and2020

不過, 講了半天. 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]

  1. http://www.flatpanelshd.com/news.php?subaction=showfull&id=1441170458
  2. https://www.smpte.org/sites/default/files/2014-05-06-EOTF-Miller-1-2-handout.pdf
  3. CIE 1931 color space