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 :

selectionner une partie d'une image et l'afficher dans une nouvelle figure


Sujet :

Images

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 44
    Points : 55
    Points
    55
    Par défaut selectionner une partie d'une image et l'afficher dans une nouvelle figure
    bonjour,

    Voici mon code, quand l'utilisateur selectionne la zone, la nouvelle fenetre apparait mais avec une image qui n'a rien a voir avec la zone quand j'utilise imagesc(xaxis,yaxis,current_data); pour afficher l'image initiale mais j'obtiens les bonnes axes, si j'utilise imagesc(current_data); alors j'obiens la bonne zone mais du coup les axes ne sont pas correctes.

    Est ce qu'il y a une autre facon de proceder ?



    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     
    f = figure('name','Selection,'numbertitle','off');
     
     [filename, path] = uigetfile( ...
            {'*.mat','MAT-files (*.mat)'; ...         
             'Pick a file');
         fullpathToFile = fullfile(path,filename);
            if filename~=0                    
                S=load(fullpathToFile);
                current_data=S.db;
                xaxis=S.x;
                yaxis=S.distance; 
                subplot(3, 1, 1);       
                imagesc(xaxis,yaxis,current_data);
    %             figure
    %             imshow(current_data)
            end
     
    [x,y] = ginput(2)
    hln=line('XData',[x(1) x(2) x(2) x(1) x(1)],'YData',[y(1) y(1) y(2) y(2) y(1)],'marker','*','markeredgecolor','b','MarkerSize',10);
     
    xmin=round(min(x));
    ymin=round(min(y));
    xmax=round(max(x));
    ymax=round(max(y));
     
     
    distancex=(xmin:xmax);
    distancey=(ymin:ymax);
     
     
    new_data=current_data(ymin:ymax,xmin:xmax);
     
    figure
    RI=imref2d(size(new_data));
    RI.XWorldLimits = [xmin xmax];
    RI.YWorldLimits = [ymin ymax];
    img2=imagesc(RI.XWorldLimits,RI.YWorldLimits,new_data);

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 77
    Points : 63
    Points
    63
    Par défaut
    Bonsoir,
    Tu peux utiliser la fonction imrect

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    figure(1);imagesc(Matrice) % Avec Matrice=S.db dans ton cas ?
    h = imrect(gca);
    wait(h);
    Pos =round(getPosition(h));
    figure(2);imagesc(Matrice(Pos(2):Pos(2)+Pos(4),Pos(1):Pos(1)+Pos(3)))

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 44
    Points : 55
    Points
    55
    Par défaut
    Merci rhand, la fonction imrect est plus pratique que ce que j'avais avant mais j'ai toujours le probleme de l'axe

    la fonction imrect fonctionne tres bient avec imagesc(Matrice) mais pas avec imagesc(xaxis,yaxis,Matrice)

    PS: oui Matrice=current_data=S.dB

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 77
    Points : 63
    Points
    63
    Par défaut
    Si ce que tu veux c'est afficher avec la partie de l'image sélectionnée les coordonnées tu peux faire ca sinon j'ai pas compris ce que tu souhaites faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    figure(1);imagesc(A) % Avec Matrice=S.db dans ton cas ?
    h = imrect(gca);
    wait(h);
    Pos =round(getPosition(h));
    X=Pos(1):1:Pos(1)+Pos(3);
    Y=Pos(2):1:Pos(2)+Pos(4);
    figure(2);imagesc(X,Y,A(Pos(2):Pos(2)+Pos(4),Pos(1):Pos(1)+Pos(3)))

    Tu peux aussi regarder la fonction imcrop

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 44
    Points : 55
    Points
    55
    Par défaut
    Merci rhand

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/04/2009, 12h53
  2. Réponses: 5
    Dernier message: 11/03/2009, 21h46
  3. Réponses: 4
    Dernier message: 10/05/2008, 02h12
  4. Générer une image et l'afficher dans une page web
    Par Rodrigue dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 13/10/2007, 19h32
  5. Réponses: 1
    Dernier message: 14/05/2006, 19h52

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