Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Open dronemapハンズオン

2017年地理情報システム学会でのハンズオン資料です。
https://sites.google.com/site/foss4gsig/oshirase/opnedronemap2017

  • Login to see the comments

Open dronemapハンズオン

  1. 1. OpenDroneMap ハンズオン 地理情報システム学会 2017/10/28(土)14:00~18:20 OSGeo財団日本支部 岩崎亘典 バーズアイ・リサーチ研究会 水谷貴行(株式会社エコリス)  2017/10/27版
  2. 2. 配布データ http://www.ecoris.co.jp/odmdata1028.zip 「odmdata1028」をデスクトップに置いてください。 (ユーザー名が日本語の場合は、C:UsersPublicの中に入れてください。) ※日本語ファイル名やパス名はトラブルの元なので使用しません。 内容物 ● ドローンの画像 ● GCPファイル ● 処理済みデータ ● 使用コマンド 2
  3. 3. 事前準備の確認 ● Dockerのインストール ● OpenDroneMapのインストール ● node-OpenDroneMapのインストール ● QGISのインストール ● MeshLabのインストール 質問. 1. Docker for Windows、Docker ToolBoxのどちらをインストールしましたか? 2. ドローンでの撮影は経験ありますか? 3. PhotoScanやPix4DなどSfMソフトは使ったことがありますか? 3 https://docs.google.com/document/d/190EzemU9-Qj7c2cPW75XtXMHg kWQ4YhcTNPzi_9favI/edit?usp=sharing
  4. 4. 本日の流れ 前半:14:00~16:00 ● 概要説明 ● OpenDroneMapでの処理 ~休憩~ 後半:16:30~18:00 ● OpenDroneMapでの処理 つづき ● 質問等 4
  5. 5. 概要説明 5
  6. 6. OpenDroneMapとは? ● ドローンで撮影した画像から、地形の3次元モデルやオルソ画像、DEMデータを作 成できるソフト。 ● SfM・MVSと呼ばれる画像群から3次元の物体を復元する手法を利用。 ● オープンソースソフトウェアとして開発されている。 https://github.com/OpenDroneMap/OpenDroneMap ● 同機能の市販ソフトは、PhotoScanやPix4D、DroneDeployなどがある。 6
  7. 7. PhotoScanとOpenDroneMapの比較 PhotoScan OpenDroneMap $3,499 0円 プロプライエタリ →アルゴリズムは非公開 オープンソース →アルゴリズム公開 三次元モデル全般に対応 ドローン画像に特化 完成度高い →業務使用レベル 開発途中 →現時点では個人使用レベル ArcGISに対する(昔の)QGISのようなポジション 7
  8. 8. OpenDroneMapのフロー 特徴点の抽出 点群の作成処理 特徴点のマッチング カメラパラメータの推定 疎な点群の構築 密な点群の構築 メッシュの作成 テクスチャの作成 ジオリファレンス DEMの作成 オルソ画像の作成 入力画像 ①opensfm ②odm_meshing ③mvs_texturing ④odm_georeferencing ⑤odm_dem ⑥odm_orthophoto 点群の作成 8
  9. 9. OpenDroneMapの実行 9
  10. 10. DockerへのメモリとCPUの割り当て Docker for Windowsの場合 インジケーターDockerアイコンを右クリック → 「Settings...」→「Advanced」タブ Docker ToolBoxの場合 ターミナルからDockerマシンの停止 → VirtualBox →「シス テム」→「マザーボード」、「プロセッサー」 マシンスペックに応じて、 2048G以上、2CPU以上をDockerに割り当ててください。 docker-machine stop 10
  11. 11. Kitematicの起動、確認 Kitematic(カイトマティック)は、DockerコンテナをGUIで操作するツール Docker for Windowsの場合 インジケーターのDockerアイコン →  右クリック → 「Kitematic」 Dcoker ToolBoxの場合 アイコンをダブルクリック Kitematic ≠ Kinematic 11
  12. 12. node-OpenDroneMapの起動 OpenDroneMapのサーバー機能でブラウザから実行可能。 Kitematicの場合 node-OpenDroneMapを選択 → 「START」→「WEB PREVIEW」の横 のボタン→ブラウザで確認 確認できたら「STOP」しておきます。 12 コマンドの場合 docker run -p 3000:3000 opendronemap/node-opendronemap http://localhost:3000 にアクセス
  13. 13. node-OpenDroneMapの実行 プロジェクト名、画像ファイル、オ プションを選択して、ボタンを押す だけ 何してる? オプションの意味は? 13
  14. 14. WebODMの紹介 14 ● 高機能なOpenDroneMapサーバー ● ユーザー管理機能 ● 結果の表示機能 ● 複数のコンテナを管理する Docker Composeで構築されている ● インストールにはpythonが必要 https://github.com/OpenDroneMap/WebODM 時間があればデモします。
  15. 15. OpenDroneMapをコマンドで実行 Kitematic左下の「DOCKER CLI」ボタンで  PoerShellを起動 ※プログラムから直接 PowerShellを起動しても OKです。 今回のハンズオンでは、 ● コマンドで、 ● 各処理ごとに、 ● オプションや処理の詳細を確認しながら、 ● 順に実行します。 15
  16. 16. OpenDroneMapの基本事項1 ヘルプの表示 以下のコマンドを実行 docker run -it --rm opendronemap/opendronemap --help   ①  ②   ③             ④              ⑤ ① コンテナを生成・実行 ② コンソールに結果を出力するオプション ③ コマンド実行完了後にコンテナを自動で削除するオプション ④ コンテナイメージ名 ⑤ OpenDroneMapのコマンド 16
  17. 17. OpenDroneMapの基本事項2 入出力フォルダの指定 プロジェクトフォルダの指定 $odmdata="/c/Users/mizutani/Desktop/odmdata1028" ファイルの共有指定 docker run -it --rm -v ${odmdata}/images:/code/images -v ${odmdata}/opensfm:/code/opensfm -v ${odmdata}/odm_meshing:/code/odm_meshing -v ${odmdata}/odm_texturing:/code/odm_texturing -v ${odmdata}/odm_georeferencing:/code/odm_georeferencing -v ${odmdata}/odm_dem:/code/odm_dem -v ${odmdata}/odm_orthophoto:/code/odm_orthophoto opendronemap/opendronemap -v オプションでホスト側のフォルダとコンテナ側のフォルダを対応付ける。-v ホスト側:コンテナ側 フォルダ(コンテナ側) 説明 /code/images 入力画像のフォルダ /code/opensfm 点群データの出力フォルダ /code/odm_meshing メッシュデータの出力フォルダ /code/odm_texturing テクスチャ付き3Dモデルの出力フォルダ /code/odm_georeferencing ジオリファレンス関連の出力フォルダ /code/odm_dem DEMデータの出力フォルダ /code/odm_orthophoto オルソ画像の出力フォルダ 17
  18. 18. OpenDroneMapの基本事項3 処理制御オプション OpenDroneMapは、以下の処理を順に実行。 処理を実行するためには、それ以前の処理が完了している必要あり。 ①opensfm ②odm_meshing ③mvs_texturing ④odm_georeferencing ⑤odm_dem ⑥odm_orthophoto 以下のオプションで処理を制御 --end-with:終了するプロセス名を指定 --rerun:再実行するプロセス名を指定 --rerun-all:すべてのプロセスを再実行(作成されたフォルダは一旦すべて削除) --rerun-from:指定したプロセス以降を再実行 ※処理オプションを指定しない場合、 完了している処理は自動的にスキップされます。 メッシュの作成 テクスチャの作成 ジオリファレンス DEMの作成 オルソ画像の作成 入力画像 点群の作成 ①opensfm ②odm_meshing ③mvs_texturing ④odm_georeferencing ⑤odm_dem ⑥odm_orthophoto 18
  19. 19. ひと息 Dockerの仕組み 19 出典:@IT「図解で理解できる(はず)Microsoftの仮想化技術――Windows上で稼働する Linux、動かしているのはどのテクノロジー?(その2) (2/2)」 http://www.atmarkit.co.jp/ait/articles/1710/24/news010_2.html
  20. 20. ひと息 Dockerコンテナのライフサイクル 20 Docker Hub 保存イメージ Dockerコンテナ OpenDroneMap イメージ ほか色々な イメージ OpenDroneMap イメージ OpenDroneMap スナップショット Dockerコンテナ OpenDroneMap スナップショット プロセス docker create docker start docker pulldocker push docker stop docker rm (Dockerコンテナ削除) docker rmi (イメージ削除) docker run
  21. 21. 入力画像 メッシュの作成 テクスチャの作成 ジオリファレンス DEMの作成 オルソ画像の作成 入力画像 点群の作成 ①opensfm ②odm_meshing ③mvs_texturing ④odm_georeferencing ⑤odm_dem ⑥odm_orthophoto 21
  22. 22. 入力画像 ● ドローンで撮影した複数枚の画像を使用 ● 画像間はオーバーラップするように撮影 ● 進行方向のラップ率60~90%、隣接コース間のラップ率30~60% オーバーラップ 22
  23. 23. 入力画像の撮影場所を確認 1. QGISを起動 2. WMTSレイヤの追加→新規→名称「地理院地図」、 URLに以下を入力して「OK」  http://gsi-cyberjapan.github.io/experimental_wmts/gsitiles_wmts_light.xml                   3. 接続→「写真」を選択→「追加」→「閉じる」 4. プラグイン→プラグインの管理とインストール →photo2kmz をインストール 5. ツールバーの「photo2kmz」ボタン→ odmdata1028/images フォルダを指定 6. kmzファイルをQGISにドラッグ 7. レイヤのプロパティ→ディスプレイ→HTMLに以下を入力  <img src=”C:UsersmizutaniDesktopodmdata1028images[% Name %]” width=”400” height=”300”>          8. ツールバーの「マップチップス」を選択。ポイントにマウスを合わせると写真が表示される。 23
  24. 24. 入力画像の撮影場所を確認 WMTSレイヤの追加 Photo2KMZ マップチップス 24
  25. 25. ①点群の作成 メッシュの作成 テクスチャの作成 ジオリファレンス DEMの作成 オルソ画像の作成 入力画像 点群の作成 ①opensfm ②odm_meshing ③mvs_texturing ④odm_georeferencing ⑤odm_dem ⑥odm_orthophoto 25
  26. 26. ①点群の作成 ひとまず実行(処理時間15~20分) docker run -it --rm -v ${odmdata}/images:/code/images -v ${odmdata}/opensfm:/code/opensfm -v ${odmdata}/odm_meshing:/code/odm_meshing -v ${odmdata}/odm_texturing:/code/odm_texturing -v ${odmdata}/odm_georeferencing:/code/odm_georeferencing -v ${odmdata}/odm_dem:/code/odm_dem -v ${odmdata}/odm_orthophoto:/code/odm_orthophoto opendronemap/opendronemap --end-with opensfm --resize-to 4000 --min-num-features 20000 --opensfm-process 2 ※PoweShellに入力する際は、改行の前にバッククォート ` を入れてください。 (`の前にはスペースが入っています。) 26
  27. 27. ①点群の作成 仕組み 特徴点の抽出 点群の作成処理 特徴点のマッチング カメラパラメータの推定 疎な点群の構築 密な点群の構築 点群作成のイメージ (出典:岩波データサイエンスVol.4、P131) 内部でOpenSfMを呼び出して実行 https://github.com/mapillary/OpenSfM ※密な点群の作成も pmvsからOpenSfMに変更 27 特徴点の三次元モデル 画像全体の三次元モデル 焦点距離、歪み、位 置、姿勢
  28. 28. ①点群の作成 オプション --force-focal 焦点距離の設定。 --force-ccd ccdセンサーの幅の設定。 --resize-to 処理する際の画像サイズ(横幅)。デフォルトは 2048 ※リサイズ設定にバグがあるので、画像サイズと同じ値を指定する --min-num-features 各画像から抽出する特徴点の数。デフォルトは 4000 ※実行時にエラーになる場合は、値を増やしてみる --marcher-neighbors 事前マッチングするときの最大数。デフォルトは 8 --matcher-distance 事前マッチングで探索する最大距離。デフォルトは 0 --use-fixed-camera-params カメラパラメータを固定。 --opensfm-process 処理する際のスレッド数。デフォルトは 2 点群作成のイメージ (出典:岩波データサイエンスVol.4、P131) 28
  29. 29. ①点群の作成 出力ファイル・フォルダ ● config.yaml オプションの設定情報 ● exifフォルダ 写真のEXIF情報のファイル ● camera_models.json カメラのパラメータ ● featuresフォルダ 特徴点のファイル ● matchesフォルダ マッチングした特徴点のファイル( 2画像間) ● tracks.csv 特徴点のトラッキング情報( 2画像以上間) ● reconstruction.json カメラと特徴点の3次元座標(疎な点群データ) ● reconstruction.meshed.json カメラと特徴点のメッシュ座標 ● undistorted レンズの歪み補正をした画像フォルダ ● undistorted_tracks.json 歪み補正済み特徴点のトラッキング情報 ● undistorted_reconstruction.json 歪み補正済みカメラと特徴点の 3次元座標 ● depthmaps 深度マップのデータ ● depthmaps/merged.ply 密な点群データ ● bundle_r000.out Bundler形式に変換した疎な点群データ ● reconstruction.nvm NVM_V3形式に変換したカメラパラメータ opensfm/ 29
  30. 30. ①点群の作成 点群ファイルの確認 疎な点群の確認 1. list_r000.outをコピーしてlist_r000.txtに名前変更 2. MeshLabを起動 3. MeshLabにbundle_r000.outをドラッグ 4. リストファイルを聞かれたら list_r000.txtを指定 密な点群の確認 ● MeshLabにdepthmaps/merged.plyをドラッグ 30
  31. 31. ②メッシュの作成 メッシュの作成 テクスチャの作成 ジオリファレンス DEMの作成 オルソ画像の作成 入力画像 点群の作成 ①opensfm ②odm_meshing ③mvs_texturing ④odm_georeferencing ⑤odm_dem ⑥odm_orthophoto 31
  32. 32. ②メッシュの作成 ひとまず実行(処理時間2~3分) docker run -it --rm -v ${odmdata}/images:/code/images -v ${odmdata}/opensfm:/code/opensfm -v ${odmdata}/odm_meshing:/code/odm_meshing -v ${odmdata}/odm_texturing:/code/odm_texturing -v ${odmdata}/odm_georeferencing:/code/odm_georeferencing -v ${odmdata}/odm_dem:/code/odm_dem -v ${odmdata}/odm_orthophoto:/code/odm_orthophoto opendronemap/opendronemap --end-with odm_meshing --mesh-size 200000 ※PoweShellに入力する際は、改行の前にバッククォート ` を入れてください。 (`の前にはスペースが入っています。) 32
  33. 33. ②メッシュの作成 仕組み ● 密な点群データ(depthmaps/merged.ply)から「The Poisson surface reconstruction algorithm」を使用して三角形メッシュを作成 ● Point Cloud Library (PCL)を使用 http://docs.pointclouds.org/1.7.2/a01063.html#details Note Code adapted from Misha Kazhdan: http://www.cs.jhu.edu/~misha/Code/PoissonRecon/ Based on the paper: Michael Kazhdan, Matthew Bolitho, Hugues Hoppe, "Poisson surface reconstruction", SGP '06 Proceedings of the fourth Eurographics symposium on Geometry processing 33
  34. 34. ②メッシュの作成 オプション --mesh-size メッシュの最大頂点数の設定。デフォルトは 100000 --mesh-octree-depth 八分木の階層数。推奨は 8~12。デフォルトは9 --mesh-samples 八分木のノードに対する点の数。推奨値とデフォルトは 1 --mesh-solver-divide メッシュを構築する際に計算するラプラシアン方程式の八分木の階層数。この値を増やすと計算時間が少し増えるが、メモリ使用量 は減る。デフォルトは 9 --use-25dmesh 2.5次元メッシュを作成。平面に対して良い結果を得られる。 --mesh-remove-outliers 点群から削除する外れ値のパーセンテージ。 2.5次元メッシュの作成時のみ適応。デフォルトは 2 --mesh-wlop-iterations the Weighted Locally Optimal Projection (WLOP) 単純化アルゴリズムの繰り返し 数。この値を大きくすると時間がかかるがスムーズなメッシュになる。 2.5次元メッシュの作成時のみ適応。デフォルトは 35 ※2.5次元メッシュはメッシュの改良にともない廃止 ?について検討中 https://github.com/OpenDroneMap/OpenDroneMap/issues/640 34
  35. 35. ②メッシュの作成 出力ファイル・フォルダ ● odm_meshing_log.txt オプションの設定情報などのログファイル ● odm_mesh.ply メッシュファイル odm_meshing/ 35
  36. 36. ②メッシュの確認 メッシュファイルの確認 1. MeshLabにodm_mesh.plyをドラッグ 2. ツールバーで「WireFrame」を押して表示を切り替え 36
  37. 37. ③テクスチャの作成 メッシュの作成 テクスチャの作成 ジオリファレンス DEMの作成 オルソ画像の作成 入力画像 点群の作成 ①opensfm ②odm_meshing ③mvs_texturing ④odm_georeferencing ⑤odm_dem ⑥odm_orthophoto 37
  38. 38. ③テクスチャの作成 ひとまず実行(処理時間5~8分) docker run -it --rm -v ${odmdata}/images:/code/images -v ${odmdata}/opensfm:/code/opensfm -v ${odmdata}/odm_meshing:/code/odm_meshing -v ${odmdata}/odm_texturing:/code/odm_texturing -v ${odmdata}/odm_georeferencing:/code/odm_georeferencing -v ${odmdata}/odm_dem:/code/odm_dem -v ${odmdata}/odm_orthophoto:/code/odm_orthophoto opendronemap/opendronemap --end-with mvs_texturing ※PoweShellに入力する際は、改行の前にバッククォート ` を入れてください。 (`の前にはスペースが入っています。) 38
  39. 39. ③テクスチャの作成 仕組み ● 入力画像+カメラパラメータ( reconstruction.nvm)+メッシュデータ(odm_mesh.ply)からテクスチャ付き の三次元モデルを作成 ● TexReconのサイトで公開されているアルゴリズムを使用 ● https://www.gcc.tu-darmstadt.de/home/proj/texrecon/ ● https://github.com/nmoehrle/mvs-texturing 39
  40. 40. ③テクスチャの作成 オプション --texturing-data-term <string> Data term: [area, gmi]. Default: gmi --texturing-outlier-removal-type <string> フォトメトリックの外れ値の除去方法 [none,gauss_damping, gauss_clamping]. デフォルトはgauss_clamping --texturing-skip-visibility-test ジオメトリックな可視テストをスキップする --texturing-skip-global-seam-leveling グローバルな継ぎ目をスキップする。赤外線データに有効 --texturing-skip-local-seam-leveling 局所的な継ぎ目のブレンドをスキップする --texturing-skip-hole-filling メッシュの穴埋めをスキップする --texturing-keep-unseen-faces どのカメラにも写っていないメッシュをそのまま残す --texturing-tone-mapping <string> ガンマ補正を有効にするかどうか。 [gamma,none]. デフォルトはnone 40
  41. 41. ③テクスチャの作成 出力ファイル・フォルダ ● odm_textured_model.conf オプションの設定情報 ● odm_textured_model_data_costs.spt costファイル ● odm_textured_model_labeling.vec ラベリングファイル ● odm_textured_model.obj 三次元モデル ● odm_textured_model.mtl マテリアルファイル ● odm_textured_model_material0000_map_Kd.png テクスチャマップ odm_texturing/ 41
  42. 42. ③テクスチャの作成 テクスチャ付き三次元モデルの確認 1. MeshLabにodm_textured_model.objをドラッグ 2. ツールバーで「WireFrame」を押して表示を切り替え 42
  43. 43. ひと息 オープンソースの利点 ● 処理の詳細がプログラムレベルで分かる。 ● バグや新機能を、直接開発者に報告、提案できる。 Githubにおけるバグ修正のプロセスを見てみましょう。 https://github.com/OpenDroneMap/OpenDroneMap/issues/686 ハンズオン資料作成→バグ発見→バグの修正依頼→プログラムに反映 43
  44. 44. ④ジオリファレンス メッシュの作成 テクスチャの作成 ジオリファレンス DEMの作成 オルソ画像の作成 入力画像 点群の作成 ①opensfm ②odm_meshing ③mvs_texturing ④odm_georeferencing ⑤odm_dem ⑥odm_orthophoto 44
  45. 45. ④ジオリファレンス ひとまず実行(処理時間5~8分) docker run -it --rm -v ${odmdata}/images:/code/images -v ${odmdata}/opensfm:/code/opensfm -v ${odmdata}/odm_meshing:/code/odm_meshing -v ${odmdata}/odm_texturing:/code/odm_texturing -v ${odmdata}/odm_georeferencing:/code/odm_georeferencing -v ${odmdata}/odm_dem:/code/odm_dem -v ${odmdata}/odm_orthophoto:/code/odm_orthophoto opendronemap/opendronemap --end-with odm_georeferencing --gcp images/gcp_list.txt --resize-to 4000 --rerun odm_georeferencing ※PoweShellに入力する際は、改行の前にバッククォート ` を入れてください。 (`の前にはスペースが入っています。) --rerun odm_georeferencingは、mvs_texturingで終了しないバグ対応のため追加。最新のイメージは修正済み 45
  46. 46. ④ジオリファレンス 仕組み ● GCPファイルがある場合は、密な点群データ( depthmaps/merged.ply)とテクスチャ付き三次元モデル (odm_textured_model.obj)のジオリファレンスを行う。 ● GCPファイルが無い場合は、 EXIF情報の座標からジオリファレンスを行う。投影座標は UTM固定 ● GCPのリストから変換誤差が最も少なくなる 3地点を選び、そこから変換マトリクスを作成 46
  47. 47. ④ジオリファレンス オプション --resize-to opensfmで設定した値を指定(※現時点ではオリジナルサイズを指定しないと上手く変換できないバグあり) --gcp <path string> GCPファイルのパスを指定。 gcp_list.txtが無い場合は、 exifの座標からUTM変換用の GCPが作成される ※dockerの場合、gcp_list.txtをimagesフォルダに入れて images/gcp_list.txtと指定 --use-exif GCPファイルがある場合も強制的に Exifの座標を使用する ※ジオリファレンスでの --resize-toは廃止を検討中 https://github.com/OpenDroneMap/OpenDroneMap/issues/691 47
  48. 48. ④ジオリファレンス GCPファイルの作成 ● GCPは最低3画像に写っていて5地点以上が推奨 ● gcp_list.txtファイルに以下の形式で作成 ● 一行目にEPSGコード ● 二行目以降にGCPの座標とファイル名を並べる 投影X座標 投影Y座標 画像X座標 画像Y座標 ファイル名 ● 投影XY座標は、EPSGコードで指定した座標値 ● 画像XY座標は、左上が(0,0) ● 地理座標系(緯度、経度)は未対応 48
  49. 49. ④ジオリファレンス GCPファイルの作成 ● 画像XY座標は、QGISで確認(Y座標は負) ● 投影XY座標は、現地でGPSで取得。または地理院地図から緯度 経度で取得 ● 緯度経度の座標値は、OSGeo4W Shellからgdaltransformを利 用して投影変換 gdaltransform -s_srs EPSG:4326 -t_srs EPSG:32654 < marker.txt > out.txt 49
  50. 50. ④ジオリファレンス 出力ファイル・フォルダ ● odm_georeferencing_log.txt オプションの設定情報などのログ ● odm_georeferencing_transform.txt ジオリファレンスの変換マトリックス ● coords.txt ジオリファレンス済みのカメラの座標 ● odm_georeferenced_model.ply ジオリファレンス済みの密な点群データ ● odm_georeferencing_model_geo.txt ジオリファレンスの投影定義と GCPの平均座標 ● las.json LASファイル変換用設定ファイル ● odm_georeferenced_model.las LAS形式(バイナリ)に変換した密な点群データ ● odm_georeferenced_model.csv XYZ形式(テキスト)に変換した密な点群データ odm_georeferencing/ odm_texturing/ ● odm_textured_model_geo.obj ジオレファレンス済み三次元モデル ● odm_textured_model_geo.mtl ジオレファレンス用マテリアルファイル 50
  51. 51. ④ジオリファレンス ジオリファレンス済み密な点群データの確認 ● odm_georeferenced_model.csvの座標値を確認 51
  52. 52. ひと息 Potreeで点群データを表示 52 1. ダウンロード PotreeConverter_1.5_windows_x64.zip https://github.com/potree/PotreeConverter/releases 2. 解凍してフォルダの中のファイルをodmdata1028の中に入れる。 3. Osgeo4W Shellを起動して以下のコマンドで変換 4. 簡易webサーバーを起動して、htmlファイルにアクセス cd C:UsersmizutaniDesktopodmdata1028 PotreeConverter.exe odm_georeferencingodm_georeferencing_model.las -o potree -p handson1028 --projection “+proj=utm +zone=54 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <>” cd potree python -m SimpleHTTPServer http://localhost:8000/handson1028.html にアクセス
  53. 53. ⑤DEMの作成 メッシュの作成 テクスチャの作成 ジオリファレンス DEMの作成 オルソ画像の作成 入力画像 点群の作成 ①opensfm ②odm_meshing ③mvs_texturing ④odm_georeferencing ⑤odm_dem ⑥odm_orthophoto 53
  54. 54. ⑤DEMの作成 ひとまず実行(処理時間25~30分) docker run -it --rm -v ${odmdata}/images:/code/images -v ${odmdata}/opensfm:/code/opensfm -v ${odmdata}/odm_meshing:/code/odm_meshing -v ${odmdata}/odm_texturing:/code/odm_texturing -v ${odmdata}/odm_georeferencing:/code/odm_georeferencing -v ${odmdata}/odm_dem:/code/odm_dem -v ${odmdata}/odm_orthophoto:/code/odm_orthophoto opendronemap/opendronemap --end-with odm_dem --dsm --dem-resolution 0.1 --dem-terrain-type FlatForest ※PoweShellに入力する際は、改行の前にバッククォート ` を入れてください。 (`の前にはスペースが入っています。) 54
  55. 55. ⑤DEMの作成 仕組み ● ジオリファレンス済みの密な点群データの LASファイル(odm_georeferenced_model.las)から、DEMデー タ(DSM、DTM)を作成 ● LASファイルからDEMデータの変換は、lidar2demsプロジェクトのl2d_demsコマンドを使用 http://applied-geosolutions.github.io/lidar2dems/doc/concepts ● DTM作成のためのgroundかどうかの分類は、lidar2demsプロジェクトのl2d_classifyコマンドを使用 http://applied-geosolutions.github.io/lidar2dems/ 55
  56. 56. ⑤DEMの作成 オプション --dtm DTM (地面)を作成 --dsm DSM (地表面、地面+構造物 )を作成 --dem-gapfill-steps <positive integer> ギャップのある領域を埋めるために使用されるステップの数。 0だと無効にする。デフォルトは 4 --dem-resolution <float> 出力解像度。値は 1ピクセルあたりの長さ。デフォルトは 0.1 --dem-maxangle <positive float> ポイント間の最大角度がこの値を超えるポイントは使用しない。デフォルトは 20 --dem-maxsd <positive float> ポイントの局所平均がこの値の標準偏差を超えるポイントは使用しない。 --dem-approximate 近似プログレッシブ形態フィルタを使用して計算。高速に計算するが正確ではない。 --dem-decimation <positive integer> DEMを生成する前にポイントを間引く割合。 1だと間引かない。デフォルトは 1 --dem-terrain-type <string> 地形の種類を[FlatNonForest, FlatForest, ComplexNonForest,ComplexForest]から指定。 適切に指定すると処理時間が短くなる。デフォルトは ComplexForest FlatNonForest:植生が少ない比較的平坦な地域  FlatForest:植生のある比較的平坦な地域 ComplexNonForest:植生が少ない多彩な地形  ComplexForest: 植生のある多彩な地形 56
  57. 57. ⑤DEMの作成 出力ファイル・フォルダ ● odm_georeferenced_model.summary.json odm_georeferenced_mode.lasファイルの内容 ● odm_georeferenced_model.boundary.json 上のlasファイルの領域情報 ● odm_georeferenced_model.bounds.geojson lasファイルの領域座標の geojson ● bounds.shp 領域のシェープファイル ● bounds-0_l2d_s1c2.las ground分類後のlasファイル(dtmを作成しない時はコピー) ● bounds-0_dsm_r0.1.idw.tif r0.1の半径で最大値を探索し作成した DSMファイル ● bounds-0_dtm_r0.1.idw.tif r0.1の半径で最大値を探索し作成した DTMファイル ● dsm.tif DSMファイル ● dtm.tif DTMファイル odm_dem/ 57
  58. 58. ⑤DEMの作成 DSMデータの確認 1. QGISにdsm.tifをドラッグ 2. レイヤのプロパティからスタイルを設 定 3. プラグインからProfile toolをインス トールして断面を表示 58
  59. 59. ⑥オルソ画像の作成 メッシュの作成 テクスチャの作成 ジオリファレンス DEMの作成 オルソ画像の作成 入力画像 点群の作成 ①opensfm ②odm_meshing ③mvs_texturing ④odm_georeferencing ⑤odm_dem ⑥odm_orthophoto 59
  60. 60. ⑥オルソ画像の作成 ひとまず実行(処理時間2~3分) docker run -it --rm -v ${odmdata}/images:/code/images -v ${odmdata}/opensfm:/code/opensfm -v ${odmdata}/odm_meshing:/code/odm_meshing -v ${odmdata}/odm_texturing:/code/odm_texturing -v ${odmdata}/odm_georeferencing:/code/odm_georeferencing -v ${odmdata}/odm_dem:/code/odm_dem -v ${odmdata}/odm_orthophoto:/code/odm_orthophoto opendronemap/opendronemap --end-with odm_orthophoto --orthophoto-resolution 20 --gcp images/gcp_list.txt 60 ※PoweShellに入力する際は、改行の前にバッククォート ` を入れてください。 (`の前にはスペースが入っています。) --gcp images/gcp_list.txt は、georeferencingが再実行されるバグ対応のため追加
  61. 61. ⑥オルソ画像の作成 仕組み ● ジオリファレンス済みのテクスチャー付き三次元モデル( odm_textured_model_geo.obj)からpng形式の 画像を作成。 ● png画像にgdal_translateで座標値を付けて、TIFF形式のオルソ画像を作成 61
  62. 62. ⑥オルソ画像の作成 オプション --orthophoto-resolution <float > オルソ画像の解像度。値は投影法単位( UTMなら1m)あたりのピクセル数。 デフォルトは20.0(0.05m/pixcel) --orthophoto-target-srs <EPSG:XXXX> 出力する投影法の設定。※まだ実装されていない。現在はジオリファレンスと同じ 投影法で出力 --orthophoto-no-tiled strippedなTIFFを作成 --orthophoto-compression <string> 圧縮形式の設定。デフォルトは DEFLATE [JPEG, LZW, PACKBITS, DEFLATE, LZMA, NONE] --orthophoto-bigtiff <string> BigTIFFの設定。デフォルトは IF_SAFER [YES, NO, IF_NEEDED,IF_SAFER] --build-overviews オーバービューの作成 62
  63. 63. ⑥オルソ画像の作成 出力ファイル・フォルダ 63 ● odm_orthophoto_log.txt オプションの設定情報などのログ ● odm_orthophoto_corners.txt coords.txtの座標平均値を差し引いた四隅の値 ● odm_orthophoto.png 座標値なし画像 ● odm_orthophoto.tif オルソ画像 odm_orthophoto/
  64. 64. ⑥オルソ画像の作成 オルソデータの確認 ● QGISにortho.tifをドラッグ ● 地理院地図との重なりを確認 64
  65. 65. 全処理のコマンド 65 docker run -it --rm ` -v ${odmdata}/images:/code/images ` -v ${odmdata}/opensfm:/code/opensfm ` -v ${odmdata}/odm_meshing:/code/odm_meshing ` -v ${odmdata}/odm_texturing:/code/odm_texturing ` -v ${odmdata}/odm_georeferencing:/code/odm_georeferencing ` -v ${odmdata}/odm_dem:/code/odm_dem ` -v ${odmdata}/odm_orthophoto:/code/odm_orthophoto ` opendronemap/opendronemap ` --resize-to 4000 ` --min-num-features 20000 ` --opensfm-process 2 ` --mesh-size 200000 ` --gcp images/gcp_list.txt ` --dsm ` --dem-resolution 0.1 ` --dem-terrain-type FlatForest ` --orthophoto-resolution 20
  66. 66. お疲れさまでした。 66

×