【轉】win7 64位配置bundler-v0.4-source

來源:互聯網
上載者:User

標籤:

一。什麼是Bundler

 

        

       Bundler是一個採用C和C++開發的稱為SfM(struct-from-motion)的系統,實現了根據使用者提供的無序的映像序列,產生稀疏的三維點雲模型。它能夠利用無序的圖片集合(例如來自網路的圖片)重建出3D的模型。最早的版本被用在Photo Tourism的項目上。

        Photo Tourism系統可以互動式瀏覽和探索大型非結構化情境照片集合。系統有一個基於映像的建模前端,它會自動計算每一張照片的角度,以及稀疏模型對應的情境和形象的3D 模型。

 

圖1.Photo Tourism

        Bundler的輸入是一些映像、映像特徵以及映像匹配資訊,輸出則是一個根據這些映像反應的情境的3D重建模型,伴有少量識別得到的相機以及情境幾何資訊。系統借用一個由Lourakis 和Argyros提供的稱為Sparse Bundle Adjustment的開發包的修改版,一點一點遞增地重建出映像情境。Bundler已經成功的應用在許多網路相簿系統,尤其是一些建築相簿裡。

 

 

二。過程如下:

 

1.訪問 http://www.cs.cornell.edu/~snavely/bundler/ 下載bundler-v0.4-source.zip並解壓。

 

 

 

2.在windows平台下,使用visual studio2010開啟bundler-v0.4-source目錄下的vc++目錄中的工程檔案:Bundler.sln;

 

       然後按順序逐個編譯bundler所需的依賴庫,

       有:5point、ann_1.1_char、cblas、getopt、imagelib、jpeg、matrix、sba-1.5、sfm-driver、f2c、clapack、cminpack等。

編譯f2c時,會給出無法找到#include "sysdep1.h"檔案的錯誤 以及會提示無法找到#include "arith.h"檔案的錯誤。

解決方案:進入f2c的目錄,

                  1>將sysdep1.h0檔案名稱修改為sysdep1.h;

  2>將signal1.h0檔案名稱修改為signal1.h;

  3>建立一個arith.h檔案,在檔案裡添加如下內容即可:

#define IEEE_8087
#define Arith_Kind_ASL 1
#define Long int
#define Intcast (int)(long)
#define Double_Align
#define X64_bit_pointers
#define QNaN0 0x0
#define QNaN1 0xfff80000

這時,編譯f2c,便成功了。

接下來編譯keyMatchFull和Bundler項目,一切順利。:-)

 

為了進行獲得稠密的三圍重建效果,利用Bundler提供的Bundle2PMVS和RadialUndistort工具,產生稠密重建PMVS軟體所需的參數。

編譯Bundlr2PMVS時,在Bundle2PMVS.cpp檔案中會出現“未知的標識符mkdir”的錯誤。

解決方案

1>在檔案的開頭添加#include <direct.h>,

2>將mkdir替換為_mkdir,如下所示:

//mkdir(output_path, 0770);

_mkdir(output_path);

至此,Bundle2PMVS編譯成功。

 

編譯RadialUndistort時,在RadialUndistort.cpp檔案中會出現“無法識別的標識符index” 以及 無法開啟jpeglib.h。

解決方案:1>修改代碼如下所示:

//char *space = index(buf, ‘ ‘);
//if (space) *space = 0;

std::string str(buf);
int space_pos = str.find(‘ ‘);
str.at(space_pos) = 0;

files.push_back(str);

     2>修改LoadJPEG.cpp的標頭檔為#inlcude "jpeglib.h",然後添加jpeglib.h的路徑如下:

 

至此,RadialUndistort編譯成功。

 

 

 

 

3.在成功執行Bundler前,我們需要做幾步準備工作:

 

(1)將需要的檔案複製到指定目錄

        Bundler產生完成後,需要將bundler-v0.4-source\vc++\Debug\目錄下的Bundler.exe、Bundle2PMVS.exe、KeyMatchFull.exe、RadialUndistort.exe、jpeg.dll、ann_1.1_char.dll檔案統統考到bundler-v0.4-source\bin\目錄下。

 

(2)下載和安裝Cygwin

        Cygwin是許多自由軟體的集合,最初由Cygnus Solutions開發,用於在各種版本的Microsoft Windows上運行UNIX類系統。由於Bundler預設是通過在Unix環境下執行shell指令碼來啟動Bundler的,因為在Windows環境下需要安裝Cygwin以執行shell指令碼。

        Cygwin的:http://cygwin.com/

        Cygwin的安裝過程:

 

