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,也是基於特徵點進行匹配的,所以在掃描的時候如果畫面的特徵太少或者是一個白牆的話,很容易卡着不動了,這一點需要注意,接下來要研究裏面的源碼才行。

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