2008年12月30日星期二

基于粗糙集和BP网络的车牌字符识别

1、引言

  车牌字符识别是车牌识别系统中重要组成部分之一,是模式识别的一个应用领域,车牌字符样本集是字符集合的一个有限子集,包括汉字约 50个,字母A–Z,数字0–9,属于特定的有限字符集识别问题。目前最常用的车牌字符识别方法主要有模板匹配法、基于字符特征的识别方法和神经网络法 等。模板匹配法简单,实用于一些特定情况,如尺寸固定、车牌位置水平不发生旋转等情况,当车牌字符图象轻微扭曲变形、笔画粗细不均甚至缺损断裂时,容易产 生误识别。文献1作者把K近领法用到车牌字符识别中,K近领法是典型的统计学习方法,在分类领域中经常用到,主要思想是先对待识别字符进行特征提取、建 库,然后计算待测样本的特征与模式库中特征的相似度,最后根据判别函数来识别待测样本属于哪一类。基于字符特征的识别方法主要有PCA法和ICA法,文献 2就是采用了独立分量法(ICA)对车牌字符进行识别。神经网络方法具有较强的并行数据处理能力、容错能力和泛化能力。但是神经网络是一种弱学习算法,分 类精度也不高,文献3针对这一弱点提出了一种改进的BP神经网络方法用于车牌字符识别中。

  粗糙集(Rough Set)理论是波兰数学家Z.Pawlak于1982年提出的,是一种新的处理含糊性和不确定性问题的数学工具[4]。

  本文提出一种基于粗糙集和神经网络相结合的车牌字符识别方法,首先对车牌字符图象进行定位、预处理、分割以及归一化等操作,然后基于粗糙集理论对经过 归一化处理的二值化图象进行特征提取,构造决策表,并对其进行属性约简,最后用约简后的属性构造BP神经网络分类器。该方法通过粗糙集减少了条件属性个 数,简化了BP神经网络分类器的网络结构,提高了字符识别的泛化能力。

2、粗糙集相关知识[5,6]

  定义1. 设是一个信息系统,U表示对象的非空有限集合,称论域; = Φ,C称为条件属性集合,D称为决策属性集。具有条件属性和决策属性的信息系统称为决策表。,Va是属性a的值域;f表示是一个信息函数,它为每个对象的每个属性赋予一个信息值。

  定义2. 设集合,R是一个等价关系,称 = 为集合X的R下近似集;称为集合X的R上近似集。称集合 = 为X的R边界域;称= 为X的R正域;称= U-为X的R负域。

  定义3. 知识的依赖性可形式化地定义如下:令K=(U,R)是一个知识库,P、Q R。

  1) 知识Q依赖于知识P(记作PQ)当且仅当IND(P)IND(Q)。

  2) 知识Q与知识P等价(记作P≡Q)当且仅当PQ且QP。

  3) 知识Q与知识P独立(记作P≠Q)当且仅当PQ与QP均不成立。

  当知识Q依赖于知识P时,也可以说知识Q是由知识P导出的。

  有时候知识的依赖性可能是部分的,这意味着知识Q仅有部分是由知识P导出的,这可以由知识的正域来定义:令K=(U,R)是一个知识库,P、QR。

  当k==时,我们称知识Q是k度依赖于知识P的,记作PQ。当k=1时,我们称Q完全依赖于P;当0< <1时,称Q粗糙依赖于P;当k=0时,称Q完全独立于P。

  系数可以看作Q和P之间的依赖度。

3、车牌字符识别方法

  车牌字符识别是车牌识别系统中的核心内容,一般车牌字符识别包括如下步骤:首先对采集到的车牌图象进行定位、预处理、字符分割以及 归一化处理等,每个字符变成大小相同的字符,然后在归一化后的二值图象中进行特征提取,所提取的特征中并不是都同等重要,在保证属性集和决策集关系不变的 前提下,利用粗糙集对所采集到的特征进行属性约简。最后用约简后的属性作为神经网络的输入,构造神经网络字符分类器。字符识别原理如图1。


图1 字符识别原理



3.1 提取字符特征建立决策表

  字符特征的提取有多种方法,目前常用的方法有:逐像素特征提取法、骨架特征提取法、垂直方向数据统计特征提取法、13特征点提取法、粗网格特征提取法 等。本文采用粗网格特征提取法对归一化的二值图象进行特征提取。首先把字符平均分成16×16个网格,再把这16×16个网格的字符平均分成16个4×4 的象素大小的子图象,统计每一份内黑色像素点的个数,而每个网格反映的是字符的部分特征,所以需要把所有网格组合起来作为字符的统计特征,最后得到 16×16维的字符特征。然后以这16个特征作为条件属性,字符的种类作为决策属性。条件属性集为,属性值集合为,决策属性集为,即字符的真实值。

3.2 离散化决策表


  运用粗糙集理论时,要求决策表中的条件属性必须是离散化属性,本文采用遗传算法进行属性离散化。遗传算法是一种非常有效的搜索和优化技术, 有着隐含并行性、鲁棒性和全局搜索等特点,所以在粗糙集中应用遗传算法进行连续属性离散化,主要是由于其具有全局寻优能力,它将所有属性值编码成个体位 串,得到关于所有属性的全局离散化结构,避免了属性局部离散独立性所带来的弊端[7]。本文首先按照文献[8]介绍的方法求出候选断点集,从候选断点集中 选一个尽可能小的结果断点子集来对决策系统进行离散化。实验表明:最佳离散区间为3。

3.3 决策表的约简

  目前在决策表中的条件属性并不是同等重要的,在保证决策表不可分辨关系不变的前提下,对决策表进行属性约简。本文中利用知识的依赖性对决策表中的条件属性进行简化。具体算法如下:

  ⑴ 在原决策表T中计算根据条件属性划分的等价类,以及不同条件属性组合下划分的等价类

  ⑵ 计算根据决策属性D对论域划分的等价类

  ⑶ 根据相对约简和依赖度的定义,计算条件属性C和决策属性D的依赖度k,
k=(1)
  
  若k=1,则称决策属性D完全依赖于条件属性C,若0<k<1,则称决策属性D 粗糙依赖于条件属性C,若k=0,则称决策属性D完全独立于条件属性C。

  ⑷ 依次删除原决策表T中的每个条件属性Ci,并计算删除该条件属性后的正域,= ,则说明该属性Ci在决策表中是不必要的,C-{Ci}是C的D约简,C的D核也是C-{Ci},若,说明该属性在决策表中是必要的;

  ⑸ 当所有条件属性都经过步骤⑷处理后,将不必要的属性去掉,得到了约简后的决策表T’,在约简后的决策表T’中只有四个条件属性。

3.4 BP神经网络字符分类器的设计

  神经网络许多特性通过隐含层而体现出来,以字母、数字分类器为例,构造了含一个隐含层的三层BP神经网络,包括输入层、隐含层、输出层。具体算法如下[9]:

  输入 训练样本集T,由约简后的车牌字符属性构成

  输出 识别的车牌字符

  ⑴ 初始化各层的权系数和偏置。

  ⑵ 输入训练样本:输入T中的一个样本和期望输出

  ⑶ 正向传播过程:对给定训练模式输入,计算网络的输出模式。计算公式如下:

(2)


  其中为t时刻单元i与单元j间的权系数,θi(t)为t时刻单元j的偏置,为 时刻第k-1层单元i的输出。对于输入单元来说,输出等于输入,

  ⑷ 反向传播过程:ⅰ.计算每层单元的误差;ⅱ.修正权值和各单元偏置;

  输出层单元为:

 (3)



  隐含层单元为:

 (4)



  权系数修改:

(5)

(6)



  ⑸ 判断是否满足要求,若满足,算法结束,不满足,返回⑵(算法中m=3)。

