【计算机视觉(7)】3D点几何基础篇:从世界坐标到像素坐标的旅程

从3D到2D:相机投影全解析

如何让小智AI成为你的第二大脑——“免费”送小智AI智能音箱征文活动 10w+人浏览 239人参与

AI助手已提取文章相关产品:

文章目录

📌 适合对象:计算机视觉初学者、图像处理入门者
⏱️ 预计阅读时间:50-60分钟
🎯 学习目标:理解3D点如何映射到2D图像,掌握相机投影、内参、畸变和标定的基本概念


📚 学习路线图

理解坐标系
世界坐标vs相机坐标
学习透视投影
3D到2D的映射
理解相机内参
焦距、主点、像素尺寸
学习镜头畸变
径向畸变校正
理解透视畸变
Film Distortion
学习正交投影
平行投影
掌握相机标定
估计相机参数
理解消失点
Vanishing Points

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

  1. 坐标系(Coordinate Systems):世界坐标系和相机坐标系,描述3D点的位置
  2. 透视投影(Perspective Projection):将3D点映射到2D图像平面的方法
  3. 相机内参(Intrinsic Parameters):焦距、主点、像素尺寸等相机内部参数
  4. 镜头畸变(Lens Distortion):径向畸变,导致图像边缘变形
  5. 透视畸变(Perspective Distortion):由于透视投影产生的视觉变形
  6. 正交投影(Orthographic Projection):平行投影,特殊情况的透视投影
  7. 相机标定(Camera Calibration):估计相机参数的过程
  8. 消失点和消失线(Vanishing Points & Lines):平行线在透视投影下的汇聚点

一、坐标系的故事(A Tale of Two Coordinate Systems):理解世界坐标和相机坐标

这一章要建立的基础:理解两个重要的坐标系:世界坐标系和相机坐标系

核心问题:3D点在不同坐标系中如何表示?如何从世界坐标转换到相机坐标?


[!NOTE]
📝 关键点总结:有两个重要的坐标系:世界坐标系(描述物体在真实世界中的位置)和相机坐标系(描述物体相对于相机的位置)。相机测量的是角度而不是距离,是一个"bearing sensor"。

1.1 两个坐标系(Two Coordinate Systems):世界坐标系和相机坐标系

概念的本质

在计算机视觉中,我们需要两个坐标系来描述3D点的位置:

  • 世界坐标系(World Coordinate System):描述物体在真实世界中的位置,单位通常是米(meters)
  • 相机坐标系(Camera Coordinate System):描述物体相对于相机的位置,原点在相机光心(COP - Center of Projection)

图解说明

世界坐标系
World (Xw, Yw, Zw)
旋转和平移
[R|T]
相机坐标系
Camera (Xc, Yc, Zc)
透视投影
Perspective Projection
图像坐标
Image (u, v)

💡 说明:3D点首先在世界坐标系中表示,然后通过旋转和平移转换到相机坐标系,最后通过透视投影映射到图像坐标。

类比理解

想象你在拍照:

  • 世界坐标系:就像地图上的坐标,告诉你物体在地球上的位置(如"北京天安门")
  • 相机坐标系:就像你站在相机位置,描述物体相对于你的位置(如"前方10米,右侧5米")
  • 图像坐标:就像照片上的像素位置(如"第100行,第200列")

实际例子

坐标系的应用:
- 世界坐标系:用于描述场景中所有物体的位置
- 相机坐标系:用于描述物体相对于相机的位置,便于投影计算
- 图像坐标:用于在图像中定位像素

单位转换:
- 世界坐标:单位是米(meters)或其他物理单位
- 图像坐标:单位是像素(pixels)
- 需要通过相机参数进行单位转换

 


1.2 相机的本质(What a Camera Measures):相机测量角度而不是距离

概念的本质

相机不测量距离,而是测量角度。相机是一个"bearing sensor"(方位传感器),它测量的是从相机光心到物体的方向角度,而不是距离。

图解说明

3D点P
相机光心C
Center of Projection
测量角度φ
Bearing Angle
投影到图像平面
Image Plane
相同角度的点
投影到同一点

💡 说明:所有沿着同一条射线(从相机光心出发)的点都会投影到图像平面上的同一个点。这就是为什么相机不能直接测量距离的原因。

类比理解

想象你在看星星:

  • 相机就像眼睛:眼睛只能看到星星的方向(角度),不能直接知道星星离你有多远
  • 相同方向的不同距离:距离你1米和距离你1000米的物体,如果在同一方向上,会投影到图像上的同一点
  • 这就是为什么需要立体视觉:用两个相机(或移动相机)才能测量距离

实际例子

相机的限制:
- 单目相机无法直接测量距离
- 需要额外的信息(如已知物体大小、立体视觉等)才能估计距离

图像平面的位置:
- 为了方便,图像平面通常表示在相机前方
- 这样图像保持相同的方向(不翻转)
- 图像平面在相机坐标系中的位置:Z = f(焦距)

实际应用:
- 单目SLAM:通过运动估计深度
- 立体视觉:用两个相机测量距离
- 结构光:用投影仪辅助测量距离

 


二、透视投影(Perspective Projection):从3D世界到2D图像的映射

这一章要建立的基础:理解透视投影如何将3D点映射到2D图像平面

核心问题:如何将世界坐标系中的3D点映射到图像中的像素坐标?


