Bonjour à tous.

Vous pouvez désormais, si l'envie vous en dit, soutenir SoundPixelLab - Vous retrouverez les informations sur ce lien en dessous
Soutenir SoundPixelLab

Merci à vous !

Les sondes de calibration

Répondre
Pio2001
130 dB
Messages : 596
Enregistré le : 18 mars 2024, 00:29

Les sondes de calibration

Message par Pio2001 »

Salut,
Peut-on trouver quelque part des infos techniques sur les sondes de calibration du marché ? Comme la luminosité minimum mesurable, et la précision de l'appareil, par exemple.

Les données commerciales sont d'une vacuité consternante. Le moindre thermomètre à 10 balles indique, à tort ou à raison, que la précision sera de +/- 1 °C. Les sondes de calibration même pas ! On trouve davantage d'infos sur un paquet de nouilles !

Quelqu'un a sûrement dû poster un jour une vidéo où différentes sondes du marché étaient comparées entre elles et leurs résultats confrontés à celui d'un spectro-radiomètre pro tout frais sorti du labo d'étalonnage. Mais si cette vidéo existe elle est noyée dans les milliers de vidéos tutoriels "comment calibrer votre écran". Si vous connaissez son lien, je serai très heureux de l'avoir :D
 

POSTREACT(ions) SUMMARY

THXRD
130 dB
Messages : 691
Enregistré le : 18 mars 2024, 11:18

Re: Les sondes de calibration

Message par THXRD »

les «  sondes » type colorimètre se divise en 2 catégories
Les «  économiques » entre 60 et 150/200 € ..avec lesquelles il ne faut rien espérer de sérieux

Celle qui se commercialement se font nommer spectro ( ce qui est faux ) et dont le prix peut aller jusqu’à 8/900 € .. voir 6000 € pour une d’entre elle
pour mesurer des écrans Tv associé à leur soft ou un soft dédié c.est «  suffisant » tant que l’on est pas trop exigeant coté xy en terme de précision ( en basse luminance precision xy mauvaise à nulle )
Utilisée pour mesurer en projection n’est pas recommandé
Les sondes nécessitent un re calibrage/ re étalonnage régulier ( idéalement avant chaque mesure .. )
Les sondes ne sont pas compatibles pour la mesure des laser RVB et limite pour les laser phosphore
Se mefier de certaines caractéristiques annoncées comme leur largeur de bande ( tricherie sur le terme employé prêtant à confusion ) et sensibilité souvent au delà de l’optimiste
Je suis quand même etonné que tu ne trouve pas de caracteristiques … la plupart en annonce ..souvent trop et souvent «  limite » honnete .. mais elles annoncent


Le vrai moyen de mesure utilisé dans le monde professionnel est le spectro radiomètre
pour l’image / la lumière. mais également de nombreux autres domaines
Beaucoup , beaucoup plus cher .,( entre 8000 et 60 000 € , voir plus pour des produits spéciaux )
Un vrai spectro est totalement autonome . Il affiche sur son écran directement les résultats .

Ils sont bien sur compatibles avec la majorité des softs d’analyse image ( soft souvent excessivement cher , impliquant des mises à jour annuelle très couteuses et en dehors d’offrir des tas de fonctions spectaculaires et inutiles pour la plupart , ils
sont pas nécessaires pour nos usages en dehors de vouloir frimer sur des forums ..)
Bien sur eux étant des machines «  certifiées «  ( les usages «  pro » en métrologie exige la certification annuelle ou 2 ans des appareils de mesures ( NIST ) )
Eux bien sur offrent des docs avec toutes les caractéristiques imaginables..

Pour ma part j’ai eu longtemps un photo research PR 670 … et un PR 740 ( ce dernier machine de labo ultra performante mais peu utile pour nos usages .. / je le louais à des labos ..et j’ai fini par le revendre )
Aujourd’hui pour des raisons pratique de compatibilité avec les constructeurs de machines cinema et Dolby
J’use d’un Qalif V2 /3
Roland
 

POSTREACT(ions) SUMMARY

Avatar du membre
Sensunda
Fondateur
Messages : 831
Enregistré le : 08 mars 2024, 18:05

Re: Les sondes de calibration

Message par Sensunda »

THXRD a écrit : 24 sept. 2024, 08:03Les «  économiques » entre 60 et 150/200 € ..avec lesquelles il ne faut rien espérer de sérieux
Alors certaines offrent des résultats décents, certes pas optimaux, mais pour le commun des mortels, ça semble déjà permettre de dormir tranquille :wink .

https://www.homecinema-fr.com/forum/les ... 27046.html
 

POSTREACT(ions) SUMMARY

"La musique c'est du bruit qui pense" Victor HUGO
THXRD
130 dB
Messages : 691
Enregistré le : 18 mars 2024, 11:18

Re: Les sondes de calibration

Message par THXRD »

La réponse est sur le męme site ( Eames qui est une très bonne « pointure » en video dit la même chose que moi de A à Z )
On se fou que ça monte à 10000 nits c’est du pure marketing dans le cas d’une sonde Tv
Mon PR 670 montait à 8 566 000 nits …
De toute manière aucun écran n’y monte et vaut mieux pas regarder xy au dela de 6/700 ..sur là majorité des écran
Je ne donnerais aucun conseil sur un modèle quel qu’il soit
Aucun calibreur ne travaille avec des sondes de contact colorimètre . Surtout avec des projos ..
Roland
 

POSTREACT(ions) SUMMARY

Avatar du membre
Sensunda
Fondateur
Messages : 831
Enregistré le : 08 mars 2024, 18:05

Re: Les sondes de calibration

Message par Sensunda »

C'est plus la réponse de Atreillou que j'ai relevé :
La matériel Pro reste le matériel Pro et surtout leur expertise dans le milieu de la calibration sera toujours au dessus des notre. Je me suis fait moi même surprendre par la méthode utilisée par un pro pour calibrer mon XW7000 (j'utilisais des presets différents pour chaque type d'espace, lui le fait sur le même pour chaque preset, bien joué !). Ceci dit, les petites sondes comme la HL permette vraiment de faire quelque chose de bien avec peu de moyens technique sans que l'on a conscience de la limite physique de ces matériels (dans les bas IRA notamment).

Pour moi l'idéal reste de faire calibrer la première fois par un pro, faire faire l'étalon de sa sonde HL avec du matériel Pro et vérifier la dérive dans le temps avec la HL calibrée pour son environnement.
 

POSTREACT(ions) SUMMARY

"La musique c'est du bruit qui pense" Victor HUGO
THXRD
130 dB
Messages : 691
Enregistré le : 18 mars 2024, 11:18

Re: Les sondes de calibration

Message par THXRD »

Mouais ..
Heu …. sonde ensuite étalonnée d'après le projo , avec les 2 qui dérivent dans le temps et avec une techno à fonction de transfert non lin ..
à chaque fois que l’on mesure , on appelle le mec qui à un spectro pour étalonner sa sonde …ben voyons


hum , de ma longue expérience du sujet à voir souvent des projos soit disant calibrés .. avec des méthodes et matos du même genre .. je suis dubitatif ..devant ces réponses et procédures
Je reste à être sur celle de Eames .. qui est pour moi la bonne .
Ce que je vois souvent après calibrage avec ces méthodes c’est un xy RVB ( W D 65 ) totalement à l’ouest en basse lumière.. ou l’utilisateur lui même le voit
Et me dit .. » l’appareil de mesure disait que c'était bon «  , mais je vois une dominante rouge dans les sombres ( ou trop verte , ou trop bleu ) ect
Moi je ne vend pas de calibrage . ( j’ai déjà trop d’occupation ..comme ça )..je donne juste un avis d'expérience sur le sujet
Et Eames ( que je ne connais d’ailleurs pas ) qui est plutôt un bon à exactement le même
Et si tu pose la question à de vrais calibreurs , ils te diront rigoureusement les mêmes choses que moi

La métrologie nécessite en général les connaissances , l’habitude qui aide à ne pas faire d’âneries
Et par définition un instrument de mesure
Et en image /lumière la métrologie nécessite un vrai équipement ..

Mais comme je dit souvent ..on peut y croire ..
roland
 

POSTREACT(ions) SUMMARY

Avatar du membre
yoyoman
49 dB
Messages : 115
Enregistré le : 20 mars 2024, 10:50

Re: Les sondes de calibration

Message par yoyoman »

Bonjour Roland,

Mon soucis avec tes réponses qui sont très certainement les bonnes, c'est que tu es un extrémiste de la qualité et qu'il est parfois difficile de savoir, pour un amateur, si vraiment, il vaut mieux ne rien faire ou si en fait pour un investissement raisonnable comme avec une sonde I1D3 on peut quand même améliorer les choses. Sans parler du plaisir de pratiquer, de se renseigner et d'en apprendre plus sur les techniques de diffusions, de calibrage, sur les normes etc...

Que pense tu de ma question et des réponses apportés par Arteillou ICI dans le même sujet linker plus haut par Sensunda ?

Merci d'avance pour ton retour
 

POSTREACT(ions) SUMMARY

"Les savants ont calculé que les chances d'exister d'un phénomène aussi manifestement absurde sont de une sur un million. Mais les magiciens, eux, ont calculé que les chances uniques sur un million se réalisent neuf fois sur dix."
Pio2001
130 dB
Messages : 596
Enregistré le : 18 mars 2024, 00:29

Re: Les sondes de calibration

Message par Pio2001 »

Salut,
Pour ma part, je note que la précision de la sonde dont il est question a été mesurée sur les coordonnées des primaires. Or, ce n'est qu'une petite partie de l'étalonnage. Une autre partie essentielle dont on ne sait rien, c'est le suivi du gamma, qui participe grandement au naturel des images.
Dans les discussions à ce sujet, une personne a dit qu'en basse lumière, nos yeux sont plus précis que les sondes du commerce pour voir si le gris très très foncé est neutre ou pas.

