车牌定位程序

合集下载

车牌定位方法

车牌定位方法

摘要: 车牌定位是车牌自动识别技术中的一个关键问题,许多学者研究发展多种车牌定位算法。

简要介绍和比较了目前比较常见的几种车牌定位方法进行了。

车牌识别LPR(License Plate RecognitiON)技术作为交通管理自动化的重要手段和车辆检测系统的一个重要环节,能经过图像抓拍、车牌定位、图像处理、字符分割、字符识别等一系列算法运算,识别出视野范围内的车辆牌照号码;它运用数字图像处理、模式识别、人工智能技术对采集到的汽车图像进行处理,能够实时准确地自动识别出车牌的数字、字母及汉字字符,并以计算机可直接运行的数据形式给出识别结果,使得车辆的电脑化监控和管理成为现实。

车牌识别技术的任务是处理、分析摄取的视频流中复杂背景的车辆图像,定位、分割牌照字符,最后自动识别牌照上的字符。

为了保证汽车车牌识别系统能在各种复杂环境下发挥其应有的作用,识别系统必须满足以下要求:(1)鲁棒性:在任何情况下均能可靠正常地工作,且有较高的正确识别率。

(2)实时性:不论在汽车静止还是高速运行情况下,图像的采集识别系统必须在一定时间内识别出车牌全部字符,达到实时识别。

车牌识别技术的关键在于车牌定位、字符分割和字符识别三部分,其中车牌定位的准确与否直接决定后面的字符分割和识别效果,是影响整个LPR系统识别率的主要因素,是车牌识别技术中最为关键的一步。

目前车牌定位的方法多种多样, 归纳起来主要有基于纹理特征分析的方法、基于边缘检测的方法、基于数学形态学定位、基于小波分析定位以及基于彩色图像定位等,这些方法各有所长。

1、车牌目标区域特点车牌定位方法的出发点是利用车牌区域的特征来判断牌照,将车牌区域从整幅车辆图像中分割出来。

车牌自身具有许多的固有特征,这些特征对于不同的国家是不同的。

从人的视觉角度出发,我国车牌具有以下可用于定位的特征:(1)车牌底色一般与车身颜色、字符颜色有较大差异;(2)车牌有一个连续或由于磨损而不连续的边框;(3)车牌内字符有多个,基本呈水平排列,在牌照的矩形区域内存在丰富的边缘,呈现规则的纹理特征;(4)车牌内字符之间的间隔较均匀,字符和牌照底色在灰度值上存在较大的跳变,字符本身和牌照底内部都有比较均匀的灰度;(5)不同图像中牌照的具体大小、位置不确定,但其长宽比在一定的变化范围内,存在1个最大值和1个最小值。

车牌定位

车牌定位

《数字图像处理和模式识别》期末大作业题目:车牌定位班级:计算机应用技术姓名:杭文龙学号:61216020051.引言1.1 选题意义汽车牌照自动识别系统是以汽车牌照为特定目标的专用计算机视觉系统,是计算机视觉和模式识别技术在智能交通领域应用的重要研究课题之一,是实现交通管理智能化的重要环节,它可广泛应用于交通流量检测,交通控制与诱导,机场、港口、小区的车辆管理,不停车自动收费,闯红灯等违章车辆监控以及车辆安全防盗等领域,具有广阔的应用前景。

目前,发达国家LPR(汽车牌照识别技术License Plate Recognition, LPR,简称“车牌通”)系统在实际交通系统中已成功应用,而我国的开发应用进展缓慢,车牌识别系统基本上还停留在实验室阶段。

基于这种现状还有它广阔的应用前景,目前对汽车车牌的识别研究就有了深远的意义。

1.2 课题组成汽车车牌的识别过程主要包括车牌定位、字符车牌分割和车牌字符识别三个关键环节。

我在此文章中就只说明其中一点,就是车牌定位,其流程如下:原始图像图像预处理边缘提取车牌定位原始图像:由数码相机或其它扫描装置拍摄到的图像图像预处理:对动态采集到的图像进行滤波,边界增强等处理以克服图像干扰边缘提取:通过微分运算,2值化处理,得到图像的边缘车牌定位:计算边缘图像的投影面积,寻找峰谷点,大致确定车牌位置,再计算此连通域内的宽高比,剔除不在域值范围内的连通域。

最后得到的便为车牌区域。

本文以一幅汽车图像为例,结合图像处理各方面的知识,利用MATLAB编程,实现了从车牌的预处理到字符识别的完整过程。

