问题

三维重建怎么入门?

回答
想踏入三维重建的奇妙世界?别担心,这不像你想象的那么遥不可及。从“这玩意儿是怎么做出来的?”的迷茫,到亲手“创造”出立体世界的成就感,整个过程其实充满乐趣和探索。今天,我就带你一步步地揭开三维重建的面纱,让你能快速上手,玩转这个酷炫的技术。

首先,咱们得搞明白,这三维重建到底是个啥玩意儿?

简单来说,三维重建就是把我们平时看到的二维图像(比如照片、视频)转换成一个可以旋转、缩放、甚至在里面“行走”的三维模型。想象一下,你拍了一张古董的花瓶照片,但你只想看看它背面的纹理,或者想知道它大概有多高,这时候,三维重建就能派上用场了。它能把那张平面的照片“立”起来,让你从任何角度去观察它。

好,那我们怎么才能开始这个“点石成金”的过程呢?

别急,我们先从最基础的准备工作说起。

第一步:装备先行,工欲善其事必先利其器。

虽然听起来有点像军事术语,但对于三维重建来说,好的设备确实能事半功倍。

拍照设备: 你不需要一个专业的单反相机,你的手机就完全足够了!现在手机的摄像头成像质量都非常高。如果你想更进一步,一台卡片相机或者微单相机会提供更好的画质和更灵活的设置。关键在于,你要能拍出清晰、细节丰富的照片。
电脑: 这是你的“工作台”。三维重建的过程需要大量的计算,所以一台性能不错的电脑是必不可少的。一般来说,一颗好点的CPU(比如Intel i5或AMD Ryzen 5以上),16GB或以上的内存,以及一块独立显卡(NVIDIA GeForce GTX 1660或以上)会让你的处理速度快很多,避免漫长的等待。不用追求顶配,但也不能太弱鸡。
其他辅助(可选):
三脚架: 尤其是在光线不好的情况下,或者你需要拍摄一系列非常相似的照片时,三脚架能保证相机的稳定,避免模糊。
回转平台/转盘: 如果你要重建一个小物体(比如手办、雕塑),一个可以平稳旋转的转盘会极大地方便你拍摄各个角度的照片。

第二步:理论打底,知其然更要知其所以然。

在动手之前,了解一些基本原理会让你走得更稳。不用变成理论大师,但一些核心概念要大概清楚。

什么是特征点? 想象一下你在找人,你会看他的眼睛、鼻子、嘴巴这些特别的部位。在三维重建里,特征点就是图像中那些独特、容易被识别的点,比如物体的边角、纹理的细节等等。软件会通过这些点来“匹配”不同照片中的同一位置。
什么是相机标定? 就像我们要知道自己的眼睛是怎么看世界的,相机也有自己的“视角”和“透镜畸变”。相机标定就是确定相机的内部参数(比如焦距、主点)和外部参数(比如相机在空间中的位置和朝向)。这能让软件更准确地知道照片是怎么拍出来的。
什么是SfM和MVS? 这两个是三维重建的两个主要技术流派。
SfM (Structure from Motion): 通过从运动中恢复结构。简单说,就是分析一系列运动的图像(比如你拿着手机绕着物体走一圈),来同时估计相机的运动轨迹和场景的三维结构。
MVS (MultiView Stereo): 多视图立体匹配。它通常是在SfM之后进行的,利用SfM得到的相机位置和方向,在多个视图中寻找对应点,然后计算出更密集的三维点云(可以理解成无数个小点构成的三维形状)。
点云和网格:
点云 (Point Cloud): 就是前面说的,由无数个带有XYZ坐标的三维点组成的数据集,它初步地描绘出了物体的形状。
网格 (Mesh): 点云虽然直观,但它只是“散落”的点。网格就是把这些点用三角形(或者四边形)连接起来,形成一个“表面”,这样就更像一个真正的三维模型了,可以填充颜色、贴纹理。

第三步:实践出真知,从一个小项目开始。

理论讲得再多,不如亲手做一遍。咱们就从一个简单的、静止的物体开始吧,比如你的一个水杯、一个玩偶,或者一块石头。

1. 数据采集:拍照是关键!

