Fait une petite erreur de reprojection est toujours synonyme de mieux étalonnage?
Pendant le calibrage de la caméra, les conseils habituels consiste à utiliser beaucoup d'images (>10) avec des variations dans la pose, profondeur, etc.
Cependant j'ai remarqué que généralement le moins d'images que j'utilise, le plus petit de l'erreur de reprojection. Par exemple, avec 27 images, cv::calibrateCamera retourne 0.23 et avec seulement 3-je obtenir 0.11
Cela peut être en raison du fait que lors de l'étalonnage, nous sommes la résolution d'un problème des moindres carrés pour un système surdéterminé.
QUESTIONS:
-
Faire, nous utilisons en fait l'erreur de reprojection comme une mesure absolue de la façon dont bon un étalonnage? Par exemple, si je étalonner avec 3 images et obtenir de 0,11, puis calibrer avec 27 autres images et obtenir 0.23 peut-on vraiment dire que "le premier étalonnage est mieux"?
-
OpenCV utilise les mêmes images à la fois pour l'étalonnage et pour le calcul de l'erreur. N'est-ce pas une certaine forme de surajustement? Ne serait-il pas plus correct si j'ai effectivement utilisé 2 jeux différents -un pour calculer les paramètres d'étalonnage et un pour calculer l'erreur? Dans ce cas, je voudrais utiliser le même (test) configuré pour calculer l'erreur pour tous mes résultats d'étalonnage des différents (formation) ensembles. Ce ne serait pas plus juste?
Vous devez vous connecter pour publier un commentaire.
Désolé si c'est trop tard - seulement vu.
L'erreur est la reprojection de l'ajustement. Afin de trouver les points sur une image, calculer le modèle du monde réel, de les recalculer où ces points serait sur l'image pour le modèle donné - rapport de la différence. Dans un sens, c'est un peu circulaire, vous pourriez avoir un modèle qui est seulement de corriger ces quelques images de ce qui serait alors un très bon rapport d'erreur tout en lui donnant beaucoup de l'image un beaucoup plus généralement de corriger le modèle, mais sa plus grande erreur, juste parce que vous êtes à essayer de l'étirer pour s'adapter à un beaucoup plus grand espace.
Il vient un point où l'ajout de plus d'images n'est pas d'améliorer l'ajustement, et peut ajouter du bruit puisque les points ne sont jamais détectées parfaitement. Ce qui est important est de fournir un plus grand nombre de paramètres, plus d'angles et de positions, plutôt que de données équivalent
En utilisant la même image pour prédire l'erreur n'est pas vraiment un problème, parce que l'ajustement n'ont une réelle signification en termes de physique réel les paramètres de la lentille - ce n'est pas comme de la formation/test d'un réseau neuronal sur les mêmes données.
edit: une meilleure routine d'étalonnage que opencv (bien que basé sur le même concept) est inclus dans 3D-DIC (gratuit mais pas OSS, inscrivez-vous sur le site pour obtenir le lien de téléchargement) spécifiquement la étalonnage manuel.