This webpage explains what we do with calibrating a camera with a planar calibration chart. The chart we use for calibration looks something like this:


Reference:

[1] Z. Zhang, "A Flexible New Technique for Camera Calibration", IEEE Trans. Pattern Analysis and Machine Intelligence, vol. 22,  no. 11,  pp. 1330-1334,  2000, doi:10.1109/34.888718
[2] J. Heikkila, "Geometric Camera Calibration Using Circular Control Points", IEEE Trans. Pattern Analysis and Machine Intelligence, vol. 22,  no. 10,  pp. 1066-1077,  2000, doi:10.1109/34.888718
[3] B. Triggs, "
Autocalibration from Planar Scenes", Proc. European Conf. Computer Vision, pp. 89-105, Freiburg, Germany, June 1998

The chart is made by attaching a laser-printed paper to a planar surface. The circles on the paper provide known postions in 3D. When a camera looks at this chart from a few different angles, the camera's intrinsic and extrinsic paramters can be calculated from the image observations. This idea of calibrating a camera using a mono-plane chart has been explored by several reseachers [1-3] and the theories have been well laid out. Here what we do is about the practice. We solve two problems: 1) how to accurately extract the projected circles from images of the calibration chart; 2) how to compensate the printing shift of the circles on the calibration chart.

1. Accurate Ellipse Extraction

The task looks simple since there are already lots of ellpise detection methods in the computer vision literature. However, when things come to accuracy, we have to be very careful about the methods we choose. Here we propose a method that can achieve 0.01 pixel accuracy on synthetic data. The idea is to optimize an analytical ellipse on the image plane that maximizes the intensity difference between the inside and outside of the ellipse. This process can be illustrated by the following figure.
( Click to enlarge )
The process starts from a rough estimate of the position, orientation and shape parameters (semi-axes) of the ellipse. It calculates the mean values of the intensities in the outer and inner belt areas of the ellipse. A belt is an area between the ellipse and another concentric ellipse (that shares the same center, eccentricity and orientation). As illustrated above, the blue curve is the ellipse, the area between the red and blue curves is its outer belt and the area between the green and blue curves is its inner belt. The ellpise to maximize the difference between the mean values of the two belts is considered to be the optimal ellipse that can be estimated from the image data. For more technical description of the method, please refer to our paper, and the matlab code is here.

One question about applying this method is the initialization of the ellipse. For this, we first extract the black dots (illustrated in the above figures) using blob detection techniques and use the centroids of the black dots as the first estimate of the ellipse centers to calibrate the camera. We do not require an accurate extract of the black dots at this stage. The estimate of the dot centroids can have a few pixels errors. The next step is then to project the circles on the calibration chart back to the image plane and get a coarse estmate of the positions, orientations and shape parameters of the corresponding ellipses. The estimated ellipse parameters are used to initialize the optimization to maximize the inside and outside intensity difference for each single ellipse.
2. Printing Shift Compensation

People often assume the patterns printed on a paper by a laser-jet is error-free. We found this is not true. For the calibration chart illustrated above, we proved that there is a vertical shift for each row of circles. We calculated the shifts of the circles for all the rows and compare the shifts derived from four different cameras. Surprisingly the shifts are pretty consistent, see the figure below:
In the matlab code, we provide a function: dy = find_shift_m() to calculate the shifts of the circles on the calibration chart using the four cameras. The calibration data files contained in the code were produced by using the ellipse extraction method described in Section 1.


Acknowledgement

We are grateful to the authors at Oulu university who provide camera calibration matlab functions used in this research .


Paper Bibref:

@inproceedings{
        AUTHOR = "Xiao, Y. and Fisher, R.B.",
        TITLE = "Accurate Feature Extraction and Control Point Correction for Camera Calibration with a Mono-Plane Target",
        BOOKTITLE = 3DPVT2010,
        YEAR = "2010",
   }
 

Resource:

  Paper | Slide | Code