【问题标题】:Finding path obstacles in a 2D image在 2D 图像中查找路径障碍物
【发布时间】:2011-08-25 20:31:40
【问题描述】:

您会推荐哪种方法来查找 2D 图像中的障碍物?

以下是我到目前为止提出的一些关键点:

我怀疑我是否可以使用基于“障碍物数据库”搜索的对象识别,因为我不知道障碍物可能是什么样子。 如果路径与对象本身没有太大差异,我认为颜色识别可能会出现问题。

可能,再添加一个摄像头并计算 3D 图像(就像 Kinect 一样)会起作用,但这不会像我要求的那样流畅。

为了说明问题;机器人可以骑在人行道的左侧或右侧。在下图中,左边是正确的选择:

【问题讨论】:

  • kinnect 有一个 IR 传感器和 1 个 RGB 摄像头。既然你正在开发一个机器人,我想最好也给它配备一个传感器,不是吗?
  • @Andrey:Kinect 有一个 IR 传感器和一个 IR 纹理投影仪(它们结合起来可以计算深度信息)和一个 RGB 相机,它可以与深度信息同步,这样你就知道有多远在 Kinect 前面感应到的每个 RGB 像素是。仅添加一个 IR 传感器不足以获得类似 Kinect 的设置。
  • @Eric,感谢您的留言。我认为没有必要获得类似 Kinect 的设置,而只需检测障碍物。许多廉价而简单的机器人使用 IR 来做到这一点。我说的对吗?
  • @Andrey:是的,他们确实使用 IR 来做到这一点,尽管这是使用非常简单的 IR 护林员发送一个“ping”。这些红外测距仪通常具有相当宽的视野(并且可能不会返回吸收红外的较暗物体或材料),因此它们无法为您提供与 Kinect 相同的信息密度。就价格而言,Kinect 提供了大量的信息。对于更简单的游侠来说,一个优点是您可以轻松地将它们与 Arduino 这样的微处理器一起使用,因为它们通常具有简单的模拟或数字输出,而不是 Kinect 上的 USB 2.0。

标签: opencv robotics image-recognition


【解决方案1】:

如果您知道路径是什么样的,这主要是一个分类问题。获取一堆不同距离、光照等的路径图像,并在每张图像中手动标注地面。使用此标记数据训练分类器,将每个像素分类为“道路”或“非道路”。根据道路的纹理,这可以像分类每个像素的 RGB(或 HSV)值或使用 OpenCv 的内置直方图反投影(即cv::CalcBackProjectPatch())一样简单。

我建议从手动阈值开始,转向基于直方图的匹配,并且仅在更简单的技术失败时才使用成熟的机器学习分类器(例如朴素贝叶斯分类器或 SVM)。一旦整个图像被分类,所有被识别为“非道路”的像素都是障碍物。通过对道路而不是障碍物进行分类,我们完全避免了构建“对象数据库”。


有点超出问题的范围,最简单的解决方案是添加额外的传感器(“在问题上投入更多的硬件!”)并直接测量障碍物的 3D 位置。按优先顺序:

  1. Microsoft Kinect:便宜、简单且有效。由于环境红外光,它只能在室内工作。
  2. 扫描激光测距仪:非常准确,易于设置,可在户外工作。也非常昂贵(约 1200-10,000 美元,具体取决于最大范围和采样率)。
  3. 立体摄像头:不如 Kinect,但可以在室外使用。如果您买不起预制立体相机(约 1800 美元),您可以使用 USB 网络摄像头制作体面的定制立体相机。

请注意,通过使用自定义硬件(Stereo On-Chip、STOC),专业立体视觉相机可以非常快。基于软件的立体声在现代计算机上也相当快(10-20 Hz)。

【讨论】:

  • 谢谢。我想在这种情况下需要更多的硬件。
猜你喜欢
  • 1970-01-01
  • 2015-05-28
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 2019-07-05
  • 1970-01-01
  • 2022-01-24
相关资源
最近更新 更多