IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Relation entre longueur d'onde et Teinte d'une couleur


Sujet :

Algorithmes et structures de données

  1. #1
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut Relation entre longueur d'onde et Teinte d'une couleur
    Mon problème est tout bête. J'ai une onde monochromatique et j'aimerai connaître la teinte (dans le mode TSL) qui correspond donc à la longueur d'onde. Mais je n'arrive pas à trouver la formule mathématique exacte. Donc si quelqu'un a une idée...


  2. #2
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonsoir,

    Je ne savais pas, je ne sais toujours pas, mais peux être que ça peut te fournir des pistes (j'avais pas idée du bordel que c'est pour ces couleurs )

    Il n'y a pas une formule unique mais un ensemble de formule on dirait. ICC semblent être madame norme dans le domaine des couleurs et je pense que ceci peut t'indiquer des pistes.

    "Q. How can I convert spectral data to XYZ?"
    <http://www.color.org/faqs.xalter#m9>


    Le site suivant semble un peu plus vulgarisé. Il propose des modèles empiriques, mais je manque de terminologie (et de temps pour l'ingérer ) afin de comprendre comment l'utiliser.
    <http://www.cvrl.org/> (main index / Chromaticity Coordinates)

    Je pensais que c'était plus simple que ça à vrai dire. Je doute qu'une formule exacte puisse exister.

    Peut être que ce wiki peut fournir une bonne intro :
    <http://en.wikipedia.org/wiki/Chromaticity_diagram#The_CIE_xy_chromaticity_diagram_and_the_CIE_xyY_color_space>


    Bye, en espérant que ça t'aide

  3. #3
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Merci, effectivement, j'ai l'impression que ce n'est finalement pas si simple. Merci pour les liens, je vais regarder à quoi ressemble l'espace CIE XYZ (et voir si on peut en déduire pas trop difficilement les valeurs RGB et dans ce cas, c'est gagné)

  4. #4
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    A partir d'un autre post, ce lien semble donner un algorithme pour passer d'une longueur d'onde à ses coordonnées RGB: http://www.efg2.com/Lab/ScienceAndEn...ng/Spectra.htm

  5. #5
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Bon, ca a l'air d'être bon.
    Voilà le code Python qui donne une valeur RGB à partir de la longueur d'onde + création de l'image du spectre pour vérifier que ca donne bien le bon résultat

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    from __future__ import division
     
    def WavelengthToRGB(Wavelength):
        Gamma = 0.80
        IntensityMax = 255
        def Adjust(Color, Factor):
            if Color == 0: return 0
            else: return round(IntensityMax * pow(Color * Factor, Gamma))
     
        if 380 <= Wavelength <= 440:
            R = -(Wavelength - 440) / (440 - 380)
            G = 0
            B = 1
        elif 440 <= Wavelength <= 490:
            R = 0
            G = (Wavelength - 440) / (490 - 440)
            B = 1
        elif 490 <= Wavelength <= 510:
            R = 0
            G = 1
            B = -(Wavelength - 510) / (510 - 490)
        elif 510 <= Wavelength <= 580:
            R = (Wavelength - 510) / (580 - 510)
            G = 1
            B = 0
        elif 580 <= Wavelength <= 645:
            R = 1
            G = -(Wavelength - 645) / (645 - 580)
            B = 0
        elif 645 <= Wavelength <= 780:
            R = 1
            G = 0
            B = 0
        else:
            R = 0
            G = 0
            B = 0
     
        if 380 <= Wavelength <= 420: Factor = 0.3 + 0.7 * (Wavelength - 380) / (420 - 380)
        elif 420 <= Wavelength <= 701: Factor = 1
        elif 701 <= Wavelength <= 780: Factor = 0.3 + 0.7 * (780 - Wavelength) / (780 - 700)
        else: Factor = 0
     
        R = Adjust(R, Factor)
        G = Adjust(G, Factor)
        B = Adjust(B, Factor)    
     
        return R, G, B
     
    import Image
    a = Image.new('RGB', (401, 50))
    r = a.load()
    for n in range(380, 781):
        print n, WavelengthToRGB(n)
        for i in range(50): r[n-380, i] = WavelengthToRGB(n)
     
    a.save('toto.png')

  6. #6
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonsoir,

    Merci pour le lien, il file dans les favoris, et le morceau de code. On sait jamais, c'est le genre de truc qui peut éviter bien des heures de recherche...

    PS :
    Le wiki fait le lien entre XYZ et RGB via une matrice 3X3 que je n'ai vu qu'en lisant mieux... Je sais pas trop ce que ça vaut ni de quel chapeau ça sort mais c'est déjà ça de pris...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment changer la teinte d'une couleur ?
    Par Hell dans le forum Langage
    Réponses: 6
    Dernier message: 06/12/2007, 13h12
  2. Réponses: 4
    Dernier message: 05/05/2006, 10h42
  3. Relation entre deux tables
    Par manel007 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/03/2005, 16h54
  4. Relations entre les Paquetages
    Par bran_noz dans le forum UML
    Réponses: 4
    Dernier message: 25/06/2004, 14h05
  5. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo