编写刚性变换

问题描述 投票:0回答:1

实现两个刚性矩阵,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),不同顺序乘法结果不同。

python torch
1个回答
0
投票

因为您没有分享您尝试过的源代码。根据您的要求生成代码有点困难。不过我设法找到了解决方案

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
© www.soinside.com 2019 - 2024. All rights reserved.