从多张图片重建 3D 模型
1.主要流程
1.1 SIFT:计算图片每个像素点的特征(常见的用 SIFT 算子)
1.2 SFM:对多张图片像素做匹配对应,通过上步得到的特征,从而估计相机参数,
得到稀疏的 3D 信息
1.3 CMVS/PMVS:根据上步得到的相机参数,做稠密重建,得到点云
1.4 对上步的点云做后处理,得到网格,去除噪声点等。
2.使用源码
完 成 1.1 和 1.2 流 程 可 以 使 用 Bundler ( 实 现 SFM 的 比 较 经 典 的 方 法 ) 和
VisualSFM(好像网页上只放了程序,我没有找到源码),到这一步只是生成了稀疏点云。
CMVS/PMVS 可 生 成 稠 密 点 云 , 完 成 1.3 流 程 , 但 一 般 CMVS/PMVS 是 加 载 到
Bundler 和 VisualSFM 程序(软件)中的,所以 1.1,1.2 和 1.3 是在一个软件中(分步
骤)完成的,后面把这三个流程算作一个步骤了。
处理 1.4 我使用的是 MeshLab(开源系统),可以处理点云,生成 3D 模型。
应该不是很重要的小插曲:其实在前期一开始我还调研了 opencv 写的一个小程序处
理图片,生成效果并不理想,但可能是使用的照片本身效果并不好,因为生成的是 **
.yml 文件(点云文件),我没有查到这个文件格式的处理方法,所以作罢。文档见后面。
3.文件格式问题
第 一 步 : 使 用 Bundler 和 VisualSFM 先生成稀疏点云,再利用集成在程序里的
CMVS/PMVS 生成稠密点云。
输入:围着要重建对象拍摄的一系列照片;
输出:一个 .out 文件,存储着每个相机的位置及重建出的稀疏点云(先输出);
一个.ply 文件,存储着由稀疏点云重建出的稠密点云(后输出)。
第 二 步 : 使 用 Meshlab 对 3D 网 格 / 点 云 做 各 种 操 作 。 输 入 第 一 步 的 生 成 文 件 ,
Meshlab 通过一系列操作可创建出包含纹理的、干净的、高分辨率的网格,并自动计算
UV 映射及创建纹理图像。
输入:VisualSFM 的生成文件, .out 文件和 list.txt 文件(存储照片序列);以
及.ply 文件;
评论1