Laser displays - Part 6-1: Visualization method of colour gamut intersection

IEC 62906-6-1:2025 specifies a two-dimensional visualization method of the colour gamuts of a device under test (DUT) and a reference (REF) in the CIE 1976 L*a*b* (CIELAB) colour space and the intersection between them. This document applies to front projection displays which use either lasers or laser hybrid, or both light sources. The hybrid light sources can use both lasers and spontaneous emission-based light sources. Both full-frame projection technologies and raster-scanning projection displays are included.

General Information

Status
Published
Publication Date
04-Jun-2025
Technical Committee
Drafting Committee
Current Stage
PPUB - Publication issued
Start Date
05-Jun-2025
Completion Date
20-Jun-2025
Ref Project
Standard
IEC 62906-6-1:2025 - Laser displays - Part 6-1: Visualization method of colour gamut intersection Released:5. 06. 2025 Isbn:9782832704486
English language
36 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)


IEC 62906-6-1 ®
Edition 1.0 2025-06
INTERNATIONAL
STANDARD
Laser displays –
Part 6-1: Visualization method of colour gamut intersection
ICS 31.260  ISBN 978-2-8327-0448-6

All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized in any form or
by any means, electronic or mechanical, including photocopying and microfilm, without permission in writing from either
IEC or IEC's member National Committee in the country of the requester. If you have any questions about IEC copyright
or have an enquiry about obtaining additional rights to this publication, please contact the address below or your local
IEC member National Committee for further information.

IEC Secretariat Tel.: +41 22 919 02 11
3, rue de Varembé info@iec.ch
CH-1211 Geneva 20 www.iec.ch
Switzerland
About the IEC
The International Electrotechnical Commission (IEC) is the leading global organization that prepares and publishes
International Standards for all electrical, electronic and related technologies.

About IEC publications
The technical content of IEC publications is kept under constant review by the IEC. Please make sure that you have the
latest edition, a corrigendum or an amendment might have been published.

IEC publications search - IEC Products & Services Portal - products.iec.ch
webstore.iec.ch/advsearchform Discover our powerful search engine and read freely all the
publications previews, graphical symbols and the glossary.
The advanced search enables to find IEC publications by a
variety of criteria (reference number, text, technical With a subscription you will always have access to up to date
committee, …). It also gives information on projects, content tailored to your needs.
replaced and withdrawn publications.
Electropedia - www.electropedia.org
The world's leading online dictionary on electrotechnology,
IEC Just Published - webstore.iec.ch/justpublished
Stay up to date on all new IEC publications. Just Published containing more than 22 500 terminological entries in English
details all new publications released. Available online and and French, with equivalent terms in 25 additional languages.
once a month by email. Also known as the International Electrotechnical Vocabulary
(IEV) online.
IEC Customer Service Centre - webstore.iec.ch/csc
If you wish to give us your feedback on this publication or
need further assistance, please contact the Customer
Service Centre: sales@iec.ch.
– 2 – IEC 62906-6-1:2025 © IEC 2025
CONTENTS
FOREWORD. 3
INTRODUCTION . 5
1 Scope . 6
2 Normative references . 6
3 Terms, definitions, and abbreviated terms . 6
3.1 Terms and definitions . 6
3.2 Abbreviated terms . 7
4 Standard measuring equipment . 7
5 Standard measuring conditions . 7
6 Gamut rings . 8
7 Algorithm for gamut ring intersection . 9
8 Visualization method . 13
Annex A (informative) Calculation method for CIELAB gamut rings and intersection . 14
A.1 Purpose . 14
A.2 Procedure for calculating the CIELAB gamut rings plot and CIELAB gamut
ring intersection plot . 14
A.3 Vector intersection method for CIELAB gamut intersection and gamut rings
calculation . 15
A.3.1 General . 15
A.3.2 Vector intersection method . 15
A.3.3 Reference algorithm implementation . 18
Annex B (informative) Reference colour gamut data . 24
Bibliography . 36

Figure 1 – Gamut rings of BT.2020 colour gamut . 8
Figure 2 – CIELAB colour gamut of a laser display . 9
Figure 3 – Gamut rings of the laser display with dotted line denoting the outline of
the BT.2020 gamut rings (L* = 100 ring) . 9
Figure 4 – Framework of gamut ring intersection using DCI-P3 gamut (G )
DCI
intersection with BT.2020 gamut (G ) . 12
Figure 5 – Gamut ring intersection (coloured) between the display (DUT) and
BT.2020 (REF, greyscale) . 13
Figure A.1 – Flowchart for CIELAB colour gamut measurement and gamut ring
calculation . 14

Table B.1 – xy chromaticity coordinates of the RGB primaries and white of BT.2020,
BT.709, DCI-P3, and Adobe RGB . 24

INTERNATIONAL ELECTROTECHNICAL COMMISSION
____________
LASER DISPLAYS –
Part 6-1: Visualization method of colour gamut intersection

