2017-07-21 2 views
0

J'ai une vidéo d'une route/bâtiment et je veux en créer un modèle 3D. La scène que je regarde est rigide et le drone bouge. Je suppose ne pas avoir d'informations supplémentaires comme la pose de la caméra, les accélérations ou la position GPS. J'aimerais trouver une implémentation python que je peux adapter à mon goût. Jusqu'ici, j'ai décidé d'utiliser l'OpenCV calcOpticalFlowFarneback() pour le flux optique, ce qui semble raisonnablement rapide et précis. Avec cela, je peux obtenir la matrice fondamentale F avec findFundamentalMat(). Jusqu'ici tout va bien. Maintenant, selon le tutoriel que je suis here, je suis supposé avoir magiquement la matrice de calibrage de l'appareil photo, que je n'ai évidemment pas prévu d'avoir dans la future application que je développe.Algorithme d'auto-calibrage de caméra monoculaire facile

Après quelques longues recherches, j'ai trouvé un papier (auto-étalonnage d'une caméra mobile de correspondances de points et matrices fondamentales) de 1997 qui définit ce que je cherche (avec un bon résumé here). Je cherche le plus simple/mise en œuvre plus facile possible, et je suis coincé avec ces problèmes:

  • Si l'appareil photo que je vais utiliser l'exposition change et mise au point automatique (pas de zoom), sont les paramètres intrinsèques de la caméra va changer?
  • Je ne suis pas familier avec la méthode de continuation d'homotopie pour résoudre des équations numériquement, plus elles semblent être lentes.
  • J'ai l'intention d'utiliser le Extended Kalman Filter, mais je ne sais pas par où commencer, sachant qu'une mauvaise initialisation entraîne une non-convergence.

Creuser un peu plus que je trouve une boîte à outils Caméra multi AutoCalibration open-source écrit pour Octave avec un wrapper Python. Mon dernier recours sera de décomposer le code et de l'écrire directement en Python. D'autres options?

Note: Je ne veux pas utiliser l'échiquier ni la contrainte de planéité.

Existe-t-il un autre moyen de calibrer très précisément mon appareil photo? Après 20 ans de recherche depuis 1997, quelqu'un a-t-il trouvé une méthode plus simple?

+0

Vous voulez probablement https://fr.wikipedia.org/wiki/Bundle_adjustment –

+0

Mise à jour: Dans un [enquête] 2017 (https://link.springer.com/article/10.1186/s41074-017-0027-2), J'ai trouvé une référence à [un document de 2009] (https://www.researchgate.net/profile/Javier_Civera/publication/224557479_Camera_Self-Calibration_for_Sequential_Bayesian_Structure_From_Motion/links/00b49517fb09a2f650000000.pdf), comme l'état de l'art de la caméra auto-étalonnage avec une séquence vidéo. L'enquête mentionne également les publications qui traitent les changements de paramètres de la caméra ainsi que la suppression de l'effet de zoom de la caméra. – globalcaos

Répondre

0

Est-ce une opération ponctuelle ou développez-vous une application pour traiter automatiquement de nombreuses vidéos de ce type? Si le premier, je préfère utiliser un outil intégré comme Blender. Rechercher un des tutoriels de suivi de mouvement (ou "matchmoving") sur youtube pour avoir une idée de celui-ci, par exemple this one.

+0

Merci Francesco. Je ne savais pas que des outils comme Blender existaient. Bon à savoir. Cependant, je visais une reconstruction en profondeur de la scène.Selon un document intitulé * Visual SLAM algorithmes: une enquête de 2010 à 2016 *, qui est résumée [ici] (https://www.kudan.eu/kudan-news/different-types-visual-slam-systems/) , J'ai pu trouver ce que je cherchais. C'est une méthode SLAM directe dense appelée DTAM ([démo ici] (https://www.youtube.com/watch?v=Df9WhgibCQA)) – globalcaos

+0

En tout cas, je suis toujours coincé avec le problème de l'auto-calibrage – globalcaos