基于STM32单片机的车牌识别

发布时间:2023-03-20  

系统介绍

   使用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.字符匹配:

   对分割出来的字符进行归一化处理,这里用到图片的扩大算法,扩大之后逐一的去进行字符匹配。字符模板事前通过字模软件转换成二进制数据保存在数组中。最后根据匹配结果相似度最大的做为输出结果。
   归一化图像就是要把原来各不相同的字符统一到同一尺寸。因为扫描进来的图像中字符大小存在较大的差异,而相对来说,统一尺寸的字符识别的标准性更强,准确率自然也更高。具体算法如下:先得到原来字符的高度和宽度,与系统已存字模的数据作比较,得出要变换的系数,然后根据得到的系数按照插值的方法映射到原图像中。

实物图


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    政策明确提出了大力推动智慧停车系统、自动识别车牌等高新技术的应用。简单来说,智慧停车的“智慧”就体现在:智能找车位+自动缴停车费。 那么,目前究竟如何实现智慧停车呢?我们就拿最常见的停车场来说吧。最主要的技术就是车牌识别......
    的每网络摄像机需要一条网线接到交换机)节省大量网线、节省布线人工成本,布线更美观,故障易查找; 3、摄像机前端集成目前最先进的视频检测算法,车牌识别可靠性高、车辆检测率行业领先,支持多车位同时识别(130万2车位,300万3车位......
    断发展的AI应用领域中,车牌识别作为最受欢迎的技术之一,被广泛应用于智能执法、停车管理和出入口控制等领域。除了识别的准确性外,广泛的识别范围——如对不同国家的车辆牌照支持以及特殊车牌的处理能力——在实......
    加于2021年4月14日-16日举办的慕尼黑上海电子展(Electronica China),展示其用于新一代物联网传感器以及可听设备的GAP AI 处理器,并与到场观众分享在边缘计算与人工智能......
    的自动驾驶系统。”Ross表示,“然而,这也是一项极其复杂的任务:它必须能够识别并预测交通情况和危险情况发生的可能性;同时还必须能够识别并避免危险情况发生。” 为了实现这一目标,人工智能......
    相关特征信息的提取与分析。在对车的识别分析应用上主要是车牌识别技术。车牌识别技术被广泛应用于各停车场出入口、高速公路收费站等地,近些年更是发展迅速:配合交通电子卡口系统,车牌识别......
    决方案由 AMD ZynqTM UltraScale+TM MPSoC 器件提供支持。这款智能解决方案能提升车牌识别的准确性,并实现停车位空置检测、车道堵塞、事故检测和违规停车执法等高级功能。 Sun......
    Systems Pte. Ltd. )正在部署一款基于AI的新型智慧停车解决方案,该解决方案由AMD ZynqTM UltraScale+TM MPSoC器件提供支持。这款智能解决方案能提升车牌识别的准确性,并实......
    决方案由 AMD ZynqTM UltraScale+TM MPSoC 器件提供支持。这款智能解决方案能提升车牌识别的准确性,并实现停车位空置检测、车道堵塞、事故......
    什么是计算机视觉 计算机视觉和机器视觉有何区别?;作为人工智能的关键领域之一的计算机视觉近期再次成为了热点,那么你真的了解什么是计算机视觉吗? 什么是计算机视觉 计算机视觉,英文Computer......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>