详解矩阵变换:伸缩,旋转,反射和投影

目录

一. 矩阵子空间

二. 矩阵变换

2.1 伸缩矩阵

2.2 旋转矩阵

2.3 反射矩阵

2.4 投影矩阵

2.5 小结

三. 矩阵变换与函数

3.1 原点

3.2 常数倍性质

3.3 加法性质

3.4 小结

四. 空间变换

五. 小结


一. 矩阵子空间

矩阵与向量相乘Ax可以看成子空间的变换。

零空间:输入向量x,输出Ax会变成零向量;

列空间:将Ax看成对矩阵列的组合;

矩阵A行的维度与输入向量x的维度一定是一样的,所以Ax也可以看成从行空间到列空间的转变。

二. 矩阵变换

假定矩阵为n行n列,且形成n维空间。输入的向量x也是n维的,Ax也就相当于得到了一个新的向量。很明显输入的空间为n维R^n。接下来我们来看在相同空间内的四种矩阵变换:

2.1 伸缩矩阵

假定某矩阵为单位阵的倍数A=cI,如下:

那么Ax相当于对输入的向量扩张c倍,整个空间会延伸或压缩。当c为负数时,则沿着相反的方向操作,如下:

2.2 旋转矩阵

假定某矩阵如下:

当输入为(x,y)时,输出可计算为:

\begin{bmatrix} 0 &-1 \\ 1& 0 \end{bmatrix}\begin{bmatrix} x\\ y \end{bmatrix}=\begin{bmatrix} -y\\x \end{bmatrix}

很明显就是把输入(x,y)逆时针旋转90度,如下:

2.3 反射矩阵

发射矩阵也被称之为reflection matrix,标准形式如下:

当输入向量为(x,y)时,很明显输出为(y,x)。这两个点是关于y=x直线对称的。举个例子,如果输入点为(2,2),那么输出点也是(2,2),很有意思并没有改变。如果输入点为(2,-2),经过矩阵变换则变为(-2,2)。

如果将输入的两个点进行组合形成v,如下:

v=(2,2)+(2,-2)=(4,0)

矩阵对第一个点相当于没有变换,对第二点转换x和y的位置,可得:

Av=(2,2)+(-2,2)=(0,4)

刚好对应上了。

实际上,投影矩阵也可以看成置换矩阵(permutation matrix),其直观的图像如下:

2.4 投影矩阵

投影矩阵也叫做projection matrix,其本质是将整个空间进行降低到子空间,该过程是不可逆的。标准的二维投影矩阵如下:

输入点为(x,y),经过矩阵变换后为(x,0),该点也是在x轴上且距离输入点最近的点。可以把此时的x轴看成矩阵A的列空间。原y轴上所有的点,都会被投影到(0,0),也就是其零空间(null space)。直观图像如下:

2.5 小结

以上例子可被之间推广到三维的情况。此处有一个非常有意思的总结:

There are matrices to stretch the earth or spin it or reflect it across the plane of the equator (forth pole transforming to south pole). There is a matrix that projects everything onto that plane (both poles to the center).

三. 矩阵变换与函数

根据以上讨论,我们可以把矩阵变换看成一种线性的函数转化,如下:

T(x)=Ax

3.1 原点

因为A0=0,所以任何矩阵对原点都是无可变换的。

3.2 常数倍性质

如果某矩阵可以把x变成x',那么当输入是2x时,输出肯定是2x'。当输入是cx时,输出肯定是cx',总结性质如下:

A(cx)=c(Ax)

当c=0时,此时也可以证明3.1中原点的性质。

3.3 加法性质

如果输入分别为x和y,对应的输出为x'和y',那么当输入为求和x+y时,输出也肯定为x'+y'。总结性质如下:

A(x+y)=Ax+Ay

矩阵的乘法满足如上的变换性质,满足以上也可以称之为线性变换(linear transformation)。

3.4 小结

对于任意的数c和d,任意的向量x和y,矩阵乘法满足如下线性法则:

A(cx+dy)=c(Ax)+d(Ay)

矩阵跟线性代数(linear algebra)的关系就是这么来的。