选择一个光线充足、均匀的环境: 避免强烈的阳光直射和过多的阴影,这会让特征点难以提取。柔和的散射光最好。
保持背景简洁: 如果你的目标物体在一个杂乱的背景下,软件可能会把背景也当成目标来重建,效果会很糟糕。如果背景太复杂,可以考虑用白布或者绿幕。
围绕物体拍摄,形成一个“包围圈”:
多角度: 从各个角度去拍,包括顶部、底部(如果能拍到的话)、侧面。
多重叠: 最重要的一点!相邻照片之间的重叠度要达到60%80%。也就是说,下一张照片要拍到上一张照片中很大一部分内容。这样软件才能找到它们之间的对应关系。
变化拍摄距离(可选但推荐): 可以拍几张近距离的清晰照片来捕捉细节,再拍几张远一点的整体照片来确定大体轮廓和位置。
拍摄路径: 想象你在绕着物体走一圈。可以先拍一圈,然后稍微提高一点相机高度,再拍一圈,以此类推,直到把物体“全方位覆盖”。
保持物体静止: 这是最基本的要求。
保持相机参数相对固定: 最好使用手动模式,固定好曝光、白平衡、对焦。避免自动变焦或者光圈变化。

举个例子:拍摄一个水杯

1. 将水杯放在桌子上。
2. 绕着水杯走一圈,保持相机离水杯的距离大致不变,每隔一段距离拍一张照片。确保照片之间有很大的重叠。
3. 然后,你可以稍微抬高一点相机,再绕着水杯拍一圈。
4. 如果水杯底部容易拍到,再低一点角度拍一圈。
5. 如果你想看到杯子内部的纹理,可以拍几张杯子内部的照片(如果内部有纹理的话)。

2. 选择合适的三维重建软件:

现在市面上有不少好用的三维重建软件,它们大致分为几种类型:

摄影测量软件 (Photogrammetry Software): 这类软件是目前主流的解决方案,它们基于大量的照片进行计算。
免费开源类:
Meshroom: 基于AliceVision的免费开源软件,功能强大,社区活跃,非常适合入门。它的界面比较直观,可以一键处理。
COLMAP: 另一个强大的开源项目,通常作为底层工具,常与其他软件结合使用。学习曲线稍陡峭,但非常灵活。
商业软件(部分有免费试用):
Agisoft Metashape (原PhotoScan): 功能非常全面,效果顶尖,是专业人士的首选之一,但价格不菲。
RealityCapture: 速度非常快,效果也很棒,也是商业软件的佼佼者。
Autodesk ReCap Photo: Autodesk 出品的,与Maya等软件集成较好。
3DF Zephyr: 性价比不错的商业软件,也有免费版本。
3D扫描仪配套软件: 如果你有3D扫描仪(如结构光扫描仪、激光扫描仪),它们会有配套的软件进行数据处理和重建。但这通常是更高级的玩法了。

对于入门,我强烈推荐从 Meshroom 开始。 它不仅免费,而且安装好后,只需要把你的照片拖进去,点击“启动”,然后坐等结果就好,非常方便上手。

3. 使用软件进行重建:

以 Meshroom 为例,流程大概是这样的:

安装软件: 官网下载安装包即可。
导入照片: 打开 Meshroom,将你之前拍摄的所有照片拖拽到左侧的“项目”面板中。
设置参数(初学阶段可以先用默认): Meshroom 大部分参数都可以保持默认。如果你想尝试调整,可以看看“图像预处理”、“节点”等设置。
启动计算: 点击顶部的绿色“开始”按钮。
等待结果: 这个过程会比较耗时,取决于你的照片数量、电脑性能。它会经历特征提取、匹配、SfM、MVS、网格生成、纹理贴图等一系列步骤。你可以看到下方的节点一个个变成绿色,表示计算完成。
查看和导出: 计算完成后,你可以在右侧的3D视图中看到重建好的模型。你可以旋转、缩放来查看。模型通常会以点云和网格的形式呈现。你可以将模型导出为常见的3D文件格式,如 .obj, .stl, .fbx 等。

第四步:优化和进阶,让你的模型更完美。

第一次重建出来的模型可能并不完美,这时就需要一些优化和进阶操作。

