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 :

superposer une image générée par imagesc sur une image de fond


Sujet :

Images

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 11
    Points
    11
    Par défaut superposer une image générée par imagesc sur une image de fond
    Bonjour,

    Je souhaiterais superposer une image obtenue par matlab (avec la fonction imagesc et dont certains pixels sont transparents), sur une image de fond de format .jpg.

    Pouvez-vous m'aiguiller ?

    Merci bien.

  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 304
    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 304
    Points : 52 888
    Points
    52 888
    Par défaut
    Les deux images ont-elles les mêmes dimensions ?
    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 à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 11
    Points
    11
    Par défaut
    Non, les deux images n'ont pas la même dimension.
    Celle générée par matlab est plus petite que l'image .jpg.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 888
    Points
    52 888
    Par défaut
    Un exemple de superposition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    load clown
     
    figure
    colormap(map)
    imagesc(X)
    axis image
     
    hold on
     
    rgb = rand(70,100,3);
    image(150,50,rgb)
    Voir ici : http://briot-jerome.developpez.com/m...ages/#LIII-B-1
    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)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 11
    Points
    11
    Par défaut
    Merci Dut, j'ai progréssé mais ce n'est toujours pas ça.

    En fait, il ne s'agit pas exactement du traitement d'une seule image mais d'une succession d'images que je fais défiler pour obtenir une vidéo.
    La première image obtenue avec le code ci dessous est cohérente mais le reste de mes images générées par matlab ne suit pas. En gros, qu'en ajoutant cette superposition de l'image sur une image de fond, j'obtiens que la première image générée par imagesc?
    En revanche l'image de fond(qui n'est jamais la même dans le film) change.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    rgb = imread('nom_image.jpg');
    rgb2 = imresize(rgb,[160 240]);
    image(rgb2,'xdata',1,'ydata',1);
    hold on;
    imagesc(result)

    Je ne sais pas si mon problème apparait clair ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 888
    Points
    52 888
    Par défaut
    Si je comprends bien, les deux images n'ont pas les mêmes dimensions.

    Par contre, tu veux les superposer exactement donc tu redimensionnes la plus petite.

    Donc pour l'image du fond, seuls les pixels sous les pixels "transparents" de result seront visibles, c'est ça ?

    Sinon, donne-nous un aperçu de ce que tu cherches à obtenir
    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)

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 11
    Points
    11
    Par défaut
    L'image du fond c'est nom_image.jpg. L'image du fond est plus grande que l'image générée via imagesc. Et je la redimensionne pour qu'elle soit de la même taille que result.
    J'aimerais superposer sur nom_image.jpg les pixels non transparents de mon image result.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 888
    Points
    52 888
    Par défaut
    Un exemple :

    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
    % rgb = imread('nom_image.jpg');
    rgb = rand(10,10,3);
     
    r = 5;
    c = 5;
    result = round(rand(r,c)*10);
     
    mask = result<=5;
     
    figure
     
    image(rgb,'xdata',[1 c],'ydata',[1 r])
    hold on
    im = imagesc(result,'xdata',[1 c],'ydata',[1 r]);
    set(im,'alphadata',mask);
    axis image
    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)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 11
    Points
    11
    Par défaut
    Merci pour l'aide. Mais je n'ai pas encore résolu mon problème.

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    rgb = imread(nom_image.jpg);
    image(rgb,'xdata',[1 240],'ydata',[1 160])
    hold on
    mask = result<=-5;
    im = imagesc(result,'xdata',[1 240],'ydata',[1 160]);
    set(im,'alphadata',mask);
    axis image
    caxis([-10 -5]);
    colorbar('location','EastOutside');
    La première image apparait à peu près correcte mais la palette de couleur va de [0 64] et non de [-10 -5] puisqu'il doit prendre la palette de couleur de mon image .jpg et non celle de mon imagesc... Et puis une seule image s'affiche et non une succession d'images.

    J'ai essayé un autre code pour mettre mes images .jpg en image de fond :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    rgb = imread(nom_image.jpg);
    ax=axes('position',[0 0 1 1]);
    image(rgb,'xdata',[1 240],'ydata',[1 160])
    uistack(ax,'bottom');
     
    mask = result<=-5;
    im = imagesc(result,'xdata',[1 240],'ydata',[1 160]);
    set(im,'alphadata',mask);
    axis image
    caxis([-10 -5]);
    colorbar('location','EastOutside');
    La superposition de mes deux images n'apparait à aucun moment ici.

    Je ne comprends pas pourquoi les pixels de "result" qui dépassent le seuil défini ne sont pas transparents mais blancs (puisqu'ils recouvrent toute l'image et non certains pixels) ?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 888
    Points
    52 888
    Par défaut
    Que renvoie ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    infos = imfinfo('nom_image.jpg');
    En remplaçant 'nom_image.jpg' par le vrai nom du fichier bien entendu.
    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)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 11
    Points
    11
    Par défaut
    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
     infos=imfinfo('./imnom_image.jpg')
     
    infos = 
     
               Filename: [1x69 char]
            FileModDate: '04-mars-2013 15:25:30'
               FileSize: 171572
                 Format: 'jpg'
          FormatVersion: ''
                  Width: 1280
                 Height: 960
               BitDepth: 24
              ColorType: 'truecolor'
        FormatSignature: ''
        NumberOfSamples: 3
           CodingMethod: 'Huffman'
          CodingProcess: 'Sequential'
                Comment: {}

  12. #12
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 888
    Points
    52 888
    Par défaut
    Donc comme tu peux le lire toi-même, les pixels de l'image stockée dans imnom_image.jpg sont en couleurs vraies (truecolor) donc RGB.
    Un bitdepth de 24 signifie qu'un pixel est codé sur 3 valeurs de 8bit (3x8=24) chaque valeur correspondant respectivement au rouge (R), au vert (G) et au bleu (B).

    Il n'y a pas de palette associée à ce type de couleurs.

    Tu peux toujours en créer une comme je l'ai fais ici.

    Le soucis sera ensuite de relié les valeurs de result à cette palette.

    Tu devrais bien réfléchir et nous dire exactement ce que tu cherches à faire.

    Quel est le lien entre result et imnom_image.jpg ?
    Que fais -tu exactement ?
    Quel est le sujet de ton étude ?
    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)

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 11
    Points
    11
    Par défaut
    Je n'ai plus de problème de superposition d'images (j'avais un petit soucis d'algorithme que j'ai résolu), excepté ce lui de la palette.

    En fait, j'aimerais que sur l'image finale la palette de couleur affiche les résultats de "result" (résultats compris en -10 et -5). Or là, ma palette va de 0 à 64.

    Y'a t-il une option dans colorbar, colormap qui me permette de préciser la palette de l'image que je veux afficher ?

    Merci.

  14. #14
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 888
    Points
    52 888
    Par défaut
    Inverse l'ordre d'affichage des deux images :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    rgb = imread(nom_image.jpg);
     
    mask = result<=-5;
    im = imagesc(result,'xdata',[1 240],'ydata',[1 160]);
    set(im,'alphadata',mask);
    axis image
    caxis([-10 -5]);
    colorbar('location','EastOutside');
     
    hold on
    image(rgb,'xdata',[1 240],'ydata',[1 160])
    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)

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    J'avais déjà essayé cette option qui ne résoud pas mon problème.
    L'image jpg recouvre intéralement mon autre image. La superposition n'est plus ok dans ce cas là.

  16. #16
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 888
    Points
    52 888
    Par défaut
    Arf, oui !

    Il devrait suffir d'utiliser uistack :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    rgb = imread(nom_image.jpg);
     
    mask = result<=-5;
    im = imagesc(result,'xdata',[1 240],'ydata',[1 160]);
    set(im,'alphadata',mask);
    axis image
    caxis([-10 -5]);
    colorbar('location','EastOutside');
     
    hold on
    im = image(rgb,'xdata',[1 240],'ydata',[1 160]);
    uistack(im,'bottom');
    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)

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 11
    Points
    11
    Par défaut
    Cette option ne va pas non plus.

    La première image est ok. Mais je fais défiler des images les unes à la suites des autres et le souci se pose dès la deuxième image.
    La palette de couleur revient de 0 à 64 et des "restes" de la première image se superposent à la deuxième image

  18. #18
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 888
    Points
    52 888
    Par défaut
    Ben oui, mais sans voir ton code complet, difficile de t'aider mieux
    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)

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 11
    Points
    11
    Par défaut
    Un "close" avant la fin de ma boucle fait l'affaire
    Problème résolu.
    Merci beaucoup Dut.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/09/2013, 09h33
  2. Copier une image sur une feuille et la coller sur une autre feuille
    Par Hierog dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 17/03/2011, 12h21
  3. DHCP sur une @IP 1 et DNS sur une @IP 2
    Par polls dans le forum Réseau
    Réponses: 1
    Dernier message: 20/08/2010, 12h27
  4. [XL-2002] Ecouter un evenement sur une cellule et le reproduire sur une autre cellule
    Par kulnae dans le forum Macros et VBA Excel
    Réponses: 28
    Dernier message: 17/08/2009, 21h21
  5. [GD] Enregistrer une image générée par PHP sur disque dur
    Par Alex01 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 03/05/2006, 11h16

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