Calibrer un écran avec Argyll CMS

Introduction

Argyll CMS est actuellement le logiciel incontournable permettant le calibrage de la chaîne graphique sous Linux en lignes de commande. Nous allons aborder ici la seule question du calibrage d'un écran, mais ce logiciel permet de calibrer également scanners et imprimantes. Avant toute chose, voici quelques questions/réponses présentant les points les plus importants à avoir en tête avant de calibrer son écran:

Sachez aussi que le projet DispcalGUI propose d'offrir une interface graphique à Argyll CMS pour le calibrage d'un écran. Dans les 2 cas, le processus reste similaire et la difficulté réside essentiellement dans le paramétrage. Sur ce point DispcalGUI n'offre pas de simplification réelle et le processus doit être compris pour être utilisé à bon escient. Ce tutoriel présente la démarche à suivre pour un écran LCD. Il faut noter que l'approche est un peu différente pour un écran CRT, notamment au niveau des réglages à effectuer sur l'écran. Pour cette raison vous trouverez certaines remarques spécifiques, indiquant qu'il faut adapter un peu les choses dans ce cas.

Ce tutoriel se base sur la version 1.0.4 d'Argyll CMS. Depuis début 2010, la version mise à disposition est la 1.1.x. Cette documentation sera ainsi sujette à modifications dans les temps à venir. Toute contribution et/ou correction est la bienvenue.

Installer Argyll CMS

NOTA préalable le logiciel dispcal GUI ici : http://dispcalgui.hoech.net/ permet de calibrer en mode graphique ( pas de console )

Argyll CMS est désormais disponible dans les dépôts Ubuntu depuis Karmic Koala. Si vous disposez de cette version ou d'une version plus récente il suffit alors d'entrer la commande suivante dans un terminal:

sudo apt-get install argyll

et passer ensuite directement au paragraphe suivant.

Dans les autres cas, pour toute version antérieure à Karmic Koala, il faut télécharger l'archive destinée à Linux à partir de la page http://www.argyllcms.com/. Vous devriez trouver en bas de celle-ci un lien du type Download_V1.0.4_Main_Linux_x86_Executables. Extraire l'archive vers un répertoire que l'on renommera argyllcms. En considérant que l'archive décompressée se trouve dans le dossier personnel /home/votre_nom_d'utilisateur, les fonctions d'Argyll sont maintenant disponibles depuis ~/argyllcms/bin. Celles qui nous intéressent sont dispwin, dispcal, dispread, targen, colprof et éventuellement spyd2en. Nous allons maintenant les copier dans /usr/local/bin:

sudo cp ~/argyllcms/bin/dispwin /usr/local/bin
sudo cp ~/argyllcms/bin/dispcal /usr/local/bin
sudo cp ~/argyllcms/bin/dispread /usr/local/bin
sudo cp ~/argyllcms/bin/targen /usr/local/bin
sudo cp ~/argyllcms/bin/colprof /usr/local/bin

et dans le cas de l'utilisation d'une sonde Spyder2:

sudo cp ~/argyllcms/bin/spyd2en /usr/local/bin

Le but de cette manipulation est de rendre les fonctions en question disponibles directement depuis le terminal sans autres considérations. En cas de difficultés pour cette étape, il est également possible de lancer la commande (sous Gnome):

sudo nautilus

et de faire les copies en mode graphique tout en ayant les droits de super-utilisateur qui sont ici nécessaires pour accéder à /usr/local/bin.

Connecter la sonde

Cas particulier de la sonde Spyder2:

L'utilisation de ce matériel nécessite l'installation du firmware fourni par le constructeur et vendu avec la sonde. Pour ce faire il faut introduire le CD d'installation de la sonde dans le lecteur et lancer la commande spyd2en préalablement installée:

sudo spyd2en

Attention: Il semblerait que 'spyd2en' ai été remplacé par 'oeminst'.

Si vous n'avez pas de lecteur optique, il faut copier son contenu sur une clé USB avec un autre ordinateur et lancer spyd2en avec le chemin /chemin_de_la_clé/setup/setup.exe en argument, par exemple:

