地面の目印 -エスワン-

さまざま、気の向いたとき
数学関係は、今後 https://fifthtaxi.hatenadiary.jp/ へ

colmapがようやく最後まで動く

2022-08-18 15:42:28 | 3D

1. はじめに

 colmapによる3Dモデル作成に取り組んでいることは、以前colmapのビルドの記事に記した。その後、あれこれ試したがどうもうまくいかない。今回ようやくdense constructionを完了し、meshモデルも作成することができた。meshモデルをMeshLabに読み込むとグレー表示で色が消えていたのが、残念であるが結果をメモとして残しておく。

 

2.colmapの実行環境

 今回のcolmapは以下の環境で実行した。

OS: Windows 10 Home
Version: 21H1
CPU: Intel(R) Core(TM) i7-4770
RAM: 8GB
GPU: NVIDIA Quadro K600
GPU Driver: NVIDIA CUDA 10.2.89
GPU RAM:1GB

colmap:colmapのビルド に記した新たにビルドしたもの

使用した写真:SfM事始めに記した26枚のデコイのカモの写真のうちの連続した8枚。画像のサイズは4160x3120 である。なお、画像ファイル名は枚数を少なくしたのは、GPUメモリが多くないので計算時間を押さえたかったためである。

 

3.実行

(1)Automatic reconstruction

 DOS窓から colmap.bat を実行すると以下の画面が現れる。

 File > New project を選択すると、以下のwindowが現れ、Databaseファイル画像を指定するように求められるので、

DatabaseNewを押下し、予め定めた作業フォルダ(ここではworkとする)内に例えばdatabaseと指定する。画像は作業フォルダ内に予め画像8枚を収めたフォルダー(ここではimagesとする)を指定し、saveする。ここで、念のため File > Save project as を選択し、プロジェクトファイル(project.ini)をsaveしておく。

 次に、一気通貫でメッシュモデルまで作成が可能な Reconstruction > Aitomatic reconstruction を選択する。すると下図のようなパラメータ設定画面が現れるので、上で設定した作業フォルダ―と画像ファイルのフォルダーを指定する。また、Qualityは計算時間が短くて済むようLowを設定した。そしてRunを押下する。

 するとかなり時間がかかるが、Feature extractionは行われるがFeature matchingがメモリ不足のためエラーとなり、途中でcolmapがクラッシュしてしまう。このため、Automatic reconstructionはあきらめ Feature extraction から一つずつマニュアルで行うことにする。

(2)Manual reconstruction

プロジェクトファイルをsaveするまでは上と同じ。

a. Feature extraction

 メニューから Processing > Feature extraction とすると下図のwindowが現れる。ここで max_image_size のdefaultは3200であるが、そのままにすると2.に記した環境では落ちてしまうので、500とした。そしてwindow下部のExtract をクリックするとすぐ完了する。完了してもwindowはそのまま残るので右上の×印をクリックしてwindowを閉じる。

b. Feature Matching

 次に、Processing > Feature matching を選択すると、図のwindowが現れる。

 Matching の手法にいくつもあるが、左上端の Exhausive ではうまくいかなかったので、その右隣の Sequential を選択。Runをクリックして実行するとマッチングは直ぐに終了した。

c. Database management

 次に、Processing > Database management を選択すると、図のような状態になっていた。

d. Sparse Reconstruction

 次に、Reconstruction > Start reconstruction を選択すると、直ぐに実行が始まり、疎な点群が作成され、その結果がカメラの3次元位置とともに画面に表示される。

e. Dense Reconstruction

 次に、Reconstruction > Dense reconstruction を選択すると、下図の下側のwindowが現れる。ここで、windowの上側の option をクリックすると下図の上側のwindowが現れる。

 ここで max_image_size の default は 2000 であるが、そのままであるとうまく動作しないので500 に設定する。上側のwindowを閉じて、下側windowの Undistortion をクリックする。その結果は下図のようになる。

 次に、Stereo をクリックする。この部分が一番時間がかかるが今回は画像枚数が8枚と少なかったので十数分で完了したと思う。完了すると画面は下図のようになる。

 このあと Fusion をクリックすると最終的な3次元点群ができる(下図)。その後、メッシュモデルを作成するには、PoissonDelaunay をクリックすれば良い。今回の例では、Delaunay のみしか作成できなかった。

 メッシュモデルは colmapでは表示できないので、File > Export all models により export しておく。 

 

4. 最後に

 colmap を最後まで動かすのに大変苦労したが、(誤解の可能性はあるものの)わかったことをまとめておく。

(1) メインメモリや GPU のメモリが少ないと、途中でクラッシュするようだ。

(2) (1)の場合、Automatic reconstruction ではなく、Feature extraction からステップを踏ん

        で実行する 。

(3) Feature matching max_image_size (デフォールト3200)と Dense constructionOption max_image_size (デフォールト2000)を小さくする。どの環境であれば、どの程度に設定すれば良いのかの情報があれば良いと思った。

(4) Feature matching の方法は Sequential ではうまく動いた。

(5)メッシュモデル作成は、なぜか Poisson ではうまくいかない。Delaunay は白黒になってしまう。

(6)Dense construction GPU がないと実行されないようなので、Quadro K600 がうまく機能したのではないかと考えている。なお、ビルド済みをダウンロードした colmap では、GPUをオンにするとなぜか直ぐクラッシュしてしまう。

 

 これからも機会があれば試験を繰り返し、今回のメモの内容を改善したい。