首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将RGB深度图像转换为点云?

如何将RGB深度图像转换为点云?
EN

Stack Overflow用户
提问于 2018-09-13 18:39:18
回答 1查看 3.3K关注 0票数 3

我有一个关于机器人地图的研究想法。基本上,最终目标是使用一个中等的单目相机(售价20-50美元),并创建一个3D占用率网格地图(有一个用c++编写的流行库,名为Octomap)。为了做到这一点,我建议自己采取以下步骤:

  1. 获取rgb图像(从视频),并转换为深度图像使用卷积神经网络。这部分完成了。
  2. 获取原始rgb图像并创建深度图像并转换为Point。
  3. 获取点云并将其转换为3D占用率网格地图。

因此,对于第二步,我有点困惑,无论我做的是对还是错。我使用了这段代码,它是一个开放源代码:

代码语言:javascript
复制
import argparse
import sys
import os
from PIL import Image

focalLength = 938.0
centerX = 319.5
centerY = 239.5
scalingFactor = 5000

def generate_pointcloud(rgb_file,depth_file,ply_file):

    rgb = Image.open(rgb_file)
    depth = Image.open(depth_file).convert('I')

    if rgb.size != depth.size:
        raise Exception("Color and depth image do not have the same 
resolution.")
    if rgb.mode != "RGB":
        raise Exception("Color image is not in RGB format")
    if depth.mode != "I":
        raise Exception("Depth image is not in intensity format")


    points = []    
    for v in range(rgb.size[1]):
        for u in range(rgb.size[0]):
            color = rgb.getpixel((u,v))
            Z = depth.getpixel((u,v)) / scalingFactor
            print(Z)
            if Z==0: continue
            X = (u - centerX) * Z / focalLength
            Y = (v - centerY) * Z / focalLength
            points.append("%f %f %f %d %d %d 0\n"% 

因为我认为points实际上是存储点云的列表,对吗?

所以我要问的最大问题是,使用深度学习算法创建RGB图像和深度图像,是否可以使用上面的代码将其转换为点云?

EN

回答 1

Stack Overflow用户

发布于 2021-02-05 17:19:12

如果你能妥善处理RGB和深度图像比例,你会没事的。最后一点云属性可能类似于(x,y,z,r,g,b)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52319922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档