sudo spyd2en /media/disk/setup/setup.exe
Et ensuite pour toutes les sondes:

Si vous avez installé Argyll CMS manuellement dans /usr/local/bin sans passer par les dépôts, le logiciel n'a pas accès par défaut à la sonde, il faut lui donner cette permission en commençant par connecter la sonde (via USB) et en lançant la commande:

lsusb

Puis en repérant le port exact sur lequel est connecté la sonde, lancer quelque chose du type:

sudo chmod 666 /dev/bus/usb/002/004

Les 2 derniers numéros dépendant du port USB utilisé. En cas de difficultés notamment pour identifier la position de la sonde avec la commande lsusb, il est également possible de lancer la commande:

sudo chmod 777 -R /dev/bus/usb

c'est moins propre, mais ça marche. Les commandes d'Argyll CMS sont maintenant prêtes à l'emploi.

Calibrer l'écran

Cette première étape consiste à régler physiquement 3 paramètres de l'écran: la température de couleur, la luminance et le gamma. S'assurer en premier lieu que la carte graphique est paramétrée de façon neutre, autrement dit que vous n'avez modifié aucun des paramètres par défaut parfois disponibles à travers le driver de celle-ci. Ensuite il faut se faire une idée des capacités réelles de son écran. La plupart des OSD propose de modifier la luminance et la température de couleur, plus rarement le gamma. Il faut aussi être conscient que les écrans grand public peuvent ne pas supporter de s'éloigner de leur point de fonctionnement natif, c'est à dire de leur réglage par défaut, même s'il est possible de modifier ces réglages à travers l'OSD. Si ce cas est avéré, ou dans le doute, laisser fonctionner l'écran nativement sous peine de dégrader l'affichage. Ce point est essentiel pour la température de couleur, il vaut mieux dans tous les cas utiliser le point de fonctionnement idéal de votre écran, que de le "torturer" et réduire son gamut (ensemble des couleurs que l'écran est capable d'afficher). Concernant la luminance, la problématique est un peu différente, puisque tout les écrans disposent d'une certaine souplesse à ce niveau avec le réglage de la luminosité! Enfin avant de réaliser toute mesure, l'écran doit fonctionner depuis plus de 20 minutes.

Tenant compte des informations précédentes, et suivant les préconisations de Jean Delmas et du site Négatif+, il est conseillé de régler son écran de manière à s'approcher des valeurs suivantes:

  • Température = 6500 K
  • Luminance = 85 Cd/m²
  • Gamma = 2,2

La température de couleur n'est pas très importante pour une utilisation non professionnelle du moment qu'elle se situe entre 5500K et 6500K. La luminance devrait être supérieure à 80 Cd/m² mais ne pas dépasser 90 Cd/m². Le gamma natif de la majorité des écrans actuels est 2,2 mais il est possible d'être à 2,4 pour certains écrans. Dans ce cas il est préférable de revenir à 2,2 si vous en avez la possibilité, sinon ce sera corrigé par le profil ICC mais ce n'est pas l'idéal. Pour mesurer et vérifier ces paramètres sur un écran LCD, connecter la sonde et lancer la commande:

dispcal -yl -R

pour un écran CRT, il faut remplacer -yl par -yc et certains réglages supplémentaires sont à priori nécessaires. Si besoin, réaliser plusieurs séquences de réglage/mesure pour s'approcher au mieux des valeurs ci-dessus.

à confirmer: Si vous avez un gamma différent de 2,2 sur votre écran (ex: 2,4), et qu'il n'est pas possible de régler ce paramètre avec l'OSD, une solution consiste à faire des essais en modifiant le contraste de votre écran. Ce qui impliquera également un nouveau réglage pour la luminance.

Caractériser l'écran et calcul du profil ICC

Nous allons maintenant lancer une série de mesures qui auront pour but de caractériser les capacités de l'écran sur la base des réglages précédents. Ensuite un profil ICC pourra être calculé. Ici nous l'appellerons NomDuProfil.icc. C'est ce fichier qui sera pris en compte pour corriger l'affichage de l'écran. L'opération prendra environ 40 minutes au total, mais le temps dépend de votre sonde et des paramètres fournis aux fonctions dispcal et dispread. Pour commencer lancer:

