焦健雄,赵贺,罗应龙,尹鹏程,刘紫燕
(贵州大学 大数据与信息工程学院,贵州 贵阳 550025)
摘要:针对目前由于各种人为因素造成的交通事故频发的问题,提出一种基于FPGA的智能小车的设计方案。在该方案中设计了颜色处理模块、图像压缩模块、SOPC模块等。通过该平台,可以实现红绿灯识别,并在SoPC中嵌入代码实现中心定位,控制小车在道路的正确轨迹行驶,从而实现自动驾驶。
关键词:智能小车;FPGA;颜色处理;图像压缩
0引言
汽车保有量的增加给人们出行带来了极大的便利,但同时也带来了很多交通安全的隐患,如何减少交通安全事故的发生成为了一个亟需解决的问题。自动驾驶控制系统的出现提供了一个全新的思路,其主要依靠车内计算机系统为主的智能驾驶仪来实现自动驾驶,并根据视觉感知获得车辆周围环境信息以此控制车辆行驶。例如谷歌研发的无人驾驶系统就是一种自动驾驶控制系统。
目前智能小车大部分使用ARM或DSP平台,对图像的处理速度慢,影响图像识别和处理的速度。本文设计了基于FPGA的智能小车,利用机器视觉感知技术,提高了图像识别的实时性,从而增强了车辆的安全系数,对交通安全产生了深远的影响,也对人民群众的生命财产安全有重大意义。
1智能小车系统整体设计
整个智能小车系统由摄像头、FPGA、存储器、视频显示、直流电机及驱动器模块组成 [1],系统的设计框图如图1所示。
其中,FPGA硬件设计是整个系统的关键,本设计采用 Altera的Cyclone IV芯片,主要实现摄像头图像的实时采集、处理、红绿灯的判断、图像压缩和中心定位,以及直流电机PWM生成;摄像头用于采集小车前方道路和红绿灯信息;直流电机及驱动模块负责小车的转向;视频显示模块实时显示处理后的视频信息;存储器模块使用SDRAM存储FPGA需要存储的信息[4]。
智能小车工作流程如下:首先,FPGA配置OV7725摄像头参数使摄像头输出图像数据为YUV格式并采集摄像头数据。采集的图像数据通过FPGA处理后存储到外部存储器并将其通过VGA显示。FPGA硬件设计主要包含颜色处理模块、图像压缩模块及SoPC模块,通过分析数据生成合适的PWM使智能小车正确行驶。
2系统硬件平台设计
系统硬件平台设计主要包括颜色处理模块、图像压缩模块以及SoPC模块。
2.1颜色处理模块
本文设计了颜色识别模块来完成红绿灯的识别。由于FPGA将CMOS传感器配置为输出YUV格式的图像,若要进行颜色识别,首先需要将YUV格式的图像转换为RGB格式的图像[56,9,11],然后通过比较每个像素RGB分量完成红绿灯识别,颜色处理模块结构框图如图2所示。
图2颜色处理模块结构框图YUV格式图像转换为RGB格式后对整张图像每个像素点的颜色进行分析,并计算每个像素点RGB分量的差值是否满足给定的阈值,判断该像素点的颜色。一帧图像结束后根据识别到相应颜色的数量判断是否遇到交通灯以及交通灯的颜色。颜色处理模块中核心代码如下:
if(R>B&&R>G((R-B+R-G)>th_r
1'b1:1'b0):1'b0)//R G B分别表示三色分量都是8 bit数值,计算差值并计数
begin
cnt_red<=cnt_red+1'b1;
图6SoPC模块处理流程图end
颜色处理模块的RTL图如图3所示。
2.2图像压缩模块
图像压缩模块包括图像预处理模块及图像分辨率压缩模块。
图像预处理模块对灰度图像进行Sobel边缘提取得到二值化图像,并通过双端口SDRAM模块写入存储器。Sobel算子对图像边缘检测速度快,能够在一定程度上抑制噪声[3,8],从而很好地提取图像边缘,图4为图像预处理模块RTL图。
图像分辨率压缩降低了图像的分辨率,可以大大提高系统效率,对于简单图像分辨率的压缩不影响目标的识别。本文设计的图像分辨率压缩模块通过双端口SDRAM读取存储器中的二值化图像,将640×480像素的二值化图像分辨率压缩转换为80×60像素的二值化图像[7]。图5为图像分辨率压缩模块RTL图。
2.3SoPC模块
SoPC系统由微处理器、存储器、用户逻辑以及I/O组成的硬件系统和软件设计组成[2],本设计采用在FPGA中嵌入Nios II处理器的方法来实现。在FPGA中嵌入Nios II处理器实现的SoPC系统容易开发,周期短,性能高。
智能小车的SoPC模块通过读取图像压缩模块处理后的图像数据,以及颜色处理模块得到的红绿灯信息,完成装置的中心定位并控制直流电机在轨迹上正确行驶。图6为SoPC模块处理流程图。
本设计中SoPC系统的构建过程如下[1,10]:首先使用锁相环设置SoPC时钟为100 MHz,根据内部资源使用情况和系统要求选择添加合适的Nios II CPU,添加PIO用作图像数据和红绿灯数据的接收以及输出合适的占空比控制直流电机,添加UART用于SoPC与上位机通信,添加存储器以供存储数据和指令,设置中断优先级和外设基地址,最后生成软核。
3系统平台验证
图7系统FPGA硬件资源使用情况本设计使用Altera公司Cyclone IV FPGA芯片,其内部有1.5 W les、4个PLL核、166个IO口、50 W bit的内存等充足资源,连接SDRAM存储器和EPCS存储器扩展内存,足以实现FPGA内部各个模块的功能。图7为该系统FPGA硬件资源使用情况。
3.1颜色处理模块测试
本模块测试是将所采集的图片中要识别的颜色转变为黑色并显示,测试结果如图8所示。
图8(a)中原图的红色像素在图8(b)测试结果图中绝大部分被显示为黑色,其他点则是与原图相同显示,说明算法对颜色的识别有效,能很好地识别交通灯。
3.2图像压缩模块测试
图9为图像压缩模块测试图,是使用VGA显示边缘提取后的图像,并用PC显示分辨率压缩后图像。
如图9所示,边缘提取图将绝大部分原图中的边缘信息保留了下来,说明控制系统中使用的Sobel算子获得很好的效果。CMOS摄像头采集图像分辨率为640×480像素,经过图像的压缩之后,图像的分辨率变为80×60像素,对原图进行了很大程度的压缩,对比压缩前后,边缘提取图的轮廓在压缩图中能很好地反映出来,说明图像分辨率压缩的实现效果很好。
3.3SoPC模块测试
图10为SoPC模块的中心定位模块测试图,对图像压缩模块输出的图像进行处理,将道路部分图像置1,其他部分置0,计算道路中心并在相应坐标置0,通过PC显示。图10中心定位测试图
如图10所示,中心定位模块通过分析图像压缩模块输出的图像,高效地分析出道路信息并滤除不必要的信息,根据道路边缘坐标定位中心轨迹,从图中可以明显看出中心定位模块实现效果很好。
3.4整车测试
整车测试图如图11所示,本设计搭建的小车沿着中心定位模块规划的轨迹正确行驶。测试结果表明,小车在直道上稳定行驶,在弯道和直角弯能平滑拐弯,说明SoPC中的中心定位模块和电机控制算法调试效果很好。
4结论
随着对视频处理速度要求的不断提高,采用ARM、DSP平台实现的实时视频处理系统很难满足对视频处理的实时性和稳定性的要求。本文基于FPGA平台设计了一种智能小车,利用摄像头完成实时道路信息采集,处理实现红绿灯识别、道路中心定位及按轨迹正确行驶,经过多次测试,该智能小车稳定性和实时性很高,是一种实用、安全的自动驾驶解决方案。
参考文献
[1] 刘紫燕,冯亮,祁佳. 一种基于FPGA的实时视频跟踪系统硬件平台设计[J].传感器与微系统,2014,33(7):98102.
[2] 吴华中. 基于FPGA的视频监控系统设计[D].太原:中北大学,2014.
[3] 祁佳,刘紫燕. 实时图像双边缘检测算法及FPGA实现[J].电视技术,2014,38(3):6465,85.
[4] 冯亮,刘紫燕,祁佳. 基于FPGA的视频跟踪系统目标检测方法研究[J].微型机与应用,2014,33(12):3436,39.
[5] 张浩然. 基于FPGA的视频采集及图像处理算法实现[D].昆明:云南大学,2015.
[6] 明章辉. 基于FPGA的CameraLink视频信号处理技术的研究[D].南京:南京理工大学,2014.
[7] 钱军琪. 基于DSP和FPGA的视频压缩系统的设计[D].西安:西安电子科技大学,2014.
[8] 黄彪. 基于FPGA的高清视频信号实时处理系统的研究[D].北京:中国科学院研究生院,2013.
[9] 徐建松, 俞拙非, 侯凯, 等. 一种基于FPGA的阀基电子设备的研制[J].电子技术应用,2015,41(10):2729,33.
[10] HSU Y P, MIAO H C, TSAI C C. FPGA implementation of a realtime image tracking system[C].SCIE Annual Conference 2010, 2010:28782884.
[11] YU J, TAN J, WANG Y. Ultrasound speckle reduction by a SUSANcontrolled anisotropic diffusion method [J]. Pattern Recognition, 2010, 43(9):30833092.