MVG读书笔记——相机模型

我们平常接触到的世界是3维的,但是计算机视觉的研究中,感知到的信息都是二维的图像。从三维的世界到二维的图像的转换通过相机投影完成。这是3d点到2d点映射的过程。

相机模型

设映射前的点为 X = [ X 1 , X 2 , X 3 ] T X=[X_1,X_2,X_3]^T X=[X1,X2,X3]T,得到的图像中的点的像素坐标为 x = [ x 1 , x 2 ] T x=[x_1,x_2]^T x=[x1,x2]T。则有
x = F ( X ) x=F(X) x=F(X)
F即为相机的成像模型。

常见的相机模型有针孔模型(pinhole camera),全景模型(omnidirectional,即我们一般所说的鱼眼相机)。前者是计算机视觉中应用最广泛的模型,目前的大多数设备可以使用这一模型进行近似,因此这里只介绍针孔相机模型。

针孔相机模型

针孔相机使用小孔成像的原理,模型如图所示。
图中M为世界坐标系一点,R为像面。C为相机光心。成像的过程可以近似的看成从M向C发出一条光线,落在像面的过程。需要注意,这里的像面其实是为了简化模型人为规定的一个平面,通常假设它的到相机的距离为1,称为归一化平面。
针孔相机模型

按照图中的投影过程,为得到世界坐标系一点 X w X_w Xw在图像上的坐标 x x x,我们需要先得到它在相机坐标系中的坐标

X c = R c w ∗ X w + t c w X_c = Rcw * X_w + tcw Xc=RcwXw+tcw

通过简单的相似三角形知识,我们可以得到得到 X c X_c Xc在归一化平面上的坐标

X n = X c / X c ( 2 ) X_n = X_c/X_c^{(2)} Xn=Xc/Xc(2)

为将归一化平面上的坐标转换为像素,我们需要使用相机的内参。

相机内参的形式如下

K = [ f x 0 c x 0 f y c y 0 0 1 ] K = \begin{bmatrix} fx & 0 & cx \\ 0 & fy & cy \\ 0 & 0 & 1 \end{bmatrix} K=fx000fy0cxcy1

其中fx,fy是焦距,表征了物理尺寸到像素距离的映射。在相机坐标系中一般认为光心在原点,而在图像中坐标系原点在左上角,因此在这里需要进行一个变换。我们使用cx,cy表示光心在图像中的偏移。

相机内参一般通过标定获得或者预先从摄像头厂家获得,给定相机内参,我们可以算出 X n X_n Xn对应的图像中的位置 X i m g = K X n X_{img} = KX_n Ximg=KXn,这是一个三维向量,我们通常使用的 x = ( u , v ) = X i m g [ 0 : 2 ] x = (u,v) = X_{img}[0:2] x=(u,v)=Ximg[0:2]

由此我们得到了相机的投影模型。原则上可以将这几步合并起来得到一个表达式,读者可以自行推导。

像差

实际情况中我们使用的并非针孔而是透镜进行投影成像。也由此引入了各种误差。由这些误差在成像上的表现被称为像差,在颜色上的误差成为色差。

常见的像差包括球差、 彗差、 像散、 场曲、 畸变。反应到具体应用中我们一般只关心畸变。下图是常见的畸变形式
在这里插入图片描述

通过对相机进行标定,我们可以有效去除这些畸变。具体的方法这里不再赘述。

有几个人私聊我催更SLAM系列,我本来是想写的,但是看了下得先讲相机模型,再讲对极几何和点的跟踪,然后才能讲SLAM中的前端部分。