Etant donné le prix des vrais appareils de mesure, on n'a pas encore de bancs d'essais des différentes sondes avec leur précisions respectives. D'autant plus qu'il faudrait les tester sur plein de dalles différentes pour voir leur réaction à tel ou tel spectre lumineux.
 

POSTREACT(ions) SUMMARY

Emmanuel Piat
67 dB
Messages : 146
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Bonjour à tous.

La démocratisation des projos ayant une source laser RGB ou laser(s) phosphore a induit une problématique qui est leur étalonnage : acheter un dispositif de mesure qui a la précision nécessaire revient en général bcp plus cher que le projo lui-même. Ceci est dû au fait que les télé-spectroradiomètres sont horriblement chers lorsqu'on veut mesurer à distance la réflectance d'un écran de proj avec une ouverture angulaire réduite et une réso spectrale <= 2nm (nécessaire pour une source laser). Au passage, l'inflation n'a rien arrangé ... C'est paradoxal étant donné que l'entrée de gamme des monoDLP laser est de moins en moins chère. Pourtant, les prix des spectroradiomètres ne sont pas déconnants en soi. J'utilise dans le cadre de mon travail du matériel de mesure qui intègre des spectros dans les boitiers. Peu importe ce qu'on mesure avec, le prix de ce genre de matos est systématiquement supérieur à 10 k€ et ça peut monter très haut selon la complexité de l'instrument, son ergonomie logicielle, ses perfs etc. Donc, pour l'amateur pas riche, il ne faut rien espérer d'acceptable financièrement du côté des spectroradiomètres commercialisés prêts à l'emploi.

Il reste néanmoins une voie alternative. Les services de R&D dans les entreprises ou les labos qui développent des protos intégrant de l'analyse spectrale utilisent des éléments qu'ils assemblent comme du Lego. Ça permet de développer un banc d'essais pour mettre au point le dispositif ou le principe de mesure/caractérisation. A titre d'exemple, vous trouverez dans le lien ci-dessous le champ d'activité du dép. Optique du gros labo dans lequel je travaille avec ses trois équipes de recherche : Nano Optique, Optique Non Linéaire et Optoélectronique (voir les liens en haut à droite) :
https://www.femto-st.fr/fr/Departements ... -recherche

Perso, je travaille dans un autre département de ce labo et je n'ai que des connaissances très basiques en optique. Il y a de ça pas mal de temps, j'ai travaillé avec le dép. Optique pour caractériser la réponse spectrale de certaines cellules bio non adhérentes. Il s'agissait de focaliser un flux de lumière blanche sur une zone de la cellule immobilisée par µaspiration et de récupérer la lumière qui ressortait de l'autre côté de la cellule pour en déduire son spectre d’absorption/transmission.

Lorsqu'on adopte ce type d'approche "en kit", il s'avère qu'assembler un télé-spectroradiomètre est à la portée de n'importe qui (même avec 2 mains gauches) car ça prend une minute. On prend un mini/micro spectromètre de labo qui travaille en VIS ou en VIS/NIR avec la bonne réso optique (2nm ou moins à mi-pic). On visse sur son entrée SMR 1 ou 2m de fibre optique avec les bonnes caractéristiques et on visse à l'autre bout de la fibre le collimateur qui va bien pour faire la visée sur l'écran avec l'ouverture angulaire souhaitée (afin de focaliser un angle donné de lumière sur l'extrémité de la fibre). Il suffit ensuite de bricoler un support pour mettre le collimateur sur un pied photo avec rotule, ajouter un pointeur laser ainsi qu'un bout de tube autour du collimateur pour supprimer les lumières parasites. C'est du DIY plutôt simple.

Néanmoins, je ne veux pas donner de faux espoirs : les composants optiques professionnels sont très chers. Donc, même si ce n'est pas compliqué à assembler, ça a un coût non négligeable. Lorsqu'on vise une réso de 2nm, on sera autour de 2500€ avec du matériel d'origine US si on optimise bien les composants. Donc, oui, désolé, ça restera cher pour bcp et le spectro représente à lui tout seul ~80% du coût total. Ce coût n'a cependant rien à voir avec celui d'un télé-spectroradiomètre du commerce avec une réso équivalente. Si vous êtes plusieurs utilisateurs sur une même région, il est possible d'envisager une acquisition à plusieurs. On trouve aussi parfois des spectros de labo d'occasion. Il est sans doute aussi possible d'optimiser le coût en achetant un mini spectro de labo chinois. Selon qq recherches rapidement faites sur le net, ça permet de diviser le prix du spectro par un facteur 1,3 à 1,5 à performances égales. A noter que je n'ai aucune expérience sur les mini spectros chinois.

Le revers de la médaille de ce type d'approche, ça sera la partie logicielle. Vous n'aurez pas un logiciel métier dédié à l'étalonnage des projos laser avec une bonne ergonomie. Vous aurez juste un soft pour récupérer le spectre, calculer éventuellement des trucs avec (coordonnées XYZ par exemple) et exporter le spectre brut dans un format texte afin de le réexploiter avec un autre soft dédié (ArgyllCMS/DisplayCAL ou color HCFR par exemple en open source). Donc là, il faudra mettre un peu d'huile de coude pour obtenir une ergonomie acceptable (pilotage des suites logicielle à l'aide de batch ou de macros par exemple). En l'état, ce sera difficile de faire mieux mais ça sera suffisant pour étalonner des primaires et une courbe gamma. Avec un projo linéaire (DLP), il n'y a pas besoin de plus si la source laser est bien gérée en cas de dimming dyn. Ca vous permettra également de profiler un colorimètre pas cher (et vérifier sa précision et sa linéarité) et ainsi déterminer si vous pouvez l'utiliser pour étalonner votre projo laser avec une suite logicielle plus adaptée comme Color HCFR. Pour aller plus loin, si le spectro est livré avec un SDK (parfois payant...), son support pourrait être intégré dans le futur à des logiciels comme ArgyllCMS/DisplayCAL ou Color HCFR par les équipes qui les développent. Tout cela ouvre des perspectives à une situation qui semblait totalement bloquée.

Je vais essayer d'avancer un peu sur ce type de design DIY et je reviendrais vers vous d'ici qq semaines si j'ai des choses intéressantes à dire.
 

POSTREACT(ions) SUMMARY

Pio2001
130 dB
Messages : 596
Enregistré le : 18 mars 2024, 00:29

Re: Les sondes de calibration

Message par Pio2001 »

Intéressant,
Un point à noter : lorsque l'on commence à avoir besoin d'un spectromètre précis pour mesurer les couleurs (pour les sources à très large gamut), c'est malheureusement là qu'arrive un effet encore très peu étudié : l'échec de métamérisme. Cela désigne le fait que lorsque les couleurs primaires ont un spectre très étroit, la perception de la couleur commence à varier d'un individu à l'autre en fonction de la constitution biologique des cellules de notre rétine.
Et dans ce cas, rien ne sert de calibrer à l'identique. Contrairement à une enceinte qui reproduit (plus ou moins bien) le spectre sonore original, un diffuseur d'images (TV ou projo) ne reproduit jamais le spectre original, mais presque toujours un mélange de trois primaires : rouge, vert et bleu.
Le spectromètre le plus précis du monde donnera les coordonnées chromatiques correspondantes pour un observateur standard... mais nous ne sommes pas tous des observateurs standards.

D'après le peu que j'ai lu sur le sujet, ce serait facile à corriger, à condition de disposer d'une seconde source d'images peu sensible à ce phénomène. On calibre le blanc de cette seconde source, puis on ajuste le blanc de la source principale de sorte qu'il paraisse identique à nos yeux à nous. A priori, le reste de la calibration devrait suivre.
Selon une autre source, la variation de perception d'un individu à l'autre dans le pire des cas serait de 2 ou 3 deltas (comme THXRD l'a indiqué dans une discussion voisine de celle-ci), mais pour le bleu primaire, la variation pourrait atteindre une dizaine de deltas.
Cela concerne les TV ou projecteurs qui dépassent le DCI P3 et frisent le BT2020.
Toujours d'après les docs qui en parlent, cela ne gêne même pas le travail sur moniteur étalonné d'avoir ces écarts, sauf dans le cas de figure où on a deux moniteurs de technologie différente placés l'un à côté de l'autre.
 

POSTREACT(ions) SUMMARY

Emmanuel Piat
67 dB
Messages : 146
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Cela désigne le fait que lorsque les couleurs primaires ont un spectre très étroit, la perception de la couleur commence à varier d'un individu à l'autre en fonction de la constitution biologique des cellules de notre rétine.
Je ne suis pas du tout un expert en science de la colorimétrie mais je m'interroge par rapport à ce qui est quoté au-dessus. A la base, la perception de la couleur est un phénomène subjectif propre à chacun. Pour définir la notion de couleur de manière objective, il a fallu construire un Observateur Standard et un modèle de perception associé. C'est la CIE (Commission Internationale de l'Éclairage) qui a fait cette démarche pour la première fois en 1931 (d'autres modèles ont suivi plus tard). Cette démarche a été particulièrement compliquée à mettre en place pour aboutir à l'espace CIE-XYZ 1931. Elle s'est appuyée sur une base expérimentale qui est en faite très pauvre puisque seulement 17 personnes ont participé aux expériences fondamentales qui ont permis dans un premier temps de définir l'espace CIE-RGB :

- 10 observateurs pour l'expérience de W.D. Wright (menée à l'Imperial College entre 1928 et 1929)
- 7 observateurs pour l'expérience de J. Guild (menée au National Physical Laboratory entre 1926 et 1928).

Ce faible nombre de personne s'explique par le fait que ces expériences de "color-matching" (égalisation de couleurs) étaient extrêmement longues et fastidieuses à mettre en place. Chaque "observateur" devait ajuster manuellement des intensités de lumières primaires (rouge, vert, bleu) pour faire correspondre le résultat avec une couleur test (vu sous un angle restreint de 2° pour exciter uniquement la fovea). Malgré ce faible nb d'expériences, les résultats obtenus furent très proches et la CIE a jugé suffisant de les moyenner pour définir son Observateur Standard et l'espace colorimétrique CIE-XYZ 1931.

Ce qui m'interpelle dans les expériences de W.D. Wright et J. Guild, c'est que les primaires étaient avec un spectre très étroit (utilisation de sources filtrées produisant des raies spectrales reproductibles en labo). Par exemple J. Guild a utilisé des primaires centrées sur 435.8, 546.1 et 700 nm selon ce papier :
https://www.academia.edu/96710712/How_t ... Guild_data
Pour W.D. Wright, les primaires étaient centrées autour de 460 nm, 530 nm, et 650 nm mais peut être plus large (à confirmer car source IA).

Donc la base expérimentale qui est à l'origine de la science de la colorimétrie semble avoir été faite avec des primaires ayant des spectres particulièrement étroits pour J. Guild ... Je ne sais pas quoi en penser.

Il y a un blog qui explique en détail toute la construction de l'espace CIE-XYZ 1931. J'ai commencé à le lire :
https://modele-cie-1931.blogspot.com/

Edit : ce blog donne des primaires différentes pour J. Guild et les mêmes pour W.D. Wright :
https://modele-cie-1931.blogspot.com/20 ... guild.html
 

POSTREACT(ions) SUMMARY

Pio2001
130 dB
Messages : 596
Enregistré le : 18 mars 2024, 00:29

Re: Les sondes de calibration

Message par Pio2001 »

Toute la question est de connaître l'incertitude de mesure, en tenant compte de tout la chaîne, depuis l'appareil de mesure jusqu'à l'oeil qui regarde le diffuseur d'image calibré.

Le sujet de la discussion est de savoir si les sondes de calibration donnent des résultats corrects, ou mieux : d'estimer de combien elles se trompent. L'idée de construire un spectromètre DIY, que tu proposes, permettrait d'avoir une idée en ce qui concerne la mesure de la couleur. Pour cela, on mesurerait les coordonnées chromatiques de quelques couleurs avec une sonde donnée, et avec ce spectro, et on répèterait l'opération sur différents types d'écrans : LED, LED wide gamut, Oled, QD-Oled...
En ce qui me concerne je ne serais pas d'une grande aide, je ne possède aucune sonde.

Un deuxième volet serait d'estimer la précision des sondes de calibration en très basse lumière. Cela devient critique avec les images HDR, qui ouvrent la possibilité d'avoir un rendu maîtrisé sur des images extrêmement sombres. Je n'ai pas encore vu de démo d'une image de la voie lactée dans le ciel nocturne, projetée dans le noir absolu, au niveau de luminosité réel. Je ne suis même pas sûr que les 10 bits du HDR10 suffiraient. Mais la technologie Oled en a l'air tout-à-fait capable.

En sujets annexes, il serait intéressant de mieux comprendre le lien entre la mesure et ce qu'on voit. On dit toujours qu'un écart de 3 deltas représente le seuil de perception humaine. On pourrait déjà vérifier cela, d'une part en retrouvant la source de cette info, d'autre part, en testant nous-mêmes. Ca, ce devrait être assez facile à mettre en oeuvre.

Enfin, le cas d'échec de métamérisme dont je parle plus haut me tient à coeur en raison de l'anecdote que je raconte ici dans le message d'introduction : viewtopic.php?t=438
On peut aussi tester cela par nous-mêmes. Pour cela il faut deux écrans ou diffuseurs d'image radicalement différents, et il faut être plusieurs.
 

POSTREACT(ions) SUMMARY

Emmanuel Piat
67 dB
Messages : 146
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Ces points pourront être approfondis ds le futur si on arrive à disposer d'un instrument de mesure fonctionnel.

Le blog cité au dessus donne pas mal d'infos sur la construction historique de l'espace CIE XYZ et CIE xyY. J'ai appris bcp de choses que j'ignorais. La démarche apparait assez logique après coup : il s'agissait de trouver des primaires fictives telles que leur triangle de Maxwell contienne la totalité des couleurs pures dites "spectrales" (= couleurs de l'arc en ciel ou celles obtenues par exemple avec un prisme) qui forment le spectrum locus. De ce fait, ds cet espace, les composantes trichromatiques de toutes les couleurs visibles sont forcément positives (ie il n'y a pas de couleur hors-espace XYZ, c'est à dire en dehors du cube XYZ). Il y avait aussi d'autres contraintes à respecter liées à la luminance (il faut que j'approfondisse pour mieux comprendre ce point). La difficulté de cette construction mathématique est qu'il fallait arriver à définir l'espace XYZ en partant des 2 espaces RGB différents liés aux observations réalisées par Wright et Guild qui étaient la seule base de travail solide dispo pour ancrer ds le réel le futur modèle colorimétrique. Donc, il a déjà fallu définir un nouvel espace CIE RGB intermédiaire de travail et remettre dedans toute la data collectée (pour la moyenner) et comme le triangle de Maxwell de cet espace ne contenait pas tout le spectrum locus, il a fallu en déduire l'espace XYZ qui résolvait (entre autre) ce pb. Les primaires fictives choisies obéissent à une certaine logique (deux sont notamment "éteintes" car situées dans le plan de luminance nulle) mais il n'y a cependant pas de solution mathématique unique à ce pb. La CIE a choisi une solution qui marche au milieu d'une infinité d'autres possibles.

