车牌图像定位与识别

合集下载

车牌识别原理

车牌识别原理

车牌识别原理
车牌识别是指通过图像处理和模式识别技术,对车辆的车牌进行自动识别和文字提取的过程。

其原理可以概括为以下几个步骤:
1. 图像预处理:从摄像头获取的图像需要进行预处理,包括去噪、灰度化、二值化等操作。

去噪主要是为了减少图像中的干扰信息,而灰度化和二值化则是将图像转换为黑白二值图,方便后续处理。

2. 车牌定位:在经过预处理后的图像中,需要找到车牌所在的位置。

常用的方法有基于边缘检测、颜色分析和形状匹配等。

边缘检测可以提取图像中的边缘信息,颜色分析可以根据车牌的颜色特性进行筛选,形状匹配可以通过匹配车牌的形状特征来定位。

3. 字符分割:在定位到车牌后,需要将车牌上的字符进行分割。

常见的方法有基于边缘投影和垂直投影的字符分割算法。

边缘投影是通过检测字符边缘的变化情况来实现分割,垂直投影则是通过统计字符列中像素的数量来实现分割。

4. 字符识别:分割后得到的单个字符需要进行识别。

字符识别主要是通过模式识别技术,例如用神经网络、SVM等算法进
行训练和匹配。

训练集中包含了各种不同字符的样本,识别时将样本与待识别字符进行比对,找到最匹配的字符。

5. 结果输出:识别出的字符需要进行校验和整理,确保识别准
确无误。

最后将识别结果输出为文字或数字,用于后续的车辆管理和系统应用。

综上所述,车牌识别主要通过图像预处理、车牌定位、字符分割、字符识别和结果输出等步骤实现对车牌的自动识别和文字提取。

通过不同的算法和技术优化,可以提高识别的准确率和实时性,提升车牌识别系统的性能和可靠性。

通过计算机视觉技术实现车牌识别的方法介绍

通过计算机视觉技术实现车牌识别的方法介绍

通过计算机视觉技术实现车牌识别的方法介绍车牌识别是一种应用广泛的计算机视觉技术,它可以通过图像处理和模式识别算法,将车辆的车牌信息自动提取出来。

随着计算机视觉技术的不断发展,车牌识别技术已经成为智能交通系统、停车管理系统、安防监控系统等领域中不可或缺的一部分。

本文将介绍一种基于计算机视觉技术实现车牌识别的方法。

首先,车牌识别的流程可以分为图像获取、图像预处理、车牌定位、字符分割和字符识别等几个步骤。

其中,图像获取是车牌识别的第一步,可以通过摄像机、监控摄像头等设备来获取车辆图像。

在图像预处理阶段,主要是对图像进行去噪、增强等操作,以提高后续步骤的准确性。

常用的图像预处理算法包括灰度化、直方图均衡化、滤波等。

接下来是车牌定位,即在预处理后的图像中准确定位到车牌区域。

车牌通常具有一定的几何特征,如宽高比、颜色、边缘等,可以利用这些特征来进行定位。

常用的车牌定位算法有基于颜色特征的方法、基于纹理特征的方法等。

在车牌定位之后,需要对车牌进行字符分割,将车牌中的字符分割开来。

字符分割是车牌识别过程中一个关键的步骤,准确的字符分割可以提高后续字符识别的准确性。

常用的字符分割算法有基于连通区域的方法、基于边缘检测的方法等。

最后,是字符识别,即对分割后的字符进行识别。

字符识别可以采用基于模板匹配、基于统计模型、基于深度学习等不同的方法。

其中,基于深度学习的字符识别方法,如卷积神经网络(CNN)等,在最近几年取得了很大的突破,能够达到较高的识别准确率。

除了上述几个基本步骤外,还有一些其他的技术可以辅助车牌识别,如目标跟踪、光照补偿等。

目标跟踪可以在车辆行驶过程中对车牌进行实时跟踪,光照补偿可以解决光照变化对车牌识别结果的影响。

总的来说,通过计算机视觉技术实现车牌识别需要经过图像获取、图像预处理、车牌定位、字符分割和字符识别等多个步骤。

每个步骤都有不同的算法和技术可以选择,根据具体的应用场景和需求来设计和优化车牌识别系统。

