Tutorial Camera Calibration

From BoofCV
Revision as of 18:29, 29 February 2012 by Peter (talk | contribs)
Jump to navigationJump to search

Camera Calibration

Camera calibration is the process of estimating the cameras parameters. It can either refer to the intrinsic parameters or the extrinsic parameters. Intrinsic parameters deal with camera specific features such as its focal length, skew, distortion, and image center. Extrinsic parameters describe its position and orientation in the world. For the remainder of this page we will focus on estimating intrinsic parameters.

BoofCV provides several software tools and support for different calibration target types. In a typical scenario calibration will be done by viewing a calibration target from different locations and orientations. Calibration points are then detected in these images. Since the geometry of the calibration target is known the cameras intrinsic parameters can be estimated to a high level of accuracy.

The most common way to calibrate a camera is using planar calibration targets with squares on them. BoofCV provides support for two different types of planar calibration targets with different patterns of squares on them, chess board and square grid. The code itself can be reused to detect similar types of application specific calibration targets.

CALIBRATION IS STILL A WORK IN PROGRESS

See the note above? You have been warned. The API is in flux and will not be discussed in detail. So far the results are a bit less accurate than expected, but good enough to remove most of the radial distortion. To judge for yourself take a look at the last applet below which estimates the calibration parameters.

Applet List

While instructions are not yet provided, you can still view the code and figure out how to calibrate a camera using BoofCV. Just look at the classes inside of the boofcv.alg.geo.calibration package

Why Work in Progress?

Calibration is very much a work in progress because the API is still immature and the accuracy is a bit less than expected. These preliminary results typically have a mean residual error between 0.2 and 0.5 pixels across the calibration image. Which is within the typical range, but what makes the results some what suspect is how much variance there is between different datasets taken from the same camera.

To help validate its performance data provided on Zhengyou Zhang's website has been processed. This test highlighted two issues. 1) The interest points provided by Zhang produced better results than the ones produced by BoofCV. 2) Even when using Zhang's interest points the found calibration parameters were similar, but not exactly the same. Jean-Yves Bouguet's Matlab calibration suite is able to produce nearly identical results to what Zhang had found. In summary, what is currently in place now is a good start but has room for improvement in feature detection and parameter optimization.

Calibration Targets

Fully automatic algorithms are provided for detecting the two types of calibration grids above. Calibration points are located at different locations on each target type. For the chess board pattern only the interior corners are used while for the square grid pattern all corner points are used.