【问题标题】:Generate point cloud from depth image从深度图像生成点云
【发布时间】:2020-04-22 16:53:48
【问题描述】:

我正在尝试将深度图像 (​​RGBD) 转换为 3d 点云。我目前使用的解决方案取自this post,其中:

  • cx = 图片中心高度
  • cy = 图片中心宽度
  • fxfy = 250,通过迭代几个选项来选择

深度测量是通过针孔相机进行的,点云从中心向外投影(下图示例)。谁能帮我理解为什么以及如何解决这个问题?

【问题讨论】:

    标签: python image point-clouds depth projection-matrix


    【解决方案1】:

    您可以使用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,但是对于测试运行,针孔相机或多或少都可以正常工作。

    【讨论】:

    • 感谢@Lenik 的建议。这个输出给了我一个切片的点云 (ibb.co/yy4F94b) 你知道为什么吗?
    • @LloydRayner 如果你觉得我的回答有用,你可以投票和/或接受它,为什么你的点云看起来“切片”——我不知道,这不太可能是@的问题987654331@ 包——我经常使用它。可能看看你的深度数据可能会有所帮助,尤其是像绘制点数与距离的关系——它可能会显示一些“缺失”的深度区域或其他不规则性。
    • 我有一个关于如何加载图像和深度数据的问题。在函数“create_rgbd_image_from_color_and_depth”中,输入参数是“color”和“depth”。你能解释一下如何加载图像吗?您是否为此目的使用 OpenCV 或 PIL Image?如果你能分享整个代码,我真的很感激。
    • @Mohammad 您可以使用depth = o3d.io.read_image(filename) 从文件中加载图像。您还可以将 numpy 图像转换为 o3d,如 here 所述,但对我而言,这有时不起作用(无论出于何种原因,我不知道)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    相关资源
    最近更新 更多