深度学习篇---矩阵的魔法
我们可以把乘以特殊矩阵想象成对一张图片或一个图形施加“魔法指令”——这些指令藏在矩阵里,乘上坐标向量后,图形就会按我们想要的方式变形。
下面我会从二维平面(2D)开始介绍,最后提一下三维(3D)。为了直观,我们用列向量表示一个点,变换后的新点为
。
1. 恒等矩阵(什么都不做)
就像乘以1一样,原封不动。占个位置,后面有用。
2. 缩放(Scale)——拉长或压扁
sx=2,sy=1:水平拉长一倍,垂直不变。
sx=0.5,sy=0.5:整体缩小到一半。
若 sx=sy,是均匀缩放(像放大镜);若不等,叫非均匀缩放(像把正方形变成长方形)。
3. 旋转(Rotation)——绕原点转动
绕原点逆时针转 θ 角度:
例子:θ=90°(cos=0,sin=1)
点 (1,0)→ (0,1),确实逆时针转90度。
注意:这是绕原点旋转。如果想绕任意点旋转,需要先平移、再旋转、再平移回去(见齐次坐标部分)。
4. 对称(Reflection)——镜像翻转
对称可看作特殊缩放(负系数)。
关于x轴对称(上下翻转):
(x,y)→(x,−y)
关于y轴对称(左右翻转):
(x,y)→(−x,y)
关于直线 y=x 对称(交换坐标):
(x,y)→(y,x)
关于原点对称(中心对称):
相当于旋转180°。
5. 剪切(Shear)——让图形“倾斜”
像把一副扑克牌推歪,面积不变但形状变平行四边形。
水平剪切(y不变,x随y线性增加):
x′=x+ky,y′=y
垂直剪切(x不变,y随x线性增加):
x′=x,y′=kx+y
例子:单位正方形 (0,0),(1,0),(1,1),(0,1)经水平剪切 k=1k=1 后变为 (0,0),(1,0),(2,1),(1,1),变成一个斜的四边形。
6. 投影(Projection)——压扁到一条线或一个点
投影到x轴(y变为0):
投影到y轴:
投影到直线 y=x:
(会丢失垂直方向的信息)
7. 错切与拉伸的组合——仿射变换
上面所有操作(旋转、缩放、对称、剪切)都是线性变换,可以用2×2矩阵表示,它们共同特点是:保持原点不动、直线映射为直线。
但现实中我们还需要平移(移动位置)。平移不是线性变换(因为 0⃗ 必须映射到 0⃗),于是引入齐次坐标:把二维点 (x,y) 写为 (x,y,1),用3×3矩阵:
左上2×2做线性变换,右边两列做平移。这样就能组合出任意仿射变换(旋转+平移 = 绕任意点旋转;缩放+平移 = 关于任意点缩放)。
8. 三维中的类似操作
概念完全一样,只是矩阵变成3×3(线性)或4×4(仿射+透视)。
缩放:对角矩阵 diag(sx,sy,sz)
旋转:绕x、y、z轴各有旋转矩阵(例如绕z轴旋转类似二维,但z不变)
对称:关于xy平面等(z取负)
剪切:例如 x′=x+ky,其他不变
投影:从3D投影到2D(用于相机成像)
一个直观总结(重要性质)
行列式:
行列式绝对值 = 面积(2D)或体积(3D)缩放倍数
行列式为1 → 保面积(旋转、剪切)
行列式为0 → 压扁到更低维(投影)
正交矩阵(如旋转、反射):保持长度和角度不变,逆矩阵 = 转置
可逆性:只要行列式不为0,变换可逆(可恢复原图)
实际应用小例子
计算机图形学:一个3D模型乘上模型矩阵(缩放→旋转→平移)放到世界,再乘视图矩阵(相机位置),再乘投影矩阵(透视)变成屏幕2D。
图像处理:旋转照片、水平翻转自拍(对称)。
机器人运动学:每个关节的变换就是一个个矩阵相乘。
数据增强(机器学习):随机对图片做剪切、旋转、缩放来增加训练样本。
