embeddedなブログ

組み込みシステムに関することや趣味に関することをダラダラと書いていきます(^^)

OpenMVGをVisual Studio 2017(x64)でビルド(その2)

2017-04-23 13:05:41 | Windows Embedded CompactまたはCE

さて、前回ビルドしたモジュールを使って、実際に3Dデータを生成してみます。実験に使用するフォルダ構成例は以下の通りです。

  • C:\build
    前回ビルドしたOpenMVGのプロジェクトがあるフォルダ
  • C:\SfmTest
    テスト用環境
  • C:\SfmTest\images
    解析対象の写真をここに置きます。
  • C:\SfMTest\matches
    特徴点およびマッチング結果を出力するためのフォルダを作成します。
  • C:\SfmTest\outReconstruction
    3Dデータ出力先フォルダを作成します。

解析対象の写真は以下のように何か3Dモデル化したいものをなるべく少しづつずらして同じ場所が複数枚の写真に写る(オーバーラップと言います)ように撮影します。このオーバーラップの目安は連続した2枚の写真の80%程度が同じ場所となるようにします。ちなみに、以下写真ははうちの犬がいつもいじめているノミのぬいぐるみです(笑)

以下ファイルを準備します。

  • C:\SfmTest\sensor_width_camera_database.txt
    OpenMVGのsrc\openMVG\exif\sensor_width_database\sensor_width_camera_database.txtファイルです。

準備はこれで完了です。それでは実際に解析を実行します。DOSプロンプトを開いて、C:\SfmTestフォルダに移動します。

まず最初にopenMVG_main_SfMInit_ImageListingを実行します。私の環境ではVisualStudio 2017の64ビット環境でビルドしたので、実行モジュールはC:\build\Windows-AMD64-\Releaseに配置されているので、下記のようなパスになっています。それぞれの環境に応じて適切な実行モジュールへのパスを設定してください。

C:\build\Windows-AMD64-\Release\openMVG_main_SfMInit_ImageListing.exe -i C:\SfmTest\images -d C:\SfmTest\sensor_width_camera_database.txt -o C:\SfmTest\matches

以下のようなメッセージが表示されます。カメラ情報と画像ファイルのリストアップが実施されます。

 You called :
C:\build\Windows-AMD64-\Release\openMVG_main_SfMInit_ImageListing.exe
--imageDirectory C:\SfmTest\images
--sensorWidthDatabase C:\SfmTest\sensor_width_camera_database.txt
--outputDirectory C:\SfmTest\matches
--focal -1
--intrinsics
--camera_model 3
--group_camera_model 1

- Image listing -
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************

SfMInit_ImageListing report:
listed #File(s): 56
usable #File(s) listed in sfm_data: 56
usable #Intrinsic(s) listed in sfm_data: 1

ここで、もし、以下のようなエラーが出た場合、sensor_width_camera_database.txt ファイルに解析対象の写真を撮影したカメラ情報を追記します。

Please consider add your camera model and sensor width in the database.
DSC05138" model "DSC-RX100M2" doesn't exist in the database

その場合、撮影したカメラ のCCDセンサの横幅(mm)を調べておく必要があります。sensor_width_camera_database.txt に対しては、以下のように表示されたエラーにカメラ名が書かれているので、その名称とセンササイズをセミコロン区切りで定義します。私の場合、SONYのDSC-RX100M2が撮影したカメラなのですが、エラーには”DSC-RX100M2”と表示されています。SONYホームページにセンサータイプ:1.0型(13.2mm x 8.8mm) ExmorR CMOSセンサーと書かれていましたので、センサ横幅が13.2mmとわかります。そこで、sensor_width_camera_database.txtには以下のように定義を追記しました。sensor_width_camera_database.txtを変更後、Test.batを再実行します。

DSC-RX100M2;13.2

openMVG_main_SfMInit_ImageListingが無事完了すると、次にopenMVG_main_ComputeFeaturesを実行します。

C:\build\Windows-AMD64-\Release\openMVG_main_ComputeFeatures.exe -i C:\SfmTest\matches\sfm_data.json -o C:\SfmTest\matches\

特徴点の抽出がされ、以下のようなメッセージが表示されます。

 You called :
C:\build\Windows-AMD64-\Release\openMVG_main_ComputeFeatures.exe
--input_file C:\SfmTest\matches\sfm_data.json
--outdir C:\SfmTest\matches\
--describerMethod SIFT
--upright 0
--describerPreset NORMAL
--force 0
--numThreads 0

- EXTRACT FEATURES -
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************
Task done in (s): 372.355

そして次がopenMVG_main_computeMatchesです。

C:\build\Windows-AMD64-\Release\openMVG_main_computeMatches.exe -i C:\SfmTest\matches\sfm_data.json -o C:\SfmTest\matches\

一致する特徴点の探索が実行されます。

 You called :
C:\build\Windows-AMD64-\Release\openMVG_main_computeMatches.exe
--input_file C:\SfmTest\matches\sfm_data.json
--out_dir C:\SfmTest\matches\
Optional parameters:
--force 0
--ratio 0.8
--geometric_model f
--video_mode_matching -1
--pair_list
--nearest_matching_method AUTO
--guided_matching 0
--cache_size unlimited

- Regions Loading -
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************

 - PUTATIVE MATCHES -
Use: exhaustive pairwise matching
Using FAST_CASCADE_HASHING_L2 matcher
Using the OPENMP thread interface

0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************
Task (Regions Matching) done in (s): 6.61982

 - Geometric filtering -

0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************
Task done in (s): 10.8103

 Export Adjacency Matrix of the pairwise's geometric matches

最後がopenMVG_main_IncrementalSfMです。

C:\build\Windows-AMD64-\Release\openMVG_main_IncrementalSfM.exe -i C:\SfmTest\matches\sfm_data.json -m C:\SfmTest\matches\ -o C:\SfmTest\outReconstruction\

3Dモデル化とバンドル調整です。以下のような表示が延々と繰り返されます。

Sequential/Incremental reconstruction
 Perform incremental SfM (Initial Pair Essential + Resection).

- Features Loading -
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************

Track building

Track filtering

Track export to internal struct

Track stats
------------------
-- Tracks Stats --
 Tracks number: 12222
 Images Id:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55,
------------------
TrackLength, Occurrence
 2 7940
 3 1930
.....
Automatic selection of an initial pair:
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************
A-Contrario initial pair residual: 24.4525

Bundle Adjustment statistics (approximated RMSE):
 #views: 2
 #poses: 2
 #intrinsics: 1
 #tracks: 123
 #residuals: 492
 Initial RMSE: 2.92594
 Final RMSE: 2.87801
 Time (s): 0.0378221
.....

 そして最後に以下のようなメッセージが表示されれば解析は無事終了です。

Histogram of residuals:

0 | 42203
0.396 | 12307
0.792 | 5168
1.19 | 2474
1.58 | 1189
1.98 | 634
2.38 | 333
2.77 | 177
3.17 | 85
3.56 | 33
3.96

 Total Ac-Sfm took (s): 18.0752
...Generating SfM_Report.html
...Export SfM_Data to disk.

C:\SfmTest\outReconstruction\cloud_and_poses.ply ファイルをMeshLabなどのツールで開くと出来上がった3D点群データを確認できます。


最新の画像もっと見る