begin process at 2010 03 20 20:59:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > DIAGRAMME DE VORONOI

DIAGRAMME DE VORONOI


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Classé sous :diagramme, décomposition, voronoi, cmugraphics, image Niveau :Débutant Date de création :27/02/2007 Date de mise à jour :11/03/2007 13:10:30 Vu / téléchargé :7 700 / 704

Auteur : Pistol_Pete

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Ce petit programme permet de construire en 2D le diagramme de Voronoi. Je l'es fait en réponse à des questions que l'on m'a posé.

Le diagramme de Voronoi permet de cartographier l'image en zone d'influence.
On pourrait considérer les points comme des villes et déterminer ainsi quel est la zone qui est sous son contrôle.
On peut être sure que tous les points dans la zone d'influence de la ville est plus près en distance de la ville il appartient, que de n'importe qu'elle autre ville.


 Conclusion

J'ai créé un algorithme linéaire. Est ce que vous avez des idées pour amméliorer les performances?

Si vous voulez trouver la librairie CMUgraphics, vous pouvez la télécharger sur mon site internet:

http://pistol.petesampras.free.fr

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

28 février 2007 19:58:24 :
J'ai ajouté la possibilité de change de distance: Distance euclidienne et distance de manhattan. Ajout des stats de mon algo
02 mars 2007 20:08:53 :
Ajout de la triangulation de Delaunay: opération dual du diagramme de Voronoi
11 mars 2007 13:10:30 :
Ammélioration des performances de l'algo de voronoi =>gain de 40% sur l'algo d'origine

 Sources du même auteur

Source avec Zip Source avec une capture VISUALISATION DES IMAGES EN 3D SANS OPENGL
Source avec Zip Source avec une capture ANALYSE DE LA TEXTURE D'UNE IMAGE : FILTRE DE GABOR
Source avec Zip Source avec une capture VIEWER COMPLET POUR LE TRAITEMENT DE L'IMAGE : IMANALYSE
Source avec Zip Source avec une capture ALGORITHMES D'OPTIMISATION NON LINÉAIRE: DESCENTE DE GRADIEN...
Source avec Zip Source avec une capture CLASSE GRAPH: GESTION DES GRAPHIQUES DANS LES APPLICATIONS W...

 Sources de la même categorie

Source avec Zip Source avec une capture VISUALISATION DES IMAGES EN 3D SANS OPENGL par Pistol_Pete
Source avec Zip Source avec une capture ANALYSE DE LA TEXTURE D'UNE IMAGE : FILTRE DE GABOR par Pistol_Pete
Source avec Zip Source avec une capture MONPPM : UN AFFICHEUR .PPM par pgl10
Source avec Zip Source avec une capture MOTEUR 3D : CASTOR3D par dragonjoker59
Source avec Zip Source avec une capture VIEWER COMPLET POUR LE TRAITEMENT DE L'IMAGE : IMANALYSE par Pistol_Pete

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture DIAGRAMME DE VORONOI CENTROIDALE [WIN32] par Pistol_Pete
Source avec Zip Source avec une capture DÉTECTION DES DROITES DANS UNE IMAGE : HOUGH par Pistol_Pete
Source avec Zip Source avec une capture TRANSFORMÉE DE HOUGH: DÉTECTION DE DROITES par Pistol_Pete
Source avec Zip Source avec une capture STÉGANOGRAPHIE : CAMOUFLAGE DE TEXTE DANS UNE IMAGE par Pistol_Pete
Source avec Zip Source avec une capture TRAITEMENT DE L'IMAGE BINAIRE, RECONNAISSANCE DE FORMES par Pistol_Pete

Commentaires et avis

Commentaire de Kirua le 28/02/2007 13:03:15