圖10.選擇下一步

 

圖11.選擇Install from Internet

 

圖12.選擇下載目錄

 

圖13.選擇串連方式 Use Internet Explorer Proxy Settings

 

圖14.這裡彈出的警告一定要選擇“確定”

圖15.選擇需要的安裝包

 

        肯定需要使用Devel組件,但不必全部安裝,選擇裡面的四個關鍵包安裝即可,為了使我們安裝的Cygwin能夠編譯器,我們需要安裝gcc編譯器,預設情況下,gcc並不會被安裝,我們需要選中它來安裝。為了安裝gcc,我們用滑鼠點開組件列表中的“Devel”分支,在該分支下,有很多組件,我們必須的是:

binutils

gcc

//gcc-mingw

gdb

圖16.開啟Devel分支

 

 

 

 

 

 

 

 

圖20.選擇gdb

 

        但要注意一點,Bundler程式中會使用perl、python來進行一些預先處理,因此在安裝過程中需要把Devel、Perl、Python三個組件庫都選上。另外還有ImageMagick這個庫,用來處理圖片。

 

圖21.選擇ImageMagick庫,在Graphics分支下

 

圖22.選擇perl、python組件庫

 

圖23.安裝完成(時間可能比較長)

(3)下載特徵檢測器

        Bundler推薦使用SIFT來進行特徵提取,可以到SIFT的作者David Lowe的首頁上下載他提供的SIFT Demo作為我們的檢測器。下載頁面為:http://www.cs.ubc.ca/~lowe/keypoints/或者直接點擊下載:SIFT demo program(Version 4, July 2005)

        下載完成後,解壓該文檔,將目錄下的siftWin32.exe檔案拷貝到bundler-v0.4-source\bin目錄中。

圖24.特徵檢測器

 

(4)準備圖片

        將要進行分析處理的圖片放到一個目錄裡,Bundler自己也提供了兩套圖片,分別放在bundler-v0.4-source\examples\ET和bundler-v0.4-source\examples\kermit中。

 

(5)運行Bundler

        開啟Cygwin,cd定位到BASE_PATH目錄下(你的Bundler所在目錄,定位方法參見Cygwin指令),然後輸入下面的命令:./RunBundler.sh examples/ET 或者:./RunBundler.sh examples/Kermit

 

./RunBundler.sh examples/ET   ./RunBundler.sh examples/Kermit  

  

 

 

 

 

 

 

圖27.Bundler輸出的結果(目錄bundle)

 

 

 

4.後續工作

 

Bundler輸出的檔案大多以“bundle_*.out”的形式來命名,我們稱之為“bundle檔案”。預設命令下,Bundler在每張圖片經過分析和註冊(register)後都會輸出一個相應的bundle檔案用來儲存當前的狀態資訊,並以“bundle_<n>.out”的形式命名。當所有的檔案都註冊後,Bundler就會輸出一個最終的檔案“bundle.out”。另外,每一回合結束時還會緊接著產生一些尾碼名為“ply”的檔案,這些檔案包含的是經過重建後的相機和點的資訊。這些ply檔案可以通過使用專用的查看器scanalyze來查看,地址為:http://graphics.stanford.edu/software/scanalyze/。當然也可以通過meshlab來查看,為:http://meshlab.sourceforge.net/。

利用Bundler可以得到較為稀疏的點雲(pointclouds)資料。如果需要得到更密集的點,可以使用Yasutaka Furukawa博士寫的另外一個非常強大的軟體包,稱為PMVS2,下載:http://grail.cs.washington.edu/software/pmvs/。一種比較常見的途徑是使用Bundler來得到相機參數,然後使用Bundle2PMVS程式,將產生結果轉換為PMVS2的輸入,然後使用PMVS2來得到更密集的點雲。另外,讀者們可能會對另外一個同樣由Furukawa博士開發的工具 + 生產力——CMVS感興趣,CMVS是一個情境聚類程式,在使用PMVS2前可以使用它來進行一些預先處理,下載:http://grail.cs.washington.edu/software/cmvs/。

 

 

轉自:http://m.blog.csdn.net/blog/u010069101/23294019#

【轉】win7 64位配置bundler-v0.4-source

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.