opencv - 查找两个摄像机之间的相对旋转

标签 opencv camera rotation computer-vision

我有两个图像I1和I2,分别具有外部和内部相机参数(R1,t1,R2,t2和K)。对于更简单的情况,当摄像机的平移为零时,我可以使用找出两个摄像机之间的相对旋转;

R = (R1.I) * R2

但是,如果它们具有翻译t1和t2,则以上操作将失败。我们需要应用否定性译文以将其带入世界,然后上面的方法才能起作用。我不明白的是我应该应用否定翻译吗?

最佳答案

当摄像机之间平移时,从第一台摄像机到第二台摄像机的相对旋转不会改变。当第一个摄像头的姿态为(R1,t1)而第二个(R2,t2)姿态为时,则可以计算从一个到两个的旋转量为

R_diff = R1.inv * R2,

(您在上面写过),翻译起来比较繁琐,
t_diff = R1.inv * (t2 - t1).

由此,您可以从第一台摄像机的姿势计算出第二台摄像机的姿势,如下所示:
R2 = R1 * R_diff,
t2 = R1 * t_diff + t1.

对于不确定的翻译,我不确定您所说的“以上将失败”的意思,所以我希望我能正确理解您的问题。

关于opencv - 查找两个摄像机之间的相对旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38737960/

相关文章:

rotation - THREE.js:计算对象上的点的世界空间位置

python - 当这些点集包含噪声时如何对齐两组点(平移+旋转)?

java - 如何在 JavaCV/OpenCV 中进行 PCA 图像压缩

android - 如何临时释放相机?

android - 相机自动对焦回调没有发生

java - 在 libgdx 中旋转 ShapeRenderer 时出现视觉伪影

c++ - IP 摄像机和 OPENCV

c++ - OpenCV 中 findFundamentalMat 函数错误

android - 如何使用 API 21 android 创建相机预览?

c# - 如何在我只想旋转这些页面的特殊页面中设置页面大小!