仿射变换

1) 用途
旋转 (线性变换),平移 (向量加).缩放(线性变换),错切,反转

2) 方法
仿射变换是一种二维坐标到二维坐标之间的线性变换,它保持了二维图形的“平直性”(直线经过变换之后依然是直线)和“平行性”(二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。任意的仿射变换都能表示为乘以一个矩阵(线性变换),再加上一个向量 (平移) 的形式.

以上公式将点(x,y)映射到(x’,y’),在OpenCV中通过指定一个2x3矩阵实现此功能(公式中的m矩阵,是线性变换和平移的组合,m11,m12,m21,m22为线性变化参数,m13,m23为平移参数,其最后一行固定为0,0,1,因此,将3x3矩阵简化为2x3)

3) 举例
a) 以原点为中心旋转,2x3矩阵为:
[ cos(theta), -sin(theta), 0 ],
[ sin(theta), cos(theta), 0 ]

x’ = x * cos(theta) - sin(theta) * y
y’ = x * sin(theta) + cos(theta) * y

b) 平移,2x3矩阵为
[1,0,tx],
[0,1,ty]

x’ = x * 1 + y * 0 + tx = x + tx
y’ = x * 0 + y * 1 + ty = y + ty

4) 具体应用
在OpenCV中,仿射变换通过函数cvWrapAffine(src,dst,mat)实现,其中mat是2x3的仿射矩阵,该矩阵可以利用函数cvGetAffineTransform(srcTri,dstTri,mat)得到,其中mat是被该函数填充的仿射矩阵,srcTri和dstTri分别是由三个顶点定义的平行四边形(由于是平行四边形,只需要指定三个顶点即可确定),即:给出变换前的ABCD和变换后的A’B’C’D’

透视变换(投影变换)

1) 用途
将2D矩阵图像变换成3D的空间显示效果,全景拼接.

2) 方法
透视变换是将图片投影到一个新的视平面,也称作投影映射.它是二维(x,y)到三维(X,Y,Z),再到另一个二维(x’,y’)空间的映射.
相对于仿射变换,它提供了更大的灵活性,将一个四边形区域映射到另一个四边形区域(不一定是平行四边形).它不止是线性变换.但也是通过矩阵乘法实现的,使用的是一个3x3的矩阵,矩阵的前两行与仿射矩阵相同(m11,m12,m13,m21,m22,m23),也实现了线性变换和平移,第三行用于实现透视变换.

以上公式设变换之前的点是z值为1的点,它三维平面上的值是x,y,1,在二维平面上的投影是x,y,通过矩阵变换成三维中的点X,Y,Z,再通过除以三维中Z轴的值,转换成二维中的点x’,y’.
从以上公式可知,仿射变换是透视变换的一种特殊情况.它把二维转到三维,变换后,再转映射回之前的二维空间(而不是另一个二维空间).

3) 具体应用
在OpenCV中,透视变换通过函数cvWrapPerspective(src,dst,mat)实现, 与仿射变换不同的是,透视矩阵是一个3x3的矩阵,在计算矩阵时,可利用函数cvGetPerspectiveTransform(srcQuad,dstQuad,mat),由于不再是平行四边形,需要提供四边形的四个顶点

区别

仿射变换后平行四边形的各边仍操持平行,透视变换结果允许是梯形等四边形,所以仿射变换是透视变换的子集

实例:
1. 仿射变换 https://blog.csdn.net/augusdi/article/details/9022447
2. 透视变换 https://blog.csdn.net/Augusdi/article/details/9022197

转载自:

https://blog.csdn.net/xieyan0811/article/details/71106539