Wikiperia résume certains points ici :
https://fr.wikiversity.org/wiki/Colorim ... E_XYZ_1931

Et concernant l'analyse colorimétrique, il y a plein d'infos très bien vulgarisées en doc pdf sur le site de Konica Minolta ici :
https://sensing.konicaminolta.eu/mi-fr/ ... ie-couleur
 

POSTREACT(ions) SUMMARY

Emmanuel Piat
67 dB
Messages : 146
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Je rentre un peu dans le dur ... Le point le plus délicat de ce type d'approche DIY concerne la calib de la chaine de mesure : collimateur + fibre + spectro.

Toutes les calib évoquées ici doivent être faites dans de bonnes conditions environnementales pour éviter au maximum les perturbations influentes. Ca concerne entre autres les conditions vibratoires, la température et l'humidité. Il faut une température et une humidité stable et le moins de vibrations possible. Evitez également de marcher pendant les mesures. En labo, on opère en env. contrôlé et sur table anti-vibration.

Quand on achète un spectro de labo à "prix raisonnable", la seule chose qui est calibrée, c'est la correspondance n° de pixel/longueur d'onde. On appelle ça la "wavelength calibration". C'est simple à comprendre : qd la lumière est décomposée dans le spectro et atterit sur le capteur CCD qui est une ligne de pixels, il faut savoir quelle longueur d'onde lambda correspond à quel pixel. Ca permet de calibrer l'axe des abscisses du spectre. Les spectro de labo permettent en général de refaire facilement cette calibration en utilisant des sources de lumière qui émettent plein de raies à des longueurs d'onde très précises. Ce type de source est fiable et ne coute pas cher (une centaine d'euros en Chine, voir moins). La recalibration consiste alors à trouver les paramètres d'une formule non-linéaire lamdba = f(p) ou p est le numéro du pixel.

Là où les problèmes arrivent, c'est que la réponse à la lumière de chaque pixel CCD n'est par contre pas calibrée d'origine. Certain pixel peuvent être plus sensibles que d'autres au petit intervalle de longueur d'onde qui l'excite pendant un temps donné via le shutter du spectro (= temps d'intégration). Autrement dit, l'énergie lumineuse récoltée par le pixel CCD n'est pas calibrée. Ca correspond à l'axe des ordonnées du spectre et ça signifie que la forme du spectre est déformée de manière non uniforme. Deux types de calibration résolvent ce problème :

1. la calibration relative de l'intensité qui consiste juste à corriger la forme du spectre pour qu'elle soit correcte.
2. la calibration absolue de l'intensité, dite radiométrique, qui permet en plus d'associer une grandeur physique à l'axe des ordonnées.

https://www.electrooptics.com/sites/def ... ometry.pdf

La calib absolue de l'intensité est totalement hors de portée de l'amateur car elle nécessite d'avoir une source de lumière étalonnée de manière traçable au système international d'unité (SI). Ces sources sont hors de prix et leur traçabilité n'est garantie que sur une courte période de temps. On peut aussi la faire réaliser par un labo accrédité ou par la société qui fabrique le spectro mais elle n'a de sens que si toute la chaine de mesure est étalonnée par la même occasion car chaque élément va jouer un role. Sans cette calibration, il est impossible de mesurer précisément la luminance de l'écran en cd/m² qui est une unité photométrique déduite des unités radiométriques.

La calib relative de l'intensité est nécessaire pour calculer correctement les coordonnées chromatiques x,y et elle permet aussi de connaitre la luminance relative Y_rel qu'on pourra par exemple assigner à 100% ou 1.0 pour le blanc. C'est suffisant pour déterminer la courbe de gamma.

Si on veut qd même connaitre la luminance du blanc en cd/m² pour voir comment le projo se situe par rapport aux recommandations en SDR/HDR (48/100 cd/m² par exemple), on peut convenir qu'une précision de l'ordre de qq cd/m² est suffisante car l'oeil travaille surtout en relatif. Dans ce cas, on peut utiliser un colorimètre peu cher pour mesurer la luminance Y du blanc d'un moniteur (on supposera que la sonde fonctionne correctement sur ce type de display) et refaire la mesure avec le spectro pour déterminer le gain à appliquer sur tout le spectre pour que Y_rel matche sur Y. La précision souhaitée étant faible, on peut même figer en dur cette valeur... De toute façon, comme à la fin, chacun ajuste la luminosité de l'image comme bon lui semble, l'important, c'est d'avoir un ordre de grandeur pour se repérer et vérifier qu'on ne fait pas n'importe quoi. Roland va me tuer, mais j'assume ;)

Le problème à résoudre est donc surtout la calibration relative de l'intensité et ça n'a rien de simple. Le 1er truc à réaliser c'est qu'en salle dédiée, la seule source de lumière est le projo. La forme du spectre n'a donc besoin d'être correcte que pour les longueurs d'onde générées par le(s) laser(s) et la roue de phosphore du projo s'il y en a une. Avant de continuer, je précise que je ne suis absolument pas un expert de la question et que je ne sais pas si ce type de calib peut être réalisé avec une précision suffisante en DIY. D'après le peu que j'ai investigué pour l'instant sans en référer à des personnes compétentes, une calib relative peut être faite en se basant sur le spectre de radiation du corps noir. C'est très classique car :
(i) la formulation mathématique de ce spectre est parfaitement connue et ne dépend que d'un paramètre qui est une température T
(ii) les lampes Halogènes à filament de tungstène ont un rayonnement très proche du corps noir avec T qui correspond alors à une température de couleur. T est connue soit précisemment (matos de labo), soit avec une incertitude faible (bonne marque en rayon bricolage).

Côté matos de labo, voici le prix de ce type de lampe avec T = 2796K :
https://www.thorlabs.com/item/sls201l_m
et on trouve plein d'info très utiles sur le corps noir ds son manuel (voir lien précédent).

Oui ce n'est pas donné ... J'ai le modèle précédent qui a été arrêté en 2016 et que j'ai utilisé il y a plus de 15 ans. Elle fonctionne encore (je l'ai juste l'allumé pour vérifier que j'avais de la lumière en bout de fibre ...) :
https://www.thorlabs.com/item/SLS201_M

Si on veut un modèle petit prix qui sort également sur une fibre, il y a ceci chez Thunder Optics :
https://thunderoptics.fr/product/halogen-light-source/

qui est à 99€ ici:
https://www.sdofx.net/produit-p-886448.html

Dans ce type de produit, l'important c'est la stabilité en tension de l'alim pour avoir T le plus constant possible. Plus c'est stable mieux c'est (un changement d'alim peut être envisagé pour améliorer la stabilité). Dans la lampe de labo de Thorlabs, on peut noter qu'il y a une régulation en courant pour que la luminosité reste constante (elle est mesurée par une photodiode).