Euhm, je doute fortement que ton algorithme soit linéaire ( O(n) )comme tu dis. Et si c'était le cas, ce serait vraiment dommage de vouloir le transformer en un O(n lg n)... La triangulation de delaunay, qui est le problème "dual" de celui-ci, donc de complexité intrinsèque équivalente, peut être construit en au mieux O(n lg n). D'où mes doutes.

Du reste, le résultat est assez joli, mais ça aurait été chouette que tu dessines les villes par dessus les polygones :).

Tu as utilisé quoi comme définition de distance? Euclidienne ou manhattan? (ie: sqrt(a² + b²) ou abs(a) + abs(b) ?). En fait, je ne suis pas familier avec le diagramme de voronoi, mais j'en comprends bien la définition, et je suis étonné de voir des polygones plutôt que des formes courbes quelconques, ce qui s'expliquerait assez simplement si tu as utilisé la distance de manhattan.

Sinon, le rendu est splendide!

Commentaire de Pistol_Pete le 28/02/2007 19:50:54

Salut Kirua
Je t'assure que mon algo est linéaire. Je vais bientôt mettre un doc de stat sur les performances en temps de mon algorithme.
L'équation de la droite est : y = 90 x+200 le tout en ms.

Je ne comprends pas pourquoi tu dis qu'un algo en nlog(n) est moins performant qu'un algo linéaire. La différence en temps ce fait surtout lorsque n devient très grand à l'avantage de l'algo en nlog(n)?

Sinon mon programme utilise la distance euclidienne mais je vais voir ce qui ce passe avec les autres distances...
Merci de ton commentaire en tout cas.

Commentaire de Pistol_Pete le 28/02/2007 20:05:16

Voila voila j'ai ajouté la possibilité de choisir la distance que l'on souhaite: euclidienne ou manhattan.

J'avoue que je suis assez surpris du résultat du diagramme pour la distance de manhattan. Cela donne vraiment un diagramme assez inabituelle.
Je vous invite à allez le voir, il est très sympas.

Ah oui au fait Kirua, tu peux réafficher les villes une fois que tu as tracé les polygones. (Appuye sur POINTS)

Commentaire de Kirua le 28/02/2007 20:45:56

Effectivement, c'est très joli avec la distance de manhattan, et je suis tjs aussi étonné du résultat pour la distance euclidienne :). Ton interface graphique est vrmnt agréable en tout cas.

Et ton analyse statistique est convainquante pour n < 800 en tout cas, je peux difficilement contredire. C'est juste très étonnant.

Sinon, n < n log n pour tout n > 1, donc oui, de manière tout à fait certaine, n est mieux que n log n. Aucun doute là dessus.

Commentaire de Pistol_Pete le 01/03/2007 07:58:41

Salut

Tu as tout à fait raison pour n< nlog n, je me suis emballé.
J'ai dit cela car j'ai vu des algorithmes tourner qui était bien plus rapide que le mien...
Je vais essayer de laisser tourner mon pc plus longtemps pour tester des n>800, mais c'est vrai qu'à priori, c'est bien un algo linéaire!

Commentaire de adnan05 le 07/03/2007 18:20:06

est ce que qlq avais ce pgm en builder.
merci.

Commentaire de f le 08/04/2007 20:16:17

Le meilleur algo existant est en n*log(n), meme pour les plus grands chercheurs..

Commentaire de Pistol_Pete le 10/04/2007 14:44:59

Je sais bien et je ne prétend pas avoir trouvé l'algo du siècle cependant j'ai fait des tests qui montrent que la construction du diagramme de voronoi est fait en o(n).

J'aimerai aussi comprendre car mon algo est très simple...

Tous mes tests ont été fait en mesurant le temps c'est peut etre à cause de cela.

Commentaire de Muff le 06/09/2007 16:11:07

