一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)

时间:2024-04-04 08:20:23

0 前言

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

1 变换矩阵

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

KaTeX parse error: Expected 'EOF', got '&' at position 32: …+ay′=y+b x&̲#x27;= x + a \\…xy1=100010ab1xy1
上式中等号后面的矩阵即为变换矩阵。为了使用矩阵表示平移变换,需要将坐标的维度增加一维,因为二维的矩阵没有办法表示平移变换,这叫做齐次坐标。
齐次坐标: 使用N+1维坐标来表示N维坐标,例如在2D笛卡尔坐标系中加上额外变量w来形成2D齐次坐标系(x,y)⇒(x,y,w) 。齐次坐标具有规模不变性,同一点可以被无数个齐次坐标表达.(x,y,1)⇒(ax,ay,a) 齐次坐标转化为笛卡尔坐标可以通过同除最后一项得到。
在计算机图形学中,为了统一将平移、旋转、缩放等用矩阵表示,需要引入齐次坐标。(假设使用2x2的矩阵,是没有办法描述平移操作的,只有引入3x3矩阵形式,才能统一描述二维中的平移、旋转、缩放操作。同理必须使用4x4的矩阵才能统一描述三维的变换。
同样的我们可以使用矩阵来表示,缩放变换,旋转变换,相似变换,仿射变换和投影变换。

2 刚性变换

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

2.1 平移变换

平移变换我们在上面已经提到过
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)

2.2 旋转变换

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
旋转变换的变换矩阵,不像平移变换那么容易得到,我们这里介绍一下,旋转变换的变换矩阵是怎么求出来的。

2.2.1 绕原点的二维旋转

首先要明确旋转在二维中是绕着某一个点进行旋转,三维中是绕着某一个轴进行旋转。二维旋转中最简单的场景是绕着坐标原点进行的旋转,如下图所示:
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)

2.2.3 绕任意点的二维旋转

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

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

2.3 等距变换

等距变换相当于是平移变换和旋转变换的复合,用R表示变换矩阵,即为 :
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
左上角2×2矩阵为旋转部分,tx和ty为平移因子,它有三个*度,即旋转,x方向平移,y方向平移。等距变换前后长度,面积,线段之间的夹角都不变。

3 相似变换

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

3.1 缩放变换

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)

3.2 切向变换

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)

3.3 相似变换

相似变换相当于是等距变换和均匀缩放的一个复合,用S表示变换矩阵,即为
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
左上角2×2矩阵为旋转部分,tx和ty为平移因子,它有4个*度,即旋转,x方向平移,y方向平移和缩放因子s。相似变换前后长度比,夹角,虚圆点I,J保持不变。相似变换其实与相似三角形之间是有类似的。

4 仿射变换

仿射变换和相似变换近似,不同之处在于相似变换具有单一旋转因子和单一缩放因子,仿射变换具有两个旋转因子和两个缩放因子,因此具有6个*度。不具有保角性和保持距离比的性质,但是原图平行线变换后仍然是平行线。仿射变换主要包括平移变换、旋转变换、缩放变换(也叫尺度变换)、倾斜变换(也叫错切变换、剪切变换、偏移变换)、翻转变换,有六个*度。
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
仿射变换的表示如下:
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
仿射变换的特点如下:
仿射变换保持二维图形的“平直性”和“平行性”,但是角度会改变。
“平直性”:变换后直线还是直线、圆弧还是圆弧。
“平行性”:平行线还是平行线,直线上点的位置顺序不变。
它有6个*度,即旋转4个,也就是前述大矩形的4个元素都可以同时改变,x方向平移,y方向平移。它能保持平行性,不能保持垂直性,Image中各部分变换前后面积比保持不变,共线线段或者平行线段的长度比保持不变,矢量的线性组合不变。

5 投影变换

在这里需要明晰一下的是,透视变换(Perspective Transformation)也称作投影变换(Projective Transformation)、射影变换。
射影变换:是最一般的线性变换。有8个*度。射影变换保持重合关系和交比不变。但不会保持平行性。即它会使得仿射变换产生非线性效应。
射影变换组成了一个群,这个群被称为射影变换群,n×n可逆实矩阵称为一般线性群GL(n),当把相差非零纯量因子的矩阵都视为等同时,便得到射影映射群,记为PL(n)。在平面,射影变换为PL(3)。
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
仿射变换和射影变换的区别
其中当上面矩阵的最后一行为(0,0,1)时的变换就为仿射变换,在仿射的前提下,当左上角2×2矩阵正交时为欧式变换,左上角矩阵行列式为1时为定向欧式变换。所以射影变换包含仿射变换,而仿射变换包含欧式变换。
至此我们得到了射影变换和仿射变换的关系。

6 解析变换矩阵

变换矩阵可以分为如下几个部分:
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
其中大矩形中的4个元素组成的整体表示线性变换,比如scaling(尺度),shearing(剪切)和ratotion(旋转);椭圆部分表示平移的参数,一个确定在x方向上的平移一个确定在y方向上的平移;小矩形部分用于产生透视变换。从这里所以可以理解成仿射等是透视变换的特殊形式。其实不管是仿射变换是透视变换的特殊形式,其他所有的变换都是透视变换的变换矩阵取特殊值的特殊形式。
最后再补充一些名词上的解释:
projective transformation(投影变换) = homography(单应性变换) = collineation( 直射变换).

参考博客:

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

转自:https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css

0 前言

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

