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

Transformation 变换 figure 1.png

\[\begin{bmatrix} x' \\ y' \end{bmatrix}=\begin{bmatrix} 1 & a \\ 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}\]

根据变换前后的对应函数关系确定变换矩阵。

旋转变换 Rotate

^04bbec

默认绕原点,逆时针方向进行旋转。

旋转矩阵 Rotation Matrix

Transformation 变换 figure 2.png

\[\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}$

Transformation 变换 figure 3.png

组合变换 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$ 为中心进行旋转,可结合平移和旋转将复杂变换转化为几种简单变换的组合。

  1. 将点 $c$ 平移至中心
  2. 旋转
  3. 平移至原来的状态 Transformation 变换 figure 4.png
\[\pmb{T(c)} \cdot \pmb{R(\alpha)} \cdot \pmb{T(-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}\]

#待整理笔记

反向链接

到头儿啦~

局部关系图