# ICC-Profil

Ein ICC-Profil (auch: Farbprofil; ICC: International Color Consortium) ist ein genormter Datensatz, der den Farbumfang eines Farbeingabe- oder Farbwiedergabegeräts beschreibt, z. B. eines Monitors, Druckers oder Scanners. Der Farbumfang wird auch Geräte-Farbraum oder Gamut genannt.
Durch ein ICC-Farbprofil werden die Zahlen des RGB-Formates zu einer Maßeinheit mit einem festen Bezug zum wahrnehmbaren Farbraum. Das Koordinatensystem der wahrnehmbaren Farben ergibt sich aus dem CIE-Normvalenzsystem und ist gegeben durch die Farbräume CIE XYZ oder CIE LAB.
ICC-Profile werden im Farbmanagement verwendet, mit dem Ziel, dass eine Vorlage, die mit einem beliebigen Eingabegerät erfasst wurde, an anderen Ausgabegeräten möglichst ähnlich wiedergegeben wird. Beteiligte Geräte sind beispielsweise Scanner, Digitalkameras, Monitore, Drucker sowie Film- und Plattenbelichter. Die ICC-Profile sind die Grundlage für die Umrechnung der Farbräume zwischen Geräten (engl. Gamut mapping).
ICC-Profile werden häufig in zu verarbeitende Dateien eingebunden. Durch die Einbindung der Profile in Dateien, wie z. B. in die Dateiformate: PDF, DNG, JPEG, PNG, SVG, CSS4, wird dem Empfänger dieser Dateien mitgeteilt, wie die RGB-Farbwerte der Bildinformationen zu interpretieren sind. Bei Dateien, die kein Profil enthalten wird normalerweise sRGB als Farbraum angenommen.
In einem anderen Anwendungsfall werden die ICC-Profile in speziellen Dateien als Geräteprofil in Rechnern hinterlegt. Z. B. Bei Anzeigegeräten werden diese Geräteprofile verwendet, um darzustellende Farbwerte so umzurechnen, dass sie am entsprechenden Gerät optimal wiedergegeben werden. Bei Eingabegeräten werden sie verwendet, um die aufgezeichneten Werte farbrichtig zu interpretieren.
ICC ist die Abkürzung für das International Color Consortium, ein Zusammenschluss vieler Hersteller von Grafik-, Bildbearbeitungs- und Layoutprogrammen, 1993 gegründet mit der Absicht, eine Vereinheitlichung von Farbmanagementsystemen zu erzielen.

## Entwicklung

Die wichtigsten Meilensteine bei der Entwicklung waren:
* 1994: Veröffentlichung der Spezifikation von Version 2: ICC.1:2001-04
* 2001: Veröffentlichung der Spezifikation von Version 4: ICC.1:2001-12
* 2004: Version v4.2.0: ICC.1:2004-10
* 2005: ISO-Standard: ISO 15076-1, basierend auf Version 4
* 2010: Version v4.3.0 ICC.1:2010-12
* 2010: ISO 15076-1: 2010-12, basierend auf v4.3.0
* 2016: erweiterte Version iccMAX: ICC.2:2016
* 2019: ISO 20677-1 basierend auf iccMAX ICC.2:2019
* 2022: Version v4.4.0: ICC.1.2022
* 2023: iccMAX ICC.2:2023
Die meist verwendete Haupt-Version derzeit (2023) ist v4. Aber es gibt auch noch Anwendungen von v2.

## Aufbau eines ICC-Profils

Ein ICC-Profil ist ein Datensatz mit einer standardisierten Datenstruktur. Die Datenstruktur enthält
* Kopf-Bereich (header)
* Tabelle mit Bezeichnungen (tags) und Verweisen auf die eigentlichen Datenwerte (tag table)
* die Datenwerte, die zu den Tags in der Tabelle gehören, und auf die die Tabelleneinträge verweisen (tagged element data).
Je nach Anwendungsfall sind unterschiedliche Datenelemente (tags) enthalten.
Typische Anwendungsfälle sind durch so genannte Profilklassen beschrieben. Für jede Profilklasse ist vorgeschrieben welche Tags enthalten sein müssen (required tags). Außerdem gibt es noch zusätzliche Daten für spezielle Funktionen (optionale tags) und Raum für anwendungsspezifische Daten (private tags).