dispcal -v -yl -m -g2.2 NomDuProfil

comme précédemment pour un écran CRT, il faut remplacer -yl par -yc. En supprimant l'option -m la fonction dispcal propose un menu permettant d'ajuster certains réglages avec l'OSD avant la caractérisation de l'écran. Cependant son utilisation s'avère en pratique délicate. dispcal génére un fichier NomDuProfil.cal dans le répertoire courant. Il sera possible de réutiliser ultérieurement ce fichier pour un prochain calibrage ce qui accélérera le processus de mesure (voir le paragraphe sur dispcal pour plus de détails). Au lancement de la commande dispcal une cible grise apparaît à l'écran permettant de positionner la sonde. Une fois celle-ci en place, on continue le processus en appuyant sur une touche autre que <Escape> (idem avec dispread). La série de mesures étant terminée, continuer avec:

targen -v -d3 -g50 -f400 NomDuProfil
dispread -v -yl -k NomDuProfil.cal NomDuProfil
colprof -v -as NomDuProfil

pour un écran CRT, il faut remplacer -yl par -yc dans dispread. Les fonctions targen et dispread génèrent respectivement les fichiers NomDuProfil.ti1 et NomDuProfil.ti3 dans le répertoire courant. A partir de NomDuProfil.ti3 la fonction colprof génére le profil ICC dans NomDuProfil.icc. Pour finir, la fonction suivante appliquera le précieux profil au système:

dispwin /chemin du répertoire/NomDuProfil.icc

et pour ne plus l'appliquer:

dispwin -c

La fonction xcalib totalement indépendante du projet Argyll CMS et disponible dans les paquets Debian/Ubuntu permet de réaliser également ces 2 dernières opérations.

En pratique on pourra créer un petit script qui se lancera au démarrage de la session Ubuntu pour appliquer le profil ICC avec dispwin comme indiqué ci-dessus. Il faudra également indiquer ce profil aux logiciels de retouche d'image que vous utilisez comme GIMP ou Bibble pour qu'ils en tiennent compte. Il est possible que certains économiseurs d'écran déchargent le profil en cours.
Dans le cas d'un dualscreen, on peut choisir l'écran auquel sera appliqué le profil avec l'option "-d 1" pour l’écran principal, ou "-d 2" pour l'ecran secondaire… Ce qui donnera:
dispwin -d 2 /chemin du répertoire/NomDuProfil.icc
Dans la version 1.1.x de argyll, targen est renommé en argyll-targen

Les fonctions d'Argyll en détail

Ce tutoriel se base sur la version 1.0.4 d'Argyll CMS. La dernière version mise à disposition est la 1.1.x et certaines petites modifications sont à noter. Notamment l'option -p de dispcal et dispread permettant de positionner la fenêtre de tests devient -P en majuscule. Autre exemple: La fonction targen a été renommée argyll-targen.

dispcal

Syntaxe de la commande:

dispcal [-options] inoutfile

