Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cesiumを用いた3次元リアルタイムデータの可視化について

 Cesiumを用いた3次元リアルタイムデータの可視化について

More Decks by ノーザンシステムサービス | Northern System Services

Other Decks in Technology

Transcript

  1. 1.v-SLAM (visual SLAM) : リアルタイムで単眼カメラの動画 データから自己位置推定と環境地図を作成する技術。今回使ったのは LSD-SLAM。他にはORB-SLAMやSVO、PTAM等がある。これ系の技 術は大体はPTAMを親として派生した技術。 また、 LiDAR等の高価なセンサを使用せずとも安価なカメラで点群

    データを得られる。最近は精度も良い。 取得したデータはどう加工するの?-1 https://www.youtube.com/watch?v=GnuQzP 3gty4 LSD-SLAM ORB-SLAM SVO PTAM https://www.youtube.com/watch?t=142&v=Y 9HMn6bd-v8 https://www.youtube.com/watch?v=2YnIMfw6bJY https://www.youtube.com/watch?v=8DIS RmsO2YQ
  2. 1.Google EarthのWEB版も最初考えたが、そもそも現時点で最新の Chromeで動作しないので候補から外れた。 2. Google Earth等の商用アプリは基底部分をいじれないので、欲しい機能 を自前で実装できないため、オープンソースであるのは必須要件だった。 Cesiumは基底部分はもとより、UIも大幅に変更可能なのもかなりポイント高 い。 3.WebGLに対応したブラウザであれば端末を選ばない。

    4.ドローンからのデータを扱う上で、サーバからリアルタイムで大量のデー タを扱うにはブラウザ上でWebSocketやWebRTC等のHTML5技術と親和性が 高いものが良かった。 5.KMLやGeoJSON等馴染み深いデータソースをそのまま使えるため、過去 の資産を活かしやすい。 なぜCesium?-1
  3. ここがヘンだよCesium 仕様がダイナミックに変わるので、緯度経度の変換や取得方法、 オブジェクトへのズーム方法など重要な部分の書き方が代わった りするのでソースの修正が大変。最近は落ち着いている。 今回使用しているのは6月1日に発表されたv1.10だが、以前は v1.2のsubspaceプラグインを使用して点群を表示していた。 これはv1.9までのバージョンでは点群を表示する方法がなく、 サードパーティ製のプラグイン( subspace )に頼らざるを得な

    かったが、これはv1.2固定対応で、バグ対応や高速化対応その他 もろもろの最新版の利用を断念せざるを得ない状況だった。 根幹の仕様が滅多に変更がないのであればプラグインも上位互 換性が上がると思われるが、まだ今の段階ではそこまで成熟して いないので、どうしても最新版で使いたい場合はプラグインに パッチを当てるしか無い。
  4. ① EXIF付き画像をフォルダに入れて、そのフォルダ内で OpenDroneMap/run.pl を実行することでOpenDroneMapのワークフローが実行される。 ② 実行後には点群データとオルソ画像、 3Dメッシュオブジェク トが生成される。 ③ テキチャ付き3Dメッシュオブジェクト(obj)はそのままの形

    式だとcesiumに表示できないため、一旦Meshlab等でCOLLADA形 式に変換し、更にそこからcesiumライブラリ経由でglTF形式に変 換することでようやくcesium上に3Dモデルとして表示が可能とな る。 参考:SfMで作ったものをCesiumで 表示するには?-OpenDroneMap編
  5. ① EXIF付き画像を「images」フォルダにいれて、パラメータ等が記載された「config.yaml」を用意する。 OpenSfM/bin/run_all フォルダ名 【フォルダ構造例】 testData/ └config.yaml └images/ └img_00.jpg └img_01.jpg

    └img_02.jpg └img_03.jpg └img_04.jpg └img_05.jpg 【実行例】 OpenSfM/bin/run_all testData ② 実行後にはJSON形式の点群データができる。デフォルトのままだとECEF座標系(地球中心・地球固定直交 座標系)で出力されるためECEF座標系⇒緯度経度の変換を行う必要があった。 ③ Ply形式にPythonで変換後、Cesiumで表示が可能となる。ただし建物の横から撮った写真であればジオリ ファレンスの精度はそこまで問題ではないが、航空写真のような上から撮った写真の場合は激しくずれる。高さ がハードコーディングされていたりしたので、恐らく横からの画像に特化している? 参考:SfMで作ったものをCesiumで 表示するには?-OpenSfM編
  6. ①任意のフォルダに画像、スクリプトファイル(下記参照)、画像同士の組み合わせを記載したXMLファイル、プロジェクションを記載したXMLファイルなどを入れる。 ②Micmacには様々なツールが入っている。 各ツールを実行するスクリプトを書く。 【例】UAS_test.sh ----------------------------------------------- #!/bin/sh BIN_DIR=$1 CHANT_DIR=$2 ${BIN_DIR}mm3d OriConvert

    OriTxtInFile GPS_WPK_Grand-Leez.csv Nav-Brut-RTL [email protected] MTD1=1 NameCple=FileImagesNeighbour.xml CalcV=1 ImC=R0040536.JPG NbImC=25 ${BIN_DIR}mm3d Tapioca File FileImagesNeighbour.xml -1 ${BIN_DIR}mm3d Tapas RadialBasic "R0040536.JPG|R0040537.JPG|R0040535.JPG|R0040578.JPG|R0040498.JPG|R0040499.JPG|R0040579.JPG|R0040538.JPG|R0040577.JPG|R0040534.JPG|R0040497.JP G|R0040500.JPG|R0040580.JPG|R0040456.JPG|R0040616.JPG|R0040576.JPG|R0040496.JPG|R0040617.JPG|R0040455.JPG|R0040457.JPG|R0040615.JPG|R0040539.J PG|R0040501.JPG|R0040581.JPG|R0040533.JPG" Out=Sample4Calib-Rel ${BIN_DIR}mm3d AperiCloud "R0040536.JPG|R0040537.JPG|R0040535.JPG|R0040578.JPG|R0040498.JPG|R0040499.JPG|R0040579.JPG|R0040538.JPG|R0040577.JPG|R0040534.JPG|R0040497.JP G|R0040500.JPG|R0040580.JPG|R0040456.JPG|R0040616.JPG|R0040576.JPG|R0040496.JPG|R0040617.JPG|R0040455.JPG|R0040457.JPG|R0040615.JPG|R0040539.J PG|R0040501.JPG|R0040581.JPG|R0040533.JPG" Sample4Calib-Rel Out=Sample4Calib-Rel.ply ${BIN_DIR}mm3d Tapas RadialBasic "R.*.JPG" Out=All-Rel InCal=Sample4Calib-Rel ${BIN_DIR}mm3d CenterBascule "R.*.JPG" All-Rel Nav-Brut-RTL tmp CalcV=1 ${BIN_DIR}mm3d OriConvert OriTxtInFile GPS_WPK_Grand-Leez.csv Nav-adjusted-RTL [email protected] MTD1=1 Delay=-0.0854304 ${BIN_DIR}mm3d CenterBascule "R.*.JPG" All-Rel Nav-adjusted-RTL All-RTL ${BIN_DIR}mm3d ChgSysCo "R.*JPG" All-RTL SysCoRTL.xml@SysCoBL72_EPSG31370.xml All-BL72 ${BIN_DIR}mm3d AperiCloud "R.*.JPG" All-BL72 Out=All-BL72-cam.ply WithPoints=0 ${BIN_DIR}mm3d Malt Ortho "R.*JPG" All-BL72 DirMEC=MEC DefCor=0 AffineLast=1 Regul=0.005 HrOr=0 LrOr=0 ZoomF=1 ${BIN_DIR}mm3d to8Bits MEC/Z_Num8_DeZoom1_STD-MALT.tif ${BIN_DIR}mm3d Nuage2Ply "MEC/NuageImProf_STD-MALT_Etape_8.xml" Scale=8 Attr="MEC/Z_Num8_DeZoom1_STD-MALT_8Bits.tif" Out=CanopySurfaceModel.ply ----------------------------------------------- ③スクリプトを実行 ./UAS_test.sh micmac/bin ※感想:PDFのマニュアルが約350ページもあり心が折れた。 参考:SfMで作ったものをCesiumで 表示するには?- Micmac編
  7. 追記 ドローンを飛ばす前に読んでおいたほうがよい資料 http://dil-opac.bosai.go.jp/publication/nied_report/PDF/81/81-5inoue.pdf 防災科学技術研究所研究報告 第 81 号 自然災害調査研究のための マルチコプター空撮技術 著:

    井上 公 内山庄一郎 鈴木比奈子 ドローンを用いた詳細DEM (0.5mメッシュ)やオルソ 画像作成と運用に対する考察 をまとめたもの。操作方法だ けではなく事故や保険などに も言及しており非常に広範で よくまとまっている。 オススメ