### Header

Der Header beinhaltet grundsätzliche Daten zum vorliegenden ICC-Profil. Dazu gehören:
* Versionsbezeichnung des verwendeten ICC-Standards, z. B. 4.4
* Kurzbezeichnung der Profilklasse, z. B. mntr für Monitor-Profile
* Farbmodell der Bild-Daten, z. B. RGB, wobei die Angabe RGB nicht den genauen Farbraum spezifiziert (Für die Definition der Primärfarben des Farbraums z. B. sRGB sind andere Tags zuständig.)
* Spezifikation, welcher Farbraum als Austauschfarbraum (PCS) verwendet wird. Zur Auswahl stehen: XYZ (oder Lab).
* Angaben zur Profilerstellung: Datum, Uhrzeit, Ersteller

### Austauschfarbraum

Eine zentrale Rolle spielt der Austauschfarbraum (en: Processing Color Space, PCS), der den Raum der wahrnehmbaren Farben in absoluten Koordinaten (XYZ oder Lab) umfasst. Der Austauschfarbraum stellt das absolute Vergleichsmaß für Interpretation von Farb-Daten dar. In vielen Anwendungen werden Eingabedaten erst in den Austauschfarbraum überführt und dann weiter in den Ausgabefarbraum abgebildet.
Um schädliche Rundungsfehler bei der Umrechnung zu vermeiden, bietet der Austauschfarbraum eine wesentlich größere Farbtiefe als beispielsweise RGB: In RGB hat jeder Kanal einen ganzzahligen Wertebereich zwischen 0 und 255 (8bit), während die XYZ-Werte im PCS in einem 16bit- oder 32bit-Format definiert sind.
Der PCS basiert auf dem CIE-Normvalenzsystem, insbesondere auf dem dort beschriebenen Standard 2° Beobachter von 1931, wobei eine standardisierte Lichtquelle mit der Lichtart D50 (Farbtemperatur 5004 °C, Tageslicht) angenommen wird.

### Profilklassen

ICC unterscheidet folgende Profilklassen (Die ICC Kurzbezeichnung ist in Klammern mit angegeben):
Geräteprofile:
* Monitor (mntr): Anzeigegeräte wie Monitore, Ausgabe via Internet Browser
* Eingabe (scnr): Eingabegeräte wie Scanner, Digitalkameras, Software zur Bildverarbeitung
* Ausgabe (prtr): Ausgabegeräte wie Tintenstrahldrucker, Druckmaschinen bzw. Druckprozesse.
Profile für anwendungsspezifische Verarbeitungszwecke, insbesondere zur Verwendung im professionellen Bereich durch ein Farbmanagementsystem (Color management system, CMS, Farbserver). Teilweise kann ein CMS hier auch Daten eintragen:
* Geräte-Verknüpfung (link): für spezielle Anwendungen, zur direkten Verrechnung zwischen Ein- und Ausgabe, ohne Verwendung des Austauschfarbraums (PCS). Z. B. für die Umrechnung von CMYK nach CMYK zwischen zwei verschiedenen Geräten, wie z. B. zwei Tiefdruck- und Bogenoffset-Maschinen. Die Profile enthalten in diesem Beispiel CMYK-zu-CMYK-Tabellen und werden z. B. in der Umrechnung von Anzeigen-Druckvorlagen (besonders PDF/X-3) genutzt.
* Farbraum (spac): für spezielle Anwendungen, zur direkten Verrechnung von Farbraumkonvertierungen, die geräteunabhängig sind, z. B. zwischen Lab-Farbraum und XYZ-Farbraum.
* Abstrakt (abst): für spezielle Farbraumtransformationen, je nach Anwendung, beispielsweise zur Umrechnung in ein Schwarz-Weiß-Bild, zur Aufhellung, oder zur Abdunkelung.
* Benannte Farben (nmcl): für Konvertierung einer Liste von Sonderfarben (Farbpaletten, Farbkataloge) in Lab-Farbraum oder Gerätefarbraum wie z. B. CMYK.

### Anwendungsfälle
#### Eingabeprofil, RGB, Matrix-Profil

