Bunndlerの設置と配置

6350 ワード

Joseph Pan(転載は出所を明記してください。http://www.cnblogs.com/weizhoupan/archive/2011/03/05/Intro_on_Bundler.html)
一、何がBundelerですか?
Bundelerは、CおよびC++を用いてsfmというシステムを開発し、無秩序なピクチャセット(例えば、ネットワークからの画像)を利用して3 Dのモデルを再構築することができます。最初のバージョンはPhotourismのプロジェクトに使用されます。
Bundelerの入力は一部の画像、画像特徴及び画像マッチング情報であり、出力はこれらの画像の反応するシーンに応じた3 D再生モデルであり、少量の認識を伴って得られたカメラ及びシーン幾何学情報である。システムはLourakisとAgyrosから提供されたSparse Bundele Adjustという開発パッケージの修正版を借りて、少しずつ図を再構築する。Bunndlerはすでに多くのネットアルバムシステム、特にいくつかの建築アルバムに応用されています。
ここではBundelerのダウンロード、インストール、開発環境構成について調べてみます。
二、Bunndlerのダウンロード
Bunndlerのダウンロードページは以下の通りです。http://phototour.cs.washington.edu/bundler/
windowsで実行可能なファイルが必要なら、直接ダウンロードできます。
ソースコードが必要であれば、現在の比較的新しいバージョンをダウンロードできます。 あるいは:bundler-v 0.4-source.tar.gz (両者は違いません。後者はLinuxでよく使われる圧縮形式です。)
三、Bunndlerの設置配置
Windowsを例にとると、Bundelerをダウンロードして、E:/bundler(以下はBASE PATHで代替します。)
Bundelerを成功させる前に、いくつかの準備をする必要があります。
1.Cygwinをダウンロードしてインストールします。Cygwinは多くのフリーソフトウェアの集合です。最初はCygnus Solutionsによって開発されました。様々なバージョンのMicrosoft WindowsでUNIXシステムを実行します。BunderはデフォルトではUnix環境下でshellスクリプトを実行することでBunderを起動します。Windows環境下でCygwinをインストールするためにshellスクリプトを実行します。
cygwinをダウンロードするには、setup.exeで直接右ボタンを押して「別名保存」をクリックすればいいです。右側の住所もコピーできます。http://cygwin.com/setup.exe
cygwinのインストールは比較的簡単です。この教程を参考にしてもいいです。http://www.programarts.com/cfree_ch/doc/help/UsingCF/CompilerSupport/Cygwin/Cygwin1.htm
ただし、Bundelerプログラムでは、perl、pythonを使用していくつかの前処理を行うので、Devel、Perl、Pythonの3つのコンポーネントライブラリをインストールする必要があります。
ダウンロードのインストール時間が長いので、しばらく待たなければなりません。360などのウイルス対策ソフトをインストールすると、セキュリティ警告が表示されます。無視すればいいです。
2.特徴検出器をダウンロードします。BundelerはSIFTを使って特徴抽出を行うことを推奨しています。SIFTの作者David Loweのホームページに彼が提供したSIFT Demoを私達の検出器としてダウンロードします。ダウンロードページは以下の通りです。 http://www.cs.ubc.ca/~lowe/keyboots/ あるいは直接右のダウンロードアドレスをクリックしてダウンロードします。SIFT demo program(Version 4、July 2005)
ダウンロードが完了したら、この文書を解凍して、ディレクトリの下のsiftWin 32.exeファイルをBASEUPATH/binディレクトリにコピーします。
3.写真を用意します。分析処理を行う画像を一つのディレクトリに入れます。例えば、BASEHUPATH/Pictures/中(以下、ピクチャーリストの代わりにPicturesで統一します。)。例として、Bundeler自身も二つの写真を提供しています。それぞれBASEUMTH/examples/ETとBASEUPATHとBASETY/examples/mikerに置いています。
4.Bundelerを実行します。Cygwinを開いて、cdはBASEHuPATHディレクトリの下に位置して、次のコマンドを入力します。
..。
を選択します。
RunBunndler.sh Pictures
Bunndlerについても多くのコマンドラインオプションが提供されていますが、具体的な使い方はBASEHUPATH/README.txtファイルを参照することができます。
例の画像をテストしたいだけなら、入力できます。
..。
を選択します。
RunBunndler.sh examples
を選択します。
ET
または:
..。
を選択します。
RunBunndler.sh examples
を選択します。
Kermit
【図2】ETを実行する例のスクリーンショットである。
  
図2 WindowsではcygWinを用いてBundelerを実行した結果
Linuxでのインストールは簡単です。主な違いは以下の点です。
1.Linux自体はshellをサポートしていますので、Cygwinをインストールする必要はありません。
2.LoweのSIFT Demoをダウンロードした後、持参したsiftWin 32.exeはもう利用できません。マニュアルmakeでsiftの実行可能ファイルをコンパイルしてください。完成したら、siftファイルをBASEuPATH/binディレクトリにコピーします。
3.上記の2ステップが完了しても足りません。RunBunndler.shスクリプトを直接実行すると、図3に示すエラーが提示されます。
  
図3ヒント共有ライブラリファイルが不足しています。エラー
これは共有ライブラリが設置されていないからです。一番直接的なやり方はBASEUPATH/binディレクトリのlibANNuchar.soを/libにコピーすることです。
$sudo cp libANNuchar.so
を選択します。
lib
RunBunndler.shスクリプトをもう一回実行すれば、図4に示すようにうまく実行できます。
  
図4 Linux下のBundelerの運転結果
四、Bunndlerの出力フォーマット
私たちはBASEHUPATH/Bundelerディレクトリで生成結果を見つけることができます。図5に示すように。
  
図5 Bunndlerディレクトリに格納された処理結果
Bunndlerが出力するファイルの多くは「bundle(*.out)」という形で命名されています。私たちは「bundleファイル」と呼ばれています。デフォルトコマンドの下で、Bundelerは各画像を分析して登録した後、該当するbundleファイルを出力して現在の状態情報を保存します。「bundle_.out」「Bundeler」という形式で命名されました。すべてのファイルを登録すると、Bundelerは最終的なファイル「bundle.out」を出力します。また、ラウンド終了時には、次のようにいくつかの拡張子の名前を「ply」として生成します。これらのファイルには、再構築されたカメラとポイントの情報が含まれています。これらのplyファイルは専用ビューアscanalzeを使って確認できます。アドレスは以下の通りです。http://graphics.stanford.edu/software/scanalyze/
これらのbundleファイルには、推定された場面やカメラの幾何学的情報が含まれています。ファイルのフォーマットは以下の通りです。
ヽoo。ツ。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
3
<>
num ucameras
>
<>
num uploid nts
>
[2 integers]
<>
camera 1
>
<>
camera 2
>

<>
camera
>
<>
point 1
>
<>
point 2
>

<>
pointM
>
各キャメラ本体 の値は推定されたカメラ内部および外部パラメータであり、形式は以下の通りである。
<>
f
>
<>
k 1
>
<>
k 2
>
[the focal length,followed by two radial distortion coeffs]
<>
R
>
[a 3 x 3 matrix representing the camera rotation]
<>
t
>
[a]
3
を選択します。
vector describing the camera tranlation]
各カメラの順序は、画像リストの出現順序に従って指定される。
各ポイントのエンティティフォーマットは以下の通りです。
<>
position
>
[a]
3
を選択します。
vector describing the 3 D position of the point]
<>
カラー
>
[a]
3
を選択します。
vector describing the RGBカラーthe point]
<>
viewリスト
>
[a list of view the point]
is
visible
in