Report(车牌定位识别几种方法比较)

Report(车牌定位识别几种方法比较)

几种车牌定位识别方法的比较车牌识别系统是智能交通系统的一个重要组成部分,一个典型的车牌识别系统一般包括图像预处理、车牌定位与提取、字符分割和字符识别等几大模块。

其中车牌定位是车牌识别中的关键,车牌定位的成功与否直接影响是否能够进入车牌识别以及车牌识别的准确率。

目前,车牌定位的主要方法有:①基于灰度图像的车牌定位方法;②基于小波变换的车牌定位方法;③基于形态学的车牌定位方法;④基于神经网络的车牌定位方法;⑤基于支持向量机的车牌定位方法等。

这些算法,在某些特定条件下,识别效果较好。

但在恶劣条件下,综合一些诸如天气、背景、车牌磨损和图像倾斜等干扰因素的影响,还不能完全满足实际应用的要求,有待进一步研究。

各种车牌定位方法的思路、方法和优缺点比较:①基于灰度图像的车牌定位方法:灰度数字图像是每个像素只有一个采样颜色的图像。

这类图像通常显示为从黑色到白色的灰度。

为了便于车牌定位,将该图像转换成二值图像,即只有黑色和白色两种颜色的图像。

此方法是应用车牌的如下特点:车牌牌照的字符和背景的对比度比较大,对应于车牌区域的水平灰度变化比较频繁;再者车牌一般挂在汽车的缓冲器上或附近,并靠近图像的下部,干扰一般比较少。

根据以上特点,使用靠近水平方向的一阶差分运算,以突出灰度变化频繁的区域. 其一阶差分运算的算式为:g(i,g)=f(i,i)-f(i,j+1),式中,i=,2,3... m:m为图像的宽度;j=1,2 ,3…,n :n为图像的宽度。

再对图像的水平差分图像g(x ,y) 的灰度值沿水平方向累加后做投影,可得投影图:水平方向累加后投影的算式为:T(i) = ∑n j=1 g(i,j)。

从车牌照是一个矩形这一特点, 我们可以判断它所对应的水平投影图与车牌的形状相仿,是一块较为独立的矩形区域,从水平投影图中可以看车牌位置基本对应子图中从下到上的第一个较大的波蜂,车牌投影值区域大致对应干上述波峰值上、下邻域的波谷之间所包含的投影值区域,且这两个波谷大致对称于波峰,波峰和波谷的变化率较大. 在这个过程中最重要的是确定选择哪个波峰,如果这个波峰的两个波谷之间的值的高度都大于某一个设定的值,并且两个波谷之间的宽度大致等于车牌照的高度,就认定它所确定的区域就是车牌的水平位置. 对于车牌垂直方向的定位算法:一般情况下,车牌的底色和字符的颜色的对比度很大, 而且在一个相对范围较小的范围内变化比较频繁,通过这个特征确定车牌垂直方向. 该方法对质量较高的图像有很好的定位,不过对于图像中车前和车牌附近的车辆背景过多,容易导致错误的车牌定位。

车牌识别流程

车牌识别流程

车牌识别流程
车牌识别是一种通过图像处理技术识别车辆车牌号码的技术,
它可以广泛应用于停车场管理、交通违章监测、智能交通系统等领域。

下面将介绍车牌识别的流程。

首先,车牌识别的流程通常包括图像获取、图像预处理、车牌
定位、字符分割和字符识别五个步骤。

图像获取是车牌识别的第一步,它通过摄像头获取车辆的图像。

在图像获取的过程中,需要考虑光线、角度、距离等因素,以确保
获取清晰、准确的车牌图像。

接下来是图像预处理,这一步是为了提高车牌图像的质量,包
括去噪、灰度化、边缘检测、图像增强等处理。

通过图像预处理,
可以使车牌图像更加清晰,有利于后续的车牌定位和字符识别。

第三步是车牌定位,也称为车牌检测,其目的是在经过预处理
的图像中准确定位出车牌的位置。

车牌定位通常采用边缘检测、形
态学处理、颜色定位等技术,以找到车牌的位置和大小。

然后是字符分割,即将定位到的车牌图像中的字符进行分割。

