三维重建基础理论篇:SFM&MVS
1.概述
三维重建目前已在游戏、电影、测绘、定位、导航、自动驾驶、VR/AR、工业制造、数字人和元宇宙等许多行业得到广泛应用,不论是计算机视觉还是设计领域,这一研究方向都在受到越来越多的关注。
本篇的主要内容是对三维重建进行分类,并简单介绍SFM (Structure from Motion )运动恢复结构和MVS(Multiple View Stereo)多视图立体视觉三维重建。
2.三维重建技术分类
2.1 基于RGB-D深度传感器三维重建
一条技术路线是通过RGB-D深度传感器来快速完成位置点的获取。如今三维采集技术发展十分迅速,这种技术变得越来越便宜和可靠,如激光扫描仪、Kinect深度摄像机等。
目前这些传感器已广泛用于实时任务,以获得对周围环境的粗略估计,例如在同时定位和映射(SLAM)系统中。然而,由于设备的硬件和功率限制,深度传感器捕获的深度图通常是稀疏的,因此放弃了精细的细节以换取计算效率。
此类主要分为基于静态场景和基于动态场景的三维重建,且已有大量实现方法,在本篇文章中就不做详细介绍,有兴趣的读者可以关注后续的文章。
2.2 基于视图图像的三维重建
另一条技术路线则是从一系列图像重建与生成三维造型。在这种情况下,需要通过匹配二维图像来计算深度值,完成整个重建。如果捕获图像比通过深度传感器获取深度图更经济且更可用,那么基于图像的三维重建与生成对于非实时的任务来说是更好选择。
除此之外,图像实际上包含深度传感器无法捕捉的信息,例如纹理和照明,这些对于重建和生成更精细和详细的三维造型至关重要。
分类如下,其中就包括今天要介绍的SFM和MVS:
3.理论基础SFM & MVS
在离线的单目视觉中,SFM和MVS至关重要,前者主要是为了获取相机参数及三维稀疏点,而后者则是为了得到深度图来完成稠密点的重建。
3.1 SFM ( Structure from Motion )
SFM运动恢复结构。运动,就是指在多个视角下的图片,这多个视角是存在运动变换关系的,也就是需要得到对应摄像机的参数;结构,就是指场景的三维结构信息,具体就是三维场景中每个点的三维坐标(x,y,z深度)。
-相机参数:
(1 内参数:垂直和水平焦距(fx、fy)、主点(cx、cy)和倾斜 s;
(2 外参数:旋转矩阵R-3和平移向量T-3
-SFM重建步骤:
(输入:一组视图 输出:相机参数和三维稀疏点)
1、提取图像的特征点(提取关键点,计算描述子)
2、两两图像对特征匹配(无法用极线约束,匹配比较盲目,误匹配点较多,所以这种方法点云较为稀疏)
3、获得两两之间相机空间姿态变换(为后面MVS图像矫正提供相机参数)
4、bundle Adjustment调整优化,并根据匹配的特征点进行稀疏重建
-SFM又分为增量(SfM)和全局(SfM):
增量SfM可以局部解决优化问题,并将新的摄像机合并到已知轨迹中。因此,增量方法速度较慢,但更健壮和准确;全局SfM具有更强的可伸缩性,通常可以聚合到一个非常好的解决方案,但更容易受到异常值的影响。
3.2 MVS ( Multiple View Stereo) 运动恢复结构
MVS多视角立体视觉,是对立体视觉的推广,能够在多个视角(由外向内)观察和获取景物的图像,并以此完成匹配和深度估计。
前一部分SFM得到了稀疏点云,同时也得到了相机内参外参,传递给MVS,就可以根据极线约束进行稠密重建。
-MVS重建步骤:
(输入:一组视图和相机参数 输出:主视图的深度图)
1、将一组视图以及相机参数作为输入
2、根据相机参数对任意两两图像所有像素点对进行立体矫正
3、提取图像的特征点(提取关键点,计算描述子)
4、立体匹配计算Cost Volume(对齐后的图片利用极线约束匹配特征点)
5、代价体Cost Volume正则化(处理视线遮挡、噪声等问题)
6、极线约束为每一个像素找到对应点,根据对应点计算得到深度图
7、根据深度图生成稠密点云
-代价体Cost Volume解释
MVS中关键的Cost Volume,即pixel-wise matching cost。参照图中的流程很快就可以明白其含义。
Reference image中的一个pixel(记作x),在其拍摄方向给定的深度d对应着一个三维点X,那么投影到matching image会打在某个pixel(x_i)的位置,x与x_i的匹配代价或者相似程度,就是cost volume记录的内容。
对于已知相对位姿两帧图像,reference image中的一个pixel只可能对应于matching image中极线上的pixel。在拍摄方向上取不同深度的点分别对应于不同pixel。每个pixel根据其邻域信息计算matching cost,也就是它与reference image中那个pixel的匹配程度。
每个pixel可以用一个vector来记录不同深度上的matching cost。所有的pixel就构成了一个tensor,也就是所谓的cost volume
4.MVS数据集
由于SFM的相机参数计算依然是个求解过程,其结果必然与实际相机参数存在一定的误差,所以目前已有部分包含相机参数的数据集供MVS直接使用,跳过SFM这一步,包括DTU、Tanks and Temples、ETH3D和BlendedMVS四个数据集,有兴趣的读者可以自行查阅并下载这些数据集~
1.DTU数据集是在实验室条件下收集的室内MVS数据集,具有精确的相机轨迹。它包含128次扫描,在7种不同的照明条件下有49个视图,分为79次训练扫描、18次验证扫描和22次评估扫描。通过将每个图像设置为参考,总共有27097个训练样本。DTU数据集提供groundtruth真实点云。
2.TanksandTemples数据集与DTU不同,主要采集的是室外场景。该数据集主要用于验证网络的泛化能力,验证其是否对光照变化大、存在动态目标的场景仍具备较为精确地重建能力。
3.ETH3D是SLAM和立体声任务的综合基准,它包含25个高分辨率场景和10个低分辨率场景。对于MVS,ETH3D被广泛认为是最困难的立体视图任务,因为其包含许多低纹理区域,如白墙和反光地板。在这种情况下,基于广播有效深度值的传统MVS方法表现更好。
4.BlendedMVS数据集是最近发布的用于MVS训练的大规模合成数据集,包含各种场景,如城市、雕塑和鞋子。该数据集由超过17k张用重建模型渲染的高分辨率图像组成,分为106个训练场景和7个验证场景。由于混合MVS是通过虚拟摄像机获得的,因此其提供的摄像机校准对于MVS训练来说足够可靠。
以上就是今天的分享内容啦,感谢观看~ 作者:波波文
微信扫码关注该文公众号作者