四. 空间变换

矩阵变换可以从R^nR^n。如果给出的矩阵A是m行n列的,那么就可以从n维向量变换到m维向量,换句话说长方形的矩阵(非方阵)也满足如上线性变换。

以上变换中的cx+dy中的x和y可以使多项式,可以是矩阵,还可以是函数x(t)和y(t),只要满足如上关系都可以看成线性变换。

举个例子,一个次数为n的多项式如下:

p=a_0+a_1t+\cdots+a_nt^n

该多项式有n+1个系数,所以可以看成n+1维的向量。在网络安全等领域,这种理解经常会出现。

五. 小结

图像的几何变换是指将一幅图像中的坐标位置映射到另一张图像中的新坐标位置,几何变换包括平移、旋转、缩放、翻转、仿射变换、透视变换等。平移、旋转、缩放似乎是最为简单的几何变换,可以通过仿射变换实现。

仿射变换是将一个二维坐标转换到另一个二维坐标的过程。仿射变换是一种线性变换,变换前是直线的,变换后依然是直线;变换前是平行线的,变换后依然是平行线。仿射变换的概念如下图所示。变换前图像中的点 1、点 2、点 3(不在同一条直线上)与变换后图像中的点 1、点 2、点 3 一一对应。由于 3 点可以决定一个平面,所以利用这 3个点的对应关系就可以对整个图像平面进行仿射变换。仿射变换的范围很广,平移、旋转、缩放、翻转实际上都属于仿射变换。

仿射变换又称三点变换,因为它只用到 3 个点,而透视变换则用到了 4 个点,因此也被称为四点变换。透视变换是利用投影成像的原理将物体重新投射到另一个成像平面,如下图。透视变换的转换矩阵也与仿射变换的矩阵不同,是一个 3×3 的矩阵。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/318090.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文搞定,JMeter的三种参数化方式

1、Test Plan 中添加变量 可以在 Test Plan 中设置好添加变量,变量名可以在任意的位置使用,比如说在线程组中直接用${ 变量名 }方式引用,步骤如下: 1)设置变量名和变量值 2)添加线程组 3)添加…

[情商-11]:人际交流的心理架构与需求层次模型

目录 前言: 一、心理架构 1.1 个体生理层 1.2 个体心理层 1.3 点对点人际交流层 1.4 社会网络层 1.5 社会价值层 二、人的需求层次模型 2.1 需求(欲望)层次模型 2.2 基因与人需求之间的关系 2.3 个体生理需求 2.4 个体的心理需求…

MyBatis源码分析(六):数据源模块

1. 概述 本文,我们来分享 MyBatis 的数据源模块,对应 datasource 包。如下图所示: ​ 在 MyBatis源码分析(二):项目结构 中,简单介绍了这个模块如下: 数据源是实际开发中常用的组件…

5 微信小程序

功能开发 5 功能开发概要今日详细1.发布1.1 发布流程的问题1.2 组件:进度条1.3 修改data中的局部数据1.4 发布示例效果前端后端 1.5 闭包 2.获取前10条新闻(动态/心情,无需分页)3.复杂版4.文章详细页面 各位小伙伴想要博客相关资料…

Java--业务场景:SpringBoot 通过Redis进行IP封禁实现接口防刷

文章目录 前言具体实现步骤1. 定义自定义注解2. 编写拦截器类IpUrlLimitInterceptor3. 在WebConfig类中添加IpUrlLimitInterceptor4. 添加注解到接口上 测试效果参考文章 前言 在实际项目中,有些攻击者会使用自动化工具来频繁刷新接口,造成系统的瞬时吞…

一些前端学习过程的自测练习题

