仿射变换是一种通过施加线性变换与平移(translation)来将空间中的点映射到新位置的过程。您可以先旋转、缩放、切变、反射,再整体平移,而直线仍将保持为直线。
仿射变换无处不在,因为它能刻画多种保持物体几何结构的变化,同时计算成本低廉。

仿射变换的多样化应用。图片来源:Napkin AI
这一思想起源于数学家如 Leonhard Euler 和 August Ferdinand Möbius 对“当其他量改变时,哪些性质保持不变”的探索。
如今,它已成为数字世界的关键组成,从网页的 CSS 到复杂的医学成像,处处可见其身影。
什么是仿射变换?
仿射变换介于“纯线性代数”和“现实世界几何”之间。它在允许平移的同时保持数学形式整洁,而仅靠线性映射无法实现平移。
理解仿射空间与仿射变换
一个向量空间有一个特殊点称为原点(即使不画出来,概念上它也存在)。在向量空间中,向量可相加与数乘,并有一个特定的“零向量”。
一个仿射空间看起来像一个没有选定原点的向量空间。您仍可以讨论:
- 点(位置)
- 位移向量(点与点之间,例如“从 P 到 Q”)
- 向点加上一个向量(按该位移移动该点)
但您无法有意义地相加两个点,因为点的相加依赖于原点的选择。
形式上,向量空间 V 上的仿射空间 A 是一个具有 V 自由且传递作用的点集。通俗地说:点之差属于 V,但单个点本身不属于 V。
一个仿射变换是仿射空间之间的映射,它保持仿射组合(后文详述),并在几何上保持直线与平行关系。
仿射变换公式:基于向量空间的定义
在坐标下,仿射变换具有如下形式:

矩阵形式的仿射变换。
其中:
- x ∈ Rn 是输入点(列向量)
- A ∈ Rn×n 是表示线性部分(旋转、缩放、切变、反射及其组合)的矩阵
- b ∈ Rn 是表示平移
这种“线性 + 常量”的结构使仿射映射在工程与计算中广受欢迎:表达力强,同时应用快速且稳定。
仿射变换的关键性质
仿射变换在允许形状拉伸或倾斜的同时,保留若干“结构性”的几何关系。
仿射变换会保留哪些性质?

仿射变换所保留的性质。图片来源:Napkin AI
保留:
- 共线性:变换前在同一直线上的点,变换后仍在一条直线上。
- 平行性:平行直线保持平行(在图形与制图中尤为重要)。
- 凸性:凸形仍保持凸。
- 线段内比:若一点按某比分割线段,该比例被保留。
表达上述性质的一种巧妙方式是仿射组合:

仿射映射会保留这些组合。
不保留(一般情况下):
最后,仿射变换在复合运算下封闭:先后施加两个仿射变换,结果仍为仿射变换。
仿射变换的群结构
仿射变换在复合下形成一个群(常称为仿射群,记作 Aff(n))。
当满足如下条件时,

且

则

这仍是仿射变换。
关于可逆性的说明: Ax+b 可逆 当且仅当 A 可逆(det(A)≠0)。 此时:

因此您获得了一种强大的代数工具:通过串联简单变换构建复杂变换,并在需要时将其反转。
仿射变换矩阵
为高效计算仿射变换,我们使用矩阵——特别是齐次坐标,它以与矩阵兼容的方式处理平移。
仿射变换矩阵的一般形式
在 n 维中,变换如下:

其中
-
A 控制形状变化(线性部分)。
-
b 控制位移(平移)。
可逆性的要求是矩阵 A 必须可逆。简单说,如果 A 将所有点压缩到一条直线上(秩降低),则无法唯一地反演。
齐次坐标与增广矩阵表示
仅靠一个 (n × n) 矩阵作用于 x,无法表示平移。齐次坐标通过引入一个附加坐标来解决这个问题。
将 2D 点 ((x, y)) 表示为 ((x, y, 1))。
则 2D 仿射变换变为一个3×3 矩阵:

