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