将相对相机旋转和平移与已知位置相结合

2024-04-19 06:23:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用了OpenCVs的stereocalibrate函数来获得从一个相机到另一个相机的相对旋转和平移。我想做的是改变世界空间的原点,并相应地更新两个相机的外部特性。我可以很容易地用与SolvePnP共享视图的相机来实现这一点,但是我想用相机来实现这一点,其中每个相机都是由它相对于相邻相机的姿势来定义的,而相邻相机的所有场都不重叠,就像雏菊链接它们的相对姿势一样。你知道吗

我已经用SolvePnP确定了相机相对于世界原点和方向的姿态,这样我就知道了最终的外在“应该是什么”。然后,我尝试将立体校准的旋转矩阵和平移向量与主相机的解算PNP相结合,以使用Composer和手动获得相同的值,但没有效果。你知道吗

编辑:因此,不管出于什么原因,StereoCalibration和SolvePnP函数都会生成姿势的镜像版本,因为StereoCalibration似乎会生成绕Y轴旋转180度的姿势。因此,通过将旋转应用于生成的相对旋转矩阵和平移向量,一切都正常!你知道吗


Tags: 函数视图定义世界空间矩阵特性向量
1条回答
网友
1楼 · 发布于 2024-04-19 06:23:42

如果通过链知道所有摄影机之间的相对姿势(摄影机abbc之间的相对姿势),则可以通过

Rac=RabRbc

tac=tab+Rabtbc

换言之,从ac的新旋转首先从a旋转到b,然后从b旋转到c。以相同的方式计算平移,此外,第二个平移向量必须旋转Rab。你知道吗

根据成对校准的精确程度,预计会有一定的误差。摄影机姿势的错误会在链上累积。如果你有一个完整的圆相机姿势,你通常不会得到完全相同的姿势开始/结束相机。你知道吗

相关问题 更多 >