フォトグラメトリ?LiDARスキャン?Object Capture?
このあたりについてiOSエンジニア向けのカンファレンスで話す予定があり、用語を整理しようと思うのだが、なかなか難しいなと。
そのあたりの葛藤を雑に書き散らかしてみる。
LiDARスキャンとフォトグラメトリ
まず前提として、このプロポーザルを書いた時点では、僕は 【LiDARスキャン】も 【フォトグラメトリ】 の一種、ぐらいに捉えていた。
LiDARを用いてスキャンする場合でも(テクスチャとして)写真は使うし、実装としては入力として写真が入ったフォルダを渡すようになっている(後述)わけで、「写真から3Dモデルを生成」しているのでどっちも【フォトグラメトリ】といえるだろうと。
しかしその後発表準備として色々な記事で勉強させてもらっているうちに【フォトグラメトリ】 と 【LiDARスキャン】 は別モノとして扱うのが一般的、ということを理解してきた。
確かに、写真という2D情報だけを元に3Dモデルをreconstructionするのと違って、【LiDARスキャン】は点群という三次元的な情報を直接取得しているわけなので、「写真から3Dモデルを生成」という定義からは外れるかもしれない。
Object Capture APIにおけるフォトグラメトリ(とLiDAR)
【フォトグラメトリ】が冠されたクラスがLiDARデータを使う
Appleプラットフォーム(主にiOS/macOS)では現実世界の物体(Object)を3D的に撮影(Capture)することをObject Captureと呼ぶ。
で、Object Capture APIの中に PhotogrammetrySession というクラスがあり、
このイニシャライザは入力となる写真データのあるフォルダのURLを渡すようになっており、
init(
input: URL,
configuration: PhotogrammetrySession.Configuration = Configuration()
) throws
この意味では「写真から3Dモデルを生成」というところで前述の【フォトグラメトリ】の定義とまったくズレはないのだが、
この PhotogrammetrySession 、LiDARから得たデプスマップを与えればその情報も利用してreconstructionを行う。
つまり、PhotogrammetrySession は命名上は【フォトグラメトリ】を行うクラスでありながら、【LiDARスキャン】的でもある。
LiDARは利用するが【LiDARスキャン】ではない?
ただし、PhotogrammetrySession の内部処理では、デプスマップから直接点群を得て3Dモデル化しているわけでもなさそうなので、
「LiDARデータを利用することもあるが【LiDARスキャン】とはまた別物」ともいえるので、整理がややこしい。
Object Captureという用語が表す範囲
今のところAppleは【Object Capture】という用語は、「物体」のまわりをグルグルまわりながら三次元的にキャプチャーするという用途に特化して使っていると思う。
何をいいたいかというと、広域フォトグラメトリのような3Dモデル生成までは対象にしてなさそうな気がする。
なにしろObjectCaptureViewと命名されたUIコンポーネントが、物体の周りをぐるっとまわるスキャン用途に特化している。
というわけで、「【Object Capture】 は、Apple流の "3Dスキャン" や 【フォトグラメトリ】 の言い換え」とも言えなそうだ。それらより狭義の用語かなと。
(なお、試してみたところでは実は広域フォトグラメトリも「そこそこ」は可能)
それぞれの用語が指し示す範囲
Appleは、【Object Capture】を、Image Capture(撮影)と Reconstruction (3Dモデル再構築)両方を含むワードとして使っている。
ObjectCaptureSession, ObjectCaptureView という撮影側のAPIと、PhotogrammetrySession, PhotogrammetrySample というreconstruction側のAPIを総称して「Object Capture API」と呼んでいるからだ。
つまり、【Object Capture】 では、後段のreconstructionにおいて【フォトグラメトリ】を行っている、という関係。
いったんまとめ
全然整理できない、と思って書き始めてみたが、書きながら「あれ、別に整理に困るとこなくない?」と思ってしまった。
フォトグラメトリ: 写真から3Dモデルを再構築する
LiDARスキャン: LiDARを利用して点群データを得て3Dモデルを生成する。
Object Capture:
Appleは物体の3Dスキャンのことをこう呼んでいる
広域フォトグラメトリのような3Dモデル生成は(今のところ?)対象外かもしれない
(実は広域フォトグラメトリも「そこそこ」は可能)
3Dモデル生成の部分では【フォトグラメトリ】を行う。
PhotogrammetrySession ではLiDAR/デプス情報を使うが、3Dの再構築自体には使用してなさそうつまりLiDARは使うものの、いわゆる【LiDARスキャン】ではない。あくまで3D再構築技術としては【フォトグラメトリ】に分類される。
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/