How to run the Stereo camera calibrator with a fixed intrinsic parameters?

12 views (last 30 days)
I have three cameras A, B and C, when I stereo calibrate A B and B C, the intrinsic parameters computed for B is different for those two cases, and I can only place the checkerboard at limited locations where it is visible on both views.
Is it possible to calibrate A individually, B individually, and C individually to get a set of intrinsic parameters, so the checkerboard can cover most part of the camera, and then feed the intrinsic parameters into the stereo camera calibrator app just to get the extrinsic parameters? Please let me know.
On the side note, the camera calibration toolbox from Caltech has the option to not re-optimize the intrinsic parameters so it suit my purposes but it can't detect corners automatically and from the benchmarks I saw the accuracy is worse than the Matlab 2014 A or B camera calibration app.
  1 Comment
Cameron Swanson
Cameron Swanson on 4 Sep 2019
I know this post is quite old now but I hoped you could maybe help (or someone else who sees it!). Tearing my hair out with this one. I have the same problem with intrinsics differing, my fix for that has simply been to take the average of the two, a little rudimentary I know..
My question actually relates to transforming the translations and rotations of the 3rd camera into the coordinate system of the 1st camera (from the 2nd camera).
This is the way I have been doing it but it doesn't seem right. Any idea how this can be done?
C2Rot=stereoParams12.RotationOfCamera2;
C2Tra=stereoParams12.TranslationOfCamera2;
C3Rot=stereoParams12.RotationOfCamera2*stereoParams23.RotationOfCamera2;
C3Tra=stereoParams12.TranslationOfCamera2+(stereoParams23.TranslationOfCamera2*stereoParams12.RotationOfCamera2);
% stereoParams12: Calibration of cameras 1&2
% stereoParams23: Calibration of cameras 2&3
Cheers!

Sign in to comment.

Answers (2)

Dima Lisin
Dima Lisin on 1 Nov 2014
Hi Jason,
Unfortunately the Camera Calibrator app does not currently have this capability. You can try working around this limitation. Calibrate the stereo pair (A,B) to get stereoParamsAB. Then calibrate the pair (B,C) to get stereoParamsBC. Then replace the intrinsics for camera B in stereoParamsBC with the values from stereoParamsAB. You would have to create a new stereoParameters object "by hand", because those properties are not settable. Of course, if you do this, your accuracy will probably suffer.
Out of curiousity, do you only use 3 cameras, or do you use more than 3?

Jason
Jason on 1 Nov 2014
Hi Dima,
Thanks a lot for letting me know. My application requires high accuracy in calibration so the approximation method you suggested is probably not good enough. I have multiple stereo cameras like about 5 pairs so 10 cameras in total and I am trying to find the relative pose between different stereo pairs. I was hoping if the stereoCameraCalibrator has the function of fixing intrinsic parameters and that would solve my problem. Do you have any suggestions?
Thanks, Jason
  1 Comment
Dima Lisin
Dima Lisin on 1 Nov 2014
Hi Jason,
The only thing I can suggest here is to calibrate each camera individually, and then do your own optimization to find the rotations and translations between the cameras. If you have the Optimization Toolbox, you can use functions like lsqnonlin or lsqcurvefit to do non-linear least squares.

Sign in to comment.

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!