Je travaille, en utilisant le cadre OpenCV / C ++, sur un programme qui comptent essentiellement des objets elliptiques pouvant se chevaucher. P>
Après seuil l'image et rechercher des contours de tous les objets p>
Ma prochaine étape implique l'exclusion de l'objet qui ne sont pas faits de ellipses qui se chevauchent (je vais segmenter les autres plus tard). P>
Je me retrouve avec des objets tels que ceux-ci: p>
p>
Dans cet exemple d'image, tous les objets de droite sont négatifs tandis que ceux de gauche sont valides. P>
Mon filtre actuel exclut l'objet principalement sur le terrain de leur Quient isopérimétrique . Cependant, comme j'ai des objets avec différentes tailles et bruit, je ne suis pas toujours satisfait de cette approche. P>
Idéalement, j'aimerais avoir une mesure supplémentaire pour augmenter l'efficacité de mon filtre actuel. P>
Puisque je dois répéter cette analyse sur de nombreux contours, cela ne devrait pas être coûteux. P>
J'ai pensé aux approches telles que: p>
Mais je suis convaincu que j'ai manqué quelque chose d'évident qui est plus efficace et moins désordonné. Avez-vous des suggestions, Merci:), P>
EDIT: strong>
Comme Regis suggéra à juste titre, toute forme pourrait en fait être constituée d'un nombre suffisant de cercles.
Par conséquent, afin de rendre mon problème résolutable, j'ajouterai les hypothèses suivantes: p>
3 Réponses :
Une possibilité serait d'essayer: p>
Le graphique que vous attendez à voir pour la courbure est une série de valeurs constantes (ou variant lentement si la forme est une ellipse au lieu d'un cercle), avec des discontinuités soudaines où elle change d'un cercle à un autre. P>
Si votre image est bruyante, vous souhaiterez peut-être d'abord filtrer les valeurs de courbure. P>
Les formes à base de cercles / ellipses auront principalement une courbure significative tout autour du périmètre, tandis que les formes fabriquées à des bords droits auront des parties de la faible courbure. P>
Que vous, je vais essayer de me faire la tête autour de cela. Avez-vous un lien que je pourrais commencer?
Je soupçonne que n'importe quelle forme peut être créée à partir d'un ensemble suffisamment grand d'ellips qui se chevauchent et que vous avez un problème mal défini sur vos mains. Sauf si j'ai mal compris votre déclaration de problème. P>
Merci, vous avez raison, un nombre suffisant de petits cercles / ellipses pourraient en effet définir une forme. J'aurais dû dire des hypothèses supplémentaires (qui sont justes pour mon problème) tels que: 1) Il est très peu probable que cela observe plus de 10 cercles qui se chevauchent. 2) Dans de la même forme, la zone de la plus petite ellipse ne sera pas inférieure à une dixième de la zone du plus grand.
Avez-vous regardé dans Hough-Transformations pour les cercles et les ellipses? Il y a même un implémentation OpenCV pour les cercles disponibles. Ces transformations doivent être appliquées aux contours de vos objets. P>
Merci, j'ai vraiment essayé, merci: d. Pour moi, cela a mal fonctionné sur des objets serrés ... Je cherche maintenant l'approche suivante: 1) Faire une bibliothèque d'échantillons positifs vs négatifs. 2) Calcul des fonctionnalités des images binaires. 3) Utiliser des techniques d'apprentissage machine pour former un classificateur ...