如何计算旋转矩阵之间的差异?

时间:2014-09-12 04:02:51

标签: computer-vision transformation rotational-matrices

我有两个旋转矩阵。一个是我通过解决PnP问题得到的真实网络摄像头的旋转矩阵。我有一个世界坐标框架,我知道世界空间中世界坐标中每个点的位置。

据我所知,旋转矩阵将世界坐标中的点转换为相机帧坐标(此处不考虑平移)。这意味着,R1为您提供了相对于相机坐标系的世界坐标系的方向。

我的第二个旋转矩阵是传感器,它也是世界坐标。也就是说,此旋转矩阵为您提供相对于传感器坐标系的世界坐标系的方向。

我想找到相对于传感器坐标系的真实网络摄像头坐标系的方向。

让我们命名第一个旋转矩阵Rw1和第二个旋转矩阵Rw2,下标w1表示相对于真实网络摄像头的世界,w2表示相对于传感器的世界(1和2可以分别表示真正的网络摄像头和传感器)

所以我的目标是找到R12。 (而不是R21)

R12 = R1w * Rw2 = (Rw1)' * Rw2

我假设这个R12始终保持不变(在视频的后续帧中),因为传感器和网络摄像头位置不会相互干扰,它们总是一起移动。我的假设有效吗?

如果它有效,那么我的最终目标是在后续帧中计算真实网络摄像头的旋转矩阵。我可以计算后续帧中传感器的旋转矩阵,后续帧为Rw2帧。我必须找出Rw1,我不能使用任何PnP算法。我想根据当前可用的信息来计算它。

现在让我们考虑第二帧。

我知道R12(我假设是恒定的,我在第一帧中计算)和Rw2(第二帧的传感器旋转矩阵)。我必须在第二帧找到Rw1。

Rw1 = Rw2 * R21 = Rw2 * (R12)'

我的方法是否正确?

PS:(R)'表示R的转置。

1 个答案:

答案 0 :(得分:3)

使用旋转矩阵时,您必须格外小心源坐标系和目标坐标系。

考虑两个坐标系R1和R2,您可以表示旋转矩阵将以R表示的点M R1 转换为对应点M R2 ,表示为R2,R R2< -R1 ,使得:

M R2 = R R2< -R1 * M R1

这种表示法非常有用,有两个很好的属性:

(R R2< -R1 -1 = R R1< -R2

R R3< -R2 * R R2< -R1 = R R3< -R1

现在,考虑到这一点,您应该很容易得到问题的答案。让我们使用以下关于您的特定问题的符号:

R 0 1 = R 0 cam< -world :旋转矩阵世界坐标到摄像机坐标at第0帧

R 0 2 = R 0 sensor< -world :旋转矩阵世界坐标到传感器坐标at第0帧

R t 1 = R t cam< -world :旋转矩阵世界坐标到摄像机坐标处第t帧

R t 2 = R t sensor< -world :旋转矩阵世界坐标到传感器坐标at第t帧

首先,您希望找到相机坐标系中的旋转矩阵变换点到传感器坐标系中的点(即“真实网络摄像头坐标系相对于传感器坐标系的方向”)。

R 0 12 = R 0 sensor< -cam = R 0 sensor< -world * R 0 world< -cam = R 0 2 *(R 0 1 -1

然后,你想要在后续帧中找到网络摄像头的旋转矩阵,知道该帧的传感器的旋转矩阵,并假设R t 12 = [R 0 <子> 12

R t 1 = R t cam&lt; -world = R t cam&lt; -sensor * R t sensor&lt; -world =(R t sensor&lt; - cam -1 * R t sensor&lt; -world =(R 0 12 -1 * R t 2