基于FPGA的停车场车牌识别系统的设计与实现_第1页
基于FPGA的停车场车牌识别系统的设计与实现_第2页
基于FPGA的停车场车牌识别系统的设计与实现_第3页
基于FPGA的停车场车牌识别系统的设计与实现_第4页
基于FPGA的停车场车牌识别系统的设计与实现_第5页
已阅读5页,还剩38页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章引言1.1研究背景及意义社会经济飞速发展,汽车数量不断增多,停车场的管理变得很棘手,传统停车场管理大多依靠人工操作,效率低,容易出错,很难应对高峰期的车辆进出,像大型购物商场,写字楼,交通枢纽这些地方,常常出现车辆排队等候入场或者出场的情况,这既浪费车主的时间,又影响停车场的运作效率,所以,急需一种智能,自动化的停车场管理系统来处理这些问题,改善停车场的运作效率和质量。车牌识别技术是停车场管理系统的重要技术之一,有着重要的现实意义,它可以快速准确地识别出车辆的车牌信息,从而可以实现车辆的自动入场、自动出场、自动计费等功能,这样就可以大大减少人工干预,降低管理成本,同时也可以提高车辆的通行速度,缓解交通拥堵,而且车牌识别技术还可以和安防系统结合起来,实现对车辆的实时监控和异常报警,提高停车场的安全性,在一些特殊的场所,比如机场、政府机关等地方,车牌识别技术还可以用来对车辆进行准入管理,只有授权车辆才能进入,保证场所的安全。FPGA(现场可编程门阵列)是一种可编程的集成电路,它有着很强的并行处理能力以及灵活的可配置性,在车牌识别系统当中,FPGA可以同时处理许多图像处理任务,比如车牌定位,字符分割,字符识别等等,这使得整个系统的处理速度和效率得到了很大的提升,相比于传统的微处理器而言,FPGA在处理图像数据的时候并不需要经常去读取和解释指令,它可以对数据执行硬件层面的操作,所以处理速度更快,功耗也更低,而且FPGA还能按照不同的车牌识别算法来进行灵活的配置,以适应各种各样的应用场景和需求。1.2国内外研究现状1.2.1国内研究现状车牌识别属于智能交通体系的关键技术,它在交通管理,安防监控等范畴得到广泛应用,FPGA凭借并行处理,高速运算以及可重构等特点,变成达成高效率车牌识别系统的主要技术支撑,按照所给文献,本文整理出有关FPGA的车牌识别技术研究状况,成果和发展趋向。李鑫,高佳皓,李金晟先搭建起基于FPGA的车牌识别系统架构,具体阐述了从图像采集到图像预处理,再到车牌定位,字符分割以及识别整个流程,给后续研究形成基础架构,明确各个部分的功能和FPGA在其中的应用方式[SEQ[\*ARABIC1]。黄奕钧对基于FPGA的车牌识别系统进行硬件设计与软件算法的优化。通过优化系统整体性能,提高系统在实际工作中的稳定性和准确率,使得系统更加实用[SEQ[\*ARABIC1]。汤诺辉,林志坚,陈平平围绕实时车牌识别边缘系统设计和FPGA实现,将边缘计算与FPGA技术结合,提高车牌识别实时性,阐述系统架构,算法在FPGA上优化实现,满足智能交通对实时响应的高要求[SEQ[\*ARABIC1-SEQ[\*ARABIC1]。杜高明、刘曜溪、徐志强提出一种基于FPGA的高精度车牌识别系统的专利方案,对算法进行深度改进,对硬件进行优化,使车牌识别精度大幅度提高,解决了复杂环境下识别准确率低的问题,为高要求的场景提供了可靠的技术方案[SEQ[\*ARABIC1]。王慧宇,王禹衡针对停车场场景,设计基于FPGA的停车场视频采集及车牌识别系统及方法,将视频采集与车牌识别功能集成在一起,简化系统流程,提高停车场车辆管理效率,实现车辆快速通过并记录[SEQ[\*ARABIC1]。訾晶、金婕、张旭,创新地引入二值神经网络,提出一种基于FPGA的车牌识别方法及系统专利,利用二值神经网络减少计算量的优势,与FPGA硬件加速相结合,极大地提高了车牌识别的速度,为需要高实时性的场景提供了新的解决方案[SEQ[\*ARABIC1]。赵鑫基于RISC-V核的车牌识别系统设计,为车牌识别系统提供新的硬件架构思路,虽未直接针对FPGA,但RISC-V核的设计思路与应用方式,对基于FPGA的车牌识别系统在硬件选型及架构设计上提供了比较与借鉴[SEQ[\*ARABIC1]。訾晶,张旭欣,金婕通过FPGA的动态重构特性建立快速车牌识别系统,该系统可以针对不同的应用场景,动态调整硬件配置,灵活应对复杂多变的环境,从而提升识别速度和系统适应性[SEQ[\*ARABIC1]。胡艳茹对图像预处理、对车牌定位、字符识别等关键算法进行细致的研究与改善,提升算法在FPGA平台上的执行效率,保证车牌识别的准确度[SEQ[\*ARABIC1]。王钰、訾晶、陈美好结合车牌识别和人脸识别,提出了基于FPGA的车牌人脸识别系统及方法专利。拓展了系统应用场景,提高了安防监控等领域的安全性和管理效率,实现了多模态生物特征识别的融合应用[SEQ[\*ARABIC1]。陈炼祥、施隆照、龚廷顺基于Unet神经网络实现车牌定位系统的FPGA设计,利用Unet强大的图像分割功能,准确识别车牌位置,为后续的字符识别提供良好的基础,提高整个车牌识别系统的效果[SEQ[\*ARABIC1]。刘曜溪、徐志强、黄太致致力于高效的高精度车牌识别系统的构建,从算法和硬件的结合角度出发,不断地探索提升识别系统性能的方法,在识别速度提高的同时保持识别精度,促进车牌识别技术的提升[SEQ[\*ARABIC1]。张玉娇虽然研究的对象是手写体数字识别,但是卷积神经网络以及加速的方法都是通用的,她的研究可以为车牌识别中深度学习算法的优化提供一定的参考,提高车牌识别算法的性能[SEQ[\*ARABIC1]。袁敏,张振将FPGA硬件优势与BNN算法优势结合起来,设计出高效的车牌识别系统,在保证识别精度的前提下,识别速度大幅度提升,满足了智能交通系统对高效车牌识别的要求[SEQ[\*ARABIC1]。李文方、李海霞、杨治才对基于FPGA的图像边缘检测及显示技术进行研究,图像边缘检测是车牌识别图像预处理中的重要环节,研究图像边缘检测成果可为基于FPGA的车牌识别系统图像预处理阶段提供技术支持,有助于提高车牌定位与识别的准确度[SEQ[\*ARABIC1]。早期搭建基础统架构,之后持续改善硬件和软件设计,融合边缘计算等技术以加强实时性,针对停车场等特定场景展开定制化设计,扩大系统功能及应用范围,从传统的算法改进到采用深度学习算法,比如二值神经网络,Unet等,依靠FPGA硬件加速的优势,改进算法执行效率,识别准确度以及速度,而且还要探究算法同硬件之间的协同优化,涉及高精度识别,特定场景应用,创新算法应用,多种模式识别融合等诸多方面,给技术发展赋予知识产权方面的保护,促使技术在实际场景中得到应用并落地。1.2.2国外研究现状车牌识别技术在智能交通、安防监控等领域应用广泛,FPGA能高效实现,此次按照新给出文献,梳理基于FPGA的车牌识别技术研究进展。Yulu,CaiX,LinH提出基于1比特卷积神经网络的FPGA车牌识别加速器设计。通过使用1比特卷积神经网络,极大的减少了计算量和存储空间,结合FPGA并行处理的优势,实现高效车牌识别加速,提高系统实时处理能力,为基于深度学习的车牌识别硬件加速提供新思路[SEQ[\*ARABIC1]。SborzGAM,PohlGA,VielF设计用于基于FPGA平台自动车牌识别的定制处理器。通过定制处理器架构,优化硬件资源利用率,提升车牌识别系统的处理效率,满足车牌识别在不同场景下的硬件性能要求,为FPGA平台在车牌识别中的硬件优化提供了具体的实现方案[SEQ[\*ARABIC1]。JingZI,XuxinZ,JieJ基于FPGA动态重构的快速车牌识别系统。利用FPGA动态重构的特点,根据不同的识别任务和环境,实时改变硬件配置,加快识别速度,提高系统的适应性,使系统在复杂的多变环境中具有更强的应用能力,使车牌识别系统更加灵活高效[SEQ[\*ARABIC1]。WangZ,JiangY,LiuJ研究并实现用于车牌识别的Fast-LPRNet算法,该算法在保证识别准确率的前提下,极大提升了识别速度,在算法结构、参数优化的基础上,结合FPGA硬件加速,期望能实现高效车牌识别系统,为车牌识别算法优化开辟新方向[SEQ[\*ARABIC1]。ZhuY,TangYF,WuYX设计基于FPGA的字符识别机器人。着重于字符识别环节,使用FPGA来完成字符识别,为车牌识别系统中重要的一环,即字符识别部分提供一个硬件实现的方法,从而提高字符识别的准确率和速度,对于提高整个车牌识别系统的性能具有重要意义[SEQ[\*ARABIC1]。PengW,JiayuS,YingquanP基于线画图的车牌号码识别算法及装置专利。采用独特的线画图算法对车牌号码进行识别,与装置相结合,为车牌识别提供了新的算法和硬件设计,增加了车牌识别技术的多样性[SEQ[\*ARABIC1]。LiZ,JiangX,WangY设计了FPGA实时车牌定位的硬件架构,从硬件架构上对车牌定位进行优化,采用FPGA硬件特点,快速准确地完成车牌定位,为后续的字符识别做好铺垫,提高车牌识别系统的实时性与准确性[SEQ[\*ARABIC1]。MiaoY,GaoS,LiuJ设计基于FPGA的边缘检测系统。边缘检测是车牌识别图像预处理的重要步骤,利用FPGA进行边缘检测,可以提高图像质量,为车牌定位、识别提供更优质的图像数据,有助于提升整个车牌识别系统的性能[SEQ[\*ARABIC1]。算法优化方面,加入1比特卷积神经网络,Fast-LPRNet算法等,联合FPGA来改善识别速度,硬件设计上,专门定制处理器,设计特别的硬件架构,利用动态重构特点,从而加强资源使用和系统适应性,系统搭建涉及字符识别机器人,车牌定位系统,边缘检测系统等,从不同层面完善车牌识别系统。1.3研究内容构建包含图像采集、可编程系统等多模块的架构,图像采集使用OV5640摄像头,可编程系统以双核Cortex-A9为主导,各模块相互配合,在FPGA硬件加速下完成从采集到显示识别结果的全过程,选择ZYNQ7020最小系统、OV5640摄像头、NT5CB128M16IP-DI存储器和HDMI接口,完成硬件电路设计,确定引脚功能,使其能够协同工作,完成含图像输入等模块的RTL设计。各模块分别进行图像采集格式转换、预处理、边缘检测、字符识别和显示。第2章系统总体结构设计2.1系统总体架构系统总体架构包括图像采集、可编程系统、图像处理、显示输出及可编程逻辑。图2.SEQ图2.\*ARABIC1系统总体架构图这个系统总体架构(1)图像采集部分使用OV5640/7725摄像头做图像采集设备,SCCB驱动摄像头与可编程系统(ARM)通信,对摄像头的参数进行配置,采集到的图像数据暂时存在DDR3存储器里,DDR3控制器控制DDR3存储器的读写操作,为后续处理提供缓冲区。(2)可编程系统(ARM)由双核Cortex-A9处理器组成,它通过AXI-SmartConnect(HP)和AXI-Interconnect(GP)与其他模块相连,可以对整个系统进行控制和调度,协调各个部分的工作。(3)图像处理部分图像采集模块把数据传给图像处理模块处理,处理完的数据由VideointoAXI4-Stream模块转换成AXI4-Stream格式,便于在系统内传输。(4)数据传输与控制模块VDMA(视频直接内存访问)模块用来高效地传输视频数据,减少CPU的介入,提升传输效率,AXI-Interconnect(GP)用于把各个模块联系起来,达成数据与控制信号的交流,时钟设置模块给整个系统给予稳定时钟信号,保证各模块协同工作,VideoTimingController负责产生视频显示所需的时序信号。(5)显示输出部分经过处理传输之后的数据通过AXI4-StreamtoVideoout模块转换成可以显示的格式,在HDMI/VGA显示器上输出显示。(6)可编程逻辑(FPGA)负责实现图像采集、硬件加速功能处理与模块接口逻辑,利用并行特性提升系统实时处理能力。车牌识别系统流程图主要包含三个关键步骤:图2.SEQ图2.\*ARABIC2车牌识别系统流程图(1)视频图像采集通过摄像头等图像采集设备获取含有车牌的视频图像数据,这是整个系统的第一步,采集到的图像质量好坏会直接影响后续的识别准确性。(2)FPGA视频图像处理将采集到的视频图像数据传送到FPGA(现场可编程门阵列),FPGA采用并行处理的方式对图像进行一系列的预处理(例如灰度化、去噪等)、车牌定位(即找到图像中车牌的位置)、字符分割(即把车牌上不同的字符分离开来)和字符识别(即把每个字符识别出来),从而获取车牌的重要信息。(3)液晶屏显示图像处理结果经过FPGA处理后的车牌识别结果被输出到液晶屏上显示出来,这样操作人员就能很方便地看到识别出来的车牌号码之类的资讯,从而完成整个车牌识别的过程。2.2硬件系统方案车牌识别相关系统架构,OV5640摄像头负责采集视频图像,数据传给FPGA视频图像采集模块,然后在FPGA里依次进行预处理、车牌定位、字符分割、字符识别等处理,ARM-CortexA9可以调度和控制各个处理环节,通过VDMA和DDR3存储交互数据,给处理过程提供数据缓存,处理好的视频图像经过视频缓存和AXI总线控制,由HDMI显示接口驱动,在显示器上显示出来,完成从图像采集到显示的整个过程,如下图所示。图2.SEQ图2.\*ARABIC3系统总体结构2.2.1FPGA芯片硬件选型使用ZYNQ7020最小系统作为基于FPGA的停车场车牌识别系统的最小实现系统是出于多方面考虑的,在综合考虑各方面之后做出的选择,ZYNQ7020是把双核ARMCortex-A9处理器与丰富可编程逻辑融合的产物,其结构使得它能够同时满足对系统控制与复杂图像处理需求,两颗核心的ARM可以轻松地操控整个停车场车牌识别,不论是调节摄像头图像的采集调度,还是操控识别结果在LCD屏上呈现,都能被精准地掌控。它丰富的可编程逻辑资源,给车牌定位,字符识别等算法的硬件加速给予足够空间,可以通过并行处理来加快运算速度,符合停车场车辆快速进出时对车牌识别实时性的严格需求,而且,ZYNQ7020最小系统具有不错的扩展性和稳定性,方便连接摄像头,LCD显示屏之类的外部设备,长时间运行也能维持可靠性能,从而给系统在复杂停车场环境里稳定运行给予有力保证。图2.SEQ图2.\*ARABIC4ZYNQ7020最小系统2.2.2摄像头硬件选型选用OV5640摄像头做基于FPGA的停车场车牌识别系统,主要是从多个角度考虑,就分辨率而言,它的像素达到500万,能捕捉到车牌上非常细小的字符和纹理信息,给后面的车牌定位以及字符识别给予清晰又准确的图像基础,即便车牌处在复杂的环境里,也依然可以被清楚地显示出来,从帧率性能来讲,它可以做到每秒30帧以上的图像采集速度,完全可以符合停车场车辆快速进出时的实时性需求,保证不会错过任何一辆车的车牌图像。并且OV5640可以在较低光照环境中工作,先进的感光技术可以减小噪点的影响,提高照片的质量对于停车场来说是很重要的,在光线不断变化的情况下对停车场拍摄的车牌进行识别就很重要;OV5640所采用的接口与其他常见的FPGA芯片兼容,硬件连接方便,数据传输简单。这样就可以大大降低系统的搭建难度,使图象数据能够快速稳定的传输到摄像头进行数据传输,有效的提高了整个车牌识别系统的工作效率。图2.SEQ图2.\*ARABIC5OV5640摄像头2.2.3存储器硬件选型选用NT5CB128M16IP-DI存储器作为基于FPGA的停车场车牌识别系统的存储器,主要是由于它在很多方面都适合于本系统的需要。存储器的容量是128M,可以为车牌识别时所用到的大量图像数据提供足够的缓存空间,无论是由摄像头实时采集的原始图像,还是在FPGA中进行预处理、车牌定位、字符识别等过程所产生的中间数据,都可以被稳定地存储起来,不会出现数据丢失或者溢出的情况。其16位的数据宽度与高速的运行频率相结合,能够实现与FPGA芯片之间的快速数据传输,保证图像数据可以及时准确的在存储器和FPGA各个功能模块之间进行交互,满足车牌识别系统对实时处理的严格要求。同时该存储器具有很好的稳定性和可靠性,在停车场复杂的电磁环境下也能正常工作,保证系统长时间不间断工作,从而为整个车牌识别系统的高效可靠运行提供有力支持。图2.SEQ图2.\*ARABIC6NT5CB128M16IP-DI存储器2.2.4HDMI接口硬件选型选择HDMI接口用在基于FPGA的停车场车牌识别系统里,主要是因为HDMI接口有很多好处,它传输速度快,可以达到几Gbps,把FPGA处理过的车牌识别结果和相关消息马上传到显示设备上,这样显示的画面就流畅,没有卡顿,车牌号码,车子进进出出这些重要信息能立刻显现出来,HDMI接口支持高分辨率输出,适合各种高清TFT-LCD屏幕,这样车牌上的字就会很清晰,容易被停车场工作人员和车主看到。而且,HDMI接口在传输信号时抗干扰能力强,在停车场这种复杂的电磁环境下,依然可以保证数据的正常传输,不会出现图像失真或者显示异常的情况。HDMI接口应用范围广、兼容性强,可以方便地与市面上常见的显示设备连接,大大降低了系统的集成难度,为整个车牌识别系统的显示输出提供了有力保障。图2.SEQ图2.\*ARABIC7HDMI接口第3章系统电路设计基于FPGA的停车场车牌识别系统构建过程中,系统电路设计属于关键环节,担负着硬件功能实现的任务,前章对设计需求与研究内容进行了详尽剖析,给系统搭建指明了方向,系统电路设计是把理论变成实际物理载体的重要步骤,会针对最小系统,摄像头,存储器,HDMI接口等电路展开具体的设计阐述,深入分析各个电路的工作原理,引脚功能和设计要点,通过合理布局并精确连接,保证各个硬件模块可以协同工作,从而为车牌识别系统赋予稳定运行的硬件根基,推动实现高效,准确的车牌识别目的。3.1最小系统电路设计在该最小系统电路中,BANK_33区域的许多引脚具有不同的作用,比如IO相关的引脚可以实现输入输出功能,与外部设备相连,传输数据,比如QSPI_D0-D4等引脚与QSPI(四通道串行外设接口)设备相连,可以实现高速数据的串行传输;PHY相关的引脚可以实现网络物理层相关功能,与网络通信模块相连,实现网络数据的交互;UART_RX和UART_TX引脚可以实现串口通信,方便与其他有串口通信功能的设备进行数据交换;CMOS相关的引脚可以与摄像头等图像采集设备相连,获取图像数据;GPIO引脚可以作为一般的输入输出端口使用,灵活配置以控制各种外部设备或者获取设备的状态信息。这些引脚互相配合,经过恰当的电路链接,使得芯片可以同外界设备协作,从而形成一个能够做到数据传输,交流互动以及设备操控等作用的最小系统电路,下图就是XC7Z020-2CLG484I芯片的一些引脚链接情形。图3.SEQ图3.\*ARABIC1最小系统电路图3.2摄像头电路设计+3.3VCC给电路提供工作电压,电容C(104)对电源进行滤波,保持电压稳定,电阻R110、R111起限流作用,摄像头接口把外部信号引入电路,CMOS_RST用来复位摄像头,CMOS_D0-D7是数据传输引脚,传送图像数据,CMOS_VSYNC是垂直同步信号引脚,CMOS_HREF是水平参考信号引脚,CMOS_PCLK是像素时钟信号引脚,这些引脚协同工作,保证图像数据被正确采集并按正确的时序进行传输。PWDN引脚用来控制摄像头进入低功耗状态,RESET引脚可以进行硬件复位,SIO_C和SIO_D引脚用作摄像头的配置通信端口,OV5640芯片通过这些引脚同外部电路相连,从而执行图像数据采集,传输等任务,这就是OV5640摄像头的电路原理图。图3.SEQ图3.\*ARABIC2摄像头电路原理图3.3存储器电路设计+1.5VVCC给存储器施加工作电压,多个VDDQ引脚联接到+1.5VVCC上,为数据输入输出缓冲器给予电力供应,VSSQ和VSS引脚接地,保证电路的电气参照点稳定,电容C137执行电源滤波,减小电压波动,DDR3_VREF给予参考电压,联接到VREFCA和VREFDQ引脚上,给存储器内部的模拟电路给予稳定的参考电平,保证数据读写正确。图3.SEQ图3.\*ARABIC3存储器电源电路原理图DDR3_A0-A14地址引脚用于存储单元的地址选择,BA0-BA2用于存储体的选择,DDR3_DQ0-DDR3_DQ15是数据引脚,用于传输读写的数据,DDR3_CLK_P,DDR3_CLK_N为差分时钟信号,为存储器的操作提供同步时钟,WE_N,CAS_N,RAS_N等控制信号引脚用于控制存储器的读写,列选通,行选通等操作,LDQS和UDQS引脚用于数据选通,使数据在正确的时钟沿被选中,RESET_N引脚用于对存储器进行复位,使其回到初始状态,ZQ引脚通过一个240Ω的电阻R79接地,用于内部校准,保证数据传输的正确性。图3.SEQ图3.\*ARABIC4存储器数据传输电路原理图3.4HDMI接口电路设计DATA0+-、DATA1+-、DATA2+-和对应的屏蔽引脚形成3个数据通道,CLK+-和CLKSHIELD形成时钟通道,TMDS(最小化差分信号)传输视频和音频数据,差分传输方式可以抗干扰,保证数据高速、稳定传输。SCL和SDA引脚进行DDC(显示数据通道)通信,实现设备之间的信息交流和配置。CEC引脚进行消费电子控制,可以实现设备之间的协同控制。HOTPLUG引脚用来检测设备是否是热插拔,+5VPOWER引脚给外部设备供电,下面的电源电路,由C773,L4,C4等组成的滤波电路,还有U?(DCJW5060T)等元件组成的稳压电路,给HDMI接口及其相关电路供应稳定的电源,保证HDMI接口可以正常工作,下图表现了HDMI接口电路主要用来完成数据传输和供电功能。图3.SEQ图3.\*ARABIC5HDMI接口电路原理图第4章RTL设计4.1识别系统总体RTL设计识别系统有好几个功能模块,这些模块互相连接起来就形成了一个系统,这些连线代表着数据,控制信号之类的传递途径,显示出各个模块之间的交互情况,有些模块之间用蓝色的信号线相连,这表明数据在不同的模块之间流动。如图4.1所示:图4.SEQ图4.\*ARABIC1识别系统总体RTL设计图4.1识别系统总体RTL设计RTL设计流程围绕图像从采集到显示的处理展开。图像输入模块利用OV5640摄像头与Zynq7020处理器,以两线制SCCB总线传输数据,ov5640_capture_data_0模块采集原始图像,再由v_vid_in_axi4s_0模块转换成AXI4-Stream格式。图形预处理模块把RGB颜色空间转成YCbCr颜色空间,对转换系数做处理,使其适应硬件整数运算,然后经乘法、加减和右移操作完成转换,用设定的阈值对灰度图像实施二值化处理。边缘检测模块采用Sobel滤波,用双RAM存储并更新数据,生成3×3像素矩阵,采用流水线设计计算边缘,而且执行图形腐蚀和膨胀操作,还要做水平和竖直边界检测。字符识别模块先分车牌字符,再算特征值,最后用卷积模板匹配算法,通过状态机判断字符类型,完成识别。液晶显示模块里,DDR3是数据缓存,它的工作依靠内部结构和电气特性,支持突发传输模式。HDMI规定显示标准,HSYNC、VSYNC和HREF同步信号一起工作。DDR3和DVI驱动模块等很多模块协作,把视频从存储做到显示全过程。4.2图像输入模块RTL设计基于OV5640摄像头和Zynq7020处理器的两线制SCCB总线传输时序图,SCCB总线一般是由双向的数据线、芯片选通信号以及时钟线组成,但是在使用时只需要使用双向的数据线和时钟线,只需要将芯片选通信号拉低即可。该时序图中,“SCCB_E”为芯片选通信号,从“传输开始”到“传输结束”之间,信号保持低电平,这表明在这一段时间里SCCB总线被启用。“SIO_C”为时钟信号,在图上可以看到是一系列规则的脉冲波形,这些脉冲作为数据传输的时间基准,数据的发送和接收都是在时钟信号的驱动下进行的。“SIO_D”是双向数据线,图中表示D7到D0的数据位,说明数据是以8位一组进行传输的,在SIO_C时钟信号的作用下,数据逐位在SIO_D上传输,最后的“X”表示此处数据未知或者可以变化,可能是后续还没有确定的数据,也可能是根据具体的配置和操作所决定的数据。图4.SEQ图4.\*ARABIC2两线制SCCB总线传输时序图使用ov5640_capture_data_0模块与摄像头对接,通过cam_pclk像素时钟信号同步摄像头输出的像素数据,使用cam_vsync垂直同步信号确定图像帧的开始和结束,根据cam_href水平参考信号确定像素数据的有效性,从cam_data[7:0]数据总线上获取原始图像数据,并将这些数据及相关的同步信号发送出去。而v_vid_in_axi4s_0模块就是接收这些数据与信号,把图像数据转成AXI4-Stream格式,输出video_out视频数据,vtiming_out视频时序等信号,让图像数据可以在系统里快速传送并进一步加工,从而达成从摄像头图像收集到系统适用的数据格式转化这个过程,如图4.3所示采集模块RTL图以OV5640摄像头为图像数据源。图4.SEQ图4.\*ARABIC3图像采集模块RTL图4.3图形预处理模块RTL设计RGB到YCbCr颜色空间的转换。Y=0.299×0.586×G+0.114×B Y=0.299×R+0.587×G+0.114×B (4.SEQ(4._\*ARABIC1)上式中,Y表示亮度,是用R(红色)、G(绿色)、B(蓝色)三个分量分别乘以0.299、0.587、0.114三个权重后相加得到的,人眼对不同颜色光的敏感度不同,人眼对绿色光最敏感,其次是红色,蓝色最不敏感,所以G的权重最大,这样就可以有效的提取出图像的亮度信息。Cb=-0.168×R-0.331×G+0.5×B+128 Cb=−0.169×R−0.331×G+0.5×B+128 (4.SEQ(4._\*ARABIC2)Cr=0.5×R-0.419×G-0.081×B+128 Cr=0.5×R−0.419×G−0.081×B+128 (4.SEQ(4._\*ARABIC3)上式中Cb和Cr分别代表蓝色和红色的色度信息,Cb和Cr是通过R、G、B三个分量做一定的线性组合再加一个偏移量128得到的。由于verilog等硬件描述语言本身不支持原生的浮点运算,因此为了在硬件中准确的实现色彩空间的转换,对原有的转换系数进行了处理。Y=(76×R+150×G+29×B)>>8 Y=(77×R+150×G+29×B)>>8 (4.SEQ(4._\*ARABIC4)上式中,77,150,29分别为0.299,0.587,0.114扩大256倍即的近似整数。计算结果右移8位即“>>8”,相当于除以256,这样在硬件里利用整数运算达到近似的浮点运算效果,从而得到Y(亮度),Cb(蓝色色度),Cr(红色色度)。同理可得:Cb=(-44×R-85×G+138×B+32768)>>8 Cb=(-43×R−85×G+128×B+32768)>>8 (4.SEQ(4._\*ARABIC5)Cr=(128×R-107×G-32×B+32768)>>8 Cr=(128×R−107×G−21×B+32768)>>8 (4.SEQ(4._\*ARABIC6)RGB转YCbCr的RTL级实现流程,该流程通过一系列的乘法、加减法、移位等操作,把输入的RGB图像转换成YCbCr格式。图中表示的是RGB到YCbCr的RTL级实现流程,此流程经过一系列的乘法、加减法以及移位操作,把输入的RGB图像转变成YCbCr格式。(1)输入图像数据把带有红(R)、绿(G)、蓝(B)这三色通道的图像数据当作输入,每一个通道的数据会进入到对应的运算路径当中。(2)乘法运算对R、G、B三个通道的数据分别乘以不同的系数,红色通道(R)分别与77、43、118相乘,绿色通道(G)分别与150、85、107相乘,蓝色通道(B)分别与29、128、21相乘,这些乘法运算用来提取不同颜色通道在转换公式中的权重值,为后面的计算做好准备。(3)加减运算把各个通道乘法运算之后的结果组合起来,送入加减运算单元,每个通道的运算结果经过不同的路径进入到加减运算单元之中执行加法和减法运算,从而得到初步的Y、Cb、Cr分量数值,Y分量大致体现图像的亮度信息,Cb和Cr分量大致体现图像的色度信息。(4)右移操作把加减运算单元输出的结果各自执行右移8位(>>8)处理,右移操作就等同于把数值除以2的8次方也就是256,这起着归一化的作用,从而得到的Y、Cb、Cr分量值会符合对应格式的范围要求,最后输出转换完成的Y、Cb、Cr分量数据。。图4.SEQ图4.\*ARABIC4图形提取RTL流程图获取上述流程得到的灰度图像数据之后,通过parameter参数来设置二值化的阈值,定义一个比较结果寄存器用来保存判断结果,当灰度图像中的像素灰度值大于设置的阈值时,寄存器被赋予值1,否则赋予值0。由于进行二值化判断的操作会占用一个时钟周期(clk),为了保证数据在整个流程中保持时序的一致性,需要对输入端的场同步信号、使能时钟信号和数据有效信号进行延时处理,延时1拍。根据比较结果寄存器的值(0或1),选择输出像素点的颜色,如果为0,输出的像素点颜色为24'h0;如果为1,输出的像素点颜色为24'hff_ffff。4.4边缘检测模块RTL设计边缘检测运用Sobel滤波的时候,要利用3*3的模板对图像像素点实施卷积运算,在RTL级设计当中,要想达到这个目的,就得实时创建一个可以不断更新的3*3像素矩阵,就是把输入图像的前两行数据分别存进RAM0和RAM1,而把当前正在输入的图像数据当作该矩阵的第三行,等到第三行数据来临之际,就同步读取之前存于RAM里的前两行数据,这时就能得到三列一行的像素数据,然后通过三次连续的寄存操作,把这三行一列的像素数据变成三行三列的完整像素矩阵,如图4.5所示。图4.SEQ图4.\*ARABIC5双RAM的图像数据基于Sobel滤波的边缘检测RTL级设计中,图像数据的处理与存储密切相关,通过两个RAM,RAM1和RAM0,分别存储图像第一行和第二行数据,当有效信号和时钟使能信号同时为高电平时,RAM地址自动递增,有效信号为低电平时,RAM地址清零,这样就使得RAM地址与图像每行像素的横坐标一致,方便根据地址读取当前行像素点同列的前两行图像数据,然后将前两行读出的数据与当前行数据一起输出到后面的寄存器。为了满足行与行之间的更换,在读取RAM1和RAM0中的数据之后,将RAM0中的行数据写入RAM1,下一行图像数据写入RAM0,以实现数据的实时更新。生成数据矩阵之后,为了加快速度,采用了流水线设计,分为5个步骤,Step1:像素矩阵*X方向算子矩阵Gx,Step2:像素矩阵*Y方向算子矩阵Gy,两个步骤均通过比较正数列与负数列相乘数值大小,取差的绝对值,Step3:前两步的结果平方和,Step4:调用CORDIC数字信号处理IP核,开平方,Step5:开平方后的数据与预设阈值比较,大于等于阈值的像素点即为边缘点,否则不是。考虑各步骤耗时,预计Step4开平方至少要10个周期,加上其余步骤耗时的4个周期,流水线消耗16个周期较为合适,如图4.6所示:图4.SEQ图4.\*ARABIC6Sobel滤波原理图输入图像数据首先存储至RAM0和RAM1,随后进入由寄存器构建的类3×3像素矩阵处理单元。在处理过程中,先对每一行像素执行与逻辑运算,例如P11、P12、P13经与运算得到P1,依此规则得出P2和P3。最后,将P1、P2、P3图4.SEQ图4.\*ARABIC7图形腐蚀原理输入图像数据先分别存入RAM0和RAM1。随后,数据进入由多个寄存器组成的结构,形成类似3×3像素矩阵的处理单元。在这个处理过程中,对每一行的像素值进行或逻辑运算,比如P11、P12、P13经或运算得到P1,同理得出P2和P3。接着,将P1、P2、图4.SEQ图4.\*ARABIC8图形膨胀原理边缘检测要找出图像中灰度突变的区域,进而找到目标物体的边界,一般依靠像素灰度值的一阶或者二阶导数运算,一阶导数通过算出像素灰度在水平和垂直方向上的变化率,变化率大之处便是边缘大概位置,二阶导数凭借拉普拉斯算子之类手段,零交叉点就是边缘所在,实际操作时,先给图像做滤波平滑处理,削减噪声干扰,然后执行导数运算,最后用阈值处理筛选出真实的边缘点,去掉伪边缘,如此就能较为精确地勾勒出图像里物体的轮廓。先做水平边界检测,y_cnt_r[9:0]是垂直方向的计数器,图像逐行扫描的时候会递增,可以知道当前扫描到的行位置,change_cnt[9:0]针对行内像素特征改变做计数,灰度值,颜色等改变,可当作判定边界的一项参照,img_bit_reg处在0状态,也许表示当前图像数据处理的某种状况,char_top_flag为1的时候,就表明检测到字符顶部边界相关的状况,char_top_reg[9:0]和char_down_reg[9:0]分别记录字符顶部和底部对应的行位置。在水平边界检测时,从图像的顶部开始逐行扫描,用y_cnt_r来跟踪扫描的行数,在每行中,用change_cnt来统计像素特征的变化情况,当像素特征变化符合事先设定的边界条件,比如变化次数达到某个阈值,或者灰度值变化超出一定范围等,就可能表明接近水平边界,如果检测到字符的顶部特征,就会把char_top_flag设为1,把当前行的位置存入char_top_reg,检测到底部特征时,就把位置存入char_down_reg,依靠这些信号的协作,就能完成对图像中字符或者区域水平边界的检测。扫描图像时,像素特征发生变化(如灰度、颜色变化),当change_cnt计数达到一定阈值或者出现符合边界特征的像素变化时即发生边界判断。在判断到字符顶部时设置char_top_flag并记录char_top_reg;判断到底部时char_down_reg也记录下来,依靠这些信号及计数的叠加实现对图像中字符或目标区域边界的探测,水平检测原理如图4.9所示:图4.SEQ图4.\*ARABIC9水平投影检测效果接着做竖直边界检测,x_cnt_r[9:0]和y_cnt_r[9:0]分别是水平方向和垂直方向的计数器,用来记录像素的位置,从而找出图像中具体的坐标点,ram_wr为1表示正在往RAM写数据,ram_wr_data[9:0]是写入的数据,ram_rd_data[9:0]是从RAM读出来的数据,它的波形变化显示了数据的读取情况,rd_data_d1[9:0],rd_data_d2[9:0],rd_data_d3[9:0]大概是对读出的数据做了不同的延时处理,用以比较,plate_width[9:0]记载了某个区域的宽度值,给检测给予参照尺寸。char_cnt[2:0]可能是用来统计字符数量之类的计数。char_board[20:0]也许存着跟字符边界有关的信息,竖直边界检测的时候,用x_cnt_r和y_cnt_r去遍历图像像素,根据ram_rd_data以及它的延时数据改变,加上plate_width之类的信息,来判断像素值有没有跳变或者特征改变,要是检测到符合竖直边界特征的改变,比如灰度值突然改变,颜色改变等等,就用char_cnt和char_board记录并标记边界的位置,从而达成对图像里竖直边界的检测,竖直检测原理如图4.10所示:图4.SEQ图4.\*ARABIC10竖直投影检测效果边界检测后的结果如图4.11所示:图4.SEQ图4.\*ARABIC11腐蚀膨胀后车牌图4.4字符分割与识别模块RTL设计车牌字符的特征提取与识别是按照一系列的有顺序的操作,首先对车牌边框识别完成后,去除边框,保留7个字符进行分割,与车牌边界检测方法类似,包括了边沿检测、坐标计数等等,得到字符边界后,根据字符边界得到帧内7个区域的特征值,分别确定7个字符区域的高和宽以及水平垂直边界,通过二级嵌套循环遍历,得到字符的像素总数,同时将输入信号延迟两个周期,检测同步信号沿来同步信号,根据像素坐标和输入数据更新像素计数,每个字符划分为5*8共40个区域,以白色像素与区域总像素数的比例来计算特征值,如果白色像素数超过总像素数的40%,则特征值为1,否则为0。字符识别采用卷积模板匹配算法,每个字符的特征值是5×8网格算出的三维数组,输入到卷积模板匹配模块,输出二维数组,与字符索引查找表对比得到识别结果。卷积模板匹配由状态机实现,输入7个字符特征值,从Step0开始,判断有效后开始识别。Step1根据checkout变量判断识别中文还是英文、数字,checkout为0则是中文字符,进入Step2,与31个汉字模板匹配,记录匹配得分,找出匹配度最高的模板作为输出汉字。英文、数字模板匹配步骤相同,每识别完一个字符,checkout寄存器变量自动加1,依此判断字符类型和识别是否结束。post_frame_sync、post_frame_href、post_frame_ldken可能是图像帧同步、水平参考、加载使能信号,为字符特征值检测提供时序基础,post_frame_sync、post_frame_href目前值为1,表示当前有效,post_img_Bit目前值为0,具体含义未知,char_boarder[7:0][20:0]是字符边界数据,如16a1cb,15f9a0等,用来划定字符区,给特征值检测限定范围。vertical_start[9:0]、vertical_end[9:0]分别表示垂直方向的起始和结束位置,目前vertical_start为000,vertical_end为1df,它们与字符边界数据一起,可以确定字符在垂直方向上的位置信息,帮助确定检测字符特征值的区域,字符识别效果如图4.12所示:图4.SEQ图4.\*ARABIC12字符识别效果车牌字符识别过程中状态的转换逻辑,从Step0开始,当字符特征值有效时,进入判断中英文的Step1,如果是中文字符,就转移到Step2寄存汉字模板,然后在Step3进行特征值匹配,在Step4比较匹配得分,完成一次比较之后,如果还有其他中文字符模板需要比较,就回到Step2,如果所有的汉字模板都已经匹配完成,就进入Step5来确定最佳匹配汉字。如果Step1判断是英文字符,就跳到Step6寄存英文模板,在Step7进行特征值匹配,在Step8比较匹配得分。一次比较结束后,如果英文匹配未结束,回到Step6比较下一个字符模板;如果英文模板匹配结束,那么进入Step9,确定最佳匹配结果。当所有车牌字符识别完成后,回到最开始的Step0,如此循环,直到完成整个车牌字符的卷积模板匹配识别,如图4.13所示:图4.SEQ图4.\*ARABIC13特征值的车牌字符识别卷积模板匹配状态图4.5液晶显示模块RTL设计在液晶显示模块中,DDR3扮演着非常关键的数据缓存角色,液晶屏显示图像的时候,要不断地而且稳定地取得视频数据,DDR3就像个效率很高的“数据中转站”,可以暂时存许多视频数据,从而满足液晶屏随时显示的需求,它保证了数据能顺畅地供应出来,防止因为数据传输不及时造成显示卡顿,花屏之类的问题,给高质量的图像显示给予了有力的支撑,如图4.14所示:图4.SEQ图4.\*ARABIC14DDR3工作原理图DDR3的工作原理是基于其内部结构和工作特性,DDR3有四个逻辑块(L-Bank),每个逻辑块可以看成一个独立的存储区域,每个区域内有很多存储单元,每个单元存储1位数据,当需要读写时,通过行、列地址线控制相应位置的晶体管,写入时,利用晶体管控制存储电容充电,将数据存储起来;读取时,检测电容的电荷状态,从而读出存储的数据。同时DDR3也支持突发传输模式,可以在一次地址控制下连续读写多个数据,提高了数据传输速度。在液晶显示模块中,DDR3给数据缓存提供支持,视频数据输入之后,先经过视频源数据输出选通模块1,对数据实施初步筛选或者导向,然后分流到两个数据缓冲部分,这就对应着DDR3内部许多可以单独操作的逻辑块(L-Bank),就像是许多小型仓库并排摆放在一起,数据在缓冲部分暂时存放,就像货物存放在仓库里一样,随后,数据缓冲数据输出选通模块2对缓存的数据再一次执行选通处理,决定数据的输出路径,在这个环节当中,通过对行和列地址线的控制,就像仓库管理员精准找到货架一样,选择性地激活DDR3存储单元里的晶体管,从而完成对存储电容的充放电,做到数据的写入和读取,进而保证液晶屏可以持续稳定地获取到需要的数据来显示。从HDMI传输标准上看,分辨率为1024*600像素,刷新率60HZ,这就决定了整个画面的显示节奏,在这个基础上整个显示过程包含1344个行周期,其中1024个行周期用来显示图像行数据,如图4.15所示:图4.SEQ图4.\*ARABIC15同步信号波形图1)行同步信号HSYNC用来表明一行数据的开始和结束,在每一个行周期当中,HSYNC信号依靠高低电平的改变来确定一行的边界,从而让液晶显示屏的控制端能够准确地找到每行数据的起始位置,进而正确地接收并处理DDR3输出的像素数据。(2)场同步信号VSYNC代表一帧图像的开始和结束。图中注释Line:600图像显示时间,说明了在VSYNC信号有效期间,有600行用于显示图像的行数据,即一帧图像的主体显示部分,这样就可以完成一幅图像的刷新显示。(3)水平参考信号HREF指示当前输出的像素数据是否有效。图中的“Horizal1行图像显示时间”表示在一行数据传输过程中,HREF在一段时间内是有效的,在这段时间内DDR3输出的像素数据才是显示的数据,液晶显示屏控制端在HREF有效时会接收到这些数据。DDR3、DVI驱动模块RTL图中呈现的系统以多个模块协同工作的方式完成视频处理与显示,processing_system7_0处理系统基于ZYNQ7处理系统,依靠许多引脚与DDR3进行数据存储和读取,通过AXI总线接口与其他模块通信调度数据,v_axi4s_vid_out_0模块接受视频及相关时序信号,把AXI4-Stream格式的数据转变成适合视频输出的格式,保证数据传输准确无误,v_tc_0视频时序控制器依照系统时钟和使能信号,产生视频输出所需的时序信号,把握视频数据输出的速度和顺序,DVI_Transmitter_0模块接收处理好的视频数据和时序信号,把这些数据转变成符合DVI标准的信号输出,推动显示设备显示图像,各个模块密切配合,从数据存储到显示完成整个过程,如图4.16所示。图4.SEQ图4.\*ARABIC16DDR3和DVI驱动模块RTL图

第5章系统软件设计5.1识别系统软件总体设计车牌图形识别软件流程从视频采集数据流开始,首先对采集到的图像进行预处理,主要是将采集到的图像从RGB颜色空间转换成YCbCr颜色空间,再利用一定的加权运算提取出亮度和色度信息,然后进行二值化处理,突出图像特征,为后面的处理做准备。接下来是车牌定位,使用边缘检测技术,如Sobel滤波,结合图形的腐蚀和膨胀操作,以及水平和竖直边界检测,来准确地找到车牌在图像中的位置。然后进行字符分割,在识别出车牌边框并去除掉边框之后,只保留车牌中的7个字符,使用类似于车牌边界检测的方法,将字符一个个分开。接下来就是字符识别步骤,对分割后的每一个字符,先计算它的特征值,将字符分成5*8个区域,根据白色像素占区域总像素数的比例来确定特征值,然后使用卷积模板匹配算法,通过状态机判断字符是中文还是英文或者数字,再与相应的模板进行匹配,得到识别结果,最后将识别出的字符结果输出,实现整个车牌图形识别的软件过程,如图5.1所示。图5.SEQ图5.\*ARABIC1车牌图形识别软件流程5.2图像预处理算法设计5.2.1去噪算法设计在图像处理方面,噪声干扰会极大影响图像质量和后续分析,比如车牌图像的识别,去除噪声并尽可能保留图像重要信息,各种滤波算法相继诞生,比如根据高斯函数加权平均的高斯滤波,根据信号统计特性恢复信号的维纳滤波,取邻域均值平滑图像的均值滤波,用中值替换脉冲噪声的中值滤波,考虑空间距离和像素值差异的双边滤波,通过matlab仿真分析得到波车牌前后对比图。(1)高斯滤波按照高斯函数来塑造权重,对图像中的每一个像素及其邻近像素执行加权平均,距离中心越近的像素其权重越高,以此来平滑图像,有效地削减高斯噪声。滤波前图片滤波后图片图5.SEQ图5.\*ARABIC2高斯滤波车牌前后对比图(2)维纳滤波基于信号的统计特性以及噪声的先验知识,利用最小均方误差的方式从噪声图像中恢复出原信号,能够在一定程度上恢复图像的细节。滤波前图片滤波后图片图5.SEQ图5.\*ARABIC3维纳滤波车牌前后对比图(3)均值滤波把图像里每一个像素邻域里的像素数值取平均,然后把得到的数值代替掉原图像的像素数值,这样就能达到让图像模糊、减少噪声的效果,不过也可能会让图像的边缘变模糊。滤波前图片滤波后图片图5.SEQ图5.\*ARABIC4均值滤波车牌前后对比图(4)中值滤波把图像每一个像素邻域里的像素数值排个序,然后拿中间的那个数来替换掉这个像素原先的值,对于像椒盐噪声这样的脉冲噪声去除的效果比较好,还能比较好的保留图像的边缘。滤波前图片滤波后图片图5.SEQ图5.\*ARABIC5中值滤波车牌前后对比图(5)双边滤波考虑像素之间的空间距离和像素值的差异性,对图像进行平滑处理的时候,距离比较近并且像素值接近的像素其权重就比较大,既能去掉噪声又可以保护图像的边缘。滤波前图片滤波后图片图5.SEQ图5.\*ARABIC6双边滤波车牌前后对比图车牌图像处理期间,滤波算法的选择对图像品质改善以及后续识别精确性极为重要,想要找到最适合的滤波方案,我们就对各种常见滤波方法做了深入研究并细致对比,下面这个表格从信噪比,峰值信噪比以及能否保存车牌细节这些关键方面,直观显示了高斯滤波,维纳滤波,均值滤波,中值滤波和双边滤波的滤波情况,如表5.1所示。表5.SEQ表5.\*ARABIC1滤波效果对比滤波方法信噪比峰值信噪比是否保持车牌细节高斯滤波26dB31dB是维纳滤波28dB32dB较好均值滤波22dB29dB否中值滤波29dB34dB是双边滤波26dB33dB是中值滤波在滤波方法中,信噪比达到29dB,峰值信噪比达到34dB,数值较大,而且可以保留车牌的细节,与其他滤波方法相比,综合性能最好,所以选择中值滤波。在verilog中实现中值滤波,原理是处理图像像素。首先选取一个3*3像素矩阵,如M11-M33作为滤波窗口,然后对窗口内每行的3个像素分别求出最大值(Max)、中间值(Med)和最小值(Min),得到三行各自的Max、Med和Min。从这9个值(三行的Max、Med、Min)中再找出最大的Max、中间的Med和最小的Min,最后取这3个值中的Med作为该窗口中心像素滤波后的输出值。对图像中的每个像素及其邻域像素重复上述操作,即可完成对整幅图像的中值滤波,如图5.7所示。图5.SEQ图5.\*ARABIC7Verilog中值滤波原理在彩色图像中,每一个像素用R、G、B三个分量表示一个颜色。对每个像素的R、G、B三个分量进行比较,找到这三个分量中的最大值,再把最大值赋给R、G、B三个通道。 R=G=B=maxR,这个公式就是将三个通道数值之和取平均值,然后赋给R、G、B,让三个通道的数值都一样,这样处理过之后,图像的颜色就会变得没有色彩差别,变得跟灰度图差不多,因为灰度图的每一个像素的R、G、B值都是一样的。 R=G=B=(R+G+B)/3 (5.SEQ(5._\*ARABIC2)图像处理中对于彩色图像进行灰度转换,原理就是通过加权平均的方式算出一个综合值,然后再给到红R、绿G、蓝B三个通道,让图像接近灰度。 R=G=B=(WRR+WGG+WB采用加权平均法,因为对红、绿、蓝三种颜色的光敏感度不同,给不同的颜色通道设置合适的权重进行加权平均值法,可以使彩色图像转换成灰度图像的结果更加符合人眼的视觉感知,提高视觉效果及处理的合理性。采用加权平均法后的车牌对比如图5.8所示:滤波前图片滤波后图片图5.SEQ图5.\*ARABIC8加权平均法车牌前后对比图5.2.2灰度化算法设计用于计算图像灰度值的均值,常作为图像阈值处理中的一个关键步骤,其原理是计算一幅图像中所有像素点灰度值的平均值来得到一个阈值TH。 TH=i=0x−1 j=0Y公式中,G(i,j)表示图像中坐标为(i,j)的像素点的灰度值,i的取值范围是从0到x−1,代表图像的行;j的取值范围是从0到Y灰度化前图片灰度化后图片图5.SEQ图5.\*ARABIC9灰度化车牌前后对比图5.2.3图形格式变化算法设计OV5640有着灵活的图像输出能力,其输出格式可以依照预先设定的参数来改变,包括YUV、多种RGB格式以及RAW格式,用户只需对寄存器地址0x4300加以配置,就能轻易地达成不同格式的切换,在诸多格式当中,RGB565格式的使用非常普遍,它具有削减硬件需求、提升动态追踪效果的优点,而且只需要3个时钟周期就可以执行格式转换,从而保证视频数据格式得以持续改变,参照Xilinx给出的数据,把寄存器0x4300的Bit[7:4]设成0x6,就可选定RGB565格式,而且,OV5640还具备调整RGB565输出颜色顺序的功能,在不同的实际应用场景中,这一特性有着重要意义。我们平时使用的RGB颜色顺序,可以将0x4300寄存器的Bit[3:0]设置为0x1,但是需要注意的是,HDMI接口所连接的DVI转换模块只支持RGB888格式的视频输入,将输入的数据进行转换为TMDS数据进行输出,所以在将数据传输到DVI模块之前,需要使用AXI-StreamtoVideoOut模块,对RGB565格式视频的颜色分量低位填充0,变为RGB888格式,以满足整个数据传输和处理过程的要求。表5.SEQ表5.\*ARABIC2RGB565转RGB888RGB565RGB888R分量R4R3R2R1R0R4R3R2R1R0000G分量G5G4G3G2G1G0G5G4G3G2G1G000B分量B4B3B2B1B0B4B3B2B1B00005.3图像边缘检测算法设计图像处理领域,正确识别图像的边缘对提取图像的重要信息、理解图像内容有着极其重要的意义,边缘检测是图像处理基础而且关键的步骤,许多算法纷纷出现。Sobel算子因独特的原理和良好的检测效果而受到关注。Sobel算子利用特定的卷积因子和分别求得图像在水平和垂直方向上的梯度近似值,再根据梯度幅值和梯度方向确定图像边缘。Sobel卷积因子Gx如图5.10图5.SEQ图5.\*ARABIC10Sobel卷积因子GxSobel卷积因子Gyx如图图5.SEQ图5.\*ARABIC11Sobel卷积因子GySobel算子在图像处理中用于计算图像梯度的原理体现,Gx和Gy分别表示图像在水平方向(x方向)和垂直方向(y方向)上的梯度近似值, Gx=−10+1−20+2 Gy=+1+2+1000用于计算图像中某一像素点处的梯度幅值: G=Gx2+Gy2用于计算图像中某一像素点处梯度的方向: θ=tan−1⁡GxGySobel边缘检测结果如图5.12所示:图5.SEQ图5.\*ARABIC12Sobel边缘检测图5.4图像分割算法设计基于图像特征的切分,按车牌字符形状、尺寸比例、位置等属性切分。字符间隙和尺寸很重要,靠车牌长宽比和字符数量、间距来定切割点,像垂直投影技术,对二值化图像投影找低谷确定切割点,不过对“1”“川”之类字符切割不太好;基于连通元特征的方法,在传统投影基础上,处理车牌区域成连通元再操作。基于识别的切分,先随机设分割点分析可能字符,对比方案挑最优,主要策略有窗口搜索策略(用滑动窗口粗略切割,识别窗口内字符决定是否接受)和识别寻优分割策略(先标定假设分割点,分析结果后再调整分割比较)。Verilog字符分割算法实现,在FPGA仿真中用垂直投影技术测试,效果不错,但FPGA硬件限制无法直接使用。改进是已知车牌区域大小时,按比例(字符间距0.03L,字符宽0.1L,L为车牌总长)确定字符位置,扫描确认边缘,这种方法简单快捷,不会出现容易混淆的字符被误切,效果如图5.13所示:图5.SEQ图5.\*ARABIC13图像分割效果图5.5图像识别算法设计在图像识别算法体系当中,字符识别的运作原理就是针对采集得到的图像开展深入剖析,通过提取诸如字符的形状、笔画分布之类的特定特征,然后按照这些特征把字符归入不同的类别当中,从而精确地辨别出字符所包含的内容,字符识别技术包含很多方向,涉及模板匹配、依照字符结构展开剖析以及借助卷积神经网络实施识别等等,而此次设计主要针对的是在FPGA环境里,卷积模板匹配方法以及依靠卷积神经网络的方法能不能应用到车牌字符识别领域。卷积模板匹配技术的实现,首先需要对字符进行特征向量的提取,这里包括很多要素,一是基元数量,水平方向上是每一行的笔划数,垂直方向上是每一列的笔划数;二是平均宽度,水平平均宽度是每一行字符边界之间的距离,垂直平均宽度是每一列字符边界之间的距离;三是投影特征,行投影是每一行字符像素的数量,列投影是每一列字符像素的数量。实施模板匹配操作的时候,会按照车牌上各个字符各自的特性展开分类识别,车牌上的第一个字符是汉字,其余六个字符则都是数字或者字母,对于那些看上去很相像的字符来说,还可以采用二次识别的方法来加以识别,在这个过程中,如何在保持识别准确度的同时,又能提高识别速度,这也是要着重考虑的方面。图5.SEQ图5.\*ARABIC14文字识别效果图

第6章系统调试6.1硬件组装与调试硬件组装主要是车牌字符识别相关的FPGA设备和其他的一些组件。如果是卷积神经网络识别法,那么就使用Zynq系列处理器,其中的组装方式是将卷积神经网络的部分安排在PL端,通过HLS将C语言转换成Verilog语言,然后在FPGA上进行硬件加速。将卷积神经网络的其他部分安排在Zynq的PS端,PS端有两个ARM-CortexA9。这样就可以实现对硬件资源的合理分配与使用,来实现车牌字符识别功能。图中硬件组装为摄像头模块和电路板组成。摄像头模块放置于电路板之上,可能用作图像采集设备,为后续图像识别等操作提供基础数据。电路板上装有各种元件,金色的散热片是给芯片散热的,保证芯片正常工作。图5.SEQ图5.\*ARABIC15系统实物图下图是车牌识别系统的硬件调试图,显示器显示的车牌图像,识别出了车牌号“苏H3039K”,与桌上真实的车牌一致,说明调试完成后的系统可以达到基本的车牌识别功能。桌子上是带排线的硬件模块,是整个系统的处理中心。系统能够识别出车牌,达到了基本的功能要求。图5.SEQ图5.\*ARABIC16系统功能验证6.2系统测试结果分析车牌识别系统的研发过程中,测试是检验系统性能的重要一环,它能直接显示系统在实际运作时的表现,下表表包含100次测试的诸多关键数据,利于我们全方位考察车牌识别系统在车牌定位,字符分割,字符识别等方面的表现。表6.SEQ表6.\*ARABIC1测试结果表测试内容车牌识别总次数识别正确率车牌定位失败率字符分割失败率汉字识别错误率数字、英文识别错误率板级测试10088.00%3.00%1.00%4.00%4.00%车牌识别板级测试部分结果如图5.17所示:图5.SEQ图5.\*ARABIC17测试结果图

结论伴随汽车保有量增多,传统停车场管理模式的问题显现出来,车牌识别技术成了改良管理效能的关键,FPGA的特性让它在车牌识别里占据优势,国内关于这方面研究从搭建基本架构开始,一直做到改善硬件软件,融合新技术,拓宽应用范

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论