字符分割是车牌识别中比较困难的一步,因为不同车牌的字符数量和形状各异,需要通过算法来准确分割出每个字符。

最后一步是字符识别,也称为光学字符识别(OCR),其目的是对分割后的字符进行识别。

字符识别通常采用模式识别和机器学习算法,将字符映射成文本信息。

总的来说,车牌识别流程包括图像获取、图像预处理、车牌定位、字符分割和字符识别五个步骤。

通过这些步骤,可以实现对车辆车牌号码的准确识别,为智能交通系统和车辆管理提供便利。

汽车车牌定位识别概述

汽车车牌定位识别概述

汽车车牌定位识别概述汽车车牌定位识别技术的发展得益于计算机视觉技术的进步和硬件设备的不断更新。

自从20世纪80年代末期开始,随着计算机技术的发展,人们开始研究如何利用计算机自动识别车牌。

最初的方法是通过车牌字符的特征提取和模式匹配来实现,但是这种方法在实际应用中存在一些问题,比如对于光照条件、角度和车辆速度的不同会导致识别结果的准确度下降。

随着深度学习技术的兴起,特别是卷积神经网络(Convolutional Neural Network,CNN)的发展,汽车车牌定位识别技术得到了显著的进步。

CNN可以通过学习大量的车牌图像来自动提取图像特征,并通过训练模型来识别不同类型的车牌。

这种方法不仅可以提高识别的准确性,还可以适应不同的光照和角度条件。

汽车车牌定位识别技术的应用非常广泛。

首先,在交通安全领域,汽车车牌定位识别可以帮助交警自动检测和记录违反交通规则的车辆,比如闯红灯、超速等。

这种技术可以大大提高交通管理的效率和准确性,减少人为差错。

其次,在停车场管理中,汽车车牌定位识别可以帮助自动识别道闸前的车牌信息,实现自动出入场的管理。

这不仅方便了车辆的出入,还可以提高停车场的管理效率。

另外,在安防领域,汽车车牌定位识别可以帮助监控系统自动追踪和识别特定车辆的位置和行动轨迹,有助于犯罪侦查和预防。

汽车车牌定位识别技术通常包括以下几个步骤。

首先,对车辆图像进行预处理,包括图像去噪、图像增强等。

然后,利用目标检测算法来定位车牌的位置,常用的方法包括边缘检测、颜色分割等。

接下来,对定位到的车牌进行字符分割,将车牌中的字符单独分离出来。

最后,利用字符识别算法对分割后的字符进行识别,常见的方法包括模板匹配、字符特征提取等。

虽然汽车车牌定位识别技术已经取得了很大的进展,但是在实际应用中仍然存在一些挑战。

首先,不同车牌的形状和颜色差异较大,车牌的角度和光照条件也会导致识别的准确性下降。

其次,特定地区的车牌字符种类较多,字符的形状和位置也有差异,这对识别算法提出了更高的要求。

停车场识别车牌的原理

停车场识别车牌的原理

停车场识别车牌的原理停车场识别车牌是利用计算机视觉技术和图像处理算法来实现的。

下面我们将从图像采集、车牌定位、字符分割、字符识别、比对入库、匹配查询和通道管理等方面来详细介绍停车场识别车牌的原理。

1.图像采集图像采集是停车场识别车牌的第一步。

通常使用高清晰度的摄像头对停车场中的车辆进行拍摄,并获取车辆的图像信息。

在采集图像时,需要注意摄像头的角度和位置,以确保拍摄到的车牌区域清晰可见。

同时,还需要考虑光照条件、车牌所在位置以及车牌区域的背景等因素。

2.车牌定位车牌定位是在图像中确定车牌区域的位置。

首先,可以利用颜色和形状等特征进行初步筛选,排除与车牌无关的区域。

然后,通过车牌的特定形状和字符布局等特点,对筛选后的区域进行进一步的判断和定位。

在实际应用中,车牌定位的精度会受到多种因素的影响,例如光照条件、车牌污损、字符重叠等,这些问题需要算法进行优化和改进。

3.字符分割字符分割是在定位后的车牌区域中对每个字符进行分割。

由于车牌中的字符排列有一定规律,因此可以利用这个特点进行字符分割。

