Learning to be Giant.

仿射变换

|

虽然一直号称自己在做Computer Vision的研究,但是毕竟没有系统的上过课,对于一些数字图像处理和图形学的基本问题搞得并不是很清楚。今天突然又遇到了一个仿射变换矩阵,觉得不如就这一次把这个事情搞搞清楚,毕竟是基本问题。

基本变换

当我们考虑一个坐标$(x,y)$,我们可以将其表示为向量形式:

如果我们需要将$p$变换成一个新的坐标,我们需要一个变换矩阵$M$:

那么很自然,我们新的坐标$p’ = Mp$就应当是:

如此一来,我们就可以得到:

假设我们现在取$a = d = 1$, $b = c = 0$,我们就可以发现,坐标没有发生任何变化。也就是说,单位阵不会对坐标产生影响。

缩放

我们让$b = c = 0$,$a$和$d$取任意的正数,即:

我们会发现:

也就是说,坐标发生了缩放。

$$ M = \begin{bmatrix} 1 & 0 \\\\ 0 & 1 \end{bmatrix} $$
$$ M = \begin{bmatrix} 2 & 0 \\\\ 0 & 2 \end{bmatrix} $$
$$ M = \begin{bmatrix} 1 & 0 \\\\ 0 & 2 \end{bmatrix} $$

反射

现在,我们依然让$b = c = 0$,$a$和$d$可以取负值。

$$ M = \begin{bmatrix} 1 & 0 \\\\ 0 & 1 \end{bmatrix} $$
$$ M = \begin{bmatrix} -1 & 0 \\\\ 0 & 1 \end{bmatrix} $$
$$ M = \begin{bmatrix} 1 & 0 \\\\ 0 & -1 \end{bmatrix} $$

剪切

现在我们保持$a = d = 1$,改变$b$和$c$的值,例如:

这相当于:

其效果便是:

$$ M = \begin{bmatrix} 1 & 0 \\\\ 0 & 1 \end{bmatrix} $$
$$ M = \begin{bmatrix} 1 & 1 \\\\ 0 & 1 \end{bmatrix} $$

旋转

现在我们尝试旋转操作。

我们可以发现,当旋转之后:

所以,我们得出:

Homogeneous Coordinates

现在为止,我们已经解决了大部分的变换,但是仍然有一个问题尚未解决,就是目前所有的变换都是基于固定原点的,也就是说我们没有办法实现图像的移动。为了解决这个问题,我们需要引入新的一维$t$。现在,我们的坐标看起来就像这样:

最后一维的坐标永远是1,用来描述位置的变化。相应的,我们的$M$也就变成了:

$$ M = \begin{bmatrix} a & b & t_x \\\\ c & d & t_y \\\\ 0 & 0 & 1 \end{bmatrix} $$

Reference

整篇文章的内容来自:UT Austin CS384G Lecture 7

Comments