How to determine pose of 3 cameras as two stereo pairs?
12 views (last 30 days)
Show older comments
I have 3 cameras that I have calibrated as pairs (1-2 & 2-3) with camera 2 in common. I am using the stereo camera calibration script generated from the toolbox.
Does anyone know how I can transform translations and rotations of the 3rd camera so that its pose is in the coordinate system of the 1st camera. The first calibration (1-2) gives me the translation and rotation of camera 2 wrt to camera 1, and the second gives me 3 wrt 2.
This is the way I have been doing it but when I plot the poses it doesn't look right - camera three seems to be in the wrong position.
- For rotations I've simply multiplied the two rotation matrices - C3R
- For translations I've contructed a homogeneous transormation matrix and then extracted the translation elements - C3T
Any know how to solve this one?
%Camera 2 Tranforms
C2T=stereoParams12.TranslationOfCamera2; %translation of 2 wrt 1
C2R=stereoParams12.RotationOfCamera2; %rotation of 2 wrt 1
C2=[C2R(1,1) C2R(1,2) C2R(1,3) C2T(1,1);C2R(2,1) C2R(2,2) C2R(2,3) C2T(1,2);C2R(3,1) C2R(3,2) C2R(3,3) C2T(1,3);0 0 0 1];
%Camera 3 Transforms
C3Rot=stereoParams23.RotationOfCamera2; %rotation of 3 wrt 2
C3Tra=stereoParams23.TranslationOfCamera2; %translation of 3 wrt 2
C3=[C3Rot(1,1) C3Rot(1,2) C3Rot(1,3) C3Tra(1,1);C3Rot(2,1) C3Rot(2,2) C3Rot(2,3) C3Tra(1,2);C3Rot(3,1) C3Rot(3,2) C3Rot(3,3) C3Tra(1,3);0 0 0 1];
C3Hom=C2*C3; %homogeneous transformation matrix
C3T=[C3Hom(1,4) C3Hom(2,4) C3Hom(3,4)]; %translation of 3 wrt 1
C3R=C2R*C3Rot; %rotation of 3 wrt 1
% stereoParams12: Calibration of cameras 1&2
% stereoParams23: Calibration of cameras 2&3
Any help would be much appreciated!
Thanks in advance,
Cameron
2 Comments
John D'Errico
on 5 Sep 2019
Edited: John D'Errico
on 5 Sep 2019
I lack the appropriate toolbox to know, nor do I have expertise in this particular field. (I'd have made this an answer if I did.)
But it seems to me that you need to be careful with the translation of camera 3. You know the translation of 3 wrt 2, but that translation is described in the coordinate system of camera 2. That leaves you with a disconnect, because you want it all in the camera 1 coordinate system. So you need to back the 2-->3 translation through the camera 2 rotation from 1 to 2.
Logically, it might be better if you did everything with respect to camera 2 anyway, as the camera in common. Then you don't need to back things up to camera 1.
An alternative approach is to pair camera 1 and 2, then camera 1 and 3. That leaves camera 1 as the common camera, so it is much simpler to unravel things.
Just some vague thoughts, that might be helpful.
Answers (0)
See Also
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!