利用齐次坐标进行 2D 仿射变换(3×3 矩阵)。来源:作者
优势:
- 复合简化为乘法(只需矩阵乘法)。
- 流水线优化(图形与视觉库偏好此方式)。
- 对平移、旋转、缩放与切变的一致管理。
仿射变换的类型
多数实践中的仿射变换只涉及少数几个步骤。
仿射变换中的平移
平移将每个点按同一位移移动:T(x)=x+b
2D 的齐次形式为:

以齐次变换矩阵表示的平移(2D)。来源:作者
该形式用于图形学(移动对象)、机器人学(改变坐标系)及计算机视觉(图像配准)。
缩放变换:一致与非一致
一致缩放:在 2D 中,一致缩放表示各方向使用相同因子 s:

2D 一致缩放矩阵。来源:作者
非一致缩放:

2D 非一致缩放矩阵。来源:作者
3D 缩放则对应 3×3 对角矩阵。缩放保持直线与平行,但会改变距离(除非 s=1)。
2D 与 3D 的旋转变换
2D 按角度(theta)旋转:

按角度进行 2D 旋转变换。来源:作者
在 3D 中旋转是围绕某一轴(x、y 或 z)进行,并有相应矩阵。将平移与旋转叠加仍为仿射(若仅有旋转与平移,则为“刚体运动”)。
切变变换详解
切变会将形状“倾斜”。一个 2D x-切变为:

2D x-切变表示。来源:作者
y-切变为:

2D y-切变表示。来源:作者
切变常用于排版、视觉变形,以及看起来具有透视效果的特效(不过真正的透视是射影而非仿射)。
仿射几何中的反射变换
绕过原点的坐标轴或平面进行反射,属于线性反射(因此也是仿射)。
相对于 x 轴的 2D 反射:

相对于 x 轴的 2D 反射。来源:作者
相对于 y 轴:

相对于 y 轴的 2D 反射。来源:作者
反射会改变物体的朝向,有助于分析对称性、识别模式与处理几何。
如何复合与求逆仿射变换
在实际系统中,您很少只使用单一变换;通常会将多个变换串联起来。
复合多个仿射变换
设:

且

则:

顺序很重要。先旋转后平移与先平移后旋转并不相同。这是因为平移会被后续矩阵“捕获”。
一个便于记忆的方法:
- 若使用齐次矩阵,复合即为矩阵乘法
- 最后施加的变换在乘法左侧。
仿射变换的逆:计算与应用
对于

若 A 可逆:

在视觉任务中常用此法:通常将输出像素反向映射回输入像素(逆向映射)以填补空洞。
线性变换 vs. 仿射变换
仿射变换可理解为“带内置平移的线性变换”。
线性与仿射变换的关键区别
一个线性变换 L(x)=Ax 必须满足:
- L(0)=0(原点映为原点)
- L(x+y)=L(x)+L(y)
- L(cx)=cL(x)
一个仿射变换 T(x)=Ax+b:
- 不要求将 0 映为 0
- 保持直线与平行关系
- 在去除平移后呈线性作用
每个线性映射都是仿射(取 b=0),但并非所有仿射映射都是线性(任意非零平移都会破坏线性)。
仿射变换即线性加平移
您可以将其重写为:

