The iccMAX specification is available to download on the Specifications page.
ICC color management meets the goal of creating, promoting and encouraging the standardization of an open, vendor-neutral, cross-platform color management system architecture and components. While the current architecture works well in many areas, new potential applications are emerging and it is believed that tomorrow's color comunication will require a more flexible and extensible system. ICC has developed a new specification, iccMAX, that will address many of these new requirements. iccMAX is also published by ISO as ISO 20677.
It is important to note that iccMAX is not intended as a replacement for ICC v4, the existing architecture, but as an extension or alternative where requirements cannot be fully met by v4 (ISO 15076-1).
What is iccMAX?
iccMAX is a new color management system that goes beyond D50 colorimetry. The specification has been published by both ICC and ISO.
iccMAX profiles show v5 in the header to distinguish them from v4 and v2. iccMAX profiles also have class, sub-class, versioning and header information that differs from v4.
Users and developers are encouraged to make comments on the specification.
iccMAX provides a significant enhancement to the functionality of the current v4 specification. It is recognised that in many industries, v4 (and even v2) meets existing color management needs and in these industries there will be no drive to move to adopt the new specification.
An iccMAX CMM is backward-compatible and will recognise and correctly process v2 and v4 profiles. However, iccMAX profiles are not expected to be compatible with v4 CMMs. ICC has provided a reference implementation to help with iccMAX adoption (see below).
ICC has introduced a private tag for v4 profiles which permits embedding of an iccMAX profile, for workflows where it is desirable to utilize iccMAX capabilities, yet at the same provide a solution for workflows where only v2 and v4 profiles are supported. For more information, see the Technical Note
How are iccMAX profiles different?
The main changes you can see are:
Profile Connection Space
The ICC v4 PCS has fixed D50 colorimetry, considered necessary until now to ensure interoperability and prevent ambiguity in colour transforms. iccMAX allows flexibility in the selection of illuminant and color matching functions. It supports spectral communication of colour information through an optional spectral PCS, and also supports the use of color appearance processing in the PCS, with the facility to store appearance attributes in a v5 profile.
Support for extended CMM functionality
A variety of new types of information can be stored in an iccMAX profile to support run-time transform creation of a smart or dynamic CMM. Examples include:
Programmable transforms (e.g. direct encoding of device models) are supported through Multi-processing Calc elements, with functional operators, conditional evaluation, persistent variables and vectorized operations for improved performance.
Future extendability is also provided through support for hierarchical data encoding, allowing optional data to be added later without requiring changes to the tag parser.
CMMs are able to select or define a suitable transform by referencing the color encoding standard (such as those listed in the ICC Three-component Registry) which can be specified in a v5 profile in place of a complete transform.
Comment on iccMAX.
If you wish to comment on iccMAX, please email the ICC Technical Secretary.
Participate in iccMAX.
If you are interested in developing or testing features in iccMAX, please contact the ICC Secretary to find out about individual membership of the Architecture Working Group. To receive updates on iccMAX, please email the ICC Technical Secretary.
ICC has developed an open-source reference implementation to support usefulness and adoption of iccMAX. The DemoIccMAX project (previously known as RefIccMax) provides an open source set of libraries and tools that allow for the interaction, manipulation, and application of iccMAX based color management profiles based on the iccMAX profile specification, in addition to legacy ICC profiles defined by earlier ICC profile specifications. Note: The SampleICC and iccXML projects were used as a basis for the further implementation of DemoIccMAX.
DemoIccMAX is hosted on a GitHub repository to enable developers to contribute to the project, and to ensure that the latest version is available from a single source. The project includes source code, header files, and project files for the libraries and tools provided by RefIccMAX as well as a comprehensive set of test profile definition files with batch files to create and test the application of transforms within iccMAX profiles. The repository provides source code for different platforms: MS Visual Studio, Mac XCode, and a dist-bin cmake build target for Linux.
Follow a video by Tanzima Habib for a detailed guide to building the code with Visual Studio on a PC.
In addition, command-line executables and test suites (containing test profiles etc) are available. For Windows systems there are the Win32 executables and Test Suite. For Unix and MacOS systems, there are the Linux and Darwin archives. The current version of the Demo Implementation is 2.1.19 on Windows (23 February 2021) and 2.1.10 on Linux/Darwin (6 March 2018).
Developers are encouraged to build the DemoIccMAX project, and report any issues or change requests via the GitHub repository. Users are also encouraged to create and apply profiles to implement and evaluate iccMAX transforms, by downloading the Win32 command line executables and test archives.
A number of example iccMAX profiles for different use cases are available to download, in both binary and xml versions, on the iccMAX Profiles page. The RefIccMax testing archive also contains example profiles.
Interoperability Conformance Specifications
A single iccMAX implementation is not expected to cover all possible use cases, but just a sub-set relevant to the needs of a particular industry. An Interoperability Conformance Specification defines the required sub-set of iccMAX elements for a given application. It lists the required and optional elements that should be included in iccMAX profiles, the recommended workflows to connect profiles, and the processing requirements of the CMM that processes the profiles.
Many new signatures are introduced in the iccMAX specification. The iccMAX tag and type signatures are listed in the ICC Signature Registry. The iccMAX specification introduces a number of new constructs such as arrays, structures and multi-processing element operations. These are all listed in the Registry of iccMAX signatures
Developers can submit issues with source code such as bug reports and pull requests on the Github site. ICC also hosts a wiki page where questions about the use of DemoIccMAX can be posted. You will need to create an account on the wiki, and then email the ICC Technical Secretary to obtain edit rights in order to post questions or to add your answers.
The current status of the iccMAX specification is here.
As errors are reported in the specification they are added to the ICC.2:2019 Cumulative Errata List
ICC DevCon 2020 was held on-line. The theme was 'The Future of Color Management', and there were presentations from researchers on new methods and solutions, talks from companies on their own implementation work, together with a hands-on workshop. Presentations are avbailable to download.
ICC DevCon 2018 was an opportunity to learn about how to implement iccMAX in your application. There were presentations from a wide range of companies on their own implementation work, together with a half-day hands-on workshop.
The 2016 ICC Developers Conference in San Diego on November 7 2016 provided an opportunity to learn more about iccMAX. It focused on real world problems and practical solutions based upon ICCLabs, and included a hands-on workshop session. A video of the event is available from NPES, and you can see a preview here.
ICC White Paper 45 provides an introduction to the expanded capabilities of iccMAX programming with ICC Multi-Process Element Calculator Elements.