三维重建 SFM 与MVS

Structure from Motion(SFM)
Multi View Stereo(MVS)

使用开源工具pipeline:
Bundler(SFM) -> CMVS(MVS) -> PMVS2(MVS)

回答:
sfM 和MVS两者互补,它们基于不同的假设。且他们的输入也不相同。

sfM: (bundler, VisualSFM, OpenMVG)
input: 一组图片
output: 场景粗糙的3D形状(稀疏重建), 还有每张图片对应的相机参数。

sfm只能稀疏重建的原因:
sfM先从检测图像中提取2D特征(SIFT or ORB)表征。这些图像特征的表示为图像中的一个小区域(既一堆相邻像素)。
2D特征的特点:可以可靠的表示高度纹理区域或者粗糙的几何形状。
但是这些场景特征需要再整个场景中唯一(比如重复的墙纹理,难以匹配)。故而通过这些唯一的特征只能生成稀疏的mesh。当图像之间找到很多匹配项时,可以计算出图像之间的3D变换矩阵从而有效地给出两个相机之间地相对3D位置。

将MVS算法用于细化通过SfM技术获得的网格,从而产生所谓的密集重构。此算法要求每个图像的相机参数都起作用,这由SfM算法输出。由于它适用于更受约束的问题(因为它们已经具有每个图像的摄像机参数,例如位置,旋转,焦点等),因此MVS将在2D特征未正确(或无法正确检测)的区域上计算3D顶点或匹配。这就是PMVS2所做的。
PMVS如何在二维特征描述符难以匹配的区域上工作?由于您知道相机参数,因此知道图像中的给定像素就是另一图像中线的投影。这种方法称为对极几何。 SfM必须为每个描述符搜索整个2D图像以找到可能的匹配,而MVS将在一条1D线上工作以找到匹配,从而大大简化了问题。因此,MVS通常会在优化过程中考虑照明和物体材质,而SfM则不会。
但是,有一个问题:PMVS2执行相当复杂的优化,可能会非常缓慢,或者在大图像序列上占用天文数字的内存。这是CMVS发挥作用的地方,将粗略的3D SfM输出聚集到区域中。然后,将在每个群集上(可能并行)调用PMVS2,以简化其执行。然后,CMVS将把每个PMVS2输出合并到一个统一的详细模型中

SfM旨在使用结构化(但未知)的图像序列执行3D重建,而MVS是基于人类立体视觉的双视立体视觉的概括

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/124195430
SFM
今日推荐