文章目录
-
- [📚 学习路线图](#📚 学习路线图)
- 本文内容一览(快速理解)
- [一、图像变换是什么(Image Transformation):理解两种变换类型](#一、图像变换是什么(Image Transformation):理解两种变换类型)
-
- [1.1 图像变换的两种类型(Image Filtering vs Image Warping):滤波改变像素值,变形改变像素位置](#1.1 图像变换的两种类型(Image Filtering vs Image Warping):滤波改变像素值,变形改变像素位置)
- [二、基本几何变换(2D Geometric Transformations):平移、旋转、缩放的基础操作](#二、基本几何变换(2D Geometric Transformations):平移、旋转、缩放的基础操作)
-
- [2.1 什么是几何变换(Parametric (global) warping):坐标变换机器](#2.1 什么是几何变换(Parametric (global) warping):坐标变换机器)
- [2.2 平移(Translation):改变位置而不改变形状和大小](#2.2 平移(Translation):改变位置而不改变形状和大小)
- [2.3 旋转(Rotation):改变方向而不改变形状和大小](#2.3 旋转(Rotation):改变方向而不改变形状和大小)
- [2.4 缩放(Uniform scaling / Non-uniform scaling):改变大小,均匀或非均匀](#2.4 缩放(Uniform scaling / Non-uniform scaling):改变大小,均匀或非均匀)
- [2.5 相似变换(Similarity Transformation):平移、旋转、均匀缩放的组合](#2.5 相似变换(Similarity Transformation):平移、旋转、均匀缩放的组合)
- [三、线性变换(Common linear transformations / 2x2 Matrices):用矩阵统一表示变换](#三、线性变换(Common linear transformations / 2x2 Matrices):用矩阵统一表示变换)
-
- [3.1 线性变换的矩阵表示(All 2D Linear Transformations):用2×2矩阵表示缩放、旋转、剪切](#3.1 线性变换的矩阵表示(All 2D Linear Transformations):用2×2矩阵表示缩放、旋转、剪切)
- [3.2 平移不是线性变换(Translation is not a linear operation):平移不能用2×2矩阵表示](#3.2 平移不是线性变换(Translation is not a linear operation):平移不能用2×2矩阵表示)
- [四、齐次坐标(Homogeneous coordinates):统一表示所有变换的数学工具](#四、齐次坐标(Homogeneous coordinates):统一表示所有变换的数学工具)
-
- [4.1 齐次坐标的概念(Homogeneous coordinates):通过添加坐标维度统一表示变换](#4.1 齐次坐标的概念(Homogeneous coordinates):通过添加坐标维度统一表示变换)
- [4.2 用齐次坐标表示平移(Translation Solution):用3×3矩阵表示平移](#4.2 用齐次坐标表示平移(Translation Solution):用3×3矩阵表示平移)
- [4.3 用齐次坐标表示旋转和缩放(Rotation and Scaling in Homogeneous Coordinates):统一用3×3矩阵表示](#4.3 用齐次坐标表示旋转和缩放(Rotation and Scaling in Homogeneous Coordinates):统一用3×3矩阵表示)
- [五、变换的层次(Affine transformations / Projective Transformations):从仿射到投影的递进关系](#五、变换的层次(Affine transformations / Projective Transformations):从仿射到投影的递进关系)
-
- [5.1 仿射变换(Affine Transformation / Basic affine transformations):线性变换和平移的组合](#5.1 仿射变换(Affine Transformation / Basic affine transformations):线性变换和平移的组合)
- [5.2 投影变换(Projective Transformation / Homographies / Planar Perspective Maps):最一般的平面变换](#5.2 投影变换(Projective Transformation / Homographies / Planar Perspective Maps):最一般的平面变换)
- [5.3 变换的层次关系(These transformations are a nested set of groups):嵌套的变换集合](#5.3 变换的层次关系(These transformations are a nested set of groups):嵌套的变换集合)
- [📝 本章总结](#📝 本章总结)
📌 适合对象 :计算机视觉初学者、图像处理入门者
⏱️ 预计阅读时间 :40-50分钟
🎯 学习目标:理解图像变换的基本概念、掌握常见的几何变换、了解变换的层次关系
📚 学习路线图
第一步
理解图像变换的两种类型
滤波 vs 变形 第二步
掌握基本几何变换
平移、旋转、缩放(重点) 第三步
理解线性变换
矩阵表示和性质 第四步
学习齐次坐标
统一表示所有变换 第五步
理解变换层次
仿射变换和投影变换
本文内容一览(快速理解)
-
图像变换的两种类型:图像滤波改变像素值,图像变形改变像素位置
-
基本几何变换:平移、旋转、缩放是图像变换的基础操作
-
线性变换:可以用2×2矩阵表示,包括缩放、旋转、剪切、镜像
-
齐次坐标:通过添加一个坐标维度,可以统一表示包括平移在内的所有变换
-
变换层次:线性变换 → 仿射变换 → 投影变换,层次递进,功能越来越强大
一、图像变换是什么(Image Transformation):理解两种变换类型
这一章要建立的基础:理解图像变换的基本概念,区分两种不同类型的图像变换。
核心问题:当我们说"变换图像"时,到底指的是什么?有哪些不同的变换方式?
!NOTE
📝 关键点总结:图像变换分为两种类型:图像滤波(改变像素值范围)和图像变形(改变像素位置定义域)。几何变换属于图像变形,改变的是像素的空间位置。
1.1 图像变换的两种类型(Image Filtering vs Image Warping):滤波改变像素值,变形改变像素位置
概念的本质:
图像变换可以分为两种基本类型:
-
图像滤波(Image Filtering) :改变图像的范围(range)
- 改变像素的值(亮度、颜色)
- 公式: g ( x ) = h ( f ( x ) ) g(x) = h(f(x)) g(x)=h(f(x))
- 例如:亮度调整、颜色增强、模糊处理
-
图像变形(Image Warping) :改变图像的定义域(domain)
- 改变像素的位置(坐标)
- 公式: g ( x ) = f ( h ( x ) ) g(x) = f(h(x)) g(x)=f(h(x))
- 例如:旋转、缩放、平移
图解说明:
图像变形
改变像素位置 图像滤波
改变像素值 应用函数h 像素值改变 坐标变换h 位置改变 新图像
g(x) = f(h(x)) 原图像
f(x) 结果:几何形状改变 新图像
g(x) = h(f(x)) 原图像
f(x) 结果:亮度/颜色改变
💡 说明:图像滤波改变的是"像素值是什么",图像变形改变的是"像素在哪里"
类比理解:
- 图像滤波:就像给照片调色或加滤镜,照片中物体的位置不变,但颜色、亮度改变了
- 图像变形:就像把照片旋转或拉伸,照片中物体的位置改变了,但颜色、亮度保持不变
实际例子:
图像滤波示例:
- 亮度调整:让整张照片变亮或变暗
- 模糊处理:让照片变得柔和
- 锐化处理:让照片边缘更清晰
图像变形示例:
- 旋转:把照片顺时针旋转90度
- 缩放:把照片放大2倍
- 平移:把照片向右移动100像素
二、基本几何变换(2D Geometric Transformations):平移、旋转、缩放的基础操作
前面我们知道了:图像变形是改变像素位置的变换,属于几何变换。
但遇到了问题:有哪些基本的几何变换?它们是如何工作的?
这一章要解决:理解三种最基本的几何变换:平移、旋转、缩放。
答案:平移、旋转、缩放是图像几何变换的基础,可以组合使用实现复杂的变换效果。
!NOTE
📝 关键点总结:平移、旋转、缩放是三种最基本的几何变换。平移改变位置,旋转改变方向,缩放改变大小。这些变换可以组合使用。
2.1 什么是几何变换(Parametric (global) warping):坐标变换机器
概念的本质:
几何变换可以看作是一个坐标变换机器(coordinate-changing machine):
- 输入:原图像中的点 p = ( x , y ) p = (x, y) p=(x,y)
- 输出:变换后图像中的点 p ′ = ( x ′ , y ′ ) p' = (x', y') p′=(x′,y′)
- 变换函数: p ′ = T ( p ) p' = T(p) p′=T(p)
参数化变形(Parametric Warping):
参数化变形是指:
- 全局性 :变换 T T T 对所有点都相同
- 参数少:可以用少数几个参数描述整个变换
图解说明:
变换T 输出 原图像点
p = (x, y) 变换机器
T(p) 新图像点
p' = (x', y')
💡 说明:参数化变形是全局的,同一个变换函数对所有点都适用
类比理解:就像用模具压印------同一个模具(变换函数)对所有材料(图像中的点)都产生相同的变形效果。
2.2 平移(Translation):改变位置而不改变形状和大小
概念的本质:
平移是将图像中的所有点沿着某个方向移动固定的距离。
平移的特点:
- 只改变位置,不改变形状、大小、方向
- 可以用向量 ( t x , t y ) (t_x, t_y) (tx,ty) 表示平移量
实际例子:
向右平移100像素,向上平移50像素:
- 原位置:(100, 100)
- 新位置:(200, 150)
- 平移向量:(100, 50)
2.3 旋转(Rotation):改变方向而不改变形状和大小
概念的本质:
旋转是将图像围绕某个点(通常是原点)旋转一定的角度。
旋转的特点:
- 改变方向,不改变形状、大小
- 可以用角度 θ \theta θ 表示旋转量
- 逆时针旋转为正方向
图解说明:
旋转角度θ 原图像
角度0° 新图像
角度θ
实际例子:
顺时针旋转90度:
- 原方向:水平向右 →
- 新方向:垂直向下 ↓
- 旋转角度:-90°(或270°)
2.4 缩放(Uniform scaling / Non-uniform scaling):改变大小,均匀或非均匀
概念的本质:
缩放是将图像在某个方向上放大或缩小。
缩放的类型:
- 均匀缩放:x和y方向缩放比例相同
- 非均匀缩放:x和y方向缩放比例不同(改变宽高比)
缩放的特点:
- 改变大小,不改变形状(均匀缩放)或改变形状(非均匀缩放)
- 可以用缩放因子 s s s 表示
图解说明:
缩放因子s 原图像
大小1×1 新图像
大小s×s
实际例子:
放大2倍(均匀缩放):
- 原大小:100×100像素
- 新大小:200×200像素
- 缩放因子:s = 2
x方向放大2倍,y方向不变(非均匀缩放):
- 原大小:100×100像素
- 新大小:200×100像素
- 缩放因子:sx = 2, sy = 1
2.5 相似变换(Similarity Transformation):平移、旋转、均匀缩放的组合
概念的本质:
相似变换是平移、旋转、均匀缩放的组合。
相似变换的特点:
- 保持形状不变(相似)
- 可以改变位置、方向、大小
- 保持角度不变
实际应用:
图像配准:
- 找到两幅图像之间的相似变换
- 可以将一幅图像对齐到另一幅图像
- 用于图像拼接、目标跟踪等
三、线性变换(Common linear transformations / 2x2 Matrices):用矩阵统一表示变换
前面我们知道了:平移、旋转、缩放是基本的几何变换。
但遇到了问题:如何用数学方法统一表示这些变换?能否用矩阵表示?
这一章要解决:理解线性变换的矩阵表示方法。
答案:缩放、旋转、剪切、镜像可以用2×2矩阵表示,但平移不能直接用2×2矩阵表示,需要齐次坐标。
!NOTE
📝 关键点总结:线性变换可以用2×2矩阵表示,包括缩放、旋转、剪切、镜像。线性变换保持原点不变,保持直线和平行关系。平移不是线性变换,需要齐次坐标才能统一表示。
3.1 线性变换的矩阵表示(All 2D Linear Transformations):用2×2矩阵表示缩放、旋转、剪切
概念的本质:
线性变换是指可以用矩阵乘法表示的变换:
p ′ = M ⋅ p p' = M \cdot p p′=M⋅p
其中 M M M 是2×2矩阵, p = ( x , y ) p = (x, y) p=(x,y) 是原坐标, p ′ = ( x ′ , y ′ ) p' = (x', y') p′=(x′,y′) 是新坐标。
常见的线性变换:
- 均匀缩放 :用矩阵 [ s 0 0 s ] \begin{bmatrix} s & 0 \\ 0 & s \end{bmatrix} [s00s] 表示
- 非均匀缩放 :用矩阵 [ s x 0 0 s y ] \begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix} [sx00sy] 表示
- 旋转 :用矩阵 [ cos θ − sin θ sin θ cos θ ] \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} [cosθsinθ−sinθcosθ] 表示
图解说明:
矩阵M 输出 原坐标
(x, y) 线性变换
M·p 新坐标
(x', y')
线性变换的性质:
- 原点映射到原点: ( 0 , 0 ) → ( 0 , 0 ) (0, 0) \rightarrow (0, 0) (0,0)→(0,0)
- 直线映射到直线
- 平行线保持平行
- 比例关系保持不变
3.2 平移不是线性变换(Translation is not a linear operation):平移不能用2×2矩阵表示
概念的本质:
平移的公式是:
x ′ = x + t x x' = x + t_x x′=x+tx
y ′ = y + t y y' = y + t_y y′=y+ty
这不能写成 p ′ = M ⋅ p p' = M \cdot p p′=M⋅p 的形式,因为平移会改变原点位置。
图解说明:
线性变换
可以用2×2矩阵 缩放、旋转、剪切、镜像 非线性变换
不能用2×2矩阵 平移
💡 问题:平移不是线性变换,不能用2×2矩阵表示,这引出了齐次坐标的必要性
解决方案:需要使用齐次坐标来统一表示包括平移在内的所有变换。
四、齐次坐标(Homogeneous coordinates):统一表示所有变换的数学工具
前面我们知道了:线性变换可以用2×2矩阵表示,但平移不能。
但遇到了问题:能否找到一种方法,统一表示包括平移在内的所有变换?
这一章要解决:理解齐次坐标的概念和作用。
答案:齐次坐标通过添加一个坐标维度,可以用3×3矩阵统一表示包括平移在内的所有变换。
!NOTE
📝 关键点总结:齐次坐标通过添加一个坐标维度(w),可以用3×3矩阵统一表示平移、旋转、缩放等所有变换。齐次坐标是计算机图形学和计算机视觉的基础工具。
4.1 齐次坐标的概念(Homogeneous coordinates):通过添加坐标维度统一表示变换
概念的本质:
齐次坐标是在原有坐标 ( x , y ) (x, y) (x,y) 的基础上,添加一个坐标维度 w w w,得到 ( x , y , w ) (x, y, w) (x,y,w)。
坐标转换:
- 从普通坐标到齐次坐标 : ( x , y ) → ( x , y , 1 ) (x, y) \rightarrow (x, y, 1) (x,y)→(x,y,1)
- 从齐次坐标到普通坐标 : ( x , y , w ) → ( x / w , y / w ) (x, y, w) \rightarrow (x/w, y/w) (x,y,w)→(x/w,y/w)(当 w ≠ 0 w \neq 0 w=0)
图解说明:
添加w=1 除以w 普通坐标
(x, y) 齐次坐标
(x, y, 1) 普通坐标
(x/w, y/w)
💡 说明:齐次坐标是一个技巧(trick),通过添加一个维度来统一表示所有变换
类比理解:就像给二维地图添加一个高度维度,变成三维地图,可以更方便地表示某些操作。
4.2 用齐次坐标表示平移(Translation Solution):用3×3矩阵表示平移
概念的本质:
使用齐次坐标,平移可以用3×3矩阵表示:
x ′ y ′ 1 \] = \[ 1 0 t x 0 1 t y 0 0 1 \] \[ x y 1 \] \\begin{bmatrix} x' \\\\ y' \\\\ 1 \\end{bmatrix} = \\begin{bmatrix} 1 \& 0 \& t_x \\\\ 0 \& 1 \& t_y \\\\ 0 \& 0 \& 1 \\end{bmatrix} \\begin{bmatrix} x \\\\ y \\\\ 1 \\end{bmatrix} x′y′1 = 100010txty1 xy1 **优势**: * 统一了所有变换的表示方法 * 可以方便地组合多个变换 * 矩阵乘法可以表示变换的组合 #### 4.3 用齐次坐标表示旋转和缩放(Rotation and Scaling in Homogeneous Coordinates):统一用3×3矩阵表示 **概念的本质**: 旋转也可以用3×3矩阵表示,形式为: \[ cos θ − sin θ 0 sin θ cos θ 0 0 0 1 \] \\begin{bmatrix} \\cos\\theta \& -\\sin\\theta \& 0 \\\\ \\sin\\theta \& \\cos\\theta \& 0 \\\\ 0 \& 0 \& 1 \\end{bmatrix} cosθsinθ0−sinθcosθ0001 **缩放的齐次坐标表示**: 缩放也可以用3×3矩阵表示,形式为: \[ s x 0 0 0 s y 0 0 0 1 \] \\begin{bmatrix} s_x \& 0 \& 0 \\\\ 0 \& s_y \& 0 \\\\ 0 \& 0 \& 1 \\end{bmatrix} sx000sy0001 **组合变换**: 多个变换可以通过矩阵乘法组合: M 组合 = M 3 ⋅ M 2 ⋅ M 1 M_{组合} = M_3 \\cdot M_2 \\cdot M_1 M组合=M3⋅M2⋅M1 *** ** * ** *** ### 五、变换的层次(Affine transformations / Projective Transformations):从仿射到投影的递进关系 **前面我们知道了**:齐次坐标可以统一表示平移、旋转、缩放等变换。 **但遇到了问题**:还有哪些更复杂的变换?它们之间有什么关系? **这一章要解决**:理解仿射变换和投影变换,以及变换的层次关系。 **答案**:变换有层次关系:线性变换 → 仿射变换 → 投影变换,功能越来越强大,但保持的性质越来越少。 *** ** * ** *** > \[!NOTE
📝 关键点总结:变换分为三个层次:线性变换(保持原点)、仿射变换(保持平行线)、投影变换(只保持直线)。投影变换最强大,可以表示透视效果。
5.1 仿射变换(Affine Transformation / Basic affine transformations):线性变换和平移的组合
概念的本质:
仿射变换是线性变换和平移的组合,可以用以下形式的3×3矩阵表示:
a b t x c d t y 0 0 1 \] \\begin{bmatrix} a \& b \& t_x \\\\ c \& d \& t_y \\\\ 0 \& 0 \& 1 \\end{bmatrix} ac0bd0txty1 **仿射变换的性质**: * 原点不一定映射到原点 * 直线映射到直线 * **平行线保持平行**(重要性质) * 比例关系保持不变 **基本仿射变换**: * 平移 * 2D平面内旋转 * 剪切(Shear) * 缩放 **图解说明**: 仿射变换 线性变换 + 平移 保持平行线 保持比例 **实际应用**: 图像校正: - 校正扫描文档的倾斜 - 校正相机拍摄的角度 - 保持平行线关系 #### 5.2 投影变换(Projective Transformation / Homographies / Planar Perspective Maps):最一般的平面变换 **概念的本质**: 投影变换(也称为单应性,Homography)是最一般的平面变换,可以用以下形式的3×3矩阵表示: \[ a b c d e f g h i \] \\begin{bmatrix} a \& b \& c \\\\ d \& e \& f \\\\ g \& h \& i \\end{bmatrix} adgbehcfi 其中最后一行不一定是 \[ 0 , 0 , 1 \] \[0, 0, 1\] \[0,0,1\]。 **投影变换的性质**: * 原点不一定映射到原点 * 直线映射到直线 * **平行线不一定保持平行**(可能相交) * 比例关系不保持 **图解说明**: 投影变换 最一般的变换 可以表示透视效果 平行线可能相交 **实际应用**: 透视校正: - 校正透视畸变(如拍摄建筑物时的透视效果) - 图像拼接 - 虚拟现实中的纹理映射 #### 5.3 变换的层次关系(These transformations are a nested set of groups):嵌套的变换集合 **概念的本质**: 变换是一个嵌套的集合(nested set of groups): 线性变换 └─ 仿射变换(线性变换 + 平移) └─ 投影变换(最一般) **图解说明**: 投影变换 最强大 只保持直线 仿射变换 保持平行线 线性变换 保持原点 **性质对比**: | 变换类型 | 保持原点 | 保持平行线 | 保持比例 | 矩阵形式 | |------|------|-------|------|-----------------------| | 线性变换 | ✅ | ✅ | ✅ | 2×2或3×3(最后行\[0,0,1\]) | | 仿射变换 | ❌ | ✅ | ✅ | 3×3(最后行\[0,0,1\]) | | 投影变换 | ❌ | ❌ | ❌ | 3×3(任意) | **实际应用选择**: 选择变换类型的原则: - 只需要旋转、缩放 → 线性变换 - 需要平移 → 仿射变换 - 需要透视效果 → 投影变换 *** ** * ** *** ### 📝 本章总结 **核心要点回顾**: 1. **图像变换的两种类型**:图像滤波改变像素值,图像变形改变像素位置 2. **基本几何变换**:平移、旋转、缩放是图像变换的基础,可以组合使用 3. **线性变换**:可以用2×2矩阵表示,包括缩放、旋转、剪切、镜像 4. **齐次坐标**:通过添加坐标维度,可以用3×3矩阵统一表示包括平移在内的所有变换 5. **变换层次**:线性变换 → 仿射变换 → 投影变换,功能越来越强大,但保持的性质越来越少 **知识地图**: 图像变换 图像滤波 改变像素值 图像变形 改变像素位置 基本变换 平移、旋转、缩放 线性变换 矩阵表示 齐次坐标 统一表示 仿射变换 线性+平移 投影变换 透视效果 **关键决策点**: * **需要改变像素值** → 图像滤波 * **需要改变像素位置** → 图像变形(几何变换) * **只需要旋转、缩放** → 线性变换 * **需要平移** → 仿射变换 * **需要透视效果** → 投影变换 **实际应用场景**: * **图像配准**:找到两幅图像之间的变换关系 * **图像校正**:校正倾斜、透视畸变 * **图像拼接**:将多幅图像拼接成全景图 * **目标跟踪**:跟踪目标的几何变换 * **虚拟现实**:纹理映射和场景变换 *** ** * ** ***