首先,可以通过垂直投影法等算法,将车牌区域中的字符分割成单个字符的候选区域。

然后,利用字符的宽度、高度、倾斜度等特征进行进一步的筛选和确认,排除干扰项,最终得到准确的字符分割结果。

4.字符识别字符识别是将分割后的字符转换成机器可读的字模,并与已知的车牌号码进行比对。

字符识别通常采用深度学习和神经网络等算法来实现。

在训练阶段,利用大量已知的车牌号码数据集进行训练,让模型学会将字符图像转换为数字。

在识别阶段,将分割后的字符输入到已经训练好的模型中进行预测,得到相应的字符编码,再与数据库中的车牌号码进行比对,判断是否匹配。

5.比对入库比对入库是将识别后的车牌信息与数据库中的信息进行比对,实现车辆入库管理。

通常,将识别的车牌号码与数据库中已有的车牌信息进行比对,如果匹配成功,则将车辆信息添加到停车场管理系统中,实现自动化的车辆入库管理。

车牌识别(一)-车牌定位

车牌识别(一)-车牌定位

车牌识别(⼀)-车牌定位在对车牌识别过程中,常⽤的⽅法有:基于形状、基于⾊调、基于纹理、基于⽂字特征等⽅法。

⾸先基于形状,在车牌中因为车牌为形状规格的矩形,所以⽬的转化为寻找矩形特征,常常是利⽤车牌长宽⽐例特征、占据图像的⽐例等。

基于⾊调,国内的车牌往往是蓝底⽩字,可以采⽤图像的⾊调或者饱和度特征,进⼊⽣成⼆值图,定位车牌位置。

基于纹理特征⾃⼰还没有基础到。

基于⽂字特征往往是根据⽂字轮廓特征进⾏识别,原理是基于相邻⽂字轮廓特征、⽐例进⾏定位车牌位置。

⼀、图像⼆值化正如前⾯⽂章所⾔,⾸先进⾏获取图像⼆值化特征,本⽂采取了根据图像亮度特征,提⾼对⽐度,进⾏可以清晰获取⽂字的图像,为下⼀步的⽂字轮廓识别打好基础。

1.1 算法流程伪代码1、图像转化为HSV图像,获取V通道图像2、提⾼对⽐度3、V图像⾼斯滤波,去除噪声4、图像⼆值化程序源码:def get_colorvalue(image):height, width, shape = image.shapeimage_hsv = np.zeros((height,width), np.uint8)image_hsv = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)image_hue, image_saturation, image_value = cv2.split(image_hsv)return image_valuedef enhance_contrast(image):kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))img_tophat = cv2.morphologyEx(image, cv2.MORPH_TOPHAT,kernel)img_blackhat = cv2.morphologyEx(image, cv2.MORPH_BLACKHAT, kernel)image_plus_tophat = cv2.add(image, img_tophat)image_plus_blackhat_minus_blackhat = cv2.subtract(image_plus_tophat, img_blackhat)return image_plus_blackhat_minus_blackhatdef preprocess(srcimage):image_value = get_colorvalue(srcimage)image_enhance = enhance_contrast(image_value)image_blur = cv2.GaussianBlur(image_enhance, (5,5), 0)# _, image_binary = cv2.threshold(image_blur, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)_, image_binary = cv2.threshold(image_blur, 100, 255, cv2.THRESH_BINARY )cv2.imwrite('image_binary.png',image_binary)return image_binary1.2 算法分析在实验中在获取通道图像时,发现可以利⽤图像饱和度图像进⾏定位。

智能交通系统中的车牌识别技术使用教程

智能交通系统中的车牌识别技术使用教程

智能交通系统中的车牌识别技术使用教程智能交通系统的发展使得城市交通管理变得更加高效和准确。

其中,车牌识别技术在智能交通系统中扮演着重要的角色。

它能够识别车辆的车牌号码并与车辆信息进行匹配,提供实时的交通管理和监控。

本文将介绍智能交通系统中车牌识别技术的使用教程,包括设备选择、安装配置、图像处理和使用注意事项等内容。

一、设备选择和安装配置1. 车牌识别相机选择:在选择车牌识别相机时,首先要考虑其适用环境和性能要求。