目录 页面设计部分 1 设计一个简单的学院网站首页; 2.按照图示要求完成简单的登录页面 3.完成如下网站设计 4.完成如下网站设计(练习页面布局) 5 利用下面素材,设计一个满足H5规范的网页(移动端页面练习&#xff…

leetcode刷题记录18(2023-08-29)【最短无序连续子数组(单调栈) | 合并二叉树(dfs) | 任务调度器(桶) | 回文子串(二维dp)】

581. 最短无序连续子数组 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 请你找出符合题意的 最短 子数组,并输出它的长度。 示例 1: 输入&am…

TensorRT模型优化模型部署(七)--Quantization量化(PTQ and QAT)(二)

系列文章目录 第一章 TensorRT优化部署(一)–TensorRT和ONNX基础 第二章 TensorRT优化部署(二)–剖析ONNX架构 第三章 TensorRT优化部署(三)–ONNX注册算子 第四章 TensorRT模型优化部署(四&am…

Java中finally和return的执行顺序

Java中finally和return的执行顺序 try...catch...finally1. finally语句在return语句执行之后return返回之前执行的2. finally块中的return语句会覆盖try块中的return返回3. 如果finally语句中没有return语句覆盖返回值,那么原来的返回值可能因为finally里的修改而改…

进程的状态

进程状态反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。在三态模型 中,进程状态分为三个基本状态,即就绪态,运行态,阻塞态。在五态模型中,进程分为新建态、就绪态,运行态&#x…

【书生·浦语】大模型实战营——第四课笔记

教程链接:https://github.com/InternLM/tutorial/blob/main/xtuner/README.md 视频链接:https://www.bilibili.com/video/BV1yK4y1B75J/?vd_source5d94ee72ede352cb2dfc19e4694f7622 本次视频的内容分为以下四部分: 目录 微调简介 微调会使…

【ArcGIS遇上Python】ArcGIS Python批量筛选多个shp中指定字段值的图斑(以土地利用数据为例)

文章目录 一、案例分析二、提取效果二、代码运行效果三、Python代码四、数据及代码下载一、案例分析 以土地利用数据为例,提取多个shp数据中的旱地。 二、提取效果 原始土地利用数据: 属性表: 提取的旱地:(以图层名称+地类名称命名)

数据结构——排序算法之快速排序

个人主页:日刷百题 系列专栏:〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 🌎欢迎各位→点赞👍收藏⭐️留言📝 ​ ​ 前言: 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法。 基本思想&…

弟12章 1 网络编程

文章目录 网络协议概述 p164TCP协议与UDP协议的区别 p165 网络协议概述 p164 ipv4:十进制点分制 ipv6:十六进制冒号分隔 TCP协议与UDP协议的区别 p165 tcp协议的三次握手:

MySQL单表查询

显示所有职工的基本信息。 mysql8.0 [chap03]>select * from worker; 查询所有职工所属部门的部门号,不显示重复的部门号。 mysql8.0 [chap03]>select distinct(部门号) from worker; 求出所有职工的人数。 mysql8.0 [chap03]>select count(*) from …

山西电力市场日前价格预测【2024-01-14】

日前价格预测 预测说明: 如上图所示,预测明日(2024-01-14)山西电力市场全天平均日前电价为415.13元/MWh。其中,最高日前电价为851.84元/MWh,预计出现在18:15。最低日前电价为198.87元/MWh,预计…

04.neuvector进程策略生成与管控实现

原文链接,欢迎大家关注我的github 一、进程学习管控的实现方式 策略学习实现: 进程的学习与告警主要依据通过netlink socket实时获取进程启动和退出的事件: 1.创建netLink socket; 2.通过创建netlink的fd对进程的事件进行捕获与更新&#x…

“超人练习法”系列08:ZPD 理论

01 先认识一个靓仔 看过 Lev Vygotsky 这个人的书吗?他是一位熟练心理学家,对人们习得技能的方式非常感兴趣,但他 37 岁的时候就因肺炎英年早逝了。 他认为社会环境对学习有关键性的作用,认为社会因素与个人因素的整合促成了学习…

计算机网络 —— 数据链路层

数据链路层 3.1 数据链路层概述 数据链路层把网络层交下来的数据构成帧发送到链路上,以及把收到的帧数据取出并上交给网络层。链路层属于计算机网络的底层。数据链路层使用的信道主要由以下两种类型: 点对点通信。广播通信。 数据链路和帧 链路&…

UniRepLKNet实战:使用 UniRepLKNet实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…