Linuxでの3D再構成にはBundler + CMVS-PMVSを使用します



Use Bundler Cmvs Pmvs



Linuxでの3D再構成にはBundler + CMVS-PMVSを使用します

参照文書:



(1)Linuxでの3D再構成にBundler + CMVS-PMVSを使用するブログ: http://blog.csdn.net/u013358387/article/details/71576660 (どうもありがとうございました)

(2)BundlerとPMVSの一般的な問題と解決策 http://blog.csdn.net/xdczj/article/details/51301877(ありがとうございます)



データセット:

3D再構成データセット: http://vision.ia.ac.cn/zh/data/index.html


1.はじめに



BundlerとCMVS-PMVSは、マルチビュー3D再構成に非常に便利なツールキットです。 Bundlerは、一連の無秩序な画像を使用してシーンのスパースポイントクラウドを生成し、各画像のカメラパラメータ(内部および外部パラメータ)を推定します。 CMVS-PMVSは、既知の画像とそれに対応する画像のカメラパラメータ(Bundlerによって取得)を使用して、高密度の3次元再構成(高密度の再構成)を実行できます。

次に、ソースコードのダウンロード

BundlerとCMVS-PMVSのソースコードをgithubから直接ダウンロードし、Linuxターミナルで次のコマンドを入力して、ダウンロードが完了するのを待ちます。

1、git clonehttps://github.com/snavely/bundler_sfm.git

二、git clonehttps://github.com/pmoulon/CMVS-PMVS.git

Bundlerは特徴抽出にSIFTを使用したいので、SIFTをダウンロードするには次のWebサイトにアクセスする必要があります

sudo apt-getinstall liblapack-dev libblas-dev minpack-dev f2c gfortran jhead imagemagick

次に、SIFT依存関係のインストールを続行します

1、sudo apt-getinstall libc6-dev-i386

CMVS-PMVS依存関係をインストールします

1、sudo apt-getinstall libgtk2.0-dev libdevil-dev libboost-all-dev libatlas-cpp-0.6-devlibatlas-dev libcminpack-dev libgfortran3 libmetis-edf-dev libparmetis-devfreeglut3-dev libgsl0-dev

第四に、BundlerとCMVS-PMVSをコンパイルします

まず、Bundlerをコンパイルし、Linuxターミナルでcdコマンドを使用してMakefileファイルが配置されているディレクトリであるbundle_sfmに入り、ターミナルでmakeコマンドを入力し、Enterキーを押してコンパイルが完了するのを待ちます。コンパイルが完了すると、実行可能ファイルがbinディレクトリに生成されます。 Bundlerをスムーズに実行するには、次のことを行う必要があります。

手順1:ダウンロードしたSIFTプログラムを見つけ、解凍後、sift実行可能ファイルをbundle_sfmの下のbinディレクトリにコピーします。

ステップ2:依存関係をインストールするときにjheadをインストールしました。jheadファイルをbundle_sfmの下のbinディレクトリにコピーする必要があります。コマンドを使用できます

sudocp / usr / bin / jhead bin /

手順3:bundle_sfm / bin /ディレクトリに生成されたlibANN_char.soファイルをシステムライブラリにコピーします

sudocp bin / libANN_char.so / usr / lib /

次に、CMVS-PMVSのコンパイルを続行します。引き続き、cdコマンドを使用してCMVS-PMVS / program /に入り、次のコマンドを順番に実行します。

1、mkdirbuild && cdビルド

二、cmake ..

3、作る

実行が完了すると、CMVS-PMVSがコンパイルされ、生成された実行可能ファイルがビルドディレクトリの下のメインディレクトリに配置されます。次の操作の便宜のために、生成された実行可能ファイルcmvs、genOption、pmvs2をbundle_sfmディレクトリのbinにコピーします。

V.3D再構成のためにBundlerとCMVS-PMVSを実行する

含まれている例の写真をテストに使用できます。 3D再構成を実行する方法を説明するために、例としてETを取り上げます。まず、cdコマンドを使用してETフォルダーに入り、次のコマンドを実行します

../../RunBundler.sh

最終的には、多くの結果ファイルが生成されます。その中で、bundleフォルダーのbundle.outは、再構築されたスパースポイントの3D座標とカメラパラメーターを格納します。

次に、PMVSを使用して密な点群を再構築できます。その前に、Bundlerの出力をCMVS-PMVSの入力形式に変換する必要もあります。 binの下のBundle2PMVSを使用して、このプロセスを完了することができます。

1、../../bin/Bundle2PMVS prepare / list.txtbundle / bundle.out ../../bin/Bundle2PMVS prepare / list.txtbundle / bundle.out

このとき、pmvsディレクトリが生成されます。このディレクトリにprep_pmvs.shファイルがあります。このファイルを編集し、内部のBUNDLER_BIN_PATHをバンドラーのbinフォルダーの実際のパスに変更します。例えば:

BUNDLER_BIN_PATH = / home / AAAAAA / temp / bundler_sfm / bin

次に、次の操作を順番に実行します

1、sh pmvs / prep_pmvs.sh

二、../../bin/cmvs pmvs /

3、../../bin/genOption pmvs /(このステップが実行された後は何も起こりません)

4、../../bin/pmvs2 pmvs /オプション-0000(ノートオプション(前のスペースバー)

生成される最終結果は、pmvsディレクトリのmodelsフォルダーに、option-0000.plyという名前で配置されます。このファイルをmeshlabで開くと、この結果を直接確認できます。以下に示すように:


3D再構成のために自分で写真を撮ることもできますが、2つの問題に注意する必要があります

1. Bundlerは、3D再構成を実行するときに、jheadを使用して写真情報を読み取り、読み取りカメラモデルに従ってbinディレクトリのextract_focal.plファイルからccd_widthsを読み取ります。使用するカメラがこのファイルリストにない場合は、Own camera ccd_widthsをクエリし、形式に従ってextract_focal.plファイルを手動で追加する必要があります。最後にあるソリューションの補足を参照してください。

2.画像​​サイズの問題。データを実行しているときに、画像サイズが大きすぎて失敗しました。現時点では、画像を比例的に拡大縮小するだけで済みます。一般的な設定は2000で、幅の比率を維持できます。 Linuxではimagemagickを使用することをお勧めします。これは便利で高速です。チュートリアルは参照できます http://blog.sina.com.cn/s/blog_68f88be10102vohm.html

最後に、独自の3D再構成結果を添付します(結果はあまり満足のいくものではありません)

九華山漢灘江


ティーボックス

詰め替え

*補足:問題は図に示されています


つまり、カメラのCCDセンサーの幅情報が見つかりません。

解決:

①最初にカメラのモデルを決定してから、オンラインに接続してカメラのCCDパラメータを見つけます。プログラムで必要なCCD幅は、CCDカメラしか使用できないという意味ではなく、CMOSカメラでも同様であることに注意してください。 CMOSセンサーの幅は、必要なCCDの幅です。

②CCD/ CMOS幅情報を見つけたら、binディレクトリでextract_focal.pl設定ファイルを見つけ、メモ帳プログラムで開き、カメラセンサーの幅情報を対応する形式で追加します。形式は規則に厳密に従う必要があることに注意してください。

'[カメラメーカー] [カメラモデル]' => [センサー幅]

(つまり、 '[カメラメーカー] [カメラモデル]' => [センサー幅])。

さらに、カメラメーカーのカメラメーカーとモデルカメラモデルの判別方法については、撮影した写真をbinファイルディレクトリに入れ、ターミナルを開き、jheadプログラムで確認し、次のコマンドを入力します。

jheadmyphoto.jpg(写真名)