清理模型:
去除噪点和杂物: 重建过程中,背景中的噪点或者你拍照时不小心拍到的其他东西可能会被重建进来,形成“杂质”。可以使用3D建模软件(如Blender)来删除这些不需要的部分。
修补孔洞: 有些角度可能没拍到,导致模型出现孔洞。在3D建模软件中可以手动修补。
提高细节:
更高质量的原始照片: 更高的分辨率、更好的成像质量、更丰富的纹理细节,都能直接提升重建效果。
增加照片数量和重叠度: 在关键区域增加更多拍摄角度和照片,提高重叠度。
纹理优化:
统一光照: 如果你拍摄的照片光照不均匀,可能会导致模型纹理出现明显的明暗变化。尽量在统一的光照下拍摄,或者使用软件的纹理烘焙功能。
高分辨率纹理: 有些软件支持生成更高分辨率的纹理贴图,让模型看起来更真实。
尝试其他技术和软件:
Lidar(激光雷达): 对于大型场景(如建筑、地形),Lidar扫描仪能提供非常精确的三维数据,配合摄影测量效果更佳。
深度相机 (Depth Cameras): 如Intel RealSense、Kinect等,它们能直接获取物体的深度信息,辅助重建。
SLAM (Simultaneous Localization and Mapping): 同步定位与地图构建,常用于机器人导航和AR/VR领域,也能用于三维重建。

总结一下你的入门路线图:

1. 明确目标: 你想重建什么?一个小摆件还是一个房间?
2. 准备装备: 一部不错的手机(或相机)+ 一台能跑得动的电脑。
3. 学习基础: 了解特征点、重叠度、基本的SfM/MVS概念。
4. 选择工具: 从 Meshroom 开始。
5. 动手实践: 找个简单的物体,按照步骤拍摄照片,导入 Meshroom 进行重建。
6. 学习优化: 用 Blender 等软件清理和修补模型,学习如何拍出更好的照片。

给你一些额外的建议:

保持耐心: 三维重建是一个需要反复试验和学习的过程,不要期望第一次就做出完美的模型。
多看教程: YouTube 上有大量的 Meshroom、Metashape 等软件的使用教程,跟着视频一步步做,会学得更快。搜索关键词如 "Meshroom tutorial", "photogrammetry tutorial"。
加入社区: 很多三维重建的论坛和社群,你可以去那里提问、交流经验,看看别人的作品。
从小处着手: 刚开始不要挑战太复杂的场景,先从简单的物体练手,掌握了基本流程再慢慢升级。
享受过程: 把三维重建当作一个有趣的探索过程,你会发现其中的乐趣远不止是最终的模型。

现在,是不是感觉三维重建没那么神秘了? grab your phone, find an interesting object, and start your first threedimensional adventure! 祝你玩得开心!

网友意见

user avatar

3D重建涉及的知识体系还是挺多的,我当时是看书+项目实操这样进行的,书我当时看的是SLAM十四讲,关于slam的学习入门资源:zhuanlan.zhihu.com/p/13

然后第二部分就是好的框架或是项目,站在前人的肩膀上学习会事半功倍,我汇总了一些我们团队学校三维重建时候整理的开源项目,这样更方便快速入门:

1、Meshroom ⭐4,474

Meshroom是一款基于AliceVision摄影测量计算机视觉框架的免费开源三维重建软件。

github.com/alicevision/

2、Openmvg ⭐2,829

Openmvg库根据三维计算机视觉和结构的运动。OpenMVG提供了一个端到端的3D重建,它由图像框架组成,包含库、二进制文件和管道。

  • 这些库提供了简单的功能,如:图像处理,功能描述和匹配,功能跟踪,相机模型,多视图几何,旋转估计…
  • 该二进制文件解决了管道可能需要的单元任务:场景初始化、特征检测与匹配和运动重建的结构,并将重建的场景导出到其他多视点立体视觉框架中,以计算密集的点云或纹理网格。
  • 这些管道通过链接各种二进制文件来计算图像匹配关系

OpenMVG是用c++开发的,可以在Android、iOS、Linux、macOS和Windows上运行。

github.com/openMVG/open

3、Awesome_3dreconstruction_list ⭐2,261

与图像3D重建相关的论文和资源精选清单

github.com/openMVG/awes

4、Awesome Point Cloud Analysis ⭐1,801

