RealSense ROS上的点云和RGB图像对齐

3
我正在使用深度学习(Tensorflow目标检测)和Real Sense D425相机开发一个狗的检测系统。我使用Intel(R) RealSense(TM) ROS包装器从相机中获取图像,执行"roslaunch rs_rgbd.launch"命令并订阅"/camera/color/image_raw"主题以获取RGB图像。利用这个图像和目标检测库,我能够推断出在图像中狗的位置(20fps), 并得到一个框来表示它的位置 (xmin,xmax,ymin,ymax)。
我想剪辑点云信息与目标检测信息(xmin,xmax,ymin,ymax),并确定狗是否远离或靠近相机。我想使用RGB图像和点云之间的像素级对齐信息。
请问如何实现此功能?是否有相应的主题?
谢谢!

我认为仅凭xmin、xmax、ymin和ymax是无法计算距离的,因为它可能是一只非常小的狗或者一只非常大的狗,差异会很大,对吧? - Albondi
@Albondi,您没有理解这个问题。使用(xmin,xmax,ymin,ymax),我得到了RGB图像中狗所在的边界框。然后,我将希望通过点云分析这个框以确定距离。 - Aitul
1
为什么不在深度图像上使用从 RGB 得到的边界框呢? - Mohammad Ali
1
我也在寻找同样的答案,但仍未能找到。 - Schütze
1个回答

4

英特尔发布了关于同样问题的Python笔记本,链接为:https://github.com/IntelRealSense/librealsense/blob/jupyter/notebooks/distance_to_object.ipynb

他们的做法如下:

  1. 获取彩色帧和深度帧(在您的情况下是点云) enter image description here enter image description here

  2. 将深度帧与彩色帧对齐 enter image description here

  3. 使用SSD检测彩色帧中的狗

enter image description here enter image description here

  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))

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接