Salut,
Si j'ai bien compris ton algo, ça consiste en gros à parcourir tous les points de l'image et à choisir pour chacun d'entre eux la ville la plus proche. À ce moment là, l'algorithme est en effet linéaire suivant le nombre de villes, il est aussi linéaire suivant le nombre de pixels dans ton image.
Le meilleur connu actuellement est en n*log(n) suivant le nombre de villes, et s'applique dans un cadre plus général: il renvoie les équations des segments qui séparent chaque région et définit de manière exacte chaque région d'influence tandis qu'ici, tu ne t'attaches qu'aux points à coordonnées entières. De plus il est en O(n) en espace mémoire utilisé tandis que le tien est en O(la surface de l'image = la surface du plan entre les villes aux extrémités, ce qui est dépendant de leurs coordonnées).
Voilà qui conclura peut-être le débat sur la complexité

Sinon, très jolies les mosaïques et sympa le choix de la distance.
On pourrait se servir de ce principe pour mettre un effet de mosaïque sur une image

Commentaire de Pistol_Pete le 10/09/2007 08:20:15

Salut Muff

Merci de ton message, il met les choses en place au niveau de la complexité. En effet je savais bien qu'il devait y avoir une différence entre ma facon de faire et celle des chercheurs...

Merci d'avoir pris le temps de poster ce message.
Tu as travaillé sur les diagramme de Voronoi ? Parce que je serais intéressé de trouver le code de la construction du réseau comme le font les chercheurs.
A+

Commentaire de nilda2007 le 10/04/2008 21:45:34

salut!
ma question sur cette methode esk ca marche avec des image en couleur ou non cad esk c 1 des methodes de segmentation des images couleurs car j'ai appliqué sur une photos un proramme sur DV mais resultat était en noir et blans mais je vois ici que le resulta est en couleur??
esk kelk1 peut m'expliqué...merciii

Commentaire de Pistol_Pete le 11/04/2008 09:40:03

Salut
Voronoi est une methode de segmentation, c'est a dire qu'il segmente l'image initiale et chaque nouvelle region obtenue aura une unique valeur.
Ex:
La region 1 aura le label 0
La region 2               1  etc...

Apres c'est a toi de faire comme tu veux. Moi j'ai choisi de mettre des couleurs aleatoires pour chaque region mais c'est un choix personnel.
donc le label 0 aura comme valeur R=rand()%255, G=rand()%255, B=rand()%255

A+

Commentaire de alfaquireilaallah le 26/07/2009 19:54:38

bonjour à tous...
j'ai un pb concernant comment on peut intégrer ces classes et fonctions
dans une application donnée en c++builder.
pouvez-vous m'aider?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

image en c++ [ par naney ] je cherche comment je peu m'aitre une image .bmp (ou autre format) dans mon prog c'est Urgent comme pour le plein écran et faite a bloc de pub pour ce imprimer et image en c++ [ par naney ] je voudre un code source qui me montre comment imprimer et un autre qui me montre comment inserais une image en c++ (n'importe quel format d'image) ex rotation d'une image [ par David ] charger une image [ par mc.solaar3 ] Comment faire pour charger une image ds un programme ? lecture d image au format jpeg [ par a-sophie ] Salut,Je souhaite lire et sauvegarder des images au format jpeg avec visual c++ .Si jamais quelqu un a des conseils ou des pistes a me donner, ce sera Imprimer une image [ par Bouba le koala ] Comment fait-on pour imprimer une image Bitmap ou jpeg avec C++ Builder car dans la doc, ils nous montre comment faire pour imprimer du texte, mais pa Bouton avec texte et image [ par karine ] Comment créer un bouton contenant un texte (genre "OK" et une image) ? charger une image dans un static [ par blackwizzard ] tout est dans le titre!merci! Changer la qualité d'une image en C et pas en C++ [ par bveg ] J'aimerais changer la qualité d'une image que l'on choisit mais dans le langage C et pas C++.Merci d'avance extraction du contour d'une image BMP [ par juliette ] On a une image en noir et blanc et on souhaiterait extraire son contour.Les images sont sous le format BMP.Extraire le contour d'une image consiste à


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,092 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales