Calcul du centre d'un objet [qt designer] - C++ - Programmation
Marsh Posté le 18-04-2006 à 17:31:37
Bonjour,
Personnellement (si il s'agit d'un objet simple) j'utiliserai la formule suivante :
Px = Somme des absices / nb de 1 trouvés
Py = Somme des ordonnées / nb de 1 trouvés
Il y a d'autres algo plus compliqués pour des objets plus complexes, celui ci devrait très bien marché pour tout ce qui est forme de base (carré, rectangle, rond etc)
Voilou
Marsh Posté le 18-04-2006 à 22:35:55
Tu prend le point le plus en bas a gauche de ta tache (P0).
Tu peux construire n - 1 vecteur partant P0 ver Pn.
Tu fais une analyse en composante principale. Tu conserves le vecteur propre associee a ta plus grande valeur propre.
Tu fais la moyenne des distances de Mahalanobis en te basant sur la matrice de covariance croisee formee par tes vecteurs.
Tu en deduis le centre de ta tache.
Marsh Posté le 19-04-2006 à 10:20:55
Pour la première réponse, j'avais déja pensé à cet solution mais je pense qu'il faudrais un résultat exacte puisque le centre me servira a guider un robot d'ou un résultat le plus précis possible...
Pour la 2ième réponse, je vois a peu près ce que tu veu dir, mais aurais tu un code source a ce sujet car la comme ca, je pourrais rien codé. C'est un peu compliqué...
Merci
Marsh Posté le 20-04-2006 à 10:47:25
Tu peux prendre chaque pixel noir, lui associer un poids de 1, et ensuite calculer le centre de gravité de l'ensemble de tes points. En considérant que l'objet a une masse uniformément répartie, ça te donne le centre réel de ton objet.
Par contre, pour peu que ton image soit en haute résolution et donc ton objet composé de centaines de milliers de points, ça va être un peu lent...
Marsh Posté le 21-04-2006 à 10:21:25
ok, et ya t'il des algorithmes pour le calcul du centre de gravité en sachant les corrdonnées [x,y] de mon objet ?
Marsh Posté le 21-04-2006 à 11:25:23
Le centre de gravité d'un nuage de points uniformément pondérés, c'est logiquement la moyenne des x et y de tous les points.
Si t'as par exemple des niveaux de gris indiquant la répartition de la masse (ou à défaut, de l'épaisseur), tu peux améliorer cet algo en faisant la moyenne pondérée par le niveau de gris des coordonnées de poins.
Marsh Posté le 21-04-2006 à 11:33:32
ok, ok pour commencer je vais fair cette moyenne, après on verra pour améliorer tout ca...
Marsh Posté le 21-04-2006 à 12:06:10
Voici un exemple de ce que ça donne avec ma méthode, et donc des objets dont le centre de gravité n'est pas vraiment évident si on se contente des bounds de l'objet.
Mes objets mesurés :
Le résultat :
Le source (C#) :
Code :
|
Marsh Posté le 04-05-2006 à 15:13:49
ok, pour le calcul du centre, je me suis fait un petit programme, maintenant, il faut que je calcul la surface de l'object détecter, j'ai fait un segmentation pour enlevé le bruit contenu dans l'image donc l'extérieur de l'objet ne contient aucun bruit (tous les pixels sont blancs) et l'objet est dessiné par un nuage noir!!
comment fair au plus facile pour calculé sa largeur et hauteur puis ca surface?
Marsh Posté le 07-04-2006 à 12:34:52
Voila, j'ai un objet repéré dans une image,
Composition de la matrice de pixel -> 0 = l'objet n'est pas la et 1->objet repéré
donc en gros, en affichant ma matrice, j'aurai une tâche noir correspondant au 1 et le reste en blanc
Comment fair pour calculé le centre de cet object en C++
Merci pour l'aide...
Message édité par heyheyhey71 le 19-04-2006 à 10:26:24