仿射变换和透视变换(射影变换)的关系和区别

标题仿射变换和透视变换(射影变换)的关系和区别

仿射变换和透视变换更直观的叫法可以叫做“平面变换”和“空间变换”或者“二维坐标变换”和“三维坐标变换”。如果这么命名的话,其实很显然,这俩是一回事,只不过一个是二维坐标(x,y),一个是三维坐标(x,y,z)。也就是:
仿射变换:
在这里插入图片描述
透视变换:
在这里插入图片描述
从另一个角度也能说明三维变换和二维变换的意思,仿射变换的方程组有6个未知数,所以要求解就需要找到3组映射点,三个点刚好确定一个平面。透视变换的方程组有8个未知数,所以要求解就需要找到4组映射点,四个点就刚好确定了一个三维空间。


仿射变换


仿射变换主要包括平移变换、旋转变换、缩放变换(尺度变换)、倾斜变换(也叫错切、剪切变换、偏移变换)、翻转变换。有六个自由度
仿射变换保持二维图形的“平直性”和“平行性”,但是角度会改变。

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

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

数学公式如下:
在这里插入图片描述

在这里插入图片描述

**

透视变换(射影变换)

**

射影变换:是最一般的线性变换。有8个自由度。

射影变换保持重合关系和交比不变。但不会保持平行性。

如下图所示:
在这里插入图片描述
数学公式如下:
在这里插入图片描述

刚性变换

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

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

射影变换组成了一个群,这个群被称为射影变换群,n×n可逆实矩阵称为一般线性群GL(n),当把相差非零纯量因子的矩阵都视为等同时,便得到射影映射群,记为PL(n)。在平面,射影变换为PL(3)。
射影变换在平面的变换矩阵形式如下,也就是一个3×3的矩阵。
在这里插入图片描述
其中当上面矩阵的最后一行为(0,0,1)时的变换就为仿射变换,在仿射的前提下,当左上角2×2矩阵正交时为欧式变换,左上角矩阵行列式为1时为定向欧式变换。所以射影变换包含仿射变换,而仿射变换包含欧式变换。
至此我们得到了射影变换和仿射变换的关系。
解析变换矩阵
我们将上面的矩阵分成几个部分,如下
在这里插入图片描述
其中大矩形中的4个元素组成的整体表示线性变换,比如scaling(尺度),shearing(剪切)和ratotion(旋转);椭圆部分表示平移的参数,一个确定在x方向上的平移一个确定在y方向上的平移;小矩形部分用于产生透视变换。从这里所以可以理解成仿射等是透视变换的特殊形式。
**

仿射变换的组成

仿射变换主要包括平移变换、旋转变换、缩放变换(也叫尺度变换)、倾斜变换(也叫错切变换、剪切变换、偏移变换)有六个自由度。
下面具体展示一下各个变换的变换矩阵的形式:

**在这里插入图片描述
在这里插入图片描述

仿射变换的特点

仿射变换保持二维图形的“平直性”和“平行性”,但是角度会改变。
“平直性”:变换后直线还是直线、圆弧还是圆弧。
“平行性”:平行线还是平行线,直线上点的位置顺序不变。
它有6个自由度,即旋转4个,也就是前述大矩形的4个元素都可以同时改变,x方向平移,y方向平移。它能保持平行性,不能保持垂直性,Image中各部分变换前后面积比保持不变,共线线段或者平行线段的长度比保持不变,矢量的线性组合不变。

射影变换(projective transformation)

在这里需要明晰一下的是,透视变换(Perspective Transformation)也称作投影变换(Projective Transformation)、射影变换。
射影变换:是最一般的线性变换。有8个自由度。
射影变换保持重合关系和交比不变。但不会保持平行性。即它会使得仿射变换产生非线性效应。

其他的一些变换

在介绍了仿射变换之后其实我们就应该可以接受更多的变换,但限于本文的主旨是要辨析仿射变换和射影变换之间的关系,所以将该小节的东西放在最后。

等距变换

等距变换相当于是平移变换和旋转变换的复合,用R表示变换矩阵,即为
在这里插入图片描述
左上角2×2矩阵为旋转部分,tx和ty为平移因子,它有三个自由度,即旋转,x方向平移,y方向平移。等距变换前后长度,面积,线段之间的夹角都不变。
相似变换
相似变换相当于是等距变换和均匀缩放的一个复合,用S表示变换矩阵,即为
在这里插入图片描述
左上角2×2矩阵为旋转部分,tx和ty为平移因子,它有4个自由度,即旋转,x方向平移,y方向平移和缩放因子s。相似变换前后长度比,夹角,虚圆点I,J保持不变。相似变换其实与相似三角形之间是有类似的。

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值