Bonjours,
j'ai une image img, et ses contours dans edg;
j'ai essayer de mettre les contours edg sur l'image img de façon que chaque contours ait une couleur différente.
aidez-moi svp![]()
Bonjours,
j'ai une image img, et ses contours dans edg;
j'ai essayer de mettre les contours edg sur l'image img de façon que chaque contours ait une couleur différente.
aidez-moi svp![]()
Salut !
Ceci n'est pas une question propre à Matlab : tu veux mettre une couleur pour chaque contour...
Mais déjà, qu'est-ce qui différencie un contour d'un autre pour toi ? Imagine alors la difficulté pour un ordi si même à nous ça ne nous paraît pas évident ?
En fait, il faut identifier les contours, puis les colorer... Le problème d'identification n'est vraiment pas simple : ça s'appelle de la labellisation...
Par exemple, on peut dire qu'un contour, c'est une courbe qui est "continue" cad que pour tout point de ton contour, il y a toujours un pixel voisin appartenant à ce même contour...
Dans ce cas, tu recherches tous les pixels connectés entre eux, puis tu les colories de la même façon...
Le souci, c'est quand 2 contours se croisent !!
Tu voies ce que je veux dire ? C'est pas simple du tout en fait !
bonjour, et merci pour ta répense.
Aprés avoir détecter les contours des objets d'une image "img" je sauve le résultat dans une nouvelle image "edg". Ensuit, je fais un étiquettage avec bwlabel et je le sauve dans "etq".
Maintenant je cherche à afficher l'image "img" et dessus j'affiche "etq" pour voir la positions de mes contours sur mon image "img".
es-ce que la solution marchera avec "montage".
Merci de votre aide...
@+![]()
bah un truc simple serait dans img de remplacer tous les pixels correspondant à un contour par une couleur...
Par exemple :
- parcourir etq
- pour tout pixel (x,y) non nul, copier la valeur de ce pixel dans img en (x,y)...
Bon c'est basique, mais ça marche non ?
donc :
es-ce correct ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 img(etq(:,:)~=nan)=etq(:,:) ;
merci.
@+
Envoyé par kmaniche
quand tu veux parler d'une matrice entière, pas besoin de
ensuite au lieu de faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 etq(:,:) tu peux simplement écrire etq
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 M~=nan il vaut mieux utiliser ~isnan(M)
Quant à savoir si c'est correct, essaye, tu verras si Matlab te jette...![]()
salut,
pour afficher les contours, tu peux utiliser la fonction label2rgb.
normalement :
devrait marcher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 rgb = label2rgb(etq); imshow(rgb);
Maintenant si j'ai bien compris tu voudrais l'image des contours en surimpression sur l'image d'origine, c'est bien ca ?
Une solution serait de detecter les pixels qui sont a la fois dans la structure ET pas sur un contour, puis de colorer ces pixels en blanc.
Essaie un truc du genre (peut-etre a adapter en fonction du format de img et etq) :
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 rgb2 = rgb; % image des contours [i j] = find(img & etq==0); % detections des pixels interieurs rgb2(i, j, :) = 1; % on les colore en blanc imshow(rgb2); % on affiche
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager