PointMVS区别于先前利用cost volum来进行多视角处理的方法,直接基于点云的方式对场景进行处理。从过由粗到细的迭代优化过程,充分结合了几何先验信息和2D纹理信息来来增强点云特征,并利用图网络的来对深度的残差进行有效估计。这种由粗到精的迭代结构获得非常好的重建精度。
1.PointMVS
基于深度学习的现有三维重建方法大多都是基于3D CNN来进行深度图或者体素的预测。但这种方法对于内存的消耗达到了分辨率的三次方量级,使得生成结果的分辨率受到了很大的限制。而点云是一种十分高效高精度的三维表示方法。
在PointMVS中研究人员提出了直接利用点云表示来对目标场景进行处理。整个模型遵循着由粗到精的思想,并可通过迭代的方式不断提升结果的精度。
模型从整体上分为两个主要部分:初始深度估计和深度优化迭代两个部分。
1.1初始深度估计
深度粗估计部分参考了MVSNet的方法,利用多尺度3D-CNN构建了较小的代价空间,从而进行深度粗估计。
多视角图像输出利用简化的MVSNet构建出代价空间,随后输出较为粗糙的深度估计结果。值得注意的是在MVSNet的原始结构中,其特征图尺寸为原图的1/4x1/4,而在PointNet中则使用了1/8x1/8大小的特征图;其次原始MVSNet中的虚拟深度平面为256个,而在PointNet中为了提高效率粗估计阶段只保留了48/96个深度层。这意味着PointNet在初始深度估计阶段的计算量为MVSNet的1/2x1/2x1/5~1/2x1/2x2/5,大约提速10到20倍。
1.2图像特征增强点云
在获得初始深度图的基础上,就可以利用相机参数将初始深度图反投影得到点云,而后从输入多视角图像中抽取特征来增强点云。基于增强后的点云和本文提出的PointFlow方法最终估计出初始深度于基准深度间的残差结果。
受到图像特征可以增强稠密像素匹配的启发,研究人员构建了多尺度的3层金字塔结构从输入图像帧中提取出特征金字塔。每一层金字塔由2D卷积构成,同时下采样步长为2,针对所有输入图像共享同一个特征金字塔。针对每一帧图像 I i I_i Ii,经过特征金字塔作用后得到的特征为:
F i = [ F i 1 , F i 2 , F i 3 ] F_i = [F^1_i,F^2_i,F^3_i] Fi=[Fi1,Fi2,Fi3]
PointMVS中使用的点云特征来自于多视角图像特征的方差和世界坐标系中的归一化三维坐标 X p X_p Xp。其中针对每一个三维点其对应的图像特征,可以在给定相机参数的情况下,通过可查分的反投影方式从多视角特征图中获取。针对不同尺度的金字塔,相机参数可以通过缩放变换来应用于对应尺度的特征图。研究人员将构建基于方差的损失度量(可以理解为不同视角下特征的差异)来将任意视角下的特征进行聚合。
C j = ∑ i = 1 N ( F i j − F j ˉ ) N , ( j = 1 , 2 , 3 ) C^j = \frac{\sum_{i=1}^{N}(F_i^j-\bar{F^j})}{N},(j=1,2,3) Cj=N∑i=1N(F