Ein häufiger Anwendungsfall ist ein RGB-Profil, das in eine Bild-Datei eingebettet ist. Das Profil gibt dem Empfänger der Bild-Datei eine eindeutige Beschreibung, wie die RGB-Farbinformationen in den Bild-Daten zu interpretieren sind. Das Eingabe-Profil wird bei der Erzeugung des Bildes eingebettet, beispielsweise durch eine Digitalkamera oder durch eine Software zur Bildverarbeitung.
Das RGB-Profil spezifiziert:
* Eckpunkte des RGB-Farbraums im Raum der wahrnehmbaren Farben (Chromatizitätsebene, Normfarbtafel): Dazu werden die Eckpunkte des RGB-Farbraums in XYZ- oder Lab-Koordinaten angegeben. Im ICC-Profil werden dafür folgende Tags verwendet: rXYZ, gXYZ, bXYZ. Jedes Tag beinhaltet 3 Werte und entspricht einer Spalte der der Matrix, die zur Umrechnung vom RGB in das XYZ-Koordinatensystem benötigt wird. Daher wird dieses Art der Spezifikation auch Matrix-Profil genannt.
* Tonwertkurven für die RGB-Kanäle (Gammakorrektur): Die Tonwertkurven (en: tone reproduction curve, TRC) berücksichtigen die nichtlineare Empfindlichkeit der Augen auf Helligkeitsunterschiede. Die Kurven werden durch die Angabe von Stützstellen im ICC-Profil hinterlegt und bei der Verwendung interpoliert. Im ICC-Profil werden dafür folgende Tags verwendet: rTRC, gTRC, bTRC
* Weißpunkt: Falls nicht anders spezifiziert wird der RGB-Wert (255, 255, 255) als Weiß interpretiert. Der Weißpunkt entspricht im Austauschfarbraum in Lab-Koordinaten (100, 0, 0) und in XYZ-Koordinaten (0,9642, 1,0000, 0,8249) Im ICC-Profil wird dafür folgendes Tag verwendet: wtpt
Die freie Wahl des Schwarzpunktes im ICC-Profil ist in der ICC Version 2010: ISO 15076-1 entfallen. Die Einstellung des Schwarzpunktes (und z. B. die Tiefenkompensation) sind gegebenenfalls Optionen in der anwendungsspezifischen Software.
Die verwendeten ICC-Profile lehnen sich häufig an bekannten Standards wie sRGB, AdobeRGB etc. an. Häufig entsprechen sie jedoch diesen Standards nicht komplett. So gibt es beispielsweise auch für sRGB durchaus sehr verschiedene Implementierungen mit unterschiedlichen Zielsetzungen. Eine Rolle spielt die tolerierbare Größe des eingebetteten Profiles. Quelle für Unterschiede sind oft Rundungsfehler bei der Implementierung, oder Deutungsunterschiede der Standards.

#### Ausgabeprofil, RGB, LUT-Profil

Um ein Bild, das im PCS vorliegt, farbtreu wiedergeben zu können, ist es erforderlich, die Charakteristik des Ausgabegerätes genau zu kennen. Für die Profilierung wird ein Referenz-Bild mit Farbflächen verwendet, für die die RGB-Farbörter bekannt sind. Ein übliches Referenz-Bild ist das so genannte IT8-Target.
Das Ausgabegerät sei beispielsweise ein Bildschirm: Die Darstellung des IT8-Referenzbildes kann dann am Monitor messtechnisch geprüft werden. Aus dem Vergleich der RGB-Werte mit den gemessenen Farbwerten in XYZ-Koordinaten wird die Charakteristik des Monitors berechnet. Das führt zu einer Tabelle mit der Entsprechung von RGB-Werten und zugehörigen XYZ-Koordinaten. Mit Hilfe dieser Tabelle findet man zu einem Farbwert im PCS, der ausgegeben werden soll, den passenden RGB-Wert, den man am Bildschirm einstellen muss. Die Tabelle dient also als sogenannte Lookup-Tabelle (LUT). Die LUT wird im Monitorprofil hinterlegt um in Zukunft eine farbrichtige Wiedergabe zu erreichen.
Ein typischer Anwendungsfall für ein LUT-Profil ist also die so genannte Profilierung eines Monitors. Das Verfahren lässt sich aber auch sinngemäß auf andere Ausgabegeräte wie Scanner oder Drucker anwenden. Eine entsprechende Methode wird auch verwendet, um einen Kamerasensor zu profilieren und um in der Kamera die gemessenen Farbwerte in einen Standard-Farbraum wie sRGB umzurechnen.