Si on veut tenter le DIY pur, il suffit d'acheter une ampoule halogène-tungstène basse tension (qq euros) et de l'alimenter avec une alim DC stabilisée de qualité et d'avoir un temps de chauffe de 45 min. L'ampoule Osram Halostar Standard 64425 (12V, 20W) a apparemment un filament de tungstène très pur et une géométrie stable. Vous pouvez en acheter 6 d'un coup ici :

https://www.amazon.fr/64425-AX-FS1-OSRA ... B07PH2JX84

Avec 6 exemplaires, on peut comparer les réponses pour voir la stabilité du spectre en fct des tolérances de fab et envisager un moyennage. T n'est évidemment pas parfaitement connu (proche de 2800K semble-t-il) et il peut y avoir un peu de dispersion ... Dans ce type d'approche DIY, la difficulté c'est la mise en oeuvre expérimentale : il ne faut aucune lumière parasite et donc un noir complet autour de l'ampoule. S'il y a des réflexions, il faut qu'elles soient neutres d'un point de vu spectral ou qu'elles renvoient très peu d'énergie. La fibre qui collecte la lumière doit aussi être parfaitement immobile et placée à quelques cm de l'ampoule. C'est pourquoi, on utilise en général en plus une sphère intégrante afin d'isoler la source lumineuse à l'intérieur d'une cavité et faire diffuser et ressortir le flux lumineux en un point donné sur un connecteur pour fibre optique. Tout ça a un coût malheureusement. Néanmoins, en s'y prenant bien, on peut peut être obtenir un résultat correct sans une sphère intégrante. Ayant zéro expérience sur le sujet, je ne peux rien dire.

La correction du spectro à l'aide d'un spectre de corps noir est basique à mettre en place et je ne la détaille pas pour l'instant. Il y a qq subtilités sur la prise en compte du temps d'intégration ainsi que sur la mesure du dark noise qu'il faut tjrs faire avec un spectro. On peut noter que la correction sera de mauvaise qualité ds le bas du spectre visible car l'halogène-tunsgtène à 2800K rayonne très peu dans cette zone. Sa réponse sera donc noyée dans le bruit du spectro pour les faibles longueurs d'ondes. Avec des primaires lasers, ça ne devrait pas géner car le bleu est déjà un peu plus loin (à voir) ...

Voici un document qui m'a aidé dans mes 1ères recherches d'infos (avec une mise en oeuvre avec et sans sphère intégrante que je trouve assez limite, no comment. Ca donne néanmoins le principe) :
https://phitem.univ-grenoble-alpes.fr/m ... 916119-pdf

Toutes ces approches permettent de calibrer le spectro avec sa fibre optique. Mais il y a aussi le collimateur qui peut influer. Pour le moment, je n'ai pas investigué le choix du collimateur car je ne suis pas opticien. Sans collimateur, l'ouverture numérique de la fibre optique adaptée au spectro que j'envisage fait qu'elle va collecter la lumière sur un FOV de 25° environ, ce qui est bcp trop. Il faut donc mettre un collimateur pour régler le FOV entre 2 et 4°. Tout le pb est d'en trouver un pas trop cher et suffisant pour cette appli.

Côté calib avec le collimateur, on peut noter que la lampe de chez thorlabs a des options qui permettent de générer un flux lumineux vers un collimateur. Sinon, on devrait pouvoir faire une mesure avec et sans collimateur en restant proche de l'écran pour en déduire une correction spectrale supplémentaire si jamais le collimateur influe suffisamment sur le spectre pour changer les coordonnées chromatiques x et y. A voir ...

Ce qu'il faut déduire de ce post, c'est que ce projet n'a rien de simple et que pour le moment, il est impossible de savoir s'il a des chances d'aboutir ou pas.
 

POSTREACT(ions) SUMMARY

Modifié en dernier par Emmanuel Piat le 31 janv. 2026, 23:04, modifié 2 fois.
Emmanuel Piat
67 dB
Messages : 146
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Si la partie matérielle donne satisfaction dans le futur, il va falloir piloter le spectro avec une ergonomie acceptable pour lancer des séries de mesures. J'ai dans l'idée d'utiliser le macro langage AutoIT pour lancer la géné des patterns, piloter le soft du spectro, lancer les calculs et faire des affichages. Certaines fonctions/calculs/affichage pourraient être sous-traitées à du code exécutable déjà existant (ArgyllCMS a des fonctionnalités intéressantes) et complété par un code en python, en scilab, .... Ne comptez pas sur moi pour faire un truc bien fini, bien léché, etc. car j'ai passé l'âge pour tout ça. Si on utilise un macro langage, chacun pourra faire les modifs qu'il veut sans être un pro de la programmation et se développer ces propres outils ...

A l'heure de l'IA, la manière de programmer change aussi radicalement tellement l'IA facilite le travail de codage. A titre d'exemple, j'ai récupéré les coordonnées X,Y,Z du spectrum locus avec un pas de 1 nm (fichier ciexyz31.txt) sur ce site dédié à du code python : https://www.f-legrand.fr/scidoc/docmml/ ... iexyz.html
puis à l'aide de Google Gemini, j'ai lu le fichier et généré un nouveau fichier CIExy1931.txt avec uniqt les coordonnées chromatiques x,y pour pouvoir dessiner le spectrum locus. Ca m'a pris 5 min. Ensuite, juste pour voir, j'ai demandé à Google Gemini de me faire une macro autoIT qui lise ce nouveau fichier, affiche le spectrum locus, les gamuts standards, le D65, le tout de manière interactive avec la possibilité de zoomer (roulette), de déplacer le diagramme (clic gauche), de revenir à la taille initiale (clic droit) et d'afficher les coord chromatiques de l'emplacement de la souris. Il a fallu que j’interagisse un peu avec l'IA pour affiner les affichages et corriger certains bugs (parfois en reprenant la main sur le coding), mais globalement, en très peu de temps, il m'a fait un truc super alors que autoIT, ce n'est pas franchement un langage pour faire ce type de dév ... Et ce d'autant plus qu'avoir un affichage cohérent de la couleur du spectrum locus en partant de ses coord. chromatiques x,y (totalement en dehors du gamut du moniteur) est qd même un truc bien velu. Pareil pour la droite des pourpres. Mais après quelques itérations, il s'en est bien sorti ... Bref, on change d'époque.

Image
 

POSTREACT(ions) SUMMARY

Modifié en dernier par Emmanuel Piat le 31 janv. 2026, 23:25, modifié 5 fois.
Emmanuel Piat
67 dB
Messages : 146
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Le fichier CIExy1931.txt

Code : Tout sélectionner

