DÉTECTION DES CERCLES DANS UNE IMAGE: HOUGH

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 13 févr. 2008 à 12:48
hida16 Messages postés 11 Date d'inscription samedi 6 juin 2009 Statut Membre Dernière intervention 14 mars 2011 - 2 nov. 2011 à 12:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45729-detection-des-cercles-dans-une-image-hough

hida16 Messages postés 11 Date d'inscription samedi 6 juin 2009 Statut Membre Dernière intervention 14 mars 2011
2 nov. 2011 à 12:01
Bonjour,
je voudrais savoir quel version de Visual studio a été utilisée pour cette source.
Merci par avance.
hida16 Messages postés 11 Date d'inscription samedi 6 juin 2009 Statut Membre Dernière intervention 14 mars 2011
2 nov. 2011 à 11:46
Bonjour,
je voudrais savoir quel est la version de Visual studio utilisée pour cette source.
Merci par avance
imeneeniso Messages postés 9 Date d'inscription mardi 9 janvier 2007 Statut Membre Dernière intervention 12 janvier 2010
5 janv. 2010 à 10:17
bonjour tout le monde:)

SVP, je suis débutante pour l'utilisation de matlab et je veux réaliser une application qui permet de sélectionner toute les cercle présentes dans une image donnée.

J'ai essayé de comprendre le code ci dessus, mais malheureusement j'ai pas compris grand chose:(

Merci de m'aider par des documents simples ou des lignes simples de code.

merci bien:)
adilensas Messages postés 1 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 27 février 2009
27 févr. 2009 à 21:05
salut tout le monde; j'ai un mini-projet concernant la reconnaissance de forme par vision artificielle.
s'il ya qel q'un des documentation sur se sujet...merci
aquamanfx Messages postés 10 Date d'inscription lundi 30 janvier 2006 Statut Membre Dernière intervention 14 mars 2008
14 mars 2008 à 09:15
Je connais Mr Deriche, je l'avais rencontré à la soutenance de thèse d'un ami.
Je viens d'ailleurs de remettre la main sur son mémoire de thèse (de l'ami!) qui (j'en suis presque certain) va énormément te plaire!
En effet tu verras tout le travail qui a été fait autour du filtrage et des optimisations (multi échelle) et des transformées de Hough pour droites et ellipses.
http://www.cmi.univ-mrs.fr/ecole-doctorale/pdftheses/LeTroter.pdf
C'est une demi réponse à ta requête au sujet de ma propre thèse (qui est confidentielle pour 10 ans...), puisque j'ai utilisé des optimisations sur Hough parfois équivalentes (même directeur de thèse... comme par hasard :o) )
A+
PS : je trouve humblement sa thèse très accessible, puisque faite dans esprit très didactique plus informatique que mathématique.
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
11 mars 2008 à 13:33
Voila la detection de contours est arrive coome promis!
C'est par ici:
http://www.cppfrance.com/codes/DETECTION-OPTIMALE-CONTOURS-CANNY-DERICHE-SHENCASTAN_45999.aspx

A+
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
7 mars 2008 à 15:26
Non, pour le seuillage, j'ai pas vraiment d'ami fidèle. Tout dépend de l'endroit ou l'on va...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
7 mars 2008 à 13:14
Et pour le seuillage, Otsu est ton ami :).
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
7 mars 2008 à 12:54
Salut
Oui effectivement, merci beaucoup pour les documents.
La detection des ellipses est quand meme largement plus interessante que la detection des cercles... Je vais essayer de trouver le temps de faire la mienne. En attendant, je travaille sur les detections optimales des contours (canny shen-castan,deriche...). Ben oui, une transformee de Hough efficasse, passe obligatoirement par la!
Je pense que ca va te plaire Kirua. Ya pas mal de math.

A+
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
6 mars 2008 à 14:17
Merci pour le lien :)
aquamanfx Messages postés 10 Date d'inscription lundi 30 janvier 2006 Statut Membre Dernière intervention 14 mars 2008
6 mars 2008 à 12:56
Rapidos en réponse au précédent message :
- http://perso.enst.fr/~maitre/BETI/ellipses/Houghol.htm de Mr Maître, des résultats et une explication "simples"
- sinon la solution de Rémy B. Arnaud L. de mon ancien labo (la publi finale de l'IEEE était plus détaillée il me semble): aletroter.free.fr/articles/SiPS05.pdf . Rémy Bulot en avait fait une encore plus rapide, mais je ne la retrouve plus... à voir
A+
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
6 mars 2008 à 12:18
Salut
Effectivement pour les ellipses cela fait un espace a 5 dimensions. En generale, les parametres de l'ellipse sont:
(x0,y0): le centre de l'ellipse
a: la taille du petit axe divise par 2
b: la taille du grand axe divise par 2
Alpha: l'orientation de l'ellipse

Je pense que pour reduire l'espace de recherche, on peut utiliser les proprietes geometriques de l'ellipse pour passer d'un espace a 5 dim a un espace a 3 dim. En effet, en selectionnant uniquement 3 points de l'ellipse, on peut definir, avec une marge d'erreur, les 5 parametres. Les points de l'ellipse, bien sur, ne doivent pas etre choisis au hazard: On doit rechercher les deux points qui definissent le grand axe et pour le troisieme peu importe.

Je pense que le temps de calcule restera relativement important: il y a 3 dimensions tout de meme!
Mais je ne pense pas que l'on puisse faire mieux que 3 dimensions. Il faudrait que je me documente mieux pour savoir ou les chercheurs en sont.

A+
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
5 mars 2008 à 13:14
Ca m'intéresserait de savoir quelles subtilités tu vas utiliser pour réduire l'espace de recherche pour les ellipses :). Parce qu'effectivement, a fait un espace de hough à ... quoi, 6 dimensions? (à pouf) A moins que 5 ... euh, j'ai un peu perdu mes bases de géométrie :p Mais deux foyers font déjà 4 dimensions, et puis il faut juste l'excentricité ou aussi autre chose?
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
5 mars 2008 à 09:53
Salut AquamanFX
Merci de ton commentaire toujours tres instructif et constructif.
Quant tu parles de reduire l'espace de recherche, je suis entierement d'accord avec toi. Cependant, c'est surtout valable dans la recherche des ellipses non? Peut etre que je me trompe mais, je ne pense pas qu'il soit possible de trouver des ellipses dans une image sans avoir la moindre connaissance des proprietes de l'ellipse que l'on recherche, en un temps de calcul raisonnable. Pour un cercle, c'est possible.
Je vais maintenant m'interesser a la recherche des ellipses. Ca me semble largement plus complique et par consequent, plus passionnant.
Faut il obligatoirement passer par la detection des deux foyers?

