Transformation 变换
模型变换(Modeling)和视图变换(Viewing)
WHY
描述移动、旋转、缩放和投影操作对图像的影响
视图变换 Modeling
缩放变换 Scale
缩放矩阵 Scale Matrix
\[\begin{bmatrix} x' \\ y' \end{bmatrix}=\begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}\]当进行均匀缩放时,$s_x=s_y$;不均匀缩放时,$s_x \neq s_y$。
缩放矩阵符号表示:$\pmb{S}_{s_x, s_y}$,其中 $s_x, s_y$ 分别表示在 $x$ 方向和 $y$ 方向上的缩放系数。
反转矩阵 Reflection Matrix
\[\begin{bmatrix} x' \\ y' \end{bmatrix}=\begin{bmatrix} -1 & 0 \\ 0 & -1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}\]切变 Shear Matrix
\[\begin{bmatrix} x' \\ y' \end{bmatrix}=\begin{bmatrix} 1 & a \\ 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}\]根据变换前后的对应函数关系确定变换矩阵。
旋转变换 Rotate
^04bbec
默认绕原点,逆时针方向进行旋转。
旋转矩阵 Rotation Matrix
\[\pmb{R}_\theta=\begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix}\]平移变换 Translation
^9c5863
\[x'=x+tx\] \[y'=y+ty\]平移变换无法仅使用矩阵乘积的形式进行描述,因此引入 齐次坐标,将所有的变换均可仅用矩阵乘积的形式进行描述。
平移变换的矩阵形式(齐次坐标)
\[\begin{bmatrix} x' \\ y' \\ w' \end{bmatrix} = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = \begin{bmatrix} x+t_x \\ y+t_y \\ 1 \end{bmatrix}\]仿射变换 Affine Transformation
仿射变换 = 线性变换 + 平移变换
缩放、旋转均为线性变换
先线性变换,再平移变换
\[\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} + \begin{bmatrix} t_x \\ t_y \end{bmatrix}\]在齐次坐标中
\[\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} a & b & t_x \\ c & d & t_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}\]在表示二维仿射变换下,变换矩阵的最后一行为 $\begin{pmatrix} 0 & 0 & 1\end{pmatrix}$。
齐次坐标下的变换矩阵
- 缩放 $\pmb{S}_{(s_x, s_y)} = \begin{bmatrix} s_x & 0 & 0 \ 0 & s_y & 0 \ 0 & 0 & 1 \end{bmatrix}$
- 旋转 $\pmb{R}_\alpha = \begin{bmatrix} cos\theta & -sin\theta & 0 \ sin\theta & cos\theta & 0 \ 0 & 0 & 1 \end{bmatrix}$
- 平移 $\pmb{T}_{(t_x, t_y)} = \begin{bmatrix} 1 & 0 & t_x \ 0 & 1 & t_y \ 0 & 0 & 1 \end{bmatrix}$
逆变换 Inverse Transformation
变换矩阵的逆矩阵 $\pmb{M}^{-1}$
组合变换 Composing Transform
连续进行多种不同的变换。变换的顺序对变换结果有影响,即
\[\pmb{R}_{45} \cdot \pmb{T}_{(1, 0)} \neq \pmb{T}_{(1, 0)} \cdot \pmb{R}_{45}\]变换矩阵按照变换顺序从右向左相乘,例如,先旋转 $45^\circ$,再平移 $(1, 0)$:
\[\pmb{T}_{(1, 0)} \cdot \pmb{R}_{45} \cdot \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}\]一系列仿射变换:$\pmb{A}_1, \pmb{A}_2, \cdots , \pmb{A}_n$
\[\pmb{A}_n(\cdots \pmb{A}_2(\pmb{A}_1(x))) = \pmb{A}_n \cdot \cdots \cdot \pmb{A}_2 \cdot \pmb{A}_1 \cdot \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}\]可先计算所有的变换矩阵,得到一个变换矩阵,提高效率。
复杂变换分解 Decomposing Complex Transformation
以任意点 $c$ 为中心进行旋转,可结合平移和旋转将复杂变换转化为几种简单变换的组合。
- 将点 $c$ 平移至中心
- 旋转
- 平移至原来的状态
在三维变换中,沿任意轴进行旋转可采用同样的思路。
三维变换 3D Transformation
三维空间下的齐次坐标:
点 $(x, y, z, 1)^T$
向量 $(x, y, z, 0)^T$
三维仿射变换可用 $4 \times 4$ 的矩阵进行表示
\[\begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} = \begin{bmatrix} a & b & c & t_x \\ d & e & f & t_y \\ g & h & i & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix}\]#待整理笔记