文章目录
- 📚 学习路线图
- 本文内容一览(快速理解)
- 一、坐标系的故事(A Tale of Two Coordinate Systems):理解世界坐标和相机坐标
- 二、透视投影(Perspective Projection):从3D世界到2D图像的映射
- 三、相机内参(Intrinsic Camera Parameters):焦距、主点和像素尺寸
- 四、镜头畸变(Lens Distortion):径向畸变的校正
- 五、透视畸变(Perspective Distortion / Film Distortion):透视投影产生的视觉变形
- 六、正交投影(Orthographic Projection):平行投影的特殊情况
- 七、相机标定(Camera Calibration):估计相机参数
- 八、消失点和消失线(Vanishing Points & Lines):透视投影的几何特性
- 📝 本章总结
- 📚 延伸阅读
📌 适合对象:计算机视觉初学者、图像处理入门者
⏱️ 预计阅读时间:50-60分钟
🎯 学习目标:理解3D点如何映射到2D图像,掌握相机投影、内参、畸变和标定的基本概念
📚 学习路线图
本文内容一览(快速理解)
- 坐标系(Coordinate Systems):世界坐标系和相机坐标系,描述3D点的位置
- 透视投影(Perspective Projection):将3D点映射到2D图像平面的方法
- 相机内参(Intrinsic Parameters):焦距、主点、像素尺寸等相机内部参数
- 镜头畸变(Lens Distortion):径向畸变,导致图像边缘变形
- 透视畸变(Perspective Distortion):由于透视投影产生的视觉变形
- 正交投影(Orthographic Projection):平行投影,特殊情况的透视投影
- 相机标定(Camera Calibration):估计相机参数的过程
- 消失点和消失线(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)
图解说明:
💡 说明:3D点首先在世界坐标系中表示,然后通过旋转和平移转换到相机坐标系,最后通过透视投影映射到图像坐标。
类比理解:
想象你在拍照:
- 世界坐标系:就像地图上的坐标,告诉你物体在地球上的位置(如"北京天安门")
- 相机坐标系:就像你站在相机位置,描述物体相对于你的位置(如"前方10米,右侧5米")
- 图像坐标:就像照片上的像素位置(如"第100行,第200列")
实际例子:
坐标系的应用:
- 世界坐标系:用于描述场景中所有物体的位置
- 相机坐标系:用于描述物体相对于相机的位置,便于投影计算
- 图像坐标:用于在图像中定位像素
单位转换:
- 世界坐标:单位是米(meters)或其他物理单位
- 图像坐标:单位是像素(pixels)
- 需要通过相机参数进行单位转换
1.2 相机的本质(What a Camera Measures):相机测量角度而不是距离
概念的本质:
相机不测量距离,而是测量角度。相机是一个"bearing sensor"(方位传感器),它测量的是从相机光心到物体的方向角度,而不是距离。
图解说明:
💡 说明:所有沿着同一条射线(从相机光心出发)的点都会投影到图像平面上的同一个点。这就是为什么相机不能直接测量距离的原因。
类比理解:
想象你在看星星:
- 相机就像眼睛:眼睛只能看到星星的方向(角度),不能直接知道星星离你有多远
- 相同方向的不同距离:距离你1米和距离你1000米的物体,如果在同一方向上,会投影到图像上的同一点
- 这就是为什么需要立体视觉:用两个相机(或移动相机)才能测量距离
实际例子:
相机的限制:
- 单目相机无法直接测量距离
- 需要额外的信息(如已知物体大小、立体视觉等)才能估计距离
图像平面的位置:
- 为了方便,图像平面通常表示在相机前方
- 这样图像保持相同的方向(不翻转)
- 图像平面在相机坐标系中的位置:Z = f(焦距)
实际应用:
- 单目SLAM:通过运动估计深度
- 立体视觉:用两个相机测量距离
- 结构光:用投影仪辅助测量距离
二、透视投影(Perspective Projection):从3D世界到2D图像的映射
这一章要建立的基础:理解透视投影如何将3D点映射到2D图像平面
核心问题:如何将世界坐标系中的3D点映射到图像中的像素坐标?
[!NOTE]
📝 关键点总结:透视投影分为三个步骤:1) 将世界坐标转换为相机坐标(通过旋转和平移),2) 将相机坐标投影到图像平面坐标,3) 将图像平面坐标转换为像素坐标。
2.1 透视投影的步骤(Perspective Projection Steps):从世界坐标到像素坐标
概念的本质:
透视投影将3D点映射到2D图像需要三个步骤:
- 世界坐标 → 相机坐标:通过旋转矩阵R和平移向量T
- 相机坐标 → 图像平面坐标:通过相似三角形原理
- 图像平面坐标 → 像素坐标:考虑主点偏移和像素尺寸
图解说明:
💡 说明:
- 步骤0:外参(Extrinsic Parameters),描述相机在世界坐标系中的位置和方向
- 步骤1:使用相似三角形原理,将3D点投影到2D图像平面
- 步骤2:内参(Intrinsic Parameters),将图像平面坐标转换为像素坐标
类比理解:
想象你在用相机拍照:
- 步骤0:就像你站在某个位置,面向某个方向(相机的位置和方向)
- 步骤1:就像光线从物体通过镜头投射到胶片上(投影到图像平面)
- 步骤2:就像将胶片上的位置转换为数字照片的像素位置(转换为像素坐标)
实际例子:
透视投影的应用:
- 计算机图形学:渲染3D场景到2D屏幕
- 计算机视觉:理解图像中的3D结构
- 机器人导航:从图像估计物体位置
- AR/VR:将虚拟物体投影到真实场景
投影的特点:
- 近大远小:距离相机近的物体看起来更大
- 平行线汇聚:平行线在透视投影下会汇聚到消失点
- 深度信息丢失:单张图像无法直接恢复深度
2.2 相似三角形原理(Similar Triangles):理解投影的数学基础
概念的本质:
透视投影基于相似三角形原理。如果两个三角形相似,它们的对应边成比例。在相机投影中,从相机光心到3D点的射线与图像平面相交,形成相似三角形。
图解说明:
💡 说明:
- 从相机光心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的映射变成线性映射。这样可以用矩阵乘法表示投影,简化计算。
图解说明:
💡 说明:
- 齐次坐标允许用矩阵乘法表示投影
- 投影矩阵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)
图解说明:
💡 说明:
- 外参: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):焦距越长,视野越小(像望远镜);焦距越短,视野越大(像广角镜头)。
图解说明:
💡 说明:
- 短焦距:视野大,适合拍摄风景、建筑
- 长焦距:视野小,适合拍摄远处的物体(如体育比赛、野生动物)
- 焦距可以理解为"缩放":长焦距相当于放大,短焦距相当于缩小
类比理解:
想象你在用望远镜和广角镜:
- 短焦距(广角):就像用广角镜,可以看到很大的范围,但物体看起来很小
- 长焦距(长焦):就像用望远镜,只能看到很小的范围,但物体看起来很大
- 焦距就是"放大倍数":焦距越长,放大倍数越大
实际例子:
焦距的典型值:
- 广角镜头:14-24mm(视野大,适合风景)
- 标准镜头:50mm(接近人眼视野)
- 长焦镜头:200-800mm(视野小,适合远距离拍摄)
焦距与视野的关系:
- 焦距越长,视野越小
- 焦距越短,视野越大
- 视野角度 = 2·arctan(传感器尺寸/(2·f))
实际应用:
- 选择合适的焦距拍摄不同场景
- 通过改变焦距实现"变焦"效果
- 在计算机视觉中,焦距是重要的内参
3.2 主点偏移(Principal Point Offset):图像中心的偏移
概念的本质:
主点(Principal Point)是相机光轴与图像平面的交点,理论上应该在图像中心。但在实际中,由于制造误差或图像裁剪,主点可能不在图像中心,这就是主点偏移。
图解说明:
💡 说明:
- 主点:相机光轴与图像平面的交点,用(u0, v0)表示
- 主点偏移:主点不在图像中心,通常由于制造误差或图像裁剪
- 影响:主点偏移会影响投影计算,需要在标定时估计
类比理解:
想象你在用相机拍照:
- 主点:就像相机"瞄准"的中心点
- 主点偏移:就像相机没有对准中心,稍微偏了一点
- 图像裁剪:就像你只保存了照片的一部分,中心点就偏移了
实际例子:
主点偏移的原因:
- 制造误差:镜头和传感器没有完全对齐
- 图像裁剪:只保存了图像的一部分(如从网络下载的图片)
- 传感器偏移:传感器位置不准确
主点偏移的影响:
- 影响投影计算的准确性
- 需要在相机标定时估计和校正
- 对于高精度应用很重要
实际应用:
- 相机标定:估计主点位置
- 图像校正:校正主点偏移
- 高精度测量:考虑主点偏移的影响
四、镜头畸变(Lens Distortion):径向畸变的校正
这一章要建立的基础:理解镜头畸变的类型和原因
核心问题:什么是镜头畸变?如何校正镜头畸变?
[!NOTE]
📝 关键点总结:镜头畸变主要是径向畸变,由不完美的镜头引起。有两种类型:桶形畸变(Barrel Distortion)和枕形畸变(Pincushion Distortion)。畸变在图像边缘最明显。
4.1 径向畸变(Radial Distortion):由不完美镜头引起的变形
概念的本质:
径向畸变(Radial Distortion)是由于镜头不完美引起的图像变形。光线通过镜头边缘时,偏离理想路径,导致图像边缘的直线变成曲线。有两种类型:桶形畸变(Barrel)和枕形畸变(Pincushion)。
图解说明:
💡 说明:
- 桶形畸变:图像边缘向内弯曲,像桶的形状,常见于广角镜头
- 枕形畸变:图像边缘向外弯曲,像枕头的形状,常见于长焦镜头
- 畸变在边缘最明显:通过镜头边缘的光线偏离最大
类比理解:
想象你在通过一个不完美的玻璃看物体:
- 理想镜头:就像完美的玻璃,直线保持直线
- 桶形畸变:就像凸透镜,边缘向内弯曲
- 枕形畸变:就像凹透镜,边缘向外弯曲
- 边缘最明显:就像玻璃边缘的变形最明显
实际例子:
畸变的类型:
- 桶形畸变(Barrel):边缘向内弯曲,常见于广角镜头
- 枕形畸变(Pincushion):边缘向外弯曲,常见于长焦镜头
- 鱼眼镜头:极端情况,整个图像都变形
畸变的原因:
- 镜头不完美:制造误差
- 光线通过边缘:偏离理想路径
- 短焦距和长焦距:更容易产生畸变
畸变的影响:
- 影响图像质量:直线变成曲线
- 影响测量精度:距离和角度不准确
- 需要校正:通过标定和校正算法
4.2 畸变校正(Distortion Correction):校正径向畸变
概念的本质:
畸变校正(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)不是由镜头缺陷引起的,而是由透视投影本身产生的视觉变形。这是透视投影的固有特性,不是错误。例如:球体投影成椭圆,平行线汇聚到消失点,近大远小等。
图解说明:
💡 说明:
- 透视畸变不是错误:这是透视投影的固有特性
- 球体投影成椭圆:球体在透视投影下看起来像椭圆
- 平行线汇聚:平行线在透视投影下会汇聚到消失点
- 近大远小:距离相机近的物体看起来更大
类比理解:
想象你在看一幅画:
- 透视畸变:就像画中的透视效果,不是错误,而是艺术表现
- 球体变椭圆:就像从侧面看球,看起来像椭圆
- 平行线汇聚:就像看铁路轨道,在远处汇聚
- 近大远小:就像看建筑物,近处看起来大,远处看起来小
实际例子:
透视畸变的例子:
- 球体投影:球体在透视投影下看起来像椭圆
- 建筑物:垂直的柱子看起来倾斜(汇聚)
- 人物:距离相机近的人看起来更大
- 道路:平行的道路在远处汇聚
透视畸变的应用:
- 建筑摄影:需要校正透视畸变(使用移轴镜头)
- 艺术创作:利用透视畸变创造视觉效果
- 计算机视觉:理解透视畸变有助于3D重建
透视畸变 vs 镜头畸变:
- 透视畸变:透视投影的固有特性,不是错误
- 镜头畸变:镜头缺陷引起的,需要校正
5.2 建筑摄影中的透视畸变(Perspective Distortion in Architectural Photography):汇聚垂直线
概念的本质:
在建筑摄影中,当相机向上倾斜拍摄建筑物时,垂直的柱子会看起来倾斜并汇聚。这不是镜头缺陷,而是透视投影的结果。解决方法包括:保持相机水平、使用移轴镜头(Tilt-Shift Lens)、后期校正。
图解说明:
💡 说明:
- 问题:相机向上倾斜时,垂直的柱子看起来倾斜并汇聚
- 原因:透视投影的固有特性,不是镜头缺陷
- 解决方法1:保持相机水平,但只能拍到建筑物的底部
- 解决方法2:使用移轴镜头,将镜头向上移动,保持相机水平
- 解决方法3:后期校正,通过图像处理校正透视畸变
类比理解:
想象你在拍摄一座高楼:
- 普通镜头:就像你抬头看,柱子看起来倾斜
- 移轴镜头:就像你可以移动"眼睛"的位置,保持水平看,但"眼睛"向上移动
- 后期校正:就像用软件将倾斜的柱子拉直
实际例子:
建筑摄影的挑战:
- 问题:需要拍摄整个建筑物,但相机向上倾斜会导致柱子汇聚
- 限制:保持相机水平只能拍到建筑物的底部
- 解决:使用移轴镜头或后期校正
移轴镜头(Tilt-Shift Lens):
- 可以移动镜头相对于传感器的位置
- 保持相机水平,但镜头向上移动
- 可以拍摄整个建筑物,柱子保持垂直
后期校正:
- 使用图像处理软件校正透视畸变
- 将倾斜的柱子拉直
- 但会损失一些图像质量
实际应用:
- 建筑摄影:拍摄建筑物
- 产品摄影:拍摄产品
- 艺术创作:创造特殊效果(如微缩模型效果)
5.3 其他相机模型(Other Camera Models):鱼眼、全景、生物眼睛
概念的本质:
除了标准透视投影相机,还有其他相机模型:鱼眼镜头(Fisheye)、全景相机(Panorama)、移轴镜头(Tilt-Shift)、生物眼睛(Biological Eyes)等。每种模型有不同的投影特性和应用场景。
图解说明:
💡 说明:
- 标准透视:最常见的相机模型,适合大多数应用
- 鱼眼镜头:极端广角,视野可达180度或更大
- 全景相机:可以拍摄360度全景
- 移轴镜头:可以校正透视畸变
- 生物眼睛:研究生物视觉系统
类比理解:
想象不同类型的"眼睛":
- 标准透视:就像人眼,视野正常
- 鱼眼镜头:就像鱼眼,可以看到很大的范围
- 全景相机:就像可以360度看的眼睛
- 移轴镜头:就像可以移动的眼睛
实际例子:
不同相机模型的应用:
- 标准透视:大多数应用,如摄影、计算机视觉
- 鱼眼镜头:监控、虚拟现实、特殊效果
- 全景相机:虚拟旅游、360度视频
- 移轴镜头:建筑摄影、产品摄影
- 生物眼睛:研究生物视觉、仿生机器人
选择相机模型:
- 根据应用场景选择合适的模型
- 考虑视野、畸变、成本等因素
- 不同模型有不同的投影公式
六、正交投影(Orthographic Projection):平行投影的特殊情况
这一章要建立的基础:理解正交投影与透视投影的区别
核心问题:什么是正交投影?正交投影与透视投影有什么不同?
[!NOTE]
📝 关键点总结:正交投影是透视投影的特殊情况,当相机光心到图像平面的距离为无穷远时,投影变成平行投影。正交投影没有透视效果(没有近大远小),适合远距离物体或长焦镜头。
6.1 正交投影的定义(What is Orthographic Projection):平行投影
概念的本质:
正交投影(Orthographic Projection)是透视投影的特殊情况。当相机光心到图像平面的距离为无穷远时,投影变成平行投影(Parallel Projection)。在正交投影中,投影线是平行的,没有透视效果(没有近大远小)。
图解说明:
💡 说明:
- 正交投影:投影线平行,没有汇聚点
- 投影公式:(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:直接求解投影矩阵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。使用线性最小二乘法求解,非常简单,但有一些缺点。
图解说明:
💡 说明:
- 方法:建立线性方程组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 = Σ ||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)。
图解说明:
💡 说明:
- 只需要平面:不需要知道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平面(或半平面)
- 特殊情况:通过相机光心的直线投影为点,通过相机光心的平面投影为线
图解说明:
💡 说明:
- 保持共线性:共线的3D点投影后仍然共线
- 保持共面性:共面的3D点投影后仍然共面
- 特殊情况:通过相机光心的几何元素投影会退化
类比理解:
想象你在用相机拍照:
- 点 → 点:就像3D空间中的点投影到照片上的点
- 线 → 线:就像3D空间中的直线投影到照片上的直线
- 平面 → 平面:就像3D空间中的平面投影到照片上的区域
- 特殊情况:就像你正对着一条线看,它看起来像一个点
实际例子:
投影特性的应用:
- 3D重建:从2D图像恢复3D结构
- 几何推理:利用投影特性进行几何推理
- 计算机图形学:渲染3D场景到2D屏幕
投影特性的重要性:
- 理解透视投影的几何特性
- 用于3D重建和几何推理
- 解释消失点和消失线的形成
8.2 消失点(Vanishing Points):平行线的汇聚点
概念的本质:
消失点(Vanishing Point)是平行线在透视投影下的汇聚点。在透视投影中,平行线会汇聚到消失点。每个方向在空间中都有自己的消失点。但平行于图像平面的平行线保持平行(不汇聚)。
图解说明:
💡 说明:
- 平行线汇聚:在透视投影中,平行线会汇聚到消失点
- 每个方向一个消失点:空间中每个方向都有自己的消失点
- 特殊情况:平行于图像平面的平行线保持平行,不汇聚
类比理解:
想象你在看铁路轨道:
- 平行线汇聚:就像铁路轨道在远处汇聚到一个点
- 消失点:就像轨道汇聚的那个点
- 不同方向:就像不同方向的轨道汇聚到不同的消失点
- 水平轨道:就像水平的轨道保持平行,不汇聚
实际例子:
消失点的例子:
- 铁路轨道:平行的轨道在远处汇聚
- 建筑物:垂直的柱子向上汇聚
- 道路:平行的道路在远处汇聚
- 三点透视:三个方向的平行线汇聚到三个消失点
消失点的应用:
- 3D重建:从消失点估计相机姿态
- 图像校正:校正透视畸变
- 艺术创作:创造透视效果
- 建筑摄影:理解透视效果
消失点的计算:
- 检测图像中的平行线
- 计算平行线的交点
- 交点就是消失点
8.3 消失线(Vanishing Lines):地平线
概念的本质:
消失线(Vanishing Line)是多个消失点的集合。对于平面上的所有平行线,它们的消失点都在同一条线上,这条线就是消失线。对于水平面,消失线就是地平线(Horizon Line)。不同平面可以定义不同的消失线。
图解说明:
💡 说明:
- 消失线:平面上所有平行线的消失点的集合
- 地平线:水平面的消失线就是地平线
- 不同平面:不同平面可以定义不同的消失线
类比理解:
想象你在看风景:
- 消失线:就像地平线,所有水平方向的平行线都汇聚到地平线上
- 地平线:就像天与地的交界线
- 不同平面:就像不同倾斜的平面有不同的消失线
实际例子:
消失线的例子:
- 地平线:水平面的消失线
- 建筑物:垂直平面的消失线
- 道路:路面的消失线
消失线的应用:
- 3D重建:从消失线估计平面方向
- 图像理解:理解场景的几何结构
- 艺术创作:创造透视效果
三点透视:
- 三个方向的平行线
- 三个消失点
- 形成三点透视效果
📝 本章总结
核心要点回顾:
-
坐标系:
- 世界坐标系和相机坐标系,描述3D点的位置
- 相机测量角度而不是距离,是一个"bearing sensor"
-
透视投影:
- 将3D点映射到2D图像需要三个步骤:世界坐标→相机坐标→图像平面坐标→像素坐标
- 基于相似三角形原理
- 使用齐次坐标实现线性映射
-
相机内参:
- 焦距:决定视野大小
- 主点:图像中心偏移
- 像素尺寸:像素到物理单位的转换
-
镜头畸变:
- 径向畸变:桶形畸变和枕形畸变
- 由不完美的镜头引起
- 可以通过标定和校正算法校正
-
透视畸变:
- 不是镜头缺陷,而是透视投影的固有特性
- 球体投影成椭圆,平行线汇聚,近大远小
- 建筑摄影中的汇聚垂直线
-
正交投影:
- 透视投影的特殊情况(f → ∞)
- 投影线平行,没有透视效果
- 适合远距离物体或长焦镜头
-
相机标定:
- 估计相机参数(内参和外参)
- 直接线性标定:简单但不精确
- 非线性优化:精确,最小化几何误差
- 多平面标定:使用棋盘格,最常用
-
消失点和消失线:
- 平行线在透视投影下汇聚到消失点
- 每个方向有自己的消失点
- 消失线是多个消失点的集合,地平线是水平面的消失线
知识地图:
关键决策点:
- 选择坐标系:根据应用选择合适的坐标系
- 理解投影:理解透视投影的步骤和原理
- 处理畸变:区分镜头畸变和透视畸变,选择合适的校正方法
- 相机标定:根据精度要求选择合适的标定方法
- 利用消失点:利用消失点和消失线进行3D重建和几何推理
📚 延伸阅读
推荐资源
-
Szeliski’s Book: Computer Vision: Algorithms and Applications, Chapter 2.1.5, 2.1.6, 6.3
- 详细的3D点几何和相机投影理论
-
相机标定:
- OpenCV文档:Camera Calibration
- MATLAB:Camera Calibrator App
- Jean-Yves Bouguet的MATLAB代码
- Zhengyou Zhang的方法
-
实践项目:
- 实现透视投影
- 实现相机标定(使用OpenCV)
- 检测消失点和消失线
- 校正镜头畸变
本文基于PPT内容整理,适合初学者理解3D点几何和相机投影的基本概念和应用。如需深入了解数学原理和公式推导,请参考相关研究资料。
从3D到2D:相机投影全解析
485

被折叠的 条评论
为什么被折叠?



