見出し画像

スマホのデプスセンサで取得したDepth Mapからメッシュ生成を行う方法【Metashape編】

あらすじ

Agisoft Metashape Professional 1.8からはデプスセンサ付きスマートフォンのカメラデータ処理に対応しました。メッシュ生成ではデプスマップを生成→生成した深度マップからメッシュを生成という手順で計算を行いますが、事前に計算されたデプスマップでメッシュを生成できるのか?

Starting from version 1.8 Agisoft Metashape Professional supports data processing of smart cameras with a depth sensor.

Depth sensor is installed on the range of Apple devices with TrueDepth camera, that is the front camera of iPhone starting from the 10th version (except SE) and the front camera of iPad pro.

Smart cameras with depth sensor data processing : Helpdesk Portal (freshdesk.com)

デプスデータの取得

具体的にはTrueDepthカメラ搭載のAppleデバイス、つまりFaceIDを搭載したiPhone X以降(SE等を除く)、およびLiDARセンサをカメラに搭載したProモデルです。
また「Google Cameraアプリケーションでは、ポートレートモードで深度形式が埋め込まれています。スマートフォンは、Google Cameraアプリケーションの対応機種に限定されます。」とありますが、当環境に検証端末がないため割愛します。

深度データの取得は少し難しい手順を踏む必要がありますが、今回は今冬リリース予定のRealityScanベータ版からFilesアプリ内にストアされているキャプチャデータ使用して検証を行いました。(Capturesフォルダは将来的に仕様が廃止される可能性があります)
以前はMetascanでも同様のデータが取得できましたが、現在はアクセスできなくなっています。

RealityScanで取得したイメージソース

データの生成(Agisoft Metashape Professional 2.0.0)

Metashape ProfessionalではPythonカスタムスクリプトを外部実行しなくても、コンソールウィンドウにて任意のファンクションを実行できます。
公式記事で注意すべき点は2.0.0よりimportLaserScansからimportDepthImagesにリネームされたことでしょうか。

Metashape.app.document.chunk.importLaserScans(
    filenames = ["/path/to/depth/image-1"],
    color_filenames = ["/path/to/corresponding/color/image-1"],
    image_path = "/path/to/destination/folder/{filename}.tif"
);
  • filenames 深度マップとして読み込みたいグレースケールデータを指定します。

  • color_filenames 深度マップを保持するカラー画像を指定します。

  • filenamescolor_filenamesがTIFF(.tif)として保存されます。

Metashape.app.document.chunk.importDepthImages(filenames = ['C:/Users/yuma/Desktop/Captures_2022-09-28/2022-07-05 10_20_29/IMG_ARKit_116467432.jpg.depth.TIF'], color_filenames = ['C:/Users/yuma/Desktop/Captures_2022-09-28/2022-07-05 10_20_29/IMG_ARKit_116467432.jpg'], image_path = 'C:/Users/yuma/Desktop/Metashape-DepthmapTEST/Depth/{filename}.tif');

こちらは実際にコンソールウィンドウに入力したワンライナーのコマンドです。
今回はRealityScanでキャプチャした画像を入力してみました。

深度マップとして入力したTIFFイメージ
カラー画像として入力したJPEGイメージ

どうやら、深度マップとして入力する画像はカラー画像と解像度が違っていても大丈夫のようです。

  • 深度マップ TIFF形式、解像度192 x 256ピクセル、ビット深度 32ビット

  • カラー画像 JPEG形式、1440 x 1920ピクセル(現在は3024 x 4032)、ビット深度 24ビット

少し過去のデータを使用したためカラー画像の解像度が小さいです。RealityScanについてはこちらの記事も参考にしてください。RealityScan最新アプデ情報(9/29)|Photogrammetry.JP 3Dスキャンサービス@YUMA株式会社|note

ということで、処理した結果がこちらです。

事前に深度マップを計算済みということで「8秒」という圧倒的な速度でメッシュを生成できました。入力したデプスマップサイズが縮小されて小さいことや機械学習による推定?から作られたもののため、今回のメッシュ品質はそれほど良いものでもありませんでした。

比較として同入力画像から通常の工程でフォトグラメトリをUltra Highで処理したものがこちらです。

超高品質設定ということもあり、通常のフォトグラメトリによる深度マップ生成のほうがよりディティールを再現しています。


まとめ

入力画像のサイズも小さく通常のフォトグラメトリを大きく上回るような成果が出る前提条件ではありませんでした。
しかし外部から取得した深度マップ、例えばハンディスキャナのようなフォトグラメトリでは不得意な部分を補えるようなスキャナと組み合わせることでより高い品質を求めることができる期待ができる成果でした。
今後もLiDAR付スマートフォンのようなデプス取得ができる新しいデバイスが出た際にはキャッチアップしつつ、実際に試していきたいと思います!

宣伝

今月より弊社代表がスキャンを行った重要文化財「油滴天目」のデジタルツイン体験展示が2022年12月11日まで展示されていますので、ぜひ東京国立博物館150周年 特別企画「未来の博物館」でご覧ください!

弊社、YUMA株式会社ではフォトグラメトリなどの技術を用いて出張3Dスキャンのサービスを行っております。水中など特殊な環境でのフォトグラメトリも行っていますので、まずは気軽にご相談のDMからどうぞ!


この記事が気に入ったらサポートをしてみませんか?