[!NOTE]
📝 关键点总结:透视投影分为三个步骤:1) 将世界坐标转换为相机坐标(通过旋转和平移),2) 将相机坐标投影到图像平面坐标,3) 将图像平面坐标转换为像素坐标。

2.1 透视投影的步骤(Perspective Projection Steps):从世界坐标到像素坐标

概念的本质

透视投影将3D点映射到2D图像需要三个步骤:

  1. 世界坐标 → 相机坐标:通过旋转矩阵R和平移向量T
  2. 相机坐标 → 图像平面坐标:通过相似三角形原理
  3. 图像平面坐标 → 像素坐标:考虑主点偏移和像素尺寸

图解说明

世界坐标Pw
(Xw, Yw, Zw)
步骤0:旋转和平移
Pc = R·Pw + T
相机坐标Pc
(Xc, Yc, Zc)
步骤1:投影到图像平面
x = f·Xc/Zc
y = f·Yc/Zc
图像平面坐标
(x, y)
步骤2:转换为像素坐标
u = ku·x + u0
v = kv·y + v0
像素坐标
(u, v)

💡 说明

  • 步骤0:外参(Extrinsic Parameters),描述相机在世界坐标系中的位置和方向
  • 步骤1:使用相似三角形原理,将3D点投影到2D图像平面
  • 步骤2:内参(Intrinsic Parameters),将图像平面坐标转换为像素坐标

类比理解

想象你在用相机拍照:

  1. 步骤0:就像你站在某个位置,面向某个方向(相机的位置和方向)
  2. 步骤1:就像光线从物体通过镜头投射到胶片上(投影到图像平面)
  3. 步骤2:就像将胶片上的位置转换为数字照片的像素位置(转换为像素坐标)

实际例子

透视投影的应用:
- 计算机图形学:渲染3D场景到2D屏幕
- 计算机视觉:理解图像中的3D结构
- 机器人导航:从图像估计物体位置
- AR/VR:将虚拟物体投影到真实场景

投影的特点:
- 近大远小:距离相机近的物体看起来更大
- 平行线汇聚:平行线在透视投影下会汇聚到消失点
- 深度信息丢失:单张图像无法直接恢复深度

 


2.2 相似三角形原理(Similar Triangles):理解投影的数学基础

概念的本质

透视投影基于相似三角形原理。如果两个三角形相似,它们的对应边成比例。在相机投影中,从相机光心到3D点的射线与图像平面相交,形成相似三角形。

图解说明

相机光心C
3D点Pc
(Xc, Yc, Zc)
图像平面点p
(x, y)
相似三角形
x/Xc = f/Zc
x = f·Xc/Zc

💡 说明

  • 从相机光心C到3D点Pc的射线
  • 图像平面在Z = f的位置(f是焦距)
  • 通过相似三角形:x/Xc = f/Zc,因此 x = f·Xc/Zc
  • 同样,y = f·Yc/Zc

类比理解

想象你在看一幅画:

  • 相似三角形:就像你站在某个位置看画,你的眼睛、画上的点和实际物体形成相似三角形
  • 投影:就像光线从物体通过你的眼睛投射到画上
  • 焦距:就像你的眼睛到画的距离,决定了投影的大小

实际例子

相似三角形的应用:
- 相机投影:将3D点投影到2D图像
- 测量距离:如果知道物体大小和投影大小,可以估计距离
- 图像缩放:改变焦距相当于改变投影的缩放比例

投影公式:
- x = f·Xc/Zc:水平方向的投影
- y = f·Yc/Zc:垂直方向的投影
- 注意:Zc是深度,必须在相机前方(Zc > 0)

 


2.3 齐次坐标(Homogeneous Coordinates):线性映射的数学工具

概念的本质

齐次坐标通过引入一个额外的元素(尺度因子λ),使得3D到2D的映射变成线性映射。这样可以用矩阵乘法表示投影,简化计算。

图解说明

3D点
(Xc, Yc, Zc)
齐次坐标
(Xc, Yc, Zc, 1)
投影矩阵
K·[R|T]
齐次像素坐标
(λu, λv, λ)
像素坐标
(u, v)

💡 说明

  • 齐次坐标允许用矩阵乘法表示投影
  • 投影矩阵K包含内参,[R|T]包含外参
  • 最后需要除以尺度因子λ得到实际像素坐标

类比理解

想象你在用放大镜看物体:

  • 齐次坐标:就像用放大镜,引入一个放大倍数
  • 矩阵乘法:就像通过放大镜的变换,用矩阵表示
  • 尺度因子:就像放大倍数,最后需要还原到实际大小

实际例子

齐次坐标的优势:
- 线性映射:可以用矩阵乘法表示投影
- 统一表示:点和向量可以用统一的形式表示
- 简化计算:便于计算机处理

投影矩阵:
- K:内参矩阵,包含焦距、主点、像素尺寸
- [R|T]:外参矩阵,包含旋转和平移
- 完整的投影:p = K·[R|T]·Pw

 


2.4 外参和内参(Extrinsic and Intrinsic Parameters):描述相机的完整参数

概念的本质

相机参数分为两类:

  • 外参(Extrinsic Parameters):描述相机在世界坐标系中的位置和方向(旋转R和平移T)
  • 内参(Intrinsic Parameters):描述相机内部的特性(焦距f、主点(u0,v0)、像素尺寸ku和kv)

