Christopher Mei
PhD Student
|
Central Catadioptric Systems
And SLAM |
I am now a research assistant at the University of Oxford, my new wepage is http://www.robots.ox.ac.uk/~cmei/, you should be redirected in 3 seconds.
NEW calibration toolbox : no prior knowledge is needed on the camera or mirror parameters and we keep the flexibility of only having to select four points for each calibration grid (we do not have to select each corner individually). The functions containing the projection model (and Jacobians) are available separately in Matlab and as a C++ class with the associated mex functions. The class is initialised with a file generated during the calibration process. It enables the projection of 3D points but also the lifting of image points to their projective rays. This new "Omnidirectional Calibration Toolbox" is a complete rewrite of the previous version. It uses some functions from the "Caltech Calibration Toolbox" by Jean-Yves Bouguet. This page gives an example of a calibration session. These images are available for trying out the toolbox. You can find a calibration grid/pattern here. The projection model used is available here. The toolbox has been successfully used to calibrate hyperbolic, parabolic, folded mirror, spherical and wide-angle sensors. IMPORTANT : the calibration parameters are calculated with Matlab coordinates (which start at 1) and not with the C/C++ convention (starting at 0). I would like to thank the ACFR (Australian Center for Field Robotics) for making available some hyperbolic images, and in particular Alex Brooks. Contents : Projection model and parametersThe projection model used is described here. It is a combination of the unified projection model from Geyer and Barreto and a radial distortion function. This model makes it possible take into account the distortion introduced by telecentric lenses (for parabolic mirrors) and gives a greater flexibility (spherical mirrors can be calibrated). The calibration will estimate :
Calibration sessionContents : StartupPlease edit the 'SETTINGS.m' file first.Start the toolbox in Matlab : >>omni_calib_gui This window will appear :
Go to the directory containing the images.
1 or [] : parabola (xi=1) Loading images" " will ask you for the base name of the images in the current directory and their format :
>>
Basename camera calibration images (without number
nor suffix): cameraAvecOmni_ The images are now loaded and we are ready to start estimating the intrinsic values and then calibrating the sensor. Estimating the intrinsic parameters with the mirror borderBy pressing on " ", we will calculate an estimate of the intrinsic parameters of the underlying camera (generalised focal length and center). In the case of a catadioptric sensor, the user is asked to click on the center of the mirror:
Please click on the mirror center and then on the mirror inner border. We then estimate the generalised focal length from points on a line image:
We are now going to estimate the generalised focal (gammac) from line images. Extracting grid cornersWe are now ready to extract the grid corners which will be used during the minimisation, press on " ":Extraction of the grid corners on the images Number(s) of image(s) to process ([] = all images) = Window size for corner finder (wintx and winty): wintx ([] = 8) = Sub-pixel extraction in the catadioptric case is less tolerant and we should try and keep the window size down. winty ([] = 8) = Window size = 17x17 Processing image 1... Using (wintx,winty)=(8,8) - Window size = 17x17 (Note: To reset the window size, run script clearwin) Please press enter after zooming... You can now zoom in on the calibration grid and press [ENTER] : You now need to click on the four corners of the grid in clockwise order : The omni-lines should follow the grid. You will then be asked for the size of the grid : Size of each square along the X direction: dX=42mm Size of each square along the Y direction: dY=42mm (Note: To reset the size of the squares, clear the variables dX and dY) Corner extraction... CalibrationPressing on " " will start the minimisation :
>>
(r) Indicates that the extrinsic parameters are being re-estimated independently. The number of iterations and how often the extrinsic parameters should be computed can be changed in the "SETTINGS.m" file. Analysing errorThree tools can be used to analyse the error :
BEWARE : When calibrating, it is not sufficient to look at the absolute error. The average over all the errors doesn't take into account the spatial distribution of the error . The calibration might then depend on the position of the grids (bias). Different buttons and settingsThe "SETTINGS.m" file contains the path to the toolbox and variables for the minimisation (max. of iterations and step before recomputing the extrinsic parameters).Buttons :
DownloadThe files that are not part of the "Caltech Calibration Toolbox" by Jean-Yves Bouguet are issued under the GPL license Version 2. If you have any suggestions, bug corrections please write to : Christopher.Mei@sophia.inria.fr
Old toolboxOld toolbox, no longer maintained.
FAQQ : When I call the " ", I get an error "identifier" expected, "(" found." !Answer : Since version 0.92 (compatible with matlab 6), this shouldn't happen anymore! Q : I cannot find the 'imshow' function ! Answer : The "imshow" function is part of Matlab's Image Processing Toolbox. |