即“先做线性部分(Ax),再加平移(b)。”
如果您见过 (y=mx+c),其实已熟悉其一维形式。这也是仿射映射常见于神经网络的原因:全连接层计算 (Wx+b),即仿射映射,随后再叠加非线性。
计算机图形学与计算机视觉广泛使用仿射变换。
计算机图形与计算机视觉中的仿射变换
在这里,仿射变换不再抽象,而是直接“创造价值”。
利用仿射变换进行图像变换与扭曲
在图像处理里,仿射变换用于:
- 旋转与缩放
- 平移(移动图像)
- 倾斜校正(切变)
- 配准/对齐(匹配图像)
两个重要的实现思路:
- 前向映射:将每个输入像素前推,可能产生空洞。
- 反向映射:对每个输出像素反向查找其来源位置;通常更优。
由于映射坐标往往不落在整数像素上,插值很重要。常见方法有:
- 最近邻:最快,但块状感明显
- 双线性:更平滑,通常为默认
- 双三次:更平滑,但计算量更大
3D 图形与渲染中的仿射变换
仿射变换在 3D 图形中无处不在:
- 模型变换(对象局部 → 世界)
- 观察变换(世界 → 相机)
- 投影准备(在射影步骤前执行仿射部分)
一个细致但重要的点:当缩放非一致时,表面法线并不总像点那样变化。为确保光照正确,渲染管线通常对法线使用线性部分的逆转置。
机器人学中的仿射变换
机器人学几乎就是坐标系统的“无处不在”。
仿射变换映射:
- 机器人基座坐标 ↔ 机械臂坐标 ↔ 末端执行器坐标
- 相机坐标 ↔ 世界坐标
- 激光雷达 ↔ 车辆坐标
在基于视觉的定位(如视觉里程计)中,帧间的小幅运动常可在图像空间局部近似为仿射,这有助于跟踪与估计运动。
坐标空间映射与数据归一化
在机器学习中,特征缩放往往是仿射的:
- Min-max 缩放:(x' = alpha x + beta)
- 标准化:(x' = (x-μ)/σ)(也是仿射)
这很重要,因为许多模型(尤其是基于梯度的)在特征量纲相近时表现更好。
仿射变换的进阶概念与理论
仿射变换起初看似简单,但其理论十分深刻,尤其当您开始关注如面积等不变量或替代坐标系时。

仿射变换高级概念。图片来源:Napkin AI
仿射几何与重心坐标
重心坐标将一点表示为三角形顶点的加权混合:

这些坐标具有仿射不变性,即若以仿射方式同时改变三角形与该点,λi 保持不变。
因此重心坐标广泛用于:纹理映射、网格插值与有限元分析。
保测度与等面积仿射变换
当且仅当如下条件成立时,仿射变换保面积(2D)或体积(3D):

A 的行列式告诉您在线性部分作用下面积或体积改变多少。
若(|det(A)| > 1),空间被放大;若小于 1,则被缩小。若为负,朝向发生改变(类似反射)。这些对可视化、物理仿真与变形建模至关重要。
仿射几何中的相似变换与等距变换
关系:
- 仿射:(Ax+b)(一般情形)
- 相似:缩放 + 旋转 + 平移(保持角度不变,尺度不定)
- 等距(刚体):旋转 + 平移(保持距离与角度)
因此:等距变换 ⊂ 相似变换 ⊂ 仿射变换
该层次结构便于根据问题选择合适模型。例如若必须保持距离,仿射就过于宽泛。
射影变换与更高维的仿射扩展
仿射变换是射影变换的一种。射影变换可建模透视效果,如平行线在远处相交的消失点;仿射变换无法做到这一点。
在齐次坐标中,射影变换允许最后一行比 ([0,0,1]) 更一般。这种更大的自由度让透视效果得以实现。
仿射概念同样适用于更高维,例如 3D 图形中的 4D 齐次变换。
实现仿射变换
仿射变换“数学简单”,但使用方式会决定成败。
仿射变换的数值稳定性与精度
常见问题:
- 近奇异矩阵:若 det(A) 接近 0,求逆将不稳定
- 浮点误差累积:反复复合可能漂移
- 极端缩放:过大或过小的尺度会降低精度。
最佳实践:
- 将条件数(或至少 |det(A)|)作为预警指标。
- 求逆时选用稳定的库,如 NumPy、Eigen。
- 在图形或机器人等需大量连续操作的场景中,重新正交归一化旋转矩阵。
仿射变换的 GPU 实现与并行处理
仿射变换天然适合并行化,意味着每个点或像素可独立变换。这使其非常适合 SIMD 与 GPU 内核。
因此图像扭曲与渲染管线非常适合 GPU:可同时执行大量乘加运算。
常见优化包括:使用融合乘加(FMA)操作、批处理变换、减少内存传输次数。
仿射变换的专业应用与扩展
仿射变换对许多任务而言“刚好够用”,也常作为更灵活模型的基础。
用于非刚性配准的 B 样条仿射变换
在形态度量学与医学影像中,纯仿射对齐只是第一步。粗对齐之后,基于 B 样条的形变模型可在易于理解的控制点下实现平滑的非刚性扭曲。
可以这样理解:仿射负责整体摆正,B 样条处理局部微调。
模式识别与计算机视觉中的仿射不变性
许多识别系统力求具备仿射不变性,以便在视角以近似仿射的方式变化时仍能识别对象。
相关技术包括:
- 使用仿射不变特征(或归一化图像块)
- 为关键点估计局部仿射框架
- 设计对倾斜与尺度鲁棒的描述子
这让匹配、跟踪与检索等操作更可靠。
GIS 与大地坐标系统中的仿射变换
在 GIS 中,仿射变换用于地图地理配准、对齐不同来源的图层,或作为坐标转换的局部近似。
真实的大地测量学变换往往更复杂,但仿射模型常作为局部近似或更大流程的一部分。
仿射变换的软件库
无需从零开始;大多数生态系统都有良好支持。
在 Python、C++ 与 Java 中实现仿射变换
- Python:矩阵计算用 NumPy;图像扭曲用 OpenCV;数值工具用 SciPy。
- C++:Eigen(线性代数)、OpenCV(视觉)、GLM(图形数学)
- Java:Apache Commons Math,以及依栈选择的视觉工具包
跨语言的核心思路:
- 用向量表示点
- 应用 (Ax+b)(或齐次矩阵乘法)
- 用矩阵乘法复合变换。
- 需要时用 (A-1) 反转。
仿射变换的最佳工具与库

仿射变换的最佳工具与库。图片来源:Napkin AI
广泛使用的工具:
- OpenCV:warpAffine、getAffineTransform、estimateAffine2D(视觉流程)
- NumPy:通用矩阵运算
- Eigen:高性能 C++ 线性代数
- GLM / DirectXMath:面向图形的数学库
- GDAL / PROJ(GIS):坐标转换与地理空间流程
请根据领域选择:图像用 OpenCV,图形用 GLM,GIS 用 GDAL/PROJ。
关于仿射变换的另一种视角
换一种说法,有时更容易理解相同的理念。
替代定义:仿射映射与仿函数
仿射映射可定义为保持仿射组合“神圣性”的函数:
此表述不依赖于某一特定原点,非常契合“仿射几何”的精神,也直接表明了直线映为直线。
仿射变换与 (y = mx + b) 公式
若仿射变换显得抽象,不妨联系已知内容:(y=mx) 是线性的(过原点),而 (y=mx+b) 是仿射的(斜率效应相同且带有平移)。
在更高维中,m 变为矩阵 A,但故事相同:线性作用,再加上位移。
结语
归根结底,仿射变换就是:“我会保留由直线和平行边构成的世界,但不保证角度保持不变。”
如果您正以矩阵和线性系统的视角思考,不妨看看 Linear Algebra for Data Science in R 以及聚焦矩阵的教程,包括 Row Echelon Form Explained。
若您想进入计算机视觉领域,可以参考项目 Food Image Classification with Hugging Face 以及课程 Working with Hugging Face,作为不错的下一步。
仿射变换是一种通过施加线性变换与平移(translation)来将空间中的点映射到新位置的过程。您可以先旋转、缩放、切变、反射,再整体平移,而直线仍将保持为直线。
仿射变换无处不在,因为它能刻画多种保持物体几何结构的变化,同时计算成本低廉。
仿射变换的多样化应用。图片来源:Napkin AI
这一思想起源于数学家如 Leonhard Euler 和 August Ferdinand Möbius 对“当其他量改变时,哪些性质保持不变”的探索。
如今,它已成为数字世界的关键组成,从网页的 CSS 到复杂的医学成像,处处可见其身影。
什么是仿射变换?
仿射变换介于“纯线性代数”和“现实世界几何”之间。它在允许平移的同时保持数学形式整洁,而仅靠线性映射无法实现平移。
理解仿射空间与仿射变换
一个向量空间有一个特殊点称为原点(即使不画出来,概念上它也存在)。在向量空间中,向量可相加与数乘,并有一个特定的“零向量”。
一个仿射空间看起来像一个没有选定原点的向量空间。您仍可以讨论:
但您无法有意义地相加两个点,因为点的相加依赖于原点的选择。
形式上,向量空间
V上的仿射空间A是一个具有V自由且传递作用的点集。通俗地说:点之差属于V,但单个点本身不属于V。一个仿射变换是仿射空间之间的映射,它保持仿射组合(后文详述),并在几何上保持直线与平行关系。
仿射变换公式:基于向量空间的定义
在坐标下,仿射变换具有如下形式:
矩阵形式的仿射变换。
其中:
这种“线性 + 常量”的结构使仿射映射在工程与计算中广受欢迎:表达力强,同时应用快速且稳定。
仿射变换的关键性质
仿射变换在允许形状拉伸或倾斜的同时,保留若干“结构性”的几何关系。
仿射变换会保留哪些性质?
仿射变换所保留的性质。图片来源:Napkin AI
保留:
表达上述性质的一种巧妙方式是仿射组合:
仿射映射会保留这些组合。
不保留(一般情况下):
最后,仿射变换在复合运算下封闭:先后施加两个仿射变换,结果仍为仿射变换。
仿射变换的群结构
仿射变换在复合下形成一个群(常称为仿射群,记作 Aff(n))。
当满足如下条件时,
且
则
这仍是仿射变换。
关于可逆性的说明: Ax+b 可逆 当且仅当 A 可逆(det(A)≠0)。 此时:
因此您获得了一种强大的代数工具:通过串联简单变换构建复杂变换,并在需要时将其反转。
仿射变换矩阵
为高效计算仿射变换,我们使用矩阵——特别是齐次坐标,它以与矩阵兼容的方式处理平移。
仿射变换矩阵的一般形式
在 n 维中,变换如下:
其中
A控制形状变化(线性部分)。b控制位移(平移)。可逆性的要求是矩阵 A 必须可逆。简单说,如果 A 将所有点压缩到一条直线上(秩降低),则无法唯一地反演。
齐次坐标与增广矩阵表示
仅靠一个 (n × n) 矩阵作用于 x,无法表示平移。齐次坐标通过引入一个附加坐标来解决这个问题。
将 2D 点 ((x, y)) 表示为 ((x, y, 1))。
则 2D 仿射变换变为一个3×3 矩阵:
利用齐次坐标进行 2D 仿射变换(3×3 矩阵)。来源:作者
优势:
仿射变换的类型
多数实践中的仿射变换只涉及少数几个步骤。
仿射变换中的平移
平移将每个点按同一位移移动:T(x)=x+b
2D 的齐次形式为:
以齐次变换矩阵表示的平移(2D)。来源:作者
该形式用于图形学(移动对象)、机器人学(改变坐标系)及计算机视觉(图像配准)。
缩放变换:一致与非一致
一致缩放:在 2D 中,一致缩放表示各方向使用相同因子 s:
2D 一致缩放矩阵。来源:作者
非一致缩放:
2D 非一致缩放矩阵。来源:作者
3D 缩放则对应 3×3 对角矩阵。缩放保持直线与平行,但会改变距离(除非 s=1)。
2D 与 3D 的旋转变换
2D 按角度(theta)旋转:
按角度进行 2D 旋转变换。来源:作者
在 3D 中旋转是围绕某一轴(x、y 或 z)进行,并有相应矩阵。将平移与旋转叠加仍为仿射(若仅有旋转与平移,则为“刚体运动”)。
切变变换详解
切变会将形状“倾斜”。一个 2D x-切变为:
2D x-切变表示。来源:作者
y-切变为:
2D y-切变表示。来源:作者
切变常用于排版、视觉变形,以及看起来具有透视效果的特效(不过真正的透视是射影而非仿射)。
仿射几何中的反射变换
绕过原点的坐标轴或平面进行反射,属于线性反射(因此也是仿射)。
相对于 x 轴的 2D 反射:
相对于 x 轴的 2D 反射。来源:作者
相对于 y 轴:
相对于 y 轴的 2D 反射。来源:作者
反射会改变物体的朝向,有助于分析对称性、识别模式与处理几何。
如何复合与求逆仿射变换
在实际系统中,您很少只使用单一变换;通常会将多个变换串联起来。
复合多个仿射变换
设:
且
则:
顺序很重要。先旋转后平移与先平移后旋转并不相同。这是因为平移会被后续矩阵“捕获”。
一个便于记忆的方法:
仿射变换的逆:计算与应用
对于
若 A 可逆:
在视觉任务中常用此法:通常将输出像素反向映射回输入像素(逆向映射)以填补空洞。
线性变换 vs. 仿射变换
仿射变换可理解为“带内置平移的线性变换”。
线性与仿射变换的关键区别
一个线性变换 L(x)=Ax 必须满足:
一个仿射变换 T(x)=Ax+b:
每个线性映射都是仿射(取 b=0),但并非所有仿射映射都是线性(任意非零平移都会破坏线性)。
仿射变换即线性加平移
您可以将其重写为:
即“先做线性部分(Ax),再加平移(b)。”
如果您见过 (y=mx+c),其实已熟悉其一维形式。这也是仿射映射常见于神经网络的原因:全连接层计算 (Wx+b),即仿射映射,随后再叠加非线性。
计算机图形学与计算机视觉广泛使用仿射变换。
计算机图形与计算机视觉中的仿射变换
在这里,仿射变换不再抽象,而是直接“创造价值”。
利用仿射变换进行图像变换与扭曲
在图像处理里,仿射变换用于:
两个重要的实现思路:
由于映射坐标往往不落在整数像素上,插值很重要。常见方法有:
3D 图形与渲染中的仿射变换
仿射变换在 3D 图形中无处不在:
一个细致但重要的点:当缩放非一致时,表面法线并不总像点那样变化。为确保光照正确,渲染管线通常对法线使用线性部分的逆转置。
机器人学中的仿射变换
机器人学几乎就是坐标系统的“无处不在”。
仿射变换映射:
在基于视觉的定位(如视觉里程计)中,帧间的小幅运动常可在图像空间局部近似为仿射,这有助于跟踪与估计运动。
坐标空间映射与数据归一化
在机器学习中,特征缩放往往是仿射的:
这很重要,因为许多模型(尤其是基于梯度的)在特征量纲相近时表现更好。
仿射变换的进阶概念与理论
仿射变换起初看似简单,但其理论十分深刻,尤其当您开始关注如面积等不变量或替代坐标系时。
仿射变换高级概念。图片来源:Napkin AI
仿射几何与重心坐标
重心坐标将一点表示为三角形顶点的加权混合:
这些坐标具有仿射不变性,即若以仿射方式同时改变三角形与该点,λi 保持不变。
因此重心坐标广泛用于:纹理映射、网格插值与有限元分析。
保测度与等面积仿射变换
当且仅当如下条件成立时,仿射变换保面积(2D)或体积(3D):
A 的行列式告诉您在线性部分作用下面积或体积改变多少。
若(|det(A)| > 1),空间被放大;若小于 1,则被缩小。若为负,朝向发生改变(类似反射)。这些对可视化、物理仿真与变形建模至关重要。
仿射几何中的相似变换与等距变换
关系:
因此:等距变换 ⊂ 相似变换 ⊂ 仿射变换
该层次结构便于根据问题选择合适模型。例如若必须保持距离,仿射就过于宽泛。
射影变换与更高维的仿射扩展
仿射变换是射影变换的一种。射影变换可建模透视效果,如平行线在远处相交的消失点;仿射变换无法做到这一点。
在齐次坐标中,射影变换允许最后一行比 ([0,0,1]) 更一般。这种更大的自由度让透视效果得以实现。
仿射概念同样适用于更高维,例如 3D 图形中的 4D 齐次变换。
实现仿射变换
仿射变换“数学简单”,但使用方式会决定成败。
仿射变换的数值稳定性与精度
常见问题:
最佳实践:
仿射变换的 GPU 实现与并行处理
仿射变换天然适合并行化,意味着每个点或像素可独立变换。这使其非常适合 SIMD 与 GPU 内核。
因此图像扭曲与渲染管线非常适合 GPU:可同时执行大量乘加运算。
常见优化包括:使用融合乘加(FMA)操作、批处理变换、减少内存传输次数。
仿射变换的专业应用与扩展
仿射变换对许多任务而言“刚好够用”,也常作为更灵活模型的基础。
用于非刚性配准的 B 样条仿射变换
在形态度量学与医学影像中,纯仿射对齐只是第一步。粗对齐之后,基于 B 样条的形变模型可在易于理解的控制点下实现平滑的非刚性扭曲。
可以这样理解:仿射负责整体摆正,B 样条处理局部微调。
模式识别与计算机视觉中的仿射不变性
许多识别系统力求具备仿射不变性,以便在视角以近似仿射的方式变化时仍能识别对象。
相关技术包括:
这让匹配、跟踪与检索等操作更可靠。
GIS 与大地坐标系统中的仿射变换
在 GIS 中,仿射变换用于地图地理配准、对齐不同来源的图层,或作为坐标转换的局部近似。
真实的大地测量学变换往往更复杂,但仿射模型常作为局部近似或更大流程的一部分。
仿射变换的软件库
无需从零开始;大多数生态系统都有良好支持。
在 Python、C++ 与 Java 中实现仿射变换
跨语言的核心思路:
仿射变换的最佳工具与库
仿射变换的最佳工具与库。图片来源:Napkin AI
广泛使用的工具:
请根据领域选择:图像用 OpenCV,图形用 GLM,GIS 用 GDAL/PROJ。
关于仿射变换的另一种视角
换一种说法,有时更容易理解相同的理念。
替代定义:仿射映射与仿函数
仿射映射可定义为保持仿射组合“神圣性”的函数:
此表述不依赖于某一特定原点,非常契合“仿射几何”的精神,也直接表明了直线映为直线。
仿射变换与 (y = mx + b) 公式
若仿射变换显得抽象,不妨联系已知内容:(y=mx) 是线性的(过原点),而 (y=mx+b) 是仿射的(斜率效应相同且带有平移)。
在更高维中,m 变为矩阵 A,但故事相同:线性作用,再加上位移。
结语
归根结底,仿射变换就是:“我会保留由直线和平行边构成的世界,但不保证角度保持不变。”
如果您正以矩阵和线性系统的视角思考,不妨看看 Linear Algebra for Data Science in R 以及聚焦矩阵的教程,包括 Row Echelon Form Explained。
若您想进入计算机视觉领域,可以参考项目 Food Image Classification with Hugging Face 以及课程 Working with Hugging Face,作为不错的下一步。