图解说明

相机参数
外参
Extrinsic
内参
Intrinsic
旋转R
3个角度
平移T
3个坐标
焦距f
Focal Length
主点(u0,v0)
Principal Point
像素尺寸
ku, kv

💡 说明

  • 外参:6个参数(3个旋转角度 + 3个平移坐标),描述相机的位置和方向
  • 内参:至少4个参数(f, u0, v0, ku, kv),描述相机的内部特性
  • 总共至少需要10个参数来描述一个相机

类比理解

想象你在用相机拍照:

  • 外参:就像你站在哪里、面向哪个方向(相机的位置和方向)
  • 内参:就像相机的"眼睛"的特性(焦距、视野、像素密度)

实际例子

参数的数量:
- 外参:6个(3个旋转 + 3个平移)
- 内参:4-5个(焦距、主点、像素尺寸)
- 总共:10-11个参数

参数的作用:
- 外参:将世界坐标转换为相机坐标
- 内参:将相机坐标投影到像素坐标

参数估计:
- 通过相机标定可以估计这些参数
- 需要已知的3D点和对应的2D图像点

 


三、相机内参(Intrinsic Camera Parameters):焦距、主点和像素尺寸

这一章要建立的基础:理解相机内参的含义和作用

核心问题:相机内参包括哪些?它们如何影响图像的形成?


[!NOTE]
📝 关键点总结:相机内参包括焦距(决定视野大小)、主点(图像中心偏移)、像素尺寸(像素到物理单位的转换)。这些参数描述了相机的内部特性。

3.1 焦距(Focal Length):决定视野的大小

概念的本质

焦距(Focal Length)是相机光心到图像平面的距离,用f表示。焦距决定了相机的视野(Field of View):焦距越长,视野越小(像望远镜);焦距越短,视野越大(像广角镜头)。

图解说明

短焦距
24mm
大视野
Wide Field of View
长焦距
800mm
小视野
Narrow Field of View
焦距f
视野角度
Field of View
物体大小
在图像中的大小

💡 说明

  • 短焦距:视野大,适合拍摄风景、建筑
  • 长焦距:视野小,适合拍摄远处的物体(如体育比赛、野生动物)
  • 焦距可以理解为"缩放":长焦距相当于放大,短焦距相当于缩小

类比理解

想象你在用望远镜和广角镜:

  • 短焦距(广角):就像用广角镜,可以看到很大的范围,但物体看起来很小
  • 长焦距(长焦):就像用望远镜,只能看到很小的范围,但物体看起来很大
  • 焦距就是"放大倍数":焦距越长,放大倍数越大

实际例子

焦距的典型值:
- 广角镜头:14-24mm(视野大,适合风景)
- 标准镜头:50mm(接近人眼视野)
- 长焦镜头:200-800mm(视野小,适合远距离拍摄)

焦距与视野的关系:
- 焦距越长,视野越小
- 焦距越短,视野越大
- 视野角度 = 2·arctan(传感器尺寸/(2·f))

实际应用:
- 选择合适的焦距拍摄不同场景
- 通过改变焦距实现"变焦"效果
- 在计算机视觉中,焦距是重要的内参

 


3.2 主点偏移(Principal Point Offset):图像中心的偏移

概念的本质

主点(Principal Point)是相机光轴与图像平面的交点,理论上应该在图像中心。但在实际中,由于制造误差或图像裁剪,主点可能不在图像中心,这就是主点偏移。

图解说明

图像平面
理论主点
图像中心
实际主点
(u0, v0)
主点偏移
(u0, v0) ≠ (图像宽度/2, 图像高度/2)
原因
制造误差
图像裁剪

💡 说明

  • 主点:相机光轴与图像平面的交点,用(u0, v0)表示
  • 主点偏移:主点不在图像中心,通常由于制造误差或图像裁剪
  • 影响:主点偏移会影响投影计算,需要在标定时估计

类比理解

想象你在用相机拍照:

  • 主点:就像相机"瞄准"的中心点
  • 主点偏移:就像相机没有对准中心,稍微偏了一点
  • 图像裁剪:就像你只保存了照片的一部分,中心点就偏移了

实际例子

主点偏移的原因:
- 制造误差:镜头和传感器没有完全对齐
- 图像裁剪:只保存了图像的一部分(如从网络下载的图片)
- 传感器偏移:传感器位置不准确

主点偏移的影响:
- 影响投影计算的准确性
- 需要在相机标定时估计和校正
- 对于高精度应用很重要

实际应用:
- 相机标定:估计主点位置
- 图像校正:校正主点偏移
- 高精度测量:考虑主点偏移的影响

 


四、镜头畸变(Lens Distortion):径向畸变的校正

这一章要建立的基础:理解镜头畸变的类型和原因

核心问题:什么是镜头畸变?如何校正镜头畸变?


[!NOTE]
📝 关键点总结:镜头畸变主要是径向畸变,由不完美的镜头引起。有两种类型:桶形畸变(Barrel Distortion)和枕形畸变(Pincushion Distortion)。畸变在图像边缘最明显。

4.1 径向畸变(Radial Distortion):由不完美镜头引起的变形

概念的本质

径向畸变(Radial Distortion)是由于镜头不完美引起的图像变形。光线通过镜头边缘时,偏离理想路径,导致图像边缘的直线变成曲线。有两种类型:桶形畸变(Barrel)和枕形畸变(Pincushion)。

