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

MATLAB Discussion :

Fleche, Texte, Cadre et Choix des couleurs sur une image [Débutant]


Sujet :

MATLAB

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut Fleche, Texte, Cadre et Choix des couleurs sur une image
    Bonjour

    suite à un programme j'obtiens une image qui correspond à une partie de l'afrique de l'ouest

    les lignes de mon image correspondent aux latitudes (de 20.5 à 4.5° avec un pas de 1°) et les colones aux longitudes (de -18 à 28 avec un pas de 1°)

    beaucoup de pixel de cette image sont des NaN

    j'aimerais faire plusieurs traitements sur cette image :

    je souhaiterais que mes pixel correspondant à des NaN soient blancs pour mieux les distinguer

    j'aimerais indiquer des endroits précis de mon image par des flèches
    exemple : à la latitude 15.5° et à la longitude 0°, site : AGOUFOU, MALI
    j'ai du mal à utiliser la fonction annotation

    enfin je souhaiterais savoir comment on réalise des cadres de 3*3 pixel autour d'un pixel central, en prenant par exemple le pixel de latitude 15.5° et de 0° longitude

    voilà le code de l'affichage de l'image
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    %% AFFICHAGE DE L'IMAGE PRINCIPALE (matrice africaine)
     
    figure ('Name',fichier1,'NumberTitle','off')
     
    %%paramètre de l'image et légende
     
    imagesc([-18 28],[4.5 20.5],MAT)
     
    title('A.I. SELON LA LATITUDE ET LA LONGITUDE','fontsize',14,'fontweight','b','color','b')
     
    xlabel('Longitude en degré','fontweight','b','fontsize',14,'color','r')
     
    ylabel('Latitude en degré','fontweight','b','fontsize',14,'color','r')
     
    set(gca,'ytick',4.5:20.5)
     
    set(gca,'YDir','normal')
     
    xticklabel_rotate90(-18:1:28);
     
     
     
    %%position de la légende des abscisses
     
    h = get(gca,'xlabel');
     
    pos = get(h,'position');
     
    pos(2) = 2; % Valeur à ajuster pour avoir le bon placement, (2) déplacement de haut en bas,(1)de droite à gauche
     
    set(h,'position',pos)
     
     
     
    %%choix des valeurs a représenter pour une meilleure distinction
     
    Caxis ([10 36])
     
    %%voir pcolor pour une meilleure présentation
     
     
     
    %marquer les sites par des flèches
     
    %annotation('arrow',15.5,0)
     
    %annotation('textarrow'...
     
     
     
    %création des cadres autour du pixel du site
     
     
     
    %%insertion de la legende couleur à droite et hors de l'image 'EastOutside'
     
    colorbar('location','EastOutside') 
     
    axis image
    merci par avance pour l'aide

    bonne journée

  2. #2
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    j'ai un peu avancé sur un de mes soucis

    j'ai réussi à réaliser un cadre avec la fontion rectangle, il me manque juste à specifier la couleur

    code du cadre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    %création des cadres autour du pixel du site
     
    %agoufou
     
    rectangle('Position',[-3,14,3,3],'LineWidth',2,'LineStyle','--')
    une idée pour la couleur?

  3. #3
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    C'est presque toujours la même chose avec les objets graphiques, pour connaitre les propriétés il suffit de récupérer le handle et de faire un GET dessus : tu as alors la liste de toutes les propriétés et avec quelques connaissances d'anglais tu trouves celles que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    h=rectangle;
    get(h)
    %il y a 2 propriétés du genre *color, je les essaie :
    set(h,'FaceColor','b','EdgeColor',[1 0 0])
    Notes :
    Tu peux mettre ces propriétés directement à la création du rectangle (comme pour les Line*)
    Les couleurs peuvent être définies soit avec des lettres (voir l'aide de PLOT), soit en RGB.

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    merci pour la réponse caro
    ça marche

    voilà le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %création des cadres autour du pixel du site
     
    %agoufou
     
    h=rectangle('Position',[-3,14,3,3],'LineWidth',2,'LineStyle','--');
     
    set(h,'EdgeColor',[1 0 0])
    est ce que quelqu'un à une idée pour changer la couleur des NaN sur mon image et les mettre en blanc?

    j'aimerais indiquer des endroits précis de mon image par des flèches
    exemple : à la latitude 15.5° et à la longitude 0°, site : AGOUFOU, MALI
    j'ai du mal à utiliser la fonction annotation

    merci pour l'aide

  5. #5
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    C'est quoi la taille de ta matrice MAT ?

    Si elle est M*N*3, pour avoir un point blanc à la position i,j,k il faut que MAT(i,j,k) = [1 1 1] pour avoir du blanc.

    [EDIT]Et pour la fonction ANNOTATION ce qui est gênant c'est que les unités à utiliser sont normalized. Donc il te faut faire une petite règle de 3 pour transformer tes coordonnées souhaitées sur l'intervalle [0 1].
    Et si j'en crois ce que tu avais mis en commentaire il faut faire attention que tu dois donner à la fonction 2 X et 2 Y puisque tu dois donner le point de départ de la flèche et la pointe.
    Regarde bien l'exemple de l'aide, il me parait assez clair.

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    merci pour les infos

    concernant les arrows, j'utilise "l'insert" dans la fenêtre de la figure ça va plus vite sinon l'exemple est claire j'en ai quand même tracer une pour me faire la main

    sinon ma matrice fait 17 lignes sur 48 colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    whos MAT
     
      Name       Size            Bytes  Class     Attributes
     
     
     
      MAT       17x48             6528  double
    est ce qu'il est possible de faire une boucle sur cette matrice et lui dire que si c'est un NaN elle le colore en blanc tout en conservant les autres couleurs???

  7. #7
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Bon je l'avoue je ne suis pas une pro des images...
    Mais avec une matrice à 2 dimensions et l'utilisation de imagesc (qui de ce que j'en comprends fait de l'interpolation pour les couleurs), je ne vois pas comment on peut faire.
    En effet imagesc semble choisir ses couleurs en prenant en compte le min et le max de la matrice donnée (dans le cas 2D).
    Pour exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    M=zeros(17,48);
    for k=1:48,M(:,k)=k*(1:17)';end
    imagesc([-18 28],[4.5 20.5],M);
    figure(2);
    M=M/816;%divise tous les éléments de M par 816
    imagesc([-18 28],[4.5 20.5],M);
    Donc je ne vois pas quelle valeur donner à l'élément qui vaut NaN pour qu'il soit blanc au final

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    merci d'avoir essayé

    j'ai testé de remplacer les NaN par blanc avec le code suivant
    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
    %idx=isnan(MAT);
     
    %[n m]=size(idx);
     
    %for i=1:n
     
     %   for j=1:m
     
      %      if idx(i,j)==1
     
       %         MAT(i,j)=[1 1];
     
       %     end
     
       % end
     
    %end
    je peux pas utiliser la 3D vu que c'est du 2D

    y a bien un moyen je vais encore chercher

    merci encore

  9. #9
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    D'abord je ne vois pas en quoi ton code remplace les NaN (vu qu'il n'y a nulle part NaN), et tu ne peux pas mettre unveteur 1*2 ([1 1]) dans un élément 1*1
    La boucle n'est pas nécessaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A(isnan(A))=valeur;%remplace tous les NaN dans A par valeur
    Mais dans le cas de ta matrice, si tu mets 1 ça ne correspond pas forcément à blanc...

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    merci pour les renseignements

    je vois pas comment affecter la couleur avec le code suivant
    vu que c'est du 2D, on peut pas mettre [1 1 1] pour dire blanc, j'arrive pas à trouver la solution

    merci quand même pour l'aide

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    je me suis débrouillé avec la fonction color dans le menu edit, vu que j'arrive pas à le faire depuis le programme

    du coup ça marche j'ai modifié la légende

    merci pour les aides

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/03/2015, 14h57
  2. Réponses: 3
    Dernier message: 04/01/2013, 20h30
  3. des traitement sur une image couleur
    Par Sarah! dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 28/05/2008, 15h14
  4. [Image]Dessiner des rectangles sur une image
    Par navona dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 09/03/2006, 22h51
  5. Une infobulle à partir des coordonnées sur une image
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/01/2006, 21h20

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