各部分的处理情况如下:2.预处理及边缘提取图1 汽车原图图像在形成、传输或变换过程中,受多种因素的影响,如:光学系统失真、系统噪声、暴光不足或过量、相对运动等,往往会与原始景物之间或图像与原始图像之间产生了某种差异,这种差异称为降质或退化。

这种降质或退化对我们的处理往往会造成影响。

因此在图像处理之前必须进行预处理,包括去除噪音,边界增强,增加亮度等等。

请简述车牌识别的工作过程。

请简述车牌识别的工作过程。

请简述车牌识别的工作过程。

车牌识别是人工智能领域中重要的一部分,也是促进智慧停车技术发展的主要动力。

车牌识别通过触发设备、摄像设备、照明设备、图像采集设备、号码识别处理机、缴费终端等硬件设备以及车牌定位、字符分割、字符识别等软件算法来运作车牌识别过程,具体包含以下七个流程:1.图像采集:车牌识别根据车辆检测方式的不同,图像采集一般分为两种,一种是静态模式下的图像采集,通过车辆触发地感线圈、红外或雷达等装置,给相机一个触发信号,相机在接收到触发信号后会抓拍一张图像,该方法的优点是触发率高,性能稳定,缺点是需要切割地面铺设线圈,施工量大;另一种是视频模式下的图像采集,外部不需要任何触发信号,相机会实时地记录视频流图像,该方法的优点是施工方便,不需要切割地面铺设线圈,也不需要安装车检器等零部件,但其缺点也十分显著,由于算法的极限,该方案的触发率与识别率较之外设触发都要低一些。

2.预处理:车牌识别由于图像质量容易受光照、天气、相机位置等因素的影响,所以在识别车牌之前需要先对相机和图像做一些预处理,以保证得到车牌最清晰的图像。

一般会根据对现场环境和已经拍摄到的图像的分析得出结论,实现相机的自动曝光处理、自动白平衡处理、自动逆光处理、自动过爆处理等,并对图像进行噪声过滤、对比度增强、图像缩放等处理。

去噪方法有均值滤波、中值滤波和高斯滤波等;增强对比度的方法有对比度线性拉伸、直方图均衡和同态滤波器等;图像缩放的主要方法有最近邻插值法、双线性插值法和立方卷积插值法等。

3.车牌定位:车牌识别从整个图像中准确地检测出车牌区域,是车牌识别过程的一个重要步骤,如果定位失败或定位不完整,会直接导致最终识别失败。

由于复杂的图像背景,且要考虑不清晰车牌的定位,所以很容易把栅栏,广告牌等噪声当成车牌,所以如何排除这些伪车牌也是车牌定位的一个难点。

为了提高定位的准确率和提高识别速度,一般的车牌识别系统都会设计一个外部接口,让用户自己根据现场环境设置不同的识别区域。

常用车牌定位算法比较-文档

常用车牌定位算法比较-文档

常用车牌定位算法比较一、引言近年来,随着国民经济的快速发展,各种机动车辆不断增加,导致道路交通流量不断增大,交通事故、交通堵塞等问题日益严重,我们正面临着路网通行能力不能满足交通量增长需求以及交通运输安全等问题。

为了解决这些问题,国外发达国家相继推出了适应未来运输需求的智能交通系统,我国也将发展智能交通系统作为今后交通建设的一个重要发展方向。

作为现代智能交通系统中的一项非常重要的技术,汽车牌照自动识别技术是近几年来的研究热点。

车牌识别系统LPR既具有重要的理论意义,也具有良好的实际应用价值,并且在现实生活中已经得到一定程度的应用。

由于其具有良好的发展前景,所以车牌识别系统的开发和研制工作在国内外皆受到相当大的关注。

其涉及的领域包括模式识别、图像处理、人工智能、信息论、计算机等多门学科,是一门综合的应用技术。

车牌定位是车牌识别技术的第一个关键技术,定位的准确与否直接影响着车牌识别的准确率。

在车牌定位算法中,关键是寻找某种图像处理方法,使原始图像经过该算法的处理后能够清楚地显示出车牌区域,同时使图像中的非车牌区域消失或者减弱,从而能准确有效地定位出车牌在图像中的位置。

现在已经存在的车牌定位的方法有纹理分析、汽车牌照颜色变化、还有数学形态学等很多方法。

