本帖最后由 卑鄙的小黄人 于 2019-4-4 13:31 编辑
又是一年一度的ST峰会即将到来了,还是老地方-深圳,老时间4.26-4.27(今年是个福利时间,粉丝节放在了星期天,good!)。期待!
峰会即将到来,我也这里分享一下最近做的一个视觉识别系统——基于STM32F103的车牌号识别系统。源码可见附件。
一、介绍 在当今,经济发展越来越快,而我们出行的代步工具也不断更新。如今,汽车以成为整个社会必不可少的出行必需品了,也成为我们日常生活的必需品。这也造成了汽车数量的急剧增长,同时也给交通管理带来了各类问题。如何实现智能交通管理体系,成为人们关注的问题,而在其中实现车牌识别又是绕不开的环节。 本设计在硬件使用以STM32F103RBT单片机为主控模块,以AMS1117芯片为核心的组成电源电路和使用摄像头OV7670图像采集模块并以TFT彩屏显示完成硬件电路设计,在软件上,实现了对图像的采集图像的分析及识别,通过二值化处理和分析跳变点对车牌判定,并使用字符分割与匹配的方法最终完成车牌号的识别。 二、整体方案设计 本设计以STM32F103单片机作为主控器,采用了OV7670摄像头作为图像采集装置模块,stm32与OV7670以通信协议为基础,将OV7670摄像头采集到的图像以像素点为单位一个一个的传输给STM32F103单片机,实现图像的采集;采用了TFT_ILI9341 2.8作为显示屏。该设计的系统框图如下所示: 三、设计与实现 在软件设计中,首先先将所有外围器件包括单片机内部资源进行初始化设置,再接着进入死循环状态,即循环对车牌号识别与显示,其过程包括使用单片机控制OV7670图像采集模块对车牌图像信息进行采集,再对图像信息进行分析、运算,包括对图像二值化处理,对图像跳变点的分析和划线,在进行图像分割,计算字符的边界,最后与字符库进行匹配实现车牌号的识别并通过TFT显示屏显示。 (1)图像采集: 该设计通过OV7670带FIFO摄像头进行图像信息的采集,其能达到320*240的分辨率,采用RGB565图像协议格式。通过与STM32单片机的通信,将图像信息传送至单片机,完成图像采集,并经由单片机,于TFT显示屏显示。执行初始化程序与图像采集程序如下: OV7670_Gpio_Init(); // OV7670设置初始化 Data_Image_Capture(); // 图像采集子程序 (2)图像二值化 在对车牌号进行识别的过程中,为了便于单片机处理与计算,识别除车牌号,一般在此领域中,通常采用图像二值化的方法去降低图像的信息量,便于后面对图像所蕴含的图形、文字信息进行判断。即图像二值化便是通过选择合适的阈值,将原本彩色的图像,即多个灰度值的彩色图像经过对图像的处理,分析数值,将其转换成黑白双色二值化的图像。如此处理,使得图像信息更加简单明了,数据量更小,以凸显关键的图像信息。 该设计中采用OV7670图像采集装置模块用以采集图像信息,在其采集过程中,将其采集到的图像像素点进行二值化变换,分别设定R、G、B的阈值,即可实现全黑0x0000和全白0xffff两种色值的图像。并且通过程序计算,得出跳变点,以判断车牌区域。 (3)车牌区域的识别判断 在图像采集装置采集的图像信息中,采集到的图像信息,不仅仅包含车牌图像信息,往往参杂着其他干扰因素,所以如何准确判断车牌区域是至关重要的。通过对数字图像信息处理技术的学习,在当前判断车牌区域的方法大致有两种,第一种是将图像二值化,分析跳变点,判定车牌区域;第二种利用空间颜色深度的变化与车牌底色进行对比,实现对车牌区域分割、提取。 系统在执行完上一步操作之后,便对240方向跳变点进行函数分析,即执行240跳变点分析函数,以实现对车哎区域上、下边界 的判断。此过程首先便是对240方向先进行扫面,找出跳变点,通过跳变点,对其进行阈值的分析从而得到系统对车牌区域上、下边界的判断。再根据上下限横向画两条长的蓝色的线,标识车牌区域。 (4)字符分割 单片机在执行字符分割程序时,是通过获取每一个字符的左边界KK和右边界K进行字符分割。 (5)字符匹配 在执行完字符分割之后,再进行归一化处理。通过单片机的字符库的对比过程,对分割出来的字符在系统的数据库中的字符进行相似度匹配。 四、成果 全部搞定!以上就是基于STM32F103的车牌号识别系统了! ST峰会还是很好玩的,有许多很有创意的DEMO,也有许多著名大佬级人物可以交流想法,即使你不是搞设计,而是市场部,你也可以找到许多供应商或买家,很不错哦!
我的第一次:第二届ST峰会 我的第二次:第三届ST峰会 预祝第四届ST中国峰会顺利举办,圆满成功!也希望这样的好传统能够一直延续下去、碰撞出更多令人拍案叫绝的想法!
|