【问题标题】:Pointcloud and RGB Image alignment on RealSense ROSRealSense ROS 上的点云和 RGB 图像对齐
【发布时间】:2019-07-06 00:25:47
【问题描述】:

我正在开发一个使用深度学习(Tensorflow 对象检测)和 Real Sense D425 相机的狗检测系统。我正在使用 Intel(R) RealSense(TM) ROS Wrapper 来从相机中获取图像。

我正在执行“roslaunch rs_rgbd.launch”,并且我的 Python 代码订阅了“/camera/color/image_raw”主题以获取 RGB 图像。使用这个图像和对象检测库,我能够推断(20 fps)狗在图像中的位置作为框级别(xmin,xmax,ymin,ymax)

我想用对象检测信息 (xmin,xmax,ymin,ymax) 裁剪 PointCloud 信息 并确定狗是远离相机还是靠近相机。我想在 RGB 图像和点云之间逐个像素地使用对齐的信息。

我该怎么做?有什么主题吗?

提前致谢

【问题讨论】:

  • 我认为仅使用 xmin、xmax、ymin 和 ymax 是无法计算距离的,因为它可以是非常小的狗,也可以是非常大的狗,差异会很大,对吧?
  • @Albondi 你不明白这个问题,用 (xmin,xmax,ymin,ymax) 我得到了狗所在的 RGB 图像的边界框。然后我想用点云分析这个盒子以确定距离
  • 为什么不在深度图像上使用从 RGB 获得的边界框??
  • 我也是这样,还是找不到答案。

标签: tensorflow object-detection ros point-clouds realsense


【解决方案1】:

英特尔在https://github.com/IntelRealSense/librealsense/blob/jupyter/notebooks/distance_to_object.ipynb 上发布了他们关于相同问题的 Python 笔记本

他们的工作如下:

  1. 获取颜色框和深度框(在您的情况下为点云)

  2. 将深度与颜色对齐

  3. 使用ssd检测彩框内的狗

  1. 获取检测到的狗的平均深度并转换为米
depth = np.asanyarray(aligned_depth_frame.get_data())
# Crop depth data:
depth = depth[xmin_depth:xmax_depth,ymin_depth:ymax_depth].astype(float)

# Get data scale from the device and convert to meters
depth_scale = profile.get_device().first_depth_sensor().get_depth_scale()
depth = depth * depth_scale
dist,_,_,_ = cv2.mean(depth)
print("Detected a {0} {1:.3} meters away.".format(className, dist))

希望有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-20
    • 2021-01-13
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多