(Vers page accueil)          RSS météo

7Menu photo

 

Quelques utilitaires

Calcul du DeltaE94 d'un volume de données (tableau)(mise à jour 7/04/2007)

Conversion d'un volume de données (tableau) Lab en CIE XYZ et RGB (2/2007) et des valeurs RGB>0 ou > 255 - incidences sur les saturations -(6/2007)

Conversion d'un volume de données (tableau) RGB en CIE XYZ et Lab (12/2006)

Matrice de conversion  RGB / XYZ - espace colorimétrique  et adaptation chromatique (Bradford et CAM02)- calcul des points blancs- (20 mars 2008)

Information sur les calculs à partir des données spectrales

Profondeur de champ, angle de champ, cadrage... (2006)

Les calculs données ci-dessous en 2) 3) 4) 5) sont des extraits des feuilles qui me servent à élaborer les profils ICC. En ce sens ces extraits ne contiennent pas toutes les fonctionnalités que j'aie pu utiliser.


Quelle profondeur de champ, quel angle de champ, quels cadrages en fonction du format (pellicule, capteur) et de la focale

 

I1 -Information sur les calculs à partir des données spectrales

Je ne donnerais pas de feuilles de calculs, car le volume de données est vraiment trop important (de l'ordre de 6 à 8M°), mais j'informerai sur la manière de la faire. La feuille de calcul permet de traiter plus de 500 données spectrales, les convertir en XYZ en fonction de l'illuminant et de T. Bien sur si quelqu'un est intéressé !

Elle adapte le résultat à la fois par la méthode de Bradford (utilisée par Photoshop) et CIECAMO2 (utilisée par certains profilers).

Les valeurs RGB sont calculées en Prophoto, WideGamutRGB et AdobeRGB, en incluant les valeurs > 255 et les valeurs négatives pour traduire le dépassement de l'espace.

Si on appelle :

(les calculs relatifs aux données spectrales ci-dessous sont dérivés de ceux fournis par B.Lindbloom)

  • Pi la distribution spectrale de la source émettrice,

  • xi yi zi qui correspondent à l'observateur standard 2° de la CIE

  • Ii la distribution spectrale de l'illuminant

  • N =SyiIi

On obtient :

X = 1/N (S xiPiIi) et similaire pour Y et Z.

Pour l'illuminant lumière du jour on a :

Id(l) = Io(l) + M1*I1(l) + M2*I2(l) avec :

M1 = (-1,3515 - 1,7703xd + 5,9114yd) / M

M2 = (0,03 - 31,424 xd + 30,0717 yd) / M

M = 0,0241 + 0,2562 xd - 0,7341 yd

Avec xd et yd point blancs calculés en fonction de la température T :

xd = -4,607*109 / T3 + 2,9678 * 106/T2 + 0,09911* 103 / T + 0,244063 pour compris entre 4000K et 7000K et yd =-3 xd2 + 2,87xd - 0,275

Il existe un calcul "semblable" pour l'illuminant incandescent...Pour les autres illuminants F, etc., on se référera à des normes de données.

Les calcules des valeurs RGB sont similaires, mais ne font pas intervenir I.

 

Une fois les calculs de X, Y et Z réalisés pour l'illuminant en cause (D, incandescent, F, etc.), on ajuste le calcul pour tenir compte de l'adaptation chromatique. J'ai choisi la dernière modélisation qui prend le mieux en compte les aspects physiologique et psychologique qui est la méthode CIECAM02, dont le processus est décrit ci-dessous

Puis on réalise une conversion "classique" vers Lab...

 

Matrice de conversion RGB - XYZ

2°bis Matrice de conversion RGB - XYZ et matrice d'adaptation chromatique (BradFord et CAM02)- calcul des points blancs

Ce petit utilitaire permet facilement de reconstruire les caractéristiques globales d'un espace colorimétrique (Adobe98, BruceRGB, ProPhoto, sRGB, etc.) : il "ne fait" que calculer la matrice de conversion RGB ==> XYZ en partant des données du point blanc et des 3 couleurs primaires (rouge, vert, bleu).

La version 2°bis réalise de plus par la méthode de Bradford les conversions d'adaptation chromatique pour passer par exemple de D55 à D50 ou plus originalement d'avoir les caractéristiques d'un illuminant comme D45.

Elle permet aussi les conversions d'adaptation chromatique par la méthode CAM02 plus récente.

Nouveau : vous pouvez calculer directement les valeurs des points blancs en xyY ou XYZ soit pour l'illuminant D (lumière du jour) de 4000K à 10000K, soit pour l'éclairage tungstène (dont l'illuminant A) à partir de formules de rayonnement du corps noir (entre 2500 et 4000K)

 

3° Conversion RGB en CIE XYZ et Lab:

J'ai eu besoin, dans certaines circonstances de convertir des valeurs RGB (RVB) en valeurs Lab (et CIE XYZ). Il existe de nombreux sites dont celui de B.Lindbloom qui font ce genre de choses mais :

1) les résultats obtenus à partir de ces calculateurs différent sensiblement... et pas toujours dans un rapport faible ou fiable...

2) je n'ai pas trouvé de site qui convertissent des données sous forme de tableaux - on ne trouve que des saisies élémentaires de trio R,G,B.

