图像处理的仿射变换和透视变换(射影既透视,包含了Z轴的信息)

其实一直也没理解“仿射”俩字是啥意思,但是大家都这么叫,其实仿射变换和透视变换更直观的叫法可以叫做“平面变换”和“空间变换”或者“二维坐标变换”和“三维坐标变换”。如果这么命名的话,其实很显然,这俩是一回事,只不过一个是二维坐标(x,y),一个是三维坐标(x,y,z)。也就是:

仿射变换: 

透视变换: 

从另一个角度也能说明三维变换和二维变换的意思,仿射变换的方程组有6个未知数,所以要求解就需要找到3组映射点,三个点刚好确定一个平面。透视变换的方程组有8个未知数,所以要求解就需要找到4组映射点,四个点就刚好确定了一个三维空间。

射变换主要包括平移变换、旋转变换、缩放变换(也叫尺度变换)、倾斜变换(也叫错切变换、剪切变换、偏移变换)、翻转变换。有六个自由度

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

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

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

数学公式如下:

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

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

如下图所示:

数学公式如下:

参考:  http://blog.csdn.net/kinbosong/article/details/64923831 
http://blog.sina.com.cn/s/blog_90cf580001013oc4.html 
http://blog.csdn.net/u014096352/article/details/53526747 
https://zhidao.baidu.com/question/189639914.html

刚性变换

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

仿射变换 (affine transformation)

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

射影变换组成了一个群,这个群被称为射影变换群,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保持不变。相似变换其实与相似三角形之间是有类似的。

射影变换与仿射变换、透视变换(射影既透视,包含了Z轴的信息)相关推荐

  1. pandas使用datetime创建示例dataframe:包含完整的时分秒信息、创建时间索引、使用不同的时间频率、date_range中参数freq的偏移量别名

    pandas使用datetime创建示例dataframe:包含完整的时分秒信息.创建时间索引.使用不同的时间频率.date_range中参数freq的偏移量别名 目录

  2. R语言删除ggplot可视化图中的所有x轴轴标签实战:ggplot可视化默认包含所有x轴轴标签、删除ggplot可视化图中的所有x轴轴标签实战

    R语言删除ggplot可视化图中的所有x轴轴标签实战:ggplot可视化默认包含所有x轴轴标签.删除ggplot可视化图中的所有x轴轴标签实战 目录

  3. Matlab绘制包含双Y轴的图

    绘制数据对左侧 y 轴的图 创建左右两侧都有 y 轴的坐标区.yyaxis left 命令用于创建坐标区并激活左侧.后续图形函数(例如 plot)的目标为活动侧.绘制数据对左侧 y 轴的图. x = ...

  4. 在细节消息中包含能够捕获失败的信息(63)

    2019独角兽企业重金招聘Python工程师标准>>> 程序由于未被捕获异常失败时,系统会自动打印该异常的堆栈轨迹 包含异常的字符串表示法(toString) 通常包含异常的类名,以 ...

  5. 车削加工编程一般包含X和Z坐标运动及绕Z轴旋转的转角坐标

    车削加工编程一般包含X和Z坐标运动及绕Z轴旋转的转角坐标C .­ (1)快速定位(G00或G0) 刀具以点位控制方式从当前所在位置快速移动到指令给出的目标位置.­ 指令格式:G00 X(U) Z(W) ...

  6. 三菱FX3U六轴标准程序,程序包含本体3轴控制,扩展3个1PG定位模块,一共六轴

    三菱FX3U六轴标准程序,程序包含本体3轴控制,扩展3个1PG定位模块,一共六轴. 程序有轴点动控制,回零控制,相对定位,绝对定位. 另有气缸数个,一个大是DD马达控制的转盘,整个是转盘多工位流水作业 ...

  7. 2.创建多个Worker 类,存储在List 集合中。3.打印输出所有的工人信息。4.计算所有工人的平均工资。5打印输出姓名中包含 “胡“ 的所有工人信息。6打印输出所有姓 “胡“ 的工人信息。

    import java.util.*; import java.util.function.Consumer; import java.util.Objects;public class Test7 ...

  8. 多视图几何——变换层次总结(射影变换,仿射变换,相似变换,欧式变换)

    书中的2D变换总结: 书中的3D变换总结: 变换层级 欧式->相似->仿射->射影,变换的层级提高,失真越来越严重,不变性质越来越少,变换矩阵的自由度越来越高.后面的变换都兼容前面的 ...

  9. opencv python 图像缩放/图像平移/图像旋转/仿射变换/透视变换

    Geometric Transformations of Images 1图像转换 OpenCV提供了两个转换函数cv2.warpAffine和cv2.warpPerspective,可以使用它们进行 ...

最新文章

  1. Love Java , Love IBM , Love Sun ( SunJiHai )
  2. linux 约等于符号,Mac OS X基础教程:特殊符号的快捷输入方式
  3. [小算法] 找出单链表中的中间元素
  4. 安徽一个班37人考进清华北大,老师发来一则短信,家长沉默了
  5. 学校的体育设施预订服务系统
  6. 25个优秀的设计机构网站设计案例
  7. JS学习笔记6-JavaScript 数据类型
  8. Spring MVC 数据回显
  9. ajax如何提交多表单的值_菜狗教程-03-如何解决快速提交两次重复提交表单的问题...
  10. Mac OS 下创建txt文本文件
  11. 数据结构与算法分析(排序,递归,链表)
  12. php 微信支付V3接口
  13. 20162327WJH第三次实验——查找与排序2
  14. js获取当前时间(标准时间)
  15. 无主之地计算机中丢失,”无主之地3“游戏存档丢失!解决方法汇总
  16. LDUOnlineJudge特判程序 special judge (SPJ) 编写方法;HUSTOJ特判题目设置方法
  17. C语言编程>第六周 ① 编写一个录入函数:用来从键盘接收n个整型数并存放在一个整型数组中。 在主函数中调用该函数计算出这n个整数之和。
  18. 爬取豆瓣电影剧情片排行榜
  19. 16 部必看 AI 电影以及AI 电影脱颖而出的原因
  20. windows10怎么用cmd编译C语言,win10怎么样使用cmd来运行程序

热门文章

  1. PeopleSoft Enterprise应付账款管理
  2. 智和网管平台(SugarNMS)油气管线网管系统解决方案
  3. 傻白入门芯片设计,如何降低CPU功耗?(八)
  4. html2canvas与window.devicePixelRatio
  5. 关于360浏览器对aspect-ratio不兼容解决方法
  6. 查看防火墙状态 开放端口
  7. 【盛派内部分享资料】本期主题:使用JavaScript HTML CSS构建跨平台桌面应用
  8. [Linux] 在 Linux CLI 使用 ssh-keygen 生成 RSA 密钥
  9. MGA元宇宙创世大会 中国2022
  10. 儿童启蒙显微镜 让孩子看见“隐藏的世界” 实物标本皆观测