OVH Cloud OVH Cloud

Couleurs RGB et spectre de la lumière

21 réponses
Avatar
Hugolino
Salut,

Je voudrais dessiner (en PHP ou en javascript) un spectre lumineux dans
l'ordre croissant des longueurs d'onde (du violet à 380 nm au rouge à
780 nm).

Mais il me faudrait la correspondance entre chacun des 400 nanomètres de
l'étendue du spectre et leurs codes RGB qui permettrait d'afficher
cette couleur.

J'ai googlisé en vain ; j'ai écrit une procédure en php qui trace une
image en passant progressivement du bleu au rouge, donc avec le violet
au milieu :( et j'ai ni jaune ni vert...

Mais peut-être y a-t-il ici un joyeux contribruiteur qui aurait une
solution à me proposer ?


Merci


--
Maintenant que je commence a me debrouiller pas mal en Perl, c'est
promis, je vais reflechir a un nouveau programme qui aurait pour charge
de filtrer la connerie sur les News.
Hugo (né il y a 1 411 504 295 secondes)

1 réponse

1 2 3
Avatar
SAM
Le 2/4/09 9:10 PM, Jean-Yves Bernier a écrit :
SAM wrote:

Oui il cherchait un modèle pour afficher les couleurs de la lumière
visible, et finalement, ceci est quasi parfait :
<http://www.efg2.com/Lab/ScienceAndEngineering/Spectra.htm>



Sauf que Dan Bruton ne précise pas l'espace RGB utilisé, et que ceux-ci
ont pas mal changé depuis 1996.



Ma foi ...
Perso je n'ai pas d'autre ambition que de tenter de reproduire ce
qu'essaie de faire cette appli Spectra

Pour s'en affranchir, on utilise une table établie en laboratoire
(s'agissant d'un phénomène perceptif, il n'existe pas de modèle)
donnée en chromaticités normalisées CIE, qu'il est facile de transformer
dans l'espace RGB de son choix par multiplication de matrice 3x3.

Tout est dans la librairie de John Burkardt:
http://people.sc.fsu.edu/~burkardt/f_src/colors/colors.html



Bon ... Ben ...
je me suis contenté de transposer le code donné à l'url plus haut
<http://cjoint.com/data/bvbX1CmFAh_spectre_lumire_visible_js.htm>

NM_TO_RGBCIE (mais le RGB de nos écrans n'est pas le RGB du CIE)



Est-ce que ça a de l'importance ?
Le but du jeu est de représenter un spectre visible approchant d'autres
images de ce spectre (combien il y a t'il de ces tentatives de
représentation?), et les uns comme les autres sont tributaires de
l'écran (ou de l'imprimante si on préfère le support papier)
... alors ...
1) il n'y a plus grand chose de très scientifique ou précis au final
2) la comparaison du truc affiché et calculé avec sa capture-écran
sera toujours OK (puisque sur même support et utilisant même RGB)

NM_TO_XYZ (on passe ensuite en RGB709 ou autre)
NM_TO_XYZ_CAP (idem)

Alors voici ce que j'ai commis en javascript



Allez SAM, ce ne sont que quelques lignes de FORTRAN à traduire :)



Bou ! bagatelle ! :-)

J'ai déjà de traduit et en stock :
HLS_TO_RGB HSV_TO_RGB HEX_TO_RGB RGB_TO_HEX RGB_TO_HLS RGB_TO_HSV
et comme le reste des routines de cette page je ne sais pas de quoi il
retourne ... les sources ainsi que la "GNU LGPL license" qui les
protège, je n'irai même pas les lire.


--
sm
1 2 3