APP下载

基于FPGA 车牌图像识别的设计与实现

2023-10-24胡艳茹

物联网技术 2023年10期
关键词:车牌投影灰度

胡艳茹

(宁夏师范学院 物理与电子信息工程学院,宁夏 固原 756000)

0 引 言

车牌检测技术是智慧交通管理系统的重要组成部分,是计算机视觉处理技术、图像增强算法技术以及数字通信技术的融合,它能够在停车场、高速公路、智能制造方面产生重要影响,是针对车辆实时检测的基础。本文主要介绍车牌图像获取、车牌图像定位的检测技术。目前车牌的检测技术还存在受复杂天气、光照度、车牌磨损、车牌倾斜等因素影响的问题,但总体仍朝着系统化、简单化的方向发展[1]。

现场可编程门阵列(Field Programmable Gate Array,FPGA)是随着定制式数字逻辑电路而出现的集成化可编程开发平台,它能够解决数字电路的功能简单化问题,又能够克服原有的数字逻辑门数量少、体积大、成本低等缺点。作为搭载算法的硬件实现平台,FPGA 的并行处理能力突出,有着流水线般的处理过程,具有体积小、成本低、速度快等明显优势[2]。

因此,本文设计一种基于FPGA 的智能车牌检测系统,该系统采用边缘检测、倾斜矫正、腐蚀膨胀等算法技术,通过FPGA 集成化开发环境平台进行硬件实现。相比于单片机技术、MATLAB 技术等,该系统能够显著提高并行处理效率和检测速度,在复杂的环境中快速实现车牌的图像采集以及定位。

1 车牌检测基本理论

1.1 图像格式转换

OV5640 摄像头拍摄到的车牌图像为RGB(红、绿、蓝)彩色图像格式,该格式占用存储空间较大,进行图像处理时比较耗时。此外,实际传输的信号为YCbCr(亮度、色度)格式,图像信息显示时还需要转化为RGB 三原色格式。因此,需要对车牌图像信息作进一步处理[3]。

RGB 转化为YCbCr 的公式如下:

由于FPGA 直接进行浮点数计算比较麻烦。因此,要先做整数化处理,公式如下:

1.2 图像灰度化

为了提高车牌图像检测定位的效率,需要将RGB(红、绿、蓝)模式的车牌图像进行灰度化处理。因此,可以将RGB(红、绿、蓝)设为同一格式,采集到的图像信息就只有一种格式,不含有其他的颜色格式,就可以转化为灰度化的单色车牌图像。图像的灰度化过程是图像信息的最优化处理过程,这样的处理方式简单容易,此外,还能够提高定位检测的准确度。灰度值可以用数字表示,其大小代表着灰色图像的深浅程度[4]。

本设计进行图像处理时,采用的是求平均值方式,按照一定的权数将R、G、B的值加权,然后求平均值的大小。

式中:r、g、b表示R、G、B的权值大小。由于对颜色的敏感程度不同,因此配置r>g>b效果更好。

1.3 图像增强

图像增强是为了凸显所需图像的边缘特征而进行的图像处理方式,能够去除图像中的某些杂点部位,使后续边缘检测更加明显[5]。中值滤波能够去除各种小噪声,得到一个噪点较小的车牌图像,而且程序算法在硬件上实现简单,适用于本设计。因此,本设计采用的图像增强方法为中值滤波。中值滤波是利用图像信息数据的缓存,用一个3×3 的窗口数据信息进行扫描,比较窗口内的数据灰度值大小,选取中间的那个灰度值作为该3×3 数据中心像素的灰度值。

1.4 图像边缘检测

1.4.1 基于灰度特征的边缘检测

车牌的定位检测就是在获取的整个图像中,检测出车牌的位置区域。由于获取的图像中包含了许多干扰识别的因素,因此本设计对检测图像进行灰度化处理后,车牌相比于图像中其他干扰因素容易被识别,车牌位置区域则能够得到准确定位。

灰度化处理后的图像类似于黑白照片的图像,是摄像头采集的彩色图像去除各种色彩信息后,留下的单一色彩图像。而采用灰度图像定位检测的方式只用到了灰度图像。因此,将图像色彩设为单一色彩可以降低硬件平台的处理信息量,提高硬件处理速率[6]。

此外,环境因素、光照条件等也会影响车牌检测的效率,利用基于灰度特征的图像检测方式能够很好地克服这些因素。由于获取的图像中两种不同区域的交界处灰度值有明显的变化趋势,因此利用该变化趋势以及边缘检测算法能够找到这些边缘信息,从而找到车牌位置区域。

1.4.2 Sobel 算子边缘检测

