3

Comment l'erreur de reprojection est-elle calculée dans la fonction triangulaire de Matlab?Comment l'erreur de reprojection est-elle calculée dans la fonction triangulaire de Matlab? Malheureusement, la documentation ne donne aucune formule mathématique.

Malheureusement, le documentation ne donne aucune formule mathématique.

Il dit seulement: The vector contains the average reprojection error for each M world point.

Quelle est la procédure/Matlab utilise lors du calcul de cette erreur?

J'ai cherché SOF, mais n'a rien trouvé sur cette question importante à mon humble avis.

MISE À JOUR: Comment peuvent-ils utiliser cette erreur pour filtrer les résultats mauvais ici: http://se.mathworks.com/help/vision/examples/sparse-3-d-reconstruction-from-two-views.html

Répondre

4

L'erreur de AFAIK reprojection est toujours calculé de la même manière (dans le domaine de la vision par ordinateur en général).

La reprojection est (comme son nom l'indique) l'erreur entre le point reprojeté dans la caméra et le point d'origine.

Ainsi, à partir de 2 points (ou plus) dans la caméra, vous triangulez et obtenez des points 3D dans le système mondial. En raison d'erreurs dans l'étalonnage des caméras, le point ne sera pas précis à 100%. Ce que vous faites est de prendre le résultat 3D point (P) et avec les paramètres de calibrage de la caméra projet dans les caméras à nouveau, en obtenant de nouveaux points (\hat{p}) près des originaux (p).

Ensuite, vous calculez la distance euclidienne entre le point d'origine et le point "reprojeté".

enter image description here

Si vous voulez en savoir un peu plus sur la méthode utilisée par Matlab, je vais améliorer la bibliographie qu'ils utilisent en vous donnant également le numéro de page:

multiples Voir la géométrie dans Computer Vision par Richard Hartley et Andrew Zisserman (p312). Cambridge University Press, 2003.

Mais fondamentalement, c'est une minimisation par les moindres carrés, qui n'a pas d'interprétation géométrique.

+0

Oui, mais ce que je ne comprends pas, c'est comment ils utilisent cette erreur pour filtrer les mauvaises correspondances: http://se.mathworks.com/help/vision/examples/sparse-3-d-reconstruction-from- Deux-views.html – jhegedus

+0

Si je ne me trompe pas, les mauvaises correspondances ou les mauvaises correspondances ne sont pas filtrées avec l'erreur de re-projection par exemple, dans l'exemple mathworks il pourrait y avoir une étape implicite RANSAC où elle supprime les valeurs aberrantes, soit l'extraction de caractéristiques ou le suivi de points de caractéristiques (son utilisation de flux optique ?; opencv a RANSAC dans la fonction de Lucas-Kande). En outre, sous le capot, la fonction «triangulate» pourrait utiliser une approche d'optimisation non linéaire pour affiner les estimations ponctuelles 3D, comme le supposent les approches linéaires telles que l'algorithme 8 points où elle est très sujette au bruit et explosive (numériquement). – chutsu

+0

@chutsu Est-ce que cela a de l'importance? L'erreur de reprojection sera toujours l'erreur de reprojection. –

1

Vous pouvez trouver une explication des erreurs de reprojection dans le contexte de l'étalonnage de la caméra dans le Camera Calibrator tutorial:

enter image description here

Les erreurs de reprojection renvoyées par la fonction triangulate sont essentiellement le même concept.

La façon d'utiliser les erreurs de reprojection pour éliminer les mauvais résultats est présenté dans ce example:

[points3D, reprojErrors] = triangulate(matchedPoints1, matchedPoints2, ... 
    cameraMatrix1, cameraMatrix2); 

% Eliminate noisy points 
validIdx = reprojErrors < 1; 
points3D = points3D(validIdx, :); 

Ce code ne comprend pas tous les points 3D pour lesquels l'erreur de reprojection était plus d'un pixel. Vous pouvez également utiliser validIdx pour éliminer les correspondances 2D correspondantes.

+0

Je vois, mais comment cette erreur peut-elle être utilisée pour éliminer les mauvaises correspondances: http://se.mathworks.com/help/vision/examples/sparse-3-d-reconstruction-from-two-views.html – jhegedus

+0

Il est dans l'exemple. J'ai édité la réponse. – Dima

+0

@jhegedus, J'ai créé une salle de discussion pour parler de la reconstruction 3D avec matlab. S'il vous plaît joindre si vous avez d'autres questions. Je suis également curieux d'en savoir plus sur ce que vous faites. http://chat.stackoverflow.com/rooms/73265/3d-reconstruction-with-matlab – Dima