FOREWORD
1) The International Electrotechnical Commission (IEC) is a worldwide organization for standardization comprising
all national electrotechnical committees (IEC National Committees). The object of IEC is to promote international
co-operation on all questions concerning standardization in the electrical and electronic fields. To this end and
in addition to other activities, IEC publishes International Standards, Technical Specifications, Technical Reports,
Publicly Available Specifications (PAS) and Guides (hereafter referred to as "IEC Publication(s)"). Their
preparation is entrusted to technical committees; any IEC National Committee interested in the subject dealt with
may participate in this preparatory work. International, governmental and non-governmental organizations liaising
with the IEC also participate in this preparation. IEC collaborates closely with the International Organization for
Standardization (ISO) in accordance with conditions determined by agreement between the two organizations.
2) The formal decisions or agreements of IEC on technical matters express, as nearly as possible, an international
consensus of opinion on the relevant subjects since each technical committee has representation from all
interested IEC National Committees.
3) IEC Publications have the form of recommendations for international use and are accepted by IEC National
Committees in that sense. While all reasonable efforts are made to ensure that the technical content of IEC
Publications is accurate, IEC cannot be held responsible for the way in which they are used or for any
misinterpretation by any end user.
4) In order to promote international uniformity, IEC National Committees undertake to apply IEC Publications
transparently to the maximum extent possible in their national and regional publications. Any divergence between
any IEC Publication and the corresponding national or regional publication shall be clearly indicated in the latter.
5) IEC itself does not provide any attestation of conformity. Independent certification bodies provide conformity
assessment services and, in some areas, access to IEC marks of conformity. IEC is not responsible for any
services carried out by independent certification bodies.
6) All users should ensure that they have the latest edition of this publication.
7) No liability shall attach to IEC or its directors, employees, servants or agents including individual experts and
members of its technical committees and IEC National Committees for any personal injury, property damage or
other damage of any nature whatsoever, whether direct or indirect, or for costs (including legal fees) and
expenses arising out of the publication, use of, or reliance upon, this IEC Publication or any other IEC
Publications.
8) Attention is drawn to the Normative references cited in this publication. Use of the referenced publications is
indispensable for the correct application of this publication.
9) IEC draws attention to the possibility that the implementation of this document may involve the use of (a)
patent(s). IEC takes no position concerning the evidence, validity or applicability of any claimed patent rights in
respect thereof. As of the date of publication of this document, IEC had not received notice of (a) patent(s), which
may be required to implement this document. However, implementers are cautioned that this may not represent
the latest information, which may be obtained from the patent database available at https://patents.iec.ch. IEC
shall not be held responsible for identifying any or all such patent rights.
IEC 62906-6-1 has been prepared by IEC technical committee 110: Electronic displays. It is an
International Standard.
The text of this International Standard is based on the following documents:
Draft Report on voting
110/1751/FDIS 110/1768/RVD
Full information on the voting for its approval can be found in the report on voting indicated in
the above table.
The language used for the development of this International Standard is English.

– 4 – IEC 62906-6-1:2025 © IEC 2025
This document was drafted in accordance with ISO/IEC Directives, Part 2, and developed in
accordance with ISO/IEC Directives, Part 1 and ISO/IEC Directives, IEC Supplement, available
at www.iec.ch/members_experts/refdocs. The main document types developed by IEC are
described in greater detail at www.iec.ch/publications.
A list of all parts in the IEC 62906 series, published under the general title Laser displays, can
be found on the IEC website.
The committee has decided that the contents of this document will remain unchanged until the
stability date indicated on the IEC website under webstore.iec.ch in the data related to the
specific document. At this date, the document will be
• reconfirmed,
• withdrawn, or
• revised.
INTRODUCTION
The colour gamut of a display is the range of colour in a perceptually homogeneous 3D colour
space from black at the bottom to white at the top, having protruded curves (or cusps) outward
and enclosed by the 3D envelope of its most saturated colours. When evaluating the range of
hue, it is difficult to inspect colour volumes and to compare chroma at different hue angles and
lightness levels. Viewing the colour space along a single direction can often be misleading
because parts of the gamut volume are almost always obscured from view. A solution to this
problem is the new two-dimensional diagram called “gamut rings.” The gamut ring framework
unwraps the display’s important volumetric information and lays it flat in a two-dimensional
diagram that provides the information needed to describe the maximum colour capability.
The aim is to evaluate the colour gamuts of laser displays, more specifically of front-projection
laser projectors. In order to measure the laser light sources, it is crucial to ensure that accuracy
and precision are observed, and to properly specify the methods. To visualize the gamuts in a
quantitative manner, the latest gamut ring framework is proposed.

– 6 – IEC 62906-6-1:2025 © IEC 2025
LASER DISPLAYS –
Part 6-1: Visualization method of colour gamut intersection

