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

目录

一. 矩阵子空间

二. 矩阵变换

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.mzph.cn/news/619690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 系统编程:文件系统的底层逻辑 - inode

《Linux 程序设计》的第三章讲文件操作。在提到 目录 时有这么一段文字: 文件,除了本身包含的 内容 以外,它还会有一个 名字 和一些 属性,即“管理信息”,包括文件的创建 / 修改日期和它的访问权限。这些属性被保存在文…

ActiveMQ反序列化RCE漏洞复现(CVE-2023-46604)

漏洞名称 Apache ActiveMQ OpenWire 协议反序列化命令执行漏洞 漏洞描述 Apache ActiveMQ 是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。 OpenWire协议在ActiveMQ中被用于…

在虚拟机中安装OpenEuler操作系统

目录 OpenEuler操作系统安装步骤(详细) 一、首先要做好安装前的准备工作: 二、进行虚拟机的创建: 三、OpenEuler 23.09操作系统的安装部署: OpenEuler操作系统安装步骤(详细) 一、首先要做好…

C#基于ScottPlot进行可视化

前言 上一篇文章跟大家分享了用NumSharp实现简单的线性回归,但是没有进行可视化,可能对拟合的过程没有直观的感受,因此今天跟大家介绍一下使用C#基于Scottplot进行可视化,当然Python的代码,我也会同步进行可视化。 P…

从AAAI 2024看人工智能研究的最新热点

图 1 由AAAI 2024论文列表生成的词云 AAAI会议作为全球AI领域的顶级学术盛会,被中国计算机学会(CCF)评为A类会议。AAAI2024的会议论文投稿量达到了历史新高,主赛道收到了12100篇投稿论文,9862篇论文经过严格评审后共有…

imx6ull基于yocto工程的l汇编点亮ed

通过汇编点亮led 在裸机状态下通过汇编点亮led,即没有操作系统,(uboot kernel rootfs 都不需要实现)。 led点亮原理 1.GPIO复用 根据原理图,找到led对应的引脚(pin),复用为GPIO(只有GPIO才能…

一些硬件知识(三)

uint8_t, uint32_t, 和 uint16_t 是 C 和 C 语言中的数据类型&#xff0c;它们分别表示无符号的 8 位、32 位和 16 位整数。这些数据类型定义在标准库 <stdint.h>&#xff08;在 C 语言中&#xff09;或 <cstdint>&#xff08;在 C 中&#xff09;。 uint8_t&…

伴随矩阵定义和计算

一、伴随矩阵定义 1&#xff09;代数余子式 代数余子式也很好理解&#xff0c;在余子式的基础上多了一个-1的次方而已。 2)余子式 余子式很好理解&#xff0c;就是除了这个元素&#xff0c;出去该行该列剩下的行列式的值。 求每个元素的代数余子式&#xff0c;按行求&#xf…

QT基础篇(1)QT概述

1.什么是QT QT是一个跨平台的C应用程序开发框架。它提供了一套丰富的图形用户界面&#xff08;GUI&#xff09;和多媒体功能&#xff0c;可以用于开发各种类型的应用程序&#xff0c;包括桌面应用程序、移动应用程序和嵌入式系统。QT具有易于使用、可定制性强、性能高等特点&a…

uniapp 制作 wgt 包(用于 app 的热更新)

升级版本号 修改 manifest.json 的配置&#xff0c;应用版本名称和应用版本号 必须高于上一版的值。 制作 wgt 包 发布 wgt 包 打开 uni-admin 项目的升级中心 上传后会自动生成下载链接 app 的静默热更新 发布新版后&#xff0c;用户打开app&#xff0c;后台会自动下载 wgt…

pyenv虚拟环境安装和配合pipenv多版本创建

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、下载配置pyenv二、配置多版本虚拟环境总结 前言 最近公司编写了一个自动化用例编写软件&#xff0c;需要适配win7和win10系统&#xff0c;需要同时编译3.8…

基于SSM+vue的新生报到服务管理系统(Java毕业设计)

大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的方法。无论你是…

C++算法学习心得五.二叉树(4)

1.二叉搜索树中的插入操作&#xff08;701题&#xff09; 题目描述&#xff1a;给定二叉搜索树&#xff08;BST&#xff09;的根节点和要插入树中的值&#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证&#xff0c;新值和原始二叉搜索树中的任意…

【Python机器学习】SVM——线性模型与非线性特征

SVM&#xff08;核支持向量机&#xff09;是一种监督学习模型&#xff0c;是可以推广到更复杂模型的扩展&#xff0c;这些模型无法被输入空间的超平面定义。 线模型在低维空间中可能非常受限&#xff0c;因为线和平面的灵活性有限&#xff0c;但是有一种方式可以让线性模型更加…

Linux系统中的IP地址、主机名、和域名解析

1.IP地址 每一台联网的电脑都会有一个地址&#xff0c;用于和其它计算机进行通讯 IP地址主要有2个版本&#xff0c;V4版本和V6版本&#xff08;V6很少用&#xff0c;暂不涉及&#xff09; IPv4版本的地址格式是&#xff1a;a.b.c.d&#xff0c;其中abcd表示0~255的数字&…

echarts x轴下增加一组数据的实现方法

实现效果&#xff1a; 关键代码 xAxis: [{type: category,axisTick:{show: false},axisLine:{show: false},axisLabel:{align:center,},data: [9-w2, 9-w3, 343,9-w2, 9-w3, 343]},{type: category,name: 排比变化,nameTextStyle: {verticalAlign: "left",padding:[…

迈入AI智能时代!ChatGPT国内版免费AI助手工具 peropure·AI正式上线 一个想法写一首歌?这事AI还真能干!

号外&#xff01;前几天推荐的Peropure.Ai迎来升级&#xff0c;现已支持联网模式&#xff0c;回答更新更准&#xff0c;欢迎注册体验&#xff1a; https://sourl.cn/5T74Hu 相信很多人都有过这样的想法&#xff0c;有没有一首歌能表达自己此时此刻的心情&#xff1a; 当你在深…

虚幻UE 特效-Niagara特效初识

虚幻的Niagara特效系统特别的强大&#xff0c;可以为开发者提供丰富的视觉效果&#xff01; 本篇笔记对Niagara系统进行初步的学习探索 文章目录 前言一、Niagara四大核心组件二、粒子发射器和粒子系统1、粒子发射器的创建2、粒子系统的创建3、Niagara系统的使用 总结 前言 在…

SpringBoot之优化高并发场景下的HttpClient并提升QPS

HttpClient优化思路 使用连接池&#xff08;简单粗暴&#xff09; 长连接优化&#xff08;特殊业务场景&#xff09; httpclient和httpget复用 合理的配置参数&#xff08;最大并发请求数&#xff0c;各种超时时间&#xff0c;重试次数&#xff09; 异步请求优化&#xff0…

个人博客教程(Typora官方免费版)

教程 链接&#xff1a;https://pan.baidu.com/s/1kVk3wxrcAPkIy8VrX7CK7g?pwdigiz 提取码&#xff1a;igiz 其实下面的教程都可以通过右键选择你想要的文本来实现&#xff0c;但是掌握基本的语法可以更快&#xff0c;如果看不懂我写的是什么东西可以查看非常简单的入门教程M…