OpenMV的红绿灯识别测距系统设计
2021-04-11华北理工大学电气工程学院张博文马德彬宋永旭戚翔琛
华北理工大学电气工程学院 张博文 马德彬 宋永旭 戚翔琛
本篇简叙了一种基于OpenMV的红绿灯智能识别测距系统,通过卡尔曼滤波去噪预处理防止镜头畸变,应用神经网络法进行图像识别,可以精确检测红绿灯数值、距离,以数字信号输出红绿灯信息,可作为硬件模块应用于各类复杂系统,为道路检测、汽车自动驾驶、智能机器人的研发提供了更多的可能性。
基于图像识别的自动驾驶技术为当今研究的热门课题,为了更大程度的解放双手,增加路况识别的准确性与实时性,保障自动驾驶的安全性与系统稳定性,本篇依据OpenMV技术、卡尔曼滤波算法、神经网络分析法,从红绿灯识别入手,研究一种搭建于stm32平台的红绿灯路况识别系统,达到路况的精准识别。
1 硬件介绍
本系统是一种搭建于stm32f403的OpenMV的嵌入式系统,单片机与OpenMV之间采用同步串行口通信,使用stm32f403的USRT1 RX,TX分别于OpenMV的TX,RX相连,进行数据交换,单片机将得到的数据进行计算分析,得到所需信号。
本系统选用OPENMV2 M4摄像头模组,该模组配备stm32f427芯片,OV7725感光元件,可以处理640×480 8-bit灰度图或者320×240 16-bit RGB 565彩色图像。选用OpenMV平台处理速度更快,精度高,数据精确,负载轻,系统稳定,可达到设计的预期效果。
2 算法介绍
本系统主要对于红绿灯位置和距离进行识别,以下简述识别算法的改进与优化,作为图像识别的基本问题,像素点急剧变化的关键事件点是识别的重要依据。本系统对于交通灯的识别主要分为形状识别和色彩识别两部分。
图1 Lab颜色库图例
2.1 预处理
2.1.1 对比色库
在颜色识别方面,我们对识别方法做了改进,相比传统的RGB颜色模型,我们采用了对比lab色库的方式,对于颜色和亮度分别储存,如图1所示,可以更好的将颜色信息反映到数据当中,增大颜色识别的准确性。Lab色彩模型比计算机显示器,甚至人类视觉系统的色域都要大。在本系统中,分别对a轴红绿分量,b轴黄蓝分量进行判断,采用基于阈值的分割识别法,识别红黄绿三种信号灯,可以改善传统RGB色库识别不准确问题。
2.1.2 二值化处理
在完成了对图片的信息色彩识别后,我们进一步的识别,将符合阈值内符合信号灯色彩的关键像素点设为1,其余设为0,这样就得到了一个双色位的识别图,如图2所示,在图中我们可以看到,红色信号灯的颜色为黑色,可以清晰看到其形状。但是由于系统噪声大等问题,图像识别的效果仍不理想。
图2 经过特殊二值化处理后的图像
2.1.3 滤波处理
接下来对图像进行滤波处理,我们将相邻10ms所拍摄的图片进行比对,通过卡尔曼滤波算法,对不同时刻的图片赋予不同权值,最后计算算数平方跟,结果不足0.375的值为0,反之为1,进而得到新的二值图像,如图3所示。但是我们发现仍然有很大问题,由于车是运动的,相邻几毫秒拍下的图片进行处理会使计算结果出现一定微小形变,则通过最近一次拍下的图片对二值图片进行校正,得到最终的识别图像,可以减少失真。
图3 经过滤波算法后的二值化图像
2.2 识别比对
对预处理后的图像进行识别对于,与图形库中的图形进行比对,经过测试,匹配度超过83.45%则匹配成功,成功后对像素点进行边缘化识别,对面积进行积分计算,可得出图形面积(单位;像素),根据像素面积的情况计算信号灯距离。由于环境中干扰严重,一些圆形车灯和道路中图案会对结果严重干扰,我们采用卷积神经网络法进行识别。
图4 识别数字实例
据我们所知,人类的视觉系统是世界上最优越的系统之一,我们可以简单的辨别出图中数字“123456”,是因为我们对这些数字的了解程度非常深,不知不觉中就完成了识别。机器学习也是如此,通过复杂的深度学习,也可以到到同样的效果。我们通过调用YOLO动态库,对系统进行训练,使系统“熟悉”这些图像,可以快速识别出所需对象。识别数字实例如图4所示。
3 结论
基于OpenMV强大的硬件支持,和lab颜色库比对、滤波算法、神经网络识别的算法保障,可以使系统识别精度准确性显著增强。图5所示为本系统实际效果图。本系统可应用于汽车自动驾驶、道路情况分析、智能机器人研发,实用性巨大。
图5 实际效果