目录
1. Why Transformation?
Modeling:
- 描述摄像机的运动(最重要的是位置的移动);
- 一个高难度运动动作(比如机器人的一个旋转动作)是由一种或多种变换组合而成
Viewing :3D到2D的投影变换
2. 2D上的变换(通过矩阵进行变换)
2.1 缩放(scaling)
缩放变换是一种沿着坐标轴变换的一种变换方式。
缩放矩阵定义:其中sx表示横坐标x缩放的比例; sy表示纵坐标y缩放的比例
简单示例如下:
2.2 剪切(shearing)
shear变换直观理解就是把当前2维图像的一边进行固定,然后向某个方向拉伸,相较于缩放,剪切会改变原先图像的具体样貌
切变矩阵如下:(左边是"拉伸"x轴,右边"拉伸"y轴)
以拉伸x轴为例,即水平方向的切变
2.3 旋转
在平面内的旋转,规定:
(1) 默认旋转时是绕着原点进行旋转
(2) 默认旋转时是按着逆时针旋转
对于旋转,其实图像上每个点经过的变化是相同的,所以在推导时,我们可以选用图像的几个特殊顶点来进行推导,有助于快速理解。
旋转矩阵定义:
如下图:
2.4 翻转
- 水平翻转:图像沿着y轴对称
- 垂直翻转:图像沿着x轴对称
以水平翻转为例:
以上所有转换都是线性转换,即变换后的图像中的坐标是变换前图像坐标的一种线性组合。写成矩阵后,系数所组成的矩阵便是变换矩阵。
3. 平移变换(仿射变换)
平移变换是一类特殊的变换。它不属于线性变换,不能再通过一个 变换矩阵 来实现变换。
4. 齐次坐标
为什么要引入齐次坐标?
由上面可知,平移变换与其他变换的形式不同,那为了统一所有变换形式,引入齐次坐标概念
定义
齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示。
注意其中一个点和一个向量定义的区别:最后一个维度添加的数不同。
那如何选择的1或0?
我们用三维的向量来表示我们的2维图像变换的操作:
对于平移(仿射)变换:
对于其他变换:
其中,tx,ty 都为0.
5.复合变换
把仿射变换和线性变换用齐次坐标统一之后,很多复杂的变换,我们就可以拆分成很多步简单的变换来一步一步实现。
注意:变换的顺序是非常重要的,变换的顺序决定了变换矩阵相乘的顺序,因此得到不一样的结果。
注意每次变换时变换矩阵都是添加在原矩阵的左边
先平移,再旋转(默认以原点为旋转中心)的结果如下:
先旋转,再平移的结果如下:
以给定点为旋转中心?
默认情况下旋转变换都是以原点为中心,那以一个给定点为中心该怎么做?
6. 逆变换
上述变换的反操作
7. 3D空间中的变换
类比2D空间的变换
旋转
绕x,y,z轴旋转。
注意以y轴进行旋转时的操作