Image Formation Pipeline --- 从2D到3D(二)

Deal with Real World? Rotation & Translation

需要指出的是,在perspective projection这一步,我们处理的点是在以相机为参照系的三维世界坐标系中的,也就是说我们还需要把真实三维世界中的点( WP )转化到以相机为参照系的三维世界坐标系中( CP )。我们可以通过变换坐标系的方法来达到目的,而变换方法为旋转(rotate)和移动(translation)。

坐标系B到A的转换

假设两个坐标系A, B。在三维世界上有一个点P,在坐标系A上观察时,我们称点P为 AP ,同理在坐标系B上称之为 BP 。如果已知 BP 需要求出 AP ,我们可以通过矩阵乘法来达到目的:

AP=ATBBP

其中 ATB 被称为变换矩阵(transformation matrix)。

那该如何得到 ATB 呢?

首先,我们需要了解如何通过一系列的旋转和移动来进行坐标系变换。 假设坐标系B沿坐标轴x旋转了 α ,沿坐标轴y旋转了 β ,沿z旋转了 θ ;并且沿坐标轴x平移了10个单位(unit)。

那么 ATB 可以写成:

ATB=[ARBAtB]

其中:
ARB=Rot(z,θ)Rot(y,β)Rot(x,α)

AtB=1000

Rot(x,α)=1000cosαsinα0sinαcosα

Rot(y,β)=cosβ0sinβ010sinβ0cosβ

Rot(z,θ)=cosθsinθ0sinθcosθ0001

坐标系A到B的转换

如果从坐标系A到B呢?我们很容易得到:

BP=(ATB)1AP

要知道旋转矩阵 ARB 是正交矩阵(orthonomal matrix),所以其逆矩阵等于其转置矩阵,考虑到
AP=ARB(BP)+AtB

简化写法:
AP=R(BP)+t

RT(APt)=BP

或者:
BP=(RT)APRTt

所以得到:
ATB=(BTA)1=[(BRA)T](BRA)T(BtA)

这就是两个坐标轴的转换矩阵之间的关系。

另一种转换方法

事实上, ATB=[ARBAtB] 蕴涵了很重要的几何关系。 ARB 上的每一列都代表了相对于坐标系A,B坐标系的单位向量,所以又可以写成:

ARB=[AxBAyBAzB]

ATB 的第四列 AtB 是坐标系B的原点在坐标系A中的坐标。
这样的话,可以由观察得到变换矩阵。

Summary — Camera Matrix

所以,image formation pipeline可以由三个步骤组成,分别为:

image formation pipeline

最终,我们可以把公式写成:

imximy1=x/ωy/ω1

xyω=f/sx000f/sy0oxoy1[CRCt]XWYWZW1

或者更简单的写法:
xyω=MXWYWZW1

M就是相机矩阵(camera matrix),大小为3*4。这个矩阵也是我们在图像转换中需要求得的参数。

下一篇文章将讲述Homography的基本概念,以及如何用python实现几种简单的图像变换。