多视图几何总结——摄像机模型

本文对多视图几何中的摄像机模型进行总结,涵盖有限摄像机和仿射无限摄像机。有限摄像机近似针孔模型,介绍了其矩阵推导与计算方法,包括最小配置解、超定解和几何误差求解。仿射无限摄像机中心在无穷远平面,在电影拍摄有应用,SLAM中暂未关注。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多视图几何总结——摄像机模型

摄像机模型相对来说比较基础,针孔模型对于搞CV或者SLAM的人来说,是入门必须掌握的知识点,这里为了保证总结的完整性,同时也让自己再巩固下,抽了点时间进行一个简单的总结。
多视图几何中对于相机模型的介绍主要分为有限摄像机无限摄像机有限摄像机就近似于我们非常熟悉的针孔模型,而无限摄像机书中主要介绍的是仿射摄像机,下面分别总结分析下:

有限摄像机矩阵——推导

先上图
在这里插入图片描述
如上左图所示,我们需要将一个空间点 X X X映射到一个图像点 x x x上即
在这里插入图片描述根据右上图我们很容易推到处下面的变换:
在这里插入图片描述这个结论是将图像平面的原点设立在主轴与图像平面的交点上,而实际上我们默认的图像坐标系应该是位于图像的左上角,向下为x轴向右为y轴,因此我们这里进行一个坐标系调整(可以理解为在齐次坐标下对点进行一个平移):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述则上面的矩阵可以改写为
在这里插入图片描述
这里的 K K K就是内参,而 X c a m X_{cam} Xcam指的是相机坐标系下的空间坐标,现在我们将其转到世界坐标系下
在这里插入图片描述其中 C ~ \widetilde{\mathrm{C}} C 为摄像机中心在世界坐标系下的坐标,结合上面的内参我们可以将针孔模型的最终结论写成如下形式:
在这里插入图片描述而我们所谓的摄像机矩阵就是
在这里插入图片描述为了增加一般性,将 K K K变为
在这里插入图片描述其中 s s s为扭曲参数,这个参数的意义可以解释为像素元素产生的扭曲似的x轴和y周不垂直,在现实生活中,这个参数不为零的情况一般出现在对一张照片再次重拍的情况,所以参数 s s s一般是为零的。那为什么要这么做呢?因为这样我们可以将 K K K看做是一个上三角矩阵,如果我们已经事先得到了相机矩阵 P P P,我们可以很轻易地通过QR分解的分解的方法获得 K K K R R R,从而确定相机的内参和相机的相对于全局坐标系的方向,在相机标定中就是这么做的。
顺便提一句,上面这种情况下,相机矩阵一共11个自由度,秩为3.


有限摄像机矩阵——计算

有限摄像机矩阵计算的过程其实就是相机的标定过程,我们给定的数据是一组空间中的3D点 X i X_i Xi和对应的2D图像点 x i x_i xi,求解一个3×4的矩阵 P P P满足 x i = P X i x_i=PX_i xi=PXi,这和计算单应矩阵、基础矩阵的方法几乎是一致的,可以参考多视图几何总结——基础矩阵、本质矩阵和单应矩阵的求解过程,这里简单分几种情况讨论下:

(1)最小配置解

上一节的文末提到了 P P P矩阵的自由度是11,而我们一对点(指一个3D空间点和一个2D图像点)能构成两个约束,因此最小配置解需要的点的对数是6,但是最后一对点我们只需要知道x或者y方向的数据即可,最后构成一个 A p = 0 Ap=0 Ap=0的方程,存在一维零空间,求解即可

(2)超定解(DLT)

