我在Raspberry Pi 3上的Python 2.7中使用OpenCV3。我的项目的目标是建立一个自动行车道偏离机器人,该机器人可以检测侧面的两条车道并不断校正自身以保留在其中。我想实现类似该项目的目标:https://www.youtube.com/watch?v=R_5XhnmDNz4

到目前为止,我已经使用两个HoughLines完成了实时视频源中的行检测部分和HoughLinesP。这是我的视频提要中的屏幕快照以及到目前为止我得到的输出:



到目前为止,我检测机器人向左还是向右的逻辑是基于HoughLines函数的(rho,theta)输出。我想要实现的是一种更强大的跟踪机器人如何偏离车道的方法。某种中心线标记,可用于检测机器人是否从中心移开。我仍然对OpenCV和python还是陌生的,而我坚持的部分是转换检测机器人车道偏离的逻辑。

我的理解是,将车道上的线平均为两条线(左右车道),然后对它们的斜率进行操作应该会得到一些结果。但是,我无法将其转换为代码。我会很感激关于检测机器人车道偏离的任何建议。谢谢!! :)

#1 楼

最好的方法之一是结合使用霍夫变换(取得的成就是不错的)和逆透视变换(如http://www.vision.caltech.edu/malaa/publications/aly08realtime.pdf)。这是因为,反向透视变换在“非常近”和“非常远”的距离处失败,因此可以补偿霍夫变换。本土化;如果两个边缘之一缺失,则表示机器人最有可能不在车道上;我们可以找出中线(经过反透视变换并通过霍夫线融合进行滤波后的两个边缘的平均值),然后使用评估函数来确定机器人与车道中心的距离。

如果交叉路口和平行车道(一个车道与另一个车道同时检测到两个车道),则该解决方案肯定会失败。在这种情况下,必须进行某种类型的映射或路径规划(与在交叉路口更改车道和错误路线有关的成本)。因此,此解决方案仅适用于本地。

为了进行更多学习,可以使用自动编码器进行转向角估计(如https://arxiv.org/pdf/1608.01230.pdf;但是,太多的模糊可能意味着简单的平均,非常精确的自动编码再现意味着过度拟合;数据集可以在这里找到https://github.com/commaai/research)。