Calibration écran en ligne de commande - Argyll

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,

Références :

1 - Installation

1.1- Vérifications préliminaires

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.

1.2 - Installation du logiciel de calibration Argyll

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
$ mkdir Argyll
$ cd Argyll

1.3 - Installation de la sonde de mesure Spyder5

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
$ 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 :

1.4 - Vérification performances initiales écran LCD

    $ cat /sys/class/backlight/*/max_brightness
4882

Puis la reporter dans le paramètre brightness

# echo 4882 > /sys/class/backlight/*/brightness
$ dispcal -v -y l -R 

Les options ont les significations :

# 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 :

2 - Détermination du profil colorimétrique ICC

La détermination du profil icc final s'effectue en trois étapes :

2.1 - Pré-calibration "hardware"

2.1.1 Mesure et ajustement

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 :

$ 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.

2.1.2 Bilan

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.

2.2 - Calibration

$ 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.

La signification des nouvelles options est :

2.3 - Caractérisation

2.3.1 Générer les mires de caractérisation

$ targen -v -d 3 -G -f 128 <prefix>

où les options  signifient :

La génération des mires dans l'exemple ci-dessus, dure moins d'une seconde.

2.3.2 Caractériser l'écran

$ dispread -v -H -N -k prefix.cal prefix

où les options signifient :

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.

2.3.3. Générer le profil ICC

$ colprof -v -qh -aG -nc prefix

où :

3 - Vérification de profil ICC

$ 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.

 $ dispwin -c

4 - Installation du profil

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 :

Chargement du profil .icc

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

Annexe 1- Récapitulatif des commandes

$ dispcal -H -v -t 6500 -b 120 dummy
$ dispcal -v -R # sélection du choix 2
$ dispcal -v -H -m -y x -q l -t 6500 -g 2.2 <prefix>
$ targen -v -d 3 -G -f 128 <prefix>
$ dispread -v -H -N -k prefix.cal prefix
$ colprof -v -qh -aG -nc prefix
$ dispwin -I prefix.icc
$ dispcal -v -r