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

5 次查看(过去 30 天)
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 个评论
Cameron Swanson
Cameron Swanson 2019-9-4
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!

请先登录,再进行评论。

回答(2 个)

Dima Lisin
Dima Lisin 2014-11-1
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 2014-11-1
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 个评论
Dima Lisin
Dima Lisin 2014-11-1
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 MATLAB Support Package for USB Webcams 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by