360,  0.175560231756,  0.005293837011
361,  0.175482527710,  0.005286339106
362,  0.175400022357,  0.005278642043
363,  0.175317049459,  0.005270968794
364,  0.175236739464,  0.005263493923
365,  0.175161218506,  0.005256345915
366,  0.175087794161,  0.005246844528
367,  0.175014938868,  0.005235570329
368,  0.174945189439,  0.005226156911
369,  0.174880124779,  0.005220784940
370,  0.174820607680,  0.005220600938
371,  0.174770252214,  0.005228667217
372,  0.174722036674,  0.005237520177
373,  0.174665367951,  0.005236160663
374,  0.174595050266,  0.005218322253
375,  0.174509720869,  0.005181639770
376,  0.174409249352,  0.005126760898
377,  0.174308458224,  0.005067592520
378,  0.174221772058,  0.005017031536
379,  0.174155594353,  0.004981444911
380,  0.174112234426,  0.004963725981
381,  0.174088307167,  0.004963600065
382,  0.174072590902,  0.004972542618
383,  0.174057024293,  0.004982036139
384,  0.174036270610,  0.004985961429
385,  0.174007917516,  0.004980548623
386,  0.173971929755,  0.004964083096
387,  0.173931678596,  0.004943406649
388,  0.173889035777,  0.004926048511
389,  0.173845256167,  0.004916093071
390,  0.173800772621,  0.004915411905
391,  0.173754438047,  0.004924853695
392,  0.173705352749,  0.004937098371
393,  0.173655189400,  0.004943790983
394,  0.173606018217,  0.004939895271
395,  0.173559906527,  0.004923202577
396,  0.173514449742,  0.004895446713
397,  0.173468498200,  0.004864579139
398,  0.173423666226,  0.004836312122
399,  0.173379996017,  0.004813338324
400,  0.173336865481,  0.004796743447
401,  0.173291285659,  0.004785845648
402,  0.173237920453,  0.004778887932
403,  0.173174238776,  0.004775130800
404,  0.173101012209,  0.004774030674
405,  0.173020965455,  0.004775050362
406,  0.172934256851,  0.004781147172
407,  0.172842756135,  0.004790792949
408,  0.172751152603,  0.004798762099
409,  0.172662105581,  0.004802084356
410,  0.172576550849,  0.004799301920
411,  0.172489477382,  0.004795254364
412,  0.172395603384,  0.004796118589
413,  0.172296001755,  0.004802629473
414,  0.172192360362,  0.004814885214
415,  0.172086630755,  0.004832524218
416,  0.171982445938,  0.004855010169
417,  0.171871019446,  0.004888531922
418,  0.171741213706,  0.004939332457
419,  0.171587239365,  0.005010344207
420,  0.171407433863,  0.005102170974
421,  0.171206113462,  0.005211257777
422,  0.170992574222,  0.005333907762
423,  0.170770596368,  0.005470121247
424,  0.170540661924,  0.005620969933
425,  0.170300988780,  0.005788504996
426,  0.170050158668,  0.005973895108
427,  0.169785868751,  0.006176807488
428,  0.169504602532,  0.006398036907
429,  0.169202921712,  0.006638705918
430,  0.168877520671,  0.006900243888
431,  0.168524660344,  0.007184043888
432,  0.168146145462,  0.007490679666
433,  0.167746219827,  0.007820818488
434,  0.167328325745,  0.008175399675
435,  0.166895290352,  0.008555606361
436,  0.166446327135,  0.008964400418
437,  0.165976758231,  0.009401716227
438,  0.165483299011,  0.009864680972
439,  0.164962663720,  0.010350743541
440,  0.164411756375,  0.010857558277
441,  0.163828432762,  0.011384865616
442,  0.163209895954,  0.011937385815
443,  0.162552139507,  0.012520029918
444,  0.161851438065,  0.013137307095
445,  0.161104579580,  0.013793358822
446,  0.160309595019,  0.014491378166
447,  0.159465945758,  0.015232064644
448,  0.158573111076,  0.016015156416
449,  0.157631165578,  0.016839870972
450,  0.156640932577,  0.017704804991
451,  0.155605095583,  0.018608606524
452,  0.154524612495,  0.019555697805
453,  0.153397229336,  0.020553733530
454,  0.152219236228,  0.021611711021
455,  0.150985408376,  0.022740193292
456,  0.149690564759,  0.023950330196
457,  0.148336817068,  0.025247398432
458,  0.146928226501,  0.026635185858
459,  0.145468371779,  0.028118433330
460,  0.143960396040,  0.029702970297
461,  0.142405090190,  0.031393583986
462,  0.140795646665,  0.033213154606
463,  0.139120682427,  0.035200572827
464,  0.137363757935,  0.037403090444
465,  0.135502671200,  0.039879121472
466,  0.133509340956,  0.042692390011
467,  0.131370635236,  0.045875975223
468,  0.129085786557,  0.049449810660
469,  0.126662156977,  0.053425919773
470,  0.124118476728,  0.057802513374
471,  0.121468583913,  0.062587672067
472,  0.118701276452,  0.067830443532
473,  0.115807358768,  0.073580707973
474,  0.112776054848,  0.079895822896
475,  0.109594323616,  0.086842511183
476,  0.106260735318,  0.094486072204
477,  0.102775862947,  0.102863738818
478,  0.099127599902,  0.112007033037
479,  0.095304056215,  0.121944863255
480,  0.091293507002,  0.132702042487
481,  0.087082431727,  0.144316582680
482,  0.082679534482,  0.156865958077
483,  0.078115985733,  0.170420486477
484,  0.073437259905,  0.185031880527
485,  0.068705921291,  0.200723217728
486,  0.063993023687,  0.217467605405
487,  0.059315827981,  0.235253740241
488,  0.054666522876,  0.254095590747
489,  0.050031497058,  0.274001803220
490,  0.045390734675,  0.294975964606
491,  0.040757315336,  0.316981080840
492,  0.036195109154,  0.339899934414
493,  0.031756470379,  0.363597693246
494,  0.027494190535,  0.387921328281
495,  0.023459942547,  0.412703479094
496,  0.019704636303,  0.437755888652
497,  0.016268471267,  0.462954507989
498,  0.013183041153,  0.488207068412
499,  0.010475700683,  0.513404245160
500,  0.008168028005,  0.538423070512
501,  0.006284851573,  0.563068456322
502,  0.004875429993,  0.587116438045
503,  0.003982425352,  0.610447497639
504,  0.003636384225,  0.633011382751
505,  0.003858520900,  0.654823151125
506,  0.004645713233,  0.675898458599
507,  0.006010913072,  0.696120061336
508,  0.007988395829,  0.715341516256
509,  0.010603290554,  0.733412942652
510,  0.013870246085,  0.750186428039
511,  0.017766124206,  0.765612154434
512,  0.022244205695,  0.779629923201
513,  0.027273262420,  0.792103502831
514,  0.032820357522,  0.802925672990
515,  0.038851802403,  0.812016021362
516,  0.045327984829,  0.819390800456
517,  0.052176690905,  0.825163542583
518,  0.059325533352,  0.829425776297
519,  0.066715886027,  0.832273739284
520,  0.074302424773,  0.833803091340
521,  0.082053395236,  0.834090314505
522,  0.089941739585,  0.833288918896
523,  0.097939750111,  0.831592666499
524,  0.106021107332,  0.829178186631
525,  0.114160719607,  0.826206959781
526,  0.122347367034,  0.822770399564
527,  0.130545668138,  0.818927852909
528,  0.138702349214,  0.814774382595
529,  0.146773215738,  0.810394606548
530,  0.154722061216,  0.805863545426
531,  0.162535424655,  0.801238480414
532,  0.170237195479,  0.796518542245
533,  0.177849528012,  0.791686579060
534,  0.185390757399,  0.786727772821
535,  0.192876097878,  0.781629216363
536,  0.200308798145,  0.776399416051
537,  0.207689989667,  0.771054798660
538,  0.215029550006,  0.765595096061
539,  0.222336603758,  0.760019999741
540,  0.229619672650,  0.754329089903
541,  0.236884720598,  0.748524465175
542,  0.244132556474,  0.742613991681
543,  0.251363408871,  0.736605581362
544,  0.258577508455,  0.730506601910
545,  0.265775084971,  0.724323924930
546,  0.272957603511,  0.718062186417
547,  0.280128942482,  0.711724734569
548,  0.287292409080,  0.705316273888
549,  0.294450280894,  0.698842022022
550,  0.301603799396,  0.692307762372
551,  0.308759923093,  0.685712060607
552,  0.315914394449,  0.679063479991
553,  0.323066265382,  0.672367397969
554,  0.330215545357,  0.665628025417
555,  0.337363332851,  0.658848290140
556,  0.344513198355,  0.652028209218
557,  0.351664411297,  0.645172174245
558,  0.358813686684,  0.638287336538
559,  0.365959357349,  0.631379080900
560,  0.373101543868,  0.624450859797
561,  0.380243835464,  0.617502152174
562,  0.387378977959,  0.610541802455
563,  0.394506548797,  0.603571336792
564,  0.401625918831,  0.596592421963
565,  0.408736255706,  0.589606868860
566,  0.415835774706,  0.582617968057
567,  0.422920926710,  0.575630688323
568,  0.429988626512,  0.568648891271
569,  0.437036422594,  0.561675774049
570,  0.444062463582,  0.554713902809
571,  0.451064940951,  0.547766044129
572,  0.458040665647,  0.540836629164
573,  0.464986332978,  0.533930053057
574,  0.471898743900,  0.527050569219
575,  0.478774791158,  0.520202307211
576,  0.485611587052,  0.513388660962
577,  0.492404982334,  0.506614924421
578,  0.499150668334,  0.499887340438
579,  0.505845283794,  0.493211178108
580,  0.512486366782,  0.486590788061
581,  0.519072510401,  0.480028612176
582,  0.525600488985,  0.473527373976
583,  0.532065599161,  0.467091363704
584,  0.538462761903,  0.460725253841
585,  0.544786505595,  0.454434114569
586,  0.551031050212,  0.448224502910
587,  0.557192906096,  0.442099139484
588,  0.563269312373,  0.436058061737
589,  0.569256824125,  0.430101973605
590,  0.575151311365,  0.424232234925
591,  0.580952605161,  0.418446879817
592,  0.586650186891,  0.412758421192
593,  0.592224800071,  0.407189528585
594,  0.597658162105,  0.401761934972
595,  0.602932785576,  0.396496633573
596,  0.608035111132,  0.391409151708
597,  0.612976999571,  0.386486157332
598,  0.617778725585,  0.381705756829
599,  0.622459295079,  0.377047286381
600,  0.627036599764,  0.372491145218
601,  0.631520942860,  0.368026010822
602,  0.635899819576,  0.363665402433
603,  0.640156159548,  0.359427724304
604,  0.644272960657,  0.355331369772
605,  0.648233106014,  0.351394916305
606,  0.652028235718,  0.347627960748
607,  0.655669179250,  0.344018294844
608,  0.659166134693,  0.340553225412
609,  0.662528222054,  0.337220992607
610,  0.665763576238,  0.334010651155
611,  0.668874143664,  0.330918553002
612,  0.671858667148,  0.327947074300
613,  0.674719511112,  0.325095182004
614,  0.677458888275,  0.322362076689
615,  0.680078849722,  0.319747217069
616,  0.682581574187,  0.317248705962
617,  0.684970601449,  0.314862815015
618,  0.687250454557,  0.312585963996
619,  0.689426303028,  0.310414011286
620,  0.691503972962,  0.308342260557
621,  0.693489634973,  0.306365690818
622,  0.695388638102,  0.304478555200
623,  0.697205569779,  0.302675072704
624,  0.698943910386,  0.300950424979
625,  0.700606060606,  0.299300699301
626,  0.702192588541,  0.297724511863
627,  0.703708691019,  0.296217118054
628,  0.705162853424,  0.294770292086
629,  0.706563246694,  0.293376153173
630,  0.707917791622,  0.292027108935
631,  0.709230985414,  0.290718622165
632,  0.710500394495,  0.289452941203
633,  0.711724146175,  0.288232104799
634,  0.712901231130,  0.287057320364
635,  0.714031597117,  0.285928873546
636,  0.715117053483,  0.284845106129
637,  0.716159198599,  0.283804449182
638,  0.717158613642,  0.282806411931
639,  0.718116142602,  0.281850256563
640,  0.719032941630,  0.280934951519
641,  0.719911552942,  0.280058078207
642,  0.720752706640,  0.279218959823
643,  0.721554522487,  0.278419514685
644,  0.722314915560,  0.277661870368
645,  0.723031602573,  0.276948357748
646,  0.723701916040,  0.276281836244
647,  0.724328018926,  0.275660074921
648,  0.724914405134,  0.275078184055
649,  0.725466776098,  0.274529977978
650,  0.725992317542,  0.274007682458
651,  0.726494726714,  0.273505273286
652,  0.726974970469,  0.273025029531
653,  0.727431838038,  0.272568161962
654,  0.727864310793,  0.272135689207
655,  0.728271728272,  0.271728271728
656,  0.728656487100,  0.271343512900
657,  0.729020030309,  0.270979969691
658,  0.729360950695,  0.270639049305
659,  0.729677783238,  0.270322216762
660,  0.729969012838,  0.270030987162
661,  0.730233949141,  0.269766050859
662,  0.730474165302,  0.269525834698
663,  0.730693306724,  0.269306693276
664,  0.730896252243,  0.269103747757
665,  0.731089395585,  0.268910604415
666,  0.731279635919,  0.268720364081
667,  0.731467050901,  0.268532949099
668,  0.731649970922,  0.268350029078
669,  0.731826333485,  0.268173666515
670,  0.731993299832,  0.268006700168
671,  0.732150422162,  0.267849577838
672,  0.732299831085,  0.267700168915
673,  0.732442822871,  0.267557177129
674,  0.732581493590,  0.267418506410
675,  0.732718894009,  0.267281105991
676,  0.732858647268,  0.267141352732
677,  0.733000205253,  0.266999794747
678,  0.733141671137,  0.266858328863
679,  0.733281178935,  0.266718821065
680,  0.733416967226,  0.266583032774
681,  0.733550585848,  0.266449414152
682,  0.733683296436,  0.266316703564
683,  0.733812716688,  0.266187283312
684,  0.733935690314,  0.266064309686
685,  0.734047300312,  0.265952699688
686,  0.734142556897,  0.265857443103
687,  0.734221470251,  0.265778529749
688,  0.734286446367,  0.265713553633
689,  0.734340919959,  0.265659080041
690,  0.734390164995,  0.265609835005
691,  0.734437712656,  0.265562287344
692,  0.734482170411,  0.265517829589
693,  0.734522930552,  0.265477069448
694,  0.734559518422,  0.265440481578
695,  0.734591661643,  0.265408338357
696,  0.734621094713,  0.265378905287
697,  0.734648896836,  0.265351103164
698,  0.734673378011,  0.265326621989
699,  0.734690045444,  0.265309954556
700,  0.734690023258,  0.265309976742
701,  0.734689987139,  0.265310012861
La macro autoIT (DiagChromaticite.au3) :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
#include <WinAPIFiles.au3>

