Calibration of Three or More Cameras

37 次查看(过去 30 天)
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 个评论
Cameron Swanson
Cameron Swanson 2019-9-4
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 2020-5-12
Hey Cameron,
My calculation gives
C3Tra=stereoParams12.TranslationOfCamera2*stereoParams23.RotationOfCamera2+stereoParams23.TranslationOfCamera2

请先登录,再进行评论。

采纳的回答

Dima Lisin
Dima Lisin 2016-1-11
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 个评论
Max E.
Max E. 2019-11-13
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 2020-5-12
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.

请先登录,再进行评论。

更多回答(1 个)

morrijos
morrijos 2016-1-13
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

类别

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