Photogrammetry Pipeline

ドローン空撮動画から、GPS位置合わせされたテクスチャ付き3Dモデルを生成する

トップ 構成 作業エビデンス 結果 問題解決の記録 SRTテレメトリ 移動量分析 分割戦略 サブセグメント分析

目的

ドローンの空撮動画(.MP4)から、GPS位置情報に基づいて正確に位置合わせされたテクスチャ付き3Dモデル(OBJ+MTL+PNG)を生成するパイプラインを構築・改善する。

背景

ドローン空撮は測量・土木・農業等の分野で広く活用されている。ただし、撮影した動画データなどを楽しむことは簡単であり、YouTubeなどのコンテンツにすることは誰でもできる状態である。
しかし、何らかの目的のために、そこから撮影した対象物の大きさなどをある程度正確に測定することなどは難しい。
そのため、動画コンテンツは結局あくまでも楽しむための動画になっていて、実際に何らかの設計に使うというのは困難な現状だと思われる。
一方、世の中には、photogrammetryと呼ばれる写真画像から3Dモデルを作る技術はあり、ドローンメーカーがそれらのソフトを提供していたりする。
ただし、アプリケーションは高価であり、一般の人が多用しているとは言い難い。また、ソフトウェアとして、photogrammetryを実現するOSSも存在しているが扱うにはハードルが高すぎて簡単に手を出せるものではない。
そのため、今回、知識0の状態からいきなりopencodeというAIを使って撮影した動画データから、3Dモデルを作成してみた。内容としては専門的なSfM/MVSソフトウェアとオープンソースツールを組み合わせて高品質な3Dモデルを生成している。
ソフトを作りながら後から知識を付けていくという手段となっているので効率がいいのかどうかわからないが今どきのエージェントAIでの開発を体験するというのも今回のプロジェクトのモチベーションの一つである。

最終目標

最終的な目的としては、千葉県茂原市の山の木の伐採計画を作るためのデータを手軽に取得することである。
また、ノートパソコンの限られたコンピューターリソースを用いて現実的で高精細なモデルデータを構築することが制約である。そのため、以下の2点を目標とする。

対応環境

構成

DJI .MP4
+ .SRT (GPS)
Step 1
COLMAP復元
Step 2
島除去
Step 3
テクスチャベイク
Step 4
プレビュー

使用ツール

ツールバージョン役割
COLMAP3.9.1SfM(カメラ位置推定 + 特徴点マッチング) / MVS(密点群生成 + メッシュ化)
Blender4.4テクスチャベイク(Cycles CPU) / プレビューレンダリング / ターンテーブル動画
Open3D(Python)メッシュ島除去 / 点群処理・マージ
ffmpeg8.1動画フレーム抽出(JPEG)

詳細なパイプライン構成は 構成ページ を参照。

作業エビデンス

パイプラインで生成したプレビュー画像とターンテーブル動画の一部を紹介する。

ターンテーブル動画 — 統合メッシュ(180fr @ 30fps, 6秒)

その他のプレビュー画像や比較は 作業エビデンスページ を参照。

結果

~20
処理セッション数
~715MB
最大統合メッシュ(3セッション)
2048²
標準テクスチャ解像度
4GB
GPU VRAM制約

主な成果

項目内容
処理フレームワーク4ステップ(COLMAP → 島除去 → ベイク → プレビュー)のパイプラインを確立
テクスチャ品質平面UV投影(planar)により空間連続性の高いテクスチャを実現(2048²標準)
GPS位置合わせ同一セッション内では高精度、セッション間でZオフセット課題を確認
閉包面問題点群マージ+単一Poisson再構成で完全解決
自動化opencode agent/skillによりコマンド一発で全パイプライン実行可能

既知の制約

詳細な成果数値は 結果ページ を参照。

パイプライン構築過程で遭遇した問題とその解決策をまとめています。

» 問題解決の記録を見る