1 Scope
This part of IEC 62906 specifies a two-dimensional visualization method of the colour gamuts
of a device under test (DUT) and a reference (REF) in the CIE 1976 L*a*b* (CIELAB) colour
space and the intersection between them. This document applies to front projection displays
which use either lasers or laser hybrid, or both light sources. The hybrid light sources can use
both lasers and spontaneous emission-based light sources. Both full-frame projection
technologies and raster-scanning projection displays are included.
2 Normative references
The following documents are referred to in the text in such a way that some or all of their content
constitutes requirements of this document. For dated references, only the edition cited applies.
For undated references, the latest edition of the referenced document (including any
amendments) applies.
IEC 62906-5-1:2021, Laser displays – Part 5-1: Measurement of optical performance for laser
front projection
3 Terms, definitions, and abbreviated terms
For the purposes of this document, the following terms and definitions apply.
ISO and IEC maintain terminology databases for use in standardization at the following
addresses:
• IEC Electropedia: available at https://www.electropedia.org/
• ISO Online browsing platform: available at https://www.iso.org/obp
3.1 Terms and definitions
3.1.1
colour gamut
three-dimensional range of colours defining the perceived colour
capability of DUT
[SOURCE: IEC 60050-845:2020, 845-32-007, modified – the term has been changed and the
note 1 has been deleted.]
3.1.2
CIELAB gamut rings
two-dimensional quantitative visualization of colour gamut in CIELAB colour space
Note 1 to entry: See Annex A.
3.1.3
colour gamut boundary
colour gamut envelope
outer boundary surface of colour gamut (envelope), enclosing all and only
colours reproduceable by DUT
[SOURCE: IEC 60025-845:2020, 845-32-008, modified – the term has been changed.]
3.1.4
CIELAB gamut volume
single value (unit: ∆E ) quantifying the total integrated volume of colour gamut in CIELAB colour
space
3.1.5
reference colour gamut
REF
user-selected 3D standardized colour gamut space
Note 1 to entry: The example data are described in Annex B.
3.1.6
colour gamut intersection
proportion or amount of REF colour gamut that can be attained by DUT
Note 1 to entry: The volume of the colour gamut intersection is always less than or equal to the 100 % gamut volume
of the reference.
3.2 Abbreviated terms
CIELAB CIE 1976 L*a*b*
CGV CIELAB gamut volume
DUT device under test
REF reference
RSS root-sum-square
4 Standard measuring equipment
The RGB chromaticities of BT.2020 lie on the CIE 1931 spectral locus, which means that
sufficiently narrow-band light sources are necessary to render BT.2020 colours. The
measurement accuracy and precision of the measuring equipment shall be ensured. Insufficient
spectral sensitivity of a spectroradiometer can result in significant errors when measuring light
with a narrow-band spectral power distribution. (See IEC 62906-5-1, IEC 62906-5-5 [1] ,
IEC 62906-5-6 [2] or IEC 62595-2-4 [3].) Optical measurements of laser sources typically
require spectroradiometers with a < 5 nm spectral bandwidth. In situations with a high stray
light illumination, it is also recommended to apply stray light correction on the measured spectra
as explained in IEC TR 62977-1-31 [4], to obtain higher measurement accuracy.
5 Standard measuring conditions
The measuring conditions described in IEC 62906-5-1 shall be adhered to, depending on the
type of the laser displays. Regarding the colour sampling of the colour gamut boundary and test
patterns, the 602 colour samples defined in IEC 62906-5-1 shall be used.
___________
Such as Rec. ITU-R BT.2020, DCI-P3, SMPTE EG 432-1:2010 [5], Rec. ITU-R BT.709, or any colour spaces that
will be standardized in the future.
Numbers in square brackets refer to the Bibliography.

– 8 – IEC 62906-6-1:2025 © IEC 2025
6 Gamut rings
To quantitatively visualize colour gamut in two dimensions, gamut rings are used [6],[8].
Figure 1 shows the gamut rings of the BT.2020 colour gamut in the CIELAB colour space. The
colour gamut is segmented into a 10-interval lightness scale, and gamut rings are composed of
10 rings, delineated with constant L* loci. Each ring corresponds to the colour gamut within a
given L* range with the hue angles fully preserved. The gamut ring diagram has two axes of
the root-sum-square (RSS) of CIELAB a* (a* ) and RSS of CIELAB b* (b* ). The a*
RSS RSS RSS
and b* axes represent the CIELAB green-red (a*) and blue-yellow (b*) hue directions,
RSS
respectively. The area of each gamut ring represents the volume of the corresponding ∆L* slice.
The total gamut ring area enclosed within the L*100 outline represents the full CIELAB gamut
volume (CGV) of the DUT.
The calculation of the gamut rings requires the CIELAB gamut volume contribution, V(L*, h), of
the gamut resolved by lightness, L*, ranging from 0,5 to 99,5 in intervals of 1, and of hue angle,
h, ranging from 0° to 359° at intervals of 1°. Each volume contribution will equal the CIELAB
gamut volume contained within half the interval of the given L* value and half the interval of the
given h value, thus V(9,5, 30) will equal the integrated CIELAB gamut volume between an L* of
9 and 10 and h of 29,5° and 30,5°. Annex A provides a detailed method and code for performing
this calculation derived from methods provided in IEC 62906-5-1:2021, Annex B.
The RSS chroma is calculated from the volume data using:
*
L
*
C L*, h Vl− 0,5, h (1)
( ) ( )
RSS ∑
π
l=1
The Cartesian coordinates a* (L*, h) and b* (L*, h) of C* (L*, h) are defined as
RSS RSS RSS
C* (L*, h) cos(h) and C* (L*, h) sin(h), respectively. The rings are tinted to aid
RSS RSS
interpretation of the colours.
NOTE Modes with custom highlight enhancement can impact CIELAB colour gamut volume.

