Nicolas Holzschuch iMAGIS-GRAVIR/IMAG Modèles de couleur Nicolas Holzschuch iMAGIS-GRAVIR/IMAG
Modèles de couleur Qu’est-ce qu’une couleur ? Définitions Artistiques Teinte, saturation, luminance Physiques/biologiques Spectre, stimulus Fonctions de base universelles Espaces perceptuellement uniformes Informatiques RGB, CMYK, HSV, YCbCr…
Définitions du peintre Définitions basées sur le mélange des peintures Vocabulaire habituel de la couleur Saturation Teintes Blanc Couleur pure Tons Luminosité Gris Ombres Noir
Définition physique Une couleur = un spectre
Définition spectrale Échantillonnage de la couleur entre 380 nm (violet) et 720 nm (rouge) Longueurs d’onde visibles En dessous de 380 nm : ultra-violet Au dessus de 720 nm : infra-rouge
Teinte, saturation… (2) Définition physique liée au spectre : Teinte = longueur d’onde dominante Saturation = pureté de l’excitation Luminance = quantité de lumière Couleur pure = une seule longueur d’onde
Exemple simplifié l Energie P(l) Luminance= aire sous la courbe Longueur d’onde dominante e2 Saturation e1 l 400 nm Violet Teinte 760 nm Rouge
Perception de la couleur La rétine : Cônes Bâtonnets Bâtonnets : Perception achromatique Lumière atténuée Cônes : Perception chromatique (3 types) Concentrés au centre de la rétine
3 sortes de cônes
3 sortes de cônes : conséquence Spectres différents, couleurs perçues comme identiques : métamères
Représentation des couleurs La représentation spectrale est trop riche Par rapport à la vision En coût mémoire La vision humaine n’a que trois fonctions de base Il doit exister une représentation compacte Pourquoi pas les couleurs primaires ? Rouge, vert, bleu
Un léger défaut
Une nouvelle fonction de base Les couleurs primaires ont un défaut : L’ensemble des couleurs visibles ne peut pas être représenté avec des coordonnées positives Besoin de nouvelles fonctions de base Couvrant tout le visible Avec des coordonnées positives Linéaires par rapport à RVB Commission Internationale de l’Éclairage www.cie.co.at 1931
CIE XYZ
CIE XYZ Y = luminance (perçue par la vision humaine) X,Y, Z : représentation de la couleur Conversion vers RVB : linéaire Matrice 3x3 de conversion Chromaticité : XYZ représente toutes les couleurs Besoin de pouvoir séparer la luminance de la chromaticité « le même rouge, mais en plus sombre »
Chromaticité On introduit (x,y) : Parfois, on donne (x,y,Y) au lieu de (X,Y,Z) Plus facile à mesurer Conversion :
Diagramme de chromaticité y Couleurs pures 500 nm Couleurs combinées 720 nm 380 nm x
Diagramme de chromaticité
Diagramme de chromaticité
Diagramme de chromaticité Couleurs affichables par le moniteur
Diagramme de chromaticité
Perception des couleurs Distance entre deux couleurs : Dans l’espace de base : facile Pour la vision humaine : utile Idéalement, il y a un lien entre les deux Espace des couleurs perceptuellement uniforme Lien constant, indépendant de la couleur Différences juste perceptibles : Plus petite distance entre deux couleurs perçues comme différentes
Différences juste perceptibles dans l’espace xy
Espaces perceptuellement uniformes CIE, 1976 L*a*b* et L*u*v* An : coordonnée d’un blanc de référence
L*a*b* et L*u*v* Perceptuellement uniformes tous les deux Par construction L* : luminance, perceptuellement uniforme L*a*b* : Orthonormal L*u*v* : Conversion facile avec XYZ et donc RGB Simple projection
Représentation informatique Comment on définit une couleur ? Ensemble de coordonnées dans un espace de couleurs Plusieurs fonctions de base possibles Fidélité des couleurs Relation avec l’interface Bleu pour le froid, rouge pour le chaud
Fonctions de base Basées sur l’outil d’affichage : RGB, CMYK, YCbCr Basées sur l’interface homme-machine HSV Conversion entre eux ? Conversion vers un espace indépendant (par exemple XYZ) ?
Rouge-Vert-Bleu Le plus connu des systèmes utilisé (en interne) dans tous les moniteurs additif
Cyan-Magenta-Jaune Utilisé dans les imprimantes couleurs Soustractif
Conversion CMJ-RVB En théorie : En pratique : Conversion non-linéaire C=1-R M=1-V J=1-B En pratique : Conversion non-linéaire Contraintes physiques Ordre des couches d’encre, mélange… Réaction du papier …
CMYK K pour blacK Économie : Plusieurs possibilités : L’encre noire est moins chère que les encres de couleur Plusieurs possibilités : Par exemple : K = min(C,M,Y) C = C-K M = M-K Y = Y-K Suppose que le noir se mélange parfaitement à toutes les autres couleurs En pratique, conversion non-linéaire, basée sur l’expérience, l’ordre des couches…
Le cube RVB/CMJ
Fonctions de base “type Y” YIQ, YUV, YcbCr… Utilisées pour la télévision couleur (et donc la vidéo) Y la luminance Cb et Cr la chromaticité En N & B, on n’affiche que Y En couleur, on convertit vers RVB YUV=PAL, YIQ=NTSC
Fonctions de base YCbCr Y doit être égal à la luminance: Y=LumaRed*R+LumaGreen*G+LumaBlue*B Cb est la chromaticité bleue : Cb = (B-Y)/(2-2*LumaBlue) Cr est la chromaticité rouge : Cr = (R-Y)/(2-2*LumaRed) LumaRed, LumaGreen, LumaBlue mesurées, correspondent aux phosphores du téléviseur
Valeurs de luminance Les valeurs dépendent du standard télé choisi : CCIR 601: Lr=0.299, Lg=0.587, Lb=0.114 CCIR 709: Lr=0.2125, Lg=0.7154, Lb=0.0721 Espace YIQ (NTSC) :
Intérêts de YCbCr Parfois, on est obligé de l’utiliser Travail avec entrées/sorties vidéo Efficace pour la compression d’images : Meilleur taux de compression si on convertit en YCbCr avant la compression Grosse bande passante pour Y Plus petite bande passante pour la chromaticité L*a*b* est efficace pour ça aussi
Teinte-Saturation-Luminance Hue-Saturation-Value (ou Luminance) : HSV, HSL Pratique pour l’interface homme-machine:
Teinte-Saturation-Luminance max=max(R,G,B) min=min(R,G,B) V=max S=(max-min)/max delta=max-min si max=R alors H=(G-B)/delta sinon si max=G alors H=2+(B-R)/delta sinon si max=B alors H=4+(R-G)/delta H = H*60 si H<0 alors H=H+360
TSL, HSV, HSL Pratique pour les interpolations Interpoler entre rouge et vert Rampe de couleur Effets de couleur pour la visualisation Varier la saturation, à teinte constante Varier la teinte, à saturation constante Carte d’altitude, par exemple
Le cone HSV
Espaces de couleur
Fidélité des couleurs Problème : conserver la même couleur quand on change d’outil de visualisation Solution : passer dans un espace indépendant Échantillonner les phosphores RVB Convertir en XYZ :
Fidélité des couleurs (2) Description du moniteur disponible sur le site du fabricant On extrait Xr, Xg, Xb… Pour d’autres sorties (imprimantes, par ex.) : Tables de conversion multi-dimensionnelles « Profil » de chaque outil, disponible (www.icc.org) Chaîne de conversion d’un outil à un autre RVB outil 1 vers XYZ XYZ vers Lab Lab vers CMYK outil 2
En pratique… Ça se dégrade avec l’âge : Les phosphores, le canon à électrons s’usent Plus efficace de mesurer directement le profil du moniteur, de l’imprimante Mais plus cher (caméra spéciale, logiciel) Ou mesurer directement la chaîne de conversion Scanner-moniteur-imprimante
Gamma-Correction La perception humaine est logarithmique L’une des causes du Mach-banding (cf. cours suivant) Intensité perçue, L* Définie comme une racine cubique de l’intensité émise, Y En fait, à cause de l’offset et de l’échelle, presque un Y puissance 0.4
Gamma correction (2) Le canon à électron du moniteur n’est pas linéaire non plus Luminance produite liée au voltage appliqué, à la puissance 2.5 Théoriquement, les deux s’annulent (Pure coïncidence) Mais en fait… Les caméras vidéo font la conversion inverse Plus pratique de stocker un RVB non linéaire (sur 8 bits)
Gamma correction Correction effectuée par la carte, avant le moniteur Pour compenser le comportement du canon à électrons Paramétrable Une cause de bugs intéressante Surtout si mal paramétré (valeurs <1 ou > 4) Unix ≈ 1.45, Mac ≈ 1.8, NTSC & PC ≈ 2.2, PAL ≈ 2.9…
Affichage des couleurs Capacité d’affichage de l’outil Mesurée en bits : 1 bit=2 niveaux, 8 bits=256 niveaux bits par fonction de base : 24 bits=256 niveaux pour chacun de R,V,B Dépends de l’outil : TV : 30 dpi, 8bits de couleur Moniteur : 70-100 dpi, 24 bits de couleur Imprimante : 300-2400 dpi, 3 bits de couleur (8 couleurs) Photo: 800 dpi, 36 bits de couleur
Augmenter le nombre de couleurs La quantité de couleurs affichables est insuffisante Surtout avec 8 bits, ou une imprimante Afficher des images qui contiennent plus de couleurs ? Dépasser la capacité théorique de l’outil Idée de base : Sacrifier la résolution spatiale au profit des couleurs
Halftoning Imprimantes de qualité : Impriment des disques dont la taille varie inversement avec I Résolution de halftone Différente de la résolution spatiale 60-80 dpi pour un journal, 120-200 pour un livre
Dithering Autre méthode pour traiter plus de couleurs Un bloc de pixels pour représenter les couleurs n*n pixels pour n*n+1 niveaux de couleur
Dithering (2) Exemple pour 2x2: Notation matricielle : 1 2 3 4
Notation matricielle Pour le niveau i, on affiche les pixels avec v<i La forme de la matrice dépend de l’outil : Points dispersés pour un moniteur Points regroupés pour une imprimante
Dithering, suite Un pixel d’image remplacé par 4, 9, 16… pixels de l’imprimante On veut garder la résolution originale : Utiliser un modulo : i=x modulo n j=y modulo n On allume le pixel si (i,j) dans la matrice de dithering est plus petit que I(x,y)
Dithering, encore On voit apparaître le motif de dithering Pour le faire disparaître : Floyd-Steinberg On commet une erreur à chaque pixel Diffuser l’erreur aux pixels voisins Ça se voit moins, mais l’image est plus floue
Conclusion Représentation des couleurs Plusieurs fonctions de base Adaptées à différentes taches Moniteur, imprimante, vidéo… Conversion facile entre les outils Fidélité des couleurs, représentation indépendante Dithering pour augmenter le nombre de couleurs