设计制作
汽车车牌数码世界 P.162基于STM32单片机的车牌识别系统的设计廖烈健  谭伟付  莫富超 方灏  余嘉诚 韦现佑 广西大学行健文理学院
摘要:随着全球经济的快速发展,世界各国汽车数量急剧增加,城市交通也越来越拥挤,城市交通状况日益引起人们的重视。缓解交通压力的重要方法就是建立智能交通系统,而车牌识别系统是智能化交通系统的重要组成部分。本论文的车牌识别系统的5个基本组成部分分别是车牌信息采集、图像预处理、车牌信息定位、车牌字符分割、车牌字符识别。
关键词:单片机 车牌识别 STM32
1978年改革快开放以后,中国的交通运输业发展非常快。但伴随着其发展,也出现了一系列问题,如交通堵塞、交通事故。减轻我国交通压力的关键就是建立智能化交通系统,而智能交通是我国当前交通管理发展的重要方向,而汽车车牌自动识别技术在智能交通系统中发挥重要作用。智能车牌识别是智能交通的重要组成部分,已经广泛应用在智能停车场、道路监控等方面。而车牌识别系统使得车辆管理更加快捷和人性化,增加了便捷性并节省了人力和物力成本,同时也减轻了停车等待时间,缓解交通压力。
1 车牌识别系统组成
本文的系统由硬件和程序软件两个部分组成 , 硬件部分主要是控制芯片和外围设备组成,其功能是主要负责捕获车辆的动态视频图像,通过智能模块转化为静态图像并传输给控制芯片处理,并将获得的结果图像在液晶屏上。软件部分主要是程序部分,用C语言来编程,完成对车牌的图像处理,最终获得到清晰的车牌字符并且与字符库对比进行匹配识别,最后传给控制芯片进行信号处理,然后在液晶上显示。本文以STM32F103RCT6单片机为控制芯片,控制摄像头模块OV7670 去采集车牌的信息,在通过控制芯片处理后取得车牌的识别结果并在液晶屏上显示。
2 硬件系统部分的设计
2.1 STM32 控制器电路
本系统采用STM32F103RBT6 作为主控制器,STM32F103芯片内部资源丰富、性价比高、功耗小,是非常适合嵌入式应用开发的32位MCU[3]。STM32F103的最小系统原理图,包括供电电源电路,用户可以控制程序重新运行的手动复位功能电路,为芯片提供外部时钟源、系统采用外接 8MHZ 晶振作为时钟的来源,在晶振的输入电路以及输出电路都加上电容实现晶振频率平稳。STM32 的程序下载方式主要可以分为两种,一种是USB接口,另外一种是 JTAG 接口,该系统使用的是 SWD 接口下载的方式,只需要两根控制线,下载程序方便电路简单。
2.2 图像传感器模块电路
图像传感器OV7670 是传感器材料为 CMOS(互补金属氧化物半导体)的、低成本的光感采集传感器。该传感器的长处是小体积、低能耗等优点,具有单片 VGA 摄像和影像处理器的功能。经过总线SCCB(Serial Camera Control Bus)管制,客户能够完全管制图像质量、数据类型和传输模式;OV7670运用了许多先进的图像解决技术,通过缩小或者减弱光学或电子缺陷如稳定车牌信息的噪声、托尾、浮散等,从而提高图像质量,获得到清晰的稳定的车牌图像。
图像模块OV7670 通过 SCCB 总线与 STM32 控制芯片进行数据交换,使用 SCCB 来配置 OV7670 的寄存器来改变OV7670 的输出模式以及不同分辨率的8位或10位影像数据信息。当外界光线照射到摄像头的感光阵列后,感光阵列会将感知到的信号传到模拟信号处理模块,而后送到 AD 转换器进行模拟数字转化--把模拟信号转为数字信号,再传给STM32 处理器进行进一步的处理,最后将图像数据经过图像缩放模块按照用户对摄像头数据的配置参数进行格式转换后存放在FIFO 中,使用者能够经过视频端口数据完成的读取。
3 车牌识别系统工作原理
3.1 车牌图像预处理
在车牌信息采集过程中,车牌图像质量受到环境中各种干扰因素(如太阳、灰尘等)的影响。为了消除这些影响,这就要采取一种图像预先处理技术。图像预先处理技术就是先对图像进行一系列复杂的变换,
进而加强获取有用的车牌信息,削弱无用的信息。根据有光的文献,变换通常有边缘检测、灰度变换和图像二值化等。
3.2 灰度变换算法
图像模块OV7670 获取图像是彩的,而图像的颜可能和车牌颜的信息一样,这样的话就要占控制系统较大的内存,导致系统运行慢,效率低,所以咱们先灰度化处理车牌的图像信息。但是在二线 RGB模型中,假定灰度值 gray=R=G=B, 那么彩图像就可转化成灰图像。采用的主要方法有平均值法和权值加重法。平均值法:gray取 R、G、B三个的平均值,即gray=3R + G + B 。权值加重法:gray=rR+gG+bB。
3.3 边缘检测模块
边缘检测模块就是整合了灰度的空间发生突变或者阶跃变化的所有像素,所有物体、基元等同类之间都存在着图像边缘特征。整个车牌中车牌区域是边缘比较集中部分,为了将车牌图像信息的干扰做到最小,将图像从含有干扰因素的环境中提取出来,也同时为了车牌字符信息做到最大限度的保留,需要做边缘检测,这也是提高图像质量的办法边缘检测常用的算法有:梯度算法、Sobel算法、Rob-erts 算法、Log算法、Canny算法、Robert Cross算法等。
3.4图像二值化算法
图像二值化就是把模拟信号转为数字信号,用0和1二进制代码来表示该模拟信号,假设黑为 0,白为1。二值化图像以后获得的数字信号,其数据量很小,控制芯片处理起来九相对简单,而且其效率较高。本文将车牌图像中的车牌蓝出来用1来表示,其他部分用0来表示。这样处理过的车牌信息,有利于下个步骤车牌定位。
3.5 车牌信息定位模块
车牌图像经过预处理之后的获得一个二值图像(仅有黑和白两种颜),车牌区域设置成白。下一步我们只需把蓝区域截取出来即可完成车牌定位。车牌定位通常采用水平投影和垂直投影的方法。利用提取车牌的边角的方法来实现,逐行逐列扫描整个车牌区域,滑动搜索符合车牌区域的最值的点,从而出车牌区域左上角点和右下角点的横纵坐标。
3.6 车牌字符分割
车牌定位以后,我们就需要把整个车牌信息分割成为若干个单个字符,然后再对单个字符分别进行匹配识别。该方法的原理是在字符间隙处,竖直方向的投影是局部最小值。并且可以根据字符宽度设置阈值范围,分割完成后的字符一定满足字符尺寸要求。
3.7 车牌字符识别
车牌字符识别原理就是先将分割出来的单个字符分别与设置好的模板库中的字符来匹配,从而得到字符图像,再利用算法把它转为文本形式或进行显示字符识别。而识别的算法主要有模糊匹配算法和模式识别算法。但是与模式识别算法相比,模板匹配算法具有实现简单,抗干扰能力较强的特点,因而本系统采用模糊匹配算法。
4 结语
本文详细地介绍了基于STM32F103RCT6 控制芯片的车牌识别系统的设计,分析了车牌识别的图像处理技术,而且具体地介绍了对车牌识别的整个过程,最后并完成了相关软件和硬件设计。通过实验验证,在周围环境条件比较差的情况下也能较好的完成对车牌的识别。
参考文献
[1]郭玉锦.基于压缩感知的模糊车牌图像预处理及其识别研究[D].西安:长安大学,2015
[2] 杜媛.基于图像分割与多特征模型的车牌识别算法[J].国外电子测量技术,2018,37(8):20-24.
[3] 周雷,苏文斌,李鹤. 基于STM32 单片机的简单形状识别[J].数码世界,2016(06):79.
[4] 刘立伟,谷学静.复杂光照条件下车牌定位算法研究[J].信息通信,2018(08):34-35.
基金项目
本文系广西大学行健文理学院2018大学生创新创业训练项目,编号:201813638026。