本设计以STM32F103RBT单片机为主控制器,控制OV7670摄像头(带FIFO)采集图像,通过模式识别匹配得到车牌识别结果,并显示在显示屏上。为了尽可能提高处理速度,STM32单片机被乘以16倍。识别的主要过程包括图像采集、二值化分析、车牌识别、字符分割和字符匹配五个过程。必要的地方还可以加入计时收费的功能,对车辆进行实时有效的管理。减少车辆过多带来的困扰,减轻城市交通带来的负担,对交通违法起到监督作用。
1、图像采集
图像由OV7670摄像头采集,采集图像尺寸为320*240像素,像素格式为RGB565。每个像素由两个字节组成,第一个字节的高5位为R,第一个字节的低3位和第二个字节的高3位组成G,第二个字节的低5位为b,图像由STM32单片机读取,数据经过特殊处理后显示在TFT显示屏上。
2、二元分析
在摄像头数据采集过程中,对每个像素进行二值化,即设置R、G、B的阈值。通过二值化,像素值分为全黑0x0000和全白0xffff。同时通过程序分析每条线的跳转点。分析跳转点的目的是识别车牌区域。
3、车牌区域的识别
通过二值化分析,找到每一行的跳转点。因为字符的原因,车牌区域的跳转点明显更多,大概在15个以上。通过对跳转点的分析和判断,可以识别出车牌区域的位置。下图左边的红色标记是每行的跳转点的数量。在这个系统程序中,有15个以上的跳转点。在连续线中有多个大于15的跳转点的位置,起始位置设置为车牌区域的上边界Y_up,结束位置设置为车牌区域的下边界Y_down。然后通过RGB-HSV颜色转换,识别出车牌区域的左边界X_left和右边界X-right。这样就可以得到车牌区域的准确边界,如下图所示。
4、字符分割
在识别出车牌区域后,再次对字符进行二值化分割。在处理过程中,得到每个字符的左边界kk和右边界K。如果分割的字符数为8,则分割更准确。如下图所示,垂直的蓝线是每个字符的边界标记。字符分割,为下一步字符匹配准备通用参数。
5、字符匹配
字符分割后进行归一化,然后逐个匹配每个字符。字符模板由模块取数软件提取并存储在程序中,其大小为24*50的单个像素。匹配后,具有最大相似度的对应字符被用作输出结果并被显示。
由于单片机容量有限,目前车牌识别的汉字只有六种:重庆、福建、北京、浙江、陕西、广东。买家可以通过改变程序来改变其他汉字。数字和字母都是可以识别的。
示意电路图
系统的电源是DC5V,接在STM32核心板的5V管脚上。在STM32核心板上,5V通过稳压芯片AMS1117变成3.3V电压,通过核心板引脚输出。3.3V是STM32芯片、摄像头模组、TFT彩屏的供电电压。焊接电路时,将摄像头模块和TFT彩屏连接到3.3V引脚,而不是5V引脚。