Ce document décrit la calibration, en ligne de commande, d'un écran de PC au moyen du logiciel libre Argyll. Une interface utilisateur graphique, DisplayCAL est également disponible et est décrite ici.
Dans l'exemple ci-dessous,
l'écran à calibrer est l'écran LCD d'un portable Asus N55SL
la sonde de calibration est une sonde colorimétrique Spyder5pro
Informations générales sur les couleurs et la calibration :
Documentation logiciels et sondes de calibration
Excellents tutoriels calibration en ligne de commande et méthode de calibration, dont est fortement inspiré ce document, merci à leurs auteurs :
https://encrypted.pcode.nl/blog/2013/11/24/display-color-profiling-on-linux/
Mires de test
Vérifier qu'il n'y a pas déjà un système de système de gestion de la couleur en place (gnome-color-management par exemple) :
$ xprop -display :0.0 -len 15 -root _ICC_PROFILE
_ICC_PROFILE(CARDINAL) = no such atom on any window
Dans le cas contraire, la réponse est du type :
_ICC_PROFILE(CARDINAL) = 0, 0, 15, 40, 97, 114, 103, 108, 2, 32, 0, 0, 109, 110, 116
et il est préférable de trouver et désinstaller le système qui est déjà en place.
Vérifier, que la sonde de mesure est bien prise en compte par la version que l'on souhaite installer. Cette information est généralement disponible dans le changelog argyll :
Dans le cas de la sonde Spyder 5, la version doit-être supérieure à 1.7.
argyll >=1.7 est disponible dans Debian9 Stretch, mais pas dans Debian8 Jessie.
$ apt-cache policy argyll
argyll:
Installé : 1.9.2+repack-1
Candidat : 1.9.2+repack-1
Table de version :
*** 1.9.2+repack-1 0
10 http://httpredir.debian.org/debian/ stretch/main amd64 Packages
100 /var/lib/dpkg/status
1.6.3-4 0
500 http://httpredir.debian.org/debian/ jessie/main amd64 Packages
Dans le cadre d'une installation depuis Debian 8 Jessie, testing ou strech devront être présents dans les sources (voir ici), puis installer le paquet argyll :
# apt install argyll -t testing
Créer un répertoire à partir du quel les commandes argyll seront lancées et dans le quel les résultats de mesure seront stockés.
$ mkdir Argyll
$ cd Argyll
Connecter la sonde de mesure (ici une sonde Spyder5) sur le port USB et vérifier
$ dmesg
.......
[ 2071.393529] usb 1-2: new full-speed USB device number 2 using xhci_hcd
[ 2071.580827] usb 1-2: New USB device found, idVendor=085c, idProduct=0500
[ 2071.580839] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2071.580845] usb 1-2: Product: Datacolor Spyder5
[ 2071.580849] usb 1-2: Manufacturer: Datacolor
la reconnaissance par argyll
$ dispcal -v -R|head -4
Setting up the instrument
Instrument Type: Datacolor Spyder5
Serial Number: 50112093
Hardware version: 0x0a0f
Pour utiliser la sonde en mesure :
Retirer le cache et positionner la sonde sur la face avant de l'écran, et le cache en contrepoids, sur la face arrière
L'écran et la sonde de mesure doivent être en fonctionnement depuis au minimum 30 minutes avant de démarrer la mesure
$ cat /sys/class/backlight/*/max_brightness
4882
Puis la reporter dans le paramètre brightness
# echo 4882 > /sys/class/backlight/*/brightness
Lancer une mesure des paramètres principaux :
$ dispcal -v -y l -R
Les options ont les significations :
-v : verbose
-y l : sonde de mesure Spyder5 ou autre - écran LCD
-R : rapport de mesure de l'affichage non calibré
# dispcal -v -y l -R
Setting up the instrument
Instrument Type: Datacolor Spyder5
Serial Number: 50112093
Hardware version: 0x0a0f
Place instrument on test window.
Hit Esc or Q to give up, any other key to continue:
patch 3 of 3
patch 17 of 17
patch 17 of 17
Uncalibrated response:
Black level = 0.6143 cd/m^2
50% level = 71.54 cd/m^2
White level = 246.33 cd/m^2
Aprox. gamma = 1.78
Contrast ratio = 401:1
White chromaticity coordinates 0.2958, 0.3020
White Correlated Color Temperature = 8018K, DE 2K to locus = 2.8
White Correlated Daylight Temperature = 8031K, DE 2K to locus = 6.8
White Visual Color Temperature = 8221K, DE 2K to locus = 2.6
White Visual Daylight Temperature = 8619K, DE 2K to locus = 6.3
dispcal: Warning - Unable to determine effective Video LUT entry bit depth
The instrument can be removed from the screen.
Il ressort :
Le niveau de blanc est très élevé : 246 cd/m². Une valeur de 120 cd/m² est considéré comme une valeur satisfaisante dans des conditions d'éclairage habituelles
La couleur de température est très élevée : 8600K, d'où une dominante bleutée bien perceptible sur les images. La valeur recommandée pour l'affichage d'images sur écran est de 6500K.
La détermination du profil icc final s'effectue en trois étapes :
Pré-calibration "hardware"
Calibration
Caractérisation
La pré-calibration hardware consiste à utiliser les réglages électroniques qui agissent directement sur la carte graphique et permettent d'approcher le niveau de luminosité, de température de couleur, de contraste, .... Dans le cas d'un écran de portable, le seul réglage disponible est généralement le niveau du rétroéclairage (backlight) et il permettra de s'approcher du niveau de blanc objectif.
Lancer la méthode de mesure de calibration en mode Point Blanc (option 2 de dispcal) :
$ dispcal -H -v -t 6500 -b 120 dummy
Les options ont la signification suivante :
-v verbose
-H mode haute résolution spectrale si disponible
-t 6500 objectif de température de couleur
-b 120 objectif de niveau de blanc
$ dispcal -H -v -t 6500 -b 120 dummy
Place instrument on test window.
Hit Esc or Q to give up, any other key to continue:
Display adjustment menu:
Press 1 .. 7
1) Black level (CRT: Offset/Brightness)
2) White point (Color temperature, R,G,B, Gain/Contrast)
3) White level (CRT: Gain/Contrast, LCD: Brightness/Backlight)
4) Black point (R,G,B, Offset/Brightness)
5) Check all
6) Measure and set ambient for viewing condition adjustment
7) Continue on to calibration
8) Exit
Taper 2 pour sélectionner le mode Point blanc
Doing some initial measurements
Red = XYZ 44.863 24.798 3.620
Green = XYZ 52.881 93.657 17.336
Blue = XYZ 26.827 8.404 141.947
White = XYZ 124.175 126.260 161.445
Adjust R,G & B gain to get target x,y. Press space when done.
Target Br 120.00, x 0.3128 , y 0.3292
/ Current Br 126.17, x 0.3013+, y 0.3066+ DE 10.6 R+ G+ B-- q
Sample read stopped at user request!
Dans le cas présent, une valeur de 2441 soit 50% de la valeur maximale permet d'obtenir 120 cd/m² avec une petite marge (6 cd/m²) pour prendre en compte la réduction apportée par les étapes de calibration qui suivent.
Il est alors possible de déterminer, les caractéristiques natives de l'écran après pré-calibration, avant calibration logicielle :
$ dispcal -v -R
Setting up the instrument
Instrument Type: Datacolor Spyder5
Serial Number: 50112093
Hardware version: 0x0a0f
Place instrument on test window.
Hit Esc or Q to give up, any other key to continue:
patch 3 of 3
patch 17 of 17
patch 17 of 17
Uncalibrated response:
Black level = 0.3073 cd/m^2
50% level = 35.98 cd/m^2
White level = 124.58 cd/m^2
Aprox. gamma = 1.79
Contrast ratio = 405:1
White chromaticity coordinates 0.2976, 0.3045
White Correlated Color Temperature = 7822K, DE 2K to locus = 2.3
White Correlated Daylight Temperature = 7833K, DE 2K to locus = 6.4
White Visual Color Temperature = 7975K, DE 2K to locus = 2.2
White Visual Daylight Temperature = 8338K, DE 2K to locus = 6.0
dispcal: Warning - Unable to determine effective Video LUT entry bit depth
The instrument can be removed from the screen.
Dans le cas présent, le gamma est de 1,79 et la température de couleur de 8338K.
Lancer la calibration, ce qui aura pour effet de générer un fichier de calibration .cal :
$ dispcal -v -H -m -y x -q l -t 6500 -g 2.2 <prefix>
où <prefix> est le nom que l'on souhaite utiliser pour les fichiers générés. Les extensions de fichier .cal, .icc etc... sont générés automatiquement.
-m - pour sauter l'étape d'ajustement réalisée à l'étape précédente
-q l - basse qualité - Il est préférable de commencer avec une basse qualité (l=low), puis de recommencer si les résultats sont satisfaisants avec des qualités supérieures (m=medium; h=haute)
-g 2.2 - objectif de gamma, ici 2.2
-o - non présent dans la commande ci-dessus est optionnel et peut-être utilisé en phase de mise au point pour générer un profil ICC provisoire avant la caractérisation
$ targen -v -d 3 -G -f 128 <prefix>
où les options signifient :
-d 3 - Combinaison de couleurs : RGB vidéo
-G - Génération précise (good) des couleurs plutôt que rapide
-f 128 - Nombre de mires (Variante -g 33 ?)
$ dispread -v -H -N -k prefix.cal prefix
où les options signifient :
-N - suppression de l'étape de calibration (réalisée préalablement)
-k prefix.al - chargement du fichier de calibration
La caractérisation s'effectue sur les 128 mires définies à l'étape précédente et dure dans le cas présent quelques minutes.
$ colprof -v -qh -aG -nc prefix
où :
-q h - niveau de qualité : Low, Medium (def), High, Ultra
-n c - Don't put the input .ti3 data in the profile
$ dispwin -I prefix.icc
$ dispcal -v -r
Setting up the instrument
Instrument Type: Datacolor Spyder5
Serial Number: 50112093
Hardware version: 0x0a0f
Place instrument on test window.
Hit Esc or Q to give up, any other key to continue:
patch 3 of 3
Current calibration response:
Black level = 0.3025 cd/m^2
50% level = 26.78 cd/m^2
White level = 121.00 cd/m^2
Aprox. gamma = 2.18
Contrast ratio = 400:1
White chromaticity coordinates 0.3097, 0.3262
White Correlated Color Temperature = 6696K, DE 2K to locus = 4.7
White Correlated Daylight Temperature = 6699K, DE 2K to locus = 0.1
White Visual Color Temperature = 6513K, DE 2K to locus = 4.5
White Visual Daylight Temperature = 6695K, DE 2K to locus = 0.1
The instrument can be removed from the screen.
Les objectifs de niveau de blanc, de gamma et de température ont été correctement respectés.
$ xrandr --verbose |grep Gamma
Gamma: 1.1:1.2:1.9
Dans le cas présent, l'une des composantes est très éloignée de la valeur neutre 1.0, signe d'un écran "nativement" peu équilibré, ce qui influera sur les performances finales.
Tester visuellement l'affichage des mires fournies par les sites sités en Référence.
$ dispwin -c
Il est d'usage de placer les profils ICC dans /usr/share/color/icc/ :
# mkdir /usr/share/color/icc/perso
# mv calib_6500_2.2_125_vmHyxqltg.icc /usr/share/color/icc/perso/
Avec le bureau XFCE, ajouter dans le menu : Session et démarrage > Démarrage automatique, une application du type :
ce qui aura pour effet de créer le menu xdg-autostart correspondant :
$ cat Calibration\ de\ l'écran.desktop
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=Chargement avec dispwin du profil colorimétrique .icc
Comment=
Exec=dispwin -I /usr/share/color/icc/perso/calib_6500_2.2_125_vmHyxqltg.icc
OnlyShowIn=XFCE;
StartupNotify=false
Terminal=false
Hidden=false
Note : Alternativement voir la possibilité d'utliser xcalib
Pré-calibration (6500K, 120 cd/m²)
$ dispcal -H -v -t 6500 -b 120 dummy
Caractéristiques après pré-calibration :
$ dispcal -v -R # sélection du choix 2
Calibration (6500K, gamma 2,2, basse qualité, écran LCD)
$ dispcal -v -H -m -y x -q l -t 6500 -g 2.2 <prefix>
Génération des mires (RGB vidéo, bonne qualité, 128 mires)
$ targen -v -d 3 -G -f 128 <prefix>
Caractérisation de l'écran
$ dispread -v -H -N -k prefix.cal prefix
Génération du profil ICC (qualité haute, algorithme single gamma+matrix)
$ colprof -v -qh -aG -nc prefix
Chargement du profil
$ dispwin -I prefix.icc
Vérification du profil
$ dispcal -v -r