深度画像(RGBD)を3D点群に変換しようとしています。私が現在使用しているソリューションは this post から取得されます:ここで:
cx
=画像の中心の高さcy
=画像の中心の幅fx
およびfy
= 250
、いくつかのオプションを反復して選択深度測定はピンホールカメラから取得され、点群は中心から離れて投影されています(下の画像例)。誰もが私にこれを解決する理由と方法を理解するのを手伝ってくれる?
これは、open3d
パッケージを使用して簡単に解決できます。 Sudo pip install -U open3d-python
を使用してインストールします(open3d
だけではありません-これは別のパッケージです)。
インストールしたら:
from open3d import *
rgbd = create_rgbd_image_from_color_and_depth(color, depth, convert_rgb_to_intensity = False)
pcd = create_point_cloud_from_rgbd_image(rgbd, pinhole_camera_intrinsic)
# flip the orientation, so it looks upright, not upside-down
pcd.transform([[1,0,0,0],[0,-1,0,0],[0,0,-1,0],[0,0,0,1]])
draw_geometries([pcd]) # visualize the point cloud
上記のコードは、カラーイメージがcolor
にあり、深度イメージがdepth
にあると想定しています。詳細については、open3d
に付属のサンプルを確認してください。
独自のカメラ組み込みがある場合は、pinhole_camera_intrinsic
をそれらに置き換えることができますが、テスト実行では、ピンホールカメラは多かれ少なかれ正常に機能します。