根据实际情况选择适合的相机类型,包括固定相机和移动相机两种。

固定相机适用于固定道路设备安装,如停车场和路口监控系统。

移动相机适用于移动监控任务,如巡逻车辆和交通事故勘察。

2. 安装配置:在安装车牌识别相机时,需要考虑相机的安装位置和角度,以保证拍摄车牌的清晰度和稳定性。

同时,还要确保相机与其他设备的连接稳定可靠,如服务器和监控中心。

二、图像处理1. 图像采集:车牌识别相机会拍摄车辆经过时的图像。

为了获得清晰的车牌图像,可以采用以下几种方法:合理调整相机的曝光度和对比度;使用红外光源提高夜间拍摄效果;通过设置合适的焦距和光圈来提高图像的清晰度。

2. 图像预处理:车牌识别前需要进行图像预处理,包括去噪、灰度化、边缘检测和图像增强等步骤。

去噪可以使用中值滤波或均值滤波等方法;灰度化可以将彩色图像转化为灰度图像;边缘检测可以使用Sobel、Canny等算法;图像增强可以通过直方图均衡化或灰度拉伸等方法提高图像质量。

3. 车牌定位与分割:车牌识别的关键步骤是车牌定位与分割。

通过利用图像处理技术,可以在图像中准确地定位和分割出车牌区域。

常用的方法包括基于颜色特征的车牌定位和基于形状特征的车牌定位。

4. 字符识别:在车牌分割后,需要对车牌上的字符进行识别。

字符识别可以采用模板匹配、神经网络和机器学习等方法。

其中,机器学习方法如卷积神经网络(CNN)在字符识别中有较好的效果。

三、使用注意事项1. 数据准备:为了提高车牌识别的准确性,需要准备大量的车牌图像数据进行模型训练和测试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专业综合实验报告----数字图像处理专业:电子信息工程班级:姓名:学号:指导教师:2014年7月18日车牌图像定位与识别一、设计目的利用matlab实现车牌识别系统,熟悉matlab应用软件的基础知识,利用其解决数字信号处理的实际应用问题,从而加深对理论知识的掌握,巩固理论课上知识的同时,加强实践能力的提高,理论联系实践,提高自身的动手能力。

同时不断的调试程序也提高了自己独立编程水平,并在实践中不断完善理论基础,有助于自身综合能力的提高。

二、设计内容和要求车牌识别系统应包含图像获取、图像处理、图像分割、字符识别、数据库管理等几个部分,能够完成复杂背景下汽车牌照的定位分割以及牌照字符的自动识别。

这里,只要求对给定的彩色车牌图像变换成灰度图像,用阈值化技术进行字符与背景的分离,再提取牌照图像。

三、设计步骤1.打开计算机,启动MATLAB程序;2.调入给定的车牌图像,并按要求进行图像处理;3.记录和整理设计报告四、设计所需设备及软件计算机一台;移动式存储器;MATLAB软件。

五、设计过程车辆牌照识别整个系统主要是由车牌定位和字符分割识别两部分组成,其中车牌定位又可以分为图像预处理及边缘提取模块和牌照的定位及分割模块;字符识别可以分为字符分割和单个字符识别两个模块。

(一)对图像进行图像转换、图像增强和边缘检测等1.载入车牌图像:原图2.将彩图转换为灰度图并绘制直方图:灰度图0灰度直方图3.用roberts 算子进行边缘检测:图像中车辆牌照是具有比较显著特征的一块图象区域,这此特征表现在:近似水平的矩形区域;其中字符串都是按水平方向排列的;在整体图象中的位置较为固定。

正是由于牌照图象的这些特点,再经过适当的图象变换,它在整幅中可以明显地呈现出其边缘。

边缘提取是较经典的算法,此处边缘的提取采用的是Roberts 算子。

roberts 边缘检测图4.图像实施腐蚀操作:腐蚀后图5.平滑图像:对于受噪声干扰严重的图象,由于噪声点多在频域中映射为高频分量,因此可以在通过低通滤波器来滤除噪声,但实际中为了简化算法也可以直接在空域中用求邻域平均值的方法来削弱噪声的影响,这种方法称为图象平滑处理。

