平日 9:00 ~ 17:00
ドローン空撮動画からオルソ画像と点群データを生成

ドローン空撮動画からオルソ画像と点群データを生成
ドローン空撮動画からオルソ画像と点群データを生成方法の備忘録です。
SfMの方法で実現します。
通常SfMで点群データを生成する場合はそこそこ費用がかかるのですが、ここでの目的は極力費用をかけずに実現する方法です。
<費用目安>
初期費用 20万円以内
月額費用 5,000円以内
結果的に、ドローン(DJI )、iPhone 12 Pro Max が既に手元にあったので、月額29ドルのみで実現できました。
実際は、この月額すらも無料にすることが出来るのですが、SfMソフトウェアを動作させるためには、かなりのPCパワーを要し、私のPC環境では1回に12時間程度かかったので、クラウドで動作するウェブサービスを利用(1時間程度で完了した)することにしました。
ドローンで空撮
写真モードのインターバル撮影を利用して楽に確実にする方法
そもそも、GPS情報を含んだ画像があれば解決する。
そのため、本当は動画ではなく位置情報を含んだ画像を撮影した方がよい。ここでは「空撮動画からオルソ画像と点群データを生成する」がテーマのため方法だけ記載する。
DJI Flyアプリで一定間隔(インターバル)で撮影する方法
「写真モードのインターバル撮影」または「ハイパーラプスモード」を使用する。
主な設定手順
撮影モードの切り替え: カメラアイコンをタップし、「写真」モードの「インターバル」または「ハイパーラプス」を選択する。
間隔の設定: 撮影間隔(2秒)を設定する。
シャッター: 撮影を開始すると、設定した間隔で自動的にシャッターが切れる。
写真撮影: 「インターバル」を選択した場合、一定間隔で静止画(JPEG/RAW)が撮影されます。
動画撮影: 「ハイパーラプス」を選択した場合、一定間隔で複数の写真を撮影し、それらを動画として記録します。
ファイル形式: インターバル撮影では、保存ファイル形式(JPEG/RAW)やアスペクト比を選択できます。
撮影時、以下に気を付けること。
- 出かける前に、DJIアプリでログインまで出来ているか予め確認する
- 一定の高度を保つ
- 一定の方向を保つ
- 回転、高度変更はNG
- 離着陸時には撮影をしない(後工程の手間を大幅に削減できる)
- 長尺一発撮り(何度も離着陸しない)
- 短辺を直角にジグザグと撮影する(SfMソフトウェアに読み込ませた時の結果が段違い)
難しいことはなく、左スティックで一定高度まで上昇させ方角を決めたあと、動画撮影開始し、右スティックで操作するだけ。
動画を繋げる(結合)
- 動画が1ファイルのみなら、本工程をスキップする。
- 動画を結合する目的は、次の工程で切り出した画像が同名で上書きされるトラブルを未然に防ぐため必須。
ffmpeg
https://ffmpeg.org/download.html
ffmpeg -i "concat:A.mp4|B.mp4" -c copy output.mp4
concat:A.mp4|B.mp4
concat:の後に動画ファイル名、そして|で区切ることで複数のファイルを結合する。
Area61ムービーメーカー
フリーソフト Area61ムービーメーカー をダウンロードして、パソコンにインストールする。
使い方も見た目で理解できるし、一瞬で結合できる。
動画から一定間隔で画像を切り出す
動画から一定間隔で画像を切り出す方法はいくつかあるが、ffmpegを使った方法が良い。
ffmpeg一択、他のソフトウェアを使うのは本当にお勧めしない。
ffmpeg
この方法が一番オススメ
PCパワー不足でも正常に画像を保存することができる。
https://ffmpeg.org/download.html
ダウンロードして、フォルダごとPCの任意の場所に移動させる。
コマンドプロンプトで、以下のように記述して実行させると、自動的に一定間隔で画像を切り出す。
bin\ffmpeg.exe -i input.mp4 -vf "fps=1" output_%04d.jpg
1秒毎に1枚、ファイル名を4桁の数字で自動で0001から順番に附番して保存。
たとえば、4分の動画の場合、60枚×4=240枚の画像が生成させる。
使える程度の結果を得るには、重なる部分が8割以上必要のため、1秒間隔だと長い場合がある。
1秒毎に2枚程度を出力するのが良いように思う。
60秒×2枚×4分=480枚 ←WebODMのスターター及びプロプラン最大1,500枚の画像内に十分に収まる。
1,500枚を超えるとWebODMビジネスプラン(月額119ドル)になるため、一気に費用負担が増える。
c:\ffmpeg-master-latest-win64-gpl-shared>bin\ffmpeg.exe -i DJI_0102.MP4 -vf "fps=2" img\%04d.jpg
もし1秒毎に10枚欲しいなら、”fps=10″ とする。
4分で2,400枚になるためビジネスプラン必須。
C:\Users\user>cd c:\ffmpeg-master-latest-win64-gpl-shared
c:\ffmpeg-master-latest-win64-gpl-shared>c:\ffmpeg-master-latest-win64-gpl-shared>bin\ffmpeg.exe -i DJI_0101.MP4 -vf "fps=2" img\%04d.jpg
・・・省略・・・
frame= 569 fps=0.5 q=24.8 size=N/A time=00:04:44.50 bitrate=N/A speed=0.236x el
frame= 569 fps=0.5 q=24.8 size=N/A time=00:04:44.50 bitrate=N/A speed=0.236x el
frame= 569 fps=0.5 q=24.8 size=N/A time=00:04:44.50 bitrate=N/A speed=0.236x el
frame= 570 fps=0.5 q=24.8 size=N/A time=00:04:45.00 bitrate=N/A speed=0.236x el
[out#0/image2 @ 0000019ee0b1c340] video:185836KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown
frame= 570 fps=0.5 q=24.8 Lsize=N/A time=00:04:45.00 bitrate=N/A speed=0.236x elapsed=0:20:06.16
c:\ffmpeg-master-latest-win64-gpl-shared>
以下のように画像が生成される。

WebODMで画像からオルソ画像と点群データを生成する
上記サイトから、WebODM(無料)をダウンロードして、パソコンにインストールする。
かなりのPCパワーを要するため、そこそこのスペックのPCが必要。
PCパワーに問題ある場合は、WebODM Lightning というオンライン版(有料)を利用すると良い。
有料ですが、アカウント登録で150トークンが無料で付与されるので、お試し程度なら十分対応できる。
料金も、他社の類似サービスと比べても安い。

私はスタータープラン(月額24ドル)プランを契約しました。
オルソ画像
下の画像は、WebODMで480枚の画像から1枚のオルソ画像を生成した元画像11761×6706ピクセルを、1024×583ピクセルに縮小した画像です。
工事施工範囲の実測図面や土地利用計画図の用途には十分なクオリティですね。

さらに、このクオリティで点群データを生成することが出来ました。


レベルもほぼ合っています。
実測図、断面図の作成、土量計算も楽に出来たよ。


