三维模型重建流程
基于图像的三维模型重建,也就是多视角重建。
- 三维点云获取(点云)
点云:空间中的散点,包含空间坐标、法向量等等 - 几何结构恢复(结构)
利用计算机图形学恢复几何结构,也就是图形拓扑结构。散乱的三维点,结构非常冗余,数据存储 困难,将点云转化为网格是重建里面一个很重要的模块,其一个很重要的功能就是减少数据存储。 从渲染的角度来说, 无结构的点云渲染质量非常差,所以讲点云转化为网格。 - 场景绘制(纹理)
为了进一步提升重建逼真效果,需要给场景添加纹理。
三维点云获取方式
点云获取方式 | 特点 |
Li-Dar | 激光雷达,快速,准确的获取,适应不同规模场景(车载,无人机等等),缺点成本高。 |
Kinect扫描 | 微软开发设备,获取彩色图(点云)和深度图,速度快,用于精度低的场景,价格不是很贵,可在GPU上可以实时的获取数据进行建模。但获取数据范围有限。 |
单目多视角 | 工业界比较多, 多视角视频或者无序图像对场景进行建模:特征点暴力匹配。 区别于SLAM:不需要进行暴力匹配。多视角图像无序,匹配时暴力匹配,若是视频则不须暴力匹配 |
双目立体视觉 | 基于视差获取深度信息 |
基于图像的三维重建
- 输入图像
- 基于图像的点云生成(稀疏点云重建SFM - > 稠密点云重建MVS)
- 点云到模型的重建(mesh)
- 纹理图像的创建于编辑(光照处理,图像拼接)
- 纹理模型
重建案例和商业软件
- Acute3D
- Altizure(大疆+港科大)
涉及知识
计算机视觉: 特征点检测与匹配、相机模型与对极几何、从运动到结构(SFM)、点云重建(稀疏、稠密)
计算机图形学: 表面重建(点云到网格)、纹理的创建于编辑
编程要求
- C++编程
- 熟悉使用Ubuntu
- 了解图像处理的基本概念和操作
- 矩阵和向量运算以及基本的优化知识