图解说明

理想镜头
No Distortion
直线保持直线
桶形畸变
Barrel Distortion
边缘向内弯曲
像桶的形状
枕形畸变
Pincushion Distortion
边缘向外弯曲
像枕头的形状
原因
光线通过镜头边缘
偏离理想路径

💡 说明

  • 桶形畸变:图像边缘向内弯曲,像桶的形状,常见于广角镜头
  • 枕形畸变:图像边缘向外弯曲,像枕头的形状,常见于长焦镜头
  • 畸变在边缘最明显:通过镜头边缘的光线偏离最大

类比理解

想象你在通过一个不完美的玻璃看物体:

  • 理想镜头:就像完美的玻璃,直线保持直线
  • 桶形畸变:就像凸透镜,边缘向内弯曲
  • 枕形畸变:就像凹透镜,边缘向外弯曲
  • 边缘最明显:就像玻璃边缘的变形最明显

实际例子

畸变的类型:
- 桶形畸变(Barrel):边缘向内弯曲,常见于广角镜头
- 枕形畸变(Pincushion):边缘向外弯曲,常见于长焦镜头
- 鱼眼镜头:极端情况,整个图像都变形

畸变的原因:
- 镜头不完美:制造误差
- 光线通过边缘:偏离理想路径
- 短焦距和长焦距:更容易产生畸变

畸变的影响:
- 影响图像质量:直线变成曲线
- 影响测量精度:距离和角度不准确
- 需要校正:通过标定和校正算法

 


4.2 畸变校正(Distortion Correction):校正径向畸变

概念的本质

畸变校正(Distortion Correction)是通过数学模型估计畸变参数,然后对图像进行校正,使直线恢复为直线。通常使用多项式模型描述畸变,通过相机标定估计参数。

图解说明

原始图像
有畸变
估计畸变参数
k1, k2, k3
校正算法
Distortion Correction
校正后图像
直线恢复

💡 说明

  • 畸变模型:通常使用多项式模型,如 r² = x² + y²,然后 x_corrected = x·(1 + k1·r² + k2·r⁴ + …)
  • 参数估计:通过相机标定,使用已知的直线或网格图案估计畸变参数
  • 校正:对每个像素应用校正公式,重新映射到正确位置

类比理解

想象你在看一幅变形的画:

  • 畸变参数:就像知道画是如何变形的(变形的规律)
  • 校正算法:就像将变形的画恢复原状
  • 标定:就像先测量变形的规律,然后校正

实际例子

畸变校正的步骤:
1. 相机标定:使用已知的网格图案(如棋盘格)
2. 估计参数:估计畸变参数k1, k2, k3等
3. 图像校正:对每个像素应用校正公式
4. 重新映射:将校正后的像素映射到新图像

畸变校正的应用:
- 计算机视觉:提高测量精度
- 摄影:校正广角镜头的畸变
- 机器人导航:提高定位精度

校正的效果:
- 直线恢复为直线
- 提高测量精度
- 改善图像质量

 


五、透视畸变(Perspective Distortion / Film Distortion):透视投影产生的视觉变形

这一章要建立的基础:理解透视畸变与镜头畸变的区别

核心问题:什么是透视畸变?透视畸变与镜头畸变有什么不同?


[!NOTE]
📝 关键点总结:透视畸变(Perspective Distortion)不是由镜头缺陷引起的,而是由透视投影本身产生的。例如,球体投影成椭圆,平行线汇聚,近大远小等。这是透视投影的固有特性。

5.1 透视畸变的本质(What is Perspective Distortion):透视投影的固有特性

概念的本质

透视畸变(Perspective Distortion)不是由镜头缺陷引起的,而是由透视投影本身产生的视觉变形。这是透视投影的固有特性,不是错误。例如:球体投影成椭圆,平行线汇聚到消失点,近大远小等。

图解说明

透视投影的特性
球体 → 椭圆
Sphere → Ellipse
平行线 → 汇聚
Parallel Lines → Converge
近大远小
Near Large, Far Small
这不是错误
透视投影的固有特性

💡 说明

  • 透视畸变不是错误:这是透视投影的固有特性
  • 球体投影成椭圆:球体在透视投影下看起来像椭圆
  • 平行线汇聚:平行线在透视投影下会汇聚到消失点
  • 近大远小:距离相机近的物体看起来更大

类比理解

想象你在看一幅画:

  • 透视畸变:就像画中的透视效果,不是错误,而是艺术表现
  • 球体变椭圆:就像从侧面看球,看起来像椭圆
  • 平行线汇聚:就像看铁路轨道,在远处汇聚
  • 近大远小:就像看建筑物,近处看起来大,远处看起来小

实际例子

透视畸变的例子:
- 球体投影:球体在透视投影下看起来像椭圆
- 建筑物:垂直的柱子看起来倾斜(汇聚)
- 人物:距离相机近的人看起来更大
- 道路:平行的道路在远处汇聚

透视畸变的应用:
- 建筑摄影:需要校正透视畸变(使用移轴镜头)
- 艺术创作:利用透视畸变创造视觉效果
- 计算机视觉:理解透视畸变有助于3D重建

透视畸变 vs 镜头畸变:
- 透视畸变:透视投影的固有特性,不是错误
- 镜头畸变:镜头缺陷引起的,需要校正

 


