Accueil > Forum > > > > nuée dynamique
nuée dynamique
vendredi 14 octobre 2005 à 13:47:43 |
nuée dynamique

S12
|
Bonjour à tous , je voudrais appliquer l'algorithme des nuées dynamique sur l'histogramme de niveaus de gris pour trouver trois seuils. je n'ai pas compris comment l'appliquer sur un histograme d'une seule dimension. merci pour votre aide
|
|
mercredi 19 octobre 2005 à 13:33:36 |
Re : nuée dynamique

Vulpetrus
|
c'est exactement le meme principe que sur un univers à n dimensions : - première étape : placer les barycentres ( les niveaux de gris sont quantifiables ? si c pas le cas t'auras du mal à appliquer l'algo des nuées), tu les repartie de manière qu'ils couvrent uniformement ton univers.(blanc (0 /n)- gris (n/2 / n) - noir ( n /n) ) - deuxième étape : tu associe à chaque pt (dans ton cas c des barres d'histogramme) le barycentre qui lui est le plus proche. - troisième étape : tu recalcule chacun des barycentre en fonction des points qui leur sont associés. - tu reitère autant de fois que tu souhaite les étapes 2 et 3 (normalement ca converge, les barycentre n'évolue plus apres un certain nombre d'étapes) si t as placé trois barycentres , à la fin tu trouve tes trois seuils. voilà si j'ai pas été clair n'hésite pas.
|
|
jeudi 20 octobre 2005 à 10:55:39 |
Re : nuée dynamique

S12
|
Bonjour VULpetrus , merci beaucoup de ton aide,
non j'ai pas quatifié mes niveaux de gris , pourquoi les quatifier?
je t'explique si j'ai bien compris : j'ai un histograme dans mon cas je voudrais troi seuils c'est dire le coupe en 4 (4classe)et aprés je choisi un barycentre dans chaque classe ( je peux choisir des pics de l'histogramme), je n'ai pas compris la troisième étapes est ce que je choisi chaque point dans l'histogrmme et je calcule ça distance avec les autre barycentre pour les affecter a la classe.
S12
|
|
jeudi 20 octobre 2005 à 14:19:24 |
Re : nuée dynamique

Vulpetrus
|
ben la quantification te permet le calcul de barycentres. ----------------------
non trois seuils => trois classes pour chaque classe tu lui associe un pic d'histogramme. une classe est déterminée par son barycentre.
dans notre cas,pour savoir à quelle classe appartient un point de l'histo, tu determine la distance de ce point par rapport à chacun des barycentres, le point appartiendra alors à la classe dont le barycentre est le plus proche.
pour chaque point de l'histogramme tu determine la classe (barycentre) qui lui est la plus proche.
une fois que tu as fait cela, tu recalcule la valeur du barycentre de chaque classe : pour cela tu determine le barycentre propre à chaque classe : calcul du barycentre de tous les points appartenant à la classe.
tu reassocies à chaque classe son nouveau barycentre...
tu recherche alors à nouveau pour chaque point de l'histo, le barycentre qui lui est le plus proche et tu lui associe ce barycentre.
tu refais les etapes autant de fois que possible.
la troisème étape : elle consiste à calculer le barycentre réel de la classe, il correspond au point "moyen" qui represente le mieux les points de cette classe. ( le barycentre entre deux points correspond au centre de ces deux points, celui de n points quantifiables p1, p2, ..., pn de valeurs respectives v1,...,vn est : barycentre = (p1.v1+p2.v2+...+pn.vn)/n
voilà en espérant que j'ai été plus clair ^^ a+
|
|
jeudi 20 octobre 2005 à 14:21:45 |
Re : nuée dynamique

Vulpetrus
|
pardon barycentre = (v1+v2+...+vn)/n
|
|
mardi 22 novembre 2005 à 10:09:58 |
Re : nuée dynamique

S12
|
bonjour voici le programme du kmeans que j'ai fait avec matlab est ce que c'est juste. aprés je vais le convertir en C A = imread( 'noirsat.bmp'); B = double(A(:,:,1)); his = zeros(256,1); d3 = zeros(256,1); [nl nc] = size(B) ; % calcule l'histogramme
for i=1:nl for j=1:nc val= B(i,j)+1; his(val) = his(val) + 1; end end % une gaussienne pour lisser l'histogramme Bp = var(var(his)) [f1, nn] = FIRGAUSS(2, 'minorder',1); %histt = his(1:50); res2=conv(his,f1); p=1; v=1; res2=max(his)*(res2/max(res2)); [n2,m2] = size(res2); dn2 = round((n2-length(his))/2); res22 = res2(dn2:n2-dn2-1); y2=diff(res22); figure(3) plot(y2) %trouver les pic de l'histogramme for i=1:length(y2)-1 if ( y2(i) >=0 & y2(i+1)<=0) pic(p)= i+1; p=p+1; end if (y2(i) < 0 & y2(i+1) > 0) val(v)= i+1; v=v+1; end end % je prend les trois premier pic comme des barycentre bary1 = pic(1); bary2 = pic(2); bary3 = pic(3);
% Kmeans for kk= 1 : 20 j=1 k=1 f= 1 for i = 1 : 256 , %calcule la distance entre chaque point et les barycentre dist= sqrt( ((bary1-i)^2) + ((bary1-i)^2) ); dist1= sqrt( ((bary2-i)^2) + ((bary2-i)^2) ); dist2= sqrt( ((bary3-i)^2) + ((bary3-i)^2) ); if(dist <dist1 & dist <dist2) % d1 classe 1 d1(j)=i; j=j+1; end if(dist1 <dist & dist1 <dist2) % d2 classe 2 d2(k)=i; k=k+1; end if(dist2 <dist & dist2 <dist1) % d3 classe 3 d3(f)=i; f=f+1; end end % recalcule le barycentre for j=1 :length(d1) bary1 = bary1 + d1(j) end bary1 = bary1/length(d1) for j=1 :length(d2) bary2 = bary2 + d2(j) end bary2 = bary2/length(d2) for j=1 :length(d3) bary3 = bary3 + d3(j) end bary3 = bary3/length(d3) end merci pour votre aide 
|
|
mardi 22 novembre 2005 à 14:44:43 |
Re : nuée dynamique

Vulpetrus
|
je ne suis pas vraiment rentré dans le détail mais bon pour tout ce qui est nuée dynamique ca à l'air pas mal (initialisation/affectation des points/calcul des bary/réaffectation.)...par contre tu dois faire une moyenne pondérée pour calculer le barycentre, dans le cas contaire les seuils à la fin du traitement ne reflèteront pas ton histogramme : en fait tu risque de récuperer trois seuils respectivement à 1/3, 2/3 et 3/3 de ton espace. donc supposons que ton histogramme se represente par la fonction y=f(x), on aura alors : % recalcule le barycentre total1=0; for j=1 :length(d1) bary1 = bary1 + d1(j)*f( d1(j) ) total1 = total1 + d1(j)*f( d1(j) ) end bary1 = bary1/total1 tu fais la même chose pour bary2 et bary3. j'ai un avis assez partagé sur l'utilisation de ta fonction de lissage qui semble être une bonne idée. bonne chance.
|
|
jeudi 24 novembre 2005 à 09:59:46 |
Re : nuée dynamique

S12
|
 merci encore tu m'a dis de remplacer par ça total1=0; for j=1 :length(d1) bary1 = bary1 + d1(j)*f( d1(j) ) total1 = total1 + d1(j)*f( d1(j) ) end bary1 = bary1/total1
mais ici je vois que tolal1 est le même que bary1
|
|
jeudi 24 novembre 2005 à 10:54:13 |
Re : nuée dynamique

Vulpetrus
|
mdr ^^ effectivement, excuses-moi je suis allé un peu vite ^^ total1=0; for j=1 :length(d1) bary1 = bary1 + d1(j)*f( d1(j) ) total1 = total1 + f( d1(j) ) ( total des repartitions : nb d'elements sur lesquels portent l'histo) end bary1 = bary1/total1
|
|
Cette discussion est classée dans : dynamique, appliquer, nuée
Répondre à ce message
Sujets en rapport avec ce message
interface dynamique [ par emilia123 ]
Bonjour. je souhaite dans le but de créer un chat en C++ sous builder, de créer dynamqieument l'interface. Mais je ne sais pas comment gerer les évène
Affichage d'une image dynamique [ par jelly ]
Je cherche à afficher une image dans une boîte de dialogue, sachant que cette image ne sera pas stockée dans l'exécutable (via le .RC), mais sera dans
Redimensionner un tableau dynamique [ par BenHur ]
Bonjour, j'aimerais savoir s'il existe une fonction en C++ pour redimensionner un tableau dynamiquement. Au même titre que REDIM en VB. Merci
Urgent : vue dynamique !!!! [ par ludovichi ]
Bonsoir,Je suis à la recherche d'une méthode permettant de rendre mes vues dynamiques en C++ avec Visual. Je m'explique sur une vue principale j'ai de
IP dynamique [ par icepower ]
bonjour,pour mon plaisir ;) j'aimerais faire un serveur pour jouer a la coinche, pour ce je voudrais savoir si il est possible d'utiliser une ip dynam
heritage et dll dynamique [ par dune ]
Bonjour,je programme un gestionnaire de plugins et certaines fonctions et class doivent etre utilisees dans chaque plugin. Je mets donc mes fonctions
Help : déclaration dynamique de TABLEAU ??? [ par TheBabyCool ]
J'ai besoin d aide, car je ne sais pas comment déclarer dynamiquement un tableau.Merci
tableau dynamique de structure en C ? [ par axl79 ]
salutje voudrai faire un tableau dynamique de structures. voici ma structure: struct struct_arete { int sommet1; int sommet2; int quantite;} arete;com
raccourci clavier temporaire [ par bonaika ]
J'utilise :TForm mais non pas createwindowex,TmainMenu1- est possible d'utiliser les modèles *.dot de Winword dans un editeur de texte creer à partir
inverse de matrice dynamique [ par anaisa ]
Aidez nous please c pr programmer en langage Votre texte ICIC l inverse de la matrice dynamique merci bcp !!!!!!
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|