常用的边缘检测算子方式包括Roberts 检测方式、Sobel检测方式、Prewitt 检测方式等。本设计是基于微分算子Sobel 对车牌图像进行处理,与其他边缘检测算子检测方式对比,提取边缘轮廓信息后,车牌位置的边缘轮廓会更加清晰、明显[7]。

Sobel 边缘轮廓检测算子拥有2 组卷积因子。计算方法是利用结果与设定的对照值对比,若大于对照值,则为边缘部分;否则就不是边缘部分。

Sobel 算子水平、垂直方向上的2 组矩阵因子为:

利用矩阵因子分别与图像X像素的x、y方向做卷积,可以得到该像素x和y两个方向的梯度值。

然后对Gx与Gy分别平方求和,则该像素的梯度值为:

最后将结果与设置的对照值进行比较,如果计算的结果大于设置的比较值则为边界,否则不是。由此,就可判断像素点是不是该车牌图像的边界区域部分。

1.5 腐蚀膨胀

1.5.1 腐蚀原理

采用腐蚀算法对车牌图像进行腐蚀操作,腐蚀是基本的数学形态学处理方式。经过Sobel 算子检测后,首先要去除车牌图像中的噪声点。利用矩阵中像素点的值进行“与”运算,之后车牌区域形成一个连通的区域。这一步可以去除一些噪声点,图像中就只剩下车牌和一些细小的噪声点。腐蚀的结果使得车牌原来的图像缩小一圈[8]。

1.5.2 膨胀原理

膨胀是基本的数学形态学处理方式,其原理是用结构化的元素模板去处理图像中的每一个像素点,如果结构化元素模板覆盖的车牌图像区域的像素点为黑色,结构化模板覆盖的对应区域也为黑色,则该像素点就为标记为黑色,否则为白色。膨胀结果使车牌边界区域会更加明显[9]。

1.6 投影定位

投影定位就是对车牌的位置区域向水平方向和垂直方向进行投影,确定车辆牌照的位置。向x方向和y方向投影后会形成阴影上、下和左、右的区域。投影定位模块可设为空闲状态、清零状态、投影状态,向x、y方向进行投影,则投影处于空闲状态。对投影状态的车牌区域位置的寄存器设置合适的参照值,当投影到车牌位置的像素点时,则认为是该车牌位置区域的边界,然后继续寻找下一个位置点。按照上述方法一直投影,直至x、y方向上的整个车牌位置区域全部被扫描[10]。

2 车牌检测系统设计

2.1 系统的总体方案设计

车牌检测系统可分为车牌图像信息的采集、车牌图像信息的处理以及车牌图像信息定位显示。FPGA 作为整个车牌定位检测系统的核心,有着较高的图像信息处理速率。图1为基于FPGA 的车牌检测系统的总体结构图。

图1 车牌系统的总体框图

首先OV5640 摄像头采集车牌图像,在FPGA 芯片中完成对OV5640 摄像头的配置,图像数据信息进入FPGA 芯片后,经过视频图像解码模块将车牌图像数据转化为数字信号YUV,SDRAM 控制模块驱动SDRAM 以乒乓式操作缓存车牌图像数据。然后进行中值滤波处理,去除各种孤立的小噪声点,使图像边缘轮廓更加清晰,达到图像增强的效果。接着利用车牌灰度化后的特征区别于图像中其他部分的特点,准确快速定位出图像中车牌的位置。之后进行腐蚀操作,去除车牌区域的噪声干扰点;进行膨胀操作,使车牌位置的区域更加明显。最后,对处理后的车牌图像进行投影,确定车牌的位置区域,实现相关预设功能。

2.2 灰度化模块设计

由于图像中两种不同区域的交界处,灰度值有明显的变化,利用该变化趋势可以找到这些边缘信息,从而能够快速准确地找到车牌位置区域。此外,摄像头拍摄到的车牌图像为RGB565 格式,该格式占用存储空间较大,进行图像处理时比较耗时,因此本设计采用了灰度化处理。本设计采用的灰度化方法为RGB565 转化成RGB888 图像格式,接着RGB 888 转化成YCbCr 模式,最后提取Y,完成灰度化设计。

2.3 边缘检测模块设计

本设计采用Sobel 的检测方式进行边缘检测,采用先入先出方式(FIFO)实现并行输入。首先需要利用9 个像素数据组成缓存3×3 的数据窗口,由于提取的像素数据有3 行,因此需要建立2 个FIFO 来缓存图像像素数据。这样就可以实现并行输出,最后将其提取的数据分别与x方向的横向矩阵因子以及y方向上的纵向矩阵因子做卷积运算,从而实现Sobel 边缘检测。

2.4 腐蚀模块设计