车牌定位不准的原因往往是因为含车牌图像中存在着大量噪声、图像的质量较差等原因造成的;而由于处理图像的数据过大,往往造成用时过多,从而不符合实时性要求。

因此,本文对目前存在的车牌定位算法进行探讨,希望能找出各种算法的优缺点,以便在现实中能更好的运用各种算法,更好的发挥各算法自身的优势。

二、目前存在的各种车牌定位算法目前存在的车牌定位算法主要有:边缘检测法、数学形态学法、基于彩色或者灰度处理的方法、行检测和边缘统计法、模糊逻辑法、Gabor滤波法、遗传算法、Hough变化和轮廓线法、自适应增压法、基于小波变换的方法、均衡变换法、神经网络法、脉冲耦合神经网络法、时延神经网络法、矢量量化方法等。

基于MATLAB的车牌定位系统(含全套CAD图纸)

基于MATLAB的车牌定位系统(含全套CAD图纸)

毕业设计(论文)题目:汽车牌照定位系统设计与开发诚信承诺书本人郑重声明:所呈交的毕业设计(论文)汽车牌照定位系统设计与开发是本人在导师的指导下独立进行研究所取得的成果,其内容除了在毕业设计(论文)中特别加以标注引用,表示致谢的内容外,本毕业设计(论文)不包含任何其他个人、集体已发表或撰写的成果作品。

班级:计科94学号:0921144作者姓名:2013 年5 月25 日无锡太湖学院信机系计算机科学与技术专业毕业设计论文任务书一、题目及专题:1、题目汽车牌照定位系统设计与开发2、专题二、课题来源及选题依据课题来源:导师指定选题依据:汽车车牌识别系统是近几年发展起来的计算机视觉和模式识别技术在智能交通领域应用的重要研究课题之一。

在车牌自动识别系统中,首先要将车牌从所获取的图像中分割出来实现车牌定位。

这是进行车牌字符识别的重要步骤,定位的准确与否直接影响车牌识别率。

车辆牌照定位与识别是计算机视觉与模式识别技术在智能交通领域应用的重要研究课题之一,该技术应用范围非常广泛,其中包括:(1)交通流量检测;(2)交通控制与诱导;(3)机场、港口等出入口车辆管理;(4)小区车辆管理;(5)闯红灯等违章车辆监控;(6)不停车自动收费;(7)道口检查站车辆监控;(8)公共停车场安全防盗管理;(9)计算出行时间等。

其潜在在市场应用价值极大,有能力产生巨大的社会效益和经济效益。

三、本设计(论文或其他)应达到的要求:软件、技术要求:在基于图像处理的车牌识别技术的基础上设计并开发了一个基于MATLAB的车牌定位系统通过编写MATLAB文件对各种车辆图像处理方法进行分析、比较,最终确定了车牌预处理、车牌粗定位和精定位的方法。

四、接受任务学生:计科94 班姓名宋开拓五、开始及完成日期:自2012 年11 月12 日至2013年5月25日六、设计(论文)指导(或顾问):指导教师签名签名签名教研室主任〔学科组组长〕签名研究所所长系主任签名2012年11月12日车辆牌照识别系统(vehicle license plate recognition system,简称LPR)是现代智能交通系统中的一项重要研究课题,是实现智能交通的重要环节,涉及领域异常广阔。

车牌定位

车牌定位

车牌定位本人的毕设收集资料a.一些算法1.基于纹理特征的车牌定位法车辆图像随拍摄环境的变化而不同,然而车辆牌照具有不因外部条件变化而改变的特征。

车牌内有多个基本成水平排列的字符,字符和牌照底在灰度值上存在跳变,因而车牌这个矩形区域(包括边缘)有丰富的边缘存在,呈现出规则的纹理特征。

在传统的基于灰度分割技术上,这些特征为车牌定位研究提供了切实可行的依据。

基于纹理分析的方法利用车牌区域内字符纹理丰富的特征定位车牌,它对于光照偏弱、偏强、不均匀性、牌照倾斜和变形等情况不敏感。

但该方法应用于背景复杂的图像时,容易把一些纹理分布较丰富的非车牌区域定位进来,产生包含车牌在内的车牌候选区域,这是纹理分析方法的缺陷。

2.基于神经网络的定位算法利用神经网络来定位车牌是一类较为常见的方法。

本算法的基本步骤和各模块的功能如下:(1)神经网络训练模块:收集一定数量的车牌图像样本,归一化后输入至BP神经网络进行训练,达到预定的正确率后,训练结束。

