Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Exécution de transformation séquentielle
Création de transformations optimisées
Préservation noire et génération noire
Création de transformations
Pour expliquer correctement comment fonctionnent les transformations de couleur, il est utile d’expliquer le chemin de traitement complet via ICM 2.0 et les internes de l’objet CTE. La fonction CreateColorTransformW ICM 2.0 crée une transformation de couleur que les applications peuvent utiliser pour effectuer la gestion des couleurs. Cette fonction crée un contexte de couleur à partir des entrées LOGCOLORSPACE et intention. Les intentions sont mappées à l’algorithme de mappage de gamut ICC de référence. La fonction appelle ensuite la fonction ICM 2.0 CreateMultiProfileTransform pour un traitement de couleur cohérent. La fonction CreateColorTransform copie généralement les données dans la structure de transformation optimisée interne.
La fonction CreateMultiProfileTransform ICM 2.0 accepte un tableau de profils et un tableau d’intentions ou un profil de liaison d’appareil unique et crée une transformation de couleur que les applications peuvent utiliser pour effectuer un mappage de couleurs. Il traite ces profils et intentions d’entrée pour créer des modèles d’appareil, des modèles d’apparence de couleur, des descriptions de limites de gamut et des modèles de mappage de gamut. Voici comment procéder :
- Les modèles d’appareil sont initialisés directement à partir de profils DM. Il existe un modèle d’appareil créé pour chaque profil dans l’appel à CreateMultiProfileTransform.
- Les modèles d’apparence de couleur sont initialisés directement à partir de profils CAM. Il existe un profil CAM pour chaque profil dans l’appel à CreateMultiProfileTransform. Toutefois, le même profil CAM peut être spécifié pour plusieurs profils.
- Les descriptions des limites gamut sont initialisées à partir d’un objet de modèle d’appareil et d’un objet CAM. Il existe une description de limite de gamut pour chaque profil dans l’appel à CreateMultiProfileTransform.
- Les modèles de mappage gamut sont initialisés à partir de deux limites de gamut et d’une intention. Vous devez créer un modèle de mappage gamut entre chaque paire de modèles d’appareil créés à partir de l’appel à CreateMultiProfileTransform. Notez que cela signifie que vous utilisez un modèle de carte de gamut moins élevé que le modèle d’appareil. Étant donné que le nombre d’intentions correspond au nombre de modèles d’appareil, il existe également une intention de plus que nécessaire. La première intention de la liste est ignorée. Vous parcourez la liste des modèles et intentions d’appareil, en créant des modèles de mappage de gamut. Récupérez les modèles de premier et deuxième appareil et la deuxième intention, puis initialisez le premier modèle de mappage de gamut. Récupérez les deuxième et troisième modèles d’appareil et la troisième intention, puis initialisez le deuxième modèle de mappage de gamut. Continuez de cette façon jusqu’à ce que vous ayez créé tous les modèles de mappage de gamut.
Lorsque les profils ont été correctement traités et que tous les objets intermédiaires ont été créés et initialisés, vous pouvez créer la transformation CITE avec l’appel suivant. Le pDestCAM et pDestDM sont ceux associés au dernier profil dans l’appel à CreateMultiProfileTransform.
HRESULT CreateCITEColorTransform(
__inout IDeviceModel *pSourceDM,
__inout IColorAppearanceModel *pSourceCAM,
__in GamutMapArray *pGamutMapArray,
__inout IColorAppearanceModel *pDestCAM,
__inout IDeviceModel *pDestDM,
EColorTransformMode eTransformMode,
__deref_out IColorTransform **ppCTS
);
Prise en charge des plug-ins
L’un des problèmes liés à la configuration de la liste de transformations consiste à vérifier si un plug-in requis est disponible. Le commutateur de modèle suivant fournit cette stratégie pour contrôler ce comportement. La gestion de cette liste de transformations est une méthode dans la structure de transformation optimisée interne, mais chaque méthode de modèle fournit le pointeur vers lui-même et son propre ensemble de valeurs de paramètres.
Le mode doit être l’un des éléments suivants.
- TfmRobust : si un profil de mesure spécifie un plug-in préféré et que le plug-in n’est pas disponible, le nouveau système CTE utilise le plug-in de référence. Si aucun plug-in n’est disponible, la transformation signale une erreur.
- TfmStrict : Si ColorContext spécifie un plug-in préféré, le plug-in doit être disponible. Si aucun plug-in préféré n’est trouvé, le plug-in de base est utilisé. Si aucun plug-in n’est disponible, la transformation signale une erreur.
- TfmBaseline : seuls les plug-ins de référence peuvent être utilisés dans AddMeasurementStep. Si ColorContext spécifie un plug-in préféré, le plug-in est ignoré. Si le plug-in de référence n’est pas disponible, la transformation signale une erreur.
Transformation de l’exécution
La fonction TranslateColors de l’API ICM 2.0 traduit un tableau de couleurs de l’espace de couleur source en espace de couleur de destination tel qu’il est défini par une transformation de couleur. Cette fonction vérifie en interne un tableau de couleurs mises en cache pour permettre la correspondance immédiate des couleurs couramment transformées. Cette transformation prend en charge les 8 bits par octet de canal et les 32 bits par canal. Tous les autres formats seront convertis avant de passer au nouveau CTE.
La fonction TranslateBitmapBitbits de l’API ICM 2.0 traduit les couleurs d’une bitmap ayant un format défini pour produire une autre bitmap dans un format demandé. Cette fonction vérifie en interne un tableau de couleurs mises en cache pour permettre la correspondance immédiate des couleurs couramment transformées. Pour éviter un trop grand nombre de chemins de code, la prise en charge et la complexité des tests, seuls un nombre limité de formats bitmap sont réellement pris en charge dans le moteur de transformation et d’interpolation. Cette fonction doit traduire les formats bitmap entrants et sortants non natifs en formats bitmap pris en charge en mode natif pour le traitement. Cette transformation prend uniquement en charge les bitmaps d’octets de 8 bits par canal et les bitmaps flottantes de 32 bits par canal. Tous les autres formats seront convertis avant de passer au nouveau CTE.
Exécution de transformation séquentielle
Si le paramètre dwFlags a le SEQUENTIAL_TRANSFORM bit défini lorsque les fonctions ICM CreateColorTransformW ou CreateMultiProfileTransformTransform sont appelées, les étapes de transformation sont exécutées séquentiellement. Cela signifie que le code passe par chaque modèle d’appareil, modèle d’apparence de couleur et modèle de mappage de gamut séparément, comme spécifié par l’appel CreateColorTransform ou CreateMultiProfileTransform . Cela peut être utile pour le débogage des modules de plug-in, mais il est beaucoup plus lent que l’exécution par le biais d’une transformation optimisée. L’exécution en mode séquentiel n’est donc pas recommandée pour les logiciels de production. En outre, il peut y avoir de légères différences dans les résultats obtenus en mode séquentiel et en mode optimisé. Cela est dû aux variations introduites lorsque les fonctions sont concaténées ensemble.
Création de transformations optimisées
Une transformation optimisée est une table de choix multidimensionnelle. La table peut être traitée par un moteur d’interpolation multidimensionnel, tel que l’interpolation tétrahedrale, qui applique les couleurs d’entrée à la transformation. La section suivante décrit comment les tables de recherche optimisées sont créées. La section suivante décrit comment interpoler dans les tables de recherche optimisées.
Tables de recherche éparses
Les imprimantes conventionnelles ont des encres CMYK. Pour étendre la gamme, une approche consiste à ajouter de nouvelles entrées manuscrites au système. Les encres généralement ajoutées sont des couleurs que les encres CMYK ont des difficultés à reproduire. Les choix courants sont orange, vert, rouge, bleu, etc. Pour augmenter la « résolution apparente », les encres avec différentes teintes peuvent être utilisées, par exemple, cyan clair, magenta clair, et ainsi de suite. En effet, l’appareil d’imprimante a plus de quatre canaux.
Bien que les imprimantes soient des périphériques de sortie, elles effectuent également la conversion de couleur de l’espace de l’appareil vers un autre espace de couleur. Dans le cas d’une imprimante CMYK, il s’agirait d’une transformation de CMYK vers XYZ, ou du « modèle avant » de l’imprimante. En combinant le modèle avant avec d’autres transformations, il est possible d’émuler une impression CMYK sur un autre appareil. Par exemple, une clé CMYK d’imprimante sur un moniteur RVB rend possible un mécanisme de vérification linguistique qui émule une impression de cette imprimante CMYK sur un moniteur. De même, la même chose s’applique également aux imprimantes hi-fi. Une conversion CMYKOG en RVB permet la vérification de l’imprimante CMYKOG sur un moniteur.
L’approche conventionnelle de l’implémentation de cette conversion de couleur consiste à utiliser un LUT uniforme. Par exemple, dans un profil ICC pour une imprimante CMYKOG, la spécification ICC impose une balise A2B1 qui stocke un LUT uniforme représentant un échantillonnage uniforme dans l’espace d’appareil CMYKOG du modèle avant, qui passe de CMYKOG à l’espace de connexion de profil ICC (CIELAB ou CIEXYZ). Le profil de lien d’appareil ICC permet une transformation directe de l’espace d’appareil CMYKOG vers n’importe quel espace de couleur, y compris un espace d’appareil, également sous la forme d’un LUT échantillonné uniformément dans l’espace CMYKOG. L’échantillonnage n’est jamais effectué avec 256 niveaux (profondeur de bits 8) en raison de l’énorme résultat LUT résultant, sauf dans le cas d’appareils monochromes (1 canal). Au lieu de cela, l’échantillonnage avec une profondeur de bits inférieure est utilisé ; Certains choix typiques sont 9 (profondeur de bit 3), 17 (profondeur de bit 4), 33 (profondeur de bit 5). Avec le nombre de niveaux inférieurs à 256 dans chaque canal, le LUT est utilisé conjointement avec un algorithme d’interpolation pour produire le résultat si un niveau se situe entre deux niveaux échantillonné.
Bien qu’un LUT uniforme soit conceptuellement simple à implémenter et à interpoler sur un LUT uniforme est généralement efficace, la taille LUT augmente de manière exponentielle avec la dimension d’entrée. En fait, si d correspond au nombre d’étapes utilisées dans le LUT uniforme, et n est le nombre de canaux dans l’espace de couleur source, le nombre de nœuds dans le LUT est . Il est clair que le nombre de nœuds demande rapidement tant de stockage en mémoire que même les systèmes informatiques de pointe ont des difficultés à gérer la demande. Pour les appareils avec six ou huit canaux, une implémentation ICC du profil d’appareil nécessite quelques étapes dans le LUT, parfois jusqu’à cinq étapes de la table A2B1 pour conserver le profil au sein de mégaoctets au lieu de gigaoctets. Clairement, l’utilisation d’un plus petit nombre d’étapes augmente l’erreur d’interpolation, car il y a maintenant moins d’échantillons. Étant donné que le LUT doit être uniforme, la précision sur l’espace de couleur entier est détériorée même dans les régions de l’espace où une différence de couleur significative peut être causée par une petite modification de la valeur de l’appareil.
Dans les appareils avec plus de quatre colorants, certains sous-espaces de l’espace de l’appareil sont plus importants que d’autres. Par exemple, dans l’espace CMYKOG, les encres cyan et vertes sont rarement utilisées ensemble, car leurs teintes se chevauchent en grande partie. De même, les encres jaune et orange se chevauchent en grande partie. Une réduction uniforme du nombre d’étapes peut être considérée comme une dégradation globale de la qualité dans l’espace de couleur entier, ce qui est quelque chose que vous pouvez vous permettre pour les combinaisons d’encre improbables, mais pas pour les combinaisons probables ou importantes.
Bien qu’un LUT échantillonné uniformément soit simple et efficace pour l’interpolation, il impose d’énormes exigences de mémoire à mesure que la dimension augmente. En réalité, alors qu’un appareil peut avoir six ou huit canaux, ils sont rarement utilisés simultanément. Dans la plupart des cas, la couleur d’entrée à la transformation de couleur n’a que quelques colorants « actifs » et réside donc dans un espace de couleur de dimension inférieure. Cela signifie également que l’interpolation peut être effectuée plus efficacement dans cet espace dimensionnel inférieur, car l’interpolation est plus rapide lorsque la dimension est inférieure.
Par conséquent, l’approche consiste à stratifier l’espace de l’appareil entier en sous-espaces de différentes dimensions. Et parce que les dimensions inférieures (qui combinent trois ou quatre colorants) sont plus importantes, en stratifiant l’espace, vous pouvez également appliquer différents taux d’échantillonnage ; c’est-à-dire un nombre différent d’étapes, aux morceaux ; augmentation des taux d’échantillonnage pour les dimensions inférieures, ce qui les réduit pour les dimensions plus élevées.
Pour corriger les notations, n est le nombre de canaux dans l’espace de couleur source de la transformation de couleur que vous souhaitez échantillonner. Vous pouvez également faire référence à n comme dimension d’entrée et , sauf indication contraire.
Les blocs de construction de base sont des UNITÉS logiques de différentes dimensions et tailles d’entrée, au lieu d’un LUT uniforme avec la dimension d’entrée n. Pour être plus précis, unLUT est un treillis rectangulaire imposé sur un cube d’unité ; autrement dit, toutes les coordonnées de l’appareil sont normalisées à la plage [0, 1]). s’il s’agit de la dimension d’entrée du lut (notez qu’il n’est pas nécessaire d’être égal à n, bien que soit requis), elle se compose de grilles d’échantillonnage unidimensionnelles :
Samp i :
où tous les x js doivent se trouver dans la plage [0, 1], représente le nombre d’étapes de l’échantillonnage du canal ith qui doit être au moins 1, et
Doit être 1. En revanche, il n’est pas nécessaire d’afficher
Il n’est pas nécessaire d’avoir la valeur 0.
Seuls les deux cas spéciaux suivants de LUT seront définis.
LUT fermé : il s’agit d’un LUT avec l’exigence supplémentaire que pour chaque Samp*i*, Et
Un LUT fermé uniforme est un LUT fermé qui a le même
chaque canal, les nœuds sont uniformément espacés entre 0 et 1.
Ouvrez LUT : il s’agit d’un LUT avec l’exigence supplémentaire que pour chaque Samp i, Il est OK d’avoir
L’objectif est de stratifier le cube d’unité [0, 1] n dans une collection de luTs fermés et d’ouvrir des LUT, de sorte que toute la collection couvrira le cube d’unité. Il est conceptuellement plus simple d’organiser ces « strates LUT » par leurs dimensions, de sorte qu’au niveau supérieur :
où est la collection « k -dimensional strata ». Notez que la dimension de strate commence à partir de 3 au lieu de 0 ; c’est-à-dire des points, car l’interpolation de combinaisons de trois colorants peut être gérée sans trop de mémoire requise.
Description de la strate LUT
Dans cette implémentation :
se compose de luTs fermés avec trois entrées, une de chaque combinaison possible de trois colorants choisis parmi les n colorants.
se compose d’un LUT fermé pour la combinaison CMYK (ou les quatre premiers colorants), ainsi que
luTs ouverts pour toutes les autres combinaisons de quatre colorants. En singlant la combinaison CMYK, vous reconnaissez qu’il s’agit d’une combinaison importante.
Pour
,
se compose de
open LUTs, un pour chaque combinaison possible de choix de k colorants à partir du total de n colorants.
Il reste à spécifier les tailles des unités logiques. La principale différence entre les LUT ouvertes et fermées est que les LUT ouverts ne se chevauchent pas, et que les LUT fermés peuvent chevaucher les visages de la limite. Le fait que l’échantillonnage unidimensionnel dans un LUT ouvert ne contient pas 0, signifie essentiellement qu’un LUT ouvert ne manque pas la moitié des visages de limite, d’où le nom « ouvert ». Si deux UNITÉS logiques ne se chevauchent pas, vous pouvez utiliser un nombre différent d’étapes ou d’emplacements de nœud dans chaque canal. La même chose n’est pas vraie si deux LUT se chevauchent. Dans ce cas, si le nombre d’étapes ou les emplacements de nœud sont différents, un point qui se trouve dans l’intersection des deux UNITÉS logiques reçoit une valeur d’interpolation différente en fonction de l’interpolation utilisée dans l’interpolation. Une solution simple à ce problème consiste à utiliser l’échantillonnage uniforme avec le même nombre d’étapes chaque fois que deux LUT se chevauchent. En d’autres termes :
Toutes les LUT fermées (toutes les LUT à trois colorants et le LUT CMYK dans cette implémentation) doivent être uniformes et avoir le même nombre d’étapes, qui sont indiquées d.
Les deux algorithmes suivants peuvent être utilisés pour déterminer le nombre d’étapes d pour les unités logiques fermées et le nombre d’étapes pour les luT ouverts.
Algorithme #1
Cet algorithme ne nécessite pas d’entrée externe.
Toutes les unités logiques fermées seront uniformes avec le nombre d’étapes.
Toutes les LUT ouvertes de dimension k auront le même nombre d’étapes dans chaque canal d’entrée, et les nœuds sont également espacés ; c’est-à-dire, pour chaque
.
Samp i :
Enfin, spécifiez d et d (k ) dans le tableau 1 suivant. Les trois modes, « preuve », « normal » et « best » sont les paramètres de qualité ICM 2.0. Dans cette implémentation, le mode de preuve a le plus petit encombrement mémoire et le meilleur mode a le plus grand encombrement mémoire.
Pour implémenter cet algorithme, vous devez appeler l’algorithme suivant #2. Les utilisateurs peuvent spécifier leurs propres emplacements d’échantillonnage, à l’aide des tables comme guide.
Algorithme #2
Cet algorithme nécessite une entrée externe sous la forme d’une liste d’emplacements d’échantillonnage « importants », mais il est plus adaptatif et peut économiser de l’espace mémoire potentiellement.
L’entrée requise est un tableau de valeurs d’appareil fournies par l’utilisateur. Ces valeurs d’appareil indiquent quelle région de l’espace de couleur de l’appareil est importante ; autrement dit, quelle région doit être échantillonné plus.
Toutes les unités logiques fermées sont uniformes avec le nombre d’étapes décrites dans l’algorithme #1. Les valeurs de d sont fournies dans le tableau 1.
(a) Uniform Closed LUT
Mode de vérification | Mode normal | Meilleur mode | |
---|---|---|---|
d | 9 | 17 | 33 |
(b) Ouvrir LUT
Dimension d’entrée | Mode de vérification | Mode normal | Meilleur mode |
---|---|---|---|
4 | 5 | 7 | 9 |
5 | 2 | 3 | 3 |
6 | 2 | 3 | 3 |
7 | 2 | 2 | 2 |
8 ou plus | 2 | 2 | 2 |
Tableau 1 : Tailles LUT utilisées dans l’algorithme
Chaque LUT ouvert peut avoir un nombre différent d’étapes dans chaque canal d’entrée, et les emplacements d’échantillonnage n’ont pas besoin d’être également espadés. Pour une strate LUT ouverte donnée, il existe une combinaison de colorants associée, par exemple, où les indices C i
sont des entiers distincts compris entre 1 et n. Il s’agit des indices de canal correspondant aux colorants « actifs » de cette strate.
ÉTAPE 1 : Filtrez le tableau entré de valeurs d’appareil qui ne sont pas contenues dans cette couche. Une valeur d’appareil est contenu dans la couche, si et uniquement si
Tous les autres canaux sont 0. Si le jeu filtré a N entrées, laissez
Pour chaque , itérer les étapes suivantes 2-5 :
ÉTAPE 2 : Si , Samp i n’a que 1 point, qui doit être égal à 1,0. Passez à l’i suivant. Sinon, passez à l’ÉTAPE 3.
ÉTAPE 3 : Trier les exemples filtrés dans l’ordre croissant dans le canal
ÉTAPE 4 : Définir la grille d’échantillonnage « provisoire » à l’aide des nœuds
où
ÉTAPE 5 : Régulariser la grille provisoire pour s’assurer qu’elle est conforme à la monotonie stricte et qu’elle se termine par 1,0. Étant donné que le tableau est déjà trié, les nœuds de la grille provisoire sont déjà monotoniques nondecreasing. Toutefois, les nœuds adjacents peuvent être identiques. Vous pouvez résoudre ce problème en supprimant les nœuds identiques, si nécessaire. Enfin, après cette procédure, si le point de terminaison est inférieur à 1,0, remplacez-le par 1,0.
Notez que l’ÉTAPE 5 est la raison pour laquelle la strate LUT peut avoir un nombre différent d’étapes dans chaque canal. Après la régularisation, le nombre d’étapes d’un canal peut être inférieur à
Interpolation
Vous pouvez construire la stratification du cube d’unité en ouvrant la strate LUT et la strate LUT fermée. Pour effectuer l’interpolation à l’aide de cette « structure LUT éparse », procédez comme suit. Supposons qu’une valeur d’appareil d’entrée donnée
ÉTAPE 1 : Déterminer le nombre de canaux « actifs ». Il s’agit du nombre de canaux non nuls. Cela détermine la dimension de strate k à rechercher dans la couche contenante. Plus précisément, la dimension de strate est 3 si le nombre de canaux actifs est Sinon, la dimension de strate est identique au nombre de canaux actifs.
ÉTAPE 2 : Dans , recherchez la couche contenante. Une valeur d’appareil est contenue dans une couche ouverte si tous les canaux correspondant à la couche ont une valeur différente de zéro et que tous les autres canaux sont nuls. Une valeur d’appareil est contenue dans une couche fermée si chaque canal non représenté par la couche est égal à zéro. Si aucune couche contenant n’est trouvée, il existe une condition d’erreur. Annuler et signaler l’échec. Si une couche contenant est trouvée, passez à l’étape suivante.
ÉTAPE 3 : Si la couche contenante est fermée, l’interpolation au sein de la couche peut être effectuée par n’importe quel algorithme d’interpolation connu. Dans cette implémentation, le choix de l’algorithme est l’interpolation tétraédrale. Si la couche contenante est ouverte et que la valeur de l’appareil se trouve strictement dans la couche, autrement dit,
premier nœud dans le canal i th
où i est un index de canal pour la strate, puis l’algorithme d’interpolation standard, tel que l’interpolation tétrahedrale, fonctionne.
Si premier nœud dans i th channel pour un i, la valeur de l’appareil tombe dans l'« écart » entre la strate et les sous-espaces de dimension inférieure. Cette fonction MOI n’est pas concernée par un algorithme d’interpolation par elle. Par conséquent, tout algorithme d’interpolation peut être utilisé pour interpoler dans cet « écart », bien que l’algorithme préféré soit l’interpolation transfinite suivante.
L’architecture du module d’interpolation est illustrée dans les deux parties de la figure 1.
Figure 1 : Architecture du module d’interpolation
Comme expliqué précédemment, cet algorithme est en mesure d’obtenir un échantillonnage raisonnablement dense dans les régions de l’espace d’appareil qui contiennent une combinaison importante de colorants, tout en réduisant la taille totale des LUT nécessaires. Le tableau suivant montre une comparaison du nombre de nœuds nécessaires pour l’implémentation LUT éparse (à l’aide de l’algorithme #1 et du mode normal) et de l’implémentation LUT uniforme correspondante.
Nombre de canaux d’entrée | LUT éparse | LUT uniforme |
---|---|---|
5 | 142498 | 1419857 |
6 | 217582 | 24137567 |
7 | 347444 | 410338673 |
8 | 559618 | 6975757441 |
Interpolation dans un cube d’unité
Une étape de base dans le cas d’une grille rectangulaire est l’interpolation dans une cellule englobante. Pour un point d’entrée, vous pouvez déterminer facilement la cellule englobante. Dans une grille rectangulaire, la valeur de sortie à chacun des sommets (points d’angle) de la cellule englobante est spécifiée. Il s’agit également des seules conditions de limite auxquelles un interpolant doit satisfaire : l’interpolant doit passer par tous ces points. Notez que ces conditions de limite se trouvent sur des points « discrets », dans ce cas les points d’angle 2n de la cellule, où n est la dimension de l’espace de couleur.
Il est utile de formaliser le concept de conditions limites avant de passer à l’avant. Pour tout sous-ensemble S de la limite de la cellule englobante (le cube d’unité en n dimensions), une condition de limite sur S est une spécification d’une fonction BC : S → Rm, où m est la dimension de sortie. En d’autres termes, un interpolant, qui peut être indiqué interp : [0,1]n→ Rm, est requis pour satisfaire : Interp(x) = BC(x) pour tous les x dans S.
Dans le scénario standard d’interpolation sur le cube d’unité, S est l’ensemble de points discrets qui sont les sommets 2n du cube.
Vous pouvez maintenant généraliser les conditions de limite pour résoudre les problèmes décrits précédemment et fournir un nouvel algorithme d’interpolation dans le cube d’unité. Au lieu d’autoriser uniquement les points de limite discrets, les conditions de limite peuvent être imposées sur une face de limite entière du cube. Les hypothèses précises sont les suivantes :
(a) Le point vn =(1,1,...,1) est spécial et seule une condition de limite discrète est autorisée. En d’autres termes, aucune condition de limite continue ne peut être imposée sur les faces de limite n xi=1 (i=1,...,n).
(b) Pour chacun des autres visages de limite n xi=0 (i=1,...,n), la condition de limite peut être imposée sur l’ensemble du visage, avec la condition de compatibilité que si deux visages se croisent, les conditions limites des visages doivent convenir de l’intersection.
(c) Tous les sommets non contenus dans les visages avec condition de limite auront une condition de limite individuelle (discrète).
Vous pouvez faire référence à une condition de limite discrète en tant que données finies et à une condition de limite continue en tant que données transfinites pour discuter de l’interpolation sur les données finies et transfinites.
Tout d’abord, examinez l’interpolation tétraédrale standard (telle que celle utilisée dans le brevet de Sakamoto) qui permet de définir les notations pour cette formulation particulière du problème. Il est connu que le cube d’unité [0,1]n peut être subdivisé en n ! tetrahedra, paramétré par l’ensemble de permutations sur n symboles. Plus précisément, chacun de ces tétrahedron est défini par des inégalités
où σ :{1,2,..,n}→{1,2,...,n} est une permutation de « symboles » 1, 2, ..., n, c’est-à-dire un mappage bijectif du jeu de n symboles. Par exemple, si n = 3 et σ = (3, 2, 1), ce qui signifie σ(1)=3, σ(2)=2, σ(3)=1, alors que le tetrahedron correspondant est défini par z≥y≥x, où la notation commune x, y, z est utilisée pour x1, x2, x3. Notez que ces tétrahedrons ne sont pas disjoints les uns des autres. Dans le but de l’interpolation, les points se mentant sur un visage commun de deux tetrahedrons distincts auront la même valeur d’interpolation, quel que soit le tetrahedron utilisé dans l’interpolation. Néanmoins, dans le scénario standard d’interpolation sur des points finis, pour un point d’entrée donné (x1, ..., xn), déterminez d’abord le tetrahedron dans lequel il se trouve, ou équivalent, la permutation correspondante σ, puis l’interpolant tetrahedral est défini comme étant
où pour i=1, ..., n et e1, ..., en sont les vecteurs de base standard. Avant de passer à la généralisation, notez que v0, v1, ..., vn sont les sommets du tetrahedron et
Pour le cas général des contrôleurs de domaine sur les visages de limites, vous pouvez utiliser le concept de projection barycentrique. Comme précédemment, pour un point d’entrée donné (x1, ..., xn), déterminez d’abord dans quel tetrahedron il se trouve, ou équivalent, la permutation correspondante σ. Ensuite, effectuez une série de projections barycentriques, comme suit. La première projection Envoie le point au plan
Sauf si
auquel cas il n’est pas modifié. La définition précise de la carte BProj est définie comme suit :
avec et k = 1, 2, ..., n.
Dans le cas vous pouvez arrêter, car BC est défini à vn par hypothèse (a). Dans le cas
il est clair que
A la σ(1)ième composant annihilé. En d’autres termes, il se trouve sur l’un des visages de limite. Soit il est sur un visage sur lequel BC est défini, auquel cas vous pouvez arrêter, ou vous effectuez une autre projection barycentrique
Et si
est sur un visage sur lequel BC est défini, vous pouvez arrêter ; sinon, effectuez une autre projection
Étant donné que chaque projection annihile un composant, la dimension effective diminue, donc vous savez que le processus doit s’arrêter. Dans le pire des cas, vous effectuez n projections jusqu’à la dimension 0, c’est-à-dire des sommets sur le cube, qui selon l’hypothèse (c), vous savez que BC sera défini dessus.
En supposant que des projections K ont été effectuées, avec
x(0)= x, le point d’entrée et BC est défini à x(k). Ensuite, décompressez les projections en définissant une série de vecteurs de sortie :
où et vous obtenez enfin la réponse
Exemple de travail
Figure 2 : Exemple de travail
Considérez la situation représentée dans la figure 2, où n = 3, m = 1 et vous disposez des contrôleurs de domaine suivants :
(a) Quatre contrôleurs de domaine discrets sur les sommets
(0, 0, 1): β001
(0, 1, 1): β011
(1, 0, 1): β101
(1, 1, 1): β111
(b) Bc continu sur la face x3=0 : F(x1, x2)
Calcul n°1 : point d’entrée x = (0.8, 0.5, 0.2). Le tetrahedron englobant est associé à la permutation <1, 2, 3>.
1ère projection :
Il s’agit déjà du visage x3=0, ce qui vous permet d’arrêter. La substitution descendante donne ensuite
qui est la réponse.
Calcul n°2 : point d’entrée x = (0.2, 0.5, 0.8). Le tetrahedron englobant est associé à la permutation <3, 2, 1>.
1ère projection :
2e projection :
3ème projection : , qui se trouve sur la face x3=0. La substitution descendante donne ensuite
Il s’agit de la réponse finale.
Applications logicielles
(a) Interpolation séquentielle tetrahedrale
Figure 3 : Interpolation tétraédrale séquentielle
Reportez-vous à la figure 3. Pour interpoler entre deux plans sur lesquels des grilles incompatibles ont été imposées, considérez une cellule englobant un point donné P illustré dans la figure. Les sommets « top » de la cellule proviennent directement de la grille dans le plan supérieur. Les sommets dans le visage inférieur ne sont pas compatibles avec la grille dans le plan inférieur, de sorte que l’ensemble du visage est traité comme ayant une BC avec des valeurs obtenues par interpolation sur la grille dans le plan inférieur. Il est alors clair que cette configuration satisfait aux hypothèses (a), (b) et (c) ci-dessus, et que vous pouvez appliquer l’algorithme d’interpolation.
Il est également clair que l’algorithme a réduit la dimension du problème d’interpolation de 1, car le résultat est une combinaison linéaire de valeurs aux sommets de la grille supérieure, et l’interpolation dans le plan inférieur, qui a une dimension inférieure moins 1. Si une configuration de plan de sandwich similaire existe dans le plan inférieur, vous pouvez appliquer la procédure dans ce plan, réduisant davantage la dimension de 1. Cette procédure peut continuer jusqu’à atteindre la dimension 0. Cette cascade de projections et d’interpolations peut être appelée « Interpolation tetrahedral séquentielle ».
(b) Interpolation d’écart
Figure 4 : Interpolation d’écart
Il s’agit d’une grille imposée à un cube assis strictement à l’intérieur du quadrant positif. Le cube lui-même a une grille, et chaque plan de coordonnées a des grilles qui ne sont pas nécessairement compatibles. L'« écart » entre le cube et les plans de coordonnées a une section croisée qui est « en forme L » et n’est pas aménable aux techniques standard. Toutefois, avec la technique introduite ici, vous pouvez facilement introduire des cellules qui couvrent cet écart. La figure 4 représente l’une de ces illustrations. Les grilles sur les plans de coordonnées prennent en charge l’interpolation qui fournit les contrôleurs de domaine nécessaires pour tous les visages inférieurs de la cellule, avec un sommet restant dont BC est fourni par le coin inférieur du cube.
Note finale sur l’implémentation
Dans l’application réelle, le « cube d’unité » qui est le paramètre de base de l’algorithme est extrait de plus grandes lattiques, et les valeurs au niveau des sommets peuvent nécessiter un calcul coûteux. D’autre part, il est également clair que l’interpolation tétraédrale ne nécessite que les valeurs aux sommets du tetrahedron, qui est un sous-ensemble de tous les sommets du cube d’unité. Par conséquent, il est plus efficace d’implémenter ce qui peut être appelé « évaluation différée ». Dans une implémentation logicielle de l’algorithme précédent, il est courant d’avoir une sous-routine qui prend le cube d’unité et les valeurs à ses sommets comme entrée. L’évaluation différée signifie qu’au lieu de transmettre les valeurs aux sommets, les informations nécessaires pour évaluer les valeurs des sommets sont passées, sans réellement effectuer l’évaluation. À l’intérieur de la sous-routine, l’évaluation réelle de ces valeurs ne sera effectuée que pour les sommets qui appartiennent au tétrahedron englobant, après la détermination du tétrahedron englobant.
Table de recherche à utiliser avec des périphériques sources RVB virtuels à plage dynamique élevée
Dans le cas où une transformation est construite avec un appareil source modélisé en tant qu’appareil RVB virtuel, il est possible que les valeurs de colorant source soient négatives ou supérieures à l’unité (1,0). Lorsque cela se produit, l’appareil source est appelé avoir une plage dynamique élevée (HDR). Pour ce cas, il y a une considération particulière.
Dans le cas des transformations HDR, les valeurs minimales et maximales pour chaque canal de colorant peuvent être déterminées à partir de la limite de gamut de l’appareil. En utilisant ces valeurs, une mise à l’échelle simple pour chaque canal de colorant est appliquée afin que les valeurs de colorant égales au colorant minimal soient converties en 0,0 et que les valeurs de colorant égales au colorant maximal soient converties en 1,0, avec une mise à l’échelle linéaire entre 0,0 et 1,0.
ICCProfileFromWCSProfile
Étant donné que l’objectif principal de cette fonctionnalité est de prendre en charge les versions antérieures à Windows, vous devez générer des profils ICC version 2.2 tels que définis dans la spécification ICC.1:1998-09. Dans certains cas (consultez le tableau suivant « Mappage des classes de profil d’appareil de référence à la classe de profil ICC »), vous pouvez créer une matrice ou un profil ICC basé sur TRC à partir d’un profil WCS. Dans d’autres cas, le profil ICC se compose de LUT. Le processus suivant décrit comment créer les unités logiques AToB et BToA. Bien sûr, les profils ICC ont également d’autres champs. Certaines données peuvent être dérivées du profil WCS. Pour d’autres données, vous devez développer des valeurs par défaut intelligentes. Le droit d’auteur sera attribué à Microsoft ; étant donné qu’il s’agit de la technologie Microsoft utilisée pour créer les LUT.
Cette conception doit fonctionner pour tous les types de modèles d’appareil, y compris les plug-ins. Tant que le plug-in a un modèle d’appareil de référence associé, le type d’appareil sous-jacent peut être déterminé.
La partie difficile de la création d’un profil ICC consiste à créer les tables de recherche AToB et BToA. Ces tableaux sont mappés entre l’espace de l’appareil, par exemple RVB ou CMYK, et l’espace de connexion de profil (PCS), qui est une variante de CIELAB. C’est fondamentalement le même que le processus de gestion des couleurs utilisé dans la transformation CITE pour mapper de l’espace appareil à l’espace de l’appareil. Toutefois, vous devez disposer des informations suivantes pour effectuer la transformation.
Informations de référence sur les conditions d’affichage du PCS.
Référencer la gamme PCS.
Modèle d’appareil qui convertit les valeurs PCS et les colorimétries.
Le profil WCS et sa cam associée sont fournis en tant que paramètres. Il existe deux modèles d’appareil de référence qui se convertissent entre la colorimétrie et l’encodage PCS. La raison pour laquelle vous avez besoin de deux est expliquée ci-dessous.
Vous pouvez obtenir les conditions d’affichage de référence pour le PCS à partir de la spécification du format de profil ICC. Les informations fournies dans la spécification du format de profil ICC sont suffisantes pour calculer toutes les données requises pour initialiser la CAM utilisée par le CMS. Pour une cohérence et une flexibilité, ces informations sont stockées dans un profil de couleur WCS.
Vous pouvez également utiliser un profil WCS pour stocker des exemples qui définissent la gamme de références du PCS. Le système de gestion des couleurs CITE (CMS) a deux façons de créer des limites de gamut. Il s’agit d’échantillonner l’espace complet de l’appareil et d’utiliser le modèle d’appareil pour créer des valeurs de mesure. La deuxième méthode consiste à utiliser des exemples mesurés à partir du profil pour créer une limite de gamut de référence. Étant donné que la gamme du PCS ICC est trop volumineuse pour faire une gamut de référence utile, la première méthode est inappropriée. Mais la deuxième méthode est une approche flexible basée sur les profils. Pour redéfinir la gamme PCS de référence, vous pouvez modifier les données de mesure dans le profil d’appareil PCS.
Le PCS ICC est une modélisation d’un appareil idéal. En créant un modèle de PCS en tant qu’appareil réel, vous pouvez tirer parti du processus de gestion des couleurs utilisé dans le CMM intelligent. La création d’un modèle d’appareil à partir de colorimétrie vers l’encodage PCS est simple. Vous mappez simplement entre les valeurs colorimétriques vraies et les valeurs codées par PCS. Étant donné que l’interface CMS pour les modèles d’appareil prend uniquement en charge les valeurs XYZ, vous devrez peut-être également mapper entre XYZ et LAB. Il s’agit d’une transformation connue. Ce modèle est décrit dans le document 2.2.02 « Modèles d’appareil de référence » dans les sections 7.9 et 7.10.
Vous devrez peut-être effectuer un mappage de gamut, si la gamme de l’appareil est supérieure à la gamme du PCS. Les GMM de référence peuvent être utilisés à cet effet. Notez qu’un profil ICC correctement créé comporte des tables de recherche pour les intentions colorimétriques relatives, perceptual et saturation, même si elles peuvent tous pointer vers le même LUT en interne.
Figure 5 : Création d’un LUT AToB
Ce processus est illustré dans la figure 5. Tout d’abord, le modèle d’appareil est initialisé à partir des données du profil DM. Ensuite, construisez une limite de gamut d’appareil comme suit. Un échantillonnage des données du modèle d’appareil est exécuté via le modèle d’appareil pour obtenir des données colorimétriques. Les données colorimétriques sont exécutées via la cam pour créer des données d’apparence. Les données d’apparence sont utilisées pour créer la limite de gamut de l’appareil.
Ensuite, utilisez les données du profil de mesure PCS de référence pour créer une limite de gamut pour le PCS.
Utilisez les deux limites de gamut créées pour initialiser un GMM. Ensuite, utilisez le modèle d’appareil, le GMM et le modèle d’appareil PCS pour créer une transformation. Exécutez un échantillonnage d’espace d’appareil via la transformation pour créer un LUT AToB.
Figure 6 : Création d’un LUT BToA
La figure 6 illustre la création du LUT BToA. Cela est presque identique à la création d’un LUT AToB, avec les rôles de source et de destination échangés. En outre, vous devez échantillonner la gamme PCS complète pour créer le LUT.
Notez que, étant donné que la CAM (CIECAM02 dans WCS) est impliquée dans le processus, l’adaptation chromatique entre le point blanc multimédia et le point blanc PCS (mandaté par l’ICC pour être celui de D50) est appliquée de manière transparente par la CAM.
Appareils RVB virtuels HDR
Une considération particulière doit être prise en compte lors de la génération de profils pour les appareils RVB virtuels HDR ; c’est-à-dire les dispositifs pour lesquels les valeurs de colorant peuvent être inférieures à 0,0 ou supérieures à 1,0. Dans la génération du LUT ATOB, un plus grand ensemble de LUT d’entrée 1D est généré. Les valeurs de colorant sont mises à l’échelle et décalées à la plage 0 .. 1 en utilisant les valeurs de colorant minimale et maximale dans le profil WCS.
Étant donné que l’espace colorant pour les appareils HDR n’est probablement pas complètement rempli, une prise en charge spéciale est fournie dans le LUT 3D pour la balise également. Pour gérer les couleurs dans la région partiellement peuplée, les colorants sont recodés afin que l’extrapolation au-delà de 0,0 et 1,0 puisse être obtenue. La plage utilisée est -1 .. +4.
En raison de la mise à l’échelle appliquée pour le LUT 3D, un ensemble de LUT de sortie 1D est généré pour mapper le résultat à la plage 0 .. 1.
Plusieurs PCS
La CPI a conclu qu’un PCS n’était pas suffisamment flexible pour répondre à toutes les utilisations prévues d’un CMS. Dans la version 4 de la spécification du profil, la CPI a précisé qu’il existe en fait deux encodages PCS. On est utilisé pour les intentions colorimétriques ; une autre est utilisée pour l’intention perceptive. (Aucun PCS n’est spécifié pour l’intention de saturation. La CPI a laissé cette partie ambiguë.) Le PCS colorimétrique a une légèreté minimale et maximale spécifiée, mais la plage de valeurs de couleur et de teinte est d’environ ± 127. Ce PCS ressemble à un prisme rectangulaire. Comme mentionné précédemment, le volume PCS perceptuel ressemble à la gamme d’une imprimante à jet d’encre.
Les deux PCS ICC ont également deux encodages numériques différents. Dans le PCS perceptuel, la valeur zéro représente une légèreté de zéro. Dans le PCS colorimétrique, la valeur zéro représente la légèreté minimale du PCS, qui est supérieure à zéro. Vous pouvez résoudre ce problème en ayant un modèle d’appareil différent pour chacun des encodages PCS.
Mappage gamut
Pour créer les unités logiques AToB dans un profil ICC, vous mappez de la gamut de l’appareil à l’espace PCS approprié. Pour créer les LUT BToA, vous mappez de l’espace PCS à la gamme d’appareils. Le mappage des unités logiques AToB est assez similaire à celui utilisé dans un CMS basé sur la mesure. Pour le PCS perceptuel, mappez la gamut plausible de l’appareil à la limite de gamut PCS perceptual, en utilisant la capture ou la compression pour toutes les couleurs hors gamut. Pour les intentions colorimétriques, vous devrez peut-être couper la légèreté, mais les valeurs de couleur et de teinte vont tous s’adapter à la gamme PCS colorimétrique.
Le mappage des LUT BToA est un peu différent. Les intentions colorimétriques sont toujours faciles ; il vous suffit de découper des valeurs PCS sur la gamme d’appareils. Toutefois, la CPI exige que toutes les valeurs PCS possibles soient mappées à une valeur d’appareil, et non seulement à celles figurant dans la gamme de référence du PCS perceptif. Par conséquent, vous devez vous assurer que les gmms peuvent gérer les couleurs sources qui se trouvent en dehors de la plage de référence. Cela peut être géré en coupant ces couleurs dans la limite de gamut de l’appareil.
Mappage de classe de profil ICC vers un appareil de base de référence
Type d’appareil de référence | Classe de profil ICC | Remarque |
---|---|---|
Appareil de capture RVB | Périphérique d’entrée (« scnr ») | PCS est CIELAB. AToB0Tag est Device to PCS avec l’intention colorimétrique relative. |
CRT, moniteur LCD | Afficher l’appareil (« mntr ») | PCS est CIEXYZ. Consultez les rubriques suivantes pour la conversion de modèle. |
Projecteur RVB | Espace de couleur (« espacement ») | PCS est CIELAB. |
Imprimante RVB et CMYK | Périphérique de sortie (« prtr ») | PCS est CIELAB. |
Appareil virtuel RVB (cas non HDR) | Afficher l’appareil (« mntr ») | PCS est CIEXYZ. |
Appareil virtuel RVB (cas HDR) | Espace de couleur (« espacement ») | PCS est CIELAB. |
La conversion des profils de moniteur n’implique pas la création de luTs, mais consiste plutôt à créer une matrice ou un modèle TRC. Le modèle utilisé dans ICC est légèrement différent de celui utilisé dans la modélisation CRT WCS ou LCD dans lequel le terme « correction noire » est manquant. Spécifiquement
Modèle WCS :
Modèle ICC :
La conversion du modèle WCS en modèle ICC est effectuée comme suit.
Définissez de nouvelles courbes :
Ce ne sont pas des courbes de reproduction de tonalité, car elles ne mappent pas 1 à 1. Une normalisation permettra d’y parvenir. Les définitions finales du modèle ICC sont les suivantes :
Pour les appareils virtuels RVB non HDR, vous générez également un profil ICC d’affichage pour l’efficacité de l’espace. Dans ce cas, la matrice tristimulus M ICC peut être obtenue directement à partir des primaires du profil WCS sans la conversion de modèle ci-dessus. Une dernière, mais importante, notez que cette matrice tristimulus doit être adaptée de manière chromatique à D50 pour se conformer à la spécification ICC du PCS. En d’autres termes, les entrées de chaque ligne de la matrice à encoder dans le profil ICC doivent additionner respectivement à 96,42, 100 et 82,49. Dans l’implémentation actuelle, l’adaptation chromatique est effectuée par CAT02, qui est également la transformation d’adaptation chromatique utilisée dans CAM02.
Préservation noire et génération noire
L’implémentation de la préservation noire est liée à la génération du canal noir dans les appareils qui prennent en charge un canal noir. Pour ce faire, des informations sur chaque couleur source sont collectées pour permettre aux modèles d’appareil qui prennent en charge un canal noir de déterminer la meilleure façon de définir le canal noir sur la sortie. Bien que la conservation noire soit pertinente pour les transformations de couleur qui se convertissent d’un appareil à canal noir vers une autre, la génération noire est implémentée pour toutes les transformations impliquant un appareil de destination de canal noir.
Les informations de canal noir sont enregistrées dans une structure de données appelée BlackInformation. La structure BlackInformation contient une valeur booléenne indiquant si la couleur contient uniquement un colorant noir et une valeur numérique indiquant le degré de « noircissement » appelé poids noir. Pour les appareils sources qui prennent en charge un canal noir, le poids noir est le pourcentage de colorant noir dans la couleur source. Pour les appareils sources qui ne contiennent pas de canal noir, le poids noir est calculé à l’aide des autres colorants et de la valeur d’apparence. Une valeur appelée « pureté de couleur » est calculée en prenant la différence entre la valeur de colorant maximale et la valeur de colorant minimale divisée par la valeur de colorant maximale. Une valeur appelée « légèreté relative » est calculée en prenant la différence entre la légèreté de la couleur et la légèreté minimale pour l’appareil de destination divisé par la différence entre la légèreté minimale et maximale pour l’appareil de destination. Si l’appareil source est un appareil additif (moniteur ou projecteur), le poids noir est déterminé comme étant le 1,0 moins la pureté de couleur multipliée par la légèreté relative. Par exemple, si l’appareil source est un moniteur RVB, la valeur maximale et la valeur minimale de R, G et B pour chaque couleur est calculée et que le poids noir est déterminé par la formule :
BW = (1,0 – (max(R,G,B) – min(R,G,B)) / max(R, G, B)) * légèreté relative
Si l’appareil source prend en charge la coloration soustractive, par exemple, une imprimante CMY, les colorants individuels doivent être « complétés » (soustractés de 1,0) avant d’être utilisés dans la formule précédente. Par conséquent, pour une imprimante CMY, R = 1,0 – C, G = 1,0 – M et B = 1,0 – Y.
Les informations noires pour chaque couleur traitée par la transformation de couleur sont déterminées pendant le processus de traduction de couleur. Les informations noires uniquement sont déterminées si la conservation noire est spécifiée. Le poids noir est toujours déterminé si le modèle d’appareil de destination prend en charge un colorant noir. Les informations noires sont transmises au modèle d’appareil de destination via la méthode ColorimetricToDeviceColorsWithBlack , qui utilise le LUT obtenu.
Notez que, en raison de l’optimisation de la transformation de couleur, le processus ci-dessus se produit uniquement lors de la création de la transformation optimisée LUT, et non pendant l’exécution de la méthode TranslateColors.
Optimisation des transformations avec plus de trois canaux sources
La taille de la transformation optimisée est déterminée par plusieurs facteurs : le nombre de canaux de couleur dans l’appareil source, le nombre d’étapes de la table pour chaque canal de couleur source et le nombre de canaux de couleur dans l’appareil de sortie. La formule permettant de déterminer la taille de la table de transformation est la suivante :
Taille = Nombre d’étapes par source de canal \ appareil(Nombre\ de\ canaux\ in\ source\ appareil) x nombre de canaux dans l’appareil de sortie
Comme vous pouvez le voir, la taille de la table augmente de façon exponentielle en fonction du nombre de canaux dans l’appareil source. De nombreux appareils sources prennent en charge trois canaux de couleur, par exemple, Rouge, Vert et Bleu. Toutefois, si un appareil source prend en charge quatre canaux, tels que CMYK, la taille de la table et le temps nécessaire à la construction de la table, augmentent d’un facteur du nombre d’étapes. Dans un CMS basé sur des mesures où les transformations sont construites « à la volée », cette fois-ci peut être inacceptable.
Pour réduire le temps nécessaire à la construction de la table de conversion de couleur, il est possible de tirer parti de deux faits. Tout d’abord, alors que l’appareil source peut prendre en charge plus de trois canaux de couleur, l’espace de couleurs indépendant de l’appareil intermédiaire (CIECAM02 Ja C b C ) n’a que trois canaux de couleur. Deuxièmement, la partie la plus longue du traitement n’est pas la modélisation de l’appareil (conversion des coordonnées de couleur de l’appareil en valeurs tristimulus), mais le mappage de la gamut. À l’aide de ces faits, vous pouvez construire une table de conversion de couleur préliminaire qui convertit les couleurs dans l’espace de couleurs indépendant de l’appareil via les étapes de mappage de gamut, et enfin, via le modèle de couleur de l’appareil de sortie. La construction de cette table est de dimension 3. Ensuite, nous construisons la dimension quatre tables de conversion de couleur finale en convertissant les combinaisons de couleurs sources en espace indépendant de l’appareil intermédiaire, puis, à l’aide de la table de conversion de couleur préliminaire, terminez la conversion en espace de couleur de l’appareil de sortie. Vous réduisez donc le nombre d’étapes de calcul (nombre d’étapes de la table de recherche) des calculs de mappage de gamut de canaux vers le nombre d’étapes de la table intermédiaire ₃ calculs de mappage gamut. Même si vous devez effectuer le nombre d’étapes dans la (table de recherche) nombre\ des calculs de canaux de modélisation d’appareil et de recherche de tables à trois dimensions, cela reste beaucoup plus rapide que le calcul d’origine.
Le processus précédent fonctionne correctement, à condition qu’il n’y ait pas besoin d’informations pour passer entre le modèle d’appareil source et tout autre composant de la transformation de couleur. Toutefois, si l’appareil de sortie et l’appareil source prennent tous deux en charge un colorant noir et que le colorant noir source est utilisé pour déterminer le colorant noir de sortie, le processus ne communique pas correctement les informations noires sources. Un autre processus consiste à construire une table de conversion de couleur préliminaire qui convertit les couleurs dans l’espace de couleurs indépendant de l’appareil via les étapes de mappage de gamut uniquement. Ensuite, construisez la dimension quatre table de conversion de couleur finale en procédant comme suit : a) convertissez les combinaisons de couleurs sources en espace indépendant de l’appareil intermédiaire, b) effectuez les étapes de mappage de gamut en interpolant dans la table de couleurs préliminaire au lieu d’appliquer les processus de mappage de gamut réels, et c) utilisez les valeurs résultantes des étapes de mappage de gamut et toutes les informations de canal noir source pour calculer les colorants de l’appareil de sortie à l’aide du modèle d’appareil de sortie. Ce processus peut également être utilisé lorsqu’il existe des informations transférées entre les modèles d’appareil source et de sortie, même s’il n’existe aucun canal noir ; par exemple, si les deux modules sont implémentés avec une architecture de plug-in qui permet l’échange de données entre les modules.
Les deux processus précédents peuvent être utilisés pour améliorer efficacement le temps nécessaire pour construire la table de transformation de couleur à quatre dimensions.
CheckGamut
L’ICM appelle CreateTransform et CreateMultiProfileTransform prennent un mot de valeurs d’indicateur, dont l’une est ENABLE_GAMUT_CHECKING. Lorsque cet indicateur est défini, CITE doit créer la transformation différemment. Les étapes initiales sont identiques : les caMs source et de destination doivent être initialisées, alors les descripteurs de limites de la source et de la destination doivent être initialisés. Quelle que soit l’intention spécifiée, le GMM CheckGamut doit être utilisé. Le GMM CheckGamut doit être initialisé à l’aide des modèles d’appareil source et de destination et des descripteurs de limites gamut. Toutefois, la transformation doit ensuite créer une transformation tronquée comprenant le modèle d’appareil source, la cam source, les gmms intermédiaires et le GMM CheckGamut. Cela garantit que la sortie des valeurs delta J, delta C et delta h par checkGamut CMM devient les valeurs finales résultantes.
La signification de CheckGamut est claire lorsqu’il n’existe que deux profils d’appareil dans la transformation. Lorsqu’il existe plus de deux profils d’appareil et plus de deux GMMs, CheckGamut indique si les couleurs qui ont été transformées par le biais du premier modèle d’appareil et de tout le dernier GMM se trouvent dans la gamme de l’appareil de destination.
Rubriques connexes