Opencv 三维刚体变换的合成

Opencv 三维刚体变换的合成,opencv,image-processing,computer-vision,motion-detection,Opencv,Image Processing,Computer Vision,Motion Detection,这个问题属于“运动的结构”这一主题 假设有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(已验证,因为

这个问题属于“运动的结构”这一主题

假设有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。但是这种方法计算的翻译是不好的。因为我有实际的结果,所以我可以验证旋转是正确估计的,而不是平移。有什么想法吗?

这是一个简单的矩阵块乘法问题,但您必须记住,您实际上考虑的是4x4矩阵(与三维同质世界中的刚性变换相关),而不是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)执行矩阵块乘法,您将很快发现:

R13=R23*R12


T13=R23*T12+T23

也许是“机器人操作的数学介绍”,可在May Help上找到。你应该更改你问题的标题,这不是关于3幅图像中的对应关系,而是关于3D刚性变换的合成。我会尝试一下,一旦我确认它有效,我会接受答案。谢谢