参考文档:
linux下使用Bundler +CMVS-PMVS进行三维重建的博客:http://blog.csdn.net/u013358387/article/details/71576660
一.下载源码
这里使用了镜像,否则下载速度很慢
git clone https://git.sdut.me/snavely/bundler_sfm.git
git clone https://git.sdut.me/pmoulon/CMVS-PMVS.git
二.下载sift
网址:http://www.cs.ubc.ca/~lowe/keypoints/
下载后要make一下,要不后面会出错
三、安装依赖
为了编译和运行Bundler,我们需要安装如下依赖
sudo apt-getinstall liblapack-dev libblas-dev minpack-dev f2c gfortran jhead imagemagick
接下来继续安装SIFT依赖
sudo apt-getinstall libc6-dev-i386
安装CMVS-PMVS依赖
sudo apt-getinstall libgtk2.0-dev libdevil-dev libboost-all-dev libatlas-cpp-0.6-devlibatlas-dev libcminpack-dev libgfortran3 libmetis-edf-dev libparmetis-devfreeglut3-dev libgsl0-dev
四、编译Bundler和CMVS-PMVS
step1:编译Bundler
在linux 终端使用cd命令进入到bundler_sfm下,也就是Makefile文件所在的目录,然后在终端输入make命令
step2:
找到下载的SIFT程序,解压之后将里边的sift可执行文件拷贝到bundler_sfm下的bin目录下。
step3:
安装依赖的时候我们安装了jhead,我们要将jhead文件拷贝到bundler_sfm下的bin目录下。可以使用命令
sudo cp /usr/bin/jhead bin/
step4:
将bundler_sfm/bin/目录下生成的libANN_char.so文件拷贝到系统库
sudo cp bin/libANN_char.so /usr/lib/
step5:编译CMVS-PMVS
使用cd命令进入到CMVS-PMVS/program/下,然后依次执行以下命令
mkdir build && cd build
cmake ..
make
执行完成后,CMVS-PMVS也就编译完成了,生成的可执行文件位于build目录下的main目录中。为了接下来运行方便,我们将生成的可执行文件cmvs、genOption、pmvs2这三个文件拷贝到bundler_sfm目录的bin下。
五、执行Bundler和CMVS-PMVS进行三维重建
cd命令进入到ET文件夹下,然后执行以下命令
../../RunBundler.sh
bundler文件夹下的bundler.out中存储了重建的稀疏点3D坐标和相机参数。
接下来我们就可以利用PMVS进行稠密点云的重建了,在这之前我们还需要将Bundler的输出转换为CMVS-PMVS的输入格式。我们利用bin下的Bundle2PMVS即可完成这一过程。
../../bin/Bundle2PMVS prepare/list.txtbundle/bundle.out
此时会生成pmvs目录,在此目录下有prep_pmvs.sh文件,我们编辑此文件,将里边的BUNDLER_BIN_PATH修改为bundler的bin文件夹的实际路径。例如:
BUNDLER_BIN_PATH=/home/AAAAAA/temp/bundler_sfm/bin
然后依次执行如下操作
1、sh pmvs/prep_pmvs.sh
2、../../bin/cmvs pmvs/
3、../../bin/genOption pmvs/(这一步命令执行完没有什么反应)
4、../../bin/pmvs2 pmvs/ option-0000 (注意option之前的空格键)
生成的最终结果位于pmvs目录的models 文件夹下,名称为option-0000.ply,直接使用meshlab打开此文件便可以看到结果。
用自己照的图重建结构
ps:
1.
于如何确定相机制造商Camera make和型号Camera model,可以把你拍摄的一张照片放到bin文件目录中,打开终端,通过jhead程序进行确认,输入命令:
jhead myphoto.jpg(图片名称)
2.
查到CCD/CMOS宽度信息后,在bin目录下找到extract_focal.pl配置文件,使用记事本程序打开,按照相应格式把你的相机传感器宽度信息加进去。注意格式要严格按照规定:
"[Camera make] [Cameramodel]" => [Sensor width]
(即"[相机制造商] [相机型号]" => [传感器宽度])。
3.
图片尺寸过大不可以,长改为2000,美图看看很方便,可以批量修改。