reperage du centre de taches circulaires

reperage du centre de taches circulaires - C++ - Programmation

Marsh Posté le 20-12-2004 à 15:55:17    

Bonjour à tous  
 
je suis en train de faire une application sous visual c++ MFC, et je récupére des images sous formes de bitmap.
Ces images ont un fond blanc et des taches circulaires (ou plutot patatoides)noires. Et je souhaiterais récupérer les coordonnées du centre des ces taches sur mon image.
Quelqu'un pourrait il m'indiquer comment m'y prendre.
Merci d'avance.

Reply

Marsh Posté le 20-12-2004 à 15:55:17   

Reply

Marsh Posté le 20-12-2004 à 16:00:23    

Faut faire une détection de patatoïde en premier temps, donc itérer l'image à la recherche de zones noire. Tes taches sont-elles d'une seul couleurs (genre noir), où est-ce que les bords sont anti-aliasés ?

Reply

Marsh Posté le 20-12-2004 à 17:14:19    

les taches ne sont que d'une seule couleur je procède à un seuillage de l'image avant.

Reply

Marsh Posté le 20-12-2004 à 17:21:03    

je dirais que d'abord tu cherches à avoir une AABB (Axis-alignes bounding box) autour des taches: un AABB c'est le rectangle qui contiens la tache auquelle tu t'interresses.
 
puis dans cette AABB, tu fais une moyenne des coordoonées, en gros à chaque fois que tu rencontres un pixel noir, tu rajoutes ses coordonnées X,Y à un couple Somme_X, Somme_Y, et tu divises par le nombres de pixels noir rencontrés, ce qui te donne le barycentre des points noir de ton patatoide, donc:
 
1) rechercher les taches
2) pour chaque tache isolée dans un AABB:
   calculer le barycentre X,Y des pixels noir
 

Reply

Marsh Posté le 20-12-2004 à 17:22:30    

sinon, potentiellement plus rapide mais avec des restrictions, tu peux chercher à tourner autout de la patate et vectoriser le contour, et pareil tu fais une moyenne des coordoonées du contour vectorisé.

Reply

Marsh Posté le 20-12-2004 à 17:41:42    

merci pour ta réponse bjone. La solution de l'AABB me parait pas mal. Cependant comment dois je faire pour reperer les AABB de mes taches.

Reply

Marsh Posté le 20-12-2004 à 18:38:35    

J'vais fait un truc une fois comme ça, en php d'ailleurs (pour un contest que j'ai pas eu le temps de finir), où je scannais tout l'image à la recherche d'un point d'un patatoïde. Ensuite, tu tracre le contour avec un itérateur (un truc qui tourne autour d'un pixel), et en testant les conditions qui vont bien, ça traçait le contour du patatotruc, et avec ça je pouvais trouver la bounding box.

Reply

Marsh Posté le 24-12-2004 à 19:08:24    

Merci pour vos réponses!
J'ai procédé de la sorte:
Si le pixel rencontré est noir alors je parcours toutes les AABB en testant si le point est dans une zone proche de cette derniere. Si oui j'agrandie l'AABB, sinon ou s'il n'y as pas d'AABB existante j'en crée une autre.
Ainsi j'obtient une AABB autours de chacun de mes patatoides.
Et en calculant le barycentre j'obtient mes points.
Ca tourne bien...
Merci encore

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed