网站大量收购闲置独家精品文档,联系QQ:2885784924

改进的KMeans算法实现车牌字符的分割.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验 改进的K-Means算法实现车牌字符的分割 车牌识别的一般过程:车牌定位--- 字符分割--- 字符识别。本实验实现了前两步。 车牌定位从大体上分为两种,基于灰度和基于底纹,本程序结合了以上两种方法实现了车牌精确定位,即先基于灰度图像得到一个大概的位置,然后再根据底纹实现精确定位。不失一般性,本人设计了只针对蓝底白字(车牌有四种:蓝底白字、黑底白字、白底黑字、黄底黑字)的车牌设计了算法,现实中,蓝底白字占了车牌的绝大多数。 字符分割是本实验的重点。车牌分割有很多方法, 如神经网络算法、水平投影、点阵结构等。因为车牌识别要求是实时,要求具有很快的响应速度。所以字符分割这一步对车牌字符的最终识别和整个程序运行效率有很重要的影响,本实验基于K-Means聚类算法思想实现了字符分割,因为车牌规定是7位的,所以K取7。另外本实验对K-Means算法进行了改进,充分考虑了初始点的设置及迭代结束条件。实验结果证明这种改进的K-Means算法实现车牌字符分割是快速、有效的。 整个算法用VC++6.0实现。 一、实验目的 (1)掌握图像数据挖掘的基本方法 (2)K-Means聚类算法完成车牌字符分割(重点) 基本功能要求: (1)实现车牌的精确定位 (2)对K-Means聚类算法进行改进,即如何进行初始点和迭代条件的确定,快速完成车牌字符分割。 三、算法设计 本算法分为二部分,车牌定位和字符分割。车牌定位的各个函数、算法思想是图像处理和模式识别课程中重要讨论的内容,这里只作了简单介绍。本实验着重讨论如何基于K-MEANS算法思想实现车牌字符分割。 程序执行流程如下: 1、车牌定位 (1)读取车牌图片 用OnBmpopen()函数实现 (2)车牌定位的各函数说明 车牌的定位由一系列函数完成, 各函数说明如下: OnRgbtogray();//彩色转成灰度 为了降低计算复杂度,一般将彩色转换为灰度,公式:gray = 0.3*red + 0.59*green + 0.11*blue(数字图像处理 岗萨雷斯) Onjunhenghua();//均衡化 为了增强图像对比,采用了均衡化操作(图像工程(上) 章毓晋) OnBianYuanJianChe();//边缘检测 此函数利用了Sobel算子检测车牌和字符的边缘(数字图像处理 岗萨雷斯)。因为粗略定位需要是根据这些边缘来定位的。 OnEzbz();//二值化 用数组记录图片的可能区域 OnHxqy();//粗略定位,给出候选区域 根据记录的信息完成车牌的粗略定位,之所以说是“粗略”是因为车牌周围的点是车牌识别的噪音,所以根据车牌的边缘来实现精确定位是很难的。 OnQyqd();//基于纹理定位 根据上一步的结果,得到了车牌的大概位置,再根据车牌的底色为蓝色(对于其它三种情况分类判断即可,本实验只针对蓝色底纹)这一特点,可以实现车牌的精确定位。判别条件如下: hl=2*b-r-g80 r表示像素的红色分量,g表示绿色分量,b表示蓝色分量 (这里的80是根据不断实验得出的阀值) 2、K-Means 聚类算法实现车牌字符分割 改进的K-Means算法实现步骤: Step1 每个字符代表一个类。因为车牌有7个字符(如图所示)组成,故设置7个聚类中心, 为了能在较少的次数下收敛,对K-Means进行了改进,即类的初始点不是随机选取,而是根据车牌的特点取值,如: 对于车牌字符横坐标: oldposition[0][0]=left+width/12;//第一个字符位置离车牌左边约1/12*车牌宽度 oldposition[i][0]=oldposition[i-1][0]+2*width/15;//后一个字符离前一个字符约1/15宽度 对于车牌字符纵坐标 oldposition[i][1]=bottom+height/2;//每一个车牌的纵坐标大约是车牌高度的一半 这样设置的理由:由于车牌的像素坐标都是整数,所以坐标用整型变量,这大大提高了算法执行效率。以上设置保证了初始点在各类内,如图所示:红点代表初始点的大概位置,这样设置初始点后,只要经过几次迭代就会收敛。即中心会移到各字符的中心位置。 Step2 扫描所有字符像素,按照距离最近原则,对车牌像素进行归类:d=(x-oldposition[i][0])2+(y-oldposition[i][1])2 公式中x,y是当前扫描的像素坐标,oldposition[i][0],oldposition[i][1]是聚类中心的x,y坐标,离i类中心坐标最近,就把该像素归到i类,本程序用不同的颜色表示不同的类,如国所示的最后分类结果: Step3 完成一次归类后,重新计算各类中心坐标: newposition[i][0

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档