07篇(附)--仿射变换矩阵

此篇献给某些 头铁 的小只因们,认真钻研下面的数学式吧

原理示例

首先我们以最简单的一个点的旋转为例子,且以最简单的情况举例,令旋转中心为坐标系中心O(0,0),假设有一点P0(x0,y0),P0离旋转中心O的距离为r,OP0与坐标轴x轴的夹角为α,P0绕O顺时针旋转θ角后对应的点为P(x,y),如下图所示:

那么我们可以得到如下关系:

用矩阵来表示就是

然而,在OpenCV中,旋转时是以图像的左上角为旋转中心,且以逆时针为正方向,因此上面的例子中其实是个负值,那么该矩阵可写为:

其中,

也被称作旋转矩阵。然而我们所要的不仅仅是可以围绕图像左上角进行旋转,而是可以围绕任意点进行旋转。那么我们可以将其转化成绕原点的旋转,其过程为:

  1. 首先将旋转点移到原点
  2. 按照上面的旋转矩阵进行旋转得到新的坐标点
  3. 再将得到的旋转点移回原来的位置

也就是说,在以任意点为旋转中心时,除了要进行旋转之外,还要进行平移操作。那么当点经过平移后得到P点时,如下图所示:

从平移和旋转的矩阵可以看出,3x3矩阵的前2x2部分是和旋转相关的,第三列与平移相关。有了上面的表达式之后,我们就可以得到二维空间中绕任意点旋转的旋转矩阵了,只需要将旋转矩阵先左乘

至此,你已经得到仿射旋转矩阵

相关推荐
刘火锅1 小时前
Java 17 环境下 EasyPoi 反射访问异常分析与解决方案(ExcelImportUtil.importExcelMore)
java·开发语言·python
Hi202402172 小时前
Qt+Qml客户端和Python服务端的网络通信原型
开发语言·python·qt·ui·网络通信·qml
程序员大雄学编程3 小时前
「用Python来学微积分」16. 导数问题举例
开发语言·python·数学·微积分
B站_计算机毕业设计之家3 小时前
预测算法:股票数据分析预测系统 股票预测 股价预测 Arima预测算法(时间序列预测算法) Flask 框架 大数据(源码)✅
python·算法·机器学习·数据分析·flask·股票·预测
yj15583 小时前
装修中怎样避坑
python
景彡先生4 小时前
Python函数定义与调用全解析:从基础语法到实战技巧
linux·开发语言·python
m***记4 小时前
Python字符串操作:如何判断子串是否存在
linux·服务器·python
小白银子5 小时前
零基础从头教学Linux(Day 56)
linux·运维·python
B站计算机毕业设计之家5 小时前
计算机视觉:python手写数字识别系统 手写数字检测 CNN算法 卷积神经网络 OpenCV和Keras模型 大数据毕业设计(建议收藏)✅
python·神经网络·opencv·计算机视觉·cnn·手写数字·数字识别
wolfseek5 小时前
opencv模版匹配
c++·人工智能·opencv·计算机视觉