当前位置: 首页 > news >正文

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

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

原理示例

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

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

用矩阵来表示就是

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

其中,

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

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

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

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

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

http://www.lryc.cn/news/503650.html

相关文章:

  • KubeSphere搭建单节点RocketMQ
  • 深度学习中损失函数(loss function)介绍
  • Vue3+Node中使用webrtc推流至mediamtx
  • React 内置的Hook学习
  • Flutter Navigator2.0的原理和Web端实践
  • 初次使用uniapp编译到微信小程序编辑器页面空白,真机预览有内容
  • 【HF设计模式】03-装饰者模式
  • 【人工智能-中级】模型部署与优化:从本地实验到云端与边缘部署
  • Jenkins 编写Pipeline 简介及使用初识详解
  • uboot移植网络驱动过程,无法ping通mx6ull和ubuntu问题解决方案
  • 精准预测美国失业率和贫困率,谷歌人口动态基础模型PDFM已开源,可增强现有地理空间模型
  • C#速成(文件读、写操作)
  • SQL server学习03-创建和管理数据表
  • 【UE5 “RuntimeLoadFbx”插件】运行时加载FBX模型
  • 【潜意识Java】深入理解 Java 面向对象编程(OOP)
  • windows同时使用多个网卡
  • Spark执行计划解析后是如何触发执行的?
  • B4X编程语言:B4X控件方法汇总
  • 基于XML配置Bean和基于XML自动装配
  • 全排列 dfs
  • linux内存相关命令的尝试
  • Vue2 基础
  • 递归问题(c++)
  • 系统思考—战略决策
  • wxwidgets xml插入图片的两种方案
  • 大模型呼入机器人如何赋能呼叫中心?(转)
  • linux下socket本地套接字通讯
  • NDRCContextUnmarshall断点函数分析之I_RpcBindingCopy函数的作用
  • WebView2教程(基于C++)【一】环境初始化
  • go语言中context的用法