# ICtCp

IC$_T$C$_P$, 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, C$_T$, and C$_P$. The IC$_T$C$_P$ 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 C$_T$ and C$_P$ 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 IC$_T$C$_P$ color representation scheme is conceptually related to the LMS color space, as the color transformation from RGB to IC$_T$C$_P$ 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 IC$_T$C$_P$ using another 3×3 matrix transformation. IC$_T$C$_P$ 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

IC$_T$C$_P$ is defined by Rec. 2100 as being derived from linear RGB as follows:
* Calculate LMS from BT.2100 RGB:${\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}}$
* Normalize the LMS by a non-linearity:
** If the PQ transfer function is used:${\begin{bmatrix}L'\\M'\\S'\end{bmatrix}}=EOTF_{PQ}^{-1}\left({\begin{bmatrix}L\\M\\S\end{bmatrix}}\right)$
** If the HLG transfer function is used:${\begin{bmatrix}L'\\M'\\S'\end{bmatrix}}=OETF_{HLG}\left({\begin{bmatrix}L\\M\\S\end{bmatrix}}\right)$
* Calculate IC$_T$C$_P$:
** for PQ:${\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}}$
** for HLG: ${\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 IC$_T$C$_P$ matrixes are specified in ITU-T Series H Supplement 18.
IC$_T$C$_P$ 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 ΔE$_{ITP}$ (Rec. 2124) scales C$_T$ 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 IC$_T$C$_P$, Ebner & Fairchild IPT color appearance model (1998), has a mostly similar transformation pipeline of input → LMS → nonlinearity → 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 IC$_T$C$_P$ matrix, mainly in that is also considers S (blue cone) for intensity, but IC$_T$C$_P$ 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:
* Calculate LMS (see LMS color space § Hunt, RLAB for D65, slightly different): ${\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}}$
* Nonlinearity (L'M'S'): For each of L, M, S components apply a power function: $X'={\begin{cases}X^{0.43}&{\text{for }}X\geq 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}}$

### 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 seems to describe how Dolby changed the domain to PQ by changing the traditional power function from 1998 IPT paper to PQ function for each of LMS components. 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

IC$_T$C$_P$ has near constant luminance. The correlation coefficient between encoded I and true luminance is 0.998, much higher than the 0.819 for YC$_B$C$_R$. An improved constant luminance versus YC$_B$C$_R$ is an advantage for color processing operations such as chroma subsampling and gamut mapping where only the color difference information is changed.
IC$_T$C$_P$ also improves hue linearity compared with YC$_B$C$_R$, 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 IC$_T$C$_P$ a practical color space for calculating color differences (ΔE$_{ITP}$), as introduced by ITU-R Rec. BT.2124.
In terms of CIEDE2000 color quantization error, 10-bit IC$_T$C$_P$ would be equivalent to 11.5 bit YC$_B$C$_R$.

## Uses

IC$_T$C$_P$ 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.