Figure 1 – Gamut rings of BT.2020 colour gamut
=
7 Algorithm for gamut ring intersection
Figure 2 shows the boundary of the colour gamut of a laser display and Figure 3 shows its
gamut rings, with the dotted line denoting the outline of the BT.2020 gamut rings (L* = 100 ring).
The differences of the hue angles of the RGB primaries between the DUT and REF (indicated
by arrows) can cause a noticeable difference in gamut shape, resulting in a small gamut ring
intersection.
Figure 2 – CIELAB colour gamut of a laser display

NOTE Hue angles of the RGB primaries for DUT and REF are indicated by long arrows and short arrows,
respectively, describing the angular deviations from the target. This figure was created by the gamut rings viewer
app provided in IEC 62977-3-5 [8].
Figure 3 – Gamut rings of the laser display with dotted line denoting the outline of
the BT.2020 gamut rings (L* = 100 ring)

– 10 – IEC 62906-6-1:2025 © IEC 2025
Figure 4 illustrates the framework of a gamut ring intersection between a test gamut of DCI-P3
using a D65 white point (G ) and a REF gamut of BT.2020 (G ). The portions of G out
DCI 2020 DCI
of G are carved out, shaping the gamut intersection of G . The intersection is divided
2020 DCI∩2020
into 10 slices. For easy visual comprehension, each slice is stabilized with the volume per hue
angle maintained and stretched into one-lightness-thick plates. The bottom plate of G
DCI∩2020
is placed on the innermost ring (with no void) of G . The second plate of G is
2020 DCI∩2020
perforated and stretched to wrap around the innermost ring of G . The third plate of
G is perforated and wrapped around the second ring of G . This is repeated up to
DCI∩2020 2020
th
the 10 ring of G , the area of which corresponds to a volume within 90 < L* ≤ 100.
DCI∩2020
Each intersection ring is always accommodated within the corresponding ring of the REF gamut
for any combination of the DUT and REF gamut. The greyscale areas represent the gamut
portions of G that cannot be covered by G . Figure 5 indicates the gamut ring intersection
2020 DCI
(coloured) between the display and BT.2020 on the BT.2020 gamut rings. The greyscale areas
are the gaps between the two volumes.
The colour gamut intersection is the range of colours enclosed by two source colour gamut
boundaries. To calculate CIELAB gamut rings for such an intersection one approach can be to
calculate a colour gamut intersection boundary and to then proceed to calculate the CIELAB
gamut volume and CIELAB gamut rings as described above and in other referenced standards.
Unfortunately, the intersection of two arbitrary concave three dimensional hulls, as would be
required, is highly complex. It is also unnecessary. Instead, a more practical approach is to
reduce the respective gamuts to a sequence of two-dimensional [6] or one-dimensional [7]
representations and then intersect those representations. The intersected representations are
then used to perform the required analysis.
What is required from any such intersection algorithm is to calculate the CIELAB gamut volume
contribution. Here, V (L*, h) is defined as the intersected gamut between DUT and REF,
DUT∩REF
resolved by lightness, L*, ranging from 0,5 to 99,5 in intervals of 1, and of hue angle, h, ranging
from 0° to 359° at intervals of 1°.
In order to plot the gamut ring intersection, two sets of such CIELAB gamut volume contribution
are required, for the reference gamut volume, V (L*, h), and for the intersected gamut volume,
REF
V (L*, h).
DUT∩REF
For the REF gamut, the RSS of the equivalent chroma values, C* (L*, h), is calculated
REF,RSS
from the CIELAB gamut volume contributions summed from 1 to L* , as follows:
*
L
*
C Lh*, V l− 0,5,h (2)
( ) ( )
REF,RSS REF

π
l=1
where L* is an integer ranging from 1 to 100.
Thus, 100 values of C* are obtained in total for each hue range. The REF gamut rings
REF,RSS
are rendered with greyscale at L* intervals of 10.
___________
The DCI-P3 colour space has two very common variants with separate applications, and both are applicable to
laser displays. The original DCI colour space was defined by Digital Cinema Initiatives [9], where laser projectors
are now widely used, and in the SMPTE EG 432-1:2010 [5] and SMPTE RP 431-2:2011 [10]. A DCI-P3 colour
space variant with a different white point (D65) was introduced for more commercial (non-digital cinema)
applications, such as home cinema, where there is now a fairly high penetration of laser projectors, albeit different
types than the laser projectors used in digital cinema.
=
To visualize the intersection of the colour gamut between the DUT and REF in the gamut ring
diagram, the intersection gamut is divided into 10-interval pieces in the L* scale, and each sub-
intersection gamut is rendered offset to the outer boundary of the reference gamut ring of next
lower 10-interval L* range. This is done for any given L* of multiple of 10 by calculating
C* from the REF volume up to and including L* − 10 and sub-intersection volume
DUT∩REF,RSS
greater than L* − 10 up to and including L*:
**

