2012-03-08 4 views
1

J'essaie de résoudre un problème auquel je suis confronté en détectant la direction du mouvement d'une image.Analyse d'images Matlab, essayant de détecter la direction du mouvement

J'ai donc cette vidéo que j'essaie d'analyser, elle est composée d'objets contractants (qui se rétrécissent et se dilatent continuellement) et j'essaie de détecter si l'image actuelle du mouvement est rétrécie ou étendue!

ici est un exemple de 2 cadres 1 les objets, il est élargi et d'autres Shrinked contracted expanded

Remarque: vous ne pouvez pas voir la déférence quand ils sont au-dessus de l'autre, essayez d'enregistrer et vue l'un après l'autre sur votre ordinateur.

Alors est-il possible de détecter la direction du mouvement dans la vidéo? (Vers l'intérieur vers l'extérieur?)

merci beaucoup

Répondre

3

Cela peut être résoudre avec « flux optique » qui a été étudié depuis plusieurs décennies.

La méthode classique est Horn-Schnuck http://en.wikipedia.org/wiki/Horn%E2%80%93Schunck_method que vous pouvez télécharger ici: http://www.mathworks.com/matlabcentral/fileexchange/22756-horn-schunck-optical-flow-method. C'est rapide mais pas le moyen le plus précis pour résoudre le problème car il a tendance à brouiller les régions que vous souhaitez détecter car il minimise la norme L2 des gradients. Voici ce que je suis arrivé sur vos images à l'aide Horn-Schnuck sur l'étagère:

The red areas correspond to regions of motion.

Étant donné que vos images ont beaucoup de bords, il est sans doute utile d'essayer quelques algorithmes plus modernes. http://people.csail.mit.edu/celiu/OpticalFlow/ pourrait aider.

+0

désolé mais je ne peux toujours pas comprendre comment retourner la direction du mouvement en utilisant le flux optique? – Zalaboza

+0

La sortie du flux optique sera un suivi de champ de vecteur où chaque point va. Ce que j'ai montré sur la photo est juste un tracé de la norme du champ vectoriel à chaque point, les valeurs élevées correspondent à des points qui se déplacent loin. Vous ne pourrez pas voir la contraction/expansion de cette image, mais une fois que vous aurez exécuté les algorithmes de flux optique réels, vous obtiendrez des vecteurs qui correspondent à la direction du mouvement. – dranxo

+0

bien mon but principal de code est d'être capable d'identifier si cette image comparée à celle avant qu'elle soit contractée/étendue ou normale. donc cela signifie que je ne peux pas utiliser le flux optique – Zalaboza

Questions connexes