ドローン

ドローンの空撮画像から簡単にオルソ画像を作る方法

俺はDJI社のMavic Airを所有している。小さいけど本格的な機能を有している素敵なドローンだ。
どうにかして、このドローンを使って、それなりの精度のオルソ画像が作れないものかと試行錯誤していたが、方法が固まってきたので、整理しようと思う。
ちなみに、ここで整理するのは一般ユーザーが安価にオルソ画像を作成する方法なので、専門業者の方々は国土地理院のマニュアルに従った上で、市販ソフトと測量機械を使用してください。

画像解析に使用するフリーソフト「WebODM」のインストール方法はこの記事に整理したので、確認してほしい。

 

1.素材を撮影する

空撮に使用するアプリはDrone Deploy。(https://www.dronedeploy.com/
市販ソフトだが試用期間があり、試用後もドローンの空撮飛行制御の機能は継続して使うことができる。


これは、飛行ルートをパソコンで作成している画面。
撮影したい範囲を選択すると、ルートが自動で生成される。
この事例では外周をぐるりと撮影する3Dのモードも使用している。また、自動生成のルートにあまり融通が効かないので、民地の上を飛ばさないようにするために、範囲を小分けにして工夫している。
なので、パソコンでルート作成したほうが、細かく確認できて楽だと思う。

ルートが出来たら現地に行って、スマホのアプリで自動飛行&撮影を開始する。
Mavic Airに標準で使っているアプリ「DJI Go4」で飛行が可能であれば、「Drone Deploy」のアプリでも飛行可能。DIDとか空港周辺とかで飛ばす場合は、「DJI Go4」で制限解除を行う必要がある。(もちろん航空局等の許可・申請を行った上で)
ちなみに、2つのアプリを1個のコントローラーで使うことになるので、「規定のアプリ」を設定せずに、コントローラーの電源を一旦OFFにしてからONにして、選択画面を出して使いたいアプリを選ぶ必要がある。(DJI GS PROとか使えりゃいいんだけどネ)


こんな感じで、写真を自動でいっぱい取ってくれる。

2.GCPを決める

GCPとはGround Control Pointの略で、日本語だと地上基準点。現地座標・標高と写真の同位置の点のことで画像解析に使う。WebODMではGCPの作成補助機能がある。
国土地理院の「UAVを用いた公共測量マニュアル(案)」では、対空標識という目印を実際に現地に設置し、XYZを測量する訳だけれど、一般ユーザーにはちと厳しい。
手っ取り早く、それなりの精度を確保するために考えたのが、地理院地図でそれっぽい位置を判別して点を作る方法。


この例では、道路と堤防の交点をGCPにしている。
撮影写真を見ながら、スマホで地理院地図をスクショして、「緯度」「経度」「標高」を拾っている訳だ。この標高はそんなに精度の良いものではない。(ここだと確か5mメッシュの平均高)


解析範囲で目印になりそうな「点名」と「対象画像名」をメモしていく。いっぱい写真があるので、目安としてメモを作っておいたほうが、あとで迷わない。
ちなみに、ドローン測量だと精度確保のための対空標識の配置が規定されてたりする。


メモった「緯度」「経度」「標高」を表計算ソフトに整理していく。
困ったことに、WebODMでは「緯度経度(EPSG:3857)」が使えないようなので、「UTM座標(WGS84)」に変換する。(Universal Transverse Mercator:ユニバーサル横メルカトル)


緯度経度座標をUTM座標に変換するサイト」を使用する。
測量のソフトでは変換ができたり、QGISでもコマンドを使えば何とかなるらしいんだけど、よく分からない。そんなに点数がないから我慢。ここが閉鎖されたら困るなぁ。。。


変換したXY座標と使いたい画像ファイル名を表に入力する。この並びはWebODMのGCPの入力様式。画像のxyもダミーで入れておく。


この範囲をコピーして、


テキストエディター(メモ帳)に貼り付ける。
1行目に座標系の説明(だと思う)を貼り付ける。んで、テキスト形式で保存する。
「+proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m +no_defs」

3.GCPを設定する


写真と地理院地図から決めたGCPを、解析に使えるように設定していく。「WebODM」を立ち上げて、「GCP Interface」のメニューを開き、「Load existing Control Point File(既存のコントロールポイントファイルを読み込む)」ボタンを押す。


さっき作成したGCPのテキストファイルを読み込むとこんな感じ。


地図に緑色のマークでGCPが表示される。「Chose images/drag here(画像を選択/ドラッグ)」のボタンを押して、使いたい画像ファイルを読み込む。


右側に背景地図を選ぶアイコンがあるんだけど、「地理院タイル」から、空中写真・衛星画像のタイル(https://cyberjapandata.gsi.go.jp/xyz/ort/{z}/{x}/{y}.jpg)を設定して置くと良い。


撮影写真と地図が並んで表示される。撮影画像の緑色マークはダミーの位置にあるので、マウスでGCPとした位置まで移動していく。


写真がいっぱいあると精度が上がるようなので、GCP周りの写真をどんどん追加読み込みして、GCPをプロットしていく。


入れ終わったら、テキストファイルとしてSAVE(保存)する。ここでは入力のテキストファイルと名前を変えてある。
これでGCPの設定ファイルの完成。

4.画像を解析する


あとは、WebODMで解析するだけ。「Select images and GCP」をクリックして、写真とGCPの設定ファイルを読み込ませる。このときは180枚くらいの入力画像で、解析時間は20分くらい。


出来上がりはこんな感じ。わりと精度良く出来ている。



ひと区間ずつ、撮影とGCP設定をコツコツしていくと、こんな長い区間(1.6km)のオルソ画像も作ることができる。


なかなか精度良くできたと思う。


これは、作成したオルソ画像を「QGIS」で読み込んで、端の精度の悪い部分を除去した状態。
これを平面直角座標に変換して、ワールドファイルをつけると、土木のCAD図に重ねることもできるのだ!!!
うまく既存の図面にハマった時は感動で震えた。個人レベルでこんなことも出来るようになって、時代は進んでいるのだなぁ。


これは3次元の点群データをWebODMで表示した画面。
XYZの座標を持った点にRGBの色の属性もついている。


WebODMの機能で、縦断図を書いたり、距離・高さ・面積などを図ったり出来る。
でも、もっといろいろ出来そうだけど、良く分かっていない。。。
今度は、この点群データをどう利用して行くかが課題だな。

今回は、なかなか面白いことが整理できたと思う。

 

2020年5月追記:今年もオルソ画像を作ってみた。ソフトはPix4Dmapper(試用期間)。むちゃくちゃ使いやすい!このソフト素晴らし過ぎる。ちょっとしたドローン2台分の値段だから、個人でも買えないこともないわね。