MRが楽しい

MRやVRについて学習したことを書き残す

3DF Zephyrで3Dモデルを作成する その1(点群データの生成)

本日はフォトグラメトリーの調査枠です。
3DF Zephyrを使い、写真から3Dモデルを生成します。

3DF Zephyrのインストール手順は前回記事を参照ください。
bluebirdofoz.hatenablog.com

SFMの仕組み

使い方を説明する前に、まず SFM を用いた3D復元の大まかな流れを説明します。
写真から3Dモデルを復元するには以下の4つのステップが必要になります。

1.全ての写真の特徴点を検出して画像同士の対応点を探索します。
 これにより、各撮影位置の推定と密度の低い点群データが出力されます。
2.推定された撮影位置と密度の低い点群データから写真ごとの
 画素の空間位置を計算して密な点群データを出力します。
3.点群を元に三角面を生成して、点群データをメッシュデータに変換します。
4.画像を元にメッシュデータのテクスチャを生成します。

これは以前紹介した VisualSFM と MeshLab を用いた3D復元と同じ工程です。
3DF Zephyrでも、この工程に従って写真から3Dモデルを復元します。
bluebirdofoz.hatenablog.com
bluebirdofoz.hatenablog.com

サンプル写真の準備

VisualSFM との比較のため、同じサンプル写真を利用してみます。サンプル写真の枚数は11枚です。
フリー版では写真の枚数が50枚まで対応しているので、可能であれば50枚のサンプルを用意するのが最も望ましいです。
f:id:bluebirdofoz:20181217091813j:plain

3DF Zehyrを起動します。
f:id:bluebirdofoz:20181217091825j:plain

撮影位置の推定と密度の低い点群データの生成

新規プロジェクトを作成します。
メニューから ワークフロー -> 新規プロジェクト を選択します。
f:id:bluebirdofoz:20181217091949j:plain

プロジェクトウィザードが開きます。
設定で1と2の工程をセットで行うこともできますが、今回は工程を確認するため、デフォルトのまま「次へ」をクリックします。
f:id:bluebirdofoz:20181217092013j:plain

写真選択ページが表示されます。
3Dモデルに復元するために撮影した写真を全て、ドラッグまたはファイルエクスプローラで追加します。
写真を追加したら「次へ」をクリックします。
f:id:bluebirdofoz:20181217092021j:plain

カメラ較正ページが表示されます。
ここでは写真のExif情報(撮影に利用したカメラ情報)を元に、写真のパラメータを設定します。
重要なのは mm で表されるカメラの焦点距離です。
所謂、広角レンズや望遠レンズの違いを表すもので、特に広角レンズは写真端の歪みを補正します。
自動設定で問題なければ「次へ」をクリックします。
f:id:bluebirdofoz:20181217092030j:plain

カメラ方向ページが表示されます。
ここではモデル化する被写体の適切なタイプと、出力の精度を設定します。

「カテゴリー」は以下から選択します。それぞれ選択時に説明文が表示されるので適切なタイプを選択します。
・航空  :トップダウンビューで利用する。主にドローンの撮影データなど。
・近接範囲:小さなオブジェクトなど。全ての写真が同じ距離から撮影されている場合に利用する。
・人体  :顔や手、あるいは全身を含む人体のスキャンで利用する。
・市街地 :主に建物など。全ての写真が同じ距離から撮影されていない場合に利用する。

「プリセット」は以下から選択します。
処理の繰り返し回数を決定するもので、推定の精度をあげれば処理時間も増えます。
・高速
・デフォルト
・深い

適切な設定を選択したら「次へ」をクリックします。
f:id:bluebirdofoz:20181217092043j:plain

モデル化開始ページが表示されます。
設定に問題がなければ「実行」ボタンをクリックして処理を開始します。
f:id:bluebirdofoz:20181217092053j:plain

処理が完了すると、密度の低い点群データと、撮影位置の推定に成功した写真の一覧が表示されます。
f:id:bluebirdofoz:20181217092101j:plain

少しカメラを引いてみると、点群データとは異なる、青いアイコンが表示されていることが分かります。
これが推定されたカメラの撮影位置です。
f:id:bluebirdofoz:20181217092112j:plain

密な点群データの生成

次にメニューから ワークフロー -> 高密度点群作成 が選択できるようになっています。
これをクリックします。
f:id:bluebirdofoz:20181217092121j:plain

高密度点群作成ウィザードが開きます。
「次へ」をクリックします。
f:id:bluebirdofoz:20181217092132j:plain

高密度点群作成プリセットページが表示されます。
先ほどと同様にモデル化する被写体の適切なタイプと、出力の精度を設定します。
適切な設定を選択したら「次へ」をクリックします。
f:id:bluebirdofoz:20181217092142j:plain

高密度化開始ページが表示されます。
設定に問題がなければ「実行」ボタンをクリックして処理を開始します。
f:id:bluebirdofoz:20181217092152j:plain

処理が完了すると、密度の高い点群データが生成されます。
f:id:bluebirdofoz:20181217092201j:plain

記事が長くなったので分けます。
次回はメッシュデータ化とテクスチャの生成です。