关于点云分析(处理)的论文和数据集列表

github.com/Yochengliu/a

5、Opensfm ⭐1,635

OpenSfM是一个用Python编写的运动库的结构。该库作为一个处理管道,用于从多个图像重建相机姿态和3D场景。它由运动结构的基本模块(特征检测/匹配,最小解算)组成,重点是构建一个健壮的、可伸缩的重建管道。它还集成了外部传感器(如GPS、加速计)测量,以实现地理定位和鲁棒性。提供了一个JavaScript查看器来预览模型和调试管道。


github.com/mapillary/Op

6、Alicevision ⭐1,318

AliceVision是摄影测量计算机视觉框架,可提供3D重建和相机跟踪算法。AliceVision旨在通过可测试,分析和重用的最新计算机视觉算法提供强大的软件基础。该项目是学术界和工业界合作的结果,旨在为尖端算法提供鲁棒性和生产使用所需的质量。

github.com/alicevision/

7、Openmvs ⭐1,193

OpenMVS是面向计算机视觉的库,尤其是针对多视图立体重建社区的。尽管有针对运动结构管道(例如OpenMVG)的成熟而完整的开源项目,这些管道可以从输入的图像集中恢复相机的姿势和稀疏的3D点云,但没有一个解决摄影测量链的最后一部分-流。OpenMVS旨在通过提供一套完整的算法来恢复要重建场景的整个表面来填补这一空白。输入是一组摄影机姿势加上稀疏的点云,输出是带纹理的网格。该项目涉及的主要主题是:

  • 密集的点云重构,以获得尽可能完整,准确的点云
  • 网格重建,用于估计最能解释输入点云的网格表面
  • 网格细化可恢复所有精细细节
  • 网格纹理,用于计算清晰准确的纹理以对网格着色

github.com/cdcseacave/o

8、Bundler_sfm ⭐1,158

github.com/snavely/bund

9、Bundlefusion ⭐752

使用在线表面重新整合进行实时全局一致的三维重建

github.com/niessner/Bun

10、Face_swap ⭐636

面部交换:github.com/YuvalNirkin/

11、Scannet ⭐678

ScanNet是一个RGB-D视频数据集,包含超过1500次扫描中的250万次视图,使用3D摄像机姿态、表面重建和实例级语义分段进行注释。

github.com/ScanNet/Scan

12、Softras⭐540

SoftRas是一个真正的可微分渲染框架,把渲染作为一个可微分的聚合过程,融合所有网格三角形的概率贡献相对于渲染像素。

github.com/ShichenLiu/S

13、Pifu ⭐474

github.com/shunsukesait

14、Matterport ⭐460

用于RGB-D机器学习任务的非常棒的数据集。

github.com/niessner/Mat

15、Kimera⭐456

Kimera是一个用于实时度量-语义同步定位和映射的c++库,它使用摄像机图像和惯性数据来构建环境的语义注释3D网格。Kimera是模块化的,支持ros,在CPU上运行。

github.com/MIT-SPARK/Ki

16、Mvs Texturing ⭐421

项目可以根据图像对3D重建进行纹理处理。该项目专注于使用运动和多视图立体技术的结构生成的3D重建。

github.com/nmoehrle/mvs

17、Livescan3d ⭐402

LiveScan3D是一个实时三维重建系统,使用多个Kinect v2深度传感器同时进行三维重建。产生的3D重建形式是有色点云的形式,所有Kinect的点都放置在同一坐标系中。该系统的可能使用场景包括:

  • 同时从多个视点捕获对象的3D结构,
  • 捕获场景的“全景” 3D结构(通过使用多个传感器来扩展一个传感器的视场),
  • 将重建的点云流式传输到远程位置,
  • 通过让多个传感器捕获同一场景来提高单个传感器捕获的点云的密度。

github.com/MarekKowalsk

18、Voxelhashing ⭐364

大规模、实时三维重建:github.com/niessner/Vox

19、Layoutnet ⭐298

从单个RGB图像重建三维房间布局

github.com/zouchuhang/L

20、Tsdf Fusion Python ⭐295

这是一个轻量级的python脚本,可将多个颜色和深度图像融合到TSDF体积中,然后可以将其用于创建高质量的3D表面网格和点云。在Ubuntu 16.04上测试效果如下图:


github.com/andyzeng/tsd

21、Intrinsic3d ⭐231

通过外观和几何优化以及空间变化的照明实现高质量3D重构

github.com/NVlabs/intri

22、Kimera Semantics ⭐228

从2D数据进行实时3D语义重构

github.com/MIT-SPARK/Ki

23、Awesome Holistic 3d ⭐209

3D重建的论文和资源清单:

github.com/holistic-3d/

24、3dreconstruction ⭐151

使用Python3进行SFM的3D重建

github.com/alyssaq/3Dre

25、Structured3d ⭐121

用于结构化3D建模的大型照片级数据集

github.com/bertjiazheng

26、Synthesize3dviadepthorsil ⭐117

通过对多视图深度图或轮廓建模来生成和重建3D形状

github.com/Amir-Arsalan

27、Msn Point Cloud Completion ⭐111

github.com/Colin97/MSN-

28、Cnncomplete ⭐107

用于训练体积深层神经网络以完成部分扫描的3D形状的代码

github.com/angeladai/cn

29、Reconstructiondataset ⭐95

用于进行三维重建的一组图像

github.com/rperrot/Reco

30、3d Recgan Extended ⭐81

从单个深度视图进行密集的3D对象重建

github.com/Yang7879/3D-


更新与10.18

补充一些移动端的三维重建应用案例(搭载LiDAR)

三维重建 |宝藏AR应用:3D Scanner Pro(iPad LIDAR扫描仪):

三维视觉、SLAM方向全球顶尖实验室汇总:

汇总 | SLAM、重建、语义相关数据集大全:

可以关注我们公众号:三次方AIRX。三次方是一家专注于培养数字化人才的在线教育平台,帮助Z时代大学生和0-5年职场人获得混合现实、游戏开发、人工智能、大数据等多项专业能力。