LL−10
*

C L*,h V l−+0,5,h V l− 0,5,h
( ) ( ) ( ) (3)
DUT∩∩REF,RSS ∑ REF ∑ DUT REF

π

*
l=1
lL−10

The sub-intersection regions on the greyscaled REF gamut rings are tinted (Figure 5). Annex A
provides a detailed method and code for performing this calculation derived from one-
dimensional example methods provided in IEC 62906-5-1:2021, Annex B.
=
=
– 12 – IEC 62906-6-1:2025 © IEC 2025

a) b) c)
d) e) f)
Key
a) G (translucent grey) and G
2020 DCI
b) G ∩G (opaque purple)
DCI 2020
c) Gamut rings of G (grayscale) and stretched plates of G ∩G
2020 DCI 2020
d) Bottom plate of G ∩G placed on the innermost gamut ring of G wrapped by the deformed second-from-
DCI 2020 2020
the-bottom plate of G ∩G with the third plate of G ∩G wrapping around the second gamut ring of G
DCI 2020 DCI 2020 2020
e) Sixth ring of G ∩G wrapping around the fifth ring of G
DCI 2020 2020
f) Intersections of G ∩G (tinted) on the gamut rings of G
DCI 2020 2020
In the diagram of the gamut ring intersection, tinted colour means intersection (or coverage), whereas grey means a
lack of intersection (no coverage). Through b) to e), this figure visualizes the process of forming gamut ring
intersection to aid intuitive understanding, although not expressed as formulas in the text. The REF gamut rings and
gamut ring intersection between REF and DUT in f) are based on Equation (3).
Figure 4 – Framework of gamut ring intersection using DCI-P3 gamut (G ) intersection
DCI
with BT.2020 gamut (G )
NOTE The greyscale areas are the gaps between the two volumes, i.e. the region of REF not covered by DUT (see
Figure 4). Hue angles of the RGB primaries for DUT (solid arrows) and REF (dotted arrows) describe the angular
deviations from the target are indicated by long arrows and short arrows, respectively. This figure was created by
the viewer app provided in IEC 62977-3-5 [8].
Figure 5 – Gamut ring intersection (coloured) between the display (DUT)
and BT.2020 (REF, greyscale)
8 Visualization method
The two-dimensional quantitative visualization shall be carried out as follows.
a) Measure the DUT in accordance with Clause 4 under the conditions specified in Clause 5.
b) Calculate the colour gamut volume of the DUT in accordance with the method in
IEC 62906-5-1.
c) Visualize the gamut rings according to the algorithm described in Clause 6 and the gamut
ring intersection in accordance with the algorithm described in Clause 7.
d) Report the following items:
• manufacturer name, model name, mode, and operational mode;
• chromaticity coordinates (x, y) of the white point of the DUT;
• name of the REF;
• gamut ring intersection plot;
• volume coverage ratio (%).
– 14 – IEC 62906-6-1:2025 © IEC 2025
Annex A
(informative)
Calculation method for CIELAB gamut rings and intersection
A.1 Purpose
The purpose of this method is to describe a procedure to calculate and render both the CIELAB
gamut rings plot and the CIELAB gamut ring intersection plot.
A.2 Procedure for calculating the CIELAB gamut rings plot and CIELAB gamut
ring intersection plot
This procedure is an extension of that defined in IEC 62906-5-1:2021, Annex B. All but the last
step of the procedure defined in IEC 62906-5-1:2021, Annex B, Figure B.1 is followed. A similar
set of steps are followed to generate synthetic data for the REF, which is described in detail in
Annex B. In either case the volume of the CIELAB gamut is calculated for a set of uniformly
spaced steps in lightness (L*) and hue angle (h) which is then used to calculate either the rings
plot or the intersection rings plot as appropriate. An example flowchart, incorporating the
relevant steps from IEC 62906-5-1:2021, Annex B, is given in Figure A.1.

