三维重建了解

本文深入探讨了三维重建的传统方法与学习方法,包括RGBD、VMS技术以及单帧图像重建。同时介绍了3D形状表示,如深度图、点云、体素和网格,并详细阐述了极线约束与本征矩阵在多视图立体(MVS)重建中的应用。MVS的三种重建路线对比表明,基于光度一致性的方法在精度上有优势。SFM算法流程中,从特征点提取到三维点云计算,再到重投影和优化,详尽展示了三维重建的过程。此外,讨论了基于深度学习的MVS重建在精度和鲁棒性上的提升,但面临内存和数据依赖的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、三维重建方法

1.1 传统方法

  1. RGBD(D来源结构光或者TOF):缺点,重建范围受限,一般不能重建大模型;比如,kinectFusion,DynamicFusion,BundleFusion。
  1. VMS(多帧图像重建模型):比如,OpenMVS,PMVS,MVE。

1.2学习方法

  1. 单帧图像重建mesh模型:比如,if-Net,PifuHD。
  2. 单帧/双目/MVS重建深度图:比如,MVSNet,JDACS-MS,PatchMatchNet。

二、一些基础知识点

2.1 3D shape representation

        深度图(depth):每个像素值代表的是物体到相机xy平面的距离。

        点云(point cloud):某个坐标系下的点的数据集。点包含了丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等。

        体素(voxel):是三维空间中的一个有大小的点,一个小方块,相当于是三维空间种的像素。

        网格(mesh):是全部由三角形组成的多边形网格模拟复杂物体的表面。

2.2 极线约束与本征矩阵

        假设在世界坐标系中有一点p,坐标为X,它在1相机中的像为x1​,在2相机中的像为 x2​(注意 x1和 x2​为齐次坐标,最后一个元素是1),如下图所示。

         公式太难码了,直接贴图片了。

 

 

三、MVS(Multi-View Stereo)重建方法

3.1 一个初略的流程是

多图片集输入,pose计算(计算采用slam/SFM算法),mesh模型重建,文理贴图。

3.2 MVS重建的三种路线

  1. Images camera parameters,silhouette extraction, visual hull,final refinement,polished voxels/mesh。
  2. Images camera parameters,depth range initialization,depthmap reconstruction,depthmaps,boundingbox initialization, volumetric fusion,voxels/mesh, final refinement,polished voxels/mesh。
  3. Images camera parameters,point cloud reconstruction,point cloud,boundingbox initialization, volumetric fusion,voxels/mesh, final refinement,polished voxels/mesh。

其实后面两种路线可以归为一类,前提都是重建深度图。

3.3 对比

基于轮廓线的MVS重建(上述路线1):

        优点:易于实现,速度快;

        局限性:精度依赖体素分辨率和轮廓线;得到的模型不够光滑;需要分割重建物体的轮廓,普适性低;

基于光度一致性的MVS重建(上述路线23

        优点:相对精度高,对硬件要求低,测量范围大;

        局限性:无文理,透明/反光,重复文理建模可能会失效。

基于深度学习的MVS重建

        优点:基于学习的特征,匹配更鲁棒;基于shape先验,重建更完整;

        局限性:内存限制,难以重建高分辨率;依赖大数据;

四、SFM算法流程

4.1 特征点提取与特征点匹配

        特征点提取

                Shi-Tomasi

                SIFT

                SURF

        特征点匹配:匹配结果往往有很多误匹配,为了排除这些错误,使用KNN算法寻找与该特征最匹配的2个特征,若第一个特征的匹配距离与第二个特征的匹配距离之比小于某一阈值,就接受该匹配,否则视为误匹配。当然,也可以使用交叉验证方法来排除错误。

4.2 基础矩阵估计F和本质矩阵估计E

        基础矩阵中有9个元素:5点法或者8点发估计

        本质矩阵中有7个独立参数:估计出本质矩阵的目的是为了对之前求得的匹配进行约束,得到的匹配成为几何一致匹配,不同图像上的几何一致匹配形成了一个TRACK(其实就是一个空间点在不同的图像上的投影点之间的匹配)。

        本质矩阵分解为R和T:

  1. SVD分解
  2. 存在4种可能的解,寻找正确的解
  3. 检查旋转矩阵R的正确性(R的行列式必须为1或者-1)

4.3 三维点云计算

        三角定位法

4.4 重投影

        将三维点三角化并重映射到摄像机得到二维点,计算与最初二维点之间的距离,说明三角化误差。

4.5 计算第三个摄像机到到世界坐标系的变换矩阵(R和T)

4.6 更多摄像相机的变换矩阵计算

        得到第三个摄像机的变换矩阵后,就可以计算匹配点的在空间中的坐标,得到三维点云,将新得到的三维点云与之前计算得三维点云进行融合(已经存在的空间点,就没必要再添加了,只添加在图像二和三之间匹配,但在图像一和图像三中没有匹配的点)。然后循环迭代,如下图所示。

 

4.7 重构的细化与优化

        随着图像的不断增加,误差会不断累积,最后误差过大以至于完全偏离重建的目标。所以需要三维点云的位置和摄像机的位置优化。可以使用光束法平差(Bundle Adjustment, BA)。

        BA的本质是一个优化模型,其目的是最小化重投影误差。

5 代码及运行效果

        代码

        运行效果

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值