1 变换矩阵

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

KaTeX parse error: Expected 'EOF', got '&' at position 32: …+ay′=y+b x&̲#x27;= x + a \\…xy1=100010ab1xy1
上式中等号后面的矩阵即为变换矩阵。为了使用矩阵表示平移变换,需要将坐标的维度增加一维,因为二维的矩阵没有办法表示平移变换,这叫做齐次坐标。
齐次坐标: 使用N+1维坐标来表示N维坐标,例如在2D笛卡尔坐标系中加上额外变量w来形成2D齐次坐标系(x,y)⇒(x,y,w) 。齐次坐标具有规模不变性,同一点可以被无数个齐次坐标表达.(x,y,1)⇒(ax,ay,a) 齐次坐标转化为笛卡尔坐标可以通过同除最后一项得到。
在计算机图形学中,为了统一将平移、旋转、缩放等用矩阵表示,需要引入齐次坐标。(假设使用2x2的矩阵,是没有办法描述平移操作的,只有引入3x3矩阵形式,才能统一描述二维中的平移、旋转、缩放操作。同理必须使用4x4的矩阵才能统一描述三维的变换。
同样的我们可以使用矩阵来表示,缩放变换,旋转变换,相似变换,仿射变换和投影变换。

2 刚性变换

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

2.1 平移变换

平移变换我们在上面已经提到过
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)

2.2 旋转变换

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
旋转变换的变换矩阵,不像平移变换那么容易得到,我们这里介绍一下,旋转变换的变换矩阵是怎么求出来的。

2.2.1 绕原点的二维旋转

首先要明确旋转在二维中是绕着某一个点进行旋转,三维中是绕着某一个轴进行旋转。二维旋转中最简单的场景是绕着坐标原点进行的旋转,如下图所示:
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)

2.2.3 绕任意点的二维旋转

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

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

2.3 等距变换

等距变换相当于是平移变换和旋转变换的复合,用R表示变换矩阵,即为 :
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
左上角2×2矩阵为旋转部分,tx和ty为平移因子,它有三个*度,即旋转,x方向平移,y方向平移。等距变换前后长度,面积,线段之间的夹角都不变。

3 相似变换

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

3.1 缩放变换

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)

3.2 切向变换

一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)

3.3 相似变换

相似变换相当于是等距变换和均匀缩放的一个复合,用S表示变换矩阵,即为
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
左上角2×2矩阵为旋转部分,tx和ty为平移因子,它有4个*度,即旋转,x方向平移,y方向平移和缩放因子s。相似变换前后长度比,夹角,虚圆点I,J保持不变。相似变换其实与相似三角形之间是有类似的。

4 仿射变换

仿射变换和相似变换近似,不同之处在于相似变换具有单一旋转因子和单一缩放因子,仿射变换具有两个旋转因子和两个缩放因子,因此具有6个*度。不具有保角性和保持距离比的性质,但是原图平行线变换后仍然是平行线。仿射变换主要包括平移变换、旋转变换、缩放变换(也叫尺度变换)、倾斜变换(也叫错切变换、剪切变换、偏移变换)、翻转变换,有六个*度。
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
仿射变换的表示如下:
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
仿射变换的特点如下:
仿射变换保持二维图形的“平直性”和“平行性”,但是角度会改变。
“平直性”:变换后直线还是直线、圆弧还是圆弧。
“平行性”:平行线还是平行线,直线上点的位置顺序不变。
它有6个*度,即旋转4个,也就是前述大矩形的4个元素都可以同时改变,x方向平移,y方向平移。它能保持平行性,不能保持垂直性,Image中各部分变换前后面积比保持不变,共线线段或者平行线段的长度比保持不变,矢量的线性组合不变。

5 投影变换

在这里需要明晰一下的是,透视变换(Perspective Transformation)也称作投影变换(Projective Transformation)、射影变换。
射影变换:是最一般的线性变换。有8个*度。射影变换保持重合关系和交比不变。但不会保持平行性。即它会使得仿射变换产生非线性效应。
射影变换组成了一个群,这个群被称为射影变换群,n×n可逆实矩阵称为一般线性群GL(n),当把相差非零纯量因子的矩阵都视为等同时,便得到射影映射群,记为PL(n)。在平面,射影变换为PL(3)。
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
仿射变换和射影变换的区别
其中当上面矩阵的最后一行为(0,0,1)时的变换就为仿射变换,在仿射的前提下,当左上角2×2矩阵正交时为欧式变换,左上角矩阵行列式为1时为定向欧式变换。所以射影变换包含仿射变换,而仿射变换包含欧式变换。
至此我们得到了射影变换和仿射变换的关系。

6 解析变换矩阵

变换矩阵可以分为如下几个部分:
一文读懂图像中点的坐标变换(刚体变换,相似变换,仿射变换,投影变换)
其中大矩形中的4个元素组成的整体表示线性变换,比如scaling(尺度),shearing(剪切)和ratotion(旋转);椭圆部分表示平移的参数,一个确定在x方向上的平移一个确定在y方向上的平移;小矩形部分用于产生透视变换。从这里所以可以理解成仿射等是透视变换的特殊形式。其实不管是仿射变换是透视变换的特殊形式,其他所有的变换都是透视变换的变换矩阵取特殊值的特殊形式。
最后再补充一些名词上的解释:
projective transformation(投影变换) = homography(单应性变换) = collineation( 直射变换).

参考博客:

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