2011-01-27 2 views
5

Je dois faire le gabarit de modèle dans 360 degrés.modèle correspondant à la rotation

Généralement le modèle est 80 * 120 et l'image est 640 * 480 en niveaux de gris (8 bits).

Pour la non-rotation j'utilise opencv cvmatchtemplate qui fonctionne très bien.

J'ai essayé de faire tourner le gabarit à différents angles et de faire cvmatchtemplate, ça marche mais ça prend trop de temps.

Pour une correspondance de modèle normal, cela prend 12 ms et pour 360 degrés, moins de 50 ms est requis.

+0

Qu'essayez-vous exactement d'accomplir? Peut-être existe-t-il une alternative à un modèle de correspondance ... Le modèle change-t-il souvent? Sinon, vous pouvez les faire pivoter et les enregistrer, puis utiliser les modèles pivotés. Cela devrait être plus rapide ... et si le gabarit (répété) lui-même prend trop de temps, vous devriez envisager d'utiliser une autre méthode ... Avez-vous des exemples d'images? – evident

Répondre

0

Rechercher dans Google Scholar pour "fonctions discriminantes synthétiques" ou "filtres de corrélation composites". C'est un bon point de départ: http://www.opticsinfobase.org/abstract.cfm?URI=ao-31-23-4773. Si vous pouvez trouver le livre "Correlation Pattern Recognition", la section 6.2 explique également les filtres composites.

L'idée principale est de prendre les modèles générés en faisant tourner vos images et de générer un seul modèle synthétique. Pour ce faire, la formulation d'un système d'équations linéaires de la forme

Ax = c 

A est la matrice de coefficient généré à partir des modèles dont vous disposez. x est le modèle synthétique que vous allez déterminer, et c est un vecteur de contraintes. Les contraintes peuvent être définies sur inclure certains modèles et rejeter autres.

Le problème est que lorsque vous combinez trop de modèles en un, vous commencez à perdre les performances correspondantes. Il existe, bien sûr, des moyens de surmonter ce problème en fonction des informations supplémentaires dont vous disposez sur les images dans lesquelles vous prévoyez d'utiliser vos modèles synthétiques.

4

Si vous convertissez votre modèle et votre image en coordonnées polaires, vous pouvez effectuer la recherche comme s'il s'agissait d'une traduction. Cela devrait être beaucoup plus rapide car ce n'est qu'une transformation - vous pouvez l'implémenter efficacement.

Je pense qu'il est difficile d'obtenir un bon résultat sur 360 degrés. Le modèle doit avoir changé pendant cette transformation. Si ce n'était que quelques degrés, il est moins susceptible de changer.

Jetez un oeil à "Une FFT technique basée sur la traduction, la rotation et l'enregistrement d'images invariant d'échelle", Reddy et Chatterji, IEEE Transactions on Image Processing, 1996.