Salut Bakira4, merci de ton commentaire, ca me fait tres plaisir de savoir que mes sources peuvent t'aider. Je pense que les reponses de Kirua et d'AquamanFX te permettront de resoudre le probleme que tu as soulever. La methode d'Aquamanfx est sans doute plus longue a mettre en place mais donnera sans doute de meilleurs resultats.
En tout cas si tu as d'autres soucis sur la TH n'hesite pas.

A+
aquamanfx Messages postés 10 Date d'inscription lundi 30 janvier 2006 Statut Membre Dernière intervention 14 mars 2008
4 mars 2008 à 19:02
Entièrement d'accord avec Kirua.
Cependant s'il s'agit de petits objets résiduels alignés sur une droite plus grande détectée au préalable, il faut indexer les points pour regarder les extrema. Et en fonction d'une loi de distance isoler ou garder par post traitement ce qui intéresse.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
4 mars 2008 à 18:42
A priori, les petits objets auront peu de points, donc il suffit, je pense, d'utiliser un seuil plus élevé au moment de la sélection des droites dans l'espace de Hough.
bakira4 Messages postés 3 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 12 mai 2008
4 mars 2008 à 18:20
Bonjour à tous!
Etant en ce moment en plein projet portant sur le traitement d'image,
je souhaiterais savoir si vous connaissiez un moyen simple et peu couteux de supprimer les "petits objets" d'une image?
Car je tente de faire un algo de détection de ligne (aider par la LTI lib) cependant la transfirmé de hough fournit définit comme droite tout segment de l'image j'obtien donc des résultats inéxploitable...
En tout cas je tiens a remercier Pistol pour toutes les sources sur le domaine qu'il a publié; vraiment beau travail!
aquamanfx Messages postés 10 Date d'inscription lundi 30 janvier 2006 Statut Membre Dernière intervention 14 mars 2008
1 mars 2008 à 09:15
C'est une des méthodes que l'on peut utiliser en effet. Il est souvent intéressant dans les HT de coupler certaines variables afin de réduire l'espace de recherche.
Sinon, je vois que tu fais une méthode de 1 à m; mais la méthode m à 1 est pas mal quand tu n'as pas trop de points (tu testes tous les triplets de points de ton image, ça fait du C(n,3) (combinatoire de 3 avec n points) ). Avec une petite recherche rapide des rayons potentiels en plus, ça "dépote" en temps de calcul :o)
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
13 févr. 2008 à 13:43
Pour s'affranchir totalement du rayon du cercle recherché, il y aurai cette méthode bien meilleur coté perf et mémoire:

En calculant l'image des gradients,avec un Sobel par exemple, on connaitra direction du vecteur pour chaque point des contours.
Donc au lieu de tracer des cercles dans l'accumulateur, on pourra tracer des droites perpendiculaires a la direction de ce vecteur. Toutes ces droites convergeront vers un unique point: le centre du cercle.
Et la, on s'affranchie totalement du rayon des cercles recherché.

Cette méthode permettrait de ne pas calculer n fois la transformée de Hough

Dis moi ce que tu en penses:
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
13 févr. 2008 à 13:32
Salut Kirua

Oui c'était déja avec moi que l'on aavais eu cette discussion sur la transformée de Hough. C'était sur ma source :
http://www.cppfrance.com/codes/DETECTION-DROITES-DANS-IMAGE-HOUGH_43486.aspx

Si j'ai bien compris, la méthode que tu me proposes est en quelque sorte de calculer la transformée de Hough 2D pour tous les rayons r afin de constituer l'espace de Hough 3D.
Effectivement en effectuant cette methode, il n'y aurai plus besoin de connaitre le rayon du cercle recherche.
Tu remarquera que c'est ce que je fais dans mon traitement 1:

HoughCircleCompute(Rmin,Rmax,&Img[7],&X,&Y,&R);
Je calcule Rmax -Rmin fois la transformée de Hough 2D
Ta méthode revient bien a cela, non?
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 févr. 2008 à 12:48
Salut!

En dessinant des cônes dans un espace de Hough 3D plutôt que 2D, à savoir: avec les coordonnées (x, y) du centre comme tu fais + le rayon r du cercle, tu peux supprimer l'exigence de la connaissance du rayon. Par contre, ça va prendre carrément plus de place, et la discrétisation de la troisième dimension va être assez critique, ça c'est clair.

C'est déjà avec toi qu'on avait eu la discussion sur la détection des droites non?
Rejoignez-nous