历史上的今天
返回首页

历史上的今天

今天是:2025年08月17日(星期日)

2021年08月17日 | 基于stm32的车牌识别设计

2021-08-17 来源:eefocus

系统介绍

使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO)。STM32进行了16倍频。识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配。

识别过程分析


1.图像采集:

通过OV7670摄像头进行图像采集,采集的图像大小为320*240像素,像素格式为RGB565。每个像素由两字节组成,第一字节的高五位是Red,第一字节的低三位和第二字节的高三位组成Green,第二字节的低五位是Blue。


2.二值化:

二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色),让整个图片呈现出只有黑色和白色的效果。二值化后的图像中灰度值范围是0或者255。

怎样让像素点的灰度值转为0或者255?假如灰度值为220的一个像素点,二值化后应该为0还是255?这时候需要设定一个阈值来对像素点进行设置。

常用二值化方法:
1、取中值
设置阈值为127,灰度值小于127的为0,大于127的为255。这样设置计算量小,计算快。缺点也严重:在不同的图像中,颜色分布差别大,处理效果也不会很好。

程序开始之前设置R,G,B的阈值,通过阈值判断将像素设置为全黑(0x0000)或者全白(0xFFFF).同时根据色彩的变化记录每一行的颜色跳变点,由此识别出车牌区域。

2、取平均值
像素点平均值 = (像素点1灰度值 + 像素点2灰度值 + …… + 像素点n灰度值) / n


3、双峰法
此方法适用于具有明显双峰直方图的图像,不适合直方图中双峰差别很大或双峰间的谷比较宽广而平坦的图像。该方法认为图像由前景和背景组成,在灰度直方图上,前景和背景会形成高峰,在双峰之间的最低谷处就是阈值。


3.识别车牌区域:

根据上一步的二值化,由于车牌区域跳变点多,由此可以得出车牌区域。分别记录车牌区域的上下高度。然后通过RGB-HSV颜色转换,识别出车牌区域的左右边界。


4.字符分割:

我国常见车牌以及排列顺序大部分都是按照如下设计的:汉字、英文字母、点、英文字母、阿拉伯数字、阿拉伯数字、阿拉伯数字、阿拉伯数字。基于这个规律,以及图像采集高度一致,设计了如下的分割方法:
   1、在内存中开辟七个长为车牌长的七分之一和宽为车牌宽的区域
   2、从车牌图像长边的巾问向下开始扫描车牌图像,并把扫描到的所有的点灰度值复制到0区域的第四个区域对应位置上。然后再从上向下扫描刚扫描过这一努的左边或右边,直到所扫描的这一峰上的所有点的灰度都是0时为止,并把这一竖认为是字符的分离处。
   3、切割第五到第七个字符。方法就是,切割完了第四个字符之后,再依次扫描剩下的空间,直到所扫描的这一竖上的所有点的灰度值不全为0时,认为是字符的开始并依次扫描直到所扫描的这一竖上的所有点的灰度值全为0时认为是字符的结束。
   4、切割第三到第四个字符。这两个字符的切割方式与第五到第七个字符一样。
   5、切割第一到第二个字符。当第三个字符切割完之后,我们将遇到一个点,我们也把它看作一个字符,只不过这个点扫描之后就不要了。扫描完这个点之后,我们来切割第二个字符,它的切割方式与前面一样。切割完了第二个字符之后,再向左扫描,直到所扫描的这一竖上的所有点的灰度值不全为0时,认为是字符的开始,并依次扫描直到所扫描所有剩下的,并填到相应的位置,直到剩下的空间填满。经过粗分割后,可以得到一些单个字符区域和多余的空间。下一步我们将把这些多余的空间去掉。这将更有利于下一步字符的识别。

去除图像上多余空间:

车牌上的字符经过了粗切割所得到的是一些单的字符,但在分配空间时是按照车牌的宽和长的七分之一来分配的;所以这个空间可能大于字符应该占的空问。所以,要将多余空间去除。对于第一个字符从第一行开始向下扫描,把那些一行中所有的点的灰度值全为0的点去掉,直到扫描到有一行不全为0时为止。然后再从第一列开始向右扫描把那些一列中所有的点的灰度值全为0的点去掉,直到扫描到有一列不全为0时为止。接下来从最后一行开始向上扫描,把那些一行中所有的点的灰度值全为0的点去掉,直到扫描到有一行不全为0时为止。最后从最后一列开始向左扫描把那些一列中所有的点的灰度值全为0的点去掉,直到扫描到有一列不全为0时为止。重复上面的步骤完成剩下字符的切割

根据二值化的结果,以及记录的跳变点位置,对字符进行分割,同时记录字符的左右边界。


5.字符匹配:

对分割出来的字符进行归一化处理,这里用到图片的扩大算法,扩大之后逐一的去进行字符匹配。字符模板事前通过字模软件转换成二进制数据保存在数组中。最后根据匹配结果相似度最大的做为输出结果。

归一化图像就是要把原来各不相同的字符统一到同一尺寸。因为扫描进来的图像中字符大小存在较大的差异,而相对来说,统一尺寸的字符识别的标准性更强,准确率自然也更高。具体算法如下:先得到原来字符的高度和宽度,与系统已存字模的数据作比较,得出要变换的系数,然后根据得到的系数按照插值的方法映射到原图像中。


推荐阅读

史海拾趣

Custom Components Inc公司的发展小趣事

在CCI的发展历程中,人才培养和团队建设始终是公司发展的重要保障。公司注重员工的个人成长和职业发展,为员工提供多样化的培训和发展机会。

