《基于图像识别的车牌识别系统设计》由会员分享,可在线阅读,更多相关《基于图像识别的车牌识别系统设计(9页珍藏版)》请在金锄头文库上搜索。
1、 基于图像识别的车牌识别系统设计 杨蒙蒙,邓三星,刘越奇,李克强,吕勇杰(黄河交通学院 河南省智能制造技术与装备工程技术研究中心,河南焦作,454950)0 引言随着中国汽车数量逐年增加,智能交通成为当前科研研究的热点,其中人工智能技术和图像识别技术得到快速发展。车牌智能识别技术在智能停车场收费管理、小区门禁管理等领域有广泛的应用12。通过单片机控制技术和图像识别技术结合,设计一种基于OpenMV的车牌识别系统,通过OpenMV 模块进行车牌图像准确识别,并能够进行语音播报,且能通过OLED 模块显示车辆入场的计时提示、出场的缴费提示,从而达到车牌识别系统智能控制的目的。1 系统硬件电路设计1
2、.1 设计思路车牌识别系统的硬件部分由主控芯片STM32F103、OpenMV 模块、OLED 显示模块、语音模块以及电源等模块构成。系统通过摄像头进行车牌图像采集,然后由主控芯片STM32 进行图像处理,输出识别结果。单片机根据识别结果计算停车时长以及费用,并驱动语音模板播报数据,最后将检测数据实时显示在OLED 中。1.2 最小系统设计车牌识别系统的单片机最小系统由STM32F103C8T6芯片和相应的外围电路组成。STM32F103C8T6 芯片是由2.03.6 V的直流电压供电3。该芯片是STM32 系列64位引脚和128K flash,采用单线串行输出,以及JTAG 接口方式,具极高
3、性能、极低价格、极低功耗等优点。晶振电路是单片机运行的一个重要因素。由于晶振电路的频率稳定性极好,而且这类电路能有效抵御外界因素的不利干扰,所以我们通常选择晶振电路来产生系统参考频率。使用晶振电路产生的频率可以保证其频率精度。STM32F103C8T6 单片机最小系统包含1个8MHz 晶振、2个22pF 电容等,它是维持系统正常稳定运行的基本电路。电路组成如图1所示。图1 STM32最小系统电路图1.3 OpenMV 车牌识别模块车牌识别系统的图像识别模块选用OpenMV,它是一款小巧,低功耗,低成本的摄像头模块4,其主要应用于机器视觉领域。其核心为STM32F427,在紧凑的硬件模块上,集成
4、OV7725 摄像头芯片,可采用C 语言高效实现机器视觉算法5。OpenMV 使用的STM32F427 硬件资源丰富,可 提 供UART、I2C、SPI、PWM、ADC、DAC、GPIO 接口,扩展外设功能比较方便6。USB 接口用于将OpenMV IDE连接到计算机,以提供编程帮助、调试和固件升级。1.4 显示模块车牌识别系统的显示模块采用OLED12864 模块,用于车牌信息、停车计时与计费信的显示。OLED12864 显示器分辨率为12864, 屏幕尺寸为0.96 寸7。单片机系统地将控制电平信号输入给显示模块中控制其显示的内容,且该系统都由这种方式将所产生的数据显示在这些模块上面。OL
5、ED12864 液晶显示屏原理图如图2所示。图2 显示模块电路图1.5 语音播报模块车牌识别系统识别车辆车牌信息后,经常需要在车辆进出的时候需要播放特定的语音信息。因此本系统需要选择一款性价比超级高,播放语音的音质特别好的语音播报的模块,系统通过串口控制且有4 路通道,电压范围8 24V的喇叭。语音播报模块电路如图3所示。图3 语音播报模块电路2 系统软件设计2.1 主程序设计系统开机后,首先初始化数据,基于STM32 和OpenMV 对车牌信息进行相应的识别工作。如果检测到信号,就通过AD 转换传递给单片机处理,然后驱动语音模块播报入场信息,单片机刷新OLED,完成车牌号显示。当第一次识别到
6、车牌号,判定为车辆入场,开始计时,并语音播报:“你好,欢迎停车”。第二次识别到车牌号,判定为出场,停止计时,并将停车时长显示在OLED 显示模块上,并将停车费用显示在OLED 屏上,同时语音播报:“一路顺风,欢迎下次光临”。系统主程序流程图如图4所示。图4 系统主程序流程图2.2 子程序设计图像识别程序通过OpenMV 对车牌的图像信息进行拍摄以及识别,识别结果经过模块处理传输至单片机进行判断,执行的过程如图5所示。OLED 显示程序设计主要是按照OLED的操作来进行程序编写,即按照写指令、写数据,写地址的方式对需要写入的数据依次进行写入。设计语音播报模块,根据单片机处理识别结果之后驱动模块进
7、行对应的入场、出场语音播报。图5 OpenMV数据采集子程序流程图3 系统调试3.1 软件调试编程软件选择Keil 4 软件,采用C 语言进行编程。首先编写车牌识别系统设计代码,然后在Keil 4 软件进行代码编译并调试,对出现的异常情况进行排查,编译成功将.hex文件下载至单片机,对程序烧录,最后进行OpenMV、语音播报模块、显示传感器子程序调试。观察车辆的入场和出场是否能够正确获取数据,驱动语音模块进行响应播报。程序编译效果如图6所示。图6 编译效果图主要源程序如下:#include sys.h#include delay.h#include FreeRTOS.h#include tas
8、k.h#include stdio.h#include sys_cfg.h#include log/log.h#include sys_boot.h/任务句柄TaskHandle_t StartTask_Handler;/任务函数void start_task(void *pvParameters);TaskHandle_t LED0Task_Handler;/任务函数void led0_task(void *pvParameters);int main()HAL_Init(); /初始化HAL库HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYG ROUP_
9、4);Stm32_Clock_Init(RCC_PLL_MUL9);/设置时钟,72M_HAL_RCC_GPIOA_CLK_ENABLE();_HAL_RCC_GPIOB_CLK_ENABLE();_HAL_RCC_GPIOC_CLK_ENABLE();_HAL_RCC_TIM1_CLK_ENABLE();_HAL_RCC_TIM2_CLK_ENABLE();_HAL_RCC_TIM3_CLK_ENABLE();_HAL_RCC_DMA1_CLK_ENABLE();_HAL_RCC_AFIO_CLK_ENABLE();/使能I/O 复用时钟 /使能ADC1 时钟delay_init(72);
10、/初始化延时函数log_init();sys_boot(); /*系统启动*/return(1);void start_task(void *pvParameters)taskENTER_CRITICAL(); /进入临界区vTaskDelete(StartTask_Handler);/删除开始任务taskEXIT_CRITICAL(); /退出临界区/LED0 任务函数void led0_task(void *pvParameters)float dis = 0;while(1)printf(1111);vTaskDelay(1000);3.2 硬件调试系统首先利用OpenMV 通过对大量车
11、牌图像样本进行训练,生成模型,提高系统对车牌图像的识别效率和正确率。模型训练好之后,将OpenMV 模块对准测试的车牌号就可以进行识别。训练测试效果如图7所示。图7 训练测试效果图利用OpenMV 对车牌图片训练过程中,识别到某个字符时,拉高相应OpenMV 引脚的电平。STM32 单片机在检测对应引脚电平过程中,检测某引脚为高电平,判定为识别到对应的车牌,然后由主控芯片向OLED12864 显示模块发出指令,显示车牌信息。具体识别过中,首先对车辆进行进场识别,OpenMV正确识别车牌信息后,OLED12864 显示模块显示欢迎停车与车牌信息,如图8所示。图8 车辆进场识别效果图车辆出场时,O
12、penMV 再次对车辆信息进行出场识别,正确识别车牌信息后,OLED 12864 显示模块显示停车时长,并自动计算费用,如图9所示。图9 车辆出场识别效果图4 结语仿人机器人的步态行走设计,利用STM32 单片机来控制开源舵机控制器,进而操作舵机,完成仿人机器人的行走、转弯、翻滚动作,可实现在线调试与脱机运行,动作相对稳定、姿态标准。仿人机器人脱机调试时,能够做到断开与上位机的连接后,脱机自动运行编写好的动作组文件,各模块配合运行平稳,舵机角度可无级调节、扭矩大,能胜任一些较复杂动作,动作运行流畅,但是也存在一些问题,例如受限于电池包的重量体积等,故机器人续航时间较短,不能连续长时间运行,这些都需要在后期的改进中逐步优化,本设计为国内外相关仿人机器人的研究提供了一些借鉴。基于图像识别的车牌识别系统利用OpenMV 模块和STM32F103C8T6 单片机,完成图像识别硬件电路设计和软件流程设计,通过大量车牌样本数据的训练,得到训练模型,能够实现车辆进场和出场的快速车牌识别,并通过设计语音播报模块进行语音播报提示,最后通过OLED12864 模块显示车辆停车时间,并可实现自动计费功能,初步实现车牌识别系统智能控制效果,为智能停车场提供参考案例。 -全文完-