Calibration of Three or More Cameras

45 views (last 30 days)
Hi all. Has anybody here successfully used MATLAB to calibrate three or more stereo cameras? The Stereo Calibration App, and its associated functions, refer to two cameras specifically. My setup will consist of three cameras oriented 90degress from each other.
Is it possible to treat a single calibrated stereo pair as a single camera, then "add" the third camera by calibrating it with the pair? Or, is there code available for multiple (3+) camera calibration?
Thanks for your suggestions.
  3 Comments
Cameron Swanson
Cameron Swanson on 4 Sep 2019
Hello, I am trying to perform a similar calibration with 3 cameras as two stereo pairs. My set-up has the cameras positioned with a significant overlapping field of view.
I know that there are toolboxes such as Bo Li's however this is incompatible with my workflow as I need to integrate scale from the stereo calibrations using a checkerboard.
My problem comes when trying to transform the translations and rotations of the 3rd camera into the coordinate system of the 1st camera.
This is the way I have been doing it but it doesn't seem right. Does anyone know how this can be done? Been tearing my hair out trying to get my head around this!
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!
Mogeng Li
Mogeng Li on 12 May 2020
Hey Cameron,
My calculation gives
C3Tra=stereoParams12.TranslationOfCamera2*stereoParams23.RotationOfCamera2+stereoParams23.TranslationOfCamera2

Sign in to comment.

Accepted Answer

Dima Lisin
Dima Lisin on 11 Jan 2016
There are no built-in functions for calibrating 3 or more cameras together. What I would do is first calibrate each camera separately to get the intrinsics. Then calibrate cameras 1 and 2 as a pair to get the R and t between 1 and 2. Then calibrate 2 and 3 as a pair to get the R and t between 2 and 3.
  2 Comments
Max E.
Max E. on 13 Nov 2019
Calibrating the two pairs 1/2 and 2/3 is not always a good choice. You should make sure where you want your global coordinate system to be first and then think about which rotation matrices and translation vectors are the best for you. I would recommend to define the world coordinate system as the optical center of either of the cameras and then perform a stereo calibration from that chosen camera to the other two. So you could for example define the world coordinate system as the optical center of camera 2 and then perform stereo calibration for the pairs 2/1 (pay attention to the order, so that you get rotation from camera 2 to 1 and not the other way around) and 2/3
Mogeng Li
Mogeng Li on 12 May 2020
On top of this, I found that MATLAB refines the intrinsic matrix for each camera in the stereo pair. That means, the intrinsic matrix of camera 2 in stereo 2/3 and stereo 1/2 are not necessarily identical. I'm facing the same problem of a multi-camera rig calibration, and I think the best option is to exploit some external toolboxes and calibrate the entire rig in one go.

Sign in to comment.

More Answers (1)

morrijos
morrijos on 13 Jan 2016
Thanks!
A bit of searching reveals that there are some user-submitted packages for this too. I'll check them out...
https://sites.google.com/site/prclibo/toolbox/doc

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!