【计算机视觉(2)】图像几何变换基础篇:从平移旋转到投影变换

【投稿赢 iPhone 17】「我的第一个开源项目」故事征集:用代码换C位出道! 10w+人浏览 1.7k人参与

文章目录

📌 适合对象:计算机视觉初学者、图像处理入门者
⏱️ 预计阅读时间:40-50分钟
🎯 学习目标:理解图像变换的基本概念、掌握常见的几何变换、了解变换的层次关系


📚 学习路线图

第一步
理解图像变换的两种类型
滤波 vs 变形
第二步
掌握基本几何变换
平移、旋转、缩放(重点)
第三步
理解线性变换
矩阵表示和性质
第四步
学习齐次坐标
统一表示所有变换
第五步
理解变换层次
仿射变换和投影变换

本文内容一览(快速理解)

  1. 图像变换的两种类型:图像滤波改变像素值,图像变形改变像素位置

  2. 基本几何变换:平移、旋转、缩放是图像变换的基础操作

  3. 线性变换:可以用2×2矩阵表示,包括缩放、旋转、剪切、镜像

  4. 齐次坐标:通过添加一个坐标维度,可以统一表示包括平移在内的所有变换

  5. 变换层次:线性变换 → 仿射变换 → 投影变换,层次递进,功能越来越强大


一、图像变换是什么(Image Transformation):理解两种变换类型

这一章要建立的基础:理解图像变换的基本概念,区分两种不同类型的图像变换。

核心问题:当我们说"变换图像"时,到底指的是什么?有哪些不同的变换方式?


[!NOTE]
📝 关键点总结:图像变换分为两种类型:图像滤波(改变像素值范围)和图像变形(改变像素位置定义域)。几何变换属于图像变形,改变的是像素的空间位置。

1.1 图像变换的两种类型(Image Filtering vs Image Warping):滤波改变像素值,变形改变像素位置

概念的本质

图像变换可以分为两种基本类型:

  1. 图像滤波(Image Filtering):改变图像的范围(range)

    • 改变像素的值(亮度、颜色)
    • 公式: g ( x ) = h ( f ( x ) ) g(x) = h(f(x)) g(x)=h(f(x))
    • 例如:亮度调整、颜色增强、模糊处理
  2. 图像变形(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=Mp

其中 M M M 是2×2矩阵, p = ( x , y ) p = (x, y) p=(x,y) 是原坐标, p ′ = ( x ′ , y ′ ) p' = (x', y') p=(x,y) 是新坐标。

常见的线性变换

  1. 均匀缩放:用矩阵 [ s 0 0 s ] \begin{bmatrix} s & 0 \\ 0 & s \end{bmatrix} [s00s] 表示
  2. 非均匀缩放:用矩阵 [ s x 0 0 s y ] \begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix} [sx00sy] 表示
  3. 旋转:用矩阵 [ 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=Mp 的形式,因为平移会改变原点位置。

图解说明

线性变换
可以用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} xy1 = 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θ0sinθ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组合=M3M2M1

 


五、变换的层次(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. 变换层次:线性变换 → 仿射变换 → 投影变换,功能越来越强大,但保持的性质越来越少

知识地图

图像变换
图像滤波
改变像素值
图像变形
改变像素位置
基本变换
平移、旋转、缩放
线性变换
矩阵表示
齐次坐标
统一表示
仿射变换
线性+平移
投影变换
透视效果

关键决策点

  • 需要改变像素值 → 图像滤波
  • 需要改变像素位置 → 图像变形(几何变换)
  • 只需要旋转、缩放 → 线性变换
  • 需要平移 → 仿射变换
  • 需要透视效果 → 投影变换

实际应用场景

  • 图像配准:找到两幅图像之间的变换关系
  • 图像校正:校正倾斜、透视畸变
  • 图像拼接:将多幅图像拼接成全景图
  • 目标跟踪:跟踪目标的几何变换
  • 虚拟现实:纹理映射和场景变换

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值