一、三维重建概述
三维重建,说白了就是给现实世界拍一张「立体照片」。
我刚开始接触这个领域时,觉得它特别玄乎。后来做了几个项目才明白——它本质上就是通过二维图像或传感器数据,还原出物体的三维几何信息。你拍一张照片,得到的是像素;你拍一百张照片,经过算法处理,就能得到点云、网格、甚至带纹理的模型。
嗯,这里要注意:三维重建 ≠ 三维建模。建模是人在软件里手动捏出来的,重建是从真实数据里自动算出来的。两者有本质区别。
1.1 三维重建的定义
官方定义很绕,我用自己的话总结:
三维重建 = 从多视角图像、深度图、激光扫描等数据中,恢复物体或场景的三维几何结构与外观信息。
输出的东西通常有三种形式:
- 点云:一堆三维坐标点,每个点带颜色或法向量
- 网格:三角形面片组成的表面,更光滑
- 体素:三维像素,像乐高积木一样堆叠
我个人习惯把点云当作「原始素材」,网格当作「精修成品」。项目里经常是先出点云,再转网格,最后贴纹理。
核心公式(简化版):
输入:{I₁, I₂, ..., Iₙ} 多视角图像 → 特征匹配 → 三角测量 → 输出:{P₁, P₂, ..., Pₘ} 三维点云
1.2 应用领域
三维重建不是实验室里的玩具,它已经渗透到很多实际场景中。我挑三个最有代表性的说说:
AR/VR
你玩过苹果的AR测距吗?手机扫一下桌面,就能量出长度。这背后就是实时三维重建。我在2020年做过一个AR家装项目,用户拿手机扫客厅,自动生成户型图,然后往里面摆虚拟家具。说实话,那时候精度还不够,扫出来的墙角经常是歪的。但这两年随着NeRF和深度传感器的普及,效果已经好太多了。
自动驾驶
自动驾驶车顶那个旋转的激光雷达,每秒发几百万个激光点,扫出周围环境的点云。然后算法实时重建出道路、行人、车辆的三维结构。我记得有一次调试路测数据,发现重建出来的自行车道总是少一块——后来发现是算法对细长物体处理不好。这个坑我踩过,后面讲MVS时会细说。
文物保护
这个领域我特别有感触。2021年我参与过一个敦煌莫高窟的数字化项目,用相机拍了上千张照片,重建出洞窟的完整三维模型。你想想看,那些壁画在慢慢褪色、脱落,但数字模型可以永久保存。当时我们重建一尊佛像,花了整整两周时间调参数——因为佛像表面反光太强,SFM算法老是匹配失败。最后用了偏振片才搞定。
| 领域 | 典型应用 | 常用技术 | 我的踩坑点 |
|---|---|---|---|
| AR/VR | 空间定位、虚拟物体放置 | SLAM、深度传感器 | 光照变化导致特征丢失 |
| 自动驾驶 | 环境感知、障碍物检测 | 激光雷达+多视图 | 细长物体重建不全 |
| 文物保护 | 数字化存档、虚拟修复 | SFM、MVS、摄影测量 | 高反光表面匹配失败 |
1.3 技术路线总览
三维重建的技术路线,我把它分成三大流派。你想想看,就像去一个地方可以坐飞机、高铁、自驾一样,每种方法各有优劣。
我的建议:初学者先学SFM,再学MVS,最后接触NeRF。别一上来就搞NeRF,数学基础不够容易劝退。
SFM(运动恢复结构)
SFM是三维重建的「老祖宗」。它的核心逻辑很简单:从一堆照片里找出共同的特征点,然后算出相机的位置和物体的三维坐标。
我曾经用SFM重建一个室内场景,拍了200张照片,跑了整整一夜。第二天一看,点云稀疏得可怜——因为墙面太白,特征点太少。后来我学乖了,拍照时故意放一些纹理丰富的物体在场景里。
SFM的典型流程:
- 特征提取(SIFT、ORB)
- 特征匹配(暴力匹配或FLANN)
- 几何验证(RANSAC剔除误匹配)
- 增量式重建(逐张添加图像)
- 全局优化(BA光束法平差)
MVS(多视图立体)
SFM输出的是稀疏点云,MVS的任务就是把它变密。说白了,SFM给你画了个骨架,MVS往上填肉。
MVS的核心思想是:既然知道了相机位置,那就可以在图像之间做密集匹配,每个像素都算出深度值。我做过一个对比实验:同一组数据,SFM只产出5万个点,MVS能产出2000万个点。差距就是这么大。
但MVS也有坑——它对纹理重复的区域特别头疼。比如一面红砖墙,每块砖长得一样,MVS就会匹配错乱,产生「飞点」。我曾经在项目里遇到这种情况,最后不得不手动剔除这些噪点。
NeRF(神经辐射场)
NeRF是2020年火起来的技术,它用神经网络隐式地表示三维场景。你给它一组照片,它学出一个函数:输入一个三维坐标和视角方向,输出颜色和密度。然后从任意角度渲染,都能得到逼真的图像。
我第一次跑通NeRF时,真的被震撼到了——那种从稀疏照片中「脑补」出完整细节的能力,传统方法完全做不到。但NeRF也有硬伤:训练慢(一个场景要几小时)、不能处理动态场景、对光照敏感。
避坑指南:我曾经在NeRF项目里用了低分辨率图像(512x512),结果渲染出来的细节全是糊的。后来换成1024x1024,效果天差地别。NeRF对输入质量极其敏感,拍照时一定要保证清晰度和重叠率。
1.4 技术路线对比
| 技术 | 输出类型 | 精度 | 速度 | 适用场景 |
|---|---|---|---|---|
| SFM | 稀疏点云 | 中等 | 快 | 相机标定、大场景 |
| MVS | 密集点云 | 高 | 中等 | 精细建模、文物扫描 |
| NeRF | 隐式场 | 极高(渲染) | 慢 | 新视角合成、AR/VR |
1.5 知识体系总览
下面这张图是我自己画的,把本章的核心逻辑串起来了。你看一遍,应该能对三维重建有个整体印象。
这张图把本章的核心逻辑串起来了。你从输入数据出发,选择合适的技术路线,得到对应的输出,最后落地到具体应用。我个人建议初学者先走SFM+MVS这条线,因为成熟、稳定、资料多。NeRF虽然炫酷,但坑也多,等基础打牢了再碰不迟。