Camera calibration

asked 2017-12-21 04:51:09 -0600

MaxWell gravatar image


I'm using the default camera calibration from opencv to calibrate a Raspberry pi camera. I ran the calibration multiple times with different amount of images. Combined with an aruco marker I tested the accuracy of the depth calculation, in the image underneath you can see the results, I placed the camera 1 m away from the marker and ran some code to calculate the distance till the marker. So like expected the distance became more accurate the more images I used for the calibration. But after 55 frames the distance became less accurate, the opposite of what I was expecting. Does anyone have an explanation for this, or am I combining two things which have nothing to do with each other?


image description

edit retag flag offensive close merge delete


Not sure to understand your process, my answer can be off.

For the calibration, the pattern board must be in several position and orientation. You cannot use only images of the board parallel to the camera image plane and always at 1m away from the camera. See for instance.

When the intrinsics are correctly estimated (low reprojection error), you can use it to perform pose estimation or whatever you want.

Eduardo gravatar imageEduardo ( 2017-12-22 04:58:55 -0600 )edit

I have a dataset of around 250 images, from different angles. I used the default calibrate function from opencv and calibrated repetitive with more and more images from my dataset. After every calibration I placed my camera exact 1 m away from my aruco marker and with some code I calculated the distance between the marker and the camera. The more (till 55) frames I used, the more accurate my calculated distance became (last column in the table), but after 55 frames the distance became less accurate. I was wondering if there is a theoretical reason for this phenomenon? I hope this makes it a bit clearer

MaxWell gravatar imageMaxWell ( 2017-12-22 05:07:09 -0600 )edit

There is something odd. Even when calibrating with 10 images, the precision should be better than 0.84 m if the aruco marker is at 1 m (16 cm error is defintively too much).

I usually calibrate using 10 to 20 images, the calibration process is a non linear optimization process and there is no guarantee that using more images will produce more acurate result.

Did you try to compare the intrinsics between for instance after 10 frames and after 55 frames?

Do you use estimatePoseSingleMarkers() to get the marker pose?

Eduardo gravatar imageEduardo ( 2017-12-22 12:25:12 -0600 )edit