个人资料,仅供学习使用
修改时间——2022年1月25日 06:29:39
学习课程:OpenCV4 C++ 快速入门视频30讲
视频老师:贾志刚
21 图像旋转
opencv知识点:
- 仿射变换 - warpAffine
- 计算二维旋转的仿射矩阵 - getRotationMatrix2D
本课所解决的问题:
- 如何理解图像几何变换和图像变换?
- 图像几何变换都有什么变换?
- 如何理解仿射变换和透视变换?
- 如何实现图像的旋转?
提示在前:
笔者为了理解图像旋转的warpAffine,引申了很多其他的概念
1.图像几何变换和图像变换
为了更好的理解图像翻转,图像旋转等,我们首先介绍一下变换相关的概念
图像的变换,从严格意义上来说分为两种
- 几何变换
- 图像变换
简述
图像几何变换:
改变图像的大小或形状。
比如图像的平移、旋转、放大、缩小等,这些方法在图像配准中使用较多。
图像变换:
通过数学映射的方法,将空域的图像信息转换到频域、时频域等空间上进行分析。
比如傅里叶变换、小波变换等。
区别
文章引用:简述图像几何变换和图像变换的区别
图像几何变换和图像变换的区别为:性质不同,包括不同,原始图像不同。
(1)性质
- 图像几何变换是从具有几何结构之集合至其自身或其他此类集合的一种对射。
- 图像变换将原定义在图像空间的图像以某种形式转换到另外的空间,利用空间的特有性质方便地进行一定的加工,最后再转换回图像空间以得到所需的效果。
(2)包括
- 图像几何变换包括翻折变换、平移变换、旋转变换等。
- 图像变换包括傅里叶变换、沃尔什-阿达玛变换等。
(3)原始图像
- 图像几何变换的原始图像为平面域图像。
- 图像变换的原始图像为空间域图像。
2.图像几何变换
而图像的几何变换,又可以分为三类:
- 刚性变换
- 仿射变换
- 透视变换
三类变换
刚性变换:
只有物体的位置(平移变换)和朝向(旋转变换)发生改变,而形状不变,得到的变换称为刚性变换。
仿射变换:
仿射变换是从一个二维坐标系变换到另一个二维坐标系,属于线性变换。
通过已知3对坐标点可以求得变换矩阵。
透视变换:
透视变换是从一个二维坐标系变换到一个三维坐标系,属于非线性变换。
通过已知4对坐标点可以求得变换矩阵。
基本变换、仿射变换和透视变换
图像的几何变换包含很多变换,其中有一些基本变换,具体如下
- 平移(Translation)
- 缩放(Scale)
- 旋转(Rotation)
- 翻转(Flip)
- 错切(Shear)
而仿射变换和透视变换就是对这些基本变换进行组合实现的
也就是说,仿射变换和透视变换包含所有的基本变换,同时也作为基本变换的某种组合
在opencv中,针对它们已经封装好了对应的API,分别为
- 仿射变换 - warpAffine
- 透视变换 - warpPerspective
3.图像旋转
说回图像旋转
从上文我们知道了一些关键点
- 图像旋转就是图像几何变换中,基本变换的一种
- 仿射变换和透视变换包含所有的基本变换
所以我们可以通过仿射变换API——