見出し画像

[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 / 計算式の意味

ここから先は

1,822字 / 1画像

¥ 500

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/