見出し画像

[iOS]デプスから3D点群を生成する

iOSで撮影したデプスデータを3D空間上の点群(Point Cloud)に変換する。

画像4

上の画像は自分で実装したものだが、RGB-D -> XYZ変換のサンプルは、Appleから公式で出ている。

さらにWWDC 2018の「Creating Photo and Video Effects Using Depth」セッションで実装の解説もある。

この解説をベースにデプスをXYZに変換する処理を整理する。

(2019.10.9追記: 本記事の内容を丁寧に書き直して拙著「Depth in Depth - iOSデプス詳解」に加筆修正しました。)

Z = f(U, V) から (X, Y, Z) を求める計算式

デプスマップは、テクスチャ座標(U, V)から深度Zが求まる関数として表現できる。このZは既に3D空間(カメラ空間)におけるZであるので、X, Yを求めたい。

画像1

X, Yは、Intrinsic Matrixを用いて、次のように計算できる。

画像2

計算式としてはこれだけ。以下、式の意味や実装について。

Intrinsic Matrix / 計算式の意味

この続きをみるには

この続き:2,058文字/画像1枚
記事を購入する

[iOS]デプスから3D点群を生成する

shu223

300円

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

6
フリーランスiOSエンジニア兼サンフランシスコのFyusion社勤務。 著書に「iOS×BLE Core Bluetooth プログラミング」「iOSアプリ開発 達人のレシピ100」。GitHubで「iOS Sampler」シリーズ他さまざまなオープンソースを公開している。
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。