同时,CCI还建立了完善的激励机制和福利制度,激发员工的工作热情和创造力。通过加强团队合作和文化建设等方式,公司营造了一个积极向上、充满活力的工作氛围。这种良好的团队氛围不仅提高了员工的工作效率和满意度,也为公司的持续发展提供了有力的人才保障。

Cretex Companies Inc公司的发展小趣事

在电子行业的早期,Cretex Companies Inc.凭借对半导体技术的深入研究和创新,迅速崭露头角。公司研发出一款具有高效能、低功耗特点的芯片,这一技术突破使得电子设备的性能大幅提升,同时降低了能耗。凭借这一优势,Cretex的产品在市场上获得了广泛认可,公司规模逐渐扩大。

Elma Electronic Inc公司的发展小趣事

Elma Electronic Inc公司在电子封装市场拥有显著的领导地位。从VME/VME64x到Rugged COTS封装,该公司凭借其创新的设计和制造技术,成功地在多个细分市场取得了领先地位。这种领导地位不仅体现在产品的多样性上,更在于其为客户提供的高质量、可靠性和性能优异的产品。

杰力(EMC)公司的发展小趣事

杰力(EMC)公司成立于XXXX年,由一群具有丰富电子行业经验的专业人士创立。公司初期专注于功率组件和集成电路(IC)的设计与开发,以满足不断增长的电子市场需求。通过引进先进的生产设备和工艺,杰力迅速建立起一条高效的生产线,并开始为一些小型电子厂商提供定制化的产品。随着产品质量的不断提升和客户口碑的积累,杰力逐渐在市场中树立了良好的品牌形象。

Gang Song Electronics Co Ltd公司的发展小趣事

GainSpan公司成立于行业技术日新月异的时代,专注于超低功耗WiFi系统芯片和模块的设计、开发和制造。其创始团队凭借对物联网(IoT)市场的敏锐洞察,认为低功耗技术将是未来智能家居、可穿戴设备和工业物联网等领域的关键。通过不断的技术研发,GainSpan逐渐在行业内建立了自己的技术优势,为后来的并购奠定了基础。

DFRobot公司的发展小趣事

在机器人和开源硬件领域取得一定成绩后,DFRobot开始关注教育市场。他们发现,越来越多的学校和教育机构开始引入机器人和编程课程,以培养学生的创新能力和实践能力。于是,DFRobot推出了一系列针对青少年和创客爱好者的教育产品,如机器人套件、3D打印机等,并通过举办各类竞赛和培训活动,吸引更多的学生和教师参与。这一举措不仅拓展了公司的业务领域,也为公司的长期发展奠定了人才基础。

问答坊 | AI 解惑

原来我们的汽车是如此不堪一击

实在不忍看一幕幕倒下的人类,看看这一幅幅废墟中的汽车已经让人不寒而栗,心惊胆战,珍惜生命,珍惜拥有。…

查看全部问答>

网络半球摄像机工程使用的三个步骤

  关键字:网络半球摄像机   网络半球摄像机在工程实施方面主要有三个方面:一是布线,利用网络布线来传输图像;二是互联网接入,实现远程监控;三是参数设置,主要涉及到一些网络参数。   布线   安装网络半球摄像机要充分利用建筑内外 ...…

查看全部问答>

ds1302读取只有三个能显示正确,怎么回事,实在检查不出问题所在

Write_Ds1302Byte(0x8f,0); 1。 sec = BCDToDEC(Read_DS1302Byte(SEC_READ));       Delay(100); 2。 min = BCDToDEC(Read_DS1302Byte(MIN_READ));               & ...…

查看全部问答>

文件系统过滤驱动中关于IRP_MJ_CREATE文件路径的重定向问题???

如题,我想在IRP_MJ_CREATE截获创建的文件路径,并修改重定向到U盘上创建,就是文件的转存!如有可行代码请多多提示,大牛帮帮忙啊!!! …

查看全部问答>

串口通讯校验码问题(全部家当80分求助!!!!)

各位大侠帮忙分析下,下列几组数据采用了什么校验算法,          02 |01 3A 3A |79 14 |03   (02,03 是起始,结束。79,14 估计是校验码)         02 01 3B 3B 5A 04 03 ...…

查看全部问答>

keil 公司的软件uVision-51打开文件时显示的是乱码问题

在windows环境下使用Keil公司的软件uVision-51,打开文件时显示的文件夹名和文件名是乱码,例如“uVision51 files”  显示成\"UVISIO~1\",以致后面的操作无法进行。是什么原因?如何解决?…

查看全部问答>

那儿有PC架构的开发板买?

有带多个声音通道的吗?比如16路音频输出????…

查看全部问答>

MSP430的感想

MSP430的感想 有学习MSP430的想法很长时间了,可是由于多种原因一直没有如愿。希望这次能和当年学51一样坚持下去。…

查看全部问答>

为什么程序下不进板子里?

试了不下百来次了,就成功了四次。也不知道是什么原因。估计这可能是驱动的问题,但是我重装又重启,仍然没用。我使用的是usb连接。请各位高手分享下经验。小弟不胜感激!!!…

查看全部问答>

基于单片机的手机移动电源设计

最近快赶上大四毕业,做毕业设计,设计题目《基于单片机的移动手机充电源》。 浏览诸多网站,做电源者甚多,做移动电源的似乎没有许多,借此机会,与大家进行讨论。 查询网上资料,做手机电源的芯片有很多,说说我了解到的两个芯片吧。 MAX1898 ...…

查看全部问答>