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

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

原理示例

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

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

用矩阵来表示就是

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

其中,

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

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

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

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

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

相关推荐
Zda天天爱打卡40 分钟前
【机器学习实战入门】使用Pandas和OpenCV进行颜色检测
大数据·人工智能·opencv·机器学习·计算机视觉·pandas
西猫雷婶1 小时前
python学opencv|读取图像(三十七 )截断处理
人工智能·opencv·计算机视觉
叫我:松哥2 小时前
基于python对抖音热门视频的数据分析与实现
开发语言·python·数据挖掘·数据分析·数据可视化·情感分析·lda主题分析
XinShun2 小时前
sqlalchemy The transaction is active - has not been committed or rolled back.
前端·数据库·python
sp_fyf_20242 小时前
Python与PyTorch的浅拷贝与深拷贝
开发语言·pytorch·python
pchmi2 小时前
C# OpenCV机器视觉:特征匹配 “灵魂伴侣”
人工智能·opencv·计算机视觉·c#·特征匹配·opencvsharp
max5006002 小时前
matlab函数主要是计算与坐标差相关的矩阵 `xx` 和 `yy` 及其衍生矩阵
开发语言·matlab·矩阵
半斤地瓜烧.3 小时前
社区版Dify实现文生视频 LLM+ComfyUI+混元视频
人工智能·python·chatgpt·ai作画·音视频
XYX的Blog3 小时前
Python基础02(Python序列结构/列表/元组/集合/字典/序列解包)
python
最好Tony4 小时前
python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)边缘检测
图像处理·python·opencv