Nine DOF pinhole camera calibration using Computer Vision Toolbox?

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.

1 Comment

will this calibration toolbox satisfy your needing?camera calibration toolbox caltech It can modify the distorsion parameter of radial and tangental

Sign in to comment.

 Accepted Answer

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

Thanks, Dima. I'll definitely check out that reference to the Tsai algorithm. Any reason it's not implemented in the Computer Vision System Toolbox? Seems like a common enough thing to want to do, both for educational and practical purposes.
Hi Matt. The reason for that is that Zhang's algorithm is more practical. It is much easier to print a checkerboard, than to build a 3D calibration rig, which is what the Tsai algorithm needs.
Hi Dima,
Except that,
(1) As I mentioned in my post, it doesn't appear that the implementation of Zhang in the toolbox covers the 9 DOF pinhole model, as Tsai seems to.
(2) Checkerboards are easy for photographic cameras, but not other kinds. For X-ray cameras, I think it would be quite expensive to manufacture a lead checkerboard as compared to a 3D fixture of BBs, which are more commonly used. Furthermore, since the calibration object is not opaque to an x-ray imager, you also never get an ideally planar image.
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.
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

Asked:

on 3 Dec 2015

Commented:

on 11 Jan 2019

Community Treasure Hunt

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

Start Hunting!