ここで、view listは、各ポイントがあるシーンリストの情報を格納し、最初の数は、各シーンリストの長さ情報であり、次いで、それぞれカメラインデックス情報、このポイントがあるSIFTキーポイントシーケンスのインデックス情報、およびこのキーポイントがある位置に続く。
これらのbundleファイルの内容と小さい穴の結像する模型によって、私達は大体1台のカメラのパラメーターを得ることができます。
focal length(f)
two radial distortion parameters(k 1 and k 2)、
rotation(R)、
translation(t)
次の法則に従って、3 D点Xをパラメータ(R,t,f)のカメラに投影することができます。
P
を選択します。
R

X

t(conversion from world to camera coordination)p
を選択します。
を選択します。
P
を選択します。
P.z(perspective division)p
'
=f*r(p)*p(conversion to pixel coordination)
ここで、P.zはPのz座標値であり、r(p)は径方向歪み補正を算出するためのスケール変数値の関数である。
r(p)
を選択します。
1.0

k 1

124 124
p
ヽoo。ツ
2

k 2

124 124
p
ヽoo。ツ
4
..。
最後に、上の式を利用してカメラの方向を得ることができます。
R
'
*[0-1]
'
(i.e.the third row of R or third column of R
'
)
ここで、'は行列またはベクトルの転置を表し、カメラの空間位置は: 
を選択します。
R
'
*t.
五、まとめ
本論文では、Bundelerを使って、写真からカメラパラメータと空間ポイントクラウドデータを得る方法を紹介し、WindowsとLinuxでのインストールと配置方法、および出力結果のフォーマットを詳細に紹介します。得られたデータは3 D再構成に応用できます。Bunderを利用して、比較的少ない点雲を得ることができます。データ。より密な点が必要なら、Yasutaka Furukawa博士が書いたもう一つの非常に強力なパッケージをPMVS 2といいます。一般的な方法はBundelerを使ってカメラのパラメータを得ることです。そしてBunndle 2 PMVSプログラムを使って、生成結果をPMVS 2の入力に変換して、PMVS 2を使ってもっと密集することができます。もう一つのFurukawa博士が開発した実用ツールであるCMVSに興味があります。CMVSは一つのシーンクラスタープログラムです。PMVS 2を使う前に、それを使っていくつかの前処理を行うことができます。