c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档
最近更新 2024年06月18日
资源编号 161

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

郑重承诺丨云炬网络提供安全交易、信息保真!
云炬公益:平台收入的50%以上将进行公益慈善捐赠(不定期公示):
详情介绍

牌的识别实验报告

一:实验背景

在交通管理过程中,通常采用视频监控方式对闯红灯和超速等违章车辆进行监督。对违章车辆,需要自动检测车牌信息,提取车牌号码,以便查找车主信息和监督管理。

二:实验原理及方法

通常车牌识别的过程包括图像的预处理、车牌定位、车牌分割、车牌识别四部分。

2.1 车牌预处理

在车牌识别系统中我们通过采集得到的图片一般是彩色图片,在加上实际环境以及硬件设施的影响,图片质量不高,图像的背景噪声等会影响字符的分割与识别,因此我们在车牌分割及识别之前一般会进行图像的预处理。

本实验中,车牌图像的预处理包括图像灰度化,图像均衡化以及图像中值滤波。

  1. 图像灰度化
    将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。
    本实验中根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.299R+0.587G+0.114B,以这个亮度值表达图像的灰度值。
  2. 图像均衡化
    均衡化原理是将原图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法。设图像均衡化处理后,图像的直方图是平直的,即各灰度级具有相同的出现频数(大体相同),那么由于灰度级具有均匀的概率分布,图像看起来就更清晰了。
c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

均衡化数学原理,已知一种重要的变换函数:累积分布函数(CDF),就是随机变量的概率分布函数,即: ,T(r)在区间0≤r ≤1中为单值且单调递增,
当0≤r ≤1时, 0≤ T(r)≤1。上式表明,当变换函数为r的累积直方图函数时,能达到直方图均衡化的目的。
均衡化步骤:(1)计算各灰度级出现的概率。(2)根据变换函数求新的灰度。(3)与灰度级拟合。(4)求新的灰度级出现的概率。

  1. 图像均值滤波

噪声对图像处理的影响很大,它影响图像处理的输入、采集和处理等各个环节以及输出结果。因此,在进行其它的图像处理前,需要对图像进行去噪处理。均值滤波方法是,对待处理的当前像素,选择一个模板,该模板为其邻近的若干个像素组成,用模板的均值来替代原像素的值的方法。

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

权系数矩阵模板:

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

2.2图像定位

车牌的定位主要是在经过图像预处理过程后的图像中确定车牌的具体位置。自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的区域,然后对该侯选区域做进一步分析、评判,最后选定最佳的区域作为牌照区域,并将其从图象中分割出来。

1. Sobel算子边缘检测

图像定位之前首先采用Sobel算子对图像进行边缘检测。

该算子包含两组3x3的矩阵,分别为横向边缘检测,Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数, 简单有效。

2. 行扫描算法车牌定位

目前,车牌定位主要有以下几种方法:基于颜色的分割算法;基于遗传算法的分割算法;基于边缘检测的分割算法,基于数学形态学的分割算法等等。

本实验中我采用了行扫描行算法进行车牌定位。行扫描算法是利用了车牌的连续特性,经Sobel算子边缘检测后的图像具有很白两种像素,车牌区域有连续7个字符,而且字符与字符之间的距离在一定范围内,因此车牌区域像素的0、1次数明显大于非车牌背景中的0、1跳变,因此定义从0到1或者重1到0为一个跳变,根据牌照区域相对于其它非车牌区域跳变多,而且间距在定范围内和跳变次数大于一定的阈值,就可以确定车牌的水平区域。 因为车牌的位置一般在下方,因此我们从下到上的顺序扫描,对图像的每一行进行从左向右的扫描,碰到跳变点记录下当前位置,在本试验中我们采用16为阈值,如果某行连续16个跳变点以上,就记录下起始点和终止点位置,如果连续有15行以上这样的跳变点,我们就认为该区域就是车牌预选区域。

接下来进行车牌的垂直定位,在车牌的水平区域中,最高行与最低行的差值即为车牌在图像中的高度,我国的车牌区域矩形的长高的比约为3-4倍,但是由于我们在信息采集过程中的各种情况以及水平定位时得到的车牌的高,这个倍数可能出现误差,对垂直定位产生一定的影响,我们在本实验中暂时取3.8倍的高低行之间的差值作为车牌的长,然后在我们取得的水平区域中,用车牌长、高的窗口从左到右移动,统计窗口中相邻像素0、1的跳变次数,当窗口移动到车牌位置时,跳变次数应该最大,这样既可找到车牌的垂直区域。

3.3车牌分割

要进行车牌分割,我们首先要对定位好的车牌进行一些预处理。在本实验中我们采用灰度化、二值化预处理车牌,然后采用一定的算法对车牌进行精确定位提取,得到精确定位的图像之后采用垂直投影法对车牌进行字符分割。

垂直投影的具体算法:对车牌进行垂直投影,得到车牌的垂直投影图(在本实验中我们采用计算白色像素点个数),在垂直投影图上从左侧到右侧检测每一个坐标的投影数值,在本试验中我们检测到的投影数值第一个出现大于3时,即是第一个投影区域的左边界,继续向右检测,检测到下一个大于3的地方时即是第一个投影区域的右边界,据此依次得出其余6个投影区域的边界。得到投影区域边界以后我们就可以进行字符分割。

需要说明一下的是在车牌分割之前的到的精确定位的图像的准确性以及在算法中的阈值的选择都对车牌分割至关重要,因此我们获取的精确定位图像以及在本试验算法中我们选取的阈值可能并不能够使每一个车牌都能够十分准确的进行分割,但是我们也应该尽量选择最佳的阈值,使算法能够适应大多数的图片。

3.4字符识别