5.2 建筑摄影中的透视畸变(Perspective Distortion in Architectural Photography):汇聚垂直线

概念的本质

在建筑摄影中,当相机向上倾斜拍摄建筑物时,垂直的柱子会看起来倾斜并汇聚。这不是镜头缺陷,而是透视投影的结果。解决方法包括:保持相机水平、使用移轴镜头(Tilt-Shift Lens)、后期校正。

图解说明

建筑摄影
相机向上倾斜
Tilting Upwards
垂直柱子汇聚
Converging Verticals
解决方法
保持相机水平
Keep Camera Level
移轴镜头
Tilt-Shift Lens
后期校正
Post-Processing

💡 说明

  • 问题:相机向上倾斜时,垂直的柱子看起来倾斜并汇聚
  • 原因:透视投影的固有特性,不是镜头缺陷
  • 解决方法1:保持相机水平,但只能拍到建筑物的底部
  • 解决方法2:使用移轴镜头,将镜头向上移动,保持相机水平
  • 解决方法3:后期校正,通过图像处理校正透视畸变

类比理解

想象你在拍摄一座高楼:

  • 普通镜头:就像你抬头看,柱子看起来倾斜
  • 移轴镜头:就像你可以移动"眼睛"的位置,保持水平看,但"眼睛"向上移动
  • 后期校正:就像用软件将倾斜的柱子拉直

实际例子

建筑摄影的挑战:
- 问题:需要拍摄整个建筑物,但相机向上倾斜会导致柱子汇聚
- 限制:保持相机水平只能拍到建筑物的底部
- 解决:使用移轴镜头或后期校正

移轴镜头(Tilt-Shift Lens):
- 可以移动镜头相对于传感器的位置
- 保持相机水平,但镜头向上移动
- 可以拍摄整个建筑物,柱子保持垂直

后期校正:
- 使用图像处理软件校正透视畸变
- 将倾斜的柱子拉直
- 但会损失一些图像质量

实际应用:
- 建筑摄影:拍摄建筑物
- 产品摄影:拍摄产品
- 艺术创作:创造特殊效果(如微缩模型效果)

 


5.3 其他相机模型(Other Camera Models):鱼眼、全景、生物眼睛

概念的本质

除了标准透视投影相机,还有其他相机模型:鱼眼镜头(Fisheye)、全景相机(Panorama)、移轴镜头(Tilt-Shift)、生物眼睛(Biological Eyes)等。每种模型有不同的投影特性和应用场景。

图解说明

相机模型
标准透视
Standard Perspective
鱼眼镜头
Fisheye
全景相机
Panorama
移轴镜头
Tilt-Shift
生物眼睛
Biological Eyes

💡 说明

  • 标准透视:最常见的相机模型,适合大多数应用
  • 鱼眼镜头:极端广角,视野可达180度或更大
  • 全景相机:可以拍摄360度全景
  • 移轴镜头:可以校正透视畸变
  • 生物眼睛:研究生物视觉系统

类比理解

想象不同类型的"眼睛":

  • 标准透视:就像人眼,视野正常
  • 鱼眼镜头:就像鱼眼,可以看到很大的范围
  • 全景相机:就像可以360度看的眼睛
  • 移轴镜头:就像可以移动的眼睛

实际例子

不同相机模型的应用:
- 标准透视:大多数应用,如摄影、计算机视觉
- 鱼眼镜头:监控、虚拟现实、特殊效果
- 全景相机:虚拟旅游、360度视频
- 移轴镜头:建筑摄影、产品摄影
- 生物眼睛:研究生物视觉、仿生机器人

选择相机模型:
- 根据应用场景选择合适的模型
- 考虑视野、畸变、成本等因素
- 不同模型有不同的投影公式

 


六、正交投影(Orthographic Projection):平行投影的特殊情况

这一章要建立的基础:理解正交投影与透视投影的区别

核心问题:什么是正交投影?正交投影与透视投影有什么不同?


[!NOTE]
📝 关键点总结:正交投影是透视投影的特殊情况,当相机光心到图像平面的距离为无穷远时,投影变成平行投影。正交投影没有透视效果(没有近大远小),适合远距离物体或长焦镜头。

6.1 正交投影的定义(What is Orthographic Projection):平行投影

概念的本质

正交投影(Orthographic Projection)是透视投影的特殊情况。当相机光心到图像平面的距离为无穷远时,投影变成平行投影(Parallel Projection)。在正交投影中,投影线是平行的,没有透视效果(没有近大远小)。

图解说明

透视投影
Perspective
投影线汇聚
Converging
正交投影
Orthographic
投影线平行
Parallel
f → ∞
没有近大远小

💡 说明

  • 正交投影:投影线平行,没有汇聚点
  • 投影公式:(x, y, z) → (x, y),直接去掉z坐标
  • 应用:远距离物体、长焦镜头、工程制图

类比理解

想象你在看远处的物体:

  • 透视投影:就像近处看,有近大远小的效果
  • 正交投影:就像从非常远的地方看,所有物体看起来一样大(没有近大远小)
  • 长焦镜头:就像用望远镜看,接近正交投影

实际例子

正交投影的特点:
- 投影线平行:没有汇聚点
- 没有近大远小:所有物体看起来一样大
- 投影公式简单:(x, y, z) → (x, y)