本模块将获得取两个波谷的区域为边界,确定车牌在行方向的区域。

在分割出的行区域内,用相同的方法统计列方向的底色像素点数量,取图像对蓝色或黑色的垂直投影的两个波谷为左右边界,最终确定完整的车牌区域。

通过定位修正能更准确找到车牌图像的上下边界。

基于特征统计定位算法的定位结果如图3-1所示。

从原始图像可以看到,车体和车牌颜色对比明显,车体主要为黑色,而车牌为蓝色背景,白色字体。

车体和车牌颜色的明显对比为算法提供了基础。

此算法缺陷在于:车牌颜色必须不同于图像整体背景色,否则无法提取出车牌区域。

5基于改进SobeI算子边缘检测法传统Sobcl算子只有水平和垂直两个方向模板;其中水平模板对水平边缘的响应最大,垂直模板对垂直边缘响应最大。

模板的方向表示灰度由低到高或由高到低的变化方向,而不是图像的实际边缘方向。

通过对车牌字符的垂直方向和斜线方向进行划分,本文采用六方向模板,算法实现的基本思想:构造六方向模板,对图像进行逐点计算,取最大值作为该点的新灰度值,该最大值对应模板的方向为该像素点的边缘方向。

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

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

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

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

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

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

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

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

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 算法分析在实验中在获取通道图像时,发现可以利⽤图像饱和度图像进⾏定位。

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)。

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

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

I=imread('18.jpg');I=imresize(I,[515,407]);figure(1),imshow(I);Scolor=I;Scolor = imread('3.jpg');%imread函数读取图像文件%将彩色图像转换为黑白并显示Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图像figure,imshow(Sgray),title('原始黑白图像');%Step2 图像预处理对Sgray 原始黑白图像进行开操作得到图像背景s=strel('disk',13);%strei函数Bgray=imopen(Sgray,s);%打开sgray s图像figure,imshow(Bgray);title('背景图像');%输出背景图像%用原始图像与背景图像作减法,增强图像Egray=imsubtract(Sgray,Bgray);%两幅图相减figure,imshow(Egray);title('增强黑白图像');%输出黑白图像bw2=im2bw(Egray,graythresh(Egray));figure,imshow(bw2);title('图像二值化');%得到二值图像SE=strel('disk',2);bw3=imerode(bw2,SE);grd=imsubtract(bw2,bw3);figure,imshow(grd);bg1=imclose(grd,strel('rectangle',[5,19]));%取矩形框的闭运算figure,imshow(bg1);title('图像闭运算[5,19]');%输出闭运算的图像bg3=imopen(bg1,strel('rectangle',[5,19]));%取矩形框的开运算figure,imshow(bg3);title('图像开运算[5,19]');%输出开运算的图像bg2=imopen(bg3,strel('rectangle',[19,1]));%取矩形框的开运算figure,imshow(bg2);title('图像开运算[19,1]');%输出开运算的图像%Step5 对二值图像进行区域提取,并计算区域特征参数。

