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

Images Discussion :

Comment créer un image RGB à partir des matrices de ces trois composantes (R,G,B)


Sujet :

Images

  1. #1
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut Comment créer un image RGB à partir des matrices de ces trois composantes (R,G,B)
    je veux savoir comment crée une image couleur a partir de trois plan de couleur logiquement j'ai pensé a ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function GA=Id(M)
    I=imread(M);
    R=I(:,:,1);
    G=I(:,:,2);
    B=I(:,:,3);
    IN=rgb2gray(I);
    [a,b]=size(IN);
    R=floor(double(R));
    G=floor(double(G));
    B=floor(double(B));
    GA=[R,G,B];
    subplot(121);imshow(I);title('image _ M');
    subplot(122);imshow(GA);title('image _ GR');
    mais ça ne marche pas ça devais me donnée limage d'origine M sauf que non

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Il n'est pas nécessaire de passer par les variables intermédiaires R, G et B ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function GA=Id(M)
    I=imread(M);
    IN=rgb2gray(I);
    [a,b]=size(IN);
    subplot(121);imshow(I);title('image _ M');
    I(:,:,1)=floor(double(I(:,:,1)));
    I(:,:,2)=floor(double(I(:,:,2)));
    I(:,:,3)=floor(double(I(:,:,3)));
    subplot(122);imshow(GA);title('image _ GR');
    Dans le cas où ce serait vraiment nécessaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    I=imread(M);
    R=I(:,:,1);
    G=I(:,:,2);
    B=I(:,:,3);
    GA=cat(3,R,G,B);
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut
    j'ai lu le help du cat en fait cat(3,R,G,B) c'est la même chose que [R,G,B] et quand j'affiche avec cat ça me donne vraiment la même chose, donc il manque encore quelque chose...

  4. #4
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Au help je trouve ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat(2, A, B) is the same as [A, B], and cat(1, A, B) is the same as [A; B].
    et tu dis :
    Citation Envoyé par lastrecrue
    cat(3,R,G,B) c'est la même chose que [R,G,B]
    relis le help s'il te plait
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  5. #5
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    c'est intéressant les forums on apprend plein de choses. Je ne connaissais pas cat 3.

    Jusqu'à présent je faisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rgb = reshape ([R G B], size(R,1), size(R,2), 3) ;
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  6. #6
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut
    vous voulez dire que ça marche cat(3,R,G,B) car pour moi ça ne veu pas marché?si non la fonction rgb = reshape ([R G B], size(R,1), size(R,2), 3) ; marche bien même si je suis pas très sure des résultats que ma gaussienne donne...

  7. #7
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Bon,

    Je ne vois pas pourquoi ça ne marche pas pour toi. dis nous ce qui se passe, erreur?....?

    sinon fais comme il faisait ol9245:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rgb = reshape ([R G B], size(R,1), size(R,2), 3) ;
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  8. #8
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut
    finalement si ça marche c'est moi qui a pas su m'en servir désole
    voici mon code je crois que c'est pas vraiment ça le filtre gaussien????
    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
    function rgb=filtre_gausse(M)
    I=imread(M);
    R=I(:,:,1);
    G=I(:,:,2);
    B=I(:,:,3);
    IN=rgb2gray(I);
    [a,b]=size(IN);
    R=floor(double(R));
    G=floor(double(G));
    B=floor(double(B));
    GR=zeros(a-2,b-2);
    GG=zeros(a-2,b-2);
    GB=zeros(a-2,b-2);
    for x=2:a-1;
        for y=2:b-1;
           GR(x-1,y-1)=uint8(double((R(x-1,y-1)+R(x,y-1)+R(x+1,y-1)+R(x-1,y)+R(x,y)+R(x+1,y)+R(x-1,y+1)+R(x,y+1)+R(x+1,y+1))/9)./255);
           GG(x-1,y-1)=uint8(double((G(x-1,y-1)+G(x,y-1)+G(x+1,y-1)+G(x-1,y)+G(x,y)+G(x+1,y)+G(x-1,y+1)+G(x,y+1)+G(x+1,y+1))/9)./255);
           GB(x-1,y-1)=uint8(double((B(x-1,y-1)+B(x,y-1)+B(x+1,y-1)+B(x-1,y)+B(x,y)+B(x+1,y)+B(x-1,y+1)+B(x,y+1)+B(x+1,y+1))/9)./255);
        end
    end
    R=GR;
    G=GG;
    B=GB;
    rgb = reshape ([R G B], size(R,1), size(R,2), 3) ;
    %rgb=cat(3,R,G,B);
    subplot(121);imshow(I);title('image _ M');
    subplot(122);imshow(rgb);title('image _filtré');

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Pour bien montrer que les fonctions CAT et RESHAPE donnent le même résultat :
    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
    IM_0=rand(5,5,3);
     
    R=IM_0(:,:,1);
    G=IM_0(:,:,2);
    B=IM_0(:,:,3);
     
    IM_1=cat(3,R,G,B);
     
    IM_2=reshape([R G B],size(IM_0));
     
     
    figure
     
    subplot(2,2,[1 2])
    imagesc(IM_0)
    title('Image originale')
    axis image off
     
    subplot(2,2,3)
    imagesc(IM_1)
    title('Image reconstituée avec CAT')
    axis image off
     
    subplot(2,2,4)
    imagesc(IM_2)
    title('Image reconstituée avec RESHAPE')
    axis image off
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  10. #10
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut
    jai pas compri ca veut dire que c'est pas la meme chose ?

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Citation Envoyé par lastrecrue
    ca veut dire que c'est pas la meme chose ?
    Le résultat est le même mais le temps d'exécution est différent :
    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
    clear all
     
    IM=rand(5000,2500,3);
     
    R=IM(:,:,1);
    G=IM(:,:,2);
    B=IM(:,:,3);
     
    tic
    X=cat(3,R,G,B);
    toc
     
    clear X
     
    tic
    XX=reshape([R G B],size(IM));
    toc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    elapsed_time =
     
        0.5000
     
     
    elapsed_time =
     
        0.5620
    Même si, sur une seule opération, la différence n'est pas très importante, la même opération à l'intérieur d'une structure itérative peut donner des écarts significatifs.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/12/2009, 15h56
  2. [ImageJ] Comment créer une image RGB normalisée ?
    Par fcjunic dans le forum ImageJ
    Réponses: 1
    Dernier message: 20/02/2009, 15h03
  3. [GD] Comment créer une image à partir d'un texte ?
    Par Alexandrebox dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 11/02/2008, 04h33
  4. Recuperer une image a partir des pixels RGB
    Par Battosaiii dans le forum Langage
    Réponses: 1
    Dernier message: 29/06/2006, 11h37
  5. Réponses: 3
    Dernier message: 25/07/2005, 09h40

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