Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 在二维图像中寻找路径障碍物_Opencv_Robotics_Image Recognition - Fatal编程技术网

Opencv 在二维图像中寻找路径障碍物

Opencv 在二维图像中寻找路径障碍物,opencv,robotics,image-recognition,Opencv,Robotics,Image Recognition,您建议采用什么方法在2D图像中查找障碍物 以下是我到目前为止提出的一些要点: 我怀疑我能否使用基于“障碍物数据库”搜索的对象识别,因为我不知道障碍物看起来是什么样子。 如果路径与对象本身没有太大差异,我假设颜色识别可能会有问题 可能,再添加一个摄像头并计算3D图像(就像Kinect一样)会起作用,但这不会像我要求的那样平滑 说明问题;机器人可以骑在人行道的左侧或右侧。在下图中,左侧是正确的选择: 如果您知道路径是什么样的,这在很大程度上是一个分类问题。获取一组不同距离、照明等的路径图像,并在每个

您建议采用什么方法在2D图像中查找障碍物

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

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

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

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

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

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


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

  • 微软Kinect:便宜、简单、有效。由于环境红外线,它只能在室内工作
  • 扫描激光测距仪:非常精确,易于设置,可在室外工作。也非常昂贵(约1200-10000美元,取决于最大范围和采样率)
  • 立体摄像机:不如Kinect,但它可以在室外工作。如果你买不起预先制作的立体相机(约合1800美元),你可以使用USB网络摄像头制作一个像样的定制立体相机

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

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