windows7下實現Bundler並通過cygwin編譯運行以及pmvs、cmvs的使用(2)

本文參考博客http://www.cnblogs.com/mothe123/p/3570981.html ,其中有一個錯誤,在這裏進行了改正,先轉載下來以防丟失

本人電腦是WIN7,64位操作系統

Bundler的配置:


        Bundler的配置有兩種途徑:1)通過makefile;2)通過VS。這裏我不建議用VS配置。因爲VS配置出來的少了一個Bundle2Vis.exe。而且代碼幾個錯誤需要改,比較麻煩,如果一定想在VS下配置,請參考:http://blog.csdn.NET/halfwet/article/details/6973918。但是在Bundler2PMVS中,我將//mkdir(output_path,0770)修改成mkdir(output_path)而不是博客所說的_mkdir(output_path),才成功的。
(1) 下載並安裝CYGWIN(下載地址: http://cygwin.com), 這裏安裝時並不需要全部安裝,那樣的話就太費事了,具體安裝步驟及需要安裝的軟件看我的另外一篇博客:http://blog.csdn.net/baidu_32134295/article/details/53227270
(2) 下載並解壓Bundler源碼bundler-v0.4-source.tar.gz(下載地址:http://phototour.cs.washington.edu/bundler/), 假設Bundler的安裝位置在/bundler
(3) 編譯Bundler
    在編譯之前請大家在/src打開Bundle2PMVS.cpp將217行的

fprintf(f_scr, "mv  pmvs/%s.rd.jpg %s/visualize/%08d.jpg\n", 修改爲 fprintf(f_scr, "mv  %s.jpg %s/visualize/%08d.jpg\n"。原因後面第(6)步大家會知道。
$ cd /bundler
$ make
(在編譯到BundlerApp.h文件第620行, 出現錯誤: 不能直接調用構造函數'SkeletalApp::BundlerApp')該頭文件在/bundler/src目錄中, 註釋掉該行, 繼續make, 可以通過編譯此次make共生成bundler.exe, Bundle2PMVS,exe, BundleVis.exe, KeyMatchFull.exe, RadialUndistort.exe,  libANN_char.dll, 都放置在/bundler/bin目錄下。
(4) 下載SIFT(下載地址: http://www.cs.ubc.ca/~lowe/keypoints/siftDemoV4.zip), 解壓後將其中的siftWin32.exe拷貝到/bundler/bin, 這個siftWin32.exe會被Bundler調用作爲特徵點探測器。
(5) 運行Bundler
         Bundler裏面有兩個examples,裏面存放了若干不同視角的圖片,我們使用其中的一個example ET。
$ cd /bundler
$ mkdir result

$ cd result
$../RunBundler.sh../examples/ET (注: ../examples/ET指明用於進行多視角重建的圖像所在目錄)此時已經運行完Bundler, 在./bundle/bundle.out文件裏有重建的稀疏點3D座標和相機參數, 具體說明參見/bundler/readme.txt。
這樣/bundler會生成兩個文件夾/bundle和/prepare。
(6) 將Bundler的輸出轉換爲CMVS-PMVS2的輸入(此步驟可選, 如果還要使用Dr. Furukawa的PMVS2軟件進行稠密重建的話)
         Bundler會生成一個Bundle2PMVS.exe用於將Bundler生成的結果轉化成CMVS要求的輸入。注意這裏的操作一定是在bundler的根目錄下面。否則後面生成的目錄文件會有錯
$ ./bin/Bundle2PMVS.exe prepare/list.txt bundle/bundle.out
       此時生成了pmvs子目錄, 編輯裏邊的prep_pmvs.sh, 指明BUNDLE_BIN_PATH路徑來尋找RadialUndistort.exe和Bundle2Vis.exe。注意我們用的是Cygwin所以改BUNDLE_BIN_PATH要注意目錄的格式,比如我的Bundler在E盤根目錄,那麼BUNDLER_BIN_PATH=/cygdrive/e/bundler-v0.4-source/bin
(7) 完成最後的轉換$ ./pmvs/prep_pmvs.sh
      在pmvs目下生成txt, visualize, models目錄和bundle.rd.out, list.rd.txt, vis.dat, pmvs_options.txt文件, 這些都是PMVS2的輸入。pmvs子目錄的文件如下圖:

(6)-(7)的截圖:

CMVS-PMVS的配置:

         Yasutaka Furukama網站上提供的CMVS是基於Linux上的比較。好在有個人將它轉成了可以在Windows下運行的文件,見http://francemapping.free.fr/Portfolio/Prog3D/CMVS.html
(1)  下載CMVS-PMVS並解壓縮。發現裏面有一個binariesWin-Linux文件夾,裏面有配置好的基於Linux,Win32,和Win64的可執行程序,將CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010文件夾中的文件全部拷貝到之前的result文件夾目錄下(下圖這些文件)。

打開cmd

1.進入E盤(E:)

2.進入bundler/result文件夾下(cd E:\bundler\result)

3.輸入cmvs pmvs/

4.輸入genOption pmvs/(這一步不知道做什麼的。。。)

5.pmvs2 pmvs/ option-0000(注意option之前的空格鍵)


這樣,我們發現/pmvs/models/文件夾多了幾個文件,其中*.ply文件爲3D模型文件用下面的軟件可以查看。

 

稠密網格的顯示:

      我們這裏使用的是MeshLab:http://meshlab.sourceforge.net/
(1) 創建一個新的New Empty Project。
(2) File->ImportMesh,進入E:\bundler\result\pmvs\models,讀入裏面的模型文件(如圖所示)


發佈了77 篇原創文章 · 獲贊 110 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章