浅谈智能车入门-阳光算法
使用摄像头进行寻迹,优点在于可以使前瞻更加的长,速度越快对前瞻的需求越高。当然了也可能大佬的算法写的好,不是呈现完全的正相关,可以说是大体的正相关。但是如果遇到光线分布不均匀等情况干扰了图像赛道信息的提取,可能会造成灾难性后果。
在阳光分布较差的情况下,直接使用灰度图像,会对赛道边线的提取有着一定的帮助。下面说一下关于灰度图像的赛道边线提取。其主要思路和二值化后的图像边线提取思路相似,只不过二值化图像是根据0、1两个值进行处理,而对灰度图像,每一个像素点的值为0~255。观察下图(使用的逐飞的上位机获取的图片,之后使用python稍微处理了一下)
编辑
图1 原图
编辑
图2 excel 部分数据
编辑
图3 excel 部分数据(放大)
通过图3,可以明显的看出赛道的边线出的像素数值变化。由此,我们便可以通过计算像素变化大的地方,提取赛道边界。主要程序如下:
1 |
|
center_l 为图像中间列的位置,例如图像宽160,则center_l为80;mt9v03x_image为原始图像数组。由程序可以看出,通过间隔的计算像素的差比和,判断其是否超过阈值,则可以提取出赛道边线。扫描的方式有许多种,不同的扫描方式可以带来不同的效果。我个人知道的扫描方式有,1.最简单的,便是从左向右一行一行扫描 2.从图像中间向两边扫描。3.根据赛道的连续性进行扫描,也就是通过前一个边线的位置进行一定的偏移后进行下一行扫描。4.出现严重丢线的弯道处,进行列方向的扫描。最后结果如下图,这是最简单的灰度图像边缘提取实现。
编辑
总结:有阳光干扰时,灰度图像相比黑白图像会有一定优势。但是真正的阳光算法,个人感觉还得是电磁。摄像头结合电磁也是一个不错的选择。提取完边线后,计算出实际的中线位置。然后计算期望的位置和实际位置的偏差,就可以拿去寻迹了。对于特殊元素的处理,需要观察图像的特殊差异处,结合提取的赛道信息,进行进一步处理。
以上仅供参考,有错请提出。