Skip to content

Commit 1b3fcb2

Browse files
committed
[css-color-hdr] Added an informative section introducing ICtCp, moved definition out from color(), #11713
1 parent 9c16161 commit 1b3fcb2

File tree

1 file changed

+126
-80
lines changed

1 file changed

+126
-80
lines changed

css-color-hdr-1/Overview.bs

Lines changed: 126 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,15 @@ WPT Display: open
4646
"publisher": "VESA",
4747
"date": "17 May 2024"
4848
},
49+
"Development_ITP": {
50+
"authors": [
51+
"F.Ebner",
52+
"M.D.Fairchild"
53+
],
54+
"title": "Development and testing of a color space (IPT) with improved hue uniformity. In: Proceedings of The Sixth Color Imaging Conference, 8-13, 1998",
55+
"date": "January 1998",
56+
"href": "https://www.researchgate.net/publication/221677980_Development_and_Testing_of_a_Color_Space_IPT_with_Improved_Hue_Uniformity"
57+
},
4958
"ISO_21496-1": {
5059
"title": "Gain map metadata for image conversion: Part 1: Dynamic Range Conversion",
5160
"href": "https://www.iso.org/standard/86775.html",
@@ -583,6 +592,123 @@ Mixing Dynamic Range Limits: the ''dynamic-range-limit-mix()'' function {#dynami
583592
</pre>
584593
</div>
585594

595+
<!-- Big Text: ICTCP Jaz -->
596+
597+
<h2 id="DI-HDR">
598+
Device-Independent HDR Colors
599+
</h2>
600+
601+
In the same way that [[css-color-4#lab-colors]]
602+
allows specifying device-independent SDR colors,
603+
this specification allows specifying device-independent HDR colors.
604+
605+
<h3 id="ictcp-intro" class="informative">
606+
Introducing ICtCp
607+
</h3>
608+
609+
<em>This section is not normative.</em>
610+
611+
The IC<sub>T</sub>C<sub>P</sub> color space
612+
has better perceptual uniformity than CIE Lab,
613+
and is used as a part of the color image pipeline
614+
in video and digital photography systems
615+
for high dynamic range (HDR) and wide color gamut (WCG) imagery.
616+
617+
The T and P subscripts
618+
refer to the Tritanope (yellowness-blueness)
619+
and Protanope (redness-greenness)
620+
opponent color axes in the human visual system.
621+
To avoid pesky subscripts,
622+
the simplification ICtCp is frequently used.
623+
624+
IC<sub>T</sub>C<sub>P</sub> was
625+
originaly developed by Dolby Laboratories [[!What_is_ICtCp]]
626+
from the IPT color space by Ebner and Fairchild
627+
[[!Development_ITP]],
628+
and is defined in [[!Rec_BT.2100]] as the
629+
Constant Intensity IC<sub>T</sub>C<sub>P</sub> signal format.
630+
It was intended to replace YCbCr [[Perrin]].
631+
632+
It is based on the human visual system LMS cone primaries;
633+
the Hunt-Pointer-Estevez (HPE) XYZ to LMS transform
634+
is used,
635+
normalized to a [=D65=] whitepoint.
636+
A 4% crosstalk matrix is then applied [[What_is_ICtCp]],
637+
to reduce the gamut hull concavities of BT.2020 RGB,
638+
thus reducing interpolation errors.
639+
The crosstalk also provides improved lines of constant hue
640+
and improved uniformity of Just Noticeable Difference (JND) MacAdam ellipses.
641+
642+
Unlike ''Lab'', which has primarily been tested with
643+
lower-intensity <em>reflective</em> colors,
644+
IC<sub>T</sub>C<sub>P</sub> has been tested with
645+
high-chroma (wide color gamut),
646+
self-luminous, and
647+
high intensity (HDR) colors.
648+
This makes it suitable for HDR color difference measurement
649+
<a href="#deltaE">(deltaE ITP)</a>
650+
and for gamut mapping of mixed SDR and HDR colors.
651+
652+
<dfn export>ICtCp</dfn> {#ICtCp}
653+
-----------------
654+
655+
The ''ICtCp'' color space accepts three numeric parameters,
656+
with I representing the Intensity
657+
(similar to L in Lab, but covering a luminance range
658+
up to 10,000 cd/m<sup>2</sup>)
659+
while C<sub>T</sub> and C<sub>P</sub> represent the
660+
yellowness-blueness (tritanope) and
661+
redness-greenness (protanope)
662+
opponent-color axes (similar to b and a, respectively, in Lab).
663+
664+
It has the following characteristics:
665+
666+
<table>
667+
<thead><td></td><td>x</td><td>y</td></thead>
668+
<tr><th>White chromaticity</th><td colspan="2">[=D65=]</td></tr>
669+
<tr><th>Transfer function</th><td colspan="2">Perceptual Quantizer</td></tr>
670+
<tr><th>White luminance</th><td colspan="2">203 cd/m²</td></tr>
671+
<tr><th>Peak white luminance</th><td colspan="2">10,000 cd/m²</td></tr>
672+
<tr><th>Black luminance</th><td colspan="2">0.001 cd/m²</td></tr>
673+
<tr><th>Image state</th><td colspan="2">display-referred</td></tr>
674+
<tr>
675+
<th>Percentages</th>
676+
<td colspan="2">Allowed for I, Ct and Cp</td>
677+
</tr>
678+
<tr>
679+
<th>Percent reference range</th>
680+
<td>for I: 0% = 0.0, 100% = 1.0<br>
681+
for Ct and Cp: -100% = -0.5, 100% = 0.5</td>
682+
</tr>
683+
</table>
684+
685+
Although [[Rec_BT.2100]] defines IC<sub>T</sub>C<sub>P</sub>
686+
by a conversion from linear-light BT.2100 RGB [[Rec_BT.2100]],
687+
this conversion proceeds via LMS
688+
and thus, any other color space can also be represented
689+
by applying an XYZ to LMS transform
690+
as shown in [[What_is_ICtCp]].
691+
The <a href="#ictcp_code">sample code</a> uses this approach.
692+
693+
<div class="example">
694+
This color represents the sRGB color "lime" in ''ICtCp''
695+
<pre>
696+
<span class="swatch" style="--color: lime"></span> color(ictcp 0.5393 -0.2643 -0.0625)
697+
</pre>
698+
</div>
699+
700+
<div class="example">
701+
This color represents a comfortable "diffuse white"
702+
This color can be displayed for long periods,
703+
or used for subtitles,
704+
on any sized area of the screen.
705+
It is the same color as sRGB ''white''.
706+
Diffuse white is 203 cd/m² [[!Rec_BT.2100]].
707+
<pre>
708+
<span class="swatch" style="--color: white"></span> color(ictcp 0.58069 0 0)
709+
</pre>
710+
</div>
711+
586712
<!-- Big Text: color()
587713

588714
███▌ ███▌ █▌ ███▌ ████▌ ██ ██
@@ -1049,87 +1175,7 @@ Converting JzCzHz colors to Jzazbz colors</h4>
10491175
<li>Jz is the same
10501176
</ol>
10511177

1052-
<dfn export>ICtCp</dfn> {#ICtCp}
1053-
-----------------
1054-
1055-
The ''ICtCp'' color space [[!Perrin]]
1056-
is defined as Constant Intensity IC<sub>T</sub>C<sub>P</sub> signal format
1057-
in [[!Rec_BT.2100]] and accepts three numeric parameters,
1058-
with I representing the Intensity
1059-
(similar to L in Lab, but covering a luminance range
1060-
up to 10,000 cd/m<sup>2</sup>)
1061-
while C<sub>T</sub> and C<sub>P</sub> represent the
1062-
yellowness-blueness (tritanope) and
1063-
redness-greenness (protanope)
1064-
opponent-color axes (similar to b and a, respectively, in Lab).
1065-
1066-
It is based on human visual system LMS cone primaries;
1067-
the Hunt-Pointer-Estevez (HPE) XYZ to LMS transform
1068-
is used,
1069-
normalized to a [=D65=] whitepoint.
1070-
A 4% crosstalk matrix is then applied [[What_is_ICtCp]],
1071-
to reduce the gamut hull concavities of BT.2020 RGB,
1072-
thus reducing interpolation errors.
1073-
The crosstalk also provides improved lines of constant hue
1074-
and improved uniformity of Just Noticeable Difference (JND) MacAdam ellipses.
1075-
1076-
It has the following characteristics:
1077-
1078-
<table>
1079-
<thead><td></td><td>x</td><td>y</td></thead>
1080-
<tr><th>White chromaticity</th><td colspan="2">[=D65=]</td></tr>
1081-
<tr><th>Transfer function</th><td colspan="2">Perceptual Quantizer</td></tr>
1082-
<tr><th>White luminance</th><td colspan="2">203 cd/m²</td></tr>
1083-
<tr><th>Peak white luminance</th><td colspan="2">10,000 cd/m²</td></tr>
1084-
<tr><th>Black luminance</th><td colspan="2">0.001 cd/m²</td></tr>
1085-
<tr><th>Image state</th><td colspan="2">display-referred</td></tr>
1086-
<tr>
1087-
<th>Percentages</th>
1088-
<td colspan="2">Allowed for I, Ct and Cp</td>
1089-
</tr>
1090-
<tr>
1091-
<th>Percent reference range</th>
1092-
<td>for I: 0% = 0.0, 100% = 1.0<br>
1093-
for Ct and Cp: -100% = -0.5, 100% = 0.5</td>
1094-
</tr>
1095-
</table>
1096-
1097-
Although [[Rec_BT.2100]] defines IC<sub>T</sub>C<sub>P</sub>
1098-
by a conversion from linear-light BT.2100 RGB [[Rec_BT.2100]],
1099-
this conversion proceeds via LMS
1100-
and thus, any other color space can also be represented
1101-
by applying an XYZ to LMS transform
1102-
as shown in [[What_is_ICtCp]].
1103-
1104-
Note that unlike CIE ''Lab'', a [=D65=] whitepoint is used.
1105-
1106-
Also unlike ''Lab'', which has primarily been tested with
1107-
lower-intensity reflective colors,
1108-
IC<sub>T</sub>C<sub>P</sub> has been tested with
1109-
high-chroma,
1110-
self-luminous, and
1111-
high intensity (HDR) colors.
1112-
This makes it suitable for color difference measurement (deltaE ITP)
1113-
and for gamut mapping of SDR and HDR colors.
1114-
1115-
<div class="example">
1116-
This color represents the sRGB color "lime" in ''ICtCp''
1117-
<pre>
1118-
<span class="swatch" style="--color: lime"></span> color(ictcp 0.5393 -0.2643 -0.0625)
1119-
</pre>
1120-
</div>
11211178

1122-
<div class="example">
1123-
This color represents a comfortable "diffuse white"
1124-
This color can be displayed for long periods,
1125-
or used for subtitles,
1126-
on any sized area of the screen.
1127-
It is the same color as sRGB ''white''.
1128-
Diffuse white is 203 cd/m² [[!Rec_BT.2100]].
1129-
<pre>
1130-
<span class="swatch" style="--color: white"></span> color(ictcp 0.58069 0 0)
1131-
</pre>
1132-
</div>
11331179

11341180
<!-- Big Text: composite
11351181

0 commit comments

Comments
 (0)