<think>嗯,用户想找多视图几何(MVG)相关的数据集下载。首先,我需要回忆一下常见的多视图几何数据集有哪些。多视图几何通常用于三维重建、立体视觉、SLAM等领域,所以相关的数据集应该包含多个视角的图像、相机参数、深度信息或者点云数据。 首先想到的是Middlebury数据集,他们提供了多视图立体匹配的标准数据集,比如2006和2014年的版本,里面应该有多视角图像和真实深度图。然后还有ETH3D,这个也是用于三维重建和立体匹配的高分辨率数据集,适合多视图几何算法测试。 接下来,Euroc MAV数据集,主要用于无人机和SLAM,但里面也有双目相机和IMU数据,可能对多视图几何有用。DTU Robot Dataset应该也不错,特别是用于多视图立体重建,有精确的相机参数和结构化光照扫描的真实数据。 还有TUM的RGB-D SLAM数据集,虽然主要是RGB-D数据,但也适用于多视图研究。KITTI自动驾驶数据集里的立体视觉和视觉里程计部分也可能相关。BlendedMVS和ScanNet这两个大型数据集,前者是合成数据适合训练,后者是真实室内场景的RGB-D数据。 然后,用户可能还需要知道这些数据集的具体内容和下载方式,比如Middlebury和ETH3D的官网,KITTI需要注册,BlendedMVC在GitHub上。要提醒用户注意数据集的许可协议和使用限制,特别是商业用途可能需要授权。 另外,用户提供的引用中有提到多视图几何中的深度融合、三视图稳定性以及物方点与视图的关联,所以推荐的数据集应该包含多视图、深度信息和3D点云,比如Middlebury、DTU和BlendedMVC这些会更符合需求。需要确认每个数据集是否包含相机参数、标定信息,这对多视图几何算法至关重要。 最后,生成相关问题时要考虑用户可能进一步的需求,比如如何处理这些数据集、算法实现、评估指标等。要确保回答结构清晰,分点列出数据集,每个数据集的信息和下载链接,以及注意事项,这样用户能方便地找到所需资源。</think>### 多视图几何(MVG)常用数据集及下载方式 多视图几何研究依赖于包含多视角图像、相机参数及三维真值的数据集。以下是经典和最新的公开数据集推荐: --- #### 1. **Middlebury Multi-View Stereo Dataset** - **内容**: 包含高精度多视角图像、相机标定参数、真实深度图和三维模型,适用于立体匹配与重建算法验证。 - **下载**: [Middlebury官网](https://vision.middlebury.edu/mview/) - **特点**: 提供不同光照和纹理场景,如“Temple”“Dino”等[^2]。 --- #### 2. **ETH3D Dataset** - **内容**: 高分辨率多视图图像、激光扫描点云和相机参数,支持多视图立体匹配和SLAM研究。 - **下载**: [ETH3D官网](https://www.eth3d.net/) - **特点**: 包含室内外场景,提供训练集和测试集[^1]。 --- #### 3. **DTU Robot Image Dataset** - **内容**: 超过100个场景的多视图图像,精确的相机姿态和结构化光照扫描的3D真值。 - **下载**: [DTU数据集页面](http://roboimagedata.compute.dtu.dk/) - **特点**: 适用于大规模三维重建算法评估[^3]。 --- #### 4. **KITTI Vision Benchmark Suite** - **内容**: 自动驾驶场景的双目图像、激光雷达点云和相机标定参数,支持多视图几何与SLAM。 - **下载**: [KITTI官网](http://www.cvlibs.net/datasets/kitti/)(需注册) - **特点**: 真实道路场景,包含动态物体干扰。 --- #### 5. **BlendedMVS Dataset** - **内容**: 大规模合成多视图数据集,覆盖多种物体和场景,包含深度图和3D模型。 - **下载**: [GitHub链接](https://github.com/YoYo000/BlendedMVS) - **特点**: 适合深度学习模型训练[^4]。 --- #### 6. **ScanNet Dataset** - **内容**: 真实室内场景的RGB-D视频序列,提供相机轨迹、3D网格和语义标注。 - **下载**: [ScanNet官网](https://www.scan-net.org/) - **特点**: 支持多模态研究(几何+语义)。 --- #### 注意事项 - **数据协议**: 部分数据集(如KITTI)需遵守非商业或学术使用协议。 - **预处理**: 下载后需检查相机参数对齐性(如焦距、畸变系数)[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值