平滑图像6.删除二值图像的小对象去除小对象(二)车牌定位:从预处理后的汽车图像中分割出车牌图像。

即在一幅车辆图像中找到车牌所在的位置。

行方向车牌区域定位后车牌区域(三)字符分割与识别1.车牌的进一步处理对分割出的彩色车牌图像进行灰度转换、二值化、均值滤波、腐蚀膨胀以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像,对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。

车牌灰度图像before filtering binary licence plateafter average licence plate expansion or corrosion the licence plate1582.字符分割在汽车牌照自动识别过程中,字符分割有承前启后的作用。

它在前期牌照定位的基础上进行字符的分割,然后再利用分割的结果进行字符识别。

字符识别的算法很多,因为车牌字符间间隔较大,不会出现字符粘连情况,所以此处采用的方法为寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割。

在此只进行了归一化处理,然后进行后期处理。

12345671234567六.总结根据车牌特点,一般采用的车牌定位算法有:1.边缘检测定位算法;2.利用哈夫变换进行车牌定位;3.色彩分割提取车牌等。

这里我采用的是边缘检测的方法实现定位的。

字符分割的方法也有多种:1. 基于聚类分析的字符分割;2. 投影分割的方法;3.基于模板匹配的字符分割等。

最常用的是投影分割,主要是针对在车牌定位,图像预处理后比较规则的车牌图像。

优点是程序逻辑设计简单,循环执行功能单一,便于设计和操作,程序执行时间短。

对现实事物的设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。

通过这次设计使我明白了自己原来知识还比较欠缺。

这个设计让我学到了很多东西,涉及到方方面面的知识,在这整个过程中我们查阅了大量的资料,得到了老师和同学的帮助,我在此对他们表示谢意。