; --- Lecture des coordonnées chromatiques x,y du spectrum locus ---

; 1. Définition du chemin local
Local $sFileName = "CIExy1931.txt"
Local $sFilePath = @ScriptDir & "\" & $sFileName

; 2. Lecture du contenu du fichier ciexyz31.txt
Local $sRawText = FileRead($sFilePath)
If @error Or $sRawText = "" Then
    Exit MsgBox(16, "Erreur", "Impossible de lire le fichier : " & $sFileName & @CRLF & "Vérifiez qu'il est bien dans le même dossier que ce script.")
EndIf

; 3. On découpe sur les sauts de ligne
Local $aLines = StringSplit($sRawText, @LF)

; 4. Initialisation du tableau Global
Global $aSpec[$aLines[0]][3]

; 5. Remplissage du tableau via Expression Régulière
For $i = 1 To $aLines[0]
    ; \S+ capture tout ce qui n'est pas un espace (les nombres)
    Local $aColumns = StringRegExp($aLines[$i], "(\S+)", 3)

    If UBound($aColumns) >= 3 Then
        $aSpec[$i-1][0] = Number($aColumns[0]) ; Longueur d'onde
        $aSpec[$i-1][1] = Number($aColumns[1]) ; x
        $aSpec[$i-1][2] = Number($aColumns[2]) ; y
    EndIf
Next

; --- CONFIGURATION DES ESPACES ---
Global $aData[4][6] = [ _
    [0.64, 0.33, 0.30, 0.60, 0.15, 0.06], _ ; sRGB / BT709
    [0.64, 0.33, 0.21, 0.71, 0.15, 0.06], _ ; Adobe RGB
    [0.680, 0.320, 0.265, 0.690, 0.150, 0.060], _ ; Display P3-D65
    [0.708, 0.292, 0.170, 0.797, 0.131, 0.046]  _ ; BT2020
]

; --- NAVIGATION ---
Global $fZoom = 1.0
Global $iOffX = 0
Global $iOffY = 0
Global $iLastIdx = 0
Global $bIsDragging = False
Global $aPrevMouse

; --- INTERFACE ---
Global $iW = 600
Global $iH = 780
Global $hGUI = GUICreate("CIE 1931 - Technical Reference", $iW, $iH)
GUISetBkColor(0x151515)

Global $hCombo = GUICtrlCreateCombo("sRGB (BT 709)", 10, 660, 200, 30)
GUICtrlSetData(-1, "Adobe RGB (1998)|Display P3-D65|BT 2020")

Global $hStatus = GUICtrlCreateLabel("x = 0.0000, y = 0.0000", 220, 665, 200, 20)
GUICtrlSetColor(-1, 0x00FF00)

Global $hBtnSave = GUICtrlCreateButton("Exporter PNG", 430, 660, 150, 25)

GUISetState(@SW_SHOW)

_GDIPlus_Startup()
Global $hGraphicGUI = _GDIPlus_GraphicsCreateFromHWND($hGUI)
Global $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, 650)
Global $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)

Global $iMargin = 60
Global $iSize = 480
Global $fMax = 0.9

; --- DONNÉES SPECTRALES ---

GUIRegisterMsg(0x020A, "WM_MOUSEWHEEL")
_Render(0)

While 1
    Local $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            _Cleanup()
            Exit
        Case $hCombo
            $iLastIdx = _GetComboIndex(GUICtrlRead($hCombo))
            _Render($iLastIdx)
        Case $GUI_EVENT_SECONDARYDOWN
            $fZoom = 1.0
            $iOffX = 0
            $iOffY = 0
            _Render($iLastIdx)
        Case $hBtnSave
            _Save()
    EndSwitch

    Local $aMouse = GUIGetCursorInfo($hGUI)
    If IsArray($aMouse) Then
        If $aMouse[2] = 1 Then
            If $bIsDragging = False Then
                $bIsDragging = True
                $aPrevMouse = $aMouse
            Else
                $iOffX = $iOffX + ($aMouse[0] - $aPrevMouse[0])
                $iOffY = $iOffY + ($aMouse[1] - $aPrevMouse[1])
                $aPrevMouse = $aMouse
                _Render($iLastIdx)
            EndIf
        Else
            $bIsDragging = False
        EndIf

        Local $fDenom = $iSize * $fZoom
        Local $fx = (($aMouse[0] - $iMargin - $iOffX) / $fDenom) * $fMax
        Local $fy = ($iMargin + $iSize + $iOffY - $aMouse[1]) / $fDenom * $fMax

        If $aMouse[1] < 650 Then
            GUICtrlSetData($hStatus, StringFormat("x = %.4f, y = %.4f", $fx, $fy))
        EndIf
    EndIf
    _Update()
    Sleep(10)
WEnd

