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

OpenGL Discussion :

convertir du grayscale vers du rgb


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Par défaut convertir du grayscale vers du rgb
    Bonjour, je fais présentement face à un autre problème : j'ai une array de couleur (GLfloat g_colors[]) qui contient des données rgb mais qui sont en grayscale, ce qui veut dire que r=g=b, par exemple le premier point serait 0.8, 0.8, 0.8, ...etc. Je veux convertir les valeurs contenu dans g_colors pour qu'elle soit en VRAI rgb, donc que du grayscale 1.0, 1.0, 1.0 devrait etre en rouge et que du grayscale 0.0, 0.0, 0.0 devrait etre en bleu. En fait il s'agit de transformé la array g_colors pour que les valeurs grayscale se transforme en couleur en suivant un color map du genre de ceux qu'on peut faire dans matlab : http://blogs.mathworks.com/images/lo...apManip_14.png
    Donc comment faire le lien, en C++, entre les couleurs de g_colors en grayscale et les couleurs en rgb d'un autre array? Poser moi des question si jamais le tout n'est pas très clair! Merci

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 820
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 820
    Par défaut
    Salut,

    Citation Envoyé par m_power_hax Voir le message
    par exemple le premier point serait 0.8, 0.8, 0.8, ...etc. Je veux convertir les valeurs contenu dans g_colors pour qu'elle soit en VRAI rgb, donc que du grayscale 1.0, 1.0, 1.0 devrait etre en rouge et que du grayscale 0.0, 0.0, 0.0 devrait etre en bleu. En fait il s'agit de transformé la array g_colors pour que les valeurs grayscale se transforme en couleur en suivant un color map du genre de ceux qu'on peut faire dans matlab : http://blogs.mathworks.com/images/lo...apManip_14.png
    Où est le problème exactement?

    Tu te définis ta colormap du bleu au rouge, et tu associes ton niveau de gris.
    gris=0 > RGB=(0,0,1)
    gris=1 > RGB=(1,0,0)
    et entre les deux tu définis tes évolutions RGB...
    à gris=0.33 tu es dans le cyan, donc RGB=(0,1,1)
    à gris=0.66 tu es dans le jaune, donc RGB=(1,1,0)

    Je t'ai donné 4 points pour tracer tes trois courbes R, G et B, je te laisse finir...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Par défaut
    Sinon, tu regardes sur wikipedia comment passer du repere HSV (ou HSL) en RGB. Il suffit juste que tu mettes le greyscale dans ton composant Hue et les deux autres a fond.

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Sinon qlqu'un a posté un fois un code qui peut t'aider je pense. (C'etait en C, mais ici c'est du java, mais facilement reecrivable).

    Ca permet de convertir une valeur de 0 a 1024 (px etre changer pour avoir 0 a 255) en du RGB qui va du bleu au rouge en passant par le vert. (ou un truc similaire).

    Code : 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
     
    public Color getCouleurFromValue(double indiceCouleur)
    	    {   
    		    int r=0,v=0,b=255;
    			if (0< indiceCouleur && indiceCouleur<=256){
    				r=0;
    				v=(int) (indiceCouleur-1);
    				b=255;
    			}
    			else if (256<indiceCouleur && indiceCouleur<=512){
    				r=0;
    				v=255;
    				b=(int) (512-indiceCouleur);
    			}
    			else if (512<indiceCouleur && indiceCouleur<=768){
    				r=(int) (255-(768-indiceCouleur));
    				v=255;
    				b=0;
    			}	
    			else if (768<indiceCouleur && indiceCouleur<=1024){
    				r=255;
    				v=(int) (1024-indiceCouleur);
    				b=0;
    			}
    			//genere l'objet couleur
    			Color c = new Color(r,v,b);
    			return c;
    	    }
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Par défaut
    Je crois que cela pourrait fonctionner! Est-ce qu'il serait plus efficace d'utiliser une lookup table de couleur??

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Disons que tu pourrais utiliser cette fonction pour remplir une table et ainsi éviter des if lorsque tu veux une couleur (dans une grosse boucle d'affichage par exemple, le gain sera non négligeable)
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Conversion Grayscale vers RGB
    Par imenham dans le forum Images
    Réponses: 2
    Dernier message: 08/07/2015, 21h20
  2. Convertir d'hexadécimal vers décimal
    Par WebPac dans le forum Delphi
    Réponses: 4
    Dernier message: 05/09/2006, 13h01
  3. [C# > C++] Comment convertir un sting^ vers un char* ?
    Par Elbarto dans le forum C++/CLI
    Réponses: 6
    Dernier message: 15/06/2006, 21h58
  4. Convertir dump postgres vers mysql
    Par )3lade dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 03/10/2005, 17h51
  5. [gtkmm] Convertir un ustring vers un array
    Par alejandro dans le forum GTK+
    Réponses: 2
    Dernier message: 17/05/2005, 14h43

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