Le Suivi d'objets dans EmguCV
Je suis la construction d'un objet de suivi de programme de suivi de l'objet inconnu. L'utilisateur doit sélectionner une région dans le flux vidéo en direct qui devrait être suivi. Mon projet est semblable à cette vidéo.
http://www.youtube.com/watch?v=G5GLIKIkd6E
J'ai essayé une méthode, mais elle n'est pas assez robuste et le suivi se déplace beaucoup. Je suis donc à partir de zéro.
Quelqu'un connaît une méthode sur comment je peux trouver l'un dans la vidéo? Je suis un newbie dans emgucv et que, désormais, je n'ai vraiment aucune idée de par où commencer à nouveau.
OriginalL'auteur Peter | 2012-01-05
Vous devez vous connecter pour publier un commentaire.
La vidéo suggèrent modèle d'appariement qui, en raison de la vitesse je m'attends il est plus susceptible d'être une FFT (Fast Fourier Transform) de la Méthode, c'est assez facile à mettre en œuvre dans EMGU toutefois obtenir parfait, c'est dur.
Modèle Correspondant
D'abord le modèle de la méthode de correspondance, j'ai fait une méthode qui va correspondre à un objet dans une image, vous l'alimentez FFT ne fonctionne que sur un seul spectre des images pour la couleur, vous aurez à les diviser le spectre et ajouter les résultats des matrices ensemble:
La chose que la plupart des gens oublient est de remplir le tableau avec des zéros s'apparente à la taille du modèle, nous utilisons des zéros car cela n'a aucun effet sur la méthode fft. Nous pad de la matrice d'autre, nous n'avons pas traiter les données autour du bord correctement et nous pouvons manquer les éléments correspondants.
Le deuxième point, et je ne peux pas souligner à quel important c'est que la FFT méthode au moment de retourner un match pour les objets coin en haut à gauche. result_Matrix.MinMax trouve le lieu dans lequel l'objet est le plus susceptible d'avoir de correspondance. Il y a beaucoup de choses que vous aurez besoin d'expérimenter avec donc plus de problèmes de poser ici ou EMGU et je vais vous aider quand je peux. Je vais copier-coller de cette solution.
La Méthode dans la Vidéo
Eh bien, je vous laisse le code de la plupart de ce que je suis bloqué pour le moment, mais en effet l'utilisateur utilise l'événement click d'un paintbox de trouver ensemble e.X et e.Y emplacement de l'objet dans l'image. Le modèle est une installation fixe de taille moyenne afin de 100x100
Il définit ensuite un retour sur investissement sur l'image d'origine autour de l'objet, ce qui représente pour le mouvement. Dans notre cas, disons que nous voulons un tampon (ROI) à travers le modèle de 50 pixels. Cela équivaudrait à une intial ROI de:
Maintenant depuis de travail avec un retour sur investissement d'une image que l'on peut ralentir le traitement ainsi que de gâcher de l'affichage de l'image d'origine à nouveau de sorte qu'il serait beaucoup mieux de faire quelque chose comme ceci:
Nous utilisons à l'aide d'instruction que cette aliénation de l'image supplémentaire des données lorsque nous avons terminé et libère des ressources.
Maintenant pour le truc le ROI est en réalité contrôlée par les résultats de l'Detect_object qui est pourquoi nous gardons Emplacement comme une variable globale. Une fois l'Emplacement, nous avons comparé le modèle avec succès à l'aide de notre déclaration de regarder de plus comme:
C'est assez bien d'autres que des rectangles de la ROI et le modèle, la taille et l'emplacement sont dessinés sur l'image si vous avez des problèmes avec ce laissez-moi savoir, mais le code doit être facilement là-bas,
Acclamations,
Chris
OriginalL'auteur Chris
La vidéo semble être à l'aide de quelque chose qui s'apparente à la CAMSHIFT méthode décrit par Gary Bradski. Ici est le code C++ pour la camshift application démo, je sais que c'est pas du C#, mais il devrait être facilement portable pour EmguCV. Ici est la documentation de la base de la camshift algorithme.
Espère que ça aide!
Bon à savoir. Il y a certainement mieux que tout droit jusqu'à la force brute de création de modèles chaque image. Le fait que la méthode est aussi sujette à la dérive, qui se produit beaucoup dans la vidéo. Je vais voir si je peux trouver le papier que j'ai utilisé pour ce genre de choses, et de les publier. Aussi, j'espère que vous ne pensez pas que je baisse voté pour vous, car vous avez une qualité de réponse 🙂
Hey c'est très bien si vous l'avez fait, mais il y a souvent confusion entre ces méthodes et de leurs capacités. Je suis d'accord oui il y a certainement de meilleures méthodes, mais camshift ne serait pas approprié par lui-même en tant que (malgré le minimisé ROI) de l'ensemble de la main est en mouvement c'est à dire beaucoup de bruit. Vous devez comprendre, analyse du contour de trouver le bout du doigt dans chaque image plus fiable de point de référence. Pour d'autres, dans EMGU/opencv ce serait en vertu de soustraction d'arrière-plan/méthodes de projection et de "l'Analyse Structurale et la Forme de Descripteurs' Cheers
OriginalL'auteur mevatron