基于Zynq雾霾天气下的实时车牌识别系统
2022-11-05王民慧
杨 杰,王民慧
(贵州大学 电气工程学院,贵阳 550025)
0 引言
雾霾天气的出现导致监控系统采集到的图像质量很差,不仅图像不清晰,而且对比度也较低,这些都将对视频中车牌的快速、准确识别造成很大影响。因此,对雾霾天气造成的低质量图像进行实时、快速的去雾尤为重要,也将为后续的车牌识别提供有益支持。
目前,去雾方法大致有3种:基于物理模型的图像复原、基于非物理模型的图像增强以及基于深度学习的去雾。其中,基于物理模型的方法主要是考虑雾的成像原理,以此建立模型,再用该模型来恢复有雾的图像。这种方法去雾效果较好,但算法的时间与空间复杂度高,不容易在硬件平台实现。基于非物理模型的方法是通过增强图像的亮度和对比度来实现的,不考虑成像原理。这类方法常用的是Retinex算法,该算法主要通过增强边缘信息和抑制噪声,处理后的图像都能得到较好的亮度和对比度效果。基于深度学习的去雾主要是其学习能力强、效果好等特点得以应用。该方法几乎都是通过GPU平台训练的,算法复杂、功耗大,不利于实时性要求高的场景应用。现在的去雾算法大多数在PC端实现,灵活性不高、计算速度也较慢等,这些都在一定程度上限制了监控系统中车牌识别的应用性能。
Zynq是全可编程的片上系统(AP SOC),将软硬件的优势结合起来,使得所设计的系统更加灵活,并且将设计成本和功耗降到最低。完全满足监控系统中对车牌识别实时性、可嵌入、小型化和低功耗等方面的性能要求。
因此,本文提出基于Zynq雾霾天气下的实时车牌识别系统,利用Zynq的ARM+FPGA独特异构方式来提高监控系统的图像去雾性能,而后进行实时的车牌识别。降低去雾算法的空间与时间复杂度,在颜色空间()对亮度用改进Retinex算法进行去雾处理,保持饱和度和色调相对不变。在车牌识别中,先将去雾后的图像进行中值滤波进一步增强图像,提取出分量进行二值化处理,然后进行图像的腐蚀运算,再进行Sobel边缘检测,最后是图像的膨胀运算。在整体系统架构研发上,PS(ARM)端主要是进行简单的运算、控制及初始化,而高斯核函数、二维及三维卷积耗时较多的运算则由PL(FPGA)端采用并行计算的方式实现,从而提高运算速度。PS与PL之间的数据交换则是由片内总线AXI4(Advanced eXtensible Interface 4)来建立连接的。
1 Retinex算法
Retinex算法将一幅图像分为入射分量和反射分量,即:
其中,(,)为接收的原始图像;(,)为图像的入射分量;(,)为图像的反射分量,也就是要增强的去雾图像;(,)为图像的像素坐标。
对式(1)进行对数运算得到去雾图像,可由式(2)表示为:
大多数情况下,传统的Retinex算法是用高斯核函数(,)对原始图像(,)进行卷积运算来逼近入射分量(,),即:
其中,“*”为卷积运算;(,)为高斯核函数;系数由归一化函数决定;为尺度参数。这样,Retinex算法为:
2 优化Retinex算法
传统的Retinex算法是针对图像的、、三个通道进行处理的,这种方式容易导致图像的颜色失真,且算法的复杂度过高,在硬件平台上实现的难度较大,对实时性也不容易满足。因此,本系统采用基于颜色空间()的Retinex算法,将有雾的车辆违章图像由格式转为格式,进而得到色调、饱和度和亮度,保持图像的和分量不变,对亮度进行局部单尺度Retinex(SSR)处理,这样既减少了算法的复杂度,也可以尽量避免传统的Retinex算法造成的图像色彩失真。算法流程如图1所示。
图1 优化Retinex算法流程图Fig.1 Flowchart of optimizing Retinex algorithm
具体步骤如下:
(1)选取合适的尺度参数和模板大小,由式(4)生成高斯函数。
(2)将有雾图像由格式转化为格式。
(3)根据优化的Retinex算法,对亮度分量进行对数运算得到亮度分量,将带入式(3)与生成的高斯函数进行卷积运算,再取对数得到亮度,将亮度和进行相加减得到去雾后的亮度分量。
(4)色调、饱和度保持不变,并将、及由格式转为格式,完成图像去雾过程。
3 车牌识别算法
中值滤波通过去除一些离散的噪点,使图像的像素更接近于实际值,在去除噪声的同时,保护图像的边缘,使图像更加清晰。算法在硬件上实现也比较简单,为了提高运行效率,采用流水线式的排序得到3×3矩阵,且通过对每一行的排序、筛选,就可筛选得到中值。
图像二值化是将图像的像素点设为最大或最小的值,从而将整个图像转换为黑白图像。在实时的图像处理中,二值化占据重要的位置,图像的特征只与0或255的像素值相关,因此处理起来更容易,数据处理量也大大减少。为了得到一个好的二值化图像,定义一个阈值,如果大于或等于阈值,则指定边界并以灰色值255表示。如果小于阈值,则在指定边界外并用灰色值0表示。选择阈值时,手动选择以提高计算速度。
腐蚀和膨胀属于形态学算法,两者相互独立、也相辅相成。前者是将边界向内收缩,消除小且无意义的点;后者是使边界向外部扩张,填补一些图像中的空洞。都是通过构造结构元素,使之扫描图像中的每一个像素点,进行“与”或者“或”操作,最终得到减小或者扩大的二值图像。
边缘是图像的基本特征,是一组在图像中灰色值急剧变化的像素。Sobel边缘检测是离散差分算子用来计算图像亮度函数的灰色近似值。
4 硬件平台实现
硬件平台是基于Zynq-7020的开发板,采用ARM+FPGA独特的架构方式完成雾霾天气下监控系统中的车辆实时车牌识别系统。在这个系统中,用Ov5640摄像头采集数据作为图像数据的输入;对数运算、颜色空间转换、加减法器、IP核初始化以及控制在PS端进行;卷积运算以及各种并行计算将在PL中进行。研究后得到的系统的总体架构框图如图2所示。
图2 总体系统架构框图Fig.2 Block diagram of overall system architecture
在PS端配置摄像头,SCCB端口通过EMIO连接至PS端,在PS端驱动摄像头;摄像头的图像采集是自定义的IP核,以及相关的图像处理算法都封装为IP核,方便后期设计时的思路能够更加清晰;将采集的图像在PS端进行颜色空间的转换,通过HP接口与AXI-Smart互连进行数据传输到PL端的图像处理模块进行图像去雾以及车牌识别;将处理后的数据通过Xilinx官方提供的Video in to AXI4-Stream IP核转换成AXI4-Stream IP格式的数据流,再通过VDMA的写通道转成AXI4 Memory Map格式,并写入DDR存储器中。DDR中的数据读取和存储是通过AXI-HP端口与AXI-Smart互连、且后续与VDMA连接,相较于其他端口可更加高效地访问DDR3。将从DDR3中读取图像数据传输给AXI4-Stream to Video Out IP核。PS端提供的系统时钟通过GP接口和AXI-Interconnect IP核相连,而后再提供给VDMA、VTC和动态时钟IP核。AXI4-Stream to Video Out IP核在VTC IP核的控制下,将AXI4-Stream格式的图像数据转化为视频图像输出数据格式RGB888,而在将要输出的数据与DVI IP核相连后,就通过HDMI接口连接到显示屏,实时显示处理结果。
5 实验结果与分析
实验中硬件平台使用的是基于Zynq-7020的正点原子开发板领航者ZYNQ,CPU内核频率为766 MHz,逻辑单元为85 k,1 GB的DDR3,用Xilinx公司提供的Vivado 2018.3进行编译下载。
5.1 实验结果
为了验证优化后的Retinex算法的性能,用Zynq-7020实现本文优化方法与在PC(Core i59300H,2.4 GHz主频,8 G内存,Matlab2014a)实现的传统Retinex算法进行性能的比较。为保证比较的有效性,取40,选择101×101的高斯模板。
用查找表(LUT)、查找表RAM(LUTRAM)、BRAM、DSP等指标来显示PL端FPGA的资源消耗。表1为FPGA的资源占用率。
表1 FPGA资源占用表Tab.1 FPGA resources occupation table
当只是人为主观地评判图像去雾效果的好坏时,往往具有差异性。因此,需要用一些客观的指标去判断处理效果的好坏,这里用峰值信噪比、信息熵、运行时间三个指标作为评判的依据。其中,峰值信噪比描述的是图像信号最大功率与影响图像信号的干扰性噪声功率的比值。信息熵是描述图像的细节内容、包含的信息量,熵值的大小反映信息量的丰富程度。
图3是图像去雾的效果对比结果,对比试验图的峰值信噪比、信息熵、运行时间三个客观依据指标见表2。
图3 去雾效果对比图Fig.3 Comparison of fog removal effects
表2 评价指标结果对比Tab.2 Comparison of evaluation indexes results
5.2 实验分析
根据表1资源消耗的结果,LUT、LUTRAM、BRAM和DSP占的资源大概都是FPGA资源的20%左右,整个系统消耗Zynq-7020资源较少,成本也较低,能够满足实际工程的需求。
从图3去雾效果对比图可以看出,PC端实现的去雾算法与Zynq上实现优化后的去雾算法都能较好地达到去雾效果。
根据表2的客观指标依据对比,在PC端实现Retinex去雾算法和在Zynq上实现优化Retinex去雾算法,两者都能使峰值信噪比达到60 dB,能够有效地减少雾霾所产生的噪声,增强图像的视觉清晰效果。相比于原始图像,处理后的照片信息熵有所提高,证明图像的细节以及丰富度有所提高。无论是在PC端、还是在Zynq上,峰值信噪比和信息熵都能得到较为接近的结果,处理水平也不相上下,但是在运行时间上,Zynq上的速度相比于PC端提高了33倍,能够达到27帧/s以上的实时处理速度。
实验结果表明,基于Zynq平台能够实现图像去雾和车牌识别,具体就是能够快速、实时和准确地去雾以及识别出车牌号。
6 结束语
本系统主要由图像采集模块、图像处理模块和显示模块等构成。该系统以Zynq-7020核心板为主控核心控制器,通过Ov5640摄像头采集图像数据,将数据传输给去雾模块进行实时去雾,然后把去雾后的图像通过车牌识别模块进行车牌识别,最后通过显示模块在显示器上实时显示。
以上设计实现了对有雾图像的实时处理且取得了较好效果,同时对车牌识别也有着较高精准度,则可让交通管理者能够快速知道车辆车牌号,进而更快探查到车主信息。并且去雾模块可以更加广泛地应用于户外监控视频系统中,为使用者带来便利。