4、字符识别实验及结果


  实验的编程环境是MATLAB7.0,车牌字符样本来自于随机拍摄,样本总数为300幅,训练样本为200幅,测试样本为100幅。训练次数为 1000次,网络的权值和阈值为随机选取,各层的激活函数依次为双曲正切S型函数tansig.m和线性函数purelin.m。本文采用了附加动量法, 各参数依次设定为:误差目标goal=10-3;学习速率η=0.1;学习速率的递增乘因子η_inc=1.15;学习速率的递减乘因子 η_dec=0.8;动量因子mc=0.95。图2为其中一幅车牌的识别结果。



图2 字符识别结果



  实验前每幅车牌均经过定位、预处理、分割和归一化等处理。然后分别经过三种不同方法构造的分类器,其中一种是直接用BP神经网络构建的分类器,另外一种是直接用粗糙集构造的分类器,最后一种是本文所提出的方法。实验结果如表1:

表1 实验结果



  从表1的约简结果和识别结果可见,只用BP神经网络得到的识别率是最低的,后两种方法识别率接近,说明增加属性冗余度对这粗糙集的影响不太大,但是利用粗糙集消除冗余属性有助于提高神经网络的识别率,进而提高网络的泛化能力。

5、结论

  只用BP神经网络构造分类器,神经网络不仅结构复杂,训练时间长,而且识别率较低;只用粗糙集构造车牌字符分类器,能够有效约简冗余属性,简化了决策 算法,提高了运行时间,但是算法自适应能力较弱;用粗糙集优化神经网络可以提高网络的泛化能力,简化网络结构,缩短训练时间,而且在识别率方面也有很大提 高。该方法对于正常无损坏车牌,识别率很好,对于长时间受外界因素影响而损坏的车牌,识别率还有待提高。(转自中华电子网)

没有评论:

发表评论

欢迎访问、交流!对本博客有何建议,请
来信告知!
本博内容来源于网络,如有不当或侵犯权益,请来信告知,将及时撤除!
如引用博客内容、论文,请注明原作者!

Google一下本博客

  • 《Getting Things Done》读书笔记 - 本文来自 inertial 原创投稿。 我第一次听说《Getting Things Done》这本书的时候误以为它和世面上的那些成功学书籍没什么区别,后来在不少书中看到了这个名字,也看见了很多人的推荐,由此产生了很大的兴趣。上个月正好有不少空闲,就抽时间把这本书读完了。 本来打算读英文原版,但是原版的生...
    5 年前
  • [原]Linux下编译使用boost库 - Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与...
    6 年前
  • [原]猎头、培训与咨询的价值(2)【补1】——北漂18年(93) - 【上期用手机写的,同时用语音输入转化成文字,错字较多,经好友霍师傅提醒本期重写,并增加一部分新内容】 简单谈下我对猎头、培训与咨询的看法。三样都干过,算是有些浅见。 猎头 简单的说就是人才中介。虽然在公司看来是可以直接解决现有企业问题的一个直接方法,但很多时候都不太管用。 猎头费一般是人才的一个月月...
    7 年前
  • OpenCV統計應用-Mahalanobis距離 - Mahalanobis距離是一個可以準確找出資料分布上面極端值(Outliers)的統計方法,使用線性迴歸的概念,也就是說他使用的是共變數矩陣以及該資料分布的平均數來找尋極端值的產生,而可以讓一群資料系統具有穩健性(Robust),去除不必要的雜訊訊息,這邊拿前面共變數矩陣的資料為例,並且新增了兩個點座標向量來做...
    15 年前
  • 努力推进模式识别实际产品的开发与应用 - Salu 无论是手写体识别、文档处理、人脸识别、基于内容的图片搜索、嵌入人工智能的搜索技术、虚拟网络社区、还是其它相关新科技下的信息整合领域,现在都在努力实用化。 前两年、即使现在还有很多人在抱怨说人脸的方法都不能用,但是就今年出现的和正在做的有关人脸识别实际应用的各种形式的产品可以说如雨后春笋。这是一个趋...
    16 年前