Figure A.1 – Flowchart for CIELAB colour gamut measurement
and gamut ring calculation
A.3 Vector intersection method for CIELAB gamut intersection and gamut
rings calculation
A.3.1 General
There are several possible algorithms that can be used to intersect two gamuts and to calculate
the gamut rings, and these methods are closely related to those used for the general CIELAB
gamut volume calculation. In order to calculate a gamut ring plot the volume of a given gamut
must be resolved by lightness and hue. In principle this could be done with a 3D volume
integration, with a 2D slice and area integration [6], or with a vector intersection [7].
IEC 62906-5-1:2021, Annex B, describes a vector intersection method which will be extended
here to enable gamut intersection and gamut rings visualisation. The vector intersection method
is particularly suited to gamut intersection calculations as it reduces the problem to a simple
1D intersection. The equivalent 2D, and especially 3D, intersections are highly complex
algorithmically.
The vector intersection method and reference algorithm implementation are provided in A.3.2
and A.3.3, respectively.
A.3.2 Vector intersection method
The calculation algorithm specified below incorporates steps a) to h) from IEC 62906-5-1:2021,
B.4.3, and then continues from i) with steps specific to this document.
The specified sampled colours and measured tristimulus values are read from a data text file
in the CGATS.17 (ISO 28178 [11]) format.
The measured XYZ tristimulus values for signal white (R , G , B ) are found in the data.
max max max
If the measured white point is not equal to D50, the program computes a chromatic adaptation
transform (CAT) from the measured white to CIE Illuminant D50. This computed CAT is then
applied to all of the tristimulus values in the measured dataset. ISO 15076-1:2010, Annex E
[12], describes the CAT02 chromatic adaptation transform using the Bradford coefficients. The
chromatic adaptation is implemented as a linear transformation of the measured tristimulus
values (X, Y, Z) in the adapted colour (X , Y , Z ) using a matrix M that depends on the
P P P adapt
measured white (X , Y , Z ) and the reference D50 white (X , Y , Z ):
W W W D50 D50 D50

XX

P



YM= Y (A.1)
P adapt
 



ZZ
p 

where M is determined by:
adapt
ρ
P

ρ


−1 γ
P

MM= 0 0 M (A.2)
[ ] [ ]
adapt BFD  BFD

γ


β
P

β

– 16 – IEC 62906-6-1:2025 © IEC 2025
with the Bradford matrix given by:
0,895 1 0,266 4 −0,161 4


M −0,750 2 1,713 5 0,036 7
[ ] (A.3)
BFD


0,038 9 −0,068 5 1,029 6

and the cone response coefficients determined by:
ρX
  
W
  
γ = M Y
[ ] (A.4)
BFD W
  
βZ 
  W
ρX
 
P D50
 
 
γM= Y
[ ] (A.5)
P BFD D50
 
 
 
βZ 
p D50
 
 
The D50 relative tristimulus data is then transformed into the CIE L*a*b* 1976 colour space
following ISO/CIE 11664-4 [13].
Tessellation in the RGB colour space:
Each input signal sample value exists in a linear grid on the surface plane of each face of the
RGB cube. The tessellation analysis however is assisted in this implementation by the uniform
colour sampling of the RGB input signal colour space. This allows the properly ordered
tessellation of the final measured samples to be known. The tessellated triangles in the CIELAB
colour space are identified through their correspondence to the input RGB code values. This
eliminates any need for complex error-prone algorithms to determine the surface boundary and
tessellate the result.
Identify the corresponding tessellated triangles in the CIELAB colour space. Plot the CIELAB
gamut.
For the gamut volume calculation, an intermediary form of the gamut is built by considering the
cylindrical coordinates of lightness L*, hue h*, and chroma C*. Determine a grid of vectors,
uniformly spaced in lightness L* and hue h*, emanating from the L* axis at constant L* into the
direction of h*. The aim is to calculate the numerical integration of the volume in slices from
L* = 0 to L* = 100 typically in steps of dL* = 1. It is preferable to use at least 100 steps in L*
and 360 steps in h*. To that end the vectors are defined at the mid-points of these slices, so for
dL* = 1, L* = 0,5, 1,5, 2,5, …, 99,5.
For each vector, use the Möller–Trumbore ray-triangle intersection algorithm to determine with
which N surface triangles this vector will intersect and estimate the chroma C*(L*, h*, n) and
orientation d(L*, h*, n) (inward or outward facing) of each n = 1…N intersection [7]. Each vector
can have 0 or more intersections.
=
The gamut volume, V(L*, h*), for each vector is computed by summing the volume contribution
from each calculated intersection. Every intersection where the surface orientation is outward
adds to the volume and every intersection where it is inward subtracts. For the case of no
intersections then the contributed volume is 0.
a) Label the C*(L*, h), d(L*, h) and V(L*, h) data as C* , d and V .
DUT DUT DUT
b) If there is no intersection, skip to the end of steps.
c) The REF gamut is calculated with the 602 point RGB boundary tessellation and saved to a
text file in CGATS.17 (ISO 28178 [11]) format.
d) Steps a) to h) from IEC 62906-5-1:2021, B.4.3, are repeated for the REF data, using the
same L* and h values as that for the DUT. This will produce C*(L*, h), d(L*, h) and V(L*, h)
data for the reference gamut which are labelled C* , d and V .
REF REF REF
e) The C*(L*, h) and d(L*, h) data for both the DUT and REF gamuts are combined using the
following procedure:
1) For each L*, h step build a set of intersected C*, d values by going through all
intersection points, ordered from the largest C* value to the lowest C* value, also
tracking a state of being inside or outside each of the gamuts, with the initial state set
to outside.
2) At each pair of C*, d:
i) If the d indicates an outward facing vector intersection then set the state of that
gamut to be inside. If this now means that the state of both gamuts is inside, then
store this C*, d pair;
ii) If the d indicates an inward facing vector intersection then set the state of that gamut
to be outside. If the previous state had been that both gamuts were inside, then store
this C*, d pair.
3) There will now be a new list of vector intersections, store this as a set of C*(L*, h) and
d(L*, h) data for the new intersected gamut labelled as C* , d .
DUT∩REF DUT∩REF
f) Perform step h) on the intersected C*(L*, h) and d(L*, h) data, producing intersected
V(L*, h) data labelled as V .
DUT∩REF
The gamut rings are then visualised in accordance with Clause 8 if there is no intersection, or
with Clause 7 if the data are intersected.
This algorithm is implemented using the example MATLAB and Octave program below which
extend the code provided in IEC 62906-5-1:2021, Annex B. All files are saved in the same folder
as the reference code. The main program "Gamut Rings" automatically imports the RGB and
corresponding XYZ tristimulus values for the DUT gamut and optionally the REF gamut, and
plots a gamut rings visualisation in accordance with Clause 6 or Clause 7 as appropriate.
MATLAB is a proprietary application provided by MathWorks® and can be installed by following
instructions at https://mathworks.com. Octave is a free and open-source application with
instructions for installation available at https://octave.org via the 'download' link.
___________
MATLAB is the trade name of a product supplied by MathWorks®. Octave is free software licensed under the
GNU General Public License. This information is given for the convenience of users of this document and does
not constitute an endorsement by IEC of the product names. Equivalent products can be used if they can be
shown to lead to the same result

