这个问题属于主题 - 'Structure from Motion'。
假设有 3 张图片。图像1-2和图像2-3之间有点对应关系,但是图像1和图像3之间没有共同点。我得到了图像2的RT(旋转和平移矩阵),RT12,相对于图像1(考虑图像1 RT 为 [I|0],即旋转为恒等式,平移为零)。让我们将 RT12 拆分为 R12 和 T12。
同样,我得到 RT23,将图像 2 RT 视为 [I|0]。所以,现在我有 R23 和 T23,它们与图像 2 相关,但与图像 1 无关。现在我想找到 R13 和 T13。
对于合成数据集,方程 R13=R23*R12 给出了正确的 R(已验证,因为我实际上已经预先计算了 R13)。类似的T13应该是T2+T1。但是以这种方式计算的翻译是不好的。因为我有实际结果,所以我可以验证旋转估计得很好,但不是平移。有什么想法吗?
最佳答案
这是一个简单的矩阵 block 乘法问题,但您必须记住,您实际上考虑的是 4x4 矩阵(与 3D 齐次世界中的刚性变换相关联)而不是 3x4 矩阵。
您的 3x4 RT 矩阵实际上对应于 4x4 矩阵 A 的前三行,其最后一行是 [0, 0, 0, 1]:
RT23 -> A23=[R23, T23; 0, 0, 0, 1]
RT12 -> A12=[R12, T12; 0, 0, 0, 1]
然后,如果您对 4x4 矩阵 (A13 = A23 * A12) 进行矩阵 block 乘法,您很快就会发现:
R13 = R23 * R12
T13 = R23 * T12 + T23
关于opencv - 3D刚性变换的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23750498/