实现两个刚性矩阵,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
如何用python实现,例如:torch.bmm(A12, A23)或torch.bmm(A23, A12),哪个是正确的?
我尝试使用python来实现,例如:torch.bmm(A12, A23)或torch.bmm(A23, A12),不同顺序乘法结果不同。
因为您没有分享您尝试过的源代码。根据您的要求生成代码有点困难。不过我设法找到了解决方案
import numpy as np
A23 = np.array([[R23, T23], [0, 0, 0, 1]])
A12 = np.array([[R12, T12], [0, 0, 0, 1]])
A13 = np.dot(A23, A12)
R13 = A13[:3, :3]
T13 = A13[:3, 3]
您提到正确的公式是 R13 = R23 * R12 和 T13 = R23 * T12 + T23。所以你必须遵循这个顺序:
R13 = np.dot(R23, R12)
T13 = np.dot(R23, T12) + T23