山东轻工业学院2012届本科生毕业设计(论文)
第三章 系统分析与设计
本系统是使用C#语言编写的车牌识别系统,基于模版匹配的车牌字符识别算法来解决车辆牌照识别问题,对于道路交通管理有着一定的实用价值。
3.1系统需求及功能分析
本车牌识别系统主要包括四个模块:图像预处理模块、车牌定位模块、字符分割模块、字符识别模块。
车牌识别系统结构如图3-1所示:
图3-1 车牌识别系统结构图
3.2功能模块设计 3.2.1图像预处理模块
本模块功能是对获取原始图像经过一系列如:灰度化、灰度均衡、高斯滤波等预处理,目的是尽可能的改变图像质量,为车牌区域定位与车牌识别做准备。将彩色图像用加权平均值法转换成灰度图像,直方图均衡增加图像对比,高斯滤波去除噪声干扰,通过以上处理,提高了图像的质量,强化了图像区域。
3.2.2车牌定位模块
本模块包含边缘检测和车牌区域定位两个子功能模块。为了突出汽车牌照的边缘,采用Sobel算法实现图像的边缘检测,寻找图像灰度值发生急剧变化的区
9
山东轻工业学院2012届本科生毕业设计(论文)
域;选择基于边缘检测和投影法相结合的定位方法,提取大致的需要的车牌区域;经过边界调整和去除边框等操作,进一步的精确车牌区域。
3.2.3字符分割模块
本模块功能是根据水平投影和垂直投影,从车牌区域中提取字符,进行字符归一化,统一字符图像的大小,为字符识别做好准备。
3.2.4字符识别模块
本模块功能是对提取后的字符进行编码后识别并输出。我们选用基于模板匹配算法首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。
3.3系统流程设计
本课题研制的车牌识别系统软件主要分为四大块,即图像预处理模块以及车牌定位、车牌字符分割和字符识别模块。
根据系统模块的划分,制定系统流程图如下图所示:
图3-2 系统流程图
原始图像 :载入由停车场数码相机或其它扫描装置拍摄到的图像。 图像预处理:对载入系统的图像进行灰度变换、高斯滤波等预处理以克服图
像干扰。
车牌定位 :进行边缘检测,计算边缘图像的投影面积,寻找峰谷点,大致
确定车牌位置,再计算此连通域内的宽高比,剔除不在域值范围内的连通域,最后得到车牌区域。
字符分割 :利用投影检测的字符定位分割方法得到单个的字符。 字符识别 :利用模板匹配的方法与数据库中的字符进行匹配从而确认出字
10
山东轻工业学院2012届本科生毕业设计(论文)
符,得到最后的汽车牌照,包括英文字母和数字。
3.4技术开发平台
合理选取开发工具,不仅会对系统的开发效率和周期产生重大影响,而且还有可能大幅度降低开发成本,并提高系统的稳定性和可维护性。车牌定位识别功能的开发属于一个较为复杂的图像处理程序,涉及到大量内存处理和与图像处理,因此对于该功能稳定性、可维护性以及系统开销问题要求极为严格。本系统的采用在VS2008 环境下基于C#语言的开发平台。在成熟的算法基础上迅速开展自己的工作,减少编程工作量,有效提高开发效率和程序运行的可靠性。
3.4.1 Microsoft Visual Studio 2008简介
Visual Studio 是微软公司推出的开发环境,Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。
Microsoft Visual Studio 2008是面向Windows Vista、Office 2007、Web 2.0的下一代开发工具,代号“Orcas”,是对Visual Studio 2005一次及时、全面的升级。 VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。使用Visual Studio 2008可以高效开发Windows应用。设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。同时Visual Studio 2008支持项目模板、调试器和部署程序。Visual Studio 2008可以高效开发Web应用,集成了AJAX 1.0,包含AJAX项目模板,它还可以高效开发Office应用和Mobile应用。
VS2008主要技术特点:可视化编程、支持面向对象技术以及支持.NET。VS2008提供了一系列可视化开发工具,如应用程序向导AppWizard、属性窗口等,通过使用可视化编程技术使得Wi ndows 编程更为直观、方便、快捷。VS2008支持的面向对象编程技术包装了windows内在的复杂运行机制,使得Windows编程更为简单易学。
11
山东轻工业学院2012届本科生毕业设计(论文)
第四章 系统功能与实现
本车牌识别系统主要包括四个模块,即图像预处理模块、车牌定位模块、字符分割模块、字符识别模块。下面将显示系统的主要功能模块。
4.1图像预处理模块
摄像时的光照条件,牌照的整洁程度,摄像机的状态(焦距,角度和镜头的光学畸变),以及车速的不稳定等因素都会不同程度的影响图像效果,出现图像模糊,歪斜或缺损,车牌字符边界模糊不清,细节不清,笔画断开,粗细不均等现象,从而影响车牌区域的分割与字符识别的工作,所以识别之前要进行预处理。
4.1.1图像灰度化 1、原理
彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统的执行速度,因此在对图像进行识别等处理中经常将彩色图像转变为灰度图像,以加快处理速度。由彩色转换为灰度的过程叫做灰度化处理。选择的标准是经过灰度变换后,像素的动态范围增加,图像的对比度扩展,使图像变得更加清晰、细腻、容易识别。
在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。加权平均法对彩色图像进行灰度化:
根据重要性及其它指标,将三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量进行加权平均能得到较合理的灰度图像。
f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j)) 公式(4-1)
本文对输入的图像进行循环扫描,根据灰度公式得到图像灰度,输出灰度图像。
2、代码实现
for (int y = 0; y < nHeight; ++y) {
for (int x = 0; x < nWidth; ++x) {
blue = p[0];
12
山东轻工业学院2012届本科生毕业设计(论文)
green = p[1]; red = p[2];
tt = p[0] = p[1] = p[2] = (byte)(.301 * red + .591 * green + .108 * blue);
rr[red]++;
gg[green]++; bb[blue]++; }
3、效果图
4、结果分析
gray[tt]++; p += 3; }
图4-1 打开的原始图像
图4-2 灰度化后的图像
13