### Technischer Aufbau: Matrix und LUT

Wie in den Anwendungsfällen gezeigt wurde, lassen sich nach ihrem technischen Aufbau zwei Arten von ICC-Profilen unterschieden:
* Matrix-Profile enthalten 3×3-Matrizen für die RGB-Primärvalenzen und Kurvendefinitionen wie z. B. für die Definition einer Gammakurve eines Bildschirms. Sie sind meist sehr klein (etwa 1 kByte, manchmal sogar kleiner als 0,5 kByte) und sind zur Beschreibung von Standard-Farbräumen und Ausgabegeräten geeignet, in denen sich die Primärvalenzen nicht gegenseitig beeinflussen (z. B. Monitore).
* LUT-Profile (Lookup-Tabelle) enthalten Tabellen und sind oft als Geräteprofile verwendet, also für Profile konkreter Geräte. Sie sind meist relativ groß, selten unter 1 MB. Sie enthalten u. a. eine Tabelle für eine Zuordnung von Farbwerten im Austauschfarbraum (in XYZ oder L*a*b* Koordinaten) zu den Werten im Farbraum des Ausgabegerätes z. B. CMYK-Druckers, profilierter Monitor. Komplexe Umrechnungen sind damit möglich, z. B. auch das Ansprechen von 10-Farbdruckern.

## Visuelle Darstellung der ICC-Profile

2D-Darstellungen der ICC-Profile, beispielsweise von Farbstoffherstellern, vernachlässigen oft die Helligkeitsachse, um alle Prozessfarben auf einmal zeigen zu können. Dadurch kann es zu Problemen kommen, da Farbtöne als im Farbraum befindlich erscheinen, die es gar nicht sind. 3D-Modelle der ICC-Profile dagegen können sehr gut am Computer visualisiert werden. macOS hat mit ColorSync eine mitgelieferte Möglichkeit. Ferner gibt es:
* ColorThink Pro von Chromix zur Visualisierung von Farbdaten.
* ICC Examin, Farbprofilbetrachter und 3D Farbenbetrachter – für Mac OS X oder Linux
* ICCView, ICC-Farbprofil als 3D-Modell – Darstellung im Browser, erfordert WebGL oder ein VRML-Plugin

## Anwendung der ICC-Profile im Farbmanagement

Das Farbmanagement liefert eine standardisierte Verarbeitungskette für Bildinformationen, die zwischen verschiedenen Geräten, ausgetauscht werden. Da die Geräte üblicherweise verschiedene Farbräume verwenden, müssen bei der Verarbeitung die Farbinformationen geeignet umgerechnet werden. Dabei sind die ICC-Profile erforderlich.
Die Umrechnung zwischen Farbräumen erfolgt so, dass die Ausgabe im Ziel-Farbraum (z. B. des Druckers) dem Original möglichst nahe kommt, obwohl der Quell-Farbraum (z. B. der Kamera) anders geformt war. Dabei kann je nach der Absicht bei der Wiedergabe zwischen verschiedenen Methoden (Rendering Intent) gewählt werden, die zu unterschiedlichen Kompromissen (Prioritäten) bei der Umrechnung führen.
Die Information zur Farbübertragung muss dazu im Farbprofil als Tabelle oder Matrix hinterlegt sein.

### Interoperabilität (PCS)

Als „voll interoperabel“ werden Farbprofile mit einer umkehrbaren Abbildung zum Austauschfarbraum (PCS) bezeichnet.
Dazu zählen die Profil-Klassen Monitor (mntr), Eingabe (scnr), Ausgabe (prtr) und Einzelfarben (ncl2). Entsprechende Profile lassen sich in Verarbeitungsketten prinzipbedingt via PCS einfach kombinieren, im Gegensatz zu Device-Link-Profilen (link), die den Austauschfarbraum nicht verwenden.