|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 11 ![]() |
Bonjour à tous,
volà je suis débuante en malab et je suis complètement bloquée. J'exécute mon code de kmeans et j'obtiens les deux vecteurs résultats mu et mask En premier lieu, j'ai pas bien compris le vecteur mask (vecteurs des k moyennes), s'il correspond au positions de centroides alors pourquoi il n'est pas de taille nombre des classes? De plus, je veux exploiter ces résutats pour faire la segmentation, mais je n'ai pas su comment! Voilà on bout de code: Code :
Merci |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 3 598 ![]() |
Bonjour,
Ton entrée étant une image en niveaux de gris, je présume que tu souhaites travailler sur chaque pixel, et non sur chaque ligne de cette image... Dans ce cas, la ligne [mu,mask]=kmeans(r,nb); n'est pas correcte. En effet: Citation:
Pour ce qui est des sorties: [mu,mask] = kmeans(r(:), nb);
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider ![]() Une erreur? "Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).Citation:
|
||
|
|
00
|
|
|
#3 | ||||
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 11 ![]() |
salut à tous,
je veux vous expliquer mon problème de plus. Je veux segmenter mon image en utilisant les réseaux bayésiens naïfs tout en se basant sur les paramètres résultats du kmean(mask et mu). Code :
La fonction stat permet de faire des statistiques sur mask Code :
Ensuite je vais faire le calcul de la distance euclidienne ....... En fait, tout est magnéfique sauf celui de t et de mu et je n'en sais plus comment faire! Y a t-il une solution ou une autre solution de faire la segmentation par les réseaux bayésiens naïfs!!!!!!!!! s'il vous plait, aidez moi! |
||||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 11 ![]() |
Bonjour à tous,
Est ce que je peux, pour calculer la distance euclidienne entre un pixel d'une image et une classe, utiliser les barycentres données par kmeans. En fait, est ce que ce raisonnement est vrai ou non: Code :
dis(m,i,j,classe)=abs(m(i,j)-barycentre(classe)) A noter que les barycentres sont donnés par kmeans? De plus, quelle est la différence entre et Je sais que dans le premier cas, il y a traitement pixel par pixel et la deuxième par ligne, mais je n'ai pas bien compris le cas des lignes puisque dans le cas de trois classes, mask a 3 lignes mais plusiurs colonnes, donc ou sont les barycentres des trois classes? Surtout que pour le cas de pixel par pixel, mask est de la forme de 3*1, c est à dire il y a uniquement les barycentres des trois classes!!!!!!!!!!! J'espère que j'ai bien expliqué mon problème et je suis en attente d'une réponse aussi urgente. Merci |
|
|
00
|
|
|
#5 | ||
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 3 598 ![]() |
Oui le calcul de la distance est bonne. Mais je verrais plus quelque chose comme dis(i,j,classe) sans m.
Comme tu as pu le voir avec mon lien sur l'opérateur colon :, r(:) sert à obtenir le vecteur colonne (de taille numel(r) x 1) de tous les pixels de ton image. Comme déjà dit: Citation:
Pour ce cas: [mu,mask] = kmeans(r, nb);
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider ![]() Une erreur? "Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).Citation:
|
||
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 11 ![]() |
Merci de m'avoir répondu assez vite et je m'excuse pour les balises de codes!
Voilà j'arrive à calculer les distances euclidiennes mais mon image finale segmentée est de couleur noir (totalement noir), je pense qu'il y a quelque chose qui ne marche pas bien das mon code que je n'arrive pas à la détecter!! Voici l'algorithme que je veux appliquer: Algorithme : segmentation _avec_ réseau _bayésien _naïf Pour chaque pixel (Pi) Pour chaque classe (Cj) Calculer probabilité de classe (Cj) pour le pixel (Pi) Fin pour X max (prob (classe(Cj)/pixel(Pi)) Fin pour Fin algorithme avec: Prob ( Cj/Pi )=prob ( Cj ) * ∏_(k=1)^N▒prob(Pk/Cj) ; tel que∀ k ∈{1..N}, Pk est un pixel voisin à Pi. Prob (Cj)=nbre des pixels de classe Cj /nbre total des pixels. Prob (Pk/Cj)= distance euclidienne entre Pk et Cj/∑_i▒〖distances euclidiennes entre Pk et Ci〗 . Distance euclidienne entre Pk et Cj = min( Pk,Pclasse j) tel que Pclasse j est un pixel de classe Cj. Note : Un pixel est représenté non pas unquement par sa valeur d’intensité (0..255) mais aussi par les valeurs de ses 8 voisins : on a une grille 3x3. Est ce que vous pouvez m'aider! je peux aussi vous exposer les codes que j'ai pu écrire!!!!!!!! S'il vous plait je n'ai plus d'idées pour continuer! |
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 11 ![]() |
salut à tous,
je veux afficher mon image segmentée, mais ce qui m'a attiré l'attention la couleur de mon image: en fait même si le niveau de gris est égal à 127 (couleur grise, l'affichage sera blanc!!!!!!! Y'a-t-il un problème dans mon code ou c'est à cause que mon image est gray! Je n'en sais plus. Code :
|
||
|
|
00
|
|
|
#8 | |
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 3 598 ![]() |
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider ![]() Une erreur? "Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).Citation:
|
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 11 ![]() |
Bonjour,
merci de m'avoir répondu assez vite. J'ai vu la discussion et j'ai utilisé la normalisation déjà mentionnée, mis rien ne change toujours une image blanche même si le niveau de gris est égal à 127. De plus, je veux savoir quelle est la différence entre imshow(img) et image(img)! Merci d'avance |
|
|
00
|
|
|
#10 | |||||
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 3 598 ![]() |
Quel code as-tu utilisé?
Code :
Code :
Pour la différence entre ces fonctions, voir ce message
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider ![]() Une erreur? "Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).Citation:
|
|||||
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 11 ![]() |
salut,
c'est fonctionnel et merci infiniment. Mais, pourquoi avez vous utilisé res = ones(100)*127; Je n'arrive pas à le comprendre! Je m'excuse pour le dérangement par ce type de questions mais je suis débutante en matlab. |
|
|
00
|
|
|
#12 | |
![]() ![]() Jérôme Inscription : septembre 2009 Messages : 3 598 ![]() |
Tu m'as parlé d'une image avec un seul niveau de gris d'intensité 127.
C'était juste pour générer rapidement une image 100x100 reflétant ceci à fin d'exemple. Tu peux regarder la partie V du tutoriel Gestion des matrices de Dut pour plus de détails.
__________________
Débutant en MATLAB? Vous voulez faire une Interface Graphique? Les Tutoriels et la FAQ sont là pour vous aider ![]() Une erreur? "Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).Citation:
|
|
|
|
00
|
|
|
#13 | ||
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 11 ![]() |
salut à tous,
J'ai pu enfin segmenté mon image donnée par mon enseignant, mais je suis face à un nouveau problème. En fait, c'est très bien fait pour 2 classes et 3 classes, alors que si je fixe le nombre de classes à plus que 3, mon code m'affiche une image disant à deux classes uniquement. Je pense personnellement que c'est à cause des niveaux de gris qui ne sont pas assez éloignés, c'est à dire qu'il n'y a pas assez de différence entre 0 et 85 par exemple. Aussi, je pense que c'es à cause aussi des barycentres fixés par kmeans dès le début, je ne sais pas pourquoi exactement mas c'est ça ce que je pense. Est ce qu'il y a une méthode pour bien différencier entre les couleurs des classes surtout que l'image affichée est en iveau de gris non pas couleur!! Code :
|
||
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 11 ![]() |
salut à tous,
j'ai pu segmenté mon image et de l'afficher, alors que mon problème se pose au niveau de l'instabilité du résultat obtenu Je m'explique, lorsque j'exécute mon code pour la première fois (pour 3 classes), une image est affichée, si je relance l'exécution une autre fois, une autre image est affichée. Je pense que c'est à cause des barycentres fixés par kmeans dès le début. Est ce que quelqu'un peut m'aider? |
|
|
00
|
|
|
#15 | ||
![]() ![]() Inscription : août 2007 Messages : 3 579 ![]() |
Bonjour,
kmeans par défaut initialise de façon aléatoire les centres de tes régions. Il existe d'autres méthodes décrites dans la documentation. Tu pourais utiliser toujours les mêmes centres en ré-initialisant les fonctions aléatoires : Code :
__________________
Pour une bonne utilisation des balises code c'est ici! Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sourcesLa nature est un livre écrit en langage mathématique. Galilée. |
||
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 11 ![]() |
Bonsoir,
Mon résultat est en fait très instable par rapport à l'obtention de la meilleure segmentation, c'est à dire je dois faire beaucoup d'exécution pour l'obtenir! D'autre part, est ce que c'est possible que les pixels de l'image seront affectées à 2 classes uniquement malgré que dans l'appel du kmeans le nombre de classes est 3! Vraiment je suis au bout d'une phase que je n'en sait plus si je suis sur le bon chemin ou non plus!!!!!!!!!!!!!!!! Pouvez vous m'expliquer de plus " c'est qu'il y a un problème de méthode" (les kmeans devrait fournir des résultats relativement différents à chaque éxécution mais globalement très proche normalement). Est ce que ma méthode est fausse!!!!!!!!!!!!! Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com