正交投影的应用:
- 远距离物体:当物体距离很远时,近似正交投影
- 长焦镜头:长焦镜头接近正交投影
- 工程制图:技术图纸使用正交投影
- 卫星图像:从卫星看地球,接近正交投影

正交投影 vs 透视投影:
- 正交投影:投影线平行,没有透视效果
- 透视投影:投影线汇聚,有透视效果
- 正交投影是透视投影的特殊情况(f → ∞)

 


七、相机标定(Camera Calibration):估计相机参数

这一章要建立的基础:理解相机标定的目的和方法

核心问题:如何估计相机参数?相机标定有哪些方法?


[!NOTE]
📝 关键点总结:相机标定的目标是估计相机参数(内参和外参)。有两种主要方法:1) 直接线性标定(DLT),求解投影矩阵;2) 非线性优化,最小化几何误差。还可以使用多平面标定(如棋盘格)。

7.1 相机标定的目标(Camera Calibration Goal):估计相机参数

概念的本质

相机标定(Camera Calibration)的目标是估计相机参数:

  • 内参:焦距f、主点(u0,v0)、像素尺寸ku和kv、径向畸变参数k1和k2
  • 外参:旋转R和平移T(对于每个图像)

有两种方法:

  • 版本1:直接求解投影矩阵P(用于SFM - Structure from Motion)
  • 版本2:分别求解内参和外参

图解说明

相机标定
版本1:投影矩阵
Solve for P
版本2:分别求解
Intrinsic + Extrinsic
用于SFM
Structure from Motion
内参
f, u0, v0, ku, kv, k1, k2
外参
R, T (per image)

💡 说明

  • 版本1:直接求解投影矩阵P,不区分内参和外参,适合SFM
  • 版本2:分别求解内参和外参,更直观,适合大多数应用
  • 需要已知的3D点和对应的2D图像点

类比理解

想象你在校准一个测量工具:

  • 相机标定:就像校准尺子,知道尺子的刻度
  • 已知点:就像已知长度的标准物体
  • 估计参数:就像测量标准物体,确定尺子的刻度

实际例子

相机标定的需求:
- 已知的3D点:在真实世界中的位置(如棋盘格的角点)
- 对应的2D点:在图像中的位置(像素坐标)
- 估计参数:通过对应关系估计相机参数

标定的应用:
- 计算机视觉:3D重建、SLAM、AR/VR
- 机器人:视觉导航、物体定位
- 测量:高精度测量、质量检测

标定的要求:
- 必须知道3D点的几何形状非常准确
- 必须知道3D到2D的对应关系
- 需要多个视角的图像(对于外参)

 


7.2 直接线性标定(Direct Linear Calibration):求解投影矩阵

概念的本质

直接线性标定(Direct Linear Calibration, DLT)通过已知的3D点和对应的2D图像点,直接求解投影矩阵P。使用线性最小二乘法求解,非常简单,但有一些缺点。

图解说明

已知3D点
Pw
对应2D点
p
线性方程组
Ap = 0
最小二乘
Linear Least Squares
投影矩阵P
Projection Matrix

💡 说明

  • 方法:建立线性方程组Ap = 0,使用最小二乘法求解
  • 优点:非常简单,易于实现(如MATLAB的A\b)
  • 缺点:不直接给出内参和外参,不建模径向畸变,难以施加约束,最小化的是代数误差而不是几何误差

类比理解

想象你在解方程:

  • 直接线性标定:就像直接解方程,简单快速
  • 缺点:就像解出的答案不够精确,没有考虑所有因素

实际例子

直接线性标定的步骤:
1. 收集已知的3D点和对应的2D点
2. 建立线性方程组:每个对应点给出两个方程
3. 使用最小二乘法求解投影矩阵P
4. 得到12个参数的投影矩阵

直接线性标定的缺点:
- 不直接给出内参和外参:需要进一步分解
- 不建模径向畸变:无法处理镜头畸变
- 难以施加约束:如已知焦距f
- 最小化代数误差:不是几何误差(重投影误差)

实际应用:
- 作为初始值:用于非线性优化的初始值
- 快速标定:对精度要求不高的应用
- SFM:用于Structure from Motion

 


7.3 非线性优化(Nonlinear Optimization):最小化几何误差

概念的本质

非线性优化方法定义误差函数E,表示投影的3D点与图像位置的差异(几何误差/重投影误差)。E是内参、外参和径向畸变的非线性函数。使用非线性优化技术(如Ceres Solver)最小化E。

图解说明

误差函数E
Reprojection Error
非线性函数
Nonlinear Function
内参、外参、畸变
Intrinsics, Extrinsics, Distortion
非线性优化
Nonlinear Optimization
最优参数
Optimal Parameters
初始化
代数解
Algebraic Solution

💡 说明

  • 误差函数:E = Σ ||p_i - project(P_i, intrinsics, extrinsics)||²
  • 几何误差:投影点与图像点的实际距离(像素)
  • 非线性优化:使用迭代方法(如Levenberg-Marquardt)最小化误差
  • 初始化:通常用代数解(DLT)作为初始值

类比理解

想象你在调整相机参数:

  • 误差函数:就像测量投影误差,看投影点与图像点差多远
  • 非线性优化:就像不断调整参数,使误差最小
  • 初始化:就像先给一个大概的值,然后精细调整

实际例子