Func _Render($idx)
    _GDIPlus_GraphicsClear($hBuffer, 0xFF151515)
    Local $hBrushLabels = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
    Local $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    Local $hFont = _GDIPlus_FontCreate($hFamily, 9, 1)
    Local $hFontSmall = _GDIPlus_FontCreate($hFamily, 8, 0)
    Local $hFontTitle = _GDIPlus_FontCreate($hFamily, 11, 1)
    Local $hFormat = _GDIPlus_StringFormatCreate()

    ; --- RECTANGLE DES PRIMAIRES (HAUT DROITE) ---
    Local $hPenRect = _GDIPlus_PenCreate(0xFF444444, 1)
    _GDIPlus_GraphicsDrawRect($hBuffer, $iW - 180, 20, 160, 60, $hPenRect)
    _GDIPlus_StringFormatSetAlign($hFormat, 0)
    Local $tRectInfo = _GDIPlus_RectFCreate($iW - 170, 25, 150, 90)
    Local $sInfo = "Gamut: " & GUICtrlRead($hCombo) & @CRLF & _
                   "R: " & $aData[$idx][0] & " , " & $aData[$idx][1] & @CRLF & _
                   "G: " & $aData[$idx][2] & " , " & $aData[$idx][3] & @CRLF & _
                   "B: " & $aData[$idx][4] & " , " & $aData[$idx][5]
    _GDIPlus_GraphicsDrawStringEx($hBuffer, $sInfo, $hFontSmall, $tRectInfo, $hFormat, $hBrushLabels)

    ; Grille
    Local $hPenGrid = _GDIPlus_PenCreate(0xFF333333, 1)
    For $i = 0 To 8
        Local $v = $i / 10
        _GDIPlus_GraphicsDrawLine($hBuffer, _ToPx($v), _ToPy(0), _ToPx($v), _ToPy(0.9), $hPenGrid)
        _GDIPlus_GraphicsDrawLine($hBuffer, _ToPx(0), _ToPy($v), _ToPx(0.9), _ToPy($v), $hPenGrid)
    Next

    ; Fer à cheval
	Local $iMax = UBound($aSpec) - 1
	For $i = 0 To $iMax - 1
		Local $wl = $aSpec[$i][0]

		Local $f_x = $aSpec[$i][1] ; On récupère x réel (entre 0 et 1)
		Local $f_y = $aSpec[$i][2] ; On récupère y réel (entre 0 et 1)

		Local $x1 = _ToPx($f_x)
		Local $y1 = _ToPy($f_y)
		Local $x2 = _ToPx($aSpec[$i+1][1])
		Local $y2 = _ToPy($aSpec[$i+1][2])

        Local $hP = _GDIPlus_PenCreate(GetColorFromXY($f_x, $f_y), 2)
        _GDIPlus_GraphicsDrawLine($hBuffer, $x1, $y1, $x2, $y2, $hP)
        _GDIPlus_PenDispose($hP)

		; --- Détection du marqueur ---
        Local $bShowMarker = False
        If Mod($wl, 20) = 0 And $wl >= 460 And $wl <= 640 Then $bShowMarker = True
        If $wl = 520 Or $wl = 380 Or $wl = 700 Then $bShowMarker = True

        If $bShowMarker Then
            ; 1. Calcul du vecteur tangent et de la normale (longueur 8 px)
            Local $fVX = $x2 - $x1
            Local $fVY = $y2 - $y1
            Local $fLen = Sqrt($fVX^2 + $fVY^2)
            If $fLen = 0 Then $fLen = 1

            ; Vecteur perpendiculaire pointant vers l'extérieur
            Local $fNX = (-$fVY / $fLen) * 8
            Local $fNY = ($fVX / $fLen) * 8

            ; 2. Dessin du petit trait en BLANC
            Local $hPenTick = _GDIPlus_PenCreate(0xFFFFFFFF, 1.5) ; Blanc pur (Alpha FF + RRGGBB)
            _GDIPlus_GraphicsDrawLine($hBuffer, $x1, $y1, $x1 + $fNX, $y1 + $fNY, $hPenTick)
            _GDIPlus_PenDispose($hPenTick)

            ; 3. Positionnement du texte
            Local $fDX = -15, $fDY = -28
            If $wl = 380 Then
                $fDX = -55
                $fDY = 0
            ElseIf $wl < 520 Then
                $fDX = -58
                $fDY = -7
            ElseIf $wl = 520 Then
                $fDX = -15
                $fDY = -25
            ElseIf $wl > 690 Then
                $fDX = -5
                $fDY = 10
            ElseIf $wl > 520 Then
                $fDX = 12
                $fDY = -15
            EndIf

            ; Création du rectangle de texte légèrement décalé par la normale
            Local $tRect = _GDIPlus_RectFCreate($x1 + $fDX + ($fNX * 0.4), $y1 + $fDY + ($fNY * 0.4), 65, 20)
            _GDIPlus_GraphicsDrawStringEx($hBuffer, String(Int($wl)) & " nm", $hFont, $tRect, $hFormat, $hBrushLabels)
        EndIf
    Next

	; 1. Récupération des couleurs réelles aux extrémités du tableau
	Local $iColRed = GetColorFromXY($aSpec[$iMax][1], $aSpec[$iMax][2])    ; Couleur à 700nm
	Local $iColViolet = GetColorFromXY($aSpec[0][1], $aSpec[0][2])         ; Couleur à 360nm

	; --- Tracé de la Ligne des Pourpres ---
	; On crée un pinceau dégradé qui va du point final au point initial
	Local $hLineBrush = _GDIPlus_LineBrushCreate(_ToPx($aSpec[$iMax][1]), _ToPy($aSpec[$iMax][2]), _ToPx($aSpec[0][1]), _ToPy($aSpec[0][2]), $iColRed, $iColViolet)
	Local $hPenP = _GDIPlus_PenCreate(0xFF000000, 2) ; Crée un pen temporaire
	_GDIPlus_PenSetCustomEndCap($hPenP, 0) ; Juste pour s'assurer du style

	; Pour dessiner une ligne avec un dégradé en GDI+, on utilise le Brush directement avec un Pen
	Local $hPenGradient = _GDIPlus_PenCreate(0xFF000000, 2)
	DllCall($__g_hGDIPDll, "int", "GdipSetPenBrushFill", "handle", $hPenGradient, "handle", $hLineBrush)

	_GDIPlus_GraphicsDrawLine($hBuffer, _ToPx($aSpec[$iMax][1]), _ToPy($aSpec[$iMax][2]), _ToPx($aSpec[0][1]), _ToPy($aSpec[0][2]), $hPenGradient)

	; --- Légende ligne des pourpres (bas gauche) ---
	Local $tRectPurple = _GDIPlus_RectFCreate(70, 600, 150, 20)
	; On crée un dégradé horizontal pour la légende (Violet vers Rouge pour suivre le sens de lecture)
	Local $hBrushLegend = _GDIPlus_LineBrushCreate(70, 600, 220, 600, $iColViolet, $iColRed)
	_GDIPlus_GraphicsDrawStringEx($hBuffer, "--- Ligne des Pourpres", $hFontSmall, $tRectPurple, $hFormat, $hBrushLegend)

    ; Dessin du Gamut
    Local $hPenG = _GDIPlus_PenCreate(0xFFFFFFFF, 2)
    Local $aPoly[4][2] = [[3,0],[_ToPx($aData[$idx][0]),_ToPy($aData[$idx][1])],[_ToPx($aData[$idx][2]),_ToPy($aData[$idx][3])],[_ToPx($aData[$idx][4]),_ToPy($aData[$idx][5])]]
    _GDIPlus_GraphicsDrawPolygon($hBuffer, $aPoly, $hPenG)

    ; Point blanc D65
    Local $iPX = _ToPx(0.3127)
    Local $iPY = _ToPy(0.3290)
    _GDIPlus_GraphicsFillEllipse($hBuffer, $iPX - 4, $iPY - 4, 8, 8, $hBrushLabels)
    Local $tRectD65 = _GDIPlus_RectFCreate($iPX + 10, $iPY - 10, 40, 20)
    _GDIPlus_GraphicsDrawStringEx($hBuffer, "D65", $hFont, $tRectD65, $hFormat, $hBrushLabels)

    ; Lieu planckien (à faire)

	; --- Nettoyage ---
	_GDIPlus_PenDispose($hPenGrid)
    _GDIPlus_PenDispose($hPenP)
    _GDIPlus_PenDispose($hPenG)
    _GDIPlus_PenDispose($hPenRect)
    _GDIPlus_PenDispose($hPenGradient)
    _GDIPlus_BrushDispose($hBrushLabels)
    _GDIPlus_BrushDispose($hLineBrush)
    _GDIPlus_BrushDispose($hBrushLegend)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontDispose($hFontSmall)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
EndFunc

Func _ToPx($v)
    Return $iMargin + $iOffX + ($v / $fMax * $iSize * $fZoom)
EndFunc

Func _ToPy($v)
    Return $iMargin + $iOffY + ($iSize * $fZoom) - ($v / $fMax * $iSize * $fZoom)
EndFunc

Func WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
    Local $iDelta = BitShift($wParam, 16)
    If $iDelta > 0 Then
        $fZoom = $fZoom * 1.1
    Else
        $fZoom = $fZoom * 0.9
    EndIf
    If $fZoom < 0.5 Then
        $fZoom = 0.5
    EndIf
    _Render($iLastIdx)
    Return $GUI_RUNDEFMSG
EndFunc

