三维重建 SFM 与MVS

matlab的:python用于展示

http://vclab.kaist.ac.kr/siggraph2022p1/index.html
https://github.com/KAIST-VCLAB/SparseEllipsometry
ECCV2022 汇总:https://github.com/DWCTOD/ECCV2022-Papers-with-Code-Demo/
我们提出了第一个同时捕获极化 SVBRDF(包括 3D Mueller 矩阵和折射率)和真实世界对象的 3D 形状的稀疏椭偏方法。与传统的椭偏仪不同,我们的便携式采集设备由现成的固定光学元件组成。我们可以在几分钟而不是几天内捕获我们稀疏的观察结果,从而可以在不同的照明下准确呈现新的视图。椭偏技术可以测量材料的偏振信息,需要使用不同配置的光和传感器精确旋转光学组件。这导致了笨重的捕获设备,在实验室条件下经过仔细校准,并且采集时间非常长,通常每个对象大约需要几天。最近的技术允许捕获偏振空间变化的反射率信息,但仅限于单个视图,或覆盖所有视图方向,但仅限于由单一均质材料制成的球形物体。我们提出了稀疏椭偏法,这是一种便携式偏振采集方法,可捕获极化 SVBRDF 和 3D 形状同时进行。我们的手持设备由现成的固定光学元件组成。每个对象的总采集时间不是几天,而是二十到三十分钟。我

三维重建 SFM 与MVS_第1张图片

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是基于人类立体视觉的双视立体视觉的概括

你可能感兴趣的:(3D视觉,三维重建)