Nine DOF pinhole camera calibration using Computer Vision Toolbox?

2 views (last 30 days)
I have a set of 3D world points and corresponding 2D image points. Using these, I would like to do a single pinhole camera calibration with 9 degrees of freedom. In other words, I know that I have no camera distortion or skew and that my 2D pixel scaling is the same in x and y (so I have only 3 intrinsic parameters).
Is there a way to do this restricted form of calibration using Computer Vision Toolbox functions? I have been looking at estimatecameraParameters() in R2015. However, this function does not appear to give the option of turning off radial distortion estimation. It also does not appear to give the option of estimating with fewer than 4 intrinsic parameters.

Accepted Answer

Dima Lisin
Dima Lisin on 4 Dec 2015
Edited: Dima Lisin on 4 Dec 2015
I don't think estimateCameraParameters is suitable for this. It implements the calibration algorithm by Zhengyou Zhang, which assumes multiple images of a planar calibration pattern.
If you have a single set of non-coplanar 3D points, and their corresponding image points, then you should use the Tsai calibration algorithm.
On the other hand, if you do have multiple images of a planar calibration pattern, then you can simply edit estimateCameraParameters.m and comment out the call to refine() method. That will skip the non-linear optimization step, and just give you a closed-form solution of the intrinsics and the extrinsics, assuming no distortion. Needless to say, that means you would be editing a built-in MATLAB file at your own risk.
  5 Comments
Dima Lisin
Dima Lisin on 4 Dec 2015
Hi Matt,
That's an interesting use case. Thank you. The calibration tools in the Computer Vision System Toolbox are indeed designed with the photographic or infra-red cameras in mind. X-Ray is whole different ball-game.
Matt J
Matt J on 13 Dec 2015
Hi Dima,
Just to add a further footnote here, I did read the article in your link on Tsai's algorithm, but it appears to be an approximate algorithm only. The article describes it really as just a way of initializing a more rigorous iterative nonlinear estimation.
Th bottom line seems to be that if you want to do calibration with 3D-to-2D data and any fewer than 11 degrees of freedom, you really just need to go over to the Optimization Toolbox.

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB Support Package for USB Webcams in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!