ICtCp

ICTCP, ICtCp, or ITP is a color representation format specified in the Rec. ITU-R BT.2100 standard that is used as a part of the color image pipeline in video and digital photography systems for high dynamic range (HDR) and wide color gamut (WCG) imagery. It was developed by Dolby Laboratories from the IPT color space by Ebner and Fairchild. The format is derived from an associated RGB color space by a coordinate transformation that includes two matrix transformations and an intermediate nonlinear transfer function that is informally known as gamma pre-correction. The transformation produces three signals called I, CT, and CP. The ICTCP transformation can be used with RGB signals derived from either the perceptual quantizer (PQ) or hybrid log–gamma (HLG) nonlinearity functions, but is most commonly associated with the PQ function (which was also developed by Dolby).

The I ("intensity") component is a luma component that represents the brightness of the video, and CT and CP are blue-yellow (named from tritanopia) and red-green (named from protanopia) chroma components. Ebner also used IPT as short for "Image Processing Transform".

The ICTCP color representation scheme is conceptually related to the LMS color space, as the color transformation from RGB to ICTCP is defined by first converting RGB to LMS with a 3×3 matrix transformation, then applying the nonlinearity function, and then converting the nonlinear signals to ICTCP using another 3×3 matrix transformation. ICTCP was defined as a YCC digital format with support for 4:4:4, 4:2:2 and 4:2:0 chroma subsampling in CTA-861-H (that means that in limited range 10 bit mode 0, 1, 2, 3, 1020, 1021, 1022, 1023 values are reserved).

Derivation
ICTCP is defined by Rec. 2100 as being derived from linear RGB as follows:

\begin{bmatrix} L\\M\\S \end{bmatrix} = \frac{1}{4096} \begin{bmatrix} 1688 & 2146 & 262\\ 683 & 2951 & 462\\ 99 & 309 & 3688 \end{bmatrix} \begin{bmatrix} R\\G\\B \end{bmatrix} $$ \begin{bmatrix} L'\\M'\\S' \end{bmatrix} = EOTF_{PQ}^{-1} \left( \begin{bmatrix} L\\M\\S \end{bmatrix} \right) $$ \begin{bmatrix} L'\\M'\\S' \end{bmatrix} = OETF_{HLG} \left( \begin{bmatrix} L\\M\\S \end{bmatrix} \right) $$ \begin{bmatrix} I\\C_T\\C_P \end{bmatrix} = \frac{1}{4096} \begin{bmatrix} 2048 & 2048 & 0\\ 6610 & -13613 & 7003\\ 17933 & -17390 & -543 \end{bmatrix} \begin{bmatrix} L'\\M'\\S' \end{bmatrix} $$ \begin{bmatrix} I\\C_T\\C_P \end{bmatrix} = \frac{1}{4096} \begin{bmatrix} 2048 & 2048 & 0\\ 3625 & -7465 & 3840\\ 9500 & -9212 & -288 \end{bmatrix} \begin{bmatrix} L'\\M'\\S' \end{bmatrix} $$ All three above mentioned matrixes were derived (only the first 2 are documented derivations ) from the matrixes in IPT. The HLG matrix can be derived the same way as the PQ matrix, with the only difference being the scaling of the chroma rows. The inverted decoding ICTCP matrixes are specified in ITU-T Series H Supplement 18.
 * 1) Calculate LMS from BT.2100 RGB:$$
 * 1) Normalize the LMS by a non-linearity:
 * 2) * If the PQ transfer function is used:$$
 * 1) * If the HLG transfer function is used:$$
 * 1) Calculate ICTCP:
 * 2) *for PQ:$$
 * 1) *for HLG: $$

ICTCP is defined such that the entire BT.2020 space fits into the range [0, 1] for I and [-0.5, +0.5] for the two chroma components. The related uniform color space ITP used in ΔEITP (Rec. 2124) scales CT by 0.5 to restore uniformity. There is support for ICtCp in zimg (including zimg as part of FFmpeg) and color-science, for both HLG and PQ.

