Comment vérifier l'exactitude de l'étalonnage d'une webcam?
Je suis totalement nouveau calibrage de la caméra techniques... je suis en utilisant OpenCV échiquier technique... je suis à l'aide d'une webcam de Quantum...
Voici mes observations et de mesures..
- J'ai gardé les uns des échecs carré de côté = 3,5 cm. Il est de 7 x 5 échiquier avec 6 x 4 les angles internes. Je prends total de 10 images dans différentes vues/pose à une distance de 1 à 1,5 m à partir de la webcam.
-
Je suis le code C dans Apprentissage OpenCV par Bradski pour l'étalonnage.
mon code pour l'étalonnage estcvCalibrateCamera2(object_points,image_points,point_counts,cvSize(640,480),intrinsic_matrix,distortion_coeffs,NULL,NULL,CV_CALIB_FIX_ASPECT_RATIO);
-
Avant l'appel de cette fonction que j'ai fais le premier et le 2ème élément le long de la diagonale de la valeur intrinsèque de la matrice pour garder le ratio de la longueur de focale constante et à l'aide de
CV_CALIB_FIX_ASPECT_RATIO
-
Avec la distance de l'échiquier à l'
fx
etfy
sont en train de changer avecfx:fy
presque égale à 1. il y acx
etcy
valeurs dans l'ordre de 200 à 400. lefx
etfy
sont de l'ordre de 300 - 700 lorsque je change la distance. -
Actuellement, j'ai mis tous les coefficients de distorsion à zéro car je n'ai pas obtenir le bon résultat dont la distorsion des coefficients. Mon image d'origine regardé beau que le non faussée d'un!!
Suis-je en train de faire l'étalonnage correctement?. Dois-je utiliser une autre option que CV_CALIB_FIX_ASPECT_RATIO
?. Si oui, laquelle?
Vous devez vous connecter pour publier un commentaire.
Hmm, vous êtes à la recherche pour le "beau" ou "exactes"?
Calibrage de la caméra est l'un des très peu de sujets en vision par ordinateur, où la précision peut être directement quantifiés en termes physiques, et vérifiée par une expérience physique. Et la leçon habituelle est que (un) vos numéros sont tout aussi bon que l'effort (et d'argent) que vous mettez en eux, et (b) réel de la précision (par opposition à l'imaginaire) est cher, de sorte que vous devez déterminer à l'avance ce que votre application nécessite vraiment dans la façon de précision.
Si vous recherchez les spécifications géométriques de même très bon marché objectif/capteur de combinaisons (en mégapixels et ci-dessus), il devient évident que les sous-sous-mm précision de l'étalonnage est théoriquement réalisables à l'intérieur d'une table de volume de l'espace. Juste (à partir de la fiche technique du capteur de votre appareil) l'angle solide engendré par un pixel - vous serez ébloui par la résolution spatiale vous avez à la portée de votre porte-monnaie. Cependant, la réalisation AVEC quelque chose près que la précision théorique prend le travail.
Voici quelques recommandations (par expérience personnelle) pour obtenir un bon étalonnage de l'expérience avec la maison-grandi équipement.
Si votre méthode utilise un plat cible ("damier" ou similaire), la fabrication d'un bon. Choisissez un plat sauvegarde (pour la taille que vous mentionnez fenêtre en verre de 5 mm d'épaisseur ou plus, c'est excellent, bien évidemment fragile). Vérifier sa planéité à l'encontre de l'autre bord (ou, mieux, un faisceau laser). Imprimez le modèle sur un gros stock papier qui ne s'étire pas trop facilement. Poser après l'impression sur le support avant de coller et de vérifier que le carré et les côtés sont en effet de très près orthogonale. À bas prix ou à jet d'encre, les imprimantes laser ne sont pas conçus pour une rigoureuse précision géométrique, ne pas leur faire confiance aveuglément. La meilleure pratique consiste à utiliser un professionnel de l'imprimerie (même un Kinko va faire un bien meilleur travail que la plupart des imprimantes). Ensuite, fixez le motif très soigneusement à la sauvegarde, à l'aide de pulvérisation de la colle et lentement l'essuyant avec un chiffon doux pour éviter les bulles et les étirements. Attendre un jour ou plus pour que la colle de la soigner et de la colle-du papier de stress à atteindre à long terme de l'état stationnaire. Enfin mesure les positions de coin avec une bonne épaisseur et d'une loupe. Vous pouvez sortir avec un numéro unique pour la "moyenne" carré de la taille, mais il doit être un moyen de mesures réelles, pas d'espoirs-n-prières. La meilleure pratique consiste à utiliser une table de positions mesurées.
Surveillez votre température et l'humidité des changements: le papier absorbe l'eau de l'air, la sauvegarde se dilate et se contracte. Il est incroyable de voir combien d'articles que vous pouvez trouver que le rapport de la sous-millimètre d'étalonnage de précision sans citer les conditions de l'environnement (ou la réponse de la cible pour eux). Inutile de dire, ils sont pour la plupart de la merde. La baisse de température le coefficient de dilatation du verre par rapport à la commune de la feuille de métal est une autre raison de préférer l'ex comme un support.
Inutile de dire, vous devez désactiver l'auto-focus fonctionnalités de votre appareil photo, si elle en a un: la mise au point se déplace physiquement un ou plusieurs morceaux de verre à l'intérieur de votre objectif, et donc de changer (un peu) le champ de vision et (généralement par beaucoup) la distorsion de l'objectif et le principal point.
Placez l'appareil sur une monture stable qui ne vibre facilement. Focus (et de diaphragme de l'objectif, si il a un iris) nécessaires à l'application (pas le calibrage de la procédure d'étalonnage de la cible doit être conçu pour l'application de besoins, et non l'inverse). Ne même pas pense de toucher appareil photo ou l'objectif par la suite. Si possible, éviter de "complexe" objectifs - par exemple, les zooms ou très large angle de ceux. Fisheye ou lentilles anamorphiques exigent des modèles beaucoup plus complexes que le stock d'OpenCV met à la disposition des.
Prendre beaucoup de mesures et d'images. Vous voulez des centaines de mesures (coins) par image, et des dizaines d'images. Lorsque des données qui la concerne, plus on est de fous. Un damier 10x10 est le minimum absolu je considère. J'ai l'habitude de travaillé à 20x20.
Durée de l'étalonnage de volume lorsque vous prenez des photos. Idéalement, vous voulez que vos mesures soient distribués de manière uniforme dans le volume de l'espace, vous allez travailler avec. Plus important encore, assurez-vous de angle de la cible de manière significative à l'égard de l'axe focal certaines des images - pour calibrer la longueur focale vous avez besoin de "voir" un peu de réel point de vue raccourci. Pour de meilleurs résultats, utiliser une méthode reproductible de serrage mécanique pour déplacer la cible. Un bon est un axe tourne-disque, ce qui vous donnera un excellent modèle précédent pour le mouvement de la cible.
Réduire les vibrations et associés flou de mouvement lors de la prise de photos.
Utiliser un bon éclairage. Vraiment. C'est incroyable de voir combien de fois je vois des gens à réaliser en fin de match que vous avez besoin de photons pour calibrer n'importe quel appareil photo 🙂 Utilisation diffuse l'éclairage ambiant, et il rebondir cartes blanches sur les deux côtés du champ de vue.
Regarder ce que votre coin de l'extraction de code est en train de faire. Tirage détectés positions de coin sur le haut de l'image (Matlab ou Octave, par exemple), et de juger de leur qualité. La suppression des valeurs aberrantes début serré à l'aide de seuils est mieux que de faire confiance à la robustifier dans votre faisceau de réglage de code.
Contraindre votre modèle si vous le pouvez. Par exemple, ne pas essayer d'estimer le principal point si vous n'avez pas de bonnes raisons de croire que votre objectif est encore loin du centre-w.r.t l'image, il suffit de le fixer au centre de l'image sur votre première tentative. Le principal point d'emplacement est généralement mal observé, car il est par nature confondue avec le centre de la distorsion non-linéaire et par la composante parallèle au plan image de l'objectif à l'appareil photo de la traduction. Il nécessite un soigneusement conçu procédure qui donne trois ou plusieurs points de fuite de la scène et un très bon bracketing de la distorsion non-linéaire. De la même façon, sauf si vous avez des raisons de soupçonner que la focale de l'objectif de l'axe est vraiment incliné w.r.t. le plan du capteur, de fixer à zéro le (1,2), composante de l'appareil photo de la matrice. En règle générale, utilisez le modèle le plus simple qui répond à vos mesures et besoins de votre application (c'est le rasoir d'Ockam pour vous).
Lorsque vous avez une solution d'étalonnage à partir de votre optimiseur avec suffisamment faible erreur RMS (quelques dixièmes de un pixel, en général, voir aussi Josh réponse ci-dessous), le tracé de la XY motif de l'erreur résiduelle (predicted_xy - measured_xy pour chaque coin de toutes les images) et voir si c'est un aller-ish nuage centré en (0, 0). "Touffes" de valeurs aberrantes ou de la non-circularité du nuage des résidus sont des cris d'alarme des cloches que quelque chose est très mal - probablement des valeurs aberrantes en raison du mauvais angle de détection ou de contrepartie, ou inappropriées de la distorsion de l'objectif du modèle.
Prendre des images supplémentaires pour vérifier l'exactitude de la solution - utiliser pour vérifier que la distorsion de la lentille est réellement supprimées, et que l'homographie planaire prédite par le modèle calibré correspond en fait à une récupérés à partir de la valeur mesurée coins.
C'est plutôt une réponse tardive, mais pour les gens à venir à ce à partir de Google:
La bonne façon de vérifier la précision de l'étalonnage est de utiliser la reprojection d'erreur fournis par OpenCV. Je ne suis pas sûr de savoir pourquoi cela n'était pas mentionné nulle part dans la réponse ou des commentaires, vous n'avez pas besoin de la calculer à la main - c'est la valeur de retour de
calibrateCamera
. En Python c'est la première valeur de retour (suivi par la caméra de la matrice, etc).La reprojection d'erreur est l'erreur RMS entre les points pourraient être projetés à l'aide de la valeur intrinsèque des coefficients et où ils sont à l'image réelle. Généralement vous attendre à une erreur RMS de moins de 0,5 px - je peux obtenir régulièrement autour de 0,1 px avec une machine de vision des caméras. L'erreur de reprojection est utilisé dans de nombreuses vision par ordinateur papiers, il n'y a pas de manière significative la plus facile ou la plus précise pour déterminer la qualité de la calibration est.
Sauf si vous avez un système stéréo, vous ne pouvez travailler où quelque chose est dans l'espace 3D jusqu'à un rayon, plutôt que d'un point. Cependant, comme on peut le travail de la pose de chaque planaire d'étalonnage de l'image, il est possible de travailler où chaque coin de l'échiquier doit tomber sur le capteur d'image. Le processus de calibrage (plus ou moins) tente de savoir d'où ces rayons de l'automne et minimise l'erreur sur les différentes images de calibration. Dans Zhang papier d'origine, et des évaluations ultérieures, autour de 10-15 images semble être suffisant; à ce stade, l'erreur n'est pas diminuer de façon significative avec l'ajout de plusieurs images.
D'autres logiciels comme Matlab vous donnera l'erreur des estimations pour chaque intrinsèque, par exemple, la longueur focale, centre de projection. J'ai été incapable de faire OpenCV crache que de l'information, mais c'est peut-être là quelque part. Etalonnage de l'appareil photo est maintenant en natif dans Matlab 2014a, mais vous pouvez toujours mettre la main sur le calibrage de la caméra boîte à outils qui est extrêmement populaire avec la vision par ordinateur des utilisateurs.
http://www.vision.caltech.edu/bouguetj/calib_doc/
Inspection visuelle est nécessaire, mais pas suffisante lorsque vous traitez avec vos résultats. La chose la plus simple à considérer est que des lignes droites dans le monde à devenir directement dans votre non faussée images. Au-delà, il est impossible d'être vraiment sûr si vos appareils sont étalonnés bien juste en regardant les images de sortie.
La routine fournis par Francesco est bon, le suivre. J'utilise une étagère conseil que mon avion, avec le motif imprimé sur des feuilles de papier. Assurez-vous que les images sont bien exposées, - d'éviter la réflexion spéculaire! J'utilise un standard 8x6 modèle, j'ai essayé plus dense des modèles mais je n'ai pas vu une telle amélioration dans la précision que cela fait une différence.
Je pense que cette réponse devrait être suffisant pour la plupart des gens l'envie d'étalonner un appareil photo - réaliste, sauf si vous êtes en train de calibrer quelque chose d'exotique comme un Fisheye ou vous le faites pour des raisons pédagogiques, OpenCV/Matlab est tout ce dont vous avez besoin. Zhang méthode est considérée comme assez bon que pratiquement tout le monde dans la vision par ordinateur à des fins de recherche, et la plupart d'entre eux, soit utiliser Bouguet boîte à outils ou OpenCV.