見出し画像

でじたる箱庭計画 試行錯誤(カメラアライメントその1)

現時点で「でじたる箱庭」では3D gaussian splattingの活用を検討していて、ツールはnerfstudioを試用中である。撮影データの3DGS化の試行をしている中で、カメラアライメントが処理時間と精度で課題と思われてきたので、「でじたる箱庭」で想定している景色を前提にした試行錯誤してみることにした。

撮影データ:
insta360x4で撮影した「でじたる箱庭」で想定しているご近所の撮影データ
森の中の道沿いに約2分30秒の動画で景観の特性から3DGSでモデル化するには難易度の高いと思われる。

こんな感じの道沿いをinsta260x4で撮影

insta360x4で撮影したデータをinsta360 studioで360度動画に書き出しffmpegで動画を8方向に静止画に切り出して使用する。
切り出しサイズは
1:1 の2048x2048、4096x4096(360度カメラの解像度で4kは意味があるか)
4:3の3072x2304、2048x1536(1:1と3:2で差異があるか)の4種類、
視野角はフルサイズの20mm相当のデータを用意する。

試行錯誤するのは、COLMAP、HLOC、GLOMAP、RealityCaptureの4つの道具。COLMAPとHLOCはnerfstudioから使用する。GLOMAPとRealityCaptureはそれぞれ単独で使用してnerfstudio用にデータ変換してトレーニングに使うこととする。

結果その1

画角20mm相当 2048x2048 1216画像でのアライメント結果

colmapで89.3%、HLOCで99.8%の画像がマッチングできており、条件が良いとは思えないデータでも今回はそこそこのアライメントができた。HLOCはアライマントの精度は良いが処理時間がかかるので、COLMAPで試して、ダメならHLOCといった使い方になるかと思う。GLOMAPは数値上100%のマッチングとなったが、今回は精度に問題があった。
RealiyCaptureは今回のデータではコンポーネントが幾つにも分割されてしまった。なおパラメータの調整はほいとんどできていないのでさらに良くなる可能性はあると思うが、今回のようなデータはRialityCaptureには向かない可能性があると思う。

各手法でのアライメント結果
GLOMAPは精度が問題

その他の結果1
360°動画から切り出す画像のサイズの違いとアライメントの結果。いずれもフルサイズの20mm相当の画角で切り出している。

画像のサイズとアライメントの結果

360°動画自体の解像度は高くないのでそこそこの画像サイズで処理するのが良いと思われる。最終的に生成した3DGSの画質を別途評価する。

その他の結果2
Nerfstudioのns-process-dataのcolmapではデフォルトでマッチングにvovab_treeを使う。今回の試行もvocab_treeで行った。ソースコードを見るとnerfstudioではcolmapのHP(下記リンクの下の方のVocabulary Trees)にある構築済みの32k vishual wordのデータ(1000 イメージ以下の小規模)を使っているようなので、10000イメージ以下の中規模のvocab_treeを使い場合と、都度、使うイメージデータに合わせてvocab_treeを構築する場合比較をしてみた。

Vocabulary Treeの違いとアライメント

結果は大差なし。処理時間もかかるので、都度作成までは必要ないかと思われる。

今回の試行錯誤の整理
まだまだ、試行錯誤が足りない気もするけど、「でじたる箱庭」で想定している「ご近所の3DGS化」で360°カメラを使うケースでは、画像の切り出しは2048x2048程度としてnerfstudioのcolmapでのアライメントが程よい選択で、アライメントがうまくいかない場合は時間がかかるがhlocで処理するのが当面の選択ということかと思う。

今回はここまで、次回は、今回試行錯誤したデータで最終的な3DGSデータの質の違いの有無など確認したいと思ってます(あくまでも予定)


標高1200mのこの辺りでは秋も深まってきました。


いいなと思ったら応援しよう!