基于摄像头传感器的智能车循迹算法设计 方案
Design of intelligent car tracking algorithm based on camera sensor
熊中华 (山东理工大学交通与车辆工程学院,山东淄博 255000)
摘 要:本方案通过DMA进行摄像头与单片机之间的信息传输,采用大津法确定二值化阀值,进行图像分割,极大提高图像处理速度。本文主要介绍了中心线拟合、最小二乘法补边界线、特征点提取、十字元素与车
库元素识别与处理等算法,使智能车更平稳快速通过多种赛道元素。
关键词:DMA;大津法;最小二乘法;特征点;十字元素;
随着汽车保有量的不断攀升,交通拥堵、交通事故不断频发,越来越多的国家投入到智能网联汽车的研发,智能网联汽车多采用传感器融合方案,视觉传感器作为其中一种重要的传感器,进行图像采集。本文采用摄像头传感器进行图像采集,进行赛道元素特征识别,辅助智能车快速通过多种赛道元素,对于提高城市交通智能化有着重要意义。
1  摄像头传感器选取与安装
1.1 摄像头传感器选取
摄像头传感器是视觉检测的核心器件,信息量丰富,相较于电磁传感器,扫描距离更远,有利于提前进行路径规划。本方案采用龙邱神眼摄像头MT9V034作为图像传感器,为灰度数字摄像头,只需3.3V供电,分辨率为120×188,具有高动态成像、超低功耗等多种优点,该摄像头采用8位并行输出,故像素点灰度值范围为0~255。
结合智能小车循迹特点,一般会将分辨率设置为80×60,即可获取赛道图像处理所需数据。高分辨率,图像会更清晰,但数据量增加,传输时间延长,影响图像处理效率,如果再打开串口使用上位机,有机发光半导体(organic electroluminescence display, OLED)屏上图像会延迟,帧率降低,也不便于调试。一般会降低分辨率提高帧率,但也会考虑算法性能,应注重单片机处理速度与图像刷新速度协调。
1.2 摄像头传感器安装
智能小车采用后轮驱动,为避免车模抖动,应让质心靠后,提高小车抓地力,同时还要保证摄像头尽量靠前,采取到更多有效数据,故将摄像头放在车模中部,关于车轴对称。为减轻整车重量,选用空心碳素纤维管作为固定件,并用哥俩好胶水固定摄像头角度,方便调试。
将摄像头正装,OLED屏幕上图像显示顺序,从上到下依次为0~59行,从左到右依次为0~79列,一般小车前进时,近处图像位于最大行处,远处图像位于0行处。
2  图像传输
本方案采用DMA(直接存储器访问,Direct Memory Access)进行数据传输,DMA可以进行高速数据传输,通过DMA控制器,可以将摄像头等外设单元采集的数据直接传输到我们的内存中,只有数据传输开始、结束时才会与CPU(中央处理器)交流,传输过程中,CPU 可以专心进行图像处理;普通数据传输方式,每一个
数据传输都需要依赖CPU进行,极大占用CPU资源。DMA传输,极大提高了单片机处理效率,故我们采用DMA进行数据传输。
FRM为场中断,每当FRM管脚连接的IO口检测到一个沿变化,摄像头和单片机之间开始传输一副图像数据;LINE为行中断,每当LINE管脚连接的IO口检测到一个沿变化,摄像头和单片机之间开始传输一行数据;PIX为像素时钟,每当PIX管脚连接的IO口检测到一个沿变化,摄像头和单片机之间开始传输一个数据。需要采集一副图像时,会先读取到一个场信号,连续两个场信号之间为一副完整图像,当读取到一个场信号后,会连续读取到120个行信号,每两个行信号间,会连续读取到188个点信号。获得一个场中断后,开始将图像的每一行数据存入数组,并开始进行行累加计数,当计数达到120行后,会获得下一个场中断,一副图像采集完毕,及时将行累加计数器清0,并置场结束标志位,开始进行数据处理。
3  图像预处理
因选用的摄像头传感器为灰度传感器,无需额外进行图像灰度化,本方案主要采用阀值分割法进行图像分割。阀值的确定是阀值分割法的核心,常见的阀值分为:静态阀值和动态阀值[2],静态阀值容易受到环境光线影响,对不同环境的赛道适应力较差;动态阀值抗干扰性强,对光照变化不敏感。为更好地适应不同赛道环境变化,本方案采用大津法确定动态阀值。大津法(OTSU),利用统计学方法,让计算机在每一张图片上都自适应的根据图片整体亮度确定阈值,单片机在不同环境下都能自适应到不同的分割阈值,每一张图片的阈值都不一样,受图像亮度和对比度的影响小,但对噪声非常敏感。一般采集的灰度直方图会存在两个峰值,两峰之间存在一个谷底,而大津法的阈值即为峰谷对应的灰度值。3.1 大津法算法原理
假设灰度直方图中某一灰度值i恰为峰谷,以此为阀值Threshold进行图像分割,将一幅图像中所有像素分成前景和背景两部分,前景即为白,背景即为黑,验证类间方差是否最大。为优化算法性能,对传统类间
方差计算式作出变式,得到公式1,通过下式计算类间方差值:
σ2 = P
P
1
(E
-E
1
)2(1)
式中:P
为所有黑像素占所有像素中的比例,P
1为所有白像素占所有像素中的比例,E
为所有黑像
素的平均灰度,E
1
为所有白像素的平均灰度,σ2为方差值。
在所有灰度值中使类间方差值最大的灰度值即为二值化分割阀值Threshold。
3.2 大津法算法逻辑与优化
3.2.1 算法逻辑
循环0~255个灰度值,记录每一个灰度值对应的类间方差值,将其与已知的最大类间方差值比较,记录两者间最大值,并进行循环计数,当循环计数值达256次,即可确定此时最大类间方差值对应的灰度值为二值化阀值Threshold。
3.2.2 算法优化
如果是固定赛道,可以多次试运行大津法算法,记录对应多种赛道元素的二值化阀值,可以得到一个灰度值范围,比如70~140,缩小灰度值遍历范围,提高算法效率。赛道上光线一般比较均匀,当一幅图像中包含噪声和非均匀光照时,可能会造成大津法阀值不准确,而赛道图像中部分元素灰度差别大,特别是可能会遇到上帝之光的干扰,使部分赛道光照与正常赛道光照差异较大,可以采集赛道时,隔行隔列采集,以此形成的灰度直方图,可以有效减少噪声和非均匀光照;面对上帝之光,也可以尝试部分区域求大津的方法,只对赛道前半部分用大津法求二值化阀值,对图像后半部分舍弃,因为小车往往需要近处图像进行数据处理,及时进行赛道循迹,舍弃远处图像数据,可以使图像二值化数值更接近于赛道
近处值,效果更好。也可将赛道划分为远近两个区域,对其分别大津法求阈值,并分别加权求出更理想的二值化阈值。
一般情况下,赛道光照强,二值化动态阈值会更大,对于光斑等干扰,不易到合适阈值,可以安装滤光片
等光学元器件改善。
3.3 二值化
遍历赛道所有像素点灰度值,如果某一像素点灰度值大于二值化阈值,则置为白点1,如果灰度值小于二值化阈值,则置为黑点0;
4  图像处理
4.1 中线拟合与偏差
因为摄像头采集到的近处图像实际中线[4]与赛道理想中线接近,远处图像可能两者差别比较大,所以我们一般选择从近处到远处开始扫线。从底部第59行的理想中线位置第40列开始向左向右两方向分别扫线,到黑白跳变点,记录左右边界点位置;
以向左扫线为例,当向左扫线到一点H 的值同其左边一点J 的值差值为1时,再以H 点向左间隔3个点到点K ,计算点K 同其左边一点L 的差值为0时,继续以K 点向左间隔3个点到点M ,计算点M 同其左边一点N 的差值为0时,即可判断到第59行左边界点,将其计入一个大小为60的左线数组,这种方法有效避免了噪声、光斑对边界点提取的影响。同理获得第59行右边界坐标,左边界坐标与右边界坐标求和后除以2,即为当前赛道第59行实际中点坐标,并将其存入中线数组。
向左扫线左边界原理如图1
所示。
图1 左边界原理图
继续以第59行实际中点坐标为起始点开始进行第58行左右扫线,因为部分赛道如果选取理想中点第40列作为下一行左右扫线起始点,可能理想中线正好位于黑区域,左右两边扫线遇到的都是黑点,黑白跳变点位置同扫线起始点间隔较远,连贯性不好,极大地浪费CPU 性能,不利于小车快速巡线。同理进行For 循环向
上迭代求中线,直到扫线完60行,将各行中点连接,即为实际中线。
用右边界数组减左边界数组,可以得到赛道宽度。从起始点第59行第40列的像素开始,向上扫线,到白黑跳变点,用图像总行数减去白黑跳变点的值即为赛道长度;在某些特定元素判断中,可以使用赛道宽度、赛道长度作为辅助判断,识别特定元素。
选取一个控制行,控制行与实际中线、理想中线交点分别为O 、P ,计算两点差值作为偏差,乘以比例项系数Kp ,作为PWM 一部分用于小车转向控制。也可以计算多行偏差,对远处偏差赋予低权重,近处偏差赋予高权重,进行累加作为最终偏差,为进一步提高车速,可以针对不同赛道元素,对多行不同区域分别赋予不同的权重。控制行的选取需要综合考虑车速、摄像头前瞻位置等,一般车速越快,控制行数值选取越小。
4.2 丢线处理
对于部分特殊赛道或者当小车偏离赛道理想中线时,可能无法到边界线。当出现单边丢线时,根据不同赛道元素,有多种处理方法,以左边丢线为例,可以将图像左边框线规定为黑点0,当算法向左扫线检测到只有第0列有黑点0的时候,即判定该点为左边界点;也可以选择到某一特殊点,比如拐点,利用拐点和其他已知点进行补线,一般采用最小二乘法[5]补线处理赛道元素。可以到左边界丢线前的5个左边界点,利用公式2和公式3计算出拟合直线的K 和B ,将丢线后的行数依次作为纵坐标带入公式4计算出横坐标,补齐左边界。
K n x y x y n x x =∑−∑∑∑−∑()/[()]i i i i i i 22(2)B y K x =−(3)Y KX B
=+(4)
式中:n 指的是选取左边界丢线前的边界点数目,x i 指的是丢线前边界点横坐标,y i 指的是丢线前边界点纵坐标,K 指的是拟合直线的斜率,B 指的是拟合直线的截距,y 指的是n 个边界点纵坐标平均值,x 指的是n 个边界点横坐标平均值。
当出现双边丢线时,一般是处于特殊元素十字路口
处,可以选择存储历史数组的方法,用之前的实际中线
数据过特殊元素。也可以选择通过左右拐点等同时补线,通过两边界丢线处附件已知的5个边界点分别
拟合出两条直线,补全左右边界。为降低算法复杂度,也可以直接使用丢线前几行的赛道进行直接补线,因车速、电池电量等情况,可能会不稳定。
4.3 特征点
图2 特征点标注图
图2中:A 点为左下拐点、B 点为右下拐点、C 点为左上拐点、D 点为右上拐点、E 点为起始行左边界、F 点为起始行右边界。
正常直道的边界线斜率为定值,当存在拐点时,如图2标注所示,边界线斜率会在拐点前后发生突变,A 为左下拐点,在A 点下方的左边界线为固定斜率的右倾直线,当从下往上扫线边界求中线时,突然发现A 点上方的左边界斜率急剧变缓,自A 点开始向左接近水平生长;
B 为右下拐点,在B 点下方的右边界线为固定斜率的左倾直线,当从下往上扫线边界求中线时,突然发现B 点上方的右边界斜率急剧变缓,自B 点开始向右接近水平生长;
同理可知,C 为左上拐点,在C 点下方的左边界线自右向左接近水平生长,斜率较小,在C 点上方的左边界斜率急剧变大;D 为右上拐点,在D 点下方的右边界线自右向左接近水平生长,斜率较小,在D 点上方的右边界线斜率急剧变大。
以左下拐点A 为例,假设选取边界点R ,R 点纵坐标行数为i ,判断其是否为左下拐点,扫线边界时,比较R 点附近连续几行左边界点对应的横坐标,即其对应的列数,分组两两计算连续左边界点横坐标差值,发现第i 行与第i -1行对应的横坐标差值为正数T 0,
第i +1行与第i 行对应的横坐标差值绝对值为T 1,并且T 0-T 1差值大于某一阈值,连续多组左边界点都符合上述条件,并且R 点上方出现较多空白行,即判定为左下拐点A ,单独用变量记录左下拐点A 值,用于后续补线。
4.4 十字路口处理4.4.1 正入十字路口
当左右扫线到左下拐点A 、右下拐点B ,且从左下拐点向上隔行扫描2行,发现下拐点上方白点数目大于某一设定值时,即可判定正入十字。
十字路口下拐点上方有多行空白行,发生丢边现象,需要特征点,使用最小二乘法构造边界线。左右巡线到左下拐点A 、右下拐点B 、左上拐点C 、右上拐点D ,利用斜截式分别构造线段
汽车的传感器AC 、BD ,补出拐点空白行的
左右边界线,再利用左右边界线求和除以2作为实际中线。正入十字元素补线图如图3所示。
图3 正入十字元素补线图
进入圆环后,可以正常扫线到左右边界,出环后,用相同方法补线出十字路口。
4.4.2 斜入十字路口
以左斜进入十字路口为例,当左右扫线到左下拐点A 、右上拐点D ,判定为斜入十字。
十字路口下拐点上方有多行空白行,发生丢边现象,需要特征点,使用最小二乘法构造边界线。左右扫线到左下拐点A 、左上拐点C 、右上拐点D ,利用斜截式构造线段AC ,作为左下拐点上方空白行
的左边界;取右上拐点D 点后方5个边界点,利用最小二乘法反向补线,从第59行作为纵坐标代入最小二乘法拟合右边界线,循环到y 取值为D 点纵坐标,补出丢失的右上拐点下方的右边界,再利用左右边界线求和除以2作为实际中线,斜入十字元素补线图如4所示。
图4 斜入十字元素补线图
4.5 车库元素处理
以右入车库为例,车库有比较明显的特点:左边界为直线,右边界丢线,可以到右下拐点B ,空白行上方存在斑马线。
先到右下拐点B ,右下拐点B 上方存在空白行,继续向上扫线,从右向左扫线,到白黑跳变点,跳变点计数,继续扫线,发现黑白跳变点,计算两者差值,发现在某一范围,对从右向左循线沿途中遇到的所有跳变点计数,发现大于某一阈值,同时满足上述条件,即判定为车库元素。
到右下拐点B 后,B 点横坐标减去赛道宽度,即确定到Z 点坐标,因斑马线总宽度小于赛道宽度,所以可以到右上拐点D 点,用最小二乘法构造线段ZD ,通过线段ZD 加上最近处赛道一半构造出实际中心线,小车沿实际中心线顺利入库。车库元素补线图如5
所示。
图5 车库元素补线图
5  结语
本方案主要通过DMA 传输数据、大津法分割图像,提高单片机处理性能;寻赛道元素特征点,拟合赛道中线,并对特殊元素进行识别与处理,使智能车更平稳快速通过多种赛道元素,达到了设计要求。
参考文献:
[1] 符晓明.基于ADSP-BF60x网络通信的DMA配置模式及中断
方法实现[J].中国计量,2018(03):109-110+112.
[2] 巴德凯.自适应图像分割及并行挖掘方法的研究与实现[D].北京:北方工业大学,2016.
[3] 孙少林,马志强,汤伟.灰度图像二值化算法研究[J].价值工程,2010,29(05):142-143.
[4] 蔡栩嘉,刘海刚,陈冠成,李勇祥,庄越.摄像头智能小车设计与控制算法研究[J].工业控制计算机,2018,31(12):98-101.
[5] 徐翔,王琪,高进可,秦海亭,张钰洁.智能车车道识别与图像处理[J].自动化技术与应用,2020,39(07):91-95.
(上接第16页)
就如同美国大文豪梭罗 (即《瓦尔登湖》一书作者)
所说的:如果你已经建好了空中楼阁,那么也无需毁弃它们,它们本来就应该在那里。
9  擅用人机协同,提升人们创新力
AI 技术专家李开复先生曾说:人类只剩下两件事情可以做——爱心和创新。AI 的“快学快思”能力,已经技压了人类的“慢学快思”了。例如,在2016年的阿法狗(AlphaGo )。不需要十年寒窗,而只需要三个月,就能把所有人类的棋谱都学完了,具备了优越的围棋专家直觉。于是,人们就可以擅用AI 的“快学快思”来赋能人类,激发人类的创新力(图6)。
综上所述,专家直觉大多源自于经验,大跨度的联
图6
想和探索却需要超越经验,又需要经验来协助去芜存菁。所以,慢想(探索)与快思(直觉)的平衡,最能激发源源不绝的创新力。专业知识和经验需要长时间的学习和积累,才能淬炼出直觉和洞察力,并力求两者平衡,以便做出更慎密的创意发想。