类似的话题

  • 回答
    想踏入三维重建的奇妙世界?别担心,这不像你想象的那么遥不可及。从“这玩意儿是怎么做出来的?”的迷茫,到亲手“创造”出立体世界的成就感,整个过程其实充满乐趣和探索。今天,我就带你一步步地揭开三维重建的面纱,让你能快速上手,玩转这个酷炫的技术。首先,咱们得搞明白,这三维重建到底是个啥玩意儿?简单来说,三.............
  • 回答
    这道三重积分的问题,咱们一步步来剖析,就像抽丝剥茧一样,把里面的门道都给捋清楚。毕竟,面对积分,细致和耐心是咱们的法宝。咱们先来看一下这个三重积分的表达式。虽然你没有直接给出具体的函数和积分区域,但我猜想你遇到的可能是一个类似这样的形式:$$ iiint_V f(x, y, z) , dV $$其中.............
  • 回答
    您好!很高兴能为您解答三重积分的换元问题。三重积分的换元是处理复杂积分区域或被积函数时非常强大的工具,能够将棘手的积分转化为更容易处理的形式。下面我将详细讲解三重积分的换元方法,并尽量以自然、清晰的方式呈现。在开始之前,我们先回顾一下一维和二维积分中的换元思想: 一维积分换元 (积分变量代换):.............
  • 回答
    球面坐标系下三重积分的计算公式是怎么推导出来的?我们知道,在笛卡尔坐标系下,一个区域 $V$ 上的三重积分可以表示为:$$ iiint_V f(x, y, z) , dx , dy , dz $$但是,当积分区域是球体、圆锥体或者其他具有球对称性的区域时,用笛卡尔坐标计算会非常繁琐。这时,引入球面坐.............
  • 回答
    .......
  • 回答
    《三体2:黑暗森林》的结局,罗辑之所以能够记住并利用三维坐标,并非一个简单的“记住”过程,而是整个故事推进和人物成长的一个关键节点,是他主动构建和巩固的结果。这其中涉及到他深刻的危机感、对宇宙法则的理解,以及近乎执拗的思考方式。首先,我们要明白罗辑的处境。在“面壁者”时期,他被迫与整个文明的命运绑在.............
  • 回答
    好的,咱们来聊聊三维空间里的旋转矩阵是怎么来的。这篇文章尽量不让你觉得是机器写出来的,咱们就用最直观的方式来理解。首先得明白一个事儿,啥叫旋转?就是在一个中心点(通常是原点)绕着某条线(称为旋转轴)把物体转动一个角度。在三维空间里,想象一下,你手里拿着一个魔方,想把它绕着某一条棱转一下,这就是个三维.............
  • 回答
    好的,咱们不聊那些虚头巴脑的,直接说说怎么用C语言把一个三维球体给“画”出来。你可能以为这是什么高大上的图形学才能做的事情,其实不然,很多时候我们理解的三维“画”其实是模拟。要用C语言“画”一个三维球体,咱们主要有两种思路,一种是控制台输出(ASCII art),一种是借助图形库(比如SDL, Op.............
  • 回答
    这确实是一个引人入胜的问题,关于如何在单位球上放置 N 个相同电荷以达到最低势能。这个问题实际上涉及到物理学中的一个经典难题,通常被称为“电荷在球壳上的分布问题”或者更广义的“最小能量构型问题”。要详细地解答它,我们需要一步一步来分析。核心思想:同种电荷相互排斥,为了达到最低势能,这些电荷会尽可能地.............
  • 回答
    说起三维重建,这可不是件简单事儿,它就像是把我们眼睛里看到的世界,用数字化的方式重新描绘出来。这个领域里,算法可真是百花齐放,各有各的绝活。今天,咱们就来聊聊几个特别实用的算法,尽量说得明白透彻一些,让你听着就像是和一位老朋友在侃大山一样。咱们得先明白,三维重建的核心目标是什么?简单来说,就是从一些.............
  • 回答
    洞察隐匿之形:透明物体三维重建的挑战与破局之道对于我们日常所见的许多物体,例如玻璃杯、水滴、水晶装饰品,甚至是某些生物组织,它们的透明特性为我们带来了独特的视觉体验,但同时也给三维重建带来了巨大的挑战。与不透明物体不同,透明物体的表面并不能直接反射出稳定的光照信息,光线会在物体内部发生折射、反射、散.............
  • 回答
    三维围棋?听起来就让人眼前一亮!我来给你好好掰扯掰扯这事儿,保证不带一点机器腔调。三维围棋,可行性几何?简而言之,可行,但难度极大。 围棋本身就不是一个简单的游戏,将它搬到三维空间,简直是给本来就错综复杂的棋局加上了更多维度,想想都让人脑壳疼。为什么说可行?我们玩游戏嘛,总得有点想象力。三维围棋无非.............
  • 回答
    这个问题非常有意思,它触及了我们对维度、存在和可能性的基本认知。让我试着从几个角度来探讨一下。首先,我们得先厘清“三维生物”和“四维生物”到底意味着什么。我们对三维生物的理解:我们自己就是典型的三维生物。我们存在于一个空间维度(前后、左右、上下)和一个时间维度中。我们的身体有长度、宽度和高度。我们可.............
  • 回答
    探索三维数据世界的利器:优秀的开源项目深度解析三维数据的统计分析与可视化,是理解复杂空间信息、挖掘隐藏模式、甚至驱动创新设计的关键。在开源社区的蓬勃发展下,涌现出了一批批功能强大、社区活跃的优秀项目,为我们打开了通往三维数据世界的大门。今天,我们就来深入探索这些项目的魅力,看看它们是如何帮助我们进行.............
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......
  • 回答
    .......
  • 回答
    在一个三维欧氏空间中,我们考察一个光滑的紧致曲面。想要弄清楚为什么这样的曲面必然存在正曲率的点,这其实可以追溯到一些非常深刻的几何概念,其中高斯博内定理扮演了至关重要的角色。不过,我们先不直接跳到那个定理,而是尝试从更直观的层面来理解它。首先,让我们明确一下“曲率”是什么意思。在三维空间中,曲面在某.............
  • 回答
    三重以上升降号(A♯♯♯、B♭♭♭♭ 等)的音符在乐谱上极其罕见,这背后其实涉及到了音乐理论的根基以及实际演奏的考量。要理解这一点,我们得从音高、调性以及记谱法这几个方面深入剖析。为什么它们如此罕见?最根本的原因在于音乐的实际需求和听觉习惯。我们的音乐系统,无论是古典音乐还是现代流行音乐,都建立在相.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有