什么是Bundler
Bundler是一個采用C和C++開發的稱為sfm(struct-from-motion)的系統,它能夠利用無序的圖片集合(例如來自網絡的圖片)重建出3D的模型。最早的版本被用在Photo Tourism的項目上。
Bundler的輸入是一些圖像、圖像特征以及圖像匹配信息,輸出則是一個根據這些圖像反應的場景的3D重建模型,伴有少量識別得到的相機以及場景幾何信息。系統借用一個由Lourakis 和Argyros提供的稱為Sparse Bundle Adjustment的開發包的修改版,一點一點遞增地重建出圖像場景。Bundler已經成功的應用在許多網絡相冊系統,尤其是一些建筑相冊里。
前幾天一直忙錄公司招聘的事情,沒有更新博客。上一篇博客我們討論了Bundler的安裝和配置,今天我們來討論一下Bundler的編譯方法。筆者主要是在Ubuntu進行下面的編譯安裝工作,而Windows下如果已經裝了Cygywin,整個過程大同小異。
編譯安裝Bundler比直接安裝它編譯好的二進制文件繁瑣的多,因為它依賴的庫較多。整個過程如下所示:
一、Bundler源碼包的獲取
1. 到 http://phototour.cs.washington.edu/bundler/下載Bundler的源碼包。Windows用戶可以直接下載 bundler-v0.4-source.zip;Linux用戶可以直接下載 bundler-v0.4-source.tar.gz,或直接在終端運行如下代碼獲取源碼包:
wget http://phototour.cs.washington.edu/bundler/distr/bundler-v0.4-source.tar.gz
2. 下載完成后,解壓該源碼包:
tar -zxvf bundler-v0.4-source.tar.gz
二、GFortran的安裝
Bundler所依賴的庫中有些庫是用Fortran寫成的。為了編譯Fortran程序,需要安裝GFortran編譯器。
sudo apt-get install gfortran
三、編譯 / 安裝依賴庫
Bundler所依賴的外部庫列表如下:
LAPACK :線性代數計算庫
BLAS :基礎線性代數子程序,在LAPACK包中有自帶,但需進行設置
libjpeg :jpeg庫,Ubuntu已自帶
libz :通用目的的壓縮庫
1. LAPACK、BLAS的編譯
LAPACK是一個高性能的線性代數計算庫。我已經在Ubuntu下編譯成功,不想編譯它的讀者可以直接下載我編譯的結果lapack4Bundler.zip,解壓后共3個文件,將它們拷貝到Bundler工程的lib文件夾里即可。如果想體驗LAPACK的編譯過程,則可以參考下面幾步:
首先下載LAPACK編譯包,下載地址為: http://www.netlib.org/lapack/#_strong_lapack_version_3_3_0_strong,目前官方放出的最新版是lapack-3.3.0.tgz:
wget http://www.netlib.org/lapack/lapack-3.3.0.tgz
下載完后解壓:
tar -zxvf lapack-3.3.0.tgz
在make之前,需要先創建一個make.inc文件,可以直接根據make.inc.example創建:
cd lapack-3.3.0cp make.inc.example make.inc
如果是使用Ubuntu+gfortran,則無須更改make.inc里的內容,否則需要根據系統環境和編譯器修改文件里對應的選項。LAPACK依賴BLAS,因此在編譯LAPACK前需要提供BLAS包,所幸LAPACK里已經集成了BLAS包,但默認并不編譯它。要想編譯LAPACK前先編譯BLAS,需要修改一下makefile:
gedit Makefile
光標定位到第11行并將內容改為:
lib: blaslib lapacklib tmglib
保存退出,然后開始make整個工程。
make
編譯完成后,目錄下將生成blas_LINUX.a、lapack_LINUX.a和tmglib_LINUX.a三個文件。如圖1所示。
圖1 LAPACK編譯結果
將這三個文件分別更名為: libblas.a,liblapack.a,libtmglib.a并復制到bundler-vX.X-source/lib目錄下。
2. zlib的編譯安裝
zlib是提供數據壓縮用的函式庫,由Jean-loup Gailly與Mark Adler所開發,初版0.9版在1995年5月1日發表。zlib使用DEFLATE算法,最初是為libpng函式庫所寫的,后來普遍為許多軟件所使用。此函式庫為自由軟件,使用zlib授權。截至2007年3月,zlib是包含在Coverity的美國國土安全部贊助者選擇繼續審查的開源項目。
zlib的官方主頁為: http://www.zlib.net/,目前最新版為:zlib-1.2.5:
wget http://zlib.net/zlib-1.2.5.tar.gz
完成后解壓:
tar -zxvf zlib-1.2.5.tar.gz
cd進去編譯安裝:
cd zlib-1.2.5./configuremakesudo make install
四、編譯安裝Bundler
回到Bundler的工程目錄,make進行編譯安裝。
make
完成后在bin目錄下就會看到新生成的bundler可執行文件。
五、測試Bundler
參考上一篇博文,將SIFT文件拷貝到bin目錄,然后在終端執行:
./RunBundler.sh examples/ET
完成后,提示運行成功,如圖2所示。
圖2 Bundler運行結果
作者:Joseph Pan (轉載請注明出處http://www.cnblogs.com/weizhoupan/archive/2011/03/08/1977366.html )