概要
深度图的每个像素包含着深度图片中该点的深度信息,本文用python的numpy,将深度图转化成点云信息
公式
X = depth * (u - cx) / fx
Y = depth * (v - cy) / fy
Z = depth
其中depth是深度图,fx、fy、cx、cy为相机内参,可通过标定获得,或部分相机可通过官方api获得。
代码
def depth_to_point_cloud(depth_map, fx, fy, cx, cy):
h, w = depth_map.shape
x, y = np.meshgrid(np.arange(w), np.arange(h))
x = (x - cx) * depth_map / fx
y = (y - cy) * depth_map / fy
z = depth_map
points = np.stack((x, y, z), axis=-1).reshape(-1, 3)
return (points)
小结
通过numpy数组的运算能够大大加快程序运行时间,有兴趣者可以对比用遍历像素的方法和用数组运算的速度差异