BundleFusion编译与使用

最近淘宝了一个二手的Kinect v1, 没有涉足过RGB-D深度相机,感觉挺好玩的,BundleFusion算法可以实现三维的实时重建。那么就开始安装。
源码是基于Window平台下的.
我的安装环境

  1. Windows 10
  2. CUDA 8
  3. VS 2013
  4. DirectX SDK June 2010

我首先准备好了用到的所有软件
在这里插入图片描述
一个一个来解决:

安装CUDA8.0

操作系统就不用多讲了。我电脑上安装了cuda 9.2 可以在DOS命令下输入
nvcc -V 查看版本号

在这里插入图片描述
这是我按照cuda8 以后的,其实系统中可以安装多个cuda版本,我的系统中有两个版本,查看环境变量
在这里插入图片描述

Path
如果想切换到cuda9.2的话,需要修改CUDA_PATH和PATH中的两个地址

安装Vs 2013

起初我电脑上有VS 2015,为了偷懒不想安装vs 2013 ,发现vs 2015加载项目失败,所以还是乖乖的安装了…

安装DirectX SDK June 2010

安装这个库,有时候会遇到报错,安装失败,一般是由于操作系统中已经安装了有关vs 2010c++的开发环境
在这里插入图片描述
那么在控制面板里把它卸载掉即可,还有我当时系统中还装了c++ 2010 的runtime的也把对应的卸载掉,否则还是安装不上。

安装源码

项目第地址 http://graphics.stanford.edu/projects/bundlefusion/添加链接描述

下载源码:https://github.com/niessner/BundleFusion
下载mlib:https://github.com/niessner/mLib
下载mlibexternal :http://kaldir.vc.in.tum.de/mLib/mLibExternal.zip

然后把mlib 放到bundfusion目录下的external目录中
mLibExternal 放在bundfusion目录中
具体如截图
在这里插入图片描述

编译源码

  1. 在编译之前,需要修改CUDA的版本,默认情况下是CUDA7.0
    用记事本或者Sublime 打开 FriedLiver/FriedLiver.vcxproj
    在这里插入图片描述
    在这里插入图片描述

第35、375行 把7.0 改成8.0

  1. VS2013 启动项目以后,主要编译Release版本,然后需要设置gpu的计算力
    在这里插入图片描述
    根据GPU可以到官网查询

  2. 设置传感器的类型
    在这里插入图片描述
    用到哪个开启哪个,然后编译。我这主要是kinect v1 所以第一个开启,
    还行要安装Kinectv1的驱动
    到官网下载 KinectDeveloperToolkit-v1.8.0-Setup.exe
    安装完之后,开始编译

    在编译是我遇到了一个问题,找不到boost的array_wrapper.h文件,当时以为是自己还需要安装boost 版本吗,其实在mlibexternal中已经包含了用的所有的库,包括opencv boost 不过确实那个头文件不存在,但是array.h 文件存在,我用它进行了替换,然后就成功了。

运行BundleFusion

  1. 创建scans文件夹,用来保存扫描后的mesh
    在这里插入图片描述
  2. 修改zParametersDefault.txt中的参数
s_sensorIdx = 0;  // 修改成0 表示Kinect v1 其他的上面有注释,改成对应的编号值
s_hashNumBuckets = 100000; //800000;				//smaller voxels require more space
s_hashNumSDFBlocks = 100000; //200000; 100000;	//smaller voxels require more space

// 可以改小些,否则需要更多的计算空间
  1. zParametersBundlingDefault.txt
s_maxNumImages = 800;  // 1200 改成合适的即可

然后直接点击FriedLive.exe 运行,点击Tab键,显示窗口会出现帮助等操作,按2 加载彩色深度图,9 直接把扫描的结果保存到scans 文件中

在这里插入图片描述

速度还是可以的,不过可能是由于kinect v1 精度不高,所以质量不是太好,比较成本比较廉价嘛,该算法我还没有具体研究过的,但是看到代码框架是用到了siftgpu,也是基于特征点进行匹配的,所以在扫描的时候如果画面的特征太少或者是一个白墙的话,很容易卡着不动了,这一点需要注意,接下来要研究里面的源码才行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章