进行区域特征参数比较,提取车牌区域[L,num] = bwlabel(bg2,8);%标注二进制图像中已连接的部分Feastats = imfeature(L,'basic');%计算图像区域的特征尺寸Area=[Feastats.Area];%区域面积BoundingBox=[Feastats.BoundingBox];%[x y width height]车牌的框架大小RGB = label2rgb(L, 'spring', 'k', 'shuffle'); %标志图像向RGB 图像转换figure,imshow(RGB);title('图像彩色标记');%输出框架的彩色图像lx=0;for L=1:numwidth=BoundingBox((L-1)*4+3);%框架宽度的计算hight=BoundingBox((L-1)*4+4);%框架高度的计算if (width>98 & width<160 & hight>25 & hight<50)%框架的宽度和高度的范围lx=lx+1;Getok(lx)=l;endendfor k= 1:lxL=Getok(k);startcol=BoundingBox((L-1)*4+1)-2;%开始列startrow=BoundingBox((L-1)*4+2)-2;%开始行width=BoundingBox((L-1)*4+3)+8;%车牌宽hight=BoundingBox((L-1)*4+4)+2;%车牌高rato=width/hight;%计算车牌长宽比if rato>2 & rato<4break;endendsbw1=bw2(startrow:startrow+hight,startcol:startcol+width-1);%获取车牌二值子图subcol1=Sgray(startrow:startrow+hight,startcol:startcol+width-1);%获取车牌灰度子图figure,subplot(2,1,1),imshow(subcol1);title('车牌灰度子图');%输出灰度图像subplot(2,1,2),imshow(sbw1);title('车牌二值子图');%输出车牌的二值图filename='241.jpg';I=im2gray(filename);%调用自编函数读取图像,并转化为灰度图象;tic %计时开始[height,width]=size(I);%预处理I_edge=zeros(height,width);% 创建height*width的矩阵for i=1:width-1 % 对每一列开始遍历I_edge(:,i)=abs(I(:,i+1)-I(:,i));% 每列的值赋为原图像中左右两列相减的绝对值(即梯度)end% 归一化处理(0~255)I_edge=(255/(max(max(I_edge))-min(min(I_edge))))*(I_edge-min(min(I_edge)));figureimshow(I_edge);title('归一化处理')[I_edge,y1]=select(I_edge,height,width); %%%%%%调用select函数figureimshow(I_edge);title('选择')BW2 = I_edge;%%%%%%%%%%%%%%%%%一些形态学处理SE=strel('rectangle',[10,10]);IM2=imerode(BW2,SE);%腐蚀figureimshow(IM2);title('腐蚀');IM2=bwareaopen(IM2,20);%开运算,消除细小物体figureimshow(IM2);title('开运算');IM3=imdilate(IM2,SE);%膨胀figureimshow(IM2);title('膨胀');%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%投影以粗略估计车牌位置p_h=projection(double(IM3),'h'); %调用projection函数if(p_h(1)>0)p_h=[0,p_h];endp_v=projection(double(IM3),'v'); %调用projection函数if(p_v(1)>0)p_v=[0,p_v];end%%%%%%p_h=double((p_h>5));p_h=find(((p_h(1:end-1)-p_h(2:end))~=0));len_h=length(p_h)/2;%%%%%p_v=double((p_v>5));p_v=find(((p_v(1:end-1)-p_v(2:end))~=0));len_v=length(p_v)/2;%%%%%%%%%%%%%%%%%%%%%%%%%%%%粗略计算车牌候选区k=1;for i=1:len_hfor j=1:len_vs=IM3(p_h(2*i-1):p_h(2*i),p_v(2*j-1):p_v(2*j));if(mean(mean(s))>0.1)p{k}=[p_h(2*i-1),p_h(2*i)+1,p_v(2*j-1),p_v(2*j)+1];k=k+1;endendendk=k-1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%进一步缩小车牌候选区for i=1:kedge_IM3=double(edge(double(IM3(p{i}(1):p{i}(2),p{i}(3):p{i}(4))),'canny')); [x,y]=find(edge_IM3==1);p{i}=[p{i}(1)+min(x),p{i}(2)-(p{i}(2)-p{i}(1)+1-max(x)),...p{i}(3)+min(y),p{i}(4)-(p{i}(4)-p{i}(3)+1-max(y))];p_center{i}=[fix((p{i}(1)+p{i}(2))/2),fix((p{i}(3)+p{i}(4))/2)];p_ratio(i)=(p{i}(4)-p{i}(3))/(p{i}(2)-p{i}(1));end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%对上面参数和变量的说明:p为一胞元,用于存放每个图像块的左上和右下两个点的坐标;%存放格式为:p{k}=[x1,x2,y1,y2];x1,x2分别为行坐标,y1,y2为列坐标%p_center为一胞元,用于存放每个图像块的中心坐标,p_center{k}=[x,y];x,y分别为行,列坐标%p_ratio为一矩阵,用来存放图像块的长宽比例%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%合并临近区域%%%%%%%%如果有多个区域则执行合并if k>1n=0;ncount=zeros(1,k);for i=1:k-1%%%需要调整if条件中的比例%%%需要调整%检查是否满足合并条件if(abs(p{i}(1)+p{i}(2)-p{i+1}(1)-p{i+1}(2))<=height/30&&abs(p{i+1}(3)-p{i}(4))<=width/15)p{i+1}(1)=min(p{i}(1),p{i+1}(1));p{i+1}(2)=max(p{i}(2),p{i+1}(2));p{i+1}(3)=min(p{i}(3),p{i+1}(3));p{i+1}(4)=max(p{i}(4),p{i+1}(4)); %向后合并n=n+1;ncount(n)=i+1;endend%如果有合并,求出合并后最终区域if(n>0)d_ncount=ncount(2:n+1)-ncount(1:n);%避免重复记录临近的多个区域。

相关文档
最新文档