Précédent   Forum des professionnels en informatique > Environnements de développement > MATLAB > Images
Images Forum d'entraide sur le traitement d'images en MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2012, 11h18   #1
Invité de passage
 
Inscription : septembre 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 15
Points : 2
Points : 2
Par défaut Masquer plusieurs polygones (ROI) simultanement

Bonjour à tous,

Je souhaiterai masquer simultanément plusieurs polygones (ROI) dont j'ai les coordonnées géographiques sur une image georéférencée. En gros, mon image est une image satellite d'une partie de côte avec un peu de terre, un peu de mer et des iles. Je souhaiterai garder seulement les valeurs satellites correspondant au domaine marin et enlever les valeurs correspondants aux iles et la terre.

Normalement, j'utilise la fonction inpolygon pour supprimer le domaine terrestre:
Code :
1
2
3
4
5
6
 
Mask=load([rep '../Coastline.txt']);   
xv=Mask(:,2);
yv=Mask(:,1);
IN = inpolygon(Xp,Yp,xv,yv);  
ValeurSatellites(IN)=0;
Avec le fichier coastline.txt qui contient les coordonnées du trait de côte:
Code :
1
2
3
4
5
6
-18.247528	146.224556
-18.255861	146.243750
-18.230028	146.213750
-18.193722	146.219167
         ....
-18.247528	146.224556
Je voudrais supprimer également en même temps les iles aux alentours, c'est à dire lire un fichier txt unique contenant les coordonnées du trait de cote + les coordonnées du trait de cote des différentes iles.
J'ai essayé un fichier txt du genre:

Code :
1
2
3
4
5
6
7
8
9
-18.247528	146.224556
-18.255861	146.243750
-18.230028	146.213750
-18.193722	146.219167
-18.247528	146.224556
nan	nan
-18.750833	146.566250
-18.749583	146.567500
-18.750833	146.566250

Mais cela ne marche pas: les masques se superposent. D’où les questions suivantes:
- peut on utiliser la fonction inpolygone pour masquer plusieurs polygones dont les coordonnées géographiques seraient indiquées sur le même fichier txt?
- Ou bien faut-il que je créer un fichier txt pour chacune des iles....(sachant qu'il y en a plus de 100...)
- ou existe il une autre fonction matlab plus adaptée?

Merci d'avance pour votre aide! :-)
KrokroAus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 11h48   #2
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 918
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 918
Points : 15 908
Points : 15 908
Dans le cas où tu insérerais des NaN entre chaque ROI dans ton fichier texte, essaie ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
idx = find(isnan(Mask(:,1)));

xv = Mask(1:idx(1)-1,2);
yv = Mask(1:idx(1)-1,1);

IN = inpolygon(Xp,Yp,xv,yv);

for n = 1:numel(idx)-1
    
    xv = Mask(idx(n)+1:idx(n+1)-1,2);
    yv = Mask(idx(n)+1:idx(n+1)-1,1);

    IN = IN | inpolygon(Xp,Yp,xv,yv);
    
end

xv = Mask(idx(end)+1:end,2);
yv = Mask(idx(end)+1:end,1);

IN = IN | inpolygon(Xp,Yp,xv,yv);

ValeurSatellites(IN) = 0;
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• 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)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 03h55   #3
Invité de passage
 
Inscription : septembre 2010
Messages : 15
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 15
Points : 2
Points : 2
C'est parfait, ça marche très bien! Merci beaucoup pour l'aide.
KrokroAus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h06.


 
 
 
 
Partenaires

Hébergement Web