Python 从深度图像生成点云

Python 从深度图像生成点云,python,image,point-clouds,depth,projection-matrix,Python,Image,Point Clouds,Depth,Projection Matrix,我正在尝试将深度图像(RGBD)转换为3d点云。我当前使用的解决方案取自以下位置: cx=图像中心高度 cy=图像中心宽度 fx和fy=250,通过迭代几个选项进行选择 深度测量是通过针孔相机进行的,点云从中心向外投影(下面的示例图像)。有人能帮我理解为什么以及如何解决这个问题吗 您可以使用open3d软件包轻松解决此问题。使用sudopip安装-U open3d-python(不仅仅是open3d——这是另一个软件包)安装它 一旦安装: from open3d import * rgb

我正在尝试将深度图像(RGBD)转换为3d点云。我当前使用的解决方案取自以下位置:

  • cx
    =图像中心高度
  • cy
    =图像中心宽度
  • fx
    fy
    =
    250
    ,通过迭代几个选项进行选择
深度测量是通过针孔相机进行的,点云从中心向外投影(下面的示例图像)。有人能帮我理解为什么以及如何解决这个问题吗


您可以使用
open3d
软件包轻松解决此问题。使用
sudopip安装-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
附带的示例以了解更多信息


如果您有自己的内置摄像头,您可以用这些摄像头替换
针孔摄像头\u内置摄像头
,但在试运行中,针孔摄像头或多或少都可以正常工作。

谢谢您的建议@Lenik。这个结果给了我一个切片点云(),你知道为什么吗?@LloydRayner如果你觉得我的答案有用,你可以投票和/或接受它,为什么你的点云看起来“切片”——我不知道,这不太可能是
open3d
包的问题——我经常使用它。也许看一下深度数据可能会有所帮助,特别是像绘制点的数量与距离的关系——它可能会显示一些“缺失”的深度区域或其他不规则情况。我有一个关于如何加载图像和深度数据的问题。在函数“从颜色和深度创建图像”中,输入参数为“颜色”和“深度”。你能解释一下如何加载图像吗?您是否使用OpenCV或PIL图像来实现此目的?如果您能分享全部代码,我将不胜感激。@Mohammad您可以使用
depth=o3d.io.read\u image(filename)
从文件中加载图像。你也可以像前面提到的那样将numpy图像转换成o3d,但对我来说,这有时不起作用(不管出于什么原因,我不知道)。