Func GetColorFromXY($fInX, $fInY)
    ; 1. Reconstruction XYZ
    Local $fOutY = 1.0 ; Luminance fixée au max
    Local $fOutX = 0, $fOutZ = 0

    If $fInY > 0 Then
        $fOutX = ($fInX * $fOutY) / $fInY
        $fOutZ = ((1 - $fInX - $fInY) * $fOutY) / $fInY
    EndIf

    ; 2. Conversion XYZ vers sRGB (Matrice D65)
    Local $fRed = $fOutX * 3.2406 + $fOutY * -1.5372 + $fOutZ * -0.4986
    Local $fGreen = $fOutX * -0.9689 + $fOutY * 1.8758 + $fOutZ * 0.0415
    Local $fBlue = $fOutX * 0.0557 + $fOutY * -0.2040 + $fOutZ * 1.0570

    ; 3. Normalisation et gestion du Gamut
    ; On ramène le minimum à 0 (désaturation)
    Local $fMin = $fRed
    If $fGreen < $fMin Then $fMin = $fGreen
    If $fBlue < $fMin Then $fMin = $fBlue

    If $fMin < 0 Then
        $fRed -= $fMin
        $fGreen -= $fMin
        $fBlue -= $fMin
    EndIf

    ; On ramène le maximum à 1.0 (luminosité)
    Local $fMax = $fRed
    If $fGreen > $fMax Then $fMax = $fGreen
    If $fBlue > $fMax Then $fMax = $fBlue

    If $fMax > 0 Then
        $fRed /= $fMax
        $fGreen /= $fMax
        $fBlue /= $fMax
    EndIf

    ; 4. Correction Gamma sRGB et passage en 8-bit
    Local $aRGB[3] = [$fRed, $fGreen, $fBlue]
    For $j = 0 To 2
        If $aRGB[$j] > 0.0031308 Then
            $aRGB[$j] = 1.055 * ($aRGB[$j] ^ (1/2.4)) - 0.055
        Else
            $aRGB[$j] = 12.92 * $aRGB[$j]
        EndIf

        $aRGB[$j] = Int($aRGB[$j] * 255)
        If $aRGB[$j] < 0 Then $aRGB[$j] = 0
        If $aRGB[$j] > 255 Then $aRGB[$j] = 255
    Next

    ; Retourne 0xAARRGGBB
    Return BitOR(0xFF000000, BitShift($aRGB[0], -16), BitShift($aRGB[1], -8), $aRGB[2])
EndFunc

Func _GetComboIndex($txt)
    If StringInStr($txt, "sRGB") Then Return 0
    If StringInStr($txt, "Adobe") Then Return 1
    If StringInStr($txt, "Display") Then Return 2
    Return 3
EndFunc

Func _Update()
    _GDIPlus_GraphicsDrawImage($hGraphicGUI, $hBitmap, 0, 0)
EndFunc

Func _Save()
    Local $sFile = FileSaveDialog("Enregistrer", @ScriptDir, "Images (*.png)", 16, "CIE_Export.png")
    If Not @error Then
        _GDIPlus_ImageSaveToFile($hBitmap, $sFile)
    EndIf
EndFunc

Func _Cleanup()
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphicGUI)
    _GDIPlus_Shutdown()
EndFunc
 

POSTREACT(ions) SUMMARY

Pio2001
130 dB
Messages : 596
Enregistré le : 18 mars 2024, 00:29

Re: Les sondes de calibration

Message par Pio2001 »

Bonjour Emmanuel,
Je vois que tu t'intéresse au problème. Pour mener à bien ce projet, il faudrait d'abord définir des objectifs.

Pour ma part, je ne suis pas bricoleur. Ce que j'aimerais savoir, ce sont les erreurs de mesure dans différents cas de figure :
-Quelles erreurs de mesure fait-on si on caractérise un écran avec une sonde du commerce (LCD, Oled etc) ?
-Quelle est la variabilité de la vision humaine par rapport à "l'observateur standard" ?

Je possède deux écrans : un moniteur Eizo CG2700S, de type LCD IPS, et un ordinateur laptop avec écran intégré Oled. Les deux sont wide gamut, avec étalonnage sRGB ou HDR pour le laptop, et tout un tas d'étalonnages intégrés pour l'Eizo.

Le Samsung a des étalonnages standards.
Le cas de l'Eizo est intéressant, car il est censé avoir été étalonné individuellement avec une sonde professionnelle (un spctro ?), donc il devait en théorie être plus précis que ce qu'indique une sonde du commerce, mais c'était quand il était neuf. Il a été recalibré depuis avec sa sonde interne, mais impossible de savoir si cette sonde est précise, ni ce qu'elle recalibre réellement. D'après Eizo, chaque sonde interne est elle-même calibrée jusqu'à ce qu'elle indique la même chose que le spectro du fabricant.

Pour la vision humaine, il est fort possible que l'Eizo et le Samsung, placés côte à côte, aient des problèmes de métamérisme. Mais rien n'est sûr à ce sujet. Je ne peux pas le savoir tant qu'un spectromètre précis ne me permet pas d'afficher exactement la même couleur sur les deux.

Je n'ai pas de sonde de calibration, je n'ai pas vu l'utilité d'en acheter, leur précision n'étant a priori pas meilleure que celle d'un moniteur étalonné individuellement par le fabricant.

Pour les logiciels, je vois que tu as fait un affichage dans l'espace CIE 1931. Est-ce que tu pourrais plutôt utiliser le CIE 1976 (ou un autre plus récent, si ça existe) ? Le problème du CIE 1931 est le même que la projection de Mercator pour les cartes du monde : il grossit démesurément le haut du diagramme.
Ce serait également intéressant d'avoir un calculateur de delta E, mais ça, ça existe sûrement en ligne.
 

POSTREACT(ions) SUMMARY

Emmanuel Piat
67 dB
Messages : 146
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Obj :
- essayer de fabriquer un télé spectro NON radiomètre avec une calib relative de l'intensité spectrale pour toutes les longueurs d'onde du visible.
- donner la possibilité d'avoir en plus une précision bof bof sur la luminance (cd/m²) via une réf. externe (colorimètre) testé sur un moniteur
- Donner qq briques software minimales pour tester l'appareil via un macro langage qui exploite des ressources externes gratuites :
(a) mesure spectre + archivage ds un fichier texte
(b) lecture fichier spectre pour calcul X,Y,Z_rel et x,y ds l'espace CIE 1931
(c) Répétition de (a) et (b) pour un ensemble de patterns de couleur et stockage résultats ds un fichier de données colorimétriques
(d) Affichages des données colorimétriques sous qq formats pratiques à visualiser (tableaux, graphiques)

Ne rêvez pas ça restera (très) rudimentaire. L'idée, c'est juste de proposer qq outils de base que chacun pourra enrichir selon ses propres besoins qui peuvent être très variés, ton précédent post en étant une illustration. Je ne vais pas refaire color HCFR. En cas de succès, la team HCFR pourra étudier comment intégrer cet appareil. Il faudra pour cela regarder les clauses de la licence du SDK du spectro que j'envisage. Nota : ce SDK multi-langages est payant. C'est la raison pour laquelle je n'ai pas prévu de l'utiliser pour (a)(b)(c)(d). Si je le faisais, ça ne prendrait que qq lignes de codes sous Matlab que j'utilise au quotidien vu qu'il y a déjà des toolbox archi complètes sur la colorimétrie. Mais tout le monde n'a pas Matlab qui coûte une véritable blinde si on n'est pas usager d'une Université :
https://fr.mathworks.com/products/matlab.html
Donc, à cause de vous, je me complique la vie pour le côté software :wink L'idée, c'est surtout d'explorer un peu cette piste DIY pour voir si ça mène qq part. Il y a zéro garantie pour l'instant.
 

POSTREACT(ions) SUMMARY

Modifié en dernier par Emmanuel Piat le 01 févr. 2026, 18:07, modifié 3 fois.
Emmanuel Piat
67 dB
Messages : 146
Enregistré le : 11 janv. 2026, 11:26

Re: Les sondes de calibration

Message par Emmanuel Piat »

Remarque : les questions que tu te poses se poseront aussi pour ce dispositif. Je ne possède pas de télé spectroradiomètre de référence (qui pourrait servir d'étalon si certificat récent de traçabilité au SI) pour faire des comparaisons A-B quantitatives. Mon projo pro possède déjà une sonde intégrée ds son chemin de lumière et il a une procédure d'autocalib. Le résultat visuel est bon en espace sRGB lorsque je fais des comparos A-B qualitatifs avec un moniteur IPS calibré 32" (sonde) sur une base d'une centaine de photos compliquées à rendre (ton de chair, teintes délicates, etc.).
 

POSTREACT(ions) SUMMARY

THXRD
130 dB
Messages : 691
Enregistré le : 18 mars 2024, 11:18

Re: Les sondes de calibration

Message par THXRD »

😀 je suis admiratif de tes propos Emmanuel ..( tu est une bible ) mais il y a bien longtemps que j’ai abandonné l’idée du DIY pour faire un spectro …
sans doute faisable , pas simple du tout sur certains points ..( comme tu le souligne ) et financièrement …au final pas si économique
j’ai prefere acheté un vrai spectro de référence que l’on re étalonne tout les 2 ans ..( et ça coûte 1400 € ) ..et que tout les pros du cinéma ou constructeurs utilisent …. ( ce qui permet des fichiers interchangeables )
cher ..mais tout compte fait pas tant que cela si on calibre régulièrement ..
j’ai eu 3 machines au total en 17 ans ..
dont une de labo trës cher , ultra sensible , mais qu.au final je louais ä des labos , car pas pratique et gros et lourd pour utiliser sur site ..( et que j’ai revendu .rapidement
l’autre m’a servi 10 ans et sert encore chez un pro ..
l’actuel est compact , très sensible et ultra rapide .et bénéficie de composants ultra récents ( capteur 2048x2048 et est référencée par les constructeurs en cinema ..) et surtout trës résolvant ( 1 nm FWHM ) point indispensable pour les trilasers ..
c’est un outil indispensable si on veut calibrer des afficheurs ..
 

POSTREACT(ions) SUMMARY

Répondre