腐蚀模块的设计是利用30×60 的缓存数据进行“与”操作,如果找到“1”,则输出第一次运算的结果为“1”,否则为“0”。因为本文选择的膨胀运算模板有30 行,因而需要29 个行缓存,即29 个FIFO,FIFO1 缓存第一次REG 的结果,FIFO2 缓存第二次的输出结果,FIFO3 缓存第三次的输出数据,其他FIFO 以此类推。对FIFO1,FIFO2,…,FIFO29 的数据进行“与”运算,当结果等于1 时,则腐蚀结果为1,否则为0,则整个腐蚀过程结束。腐蚀使整个图像缩小。图2 为实现腐蚀模块流程。

图2 腐蚀模块设计流程

2.5 膨胀模块设计

膨胀模块的设计是对模板为9×19 的数据进行缓存,首先对这19 bit 数据进行“或”运算操作,寻找“1”,如果找到“1”,则输出第一个结果为“1”,否则为“0”。FIFO1 缓存第一次REG 的输出结果,如果第二次的结果为“1”,则FIFO2 缓存第二次的输出结果,其他FIFO 依此类推。将FIFO1,FIFO2,…,FIFO8 的输出数据进行“或”运算,当结果等于0 时,则膨胀结果为0,否则为1。膨胀后图像明显变大。图3 为膨胀模块设计流程。

图3 膨胀模块设计流程

2.6 投影定位模块设计

投影定位就是向x、y方向进行投影,则投影状态处于空闲,对车牌区域位置的寄存器设置合适的参照值,当投影到车牌位置的像素点时,则认为是该车牌位置区域,然后继续寻找下一个像素点,按照上述方法一直投影,直至x、y方向上显示出车牌位置区域。

3 系统的测试结果与分析

车牌定位检测系统的实现是采用软件开发平台QuartusⅡ进行综合分析,仿真验证算法程序。本文以“粤A·2123A”车牌图像为例进行分析。本设计的全部算法都是利用Verilog语言实现,将程序下载到FPGA 开发板后,进行模块测试,验证系统性能。引脚分配完成后再次进行一次全编译,下载程序进行FPGA 开发板的整体测试。FPGA 拥有多种程序输入方式,本设计采用的是直接方式,直接下载文件到FPGA的RAM(存储器)中,通过USB Blaster 程序下载电缆直接下载到FPGA 芯片。

3.1 边缘检测结果测试

相比于其他边缘检测方式,经摄像头采集到的图像经过Sobel 检测,车牌图像的边缘轮廓会更加清晰可见,实验结果如图4 所示。

图4 图像边缘检测效果图

3.2 车牌腐蚀结果测试

经过边缘检测后进行腐蚀操作。腐蚀的目的是去除车牌图像背景中的干扰点以及一些噪声点。腐蚀操作后车牌图像明显缩小一圈,图像中只剩下车牌位置和一些细小的杂点,符合预期结果。实验效果图如图5 所示。

3.3 车牌膨胀结果测试

膨胀的目的是使车牌区域更加明显。车牌区域明显,则可以观察到字符的边粘连在一起,形成连通区域。但车牌图像背景中存在杂物,对于车牌区域的确定会产生很大的影响。膨胀效果图如图6 所示。

3.4 车牌定位总体结果测试

算法程序通过仿真编译后,通过USB 串口直接下载到主控芯片中,之后进行FPGA 开发板的整体测试。为了测试本系统的可靠性,采用光照度因素模拟复杂的天气条件,随机选取了50 多张车辆图像,对车牌定位检测效果进行分析。光照度较强的情况下,定位率达到90.5%;光照度中等的情况下,定位率达到91.5%;光照度较弱的情况下,定位率达到85.0%。图7 为车牌定位的总体效果图。从图中可以看出,车牌的上下边界被准确地定位出来,由此可见在相对复杂的环境下,车牌定位效果基本上符合预想结果。

图7 车牌定位效果图

4 结 语

本文设计一种基于FPGA 的智能车牌检测系统。该系统采用灰度化、边缘检测、腐蚀、膨胀、投影定位等模块进行图像处理,采用搭载FPGA 的Verilog 语言进行整体设计。本设计的性能主要取决于车牌的边缘检测和投影的相对位置关系。未来将改进算法以提高车牌的检测速率。

猜你喜欢

车牌投影灰度
采用改进导重法的拓扑结构灰度单元过滤技术
基于灰度拉伸的图像水位识别方法研究
解变分不等式的一种二次投影算法
基于最大相关熵的簇稀疏仿射投影算法
数字图像处理技术在车牌识别系统中的应用
找投影
找投影
第一张车牌
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于MATLAB 的车牌识别系统研究