将相机的相对旋转和平移与已知姿势相结合

问题描述 投票:0回答:1

我已经使用OpenCV的立体声校准功能来获得从一台摄像机到另一台摄像机的相对旋转和平移。我想做的是改变世界空间的起源,并相应地更新两台摄像机的外部特性。我可以轻松地使用与SolvePnP共享视图的摄像机来执行此操作,但是我想使用相对于相邻摄像机(所有字段都不重叠)的姿势定义摄像机的摄像机来完成此操作,例如菊花链他们的相对姿势。

我已经确定要使用SolvePnP的摄像机相对于我希望世界原点和方向的位置,以便我知道最终的外在信号应该是什么。然后,我尝试将立体校准的旋转矩阵和平移矢量与主摄像机的SolvePnP组合在一起,以通过ComposeRT和手动获得相同的值,但无济于事。

Edit:因此,无论什么原因,StereoCalibration和SolvePnP函数都会产生姿势的镜像版本,因为StereoCalibration似乎会产生围绕Y轴旋转180度的姿势。因此,通过将该旋转应用于生成的相对旋转矩阵和平移矢量,一切正常!

python opencv camera-calibration
1个回答
0
投票

如果您通过链知道所有摄像机之间的相对姿势(摄像机abbc之间的相对姿势),则可以将翻译和从摄像机a通过b通过[>]旋转到c

R

ac = R ab R bc

t

ac = t ab + R ab t bc

换句话说,从ac

开始的新旋转是先从a旋转到b,然后再从b旋转到c。平移的计算方法相同,此外,第二平移矢量还必须旋转R ab

预计会有一些误差,这取决于成对校准的准确性。相机姿态错误会在整个链上累积。如果您的摄像机姿势绕了整圈,则通常不会获得与开始/结束摄像机完全相同的姿势。

© www.soinside.com 2019 - 2024. All rights reserved.