2012-11-21 3 views
8

Je me bats et j'ai besoin d'aide.Existe-t-il un moyen de trouver la vitesse du flux optique à partir du mouvement d'un objet du monde réel sans connaître la profondeur Z?

Je souhaite calculer la vitesse du flux optique à partir du mouvement connu d'un objet du monde réel (en fait, la caméra est en mouvement). Cela fait partie de ce que j'ai demandé dans ma question précédente (Determining if a feature is part of a moving object from sparse optical flow (KLT)).

Quoi qu'il en soit, j'ai fait du calcul de flux optique en utilisant cvGoodFeaturesToTrack() et cvCalcOpticalFlowPyrLK().

Je veux juste vérifier si le flux que j'ai calculé est théoriquement correct (correspondant au mouvement de la caméra). Laissez ma caméra se déplacer uniquement sur l'axe Z (ignorez simplement le taux de lacet pour l'instant). Supposons que mon appareil photo bouge pour Vz (dans la direction Z).

je peux trouver le flux optique par

vx = x * Vz/Z  
vy = y * Vz/Z 

(supposons Vx, Vy = 0 -> pas de mouvement de la caméra dans les axes x et y)

Voici ce que j'ai étudié principalement de http://www.cse.psu.edu/~rcollins/CSE486/lecture22_6pp.pdf . Le problème est de résoudre cela je dois avoir Z. Dans mon cas, je ne peux pas supposer que la surface Z soit plate ou connue. La caméra se déplace sur la route et dirige perpendiculairement au sol.

S'il vous plaît aidez-moi quelqu'un répondre aux questions suivantes:

  1. Comment puis-je obtenir la profondeur de l'objet valeur Z? Ai-je besoin de technique supplémentaire?
  2. Ou existe-t-il d'autres façons de trouver la relation entre le mouvement de la caméra et le flux optique de l'image?
  3. Quelqu'un at-il essayé l'équation ci-dessus? Est-ce valable lorsque la caméra se déplace dans une direction?

Merci beaucoup.

[Si vous trouvez que cette question est trop vague, s'il vous plaît laissez-moi savoir afin que je puisse donner plus de détails.]

+2

Si vous avez plusieurs caméras, vous pouvez utiliser la vision stéréoscopique pour déterminer la distance. Si vous avez un objet de référence avec une distance connue, vous pouvez calculer la parallaxe d'un autre objet et l'utiliser pour trouver sa distance. A part ça, j'ai peur que la distance des objets arbitraires soit assez difficile, voire impossible à déterminer. – Junuxx

+0

Merci pour vos commentaires. Ma question est pour une seule caméra et je n'ai aucune connaissance sur d'autres objets de référence. J'ai essayé sur plusieurs images et j'ai supposé que le flux optique des paires d'images précédentes était fiable et je les utilisais pour calculer Z. Quoi qu'il en soit, j'ai aussi trouvé cela aussi un problème. – Sonia

+0

Vous pouvez en théorie obtenir le Z de l'estimation de la matrice fondamentale en utilisant une méthode en 8 points ou en 5 points, et en décomposant la matrice fondamentale, mais comme ils disent "le chemin est chargé de danger". C'est probablement aussi une solution beaucoup plus complexe au problème que vous essayez de résoudre avec un flux optique. – dvhamme

Répondre

2

Peut-être que cela pourrait aider ... des conférences vidéo de l'Université du Groupe Central Florida Computer Vision:

Codes python supplémentaires de Jan Erik Solem: Programming Computer Vision with Python.

Lisez le chapitre 10.4, il répondra probablement à toutes vos questions.

Regardez également le chapitre 5.4 de ce livre, si vous prenez une image avec l'appareil photo, puis déplacez légèrement votre appareil photo dans la direction x et prenez une autre image, vous pouvez calculer quelque chose appelé une «carte de disparité» en utilisant les deux images qui indique ce genre de choses dans le l'image était à l'avant et à l'arrière. c'est un peu comme déterminer la direction z. quelque chose dans le sens de ce que vous avez déjà essayé et ce que certains des commentaires ont mentionné à propos de l'imagerie stéréo.

Le chapitre 4.3 explique l'estimation de pose à l'aide de marqueurs planaires. Vous pouvez utiliser un objet placé devant l'appareil photo à une distance connue pour calibrer l'appareil photo. C'est très probablement ce que vous devriez regarder en premier.

Questions connexes