仿射变换与透视变换区别相关推荐

  1. 【数字图像处理】-- 弄懂等距变换(刚性变换)、相似变换、仿射变换、透视变换(投影变换)

    目录 概述(Introduction) 等距变换(Euclidean Transformation) 平移变换(Translation Transformation) 旋转变换(Rotation Tr ...

  2. 射影变换与仿射变换、透视变换(射影既透视,包含了Z轴的信息)

    图像处理的仿射变换和透视变换(射影既透视,包含了Z轴的信息) 其实一直也没理解"仿射"俩字是啥意思,但是大家都这么叫,其实仿射变换和透视变换更直观的叫法可以叫做"平面变换 ...

  3. 图像处理之_仿射变换与透视变换

    1.      仿射变换 1) 用途 旋转 (线性变换),平移 (向量加).缩放(线性变换),错切,反转 2) 方法 仿射变换是一种二维坐标到二维坐标之间的线性变换,它保持了二维图形的"平直 ...

  4. z变换判断稳定性和因果性_图像处理的仿射变换与透视变换

    原文首发于微信公众号:[3D视觉工坊]. 引言 这一周主要在研究图像的放射变换与透视变换,目前出现的主要问题是需要正确识别如下图中的编码标志点圆心. 1.当倾斜角较小时: 倾斜角较小 2.倾斜角较大时 ...

  5. opencv 仿射变换与透视变换详解

    常见的2D图像变换从原理上讲主要包括基于2×3矩阵的仿射变换和基于3×3矩阵透视变换. 仿射变换 原理 基本的图像变换就是二维坐标的变换:从一种二维坐标(x,y)到另一种二维坐标(u,v)的线性变换: ...

  6. 相机标定(四)—— 仿射变换和透视变换

    仿射变换和透视变换 0. 概述 1. 线性变换 2. 从代数角度看线性变换 3. 仿射变换 4. 从代数角度看仿射变换 5. 通过线性变换来完成仿射变换 6. 仿射变换的一系列原子变换 6.1 平移变 ...

  7. 图像处理的仿射变换与透视变换

    引言   这一周主要在研究图像的放射变换与透视变换,目前出现的主要问题是需要正确识别如下图中的编码标志点圆心. 1.当倾斜角较小时: 2.倾斜角较大时:   由上面两幅图可以看出,当倾斜角较大时,中间 ...

  8. 图像处理基本算法--仿射变换和透视变换

    仿射变换和透视变换更直观的叫法可以叫做"平面变换"和"空间变换"或者"二维坐标变换"和"三维坐标变换".一个是二维坐标( ...

  9. opencv仿射变换和透视变换门牌号实践总结

    前几日在门牌号识别优化过程中发现当摄像头拍摄角度倾斜或者相机仰头拍摄出来的门牌号发生了畸变,即使能够找到门牌号区域也大大降低了识别的准确度,因此想到了倾斜矫正--仿射变换和透视变换,关于这两个概念网上 ...

最新文章

  1. 周志华教授公布IJCAI 2021投稿量:4204篇,相比去年下降10%!
  2. 存储过程 psal emp.sal%type是什么意思
  3. 3、 PPT合并形状
  4. HDU 1828 Picture 线段树 扫描线
  5. 阿卡迪亚大学的计算机科学,阿卡迪亚大学计算机科学
  6. 清华大学-曾鸣-《ARM微控制器与嵌入式系统》I2C总线(二)
  7. RMI和WebService
  8. c语言枪图形,6个变态的C语言Hello World程序[转载]
  9. 如何才能更容易拿到大厂Offer?从理论到实践!
  10. redis基础学习(一)— 配置项
  11. 一个对iBatis的总结写的不错(转载)
  12. C#读取匿名对象的属性值的方法总结
  13. Acunetix Web Vulnarability Scanner V10.5 详细中文手册
  14. 让Win10中文操作系统默认使用英文输入法,并且Ctrl+Shift切换中英文
  15. 笔记本计算机无法上无线网络,笔记本电脑连不上无线网络的处理方法
  16. iPhone 13不会自动锁屏该怎么解决?
  17. 成品系统搭建 一周就可以上线运营
  18. Java多线程学习笔记
  19. 钉钉网页版入口,存档
  20. 货郎问题和计算复杂度

热门文章

  1. 数据库—用户权限管理(三十三)
  2. 计算机非线编辑配置,做非线编什么样的电脑配置最合理!
  3. 王树尧老师运筹学课程笔记 10 线性规划与单纯形法(关于检测数与退化的讨论)
  4. 目标检测YOLO实战应用案例100讲-基于PReNet和YOLOv4融合的 雨天交通目标检测网络
  5. B/S结构 (捎带脚介绍C/S结构~ )
  6. 【.Net实用方法总结】 整理并总结System.IO中StreamWriter类及其方法介绍
  7. windows管理右键新建菜单
  8. 第 5 篇:用视图集,简化你的代码
  9. 对汉字依据首字母进行排序
  10. html form表单数据转为json传输