2011-03-26 2 views
1

J'ai créé un code Matlab, qui trouvent Somes formes dans une image en utilisant regionpros et bwbounaries fonctions.avec Matlab Reconnaître les formes

J'ai:

STATS = regionprops(L, 'all'); 

et de STATS je pourrais facilement trouver toutes mes formes Aire et périmètre. Mon problème est le suivant: Je veux trouver les formes "carrées" et je fais dans toutes les formes le calcul suivant 16 * area/(perimeter * perimeter), si cette valeur est près d'un alors je "mai" avoir un carré. Mais d'autres formes comme cercles ou rectangles sont également proches. (Certains carrés peuvent également être tournés dans l'image). Y at-il une meilleure façon de distinguer les formes (comme des cercles, des triangles ...)?

Répondre

2

Matlab a une fonction

procrustes(X,Y) 

qui calcule la distance entre deux formes en fonction des types de transformations qu'il faudrait pour déplacer les points définis par X sur les points définis par Y. Pour de nombreuses tâches de classification de forme La minimisation de cette distance est un moyen utile de catégoriser les instances bruitées de formes. Si votre problème a des formes «parfaites», cela devrait fonctionner très bien. Ayez juste Y comme un carré parfait, et chaque fois que la transformation linéaire de X à Y est une échelle pure, alors vous savez que X est aussi un carré. Vous pouvez effectuer une vérification logique simple pour sélectionner uniquement les formes satisfaisant ce type de propriété.

+0

+1 pour nommer une fonction matlab que je ne connaissais pas. – John

+0

Le paquet Python PyGeometry a une fonction d'optimisation Procrustes similaire si vous faites ça en Python. – ely

Questions connexes