Après maintes recherches, il s'avère que les algorithmes utilisés par B.Lindbroom (copyright) : (http://www.brucelindbloom.com , merci à lui pour les concepts et les calculs...) soient les plus conformes (les plus récents); de plus ce site est très bien fait en termes de pédagogie et contenu... Je n'ai fait qu'utiliser ce qu'on trouve également en cherchant bien par ailleurs sur Wikipedia...ou d'autres sites...

J'ai utilisé les formules et les matrices de son site ou de similaires...(wikipedia...) - les calculs sont simples et font appel des mathématiques élémentaires  (fonction linéaires, matricielles, puissance,...). Dans la feuille de calcul tout est paramétrable, depuis l'espace de travail (SRGB, Adobe RGB,...), le point blanc (D65, D50...), le gamma, etc. Il suffit de changer les paramètres des matrices...

Bien sûr rien n'interdit d'utiliser le tableur pour des calculs élémentaires (une ou deux valeurs RGB).

J'ai réalisé ces feuilles de calcul avec OpenOffice en 2 formats, ce qui permet de les lire sous Excel et Linux

Feuille calcul Windows Xls

Feuille calcul format ods

Si ce travail peut être utile à certains!

 

4° Conversion Lab en CIE XYZ et RGB

Ce calcul est l'inverse du précédent, il m'a essentiellement servi, pour l'élaboration de profils, comme vérificateur de calculs mais également pour "évaluer" le rapport entre saturation et chromaticité.

Comme dans l'exemple précédent, le calcul est fait pour l'espace AdobeRGB et l'illuminant D50 avec les conversions appropriées D65 ainsi qu'un gamma de 2,2.

La méthode de conversion choisie utilise d'une part, les matrices de conversion RGB==> XYZ et réciproquement, et d'autre part les conversions d'illuminant soit par la méthode de Bradford ou soit par celle de Von Kries (à vous de charger les valeurs appropriées).

Le tableau est limité à une vingtaine de lignes, vous pouvez bien sûr l'augmenter en copiant les formules...

 

Feuille de calcul Windows.xls

Feuille de calcul format ods

J'ai tenu à compléter ce travail par une feuille de calcul plus approfondie (travail en cours à ce jour 25 juin 07) :

  • prise en compte : a) de valeurs RGB négatives par calcul; b) de valeurs RGB maxi

  • évaluation de la saturation résultante (en %) y compris si elle dépasse 100%