In IPT
The preceder to ICTCP, Ebner & Fairchild IPT color appearance model (1998), has a mostly similar transformation pipeline of input &rarr; LMS &rarr; nonlinearity &rarr; IPT. The differences are that it defines its input to the more general CIEXYZ tristimulus color space and as a result has a more conventional Hunt-Pointer-Estevez (for D65) matrix for LMS. The nonlinearity is a fixed gamma of 0.43, quite close to the one used by RLAB. The second matrix here is slightly different from the ICTCP matrix, mainly in that is also considers S (blue cone) for intensity, but ICTCP has also Rotation matrix (to align skin tones) and Scalar matrix (scaled to fit the full BT.2020 gamut inside the -0.5 to 0.5 region) multiplied with this matrix:

\begin{bmatrix} L\\M\\S \end{bmatrix} = \begin{bmatrix} 0.4002 & 0.7075 & -0.0807 \\ -0.2280 & 1.1500 & 0.0612 \\ 0 & 0 & 0.9184 \end{bmatrix} \begin{bmatrix} X\\Y\\Z \end{bmatrix} $$ X^{0.43} &\text{for } X \ge 0\\ -(-X)^{0.43} &\text{for } X < 0 \end{cases} $$ \begin{bmatrix} I\\P\\T \end{bmatrix} = \begin{bmatrix} 0.4000 & 0.4000 & 0.2000\\ 4.4550 & -4.8510 & 0.3960\\ 0.8056 &  0.3572 & -1.1628 \end{bmatrix} \begin{bmatrix} L'\\M'\\S' \end{bmatrix} $$
 * 1) Calculate LMS (see  for D65, slightly different ): $$
 * 1) Nonlinearity (L'M'S'): For each of L, M, S components apply a power function: $$X' = \begin{cases}

IPTPQc2
IPTPQc2 is another related colorspace used by Dolby Vision profile 5 BL+RPU (without EL). The "c2" in the name means a cross talk matrix is used with c = 2%. It uses full range quantization (0-1023 for 10 bit video, no values reserved). It is also often referred to as IPTPQc2/IPT, as the matrix is in fact the same as in the 1998 IPT paper, just in inverse representation. Documentation on this format is scarce due to its proprietary nature, but a patent on the "IPT-PQ" (perceptually quantized IPT) color space  The matrix is as follows:

$$ \begin{bmatrix} I\\P\\T \end{bmatrix}_{PQC2} = \left( \frac{1}{8192} \begin{bmatrix} 8192 & 799 & 1681\\ 8192 & -933 & 1091\\ 8192 & 267 & -5545 \end{bmatrix} \right)^{-1} \begin{bmatrix} L'\\M'\\S' \end{bmatrix} $$

Note the matrix inversion used and an error was made in patent in 1091 number of the matrix (the matrix after inversion is correct in patent). In addition, this format has no nonlinearity, and is assumed to be BT.2020-based.

The second step, the dynamic range adjustment modeling (reshaping ), is also defined in the patent.

It is used by Disney+, Apple TV+ and Netflix.

Decoder of IPTPQc2 with reshaping and MMR (but no NLQ and dynamic metadata) is available in libplacebo.

Support for decoding all stages was added in mpv.

Characteristics
ICTCP has near constant luminance. The correlation coefficient between encoded I and true luminance is 0.998, much higher than the 0.819 for YCBCR. An improved constant luminance versus YCBCR is an advantage for color processing operations such as chroma subsampling and gamut mapping where only the color difference information is changed.

ICTCP also improves hue linearity compared with YCBCR, which helps with compression performance and color volume mapping. Adaptive reshaping can further provide a 10% improvement on compression performance.

Improvement in luminance and hue uniformity make scaled ICTCP a practical color space for calculating color differences (ΔEITP), as introduced by ITU-R Rec. BT.2124.

In terms of CIEDE2000 color quantization error, 10-bit ICTCP would be equivalent to 11.5 bit YCBCR.

Uses
ICTCP is supported in the HEVC video coding standard. It is also a digital YCC format and can be signaled in EDID's Colorimetry block as part of CTA-861-H.