天天看点

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

0 前言

现在的人脸图像识别流程中有一个步骤叫人脸对齐,现在的一般方法是采用人脸上的关键点坐标,进行相似变换来实现人脸校正。多次在人脸识别的论文中看到 similarity transform,由于在线代和矩阵分析的课上一直划水。对相似变换也是一知半解,今天决定不惜一下相关的知识。大部分的内容都是参考网上大神的,这里只是做个整理。下面的阐述主要以二维坐标为例,多维空间的左边点,可以通过增加变换矩阵的维度得知。

1 变换矩阵

假如二维空间中存在点(x,y),我们想通过将x移动a,y移动b,得到新的坐标点(x’,y’),那么变换的公式可以写为:

x ′ = x + a y ′ = y + b x'= x + a \\ y'=y + b x′=x+ay′=y+b

上市可以写成矩阵的形式:

[ x ′ y ′ 1 ] = [ 1 0 a 0 1 b 0 0 1 ] [ x y 1 ] \left[ \begin{matrix} x' \\ y' \\ 1 \end{matrix} \right] = \left[ \begin{matrix} 1 & 0 & a \\ 0 & 1 & b \\ 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} x \\ y \\ 1 \end{matrix} \right] ⎣⎡​x′y′1​⎦⎤​=⎣⎡​100​010​ab1​⎦⎤​⎣⎡​xy1​⎦⎤​

上式中等号后面的矩阵即为变换矩阵。为了使用矩阵表示平移变换,需要将坐标的维度增加一维,因为二维的矩阵没有办法表示平移变换,这叫做齐次坐标。

齐次坐标: 使用N+1维坐标来表示N维坐标,例如在2D笛卡尔坐标系中加上额外变量w来形成2D齐次坐标系(x,y)⇒(x,y,w) 。齐次坐标具有规模不变性,同一点可以被无数个齐次坐标表达.(x,y,1)⇒(ax,ay,a) 齐次坐标转化为笛卡尔坐标可以通过同除最后一项得到。

在计算机图形学中,为了统一将平移、旋转、缩放等用矩阵表示,需要引入齐次坐标。(假设使用2x2的矩阵,是没有办法描述平移操作的,只有引入3x3矩阵形式,才能统一描述二维中的平移、旋转、缩放操作。同理必须使用4x4的矩阵才能统一描述三维的变换。

同样的我们可以使用矩阵来表示,缩放变换,旋转变换,相似变换,仿射变换和投影变换。

2 刚性变换

刚性变换: 只有物体的位置(平移变换)和朝向(旋转变换)发生改变,而形状不变,得到的变换称为刚性变换。刚性变换是最一般的变换。

2.1 平移变换

平移变换我们在上面已经提到过

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

2.2 旋转变换

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

旋转变换的变换矩阵,不像平移变换那么容易得到,我们这里介绍一下,旋转变换的变换矩阵是怎么求出来的。

2.2.1 绕原点的二维旋转

首先要明确旋转在二维中是绕着某一个点进行旋转,三维中是绕着某一个轴进行旋转。二维旋转中最简单的场景是绕着坐标原点进行的旋转,如下图所示:

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

2.2.3 绕任意点的二维旋转

绕原点的旋转是二维旋转最基本的情况,当我们需要进行绕任意点旋转时,我们可以把这种情况转换到绕原点的旋转,思路如下:

  1. 首先将旋转点移动到原点处
  2. 执行如2所描述的绕原点的旋转
  3. 再将旋转点移回到原来的位置
    一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵
    一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵
    对于二维平移,如下图所示,P点经过x和y方向的平移到P’点,可以得到:
    一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵
    一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

2.3 等距变换

等距变换相当于是平移变换和旋转变换的复合,用R表示变换矩阵,即为 :

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

左上角2×2矩阵为旋转部分,tx和ty为平移因子,它有三个自由度,即旋转,x方向平移,y方向平移。等距变换前后长度,面积,线段之间的夹角都不变。

3 相似变换

在介绍相似变换之前先介绍两个简单的变换,缩放变换和切向变换。

3.1 缩放变换

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

3.2 切向变换

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

3.3 相似变换

相似变换相当于是等距变换和均匀缩放的一个复合,用S表示变换矩阵,即为

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

左上角2×2矩阵为旋转部分,tx和ty为平移因子,它有4个自由度,即旋转,x方向平移,y方向平移和缩放因子s。相似变换前后长度比,夹角,虚圆点I,J保持不变。相似变换其实与相似三角形之间是有类似的。

4 仿射变换

仿射变换和相似变换近似,不同之处在于相似变换具有单一旋转因子和单一缩放因子,仿射变换具有两个旋转因子和两个缩放因子,因此具有6个自由度。不具有保角性和保持距离比的性质,但是原图平行线变换后仍然是平行线。仿射变换主要包括平移变换、旋转变换、缩放变换(也叫尺度变换)、倾斜变换(也叫错切变换、剪切变换、偏移变换)、翻转变换,有六个自由度。

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

仿射变换的表示如下:

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

仿射变换的特点如下:

仿射变换保持二维图形的“平直性”和“平行性”,但是角度会改变。

“平直性”:变换后直线还是直线、圆弧还是圆弧。

“平行性”:平行线还是平行线,直线上点的位置顺序不变。

它有6个自由度,即旋转4个,也就是前述大矩形的4个元素都可以同时改变,x方向平移,y方向平移。它能保持平行性,不能保持垂直性,Image中各部分变换前后面积比保持不变,共线线段或者平行线段的长度比保持不变,矢量的线性组合不变。

5 投影变换

在这里需要明晰一下的是,透视变换(Perspective Transformation)也称作投影变换(Projective Transformation)、射影变换。

射影变换:是最一般的线性变换。有8个自由度。射影变换保持重合关系和交比不变。但不会保持平行性。即它会使得仿射变换产生非线性效应。

射影变换组成了一个群,这个群被称为射影变换群,n×n可逆实矩阵称为一般线性群GL(n),当把相差非零纯量因子的矩阵都视为等同时,便得到射影映射群,记为PL(n)。在平面,射影变换为PL(3)。

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

仿射变换和射影变换的区别:

其中当上面矩阵的最后一行为(0,0,1)时的变换就为仿射变换,在仿射的前提下,当左上角2×2矩阵正交时为欧式变换,左上角矩阵行列式为1时为定向欧式变换。所以射影变换包含仿射变换,而仿射变换包含欧式变换。

至此我们得到了射影变换和仿射变换的关系。

6 解析变换矩阵

变换矩阵可以分为如下几个部分:

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)0 前言1 变换矩阵2 刚性变换3 相似变换5 投影变换6 解析变换矩阵

其中大矩形中的4个元素组成的整体表示线性变换,比如scaling(尺度),shearing(剪切)和ratotion(旋转);椭圆部分表示平移的参数,一个确定在x方向上的平移一个确定在y方向上的平移;小矩形部分用于产生透视变换。从这里所以可以理解成仿射等是透视变换的特殊形式。其实不管是仿射变换是透视变换的特殊形式,其他所有的变换都是透视变换的变换矩阵取特殊值的特殊形式。

最后再补充一些名词上的解释:

projective transformation(投影变换) = homography(单应性变换) = collineation( 直射变换).

参考博客:
  1. 旋转变换(一)旋转矩阵
  2. 图像几何变换之仿射变换
  3. 何为仿射变换(Affine Transformation)
  4. 【Computer Vision】图像单应性变换/投影/仿射/透视
  5. 仿射变换和射影变换、等距变换、相似变换

继续阅读