ドローン空撮動画から、GPS位置合わせされたテクスチャ付き3Dモデルを生成する
ドローンの空撮動画(.MP4)から、GPS位置情報に基づいて正確に位置合わせされたテクスチャ付き3Dモデル(OBJ+MTL+PNG)を生成するパイプラインを構築・改善する。
ドローン空撮は測量・土木・農業等の分野で広く活用されている。ただし、撮影した動画データなどを楽しむことは簡単であり、YouTubeなどのコンテンツにすることは誰でもできる状態である。
しかし、何らかの目的のために、そこから撮影した対象物の大きさなどをある程度正確に測定することなどは難しい。
そのため、動画コンテンツは結局あくまでも楽しむための動画になっていて、実際に何らかの設計に使うというのは困難な現状だと思われる。
一方、世の中には、photogrammetryと呼ばれる写真画像から3Dモデルを作る技術はあり、ドローンメーカーがそれらのソフトを提供していたりする。
ただし、アプリケーションは高価であり、一般の人が多用しているとは言い難い。また、ソフトウェアとして、photogrammetryを実現するOSSも存在しているが扱うにはハードルが高すぎて簡単に手を出せるものではない。
そのため、今回、知識0の状態からいきなりopencodeというAIを使って撮影した動画データから、3Dモデルを作成してみた。内容としては専門的なSfM/MVSソフトウェアとオープンソースツールを組み合わせて高品質な3Dモデルを生成している。
ソフトを作りながら後から知識を付けていくという手段となっているので効率がいいのかどうかわからないが今どきのエージェントAIでの開発を体験するというのも今回のプロジェクトのモチベーションの一つである。
最終的な目的としては、千葉県茂原市の山の木の伐採計画を作るためのデータを手軽に取得することである。
また、ノートパソコンの限られたコンピューターリソースを用いて現実的で高精細なモデルデータを構築することが制約である。そのため、以下の2点を目標とする。
| ツール | バージョン | 役割 |
|---|---|---|
| COLMAP | 3.9.1 | SfM(カメラ位置推定 + 特徴点マッチング) / MVS(密点群生成 + メッシュ化) |
| Blender | 4.4 | テクスチャベイク(Cycles CPU) / プレビューレンダリング / ターンテーブル動画 |
| Open3D | (Python) | メッシュ島除去 / 点群処理・マージ |
| ffmpeg | 8.1 | 動画フレーム抽出(JPEG) |
詳細なパイプライン構成は 構成ページ を参照。
パイプラインで生成したプレビュー画像とターンテーブル動画の一部を紹介する。
ターンテーブル動画 — 統合メッシュ(180fr @ 30fps, 6秒)
その他のプレビュー画像や比較は 作業エビデンスページ を参照。
| 項目 | 内容 |
|---|---|
| 処理フレームワーク | 4ステップ(COLMAP → 島除去 → ベイク → プレビュー)のパイプラインを確立 |
| テクスチャ品質 | 平面UV投影(planar)により空間連続性の高いテクスチャを実現(2048²標準) |
| GPS位置合わせ | 同一セッション内では高精度、セッション間でZオフセット課題を確認 |
| 閉包面問題 | 点群マージ+単一Poisson再構成で完全解決 |
| 自動化 | opencode agent/skillによりコマンド一発で全パイプライン実行可能 |
詳細な成果数値は 結果ページ を参照。
パイプライン構築過程で遭遇した問題とその解決策をまとめています。