– 18 – IEC 62906-6-1:2025 © IEC 2025
A.3.3 Reference algorithm implementation
The following functions from IEC 62906-5-1:2021, Annex B, enable this reference
implementation to work - save them in the same folder as subsequent functions described below:
– camcat_cc.m
– load_and_prepare_data.m
– make_tesselation.m
– map_rows.m
– ui_read_data.m
– XYZ2Lab.m
The following are the files in addition to those referenced above. The main script can be run
by navigating to the containing folder within MATLAB and entering the command "Gamut Rings".
The following MATLAB scripts are stored in separate files with the same filenames as the
functions, and that reference code means the code that is provided in IEC 62906-5-1, stored in
its own set of files.
% File "Gamut_Rings.m"
% load, validate and pre-process the data

[CIELAB, TRI, RGB, fn] = load_and_prepare_data('./*.txt');

% get the map of gamut boundary intersections

[I_map,L,Hue] = Gamut_Rings_cyl_map(TRI, CIELAB, 100, 360);

figure;
switch(questdlg(sprintf('"%s" loaded, add a reference?', fn)))

case "Yes"
% load, validate, pre-process and get the i_map of the ref data

[CIELAB, TRI, ~, fn_ref] = load_and_prepare_data('./*.txt');
I_map_ref = Gamut_Rings_cyl_map(TRI, CIELAB, 100, 360);

% plot the intersection rings
vol = plot_intersection_rings(I_map,I_map_ref, L, Hue);

t = sprintf(['CIELab gamut rings\n"%s" coverage of "%s"',.
'\nVolume = %g'], fn, fn_ref, vol);

otherwise
% no ref, just plot the rings
vol = plot_rings(I_map, L, Hue);

t = sprintf(['CIELab gamut rings\nfrom file "%s"',.
'\nVolume = %g'], fn, vol);
end
% add a centre marker
plot(0,0,'k+','MarkerSize',20)

% make the axes equal and label them

axis equal
xlabel('\fontsize{12}\ita\rm*^{_{_{^{RSS}}}}');
ylabel('\fontsize{12}\itb\rm*^{_{_{^{RSS}}}}');

% add the title
title(t,'Interpreter', 'none');

% File "Gamut_Rings_cyl_map.m"

function [cyl,L,Hue] = Gamut_Rings_cyl_map(TRI,CIELAB, Lsteps, hsteps)
Z = [CIELAB(:,2) CIELAB(:,3) CIELAB(:,1)];

% Find the minmum and maxmum L* in each triangle

Max_L = max(max(Z(TRI(:,1),3),Z(TRI(:,2),3)),Z(TRI(:,3),3));
Min_L = min(min(Z(TRI(:,1),3),Z(TRI(:,2),3)),Z(TRI(:,3),3));

% Define L* and Hue intervals for integrating the tessellated surface
% to obtain its volume
delta_Hue = 2*pi/hsteps;
L = (0:100)';
Hue = (0:delta_Hue:2*pi)';
Cyl = cell(Lsteps, hsteps);
% For every step in L*
for p=2:size(L,1)
Lmid = (L(p)+L(p-1))/2;
orig = [0 0 Lmid];
IX = find(Lmid>=Min_L&Lmid<=Max_L);
orig = repmat(orig,size(IX));
vert0 = Z(TRI(IX,1),:);
vert1 = Z(TRI(IX,2),:);
vert2 = Z(TRI(IX,3),:);
% find vectors for two edges sharing vert0