非线性优化的步骤:
1. 初始化:使用代数解(DLT)作为初始值
2. 定义误差函数:重投影误差
3. 迭代优化:使用非线性优化算法(如Ceres Solver)
4. 收敛:得到最优的内参、外参和畸变参数

非线性优化的优势:
- 最小化几何误差:重投影误差,更符合实际
- 可以建模径向畸变:处理镜头畸变
- 可以施加约束:如已知焦距f
- 精度高:得到更准确的参数

实际应用:
- 高精度标定:需要高精度的应用
- 处理畸变:需要校正镜头畸变的应用
- 专业应用:机器人、测量、AR/VR

 


7.4 多平面标定(Multi-Plane Calibration):使用棋盘格

概念的本质

多平面标定(Multi-Plane Calibration)只需要一个平面(如棋盘格),不需要知道平面的位置和方向。通过多个视角的图像,可以估计相机参数。这是最常用的标定方法,有现成的代码(如OpenCV、MATLAB)。

图解说明

棋盘格
Checkerboard
多个视角
Multiple Views
检测角点
Detect Corners
估计参数
Estimate Parameters
优点
只需要平面
Don't Need 3D
不需要位置
Don't Need Position
现成代码
Available Code

💡 说明

  • 只需要平面:不需要知道3D点的精确位置
  • 不需要位置:不需要知道平面的位置和方向
  • 多个视角:通过多个视角的图像估计参数
  • 现成代码:OpenCV、MATLAB等有现成的标定代码

类比理解

想象你在校准相机:

  • 多平面标定:就像用一个棋盘格,从不同角度拍照
  • 不需要3D位置:就像不需要知道棋盘格在空间中的精确位置
  • 多个视角:就像从不同角度拍照,提供更多信息

实际例子

多平面标定的步骤:
1. 打印棋盘格:黑白相间的方格图案
2. 多个视角:从不同角度、距离拍摄棋盘格
3. 检测角点:自动检测棋盘格的角点
4. 估计参数:使用优化算法估计相机参数

多平面标定的优势:
- 简单:只需要打印棋盘格
- 不需要3D位置:不需要知道平面的精确位置
- 现成代码:OpenCV、MATLAB等有现成的实现
- 精度高:可以得到高精度的参数

实际应用:
- 最常用的标定方法
- OpenCV:cv2.calibrateCamera()
- MATLAB:Camera Calibrator App
- 研究:Zhengyou Zhang的方法

推荐资源:
- OpenCV文档:Camera Calibration
- MATLAB:Camera Calibrator App
- Jean-Yves Bouguet的MATLAB代码
- Zhengyou Zhang的网站

 


八、消失点和消失线(Vanishing Points & Lines):透视投影的几何特性

这一章要建立的基础:理解消失点和消失线的形成原理

核心问题:什么是消失点?平行线为什么会汇聚?消失线是什么?


[!NOTE]
📝 关键点总结:在透视投影中,平行线会汇聚到消失点。每个方向在空间中都有自己的消失点。平行于图像平面的平行线保持平行。多个消失点的集合形成消失线(地平线)。

8.1 投影特性(Projection Properties):透视投影的几何特性

概念的本质

透视投影有一些重要的几何特性:

  • 多对一映射:沿着同一条射线的所有点映射到图像上的同一个点
  • 点 → 点:3D点映射到2D点
  • 线 → 线:3D直线映射到2D直线(保持共线性)
  • 平面 → 平面:3D平面映射到2D平面(或半平面)
  • 特殊情况:通过相机光心的直线投影为点,通过相机光心的平面投影为线

图解说明

透视投影特性
点 → 点
Points → Points
线 → 线
Lines → Lines
平面 → 平面
Planes → Planes
特殊情况
通过光心的线 → 点
Line through COP → Point
通过光心的平面 → 线
Plane through COP → Line

💡 说明

  • 保持共线性:共线的3D点投影后仍然共线
  • 保持共面性:共面的3D点投影后仍然共面
  • 特殊情况:通过相机光心的几何元素投影会退化

类比理解

想象你在用相机拍照:

  • 点 → 点:就像3D空间中的点投影到照片上的点
  • 线 → 线:就像3D空间中的直线投影到照片上的直线
  • 平面 → 平面:就像3D空间中的平面投影到照片上的区域
  • 特殊情况:就像你正对着一条线看,它看起来像一个点

实际例子

投影特性的应用:
- 3D重建:从2D图像恢复3D结构
- 几何推理:利用投影特性进行几何推理
- 计算机图形学:渲染3D场景到2D屏幕

投影特性的重要性:
- 理解透视投影的几何特性
- 用于3D重建和几何推理
- 解释消失点和消失线的形成

 


8.2 消失点(Vanishing Points):平行线的汇聚点

概念的本质

消失点(Vanishing Point)是平行线在透视投影下的汇聚点。在透视投影中,平行线会汇聚到消失点。每个方向在空间中都有自己的消失点。但平行于图像平面的平行线保持平行(不汇聚)。

图解说明

平行线
Parallel Lines
透视投影
Perspective Projection
汇聚到消失点
Converge to Vanishing Point
不同方向
不同消失点
Different Vanishing Points
平行于图像平面
保持平行
Remain Parallel

💡 说明

  • 平行线汇聚:在透视投影中,平行线会汇聚到消失点
  • 每个方向一个消失点:空间中每个方向都有自己的消失点
  • 特殊情况:平行于图像平面的平行线保持平行,不汇聚

