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

来源:互联网 发布:大数据股票软件 编辑:程序博客网 时间:2024/06/07 06:00

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实现几种简单的图像变换。