2019年1月7日月曜日

OpenDroneMapによる三次元モデル生成実験1


愛用のフラッシュメーターを三次元化してみました。やはりメモリが足りてなかったんですね。


--memory 4g 



を明示的に示せば、無事生成できました。Linuxなら8GBでも十分なようです。ところがterminalを見ると、


[WARNING] Georeferencing failed. Make sure your photos have geotags in the EXIF or you have provided a GCP file.
[WARNING] Georeferencing failed. Make sure your photos have geotags in the EXIF or you have provided a GCP file.
[INFO]    Running ODM Georeferencing Cell - Finished
[INFO]    Running ODM DEM Cell
[INFO]    Classify: False
[INFO]    Create DSM: False
[INFO]    Create DTM: False
[INFO]    DEM input file /code/odm_georeferencing/odm_georeferenced_model.laz found: False
[WARNING] DEM will not be generated
[INFO]    Running ODM DEM Cell - Finished
[INFO]    Running ODM Orthophoto Cell
[WARNING] Cannot calculate GSD, using requested resolution of 5.0
[DEBUG]   running /code/build/bin/odm_orthophoto -inputFile /code/odm_texturing_25d/odm_textured_model.obj -logFile /code/odm_orthophoto/odm_orthophoto_log.txt -outputFile /code/odm_orthophoto/odm_orthophoto.png -resolution 20.0  -outputCornerFile /code/odm_orthophoto/odm_orthophoto_corners.txt
Killed
Traceback (most recent call last):
  File "/code/run.py", line 47, in <module>
    plasm.execute(niter=1)
  File "/code/scripts/odm_orthophoto.py", line 94, in process
    '-outputCornerFile {corners}'.format(**kwargs))
  File "/code/opendm/system.py", line 34, in run
    raise Exception("Child returned {}".format(retcode))
Exception: Child returned 137



なるエラーを吐いてレンダリングが止まるので、何事かと思っていたら、geotagのない写真を読み込むと、このエラーが出て止まるようです。でもプロジェクトディレクトリの同一階層にはきちんとodm_texuringというディレクトリが作成されており、objファイルとmtlファイルほか、必要なファイルが全て生成されています。giotiffやgio_objが生成されていないだけです。ご安心を。 

うーん。やはり定点撮影が必要なのと、背景を消すパラメーターを渡さないとだめのようですね。もう少し、写真の撮り方を含めて研究しますか。

2019年1月6日日曜日

岡山城外下馬門櫓石垣の三次元オルソ画像をOpenDroneMapで作成しました

オープンソースなSfm/MVS(Structure from Motion / Multi-View Stereo)ソフトウェア、 OpenDroneMapを利用して、岡山城石垣の三次元オルソ画像を作成してみました。ひとまず、作成した画像をSketchfabにアップロードしたので、そちらをご覧ください。


回転させてもあんまり面白くはないけど、隅角部や築石のアップを見たり、石垣の角度を測ったりはできます。いろんな研究に使えそうですね。

外下馬門櫓は、岡山城二の丸大手口にあった櫓門のことです。現在は北側櫓台石垣と、内堀に沿って築かれた土塀の基礎石垣が残るのみですが、実際は南側にも櫓台石垣があり、さらに内堀に沿って南へ石垣が続いていました。そして櫓台をまたいで櫓門が設けられ、そこが岡山城二ノ丸内郭(東南の郭)への入り口となっていました。

岡山城絵図には「外目安御門」と書かれていることが多いのですが、一部の大身家臣以外はこの櫓門の手前で馬を下りなければならなかったことから、通称「外下馬門」と呼ばれます。

今は岡山県庁と岡山県立図書館の一角に当たっており、往時の姿は見る影もないですが、この門に向かって「外下馬門橋」がかけられ、その手前には「榎の馬場」と呼ばれる広場がありました。

「榎の馬場」の西は金川に陣屋を置く家老の日置氏、南は佐伯に陣屋を置く同じく家老の戸倉氏、そして門をくぐった先には虫明に陣屋を置く筆頭家老、伊木氏の屋敷地が広がっていました。まさに岡山城二の丸の中枢と言ってよい場所です。

本当はBlenderでも使って、土塀や櫓門を復元したデータを載せた方(ARですね)が面白いのですけど、ひとまず石垣の立面が見たかったもので。

私は持ってないですけどVRヘッドセットをつけてみたらどんな風に見えるのでしょうね。

技術的なことはあまり書いても面白くはないでしょうから、簡単に。この画像はDebian GNU/Linux 9.6.0上にDocker環境を作成、その上でOpenDroneMapを起動させ、作成したものです。 参考にさせていただいたリンクを張っておきますので、そちらをご参照ください。

1)Debian GNU/Linuxの概要や導入について

Debian -- ユニバーサルオペレーティングシステム
または、
Debian JP Project

2)Debian上にDocker環境を作成するには

上記のサイトの通りにすればできるのですが、事前にsudoの設定が必要です。Debian環境では基本、dockerの全てのコマンドの前にsudoコマンドをつけないと動きません。以下のサイトを参照させていただきました。


3)Docker上にOpenDroneMapを作成し、テストデータを作成するには

上記サイトに大変わかりやすくまとめてあります。Windows10(ただしHyperーVを利用するためProfessional版のみ)やMacをお使いの方もDockerさえ動けば利用できます。

基本的な操作はこのサイトでわかるので、その他のパラメーターについては以下のサイトを参照ください。

https://docs.opendronemap.org/using.html#command-line-arguments

参照させていただいた全ての皆様と、Open sourceテクノロジーに関わる技術者さまに感謝します。

というわけで、次回は写真画像(JPGファイル)を利用した3Dモデルの作成について紹介します。

岡山城本丸下の段六十一雁木門石垣 by turbow76 on Sketchfab 岡山城本丸下の段の六十一雁木門石垣です。本段に設けられた門の袖石垣で、高さ2m近い立石、長さ3m以上の横立石を豪快に積んだ勇壮な石垣です。 旭川筋から直接...