Les valeurs cibles du calibrage étant fournies en paramètres, dispcal exécute une série de tests à l'écran, et utilisant les valeurs mesurées par la sonde colorimétrique, créé une table de correspondance permettant à l'affichage d'atteindre ces valeurs cibles. Au lancement de la commande une cible carrée apparaît à l'écran permettant de positionner la sonde. Une fois celle-ci en place, on continue le processus en appuyant sur une touche autre que <Escape>. Si l'option -m n'est pas utilisée, un menu offrant une assistance pour les réglages de l'écran (température de couleur et luminance) sera proposé. L'usage de ce menu pour régler les canaux RGB indépendamment n'est pertinent que si l'on utilise une sonde de type spectrocolorimètre (dans ce cas l'option -H doit être donnée en paramètre), et peut conduire à des réglages totalement aberrants avec des sondes comme les spyder2 ou EyeOne Display2. Noter aussi que les réglages du point noir sur un écran LCD n'ont rien d'usuel.

Principales options disponibles:

-v [level] : cette option active le mode verbeux. -v2 permettra d'obtenir un plus haut niveau de verbosité.
-y c|l : précise le type de l'écran, -yc = CRT, -yl = LCD.
-m : permet de sauter l'étape du menu de réglage de l'écran.
-o [profil.icm] : créé directement un profil ICC rapide de type matriciel (mais moins précis).
-O "description" : fourni une "description" à profil.icm créé avec l'option -o.
-u : permet de remettre à jour le fichier de calibrage NomDuProfil.cal obtenu lors d'un précédent calibrage. Dans ce cas le calibrage sera écourté et reprendra, sauf nouveau paramétrage, les valeurs cibles indiquées initialement.
-q [lmh] : permet de choisir le niveau de précision du calibrage. Par défaut la qualité moyenne est appliquée (-qm). On obtiendra un plus haut niveau de précision en passant -qh, mais il y aura plus de mesures et ce sera plus long. -ql permettra à l'inverse de gagner du temps si besoin.
-t temp : température de couleur cible du point blanc en K.
-b bright : luminance cible du point blanc en cd/m².
-B bkbright : luminance cible du point noir en cd/m².
-g gamma : défini la valeur cible du gamma. En cas d'omission la valeur par défaut est 2.4, qui était la valeur usuelle des écrans CRT. Aujourd'hui cette valeur est devenue 2.2 avec les écrans LCD. C'est de plus le gamma des espaces sRGB et L*a*b. Il est donc très important de ne pas omettre ce paramètre est de bien indiquer -g2.2 à dispcal. On pourra éventuellement remplacer cette option par -gs pour obtenir directement la courbe de sRGB ou -gl pour la courbe de L*a*b.
-G : permet de conserver le gamma natif de l'écran. À utiliser à la place de -g.
-p h,v,s : défini la position et la taille de la fenêtre de test à l'écran. h,v: 0.0 = gauche/haut, 0.5 = centre, 1.0 = droite/bas, etc. s: 0.5 = demi-taille, 1.0 = taille normale, 2.0 = taille double, etc.
-H : active le mode spectral haute résolution si disponible. Il faut disposer d'une sonde de type spectrocolorimètre pour profiter de cette option.
-F : permet l'affichage de la fenêtre de test sur un fond d'écran noir. Conseillé pour les écrans CRT.
-r : édite un rapport de mesures de l'écran calibré (prise en compte du profil ICC présent dans la carte graphique) puis fin de la fonction.
-R : édite un rapport de mesures de l'écran non-calibré (annule le profil ICC appliqué) puis fin de la fonction.

targen

Syntaxe de la commande:

targen [-options] outfile

Génère un fichier .ti1 définissant un ensemble de valeurs cibles à tester. targen peut être utilisé pour définir des valeurs tests des canaux pour les équipements RGB, CMY, CMYK, N-color ou grayscale. Le paramètre -d suivi d'un numéro indique à targen le type d'équipement à tester. Dans le cas d'un écran, il faut passer -d3 en paramètre, 3 spécifiant video RGB à targen.

Principales options disponibles:

-v [level] : cette option active le mode verbeux. -v2 permettra d'obtenir un plus haut niveau de verbosité.
-d col_comb : indique la configuration utilisée pour la formation des couleurs. Entrer -d3 pour un écran couleur.
-g steps : nombre de valeurs tests sur la courbe des gris RGB ou CMY.
-f patches : nombre total de cibles à fournir. Si ce paramètre n'est pas spécifié, la valeur par défaut est 836, ce qui est plutôt élevé pour le calibrage d'un écran.

dispread

Syntaxe de la commande:

dispread [-options] inoutfile

Affiche les fenêtres de tests à l'écran selon le fichier inoutfile.ti1 généré avec targen, puis à partir des mesures retournées par la sonde colorimètrique fourni une charte de valeurs dans inoutfile.ti3. Au lancement de la commande une cible carrée apparaît à l'écran permettant de positionner la sonde. Une fois celle-ci en place, on continue le processus en appuyant sur une touche autre que <Escape>.

Principales options disponibles:

-v : cette option active le mode verbeux.
-y c|l : précise le type de l'écran, -yc = CRT, -yl = LCD.
-k file.cal : applique le fichier de calibrage de l'affichage file.cal pour effectuer les mesures.
-p h,v,s : défini la position et la taille de la fenêtre de test à l'écran. h,v: 0.0 = gauche/haut, 0.5 = centre, 1.0 = droite/bas, etc. s: 0.5 = demi-taille, 1.0 = taille normale, 2.0 = taille double.
-H : active le mode spectral haute résolution si disponible. Il faut disposer d'une sonde de type spectrocolorimètre pour profiter de cette option.
-F : permet l'affichage de la fenêtre de test sur un fond d'écran noir. Conseillé pour les écrans CRT.

colprof

Syntaxe de la commande:

colprof [-options] inoutfile

Créé un profil ICC à partir de la charte de valeurs inoutfile.ti3.

Principales options disponibles:

-v : cette option active le mode verbeux.
-A "manufacturer" : fourni le nom du constructeur du matériel.
-M "model" : fourni le modèle du matériel.
-D "description" : fourni une description. Par défaut inoutfile.
-C "copyright" : fourni un copyright.
-q lmhu : niveau de qualité du profil. l=low, m=medium (défaut), h=high, u=ultra.
-a lxgs : défini l'algorithme utilisé pour le calcul du profil. l=Lab clut (défaut), x=XYZ lut, g=gamma+matrix, s=shaper+matrix, G= single gamma+matrix, S=single shaper+matrix. Dans le cas d'un écran -as semble être l'option la plus adaptée. Cependant l'utilisation de l'option par défaut (-al) qui induit un calcul plus complexe ne pose pas de problème particulier.

dispwin

Syntaxe de la commande:

dispwin [-options] [calfile]

Cette commande a plusieurs fonctions interdépendantes. Lorsque un fichier .icc, .icm ou .cal est donné en argument, dispwin chargera le profil dans la Video LUT (Video Look Up Table). dispwin permet également d'installer et de désinstaller le profil dans le système d'exploitation.

Principales options disponibles:

-v : cette option active le mode verbeux.
-c : désinstalle tout profil chargé dans le système d'exploitation et dans la Video LUT.
-V : vérifie si un profil est actuellement chargé dans la Video LUT.
-I : fourni le profil au système d'exploitation.
-U : désinstalle le profil du système d'exploitation.
-L : charge le profil fourni au système d'exploitation dans la Video LUT.
-D : exécute en mode "deamon loader" pour le serveur X.

la documentation officielle

Le site officiel d'Argyll CMS fourni une documentation très complète, mais en anglais, de toutes les fonctions:

Références

Pour aller plus loin, ou obtenir d'autres informations:

Un article sur Argyll CMS est également disponible dans le magazine Linux Pratique n°56.

Foire aux questions

Quel bénéfice peut-on escompter en calibrant un écran?

Pour un graphiste ou un photographe professionnel, c'est indispensable pour obtenir un affichage fidèle des couleurs. Ici l'écran, maillon central de la chaîne graphique, permettra d'une part d'afficher les couleurs originales (ex: prise de vue) et d'autre part d'afficher les couleurs réelles du média de sortie (ex: tirage photo). Pour un amateur expérimenté, passionné ou encore rigoureux, un affichage fidèle des couleurs se justifie pleinement également, ne serait-ce que pour éviter de pratiquer un traitement d'image corrigeant les défauts de l'écran. Que ce soit pour une simple galerie web ou l'impression de vos travaux, des corrections hasardeuses sous l'effet d'un affichage non contrôlé, conduiront inévitablement à des résultats aberrants. A l'inverse un utilisateur multimédia conventionnel, ne retraitant pas spécialement d'images ou de photos, peut parfaitement se passer de cette démarche.

Quelle est l'importance de l'écran?

La qualité de l'écran est essentielle. On ne peut pas envisager un travail de retouche sérieux si l'on ne dispose pas d'un écran conçu pour afficher de façon complète et précise les espaces couleur habituels sRGB et AdobeRGB. Parallèlement la totalité des écrans grand public sont à dalle TN. Dans ce cas la position de l'utilisateur face à l'écran influe grandement la perception de l'image, ce qui rend aléatoire le travail effectué. Au final calibrer un écran grand public revient à essayer de faire au mieux avec les limites inhérentes et incontournables du matériel utilisé. Pour éviter cet écueil, tout professionnel ou amateur pointu devra se tourner vers un écran plus haut de gamme fonctionnant avec une dalle PVA ou IPS. Eizo et Lacie sont actuellement les deux grandes marques du monde des écrans destinés au traitement d'image. On notera les Eizo s2243w et Lacie 324, qui offrent de bonnes performances d'affichage pour un tarif presque raisonnable. Actuellement certains constructeurs comme Samsung et Nec font l'effort de commercialiser des écrans à dalle PVA ou IPS à des tarifs attractifs. A défaut de pouvoir utiliser ce type de matériel, on peut cependant éviter les écrans d'ordinateur portable, qui sont une catastrophe en la matière, et les écrans brillants qui augmentent le pouvoir de nuisance des réflexions. Il faut être conscient aussi que l'environnement dans lequel vous vous trouvez n'est pas complètement négligeable. Voici quelques liens pour en savoir plus:

Quelle sonde utiliser avec Argyll CMS?

Les sondes suivantes sont assez usuelles: Spyder2, Spyder3 et EyeOne Display 2. Argyll CMS supporte toutes ces sondes. La sonde Spyder2 est moins précise que les sondes EyeOne Display et Spyder3 pour les écrans LCD. La sonde spyder2 nécessite l'installation supplémentaire du driver constructeur, mais c'est expliqué dans le tutoriel. Voici la liste de toutes les sondes supportées:

  • X-Rite (incluant maintenant Gretag-Macbeth et Sequel imaging):
    • DTP20, DTP22, DTP41, DTP41T, DTP51, DTP92, DTP94
    • Spectrolino, SpectroScan, SpectroScanT
    • EyeOne Pro, EyeOne Monitor, EyeOne Display 1 or 2 or LT
    • Huey, MonacoOPTIX
  • Datacolor Colorvision:
    • Spyder 1, Spyder 2
    • Spyder 3 depuis la version 1.1.0 d'Argyll CMS
  • Autre:
    • Colorimètre HCFR
    • ColorHug (expérimental)

Pour plus d'info, consulter la documentation d'Argyll.

Quel rôle joue la carte graphique?

La carte graphique est un matériel incontournable entre le système d'exploitation et l'affichage produit par l'écran. Les drivers de celle-ci ainsi que leur configuration impactent directement la colorimétrie de l'écran. Pour cette raison s'assurer en premier lieu que la carte graphique est paramétrée de façon neutre, et qu'elle ne modifie pas de façon inadaptée l'affichage. Appliquant un même profil ICC sur un même écran mais utilisant 2 ordinateurs différents, c'est à dire 2 cartes graphiques différentes ou configurées différemments, le résultat de l'affichage sera vraisemblablement différent. La carte graphique et son driver jouent également un rôle central dans la gestion de la video LUT permettant la correction de l'affichage avec le profil ICC. Les capacités techniques à ce niveau sont déterminées par l'ensemble carte graphique+écran.

Incompatibilité avec la sonde XRite MonacoOptix DTP94

La sonde DTP94 n'est pas prise en charge par la version 1.6 d'ArgyllCMS :

  $ dispcal dummy
  dispcal: Error - new_disprd() failed with 'Instrument Access Failed'
  
  $ dispcal -D 1 dummy
  Checking XRandR 1.2 VideoLUT access
  Display 0 name = ':0.0'
  Unable to intern atom 'EDID_DATA'
  Failed to get EDID for display
  dtp92_fcommand: serial i/o failure on write_read '0PR^M'
  init_inst returned 'Communications failure' (Receive timeout)
  new_disprd failed because init_inst failed
  urb_reaper: cleared requests
  dispcal: Error - new_disprd() failed with 'Instrument Access Failed'

Il suffit pour pouvoir utiliser la sonde de télécharger et compiler la version 1.7 actuellement en développement.