見出し画像

開発者目線から見たiPhone LiDAR

注:本記事は検証段階のものを多分に含んでいるため、正確性に欠けます。あくまでも一個人の考察である点を留意してください。

最初に

近年、iPhoneのLiDARを用いた3Dスキャンアプリが多数登場しています。スキャンできるデータとしてはメッシュと点群が主流です。

特に点群は、アプリの挙動だけで見るとiPhoneのLiDARから生のデータを取得してるように見えますが、実際は異なります。

本記事では、開発者として実際に3Dスキャンアプリを実装している過程で気づいた所感をまとめていきます。

iPhone LiDARによる点群取得

結論から言いますと、アプリ上で点群取得機能を実装しようとした場合、LiDARの深度情報+画像から機械学習によって生成された深度画像をベースに、行列変換して点群を作り出す必要があります。

小難しい話ですが、重要なのは深度画像をベースにしているという点です。
これは生のLiDARデータをそのまま点群データとして出力していないということです。

スキャンアプリを実装する際には、必ずAppleのARKitというSDKを使う必要があります。しかしながら、このSDKにはLiDARの生データを取得する機能が実装されていません。

したがって、スキャンアプリを作成する際には、代替手段として深度情報から点群を生成する方法を取らざるを得ないわけです。

iPhoneに搭載されているLiDARの解像度は低い

次の画像を御覧ください。
1枚目はiPhoneの顔認証に使われているFaceIDのドットパターンです。
2枚目はiPhone12Proなどに搭載されているLiDARのドットパターンです。

画像2
画像1

どうでしょう。LiDARの方が圧倒的に解像度が低いことが分かりますね。
おそらくこの解像度で点群を取得しても、荒すぎて使い物にならないと考えられます。

この解像度の低さを考慮すると、ARKitにLiDARから生のデータを取得できる機能がない理由がわかる気がします。

Appleとしては、LiDARの生データ(点群)にはアクセスしてほしくなく、あくまでもメッシュベースでのAR活用を望んでいるのでしょう。

ちなみに、FaceIDとLiDARは深度情報の取得方法が異なっており、FaceIDはアクティブステレオ方式のため、照射したドットパターンの歪みを赤外線カメラで認識し、距離を測っています。一方でLiDARはToF方式のため、照射した光が反射して戻ってくるまでの時間で距離を測っています。

どちらの方式も一長一短ありますが、基本的にFaceIDは数十センチ単位を対象としており、測量には向きません(もともと顔認識用ですからね)。

基本的にiPhone LiDARは優れている、けど……

やはり現状として活用するとしたら、メッシュベースでの運用がいいのではないでしょうか(または写真測量)。

また、実務で使う場合は、生の点群データではなく深度画像から生成した点群をどこまで使っていいのか精査する必要がありそうです。日本には測量法なる法律があるため、それに則っていない場合は成果物として認めてもらえませんからね。


よければTwitterフォローお願いします。


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