La feuille ici présentée (j'en possède de nombreuses variantes) présente à partir des valeurs Lab fournies avec la mire DT003 (C.Metairie) - il est possible de prendre n'importe quelles valeurs Lab - :

  • une conversion XYZ à partir du blanc de référence D50

  • une conversion xyY

  • puis pour chaque espace colorimétrique (AdobeRGB, Prophoto, sRGB) une éventuelle conversion d'illuminant (D50 vers D65), une conversion "rgb" avec le triplet matriciel adhoc, puis une conversion RGB avec le gamma adapté.

  • pour chacun des cas, il est extrait les saturations résultantes y compris > 100%, les valeurs négatives RGB, les valeurs RGB supérieures à 255

J'ai ensuite ajouté à titre de comparaison la conversion dans l'espace PhotogamutRGB_av6c  (avec l'intention colorimétrie relative) qui n'a pas pu se faire par calcul, mais par mesure des 285 valeurs RGB.

Je laisse chacun interpréter !

Feuille de calcul 2 Windows.xls

 

5° Calcul du DeltaE94 d'un volume de données (mise à jour 7 avril 07)

J'ai eu besoin pour l'élaboration des profils ICC, d'une évaluation des DeltaE94 en temps réel, c'est-à-dire de pouvoir voir l'incidence des diverses modifications (luminance, contraste, chromaticité, teintes...) sur les deltaE94. La formule de calcul du DeltaE94 est donnée sur ce site.

J'ai tenu en plus des mesures de  DeltaE habituelles (moyenne, écart-type, maximum, minimum), à évaluer les 3 delta des 3 composantes L (luminance), C (chromaticité), H (teinte).

Le tableau est limité à une vingtaine de lignes à partir des données Lab. Vous pouvez ajouter des lignes... attention toutefois à revoir les limites des formules qui dans l'exemple (xls) sont limitées au nombre de lignes actuelles; j'ai mis à titre d'information au format ods (OpenOffice), une feuille de calcul plus complète, mesurant les écarts par gamme de couleur (cyan, rouge, jaune...) en prenant comme exemple la mire d'étalonnage  du boîtier et les fichiers utilisés.

Feuille de calcul Windows.xls

Feuille de calcul format ods

 

 

Rappel: le "Delta E" a plusieurs références , delta E standard qui correspond sensiblement à :

 L1,a1,b1 sont les coordonnées dans l'espace colorimétrique CIE Lab de la première couleur à comparer et L2,a2,b2 celles de la seconde.

On reconnaît la formule de la distance Euclidienne. Le delta E correspond à la distance entre deux couleurs placées dans cet espace de couleur.

L'espace CIE L* a* b* étant presque perceptuellement uniforme, des couleurs à égale distance dans l'espace Lab (donc ayant un même delta E) devraient être perçues par l'œil humain comme ayant la même différence de couleur.

Il existe aujourd'hui d'autres formules plus avancées pour calculer ce delta E (CIE 1976, CIE 1994, CIE 2000, CMC).  Ces nouvelles formules introduisent des coefficients pour ajuster le résultat en fonction de la teinte ou du domaine d’application (arts graphique, textile). La forme dont je me sers dans les calculs qui suivent, notamment pour évaluer les profils, est celle de Delta E94:

avec     KL, KC, KH, SL valant 1 pour Delta_E94 et sont différents pour Delta_E2000

Sc = 1+0,045*C1  avec C1=SQRT(a12 +b12) et C2=SQRT(a22 +b22)

Sh=1+0,015*C1

Pour laquelle :

  • "L" représente la luminance, "a" la composante rouge / vert variant entre 127 et -128, "b" la composante jaune / bleu

  • "C" représente la chromaticité (peu différente dans sa perception de la saturation) : C= SQRT(a2+b2), variant de 0 à 180

  • "H" représente la teinte : H=arctg(b/a), variant de -PI à +PI

Ces formules et mesures notamment en référence à L*a*b* sont contestables et contestées, néanmoins elles ont à ce jour le mérite d'être les plus universelles, surtout lorsque les valeurs de DeltaE sont faibles.

De plus la formule du DeltaE94 (et 2000) est dissymétrique, elle ne se comporte pas exactement de la même manière selon la manière dont on considère la référence. Si "LabRef" est l'ensemble des valeurs de référence (ici reprise en repère 1 dans la formule) et si "LabTest" est l'ensemble des valeurs à tester (ici reprise en 2 dans la formule), les 2 valeurs de DeltaE94 ; "LabRef comparée à LabTest" et "LabTest comparée à LabRef" pourront présenter de petits écarts sur l'ensemble des valeurs, mais ces écarts peuvent être significatifs sur une ou deux valeurs.