在本实验中我采用模板匹配的方法进行车牌的字符识别。

在车牌分割阶段,我们的到了车牌的七个分割开的黑白图片,我们利用大量的车牌字符模板,然后通过代码进行模板图片的读入,依次与所有的模板进行匹配,通过for循环得到分割后的图片与模板不同点的个数,不同点个数最小时即匹配到了相应的字符,然后匹配结果输出,就得到了车牌识别的结果。

三:实验流程

  1. 总体实验流程
    车牌识别
    车牌定位
    车牌分割
    图片预处理
    获取车辆图片
  2. 主要实验流程
    1. 车牌粗定位
      Sobel算子边缘检测对图片从下向上逐行扫描,将每行像素跳变数存入array数组

      根据array数组进行水平定位

      垂直定位:确定车牌矩形,在水平定位区域用for循环计算车牌区域跳变数,选择最大跳变数的矩形作为车牌区域

      显示车牌定位结果

    2. 车牌分割
      粗定位后的车牌图像车牌图像灰度化、二值化预处理

      循环取得车牌图像水平白点个数,精确定位车牌上下界

      循环取得车牌图像垂直白点个数,精确定位车牌左右界

      确定车牌字符分割线,并存入数组

      在精确定位图片上添加辅助线,分割车牌字符并以此存储显示

    3. 车牌识别

逐个获取分割后的待识别图片

通过车牌字符的特点,利用for循环,逐一进行模板匹配,并依次将匹配结果存入数组中

利用自定义minNumber()函数,计算数组中匹配差值最小的值

车牌字符识别出来并显示

四:实验结果

  1. 主界面
c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档
  1. 打开图片
c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

3.灰度化

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

4.灰度均衡化

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

5.均值滤波

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

6.Sobel边缘检测

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

7.车牌粗定位

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

8.车牌预处理——灰度化

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

9.车牌预处理——二值化

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

10.车牌精确定位

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

11.车牌字符分割

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

12.车牌识别

c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档

五:实验说明

  1. 本试验默认在E盘中运行,因为车牌字符识别所需的模板在代码中有一定的路径,默认放在E盘本试验文件夹下,所以可以在运行测试时将整个文件夹直接放在E盘中就可以进行运行测试。
  2. 在本试验文件夹中我放了一些测试图片,可以用这些片进行测试,当然也可以用其他的。
  3. 试验中采用的算法跟大多数算法一样存在或多或少的缺陷,可能并不能准确识别全部车牌,识别率在80%左右。
  4. 本试验中的算法,例如:车牌定位的行扫描算法、车牌分割等算法是通过学习一些讲解车牌识别的论文之后思考写的,可能会存在一定的缺陷,如果什么地方不太合理,希望老师可以基于指导。
  5. 在进行在本实验中车牌定位之前的操作都是为车牌识别做准备的,其中必须要经过sobel边缘检测之后才能进行车牌定位,所以在测试时需要先进行边缘检测预处理操作才能点击车牌定位。试验测试时要先进行边缘检测,才能进行车牌定位,边缘检测是为车牌定位服务的。

参考文献:

  1. 李驰、苗顺占 - 《基于行扫描的车牌定位算法》 - 《科技信息》 - 2008 - 知网
  2. 王晓健 - 《车牌定位与字符分割算法研究及实现》 - 北京邮电大学 - 2009 - 万方
  3. 刘广起,郑晓势,张晓波 - 《基于图像纹理特征提取的车牌定位算法》 - 《中国图象图形学报》- 2005 - 知网
  4. 魏武,张起森,王明俊 - 《一种基于模板匹配的车牌识别方法》 - 《中国公路学报》 - 2001 - 知网
  5. 黄山 - 《车牌识别技术的研究和实现四川大学》 - 2005 - 万方
资源下载此资源下载价格为9.9云朵立即购买,云炬VIP季会员免费
客服微信:2743319061
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章资源,如无特殊说明或标注,均为本站网友和创作者贡献分享。如若本站内容侵犯了原著者的合法权益,可联系网站客服QQ2743319061删除。

云炬星球 期末真题 c#实现车牌识别系统,完整的源码,应用程序、测试模板图片以及实验报告文档 https://src.yunjunet.cn/161.html

常见问题
  • 放心亲,我们不会为了几十块钱的东西坏了名声!
查看详情
  • 方法一:点击“立即下载.”按钮,付款后在下载弹窗的虚线框的隐藏信息里获取 方法二:在正文底部使用VIP查看隐藏的解压密码 方法三:联系【云炬网络】公众号客服获取
查看详情
  • 付款后会出现“立即下载”按钮(点击即可下载),如果下载失败也可以联系客服发订单截图补发。
查看详情
  • 登录购买会多端同步购买记录,永久可以查看反复下载;非登录购买仅将购买记录保存到本地浏览器中,浏览器cookie清除后无法再次下载。先右上角点登录,然后点击微信图标可以快速授权注册登录^_^
查看详情
  • 可以试看。点击”查看演示“或“试看预览”按钮可以试读从资料目录中节选的部分内容,也可以自己指定想试看的内容。
查看详情
  • 原因一:本站所有资源已开启有效性检测(服务器24h全自动监测),当监测到下载链接无法访问时会提示“该资源已失效,请勿购买”,遇到这种情况可以联系客服修复失效的下载链接,或直接联系客服在淘宝下单购买即可。(检测原理:购买前服务器程序会预访问下载链接,响应值为200说明资源有效允许购买,响应值为404或502等报错说明资源失效禁止购买)。原因二:上传者未启用“下载”选项。
查看详情
发表评论
1 条评论

评论已关闭。

官方客服团队

为您解决烦忧 - 24小时在线 专业服务