1 使用colmap进行稀疏重建
参考这篇文章【colmap】超详细,基于colmap的多视图三维重建实验_colmap使用教程-CSDN博客
2 稀疏重建后的准备工作
存放图片的文件夹命名为“images”;存放colmap生成的bin文件夹命名为“sparse”
images和sparse存放在新建的CUSTOM文件夹下,CUSTOM放在项目文件夹下。
在命令行中输入指定folder的路径为CUSTOM
python colmap_input.py --folder /path/to/yourfile/Tian/CUSTOM
报错:numpy版本太高
重新下载1.19.3版本numpy
再次运行python colmap_input.py --folder /path/to/yourfile/Tian/CUSTOM
发现CUSTOM文件夹下面有了pair.txt文件
3 开始训练
bash script/eval_general.sh
报错,numpy版本太低了,重新下载1.23,再次运行bash
报错:FileNotFoundError: [Errno 2] No such file or directory: './your/path/Tian/CUSTOM/general/pair.txt'
(这一步要改的东西好多,改了三天才弄好)
首先要先弄好文件路径,项目文件夹(我的是Tian)下面放CUSTOM
CUSTOM
├──scene_1(我只有一个场景,所以CUSTOM下只有一个场景文件夹,文件夹结构如下)
├── images
│ ├── 00000000.jpg
│ ├── 00000001.jpg
│ └── ...
├── cams
│ ├── 00000000_cam.txt
│ ├── 00000001_cam.txt
│ └── ...
└── pair.txt(可以手动把生成的pair.txt放进来)
这个构造后,在eval_general.sh脚本中修改自己的地址
DATASET="/your/path/Tian/CUSTOM"
LOAD_CKPT="checkpoints/epoch=15-step=193199.ckpt"
OUT_DIR="/your/path/Tian/outputsate"
python main.py --extract_geometry --test_general \
--test_n_view 5 --test_ray_num 200 --volume_reso 24 \(这个可以自己设置)
--test_dir=$DATASET --load_ckpt=$LOAD_CKPT --out_dir=$OUT_DIR $@
main函数的代码拼接部分也需要修改
else:
for scan in ["scene_1"]:
#这个有改动,原来是general
dataset_tmp = GeneralFit(root_dir=args.test_dir,
scan_id=scan,
n_views=args.test_n_view)
else这里修改成自己的文件夹名称,就可以直接拼在CUSTOM后面,去找images了。
我只有一个场景已经可以训练了,但是如果是多个场景多个文件夹还不知道怎么训练。
训练好之后,outputsate文件夹下多了depth.rgb.scene_1三个文件夹,渲染出来的是scene_1/images的所有图像的当前视角图像和深度图(为什么DTU只有三个呢?)
同样运行下面代码来获取网格
bash script/tsdf_fusion.sh
得到ply文件,但是在cloudcompare中这个结构很丑陋,还需要进一步清除网格,运行clean文件
报错:掩码文件错误。
因为我的自制数据集没有设置掩码,暂时无法清理网格