类比理解

想象你在看铁路轨道:

  • 平行线汇聚:就像铁路轨道在远处汇聚到一个点
  • 消失点:就像轨道汇聚的那个点
  • 不同方向:就像不同方向的轨道汇聚到不同的消失点
  • 水平轨道:就像水平的轨道保持平行,不汇聚

实际例子

消失点的例子:
- 铁路轨道:平行的轨道在远处汇聚
- 建筑物:垂直的柱子向上汇聚
- 道路:平行的道路在远处汇聚
- 三点透视:三个方向的平行线汇聚到三个消失点

消失点的应用:
- 3D重建:从消失点估计相机姿态
- 图像校正:校正透视畸变
- 艺术创作:创造透视效果
- 建筑摄影:理解透视效果

消失点的计算:
- 检测图像中的平行线
- 计算平行线的交点
- 交点就是消失点

 


8.3 消失线(Vanishing Lines):地平线

概念的本质

消失线(Vanishing Line)是多个消失点的集合。对于平面上的所有平行线,它们的消失点都在同一条线上,这条线就是消失线。对于水平面,消失线就是地平线(Horizon Line)。不同平面可以定义不同的消失线。

图解说明

平面上的平行线
Parallel Lines on Plane
多个消失点
Multiple Vanishing Points
消失线
Vanishing Line
水平面
地平线
Horizon Line
不同平面
不同消失线
Different Vanishing Lines

💡 说明

  • 消失线:平面上所有平行线的消失点的集合
  • 地平线:水平面的消失线就是地平线
  • 不同平面:不同平面可以定义不同的消失线

类比理解

想象你在看风景:

  • 消失线:就像地平线,所有水平方向的平行线都汇聚到地平线上
  • 地平线:就像天与地的交界线
  • 不同平面:就像不同倾斜的平面有不同的消失线

实际例子

消失线的例子:
- 地平线:水平面的消失线
- 建筑物:垂直平面的消失线
- 道路:路面的消失线

消失线的应用:
- 3D重建:从消失线估计平面方向
- 图像理解:理解场景的几何结构
- 艺术创作:创造透视效果

三点透视:
- 三个方向的平行线
- 三个消失点
- 形成三点透视效果

 


📝 本章总结

核心要点回顾

  1. 坐标系

    • 世界坐标系和相机坐标系,描述3D点的位置
    • 相机测量角度而不是距离,是一个"bearing sensor"
  2. 透视投影

    • 将3D点映射到2D图像需要三个步骤:世界坐标→相机坐标→图像平面坐标→像素坐标
    • 基于相似三角形原理
    • 使用齐次坐标实现线性映射
  3. 相机内参

    • 焦距:决定视野大小
    • 主点:图像中心偏移
    • 像素尺寸:像素到物理单位的转换
  4. 镜头畸变

    • 径向畸变:桶形畸变和枕形畸变
    • 由不完美的镜头引起
    • 可以通过标定和校正算法校正
  5. 透视畸变

    • 不是镜头缺陷,而是透视投影的固有特性
    • 球体投影成椭圆,平行线汇聚,近大远小
    • 建筑摄影中的汇聚垂直线
  6. 正交投影

    • 透视投影的特殊情况(f → ∞)
    • 投影线平行,没有透视效果
    • 适合远距离物体或长焦镜头
  7. 相机标定

    • 估计相机参数(内参和外参)
    • 直接线性标定:简单但不精确
    • 非线性优化:精确,最小化几何误差
    • 多平面标定:使用棋盘格,最常用
  8. 消失点和消失线

    • 平行线在透视投影下汇聚到消失点
    • 每个方向有自己的消失点
    • 消失线是多个消失点的集合,地平线是水平面的消失线

知识地图

3D点几何
坐标系
World/Camera
透视投影
3D→2D
相机参数
Intrinsic/Extrinsic
畸变
Lens/Perspective
标定
Calibration
消失点/线
Vanishing
相似三角形
齐次坐标
焦距/主点
像素尺寸
径向畸变
透视畸变
线性/非线性
多平面
平行线汇聚
地平线

关键决策点

  • 选择坐标系:根据应用选择合适的坐标系
  • 理解投影:理解透视投影的步骤和原理
  • 处理畸变:区分镜头畸变和透视畸变,选择合适的校正方法
  • 相机标定:根据精度要求选择合适的标定方法
  • 利用消失点:利用消失点和消失线进行3D重建和几何推理

📚 延伸阅读

推荐资源

  1. Szeliski’s Book: Computer Vision: Algorithms and Applications, Chapter 2.1.5, 2.1.6, 6.3

    • 详细的3D点几何和相机投影理论
  2. 相机标定

    • OpenCV文档:Camera Calibration
    • MATLAB:Camera Calibrator App
    • Jean-Yves Bouguet的MATLAB代码
    • Zhengyou Zhang的方法
  3. 实践项目

    • 实现透视投影
    • 实现相机标定(使用OpenCV)
    • 检测消失点和消失线
    • 校正镜头畸变

本文基于PPT内容整理,适合初学者理解3D点几何和相机投影的基本概念和应用。如需深入了解数学原理和公式推导,请参考相关研究资料。

您可能感兴趣的与本文相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

roman_日积跬步-终至千里

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

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

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

打赏作者

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

抵扣说明:

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

余额充值