Deal with Real World? Rotation & Translation
需要指出的是,在perspective projection这一步,我们处理的点是在以相机为参照系的三维世界坐标系中的,也就是说我们还需要把真实三维世界中的点( WP )转化到以相机为参照系的三维世界坐标系中( CP )。我们可以通过变换坐标系的方法来达到目的,而变换方法为旋转(rotate)和移动(translation)。
坐标系B到A的转换
假设两个坐标系A, B。在三维世界上有一个点P,在坐标系A上观察时,我们称点P为
AP
,同理在坐标系B上称之为
BP
。如果已知
BP
需要求出
AP
,我们可以通过矩阵乘法来达到目的:
其中 ATB 被称为变换矩阵(transformation matrix)。
那该如何得到 ATB 呢?
首先,我们需要了解如何通过一系列的旋转和移动来进行坐标系变换。 假设坐标系B沿坐标轴x旋转了 α ,沿坐标轴y旋转了 β ,沿z旋转了 θ ;并且沿坐标轴x平移了10个单位(unit)。
那么
ATB
可以写成:
其中:
坐标系A到B的转换
如果从坐标系A到B呢?我们很容易得到:
要知道旋转矩阵 ARB 是正交矩阵(orthonomal matrix),所以其逆矩阵等于其转置矩阵,考虑到
简化写法:
或者:
所以得到:
这就是两个坐标轴的转换矩阵之间的关系。
另一种转换方法
事实上,
ATB=[ARBAtB]
蕴涵了很重要的几何关系。
ARB
上的每一列都代表了相对于坐标系A,B坐标系的单位向量,所以又可以写成:
而 ATB 的第四列 AtB 是坐标系B的原点在坐标系A中的坐标。
这样的话,可以由观察得到变换矩阵。
Summary — Camera Matrix
所以,image formation pipeline可以由三个步骤组成,分别为:
最终,我们可以把公式写成:
或者更简单的写法:
M就是相机矩阵(camera matrix),大小为3*4。这个矩阵也是我们在图像转换中需要求得的参数。
下一篇文章将讲述Homography的基本概念,以及如何用python实现几种简单的图像变换。