深度图转点云

使用RGBD相机可以获得一幅depth和RGB,为了获得更加丰富的几何信息,我们想把depth转换成点云。

  • 需要准备的数据
    1.相机内参
    2.深度图

  • 具体计算
    1.首先我们可以根据深度相机内参 s c a l e scale scale d e p t h depth depth图像得到 Z Z Z坐标
    2.根据内参和Z,计算 X Y XY XY

    从相机内参可以得知焦距 f x f_x fx f y f_y fy,这里只介绍 x x x方向的计算, y y y方向同理。记 x 、 y x、y xy为世界坐标系中的坐标值。

    假设要把depth图中的一个像素转换为世界坐标中的点,根据相似三角形:
    d e p t h f x = X x − c x \frac{depth}{f_x}=\frac{X}{x-c_x} fxdepth=xcxX

    也就得到了 X X X。同理可以得到 Y Y Y

  • 一个高效计算的demo


# xy像素坐标生成  但是还可以用np.mgrid提速
self.xmap = np.array([[j for i in range(640)] for j in range(480)])
self.ymap = np.array([[i for i in range(640)] for j in range(480)])


cam_scale = 1.0  # 深度比例尺
pt2 = depth_masked / cam_scale  # z轴坐标
pt0 = (ymap_masked - self.cam_cx) * pt2 / self.cam_fx  # 减掉cx cy偏移量,再根据深度信息确定世界坐标系中x y的坐标
pt1 = (xmap_masked - self.cam_cy) * pt2 / self.cam_fy
cloud = np.concatenate((pt0, pt1, pt2), axis=1)
cloud = cloud / 1000.0
  • 番外,如果要得到 x y z + r g b xyz+rgb xyz+rgb,可以先把 d e p t h depth depth图像与 R G B RGB RGB图像对齐,每个像素就可以进行“着色”了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值