APP下载

OpenMV的红绿灯识别测距系统设计

2021-04-11华北理工大学电气工程学院张博文马德彬宋永旭戚翔琛

电子世界 2021年6期
关键词:红绿灯图像识别卡尔曼滤波

华北理工大学电气工程学院 张博文 马德彬 宋永旭 戚翔琛

本篇简叙了一种基于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 实际效果

猜你喜欢

红绿灯图像识别卡尔曼滤波
基于Resnet-50的猫狗图像识别
高速公路图像识别技术应用探讨
图像识别在物联网上的应用
红绿灯前
图像识别在水质检测中的应用
神奇的红绿灯
会说话的红绿灯
基于递推更新卡尔曼滤波的磁偶极子目标跟踪
基于模糊卡尔曼滤波算法的动力电池SOC估计
基于扩展卡尔曼滤波的PMSM无位置传感器控制