七.源代码:(1)主程序:I=imread('car.jpg');figure(1),imshow(I);title('原图');I1=rgb2gray(I);figure(2),subplot(1,2,1),imshow(I1);title('灰度图');figure(2),subplot(1,2,2),imhist(I1);title('灰度直方图');I2=edge(I1,'roberts',0.18,'both');figure(3),imshow(I2);title('roberts边缘检测图');se=[1;1;1];I3=imerode(I2,se);figure(4),imshow(I3);title('腐蚀后图'); se=strel('rectangle',[25,25]);I4=imclose(I3,se);figure(5),imshow(I4);title('平滑图像');I5=bwareaopen(I4,2000);figure(6),imshow(I5);title('去除小对象'); [y,x,z]=size(I5);myI=double(I5);ticBlue_y=zeros(y,1);for i=1:yfor j=1:xif(myI(i,j,1)==1)Blue_y(i,1)=Blue_y(i,1)+1;endendend[temp MaxY]=max(Blue_y);PY1=MaxY;while((Blue_y(PY1,1)>=5)&&(PY1>1))PY1=PY1-1;endPY2=MaxY;while((Blue_y(PY2,1)>=5)&&(PY2<y))PY2=PY2+1;endIY=I(PY1:PY2,:,:);Blue_x=zeros(1,x);for j=1:xfor i=PY1:PY2if(myI(i,j,1)==1)Blue_x(1,j)=Blue_x(1,j)+1;endendendPX1=1;while((Blue_x(1,PX1)<3)&&(PX1<x))PX1=PX1+1;endPX2=x;while((Blue_x(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;endPX1=PX1-1;PX2=PX2+1;dw=I(PY1:PY2-8,PX1:PX2,:);t=toc;figure(7),subplot(1,2,1),imshow(IY),title('行方向车牌区域');figure(7),subplot(1,2,2),imshow(dw),title('定位后车牌区域');imwrite(dw,'dw.jpg');a=imread('dw.jpg');b=rgb2gray(a);imwrite(b,'gray licence plate.jpg');figure(8);subplot(3,2,1),imshow(b),title('车牌灰度图像');g_max=double(max(max(b)));g_min=double(min(min(b)));T=round(g_max-(g_max-g_min)/3);[m,n]=size(b);d=(double(b)>=T);imwrite(d,'binary licence plate.jpg');subplot(3,2,2),imshow(d),title('before filtering binary licence plate');h=fspecial('average',3);d=im2bw(round(filter2(h,d)));imwrite(d,'after average licence plate.jpg');subplot(3,2,3),imshow(d),title('after average licence plate');-se=eye(2);[m,n]=size(d);if bwarea(d)/m/n>=0.365d=imerode(d,se);elseif bwarea(d)/m/n<=0.235d=imdilate(d,se);endimwrite(d,'expansion or corrosion the licence plate.jpg');subplot(3,2,4),imshow(d),title('expansion or corrosion the licence plate');d=qiege(d);[m,n]=size(d);subplot(3,2,5),imshow(d),title(n);k1=1;k2=1;s=sum(d);j=1;while j~=nwhile s(j)==0j=j+1;endk1=j;while s(j)~=0&&j<=n-1j=j+1;endk2=j-1;if k2-k1>=round(n/6.5)[val,num]=min(sum(d(:,[k1+5:k2-5])));d(:,k1+num+5)=0;endendd=qiege(d);y1=10;y2=0.25;flag=0;word1=[];while flag==0[m,n]=size(d);left=1;wide=0;while sum(d(:,wide+1))~=0-wide=wide+1;endif wide<y1d(:,[1:wide])=0;d=qiege(d);elsetemp=qiege(imcrop(d,[1 1 wide m]));[m,n]=size(temp);all=sum(sum(temp));two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:)));if two_thirds/all>y2flag=1;word1=temp;endd(:,[1:wide])=0;d=qiege(d);endend[word2,d]=getword(d);[word3,d]=getword(d);[word4,d]=getword(d);[word5,d]=getword(d);[word6,d]=getword(d);[word7,d]=getword(d);figure(9);subplot(2,7,1),imshow(word1),title('1');subplot(2,7,2),imshow(word2),title('2');subplot(2,7,3),imshow(word3),title('3');subplot(2,7,4),imshow(word4),title('4');subplot(2,7,5),imshow(word5),title('5');subplot(2,7,6),imshow(word6),title('6');subplot(2,7,7),imshow(word7),title('7');[m,n]=size(word1);word1=imresize(word1,[40 20]);word2=imresize(word2,[40 20]);word3=imresize(word3,[40 20]);-word4=imresize(word4,[40 20]);word5=imresize(word5,[40 20]);word6=imresize(word6,[40 20]);word7=imresize(word7,[40 20]);subplot(2,7,8),imshow(word1),title('1');subplot(2,7,9),imshow(word2),title('2');subplot(2,7,10),imshow(word3),title('3');subplot(2,7,11),imshow(word4),title('4');subplot(2,7,12),imshow(word5),title('5');subplot(2,7,13),imshow(word6),title('6');subplot(2,7,14),imshow(word7),title('7');imwrite(word1,'1.jpg');imwrite(word2,'2.jpg');imwrite(word3,'3.jpg');imwrite(word4,'4.jpg');imwrite(word5,'5.jpg');imwrite(word6,'6.jpg');imwrite(word7,'7.jpg');(2)子程序:(getword子程序)function [word,result]=getword(d)word=[];flag=0;y1=8;y2=0.5;while flag==0[m,n]=size(d);wide=0;while sum(d(:,wide+1))~=0 && wide<=n-2wide=wide+1;endtemp=qiege(imcrop(d,[1 1 wide m]));[m1,n1]=size(temp);if wide<y1 && n1/m1>y2d(:,[1:wide])=0;if sum(sum(d))~=0d=qiege(d); % 切割出最小范围else word=[];flag=1;-endelseword=qiege(imcrop(d,[1 1 wide m]));d(:,[1:wide])=0;if sum(sum(d))~=0;d=qiege(d);flag=1;else d=[];endendendresult=d;子程序:(qiege子程序)function e=qiege(d)[m,n]=size(d);top=1;bottom=m;left=1;right=n;while sum(d(top,:))==0 && top<=mtop=top+1;endwhile sum(d(bottom,:))==0 && bottom>1bottom=bottom-1;endwhile sum(d(:,left))==0 && left<nleft=left+1;endwhile sum(d(:,right))==0 && right>=1right=right-1;enddd=right-left;hh=bottom-top;e=imcrop(d,[left top dd hh]);。

相关文档
最新文档