在满足某个归一化的约束下,求 ∣ ∣ A p ∣ ∣ ||Ap|| Ap的最小值(为什么是这样可以参考刚刚提到的博客里面单应矩阵的求解方法,这里有一点不同的是,这里需要对3D空间点进行归一化,平移到原点后缩放使它们到原点的均方根距离是 3 \sqrt{3} 3 ,而不是 2 \sqrt{2} 2

(3)几何误差

其实就是根据几何意义建立一个优化目标,通过非线性优化的方法进行迭代优化,如下式:
在这里插入图片描述,这是以图像上的误差作为优化目标,当然我们也可以用空间点的误差作为优化目标,或者是两个误差一起优化,只是优化目标函数不同而已,这里可以将DLT或者最小配置解的结果作为迭代最小化的初始值,从书上的结果大概可以知道,非线性优化的方法会更加准确,但是肯定也会更加耗时。

上面提到的几种方法是不考虑约束的 ( s = 0 , α 1 = α 2 ) (s=0, \alpha_1=\alpha_2) (s=0,α1=α2),上面的方法其实也是可以在带约束下进行求解的,简单地说就是在几何误差的方法中我将约束确定下来只优化剩下了没确定的六个参数,在DLT方法中就是进行一个矩阵映射,然后最小化映射后的结果。求出来矩阵 P P P之后进行QR分解就可以获得 K K K R R R

这里在实际的算法操作中(例如张正友标定法)是不是一致的我还没有来得及去确认…之后有时间再补上。


仿射无限摄像机

仿射无限摄像机可以将其理解为其摄像机中心在无穷远平面,而仿射性质体现在将无穷远点映射为无穷远点,怎么理解呢?可以参考下这篇知乎如何理解无穷远摄像机模型?,对比下面两张图片就明白了
在这里插入图片描述

在这里插入图片描述
第一张图是有限摄像机拍出来的结果,第二张图就是仿射无限摄像机拍出来的图,可以发现在现实生活中平行的线(楼角)在这张图片中也是平行的,这就是所谓的将无穷远点映射为无穷远点,用过Solidworks的同学应该记得咱们画图的时候就是用的这种视角,我对于这个理解就这么深了,这种相机矩阵在电影拍摄的场景中有所应用,在SLAM里面好像还没有注意到相关的应用,因此不再深究

ok,有问题欢迎交流~

此外,对SLAM算法感兴趣的同学可以看考我的博客SLAM算法总结——经典SLAM算法框架总结

### 多视图几何(MVS)的实现原理与算法 多视角立体视觉(Multi-View Stereo, MVS)是一种通过多个摄像机拍摄同一场景的不同角度图像,从而恢复该场景三维结构的技术。其核心目标是从二维图像中提取深度信息并构建三维模型。 #### 1. 可见性建模 在MVS中,可见性问题是关键之一。由于物体可能被其他部分遮挡,在不同视角下的可见性会有所不同。为了应对这一挑战,通常采用以下几种方法: - **几何法**:这种方法尝试精确模拟成像过程以及场景的真实形状,以此判断哪些场景元素在特定图像中是可见的[^1]。 - **准几何法**:这类技术利用简化版的几何推理来估算可见性关系,虽然精度稍逊于纯几何法,但在计算效率上更具优势。 - **出格点法**:此方法不依赖复杂的几何推导,而是把遮挡现象当作异常数据处理,即所谓的“出格点”,并通过统计学手段排除这些干扰项。 #### 2. 图片匹配与一致性度量 一旦解决了可见性问题,下一步就是进行图片间的特征匹配。这一步骤旨在找到跨视角间对应像素的位置,并衡量它们之间的相似程度。常用的一致性度量指标有如下几类: - 基于颜色或纹理的信息对比; - 利用梯度或其他边缘检测器捕捉局部特性差异; - 结合全局约束条件优化初始配对结果。 #### 3. 深度图生成 完成上述两步之后,就可以生成每张输入图像对应的深度图了。具体做法可以概括为以下几个方面: - 对候选位置执行代价聚合操作,综合考虑邻域内的投票情况得出最终决策; - 应用亚像素插值提升分辨率效果; - 使用正则化策略平滑噪声影响同时保留重要边界细节。 #### 4. 表面重建 最后阶段的任务是对所有获取到的深度测量值加以整合,形成完整的表面表示形式——通常是三角网格或者点云集合。现代框架如Cascade-MVSNet提供了端到端解决方案,能够有效降低内存消耗并加速训练收敛速度[^2]。 ```python import torch from cascade_mvsnet import CascadeMVSNet model = CascadeMVSNet() images = [...] # List of input images from different views depths = model(images) for i, depth in enumerate(depths): print(f"Depth map {i}:") print(depth) ``` 以上代码片段展示了如何加载预定义好的神经网络架构实例`CascadeMVSNet`来进行批量预测工作流程的一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值