Bundle Adjustmentは、複数の画像の特徴点から特徴点の三次元位置とカメラの位置等を最適化する手法です。実際のところ、これを実現する手法はいくつかありますが、Bundle Adjustmentは最も精度が高いものです。しかしながら、もっとも計算メモリと計算量が必要です(これを減らす手法が様々提案されていますが割愛)。
これを実装するのは結構面倒だと思い、有名なのでいろいろライブラリがあるだろうと探してみると。Wikipediaが一番整理されてた。Bundle adjustment
いろいろあるけど、ロバストで様々なコミュニティで使われているsbaを使うこととした。で、とあるところにopencvのwapperとしてcvsbaがあり、インターフェースが楽と書いてあったので、cvsbaを動かしてみる。
1.ダウンロード
公式ページに行き、以下の二つのファイルをダウンロード
cvsba-1.0.0.tgz
cvsba_simple_test.tgz
2.CLapackのコンパイル
cvsbaにはCLapackが必要なので、ダウンロードしコンパイルしておく。詳細は、別のページを参照してください。
3.コンパイル
・cvsba-1.0.0のcvsba以下をプロジェクトの中に組み込む。具体的には、フォルダを作ってAdd Exist fileですべてのファイルを読み込むだけ。
・Properties でCLapackのインクルードのフォルダを追加
・Properties でCLapackのLinkerにライブラリのフォルダを追加
・Properties でCLapackのLinkerのAdditional Dependencyに以下のファイルを追加
libf2c.lib
blas.lib
lapack.lib
・cvsba_sample_testをコンパイルする。
4.実行
Initial error=40111.6, Final error=2.14049e-005
とでれば成功
詳細はこれから見ていき、応用してくとする。
0 件のコメント:
コメントを投稿