ArgyllCMS's 'arts' (Absolute to media Relative Transform
Space matrix) ICC tag (V1.0)
ArgyllCMS uses a registered (private) ICC tag to solve a long
standing Display profile compatibility issue.
Other CMM and profile creation providers are most welcome to
implement this tag to improve ICC profile color behavior and
interoperability.
The problem
The ICC V2 format originally provided no clear mechanism for Display
profiles to use a modern chromatic adaptation transform in dealing
with the D65 white point of typical displays. V2 profile makers
ended up taking three different approaches :-
- Use a Bradford chromatic transform for the media (display)
white to PCS D50 conversion. This was used in creating the
widely deployed HP & Microsoft sRGB profile, as well as the
AdobeRGB profile. This provides a good chromatic adaptation, but
Absolute Colorimetric will have errors if the profile is used
with a CMM that implements the the ICC specified "Wrong Von
Kries" chromatic adaptation to map relative colorimetric back to
absolute colorimetric rather than using the Bradford transform
it was created with.
- Use the ICC specified "Wrong Von Kries" chromatic transform
from D65 to D50. This leads to poor relative colorimetric
behavior (the most important case), but gives correct Absolute
Colorimetric behavior.
- Apply the Bradford transform to the measurement data and then
disable Absolute Intent for display profiles by setting the
mediaWhitePoint tag to D50. The latter approach was supplemented
later on with the introduction of the ChromaticAdapation
('chad') tag, but this did not restore the Absolute Colorimetric
capability to Display profiles, since the 'chad' tag is not
formally part of the specified mechanism for implementing
Absolute Colorimetric. Unfortunately, this approach has been
adopted in the ICC V4 specifications
The ICC standard "Wrong Von Kries" chromatic transform for media
white to/from PCS D50 has disadvantages in regard to color behavior
for Output (i.e. print) profiles as well as Display profiles. With
most normal, white media this is not of great significance, since
the white point shift is small, but it grows in significance as the
color of the paper differs from white (i.e. tinted papers).
For all these reasons, and in the pursuit of the best possible color
quality, ArgyllCMS uses the more color accurate Bradford chromatic
transform for all profiles types instead of the the ICC standard
"Wrong Von Kries" transform. This improves compatibility with the
(extremely common use case) of HP & Microsoft sRGB, and AdobeRGB
profiles where the color behavior of Bradford vs. "Wrong Von Kries"
is more critical; provides good color behavior for creating Display
profiles while giving accurate Absolute Colorimetric Intent
behavior; slightly improves the quality of Output profiles, most
noticeable with tinted stock, while having minimum incompatibility
with Output profiles created for normal, white printed media by
other profiling programs because the white point shift is typically
small (But to enable perfect compatibility of ArgyllCMS Output (i.e.
print) profiles with other CMM's, the default behavior can be
changed by using the ARGYLL_CREATE_WRONG_VON_KRIES_OUTPUT_CLASS_REL_WP
environment variable).
So the problem is that it is impossible to know for sure whether an
ArgyllCMS create profile, ICC V2 Display profile, or other widely
used ICC profiles such as sRGB or AdobeRGB has used a Bradford or
"Wrong Von Kries" chromatic transform in computing Absolute to/from
Relative white point transform.
The solution
The ArgyllCMS SigAbsToRelTransSpace 'arts' tag holds a 3x3 matrix in
the first 9 elements* of a SigS15Fixed16ArrayType in the
usual ICC order (i.e. the same element order as the
ChromaticAdaptationTag 'chad' tag). This matrix holds the Sharpened
Cone space transform that the Media White point to/from PCS D50
chromatic Von Kries transform is computed in, rather than the "Wrong
Von Kries" transform specified by ICC.1:2001-04 (ICCV2.4) Annex A,
pp 66, equations A.1, A.2 & A.3. So by default ArgyllCMS will
write an 'arts' tag with the Bradford matrix in it:
sig 'arts'
type 'sf32'
S15Fixed16Array:
No. elements = 9
0: 0.89509583
1: 0.26640320
2: -0.16140747
3: -0.75019836
4: 1.71350098
5: 0.03669739
6: 0.03889465
7: -0.06849670
8: 1.02960205
In contrast, ICC standard behavior is the equivalent of a unity
matrix.
[ Note that ArgyllCMS will write an 'arts' tag containing a Bradford
matrix even for Display profile written using the 'chad' tag where
the the MediaWhitePointTag is set to D50, representing the cone
space used in computing the 'chad' tag. (see ARGYLL_CREATE_DISPLAY_PROFILE_WITH_CHAD)
i.e. for Display profiles, the 'chad' tag is regarded as just an
alternate means of representing the true Media White Point. ]
On reading a profile, ArgyllCMS uses the following logic to set its
Media white to/from PCS D50 chromatic transform:
if 'arts' tag is present:
use it to compute
absolute <-> media relative white point transform.
else:
if ArgyllCMS created
profile (ICC header Profile Creator signature = 'argl')
or V2 Display
profile && Media W.P. != D50:
use Bradford matrix to compute absolute <-> media relative
white point transform.
else:
use unity matrix to compute absolute <-> media relative white
point transform.
The 'arts' tag need not be written if the profile contains no 'wtpt'
MediaWhitePointTag tag.
This provides a safe level of backwards compatibility, together with
the elimination of all ambiguity when the 'arts' tag is present,
allowing CMM and profile creators to use the preferred Bradford (or
other Sharpened Cone) space for Von Kries chromatic adaptation of
the media white point to/from PCS D50, and provide perfect
compatibility for the widely used sRGB and AdobeRGB profiles and
similiar.
Conclusion
The 'arts' tag allows unambiguous use of the recommended Bradford
cone space transform in computing the Absolute Colorimetric (Media
Relative) to/from Relative Colorimetric (PCS D50) chromatic
transform in ICC profiles, while for the first time also providing
an unambiguously means of marking the use of the Bradford transform
in the very widely used standard sRGB and AdobeRGB colorspaces. If
widely adopted, the use of "Wrong Von Kries" chromatic transform in
ICC profiles could be safely abandoned.
* If the SigS15Fixed16ArrayType has more than 9 elements, then just
the first 9 should be interpreted as a 3x3 matrix, and any elements
beyond that should be ignored.