如何从两个外部相机矩阵中导出相对平移和旋转?
How can I derive relative translation and rotation from two extrinsic camera matrices?
我有两组与视频序列相关的数据。一个包含使用一种算法生成的相对旋转和平移数据。另一个由与每一帧相关联的真实外在矩阵组成。
我想比较数据集以确定它们之间的差异。我的问题是,如何从两个外部相机矩阵推导出相对平移和旋转?
外部矩阵由旋转矩阵 3x3 和平移向量 3x1 组成。
所以,M 3x4,只是两个 [R t] 的串联。除非我误解了你的问题,否则旋转和平移是微不足道的。
如果你有 camera1
姿势 P1 = [R1|T1]
和 camera2
姿势 P2 = [R2|T2]
那么 P1to2 = P2 * P1^-1
.
直观地,想象一个简单的情况,其中两个相机的平移为零,camera1
X 轴旋转 +30 度,camera2
X 轴旋转 +60 度。
P1 = [R1|0] P2 = [R2|0]
所以它们都在 X 轴上旋转 +30 度不同:
P1to2 = P2 * P1^-1 = [R2|0] * [R1|0]^-1 = [R2|0] * [R1^1|0]
R2 * R1^1 = 60 - 30 on X = rotation of +30 degrees on X
我有两组与视频序列相关的数据。一个包含使用一种算法生成的相对旋转和平移数据。另一个由与每一帧相关联的真实外在矩阵组成。
我想比较数据集以确定它们之间的差异。我的问题是,如何从两个外部相机矩阵推导出相对平移和旋转?
外部矩阵由旋转矩阵 3x3 和平移向量 3x1 组成。
所以,M 3x4,只是两个 [R t] 的串联。除非我误解了你的问题,否则旋转和平移是微不足道的。
如果你有 camera1
姿势 P1 = [R1|T1]
和 camera2
姿势 P2 = [R2|T2]
那么 P1to2 = P2 * P1^-1
.
直观地,想象一个简单的情况,其中两个相机的平移为零,camera1
X 轴旋转 +30 度,camera2
X 轴旋转 +60 度。
P1 = [R1|0] P2 = [R2|0]
所以它们都在 X 轴上旋转 +30 度不同:
P1to2 = P2 * P1^-1 = [R2|0] * [R1|0]^-1 = [R2|0] * [R1^1|0]
R2 * R1^1 = 60 - 30 on X = rotation of +30 degrees on X