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 Hough变换在机器人导航中的应用_Opencv_Hough Transform - Fatal编程技术网

Opencv Hough变换在机器人导航中的应用

Opencv Hough变换在机器人导航中的应用,opencv,hough-transform,Opencv,Hough Transform,我的目标是让一个自动机器人通过摄像机在一个有围墙的迷宫中导航。摄像机固定在机器人顶部,面朝下,以便从上方查看墙壁和机器人。 根据我的经验,我采取的最直接的方法是 设置图像阈值以提取红墙 执行Canny边缘检测 使用Hough变换从边缘检测强线 如下所示,经过一些参数调整后 我想让机器人向前移动,避免“撞到”红墙。问题是,从hough变换中,每个墙边缘检测到多条线。我的一个想法是执行k-means聚类以对线进行聚类,并找到每个聚类的中心(平均值),但我不知道在迷宫导航(前方、后方、多个转弯交叉

我的目标是让一个自动机器人通过摄像机在一个有围墙的迷宫中导航。摄像机固定在机器人顶部,面朝下,以便从上方查看墙壁和机器人。

根据我的经验,我采取的最直接的方法是

  • 设置图像阈值以提取红墙
  • 执行Canny边缘检测
  • 使用Hough变换从边缘检测强线
  • 如下所示,经过一些参数调整后

    我想让机器人向前移动,避免“撞到”红墙。问题是,从hough变换中,每个墙边缘检测到多条线。我的一个想法是执行k-means聚类以对线进行聚类,并找到每个聚类的中心(平均值),但我不知道在迷宫导航(前方、后方、多个转弯交叉口等)的任何时候,墙边的数量(以及输入k-means算法的聚类数)


    如果能找到一个好方法,使机器人的位置(在每一帧图像中都是固定的)与在迷宫中导航的任何时间相比较,从而获得一致的墙壁位置,我们将不胜感激。我也愿意使用任何其他方法来解决这个问题。

    在提取houghline之前运行一个算法。

    在提取houghline之前运行一个算法。

    在我看来,显而易见的方法是,如果发现的线条在方向和位置上接近一条更强的线条,就丢弃它们,也就是说,检查行列表并丢弃任何与先前行类似的行。不需要对它们进行聚类,尤其是因为这些线都有不同的置信度,你不知道它们,只知道它们的相对顺序,如果你使用opencv-hough变换,我认为显而易见的方法是,如果发现的线在方向和位置上接近一条更强的线,就丢弃它们,也就是说,检查行列表并丢弃任何与先前行类似的行。无需对它们进行聚类,尤其是因为这些线都具有不同的置信度,并且如果使用opencv hough transform查看骨架化,您不知道它们的相对顺序,这将大大有助于限制执行hough变换所需的边。关于如何在OpenCV中实时实现这一点,您是否有任何参考资料(任何优化版本?)我在这里找到了这一点,但发现它没有像我所希望的那样针对实时进行优化。查看骨架化,这将大大有助于限制边缘需要执行hough变换。您是否有任何关于如何在OpenCV中实时实现这一点的参考资料(任何优化版本?)我在这里找到了这一点,但发现它没有像我希望的那样针对实时进行优化。