edge1 = vert1-vert0;
edge2 = vert2-vert0;
% and the vector to the origin

o = orig -vert0;
% pre-calculate the cross products outside the inner loop

e2e1 = cross(edge2, edge1, 2);
e2o = cross(edge2, o, 2);
oe1 = cross(o, edge1, 2);
% and the one determinant which does not involve direction 'vdir'

e2oe1 = sum(edge2.*oe1, 2);
% drop the L* coordinate as the 'vdir' vector always has dL*=0

e2e1 = e2e1(:, 1:2);
e2o = e2o(:, 1:2);
oe1 = oe1(:, 1:2);
%for every step in Hue
for q = 2:size(Hue,1)
% the unit vector represented by L* and Hue
% (just the da*,db* terms)
Hmid = (Hue(q)+Hue(q-1))/2;
vdir = [sin(Hmid); cos(Hmid)];

– 20 – IEC 62906-6-1:2025 © IEC 2025
idet  = 1./(e2e1*vdir); % denominator for all calculations
u  = e2o*vdir.*idet;  % 1st barycentric coordinate
v  = oe1*vdir.*idet;  % 2nd barycentric coordinate
t  = e2oe1.*idet;   % 'position on the line' coordinate

% Find the tiles for which the ray passes within their edges
% The triangle perimiter is defined by edges u=0, v=0 and u+v=1
% plus the addition of a tolerance to deal with round-off errors

ix= u>=0 & v>=0 & u+v<=1 & t>=0;

%If no tile was found, add some tolerance and try again.

if (sum(ix) == 0)
ix = u>=-0.001 & v>=-0.001 & u+v<=1.001 & t>=0;
end
% list and sort the intersections

cm = [sign(idet(ix)), t(ix)];
[~,idx] = sort(cm(:,2));
cm = cm(idx,:);
% check for flipped intersections and remove them if so
t = −1;
for i = size(cm,1):-1:1
t = t + cm(i,1);
if t ~= 0, cm(i,:) = [];
else, t = t + cm(i,1);
end
end
% if there are no intersections, put in some dummy data

if isempty(cm), cm = [1, 0]; end

% store the list of intersections

cyl{p-1,q-1} = cm;
end
end
% File "plot_rings.m"
function vol = plot_rings(I_map,L,Hue)

% calculate the rings
[dH, dL, ux, uy] = rings_setup(L, Hue);

[x, y, vol] = calc_rings(I_map, dH, dL, ux, uy);

% plot the filled ring areas
for n = 2:size(x,1)
fill_ring(x(n-1,:), x(n,:), y(n-1,:), y(n,:),.
L((n-1)*10)*0.8+10, 40, ux, uy);
hold on;
end
% plot the ring boundaries
plot(x(2:end,[1:end 1])',y(2:end,[1:end 1])','k');

end
% File "plot_intersection_rings.m"

function vol = plot_intersection_rings(I_map_dut,I_map_ref,L,Hue)

[dH,dL,ux,uy] = rings_setup(L,Hue);

% get the intersection
I_map_inter = intersect_i_maps(I_map_dut, I_map_ref);

% calculate the ref rings
[xr, yr, ~, cvr] = calc_rings(I_map_ref, dH, dL, ux, uy);

% calculate the intersection rings

[xi, yi, vol] = calc_rings(I_map_inter, dH, dL, ux, uy, cvr);

% step through each non-zero luminance ring

for n = 2:size(xr,1)
% get the ring luminance
Ln = L((n-1)*10)*0.7+10;
% fill a coloured ring from the previous ref to the inter ring

fill_ring(xr(n-1,:), xi(n,:), yr(n-1,:), yi(n,:),.
Ln, 40, ux, uy);
hold on;
% fill a monochrome ring from the inter ring to this ref
% make the luminance higher by 10 to better contrast with the colour

fill_ring(xi(n,:), xr(n,:), yi(n,:), yr(n,:),.
Ln + 10, 0, ux, uy);
end
% plot the reference ring boundaries

plot(xr(:,[1:end 1])',yr(:,[1:end 1])','k');

end
% File "intersect_i_maps.m"
function [map_out] = intersect_i_maps(map_1,map_2)

% call the itersect sub-function on every set of intersections from both
% vector itersection maps
map_out = cellfun(@intersect, map_1, map_2, 'UniformOutput', false);

end
% intersect the sets of vector-boundary intersections from the two gamuts

function [c]=intersect(a,b)
sa = size(a, 1);
sb = size(b, 1);
c = zeros(sa+sb, 4);
if (sa==0 || sb==0), return; end
c(1:sa,1:3) = a(:, [1 2 1]);
c(sa+1:sa+sb, [1:2 4]) = b(:, [1 2 1]);
[~, i] = sort(c(:,2), 'descend');
t = min(cumsum(c(i,3:4)), [], 2);
c = c(i([false
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.

Loading comments...