研究车牌识别系统的朋友进来!(50分)

  • 主题发起人 主题发起人 cgh1970
  • 开始时间 开始时间
C

cgh1970

Unregistered / Unconfirmed
GUEST, unregistred user!
结交车牌识别系统的朋友!提供方法的朋友另开贴给分!
qq:11874770
email:cgh1970playicq.com
 
有一定程度关注。
看看这个:www.platedsp.com,对车牌识别很有研究
 
公司作过电子警察的车牌识别系统,不过核心部分不是自己开发的,是买国外的源代码的,
对方只提供dll和相关函数.不过识别性能还是不太理想,和拍摄环境有很大关系.
 
可以把你的设计先写一下,大家研究一下
 
我知道香港有一家公司专门做这个,而且拿了技术专利,可用于停车场的自动管理……
厉害哦!但具体的名字我老早就不记得了,因为是在一个介绍创业的电视节目上看见的。

其实说穿了(呵呵,我来冒充一下专家),关键技术就是这么几个:

1、摄影技术
这个就是硬件的问题了,跟软件本身没有太大的关系,顶多是个通讯接口罢了,
以目前的技术水平,只要肯出资,绝对不是问题。

2、识别问题
我们国内的OCR软件做得不错啦,汉字的识别率都达到了95%以上;
只是要实现完全自动化,识别率必须在99%以上,因此涉及一个算法,计算出
画面中车牌的大致位置(这就是人家的专利)。

所以,呵呵,以上都是废话!
 
不是废话,说地好![8D]
 
车牌识别方面的图像质量没法与OCR对比,说太高的识别率,内行会笑话你的!
 
各位大侠,不吵了。本人接触过。这里面还是有些技术含量的,我用过川大智胜的。做得不错。
 
大家如有兴趣可以联络一下!
 
大家出出主意呀,我现在也在做这类事情,不过不是为公司,纯粹是自己喜欢。大家多多灌水呀,好好讨论一下。我觉得一般的方法是:

1。图像录制(动态)
2。图像转换(BMP或者JMP)
3。套用模板(已经有的车牌模板,全国大约的车牌种类是7种或者8种,我指的是汽车车牌)
4。截取车牌标志(并且读取车牌颜色-车牌的颜色是非常有用的信息)
5。图像锐化,二值化处理,去噪。
6。按照字模识别(按照每个字单独识别)
7。然后输出识别数据

不知道这样对不对,我现在的问题是,如何得到车牌的位置信息,因为每个车牌安装的位置差异太大,而且有的可能是歪斜的,有的可能是扭曲的,有的可能是破损的,所以难度很大,而且在高速行驶中的识别更加难,不知道用高速多台摄影机容错使用,有没有用?
 
天使屁屁猪你好,我和你一样是个人喜欢,我们可以交个朋友吗?
 
有 www.stdwork.com
 
呵呵,看看.
 
我家马路口都装了4台摄象机,看来有人已经解决了呀,这里有这样的大虾吗?
 
其实车牌识别技术,大约5年多前,就已经有国外公司制作的成品了软件了,而且是全部的C++代码。现在就是国内,也有超过500家企业或者个人拥有这样的技术实力,但是我们现在在这里讨论的不是要和他们去抢生意,而是大家的兴趣爱好所致,大家都对这个车牌识别比较感兴趣,都想学习一下,不是说要干什么。

比如说播放器,浏览器,各式各样的管理系统太多的东西都已经有了,那么我们就没有必要学习了吗?

不是的。编程技术的提高总是在攻克了每一个难关以后才成长的,如果看到别人都有了,就放弃那么到时候自己什么都不会了。

希望大家继续灌水,同时也希望各位大侠们可以给我们一个学习的机会,我并不是说要全部公开源代码,这样也不现实,我的想法是你们可以介绍一下基本的运作方式,在我们碰到问题的时候给我们一些必要的帮助就可以了。在此谢谢你们。

我的第一个问题就是如何在一个图像中准确的定位车牌的位置。
 
同意楼上,如果是在一个固定位置来取相的话,可以有一个大体的位置来计算,但在马路口的话,这个位置可不好弄
 
还是来我们这里看吧http://www.stdwork.com,要写车牌识别绝对是高难度程序,要用到BP神经网络模式识别那些深层理论,普通程序员是做不到的,我们欢迎有意思的公司跟我们合作

要做简单概括就这么几句
1、车牌定位
2.光学字符识别技术(OCR算法)
3。图象匹配
主要东西都是在那些对图片处理的核心算法程序上,至于摄影技术,那是很简单的硬件实现问题,谈不上是技术核心


 
Error Back Propagation简称BP

1 BP算法及其改进

1.1 BP网络特点 多层前向网络的权值学习常采用误差逆传播学习算法(Error Back Propagation简称BP)。为了简单起见,将采用这一学习算法进行训练的多层前向网络简称为BP网络。在具体应用该网络时分为网络训练及网络工作2个阶段。在网络训练阶段,根据给定的训练模式,按照“模式的顺传播”→“误差逆传播”→“记忆训练”→“学习收敛”4个过程进行网络权值(包括阈值)的训练[2]。在网络的工作阶段,根据训练好的网络权值及给定的输入向量,按照“模式顺传播”方式求得与输入向量相对应的输出向量的解答。

  BP算法是一种比较成熟的有指导的训练方法,是一个单向传播的多层前馈网络。它包含输入层、隐含层、输出层。同层节点之间不连接。输入信号从输入层节点,依次传过各隐含层节点,然后传到输出层节点,每一层节点的输出只影响下一层节点的输入。网络训练目标是使误差函数E最小,E的定义如下:


(1)


式中:E为网络输出误差,P代表第P个样本,j为输出单元数,tjp为单元期望输出,Ojp?为单元的实际输出,(tjp-Ojp)2输出层第j个神经元在模式P作用下的实际输出和期望输出之差的平方。

1.2 BP算法存在的问题 BP算法的基本形式为[3]:

W(k+1)=W(k)+αD(k)
(2)


式中:W(k)为时刻的权值;α为学习率;(k)为k时刻的负梯度。

  用三层BP网络可以任意逼近任何连续函数,但是它主要存在如下缺点:(1) 从数学上看,它可归结为一非线性的梯度优化问题,因此不可避免地存在局部极小问题;(2) 学习算法的收敛速度慢,通常需要上千次或更多;(3) 络结构为前向结构,没有反馈连接,因此它是一非线性映射系统。

1.3 BP算法的改进(ABPM算法)由于BP算法存在以上的缺陷,因而用BP网络训练网络时常常会出现收敛慢、振荡和陷入局部极小等问题。因此,采用引入动量项的自适应变步长来调整学习率的改进算法(即ABPM算法)。

  自适应变步长算法和常规BP算法的主要区别在于学习步长λ随误差曲面的变化而进行调整。由于BP网络的逼近误差曲面的梯度变化是不均匀的,即(k)在不同的位置大小不同。如果采用固定的步长λ,当λ较小时,在误差曲面较平坦的区域,收敛较慢;当步长λ较大时,又会在峡谷区域引起振荡。自适应变步长算法正是针对步长的缺陷提出来的。这种算法是以进化论中的进退法为理论基础的,即连续两次观测训练的误差值,如果误差下降则增大学习率,误差的反弹在一定的范围内,则保持步长,误差的反弹超过一定限度则减小学习率。

  学习率的调整可用如下公式进行描述。

W(k+1)=W(k)+α(k)[1-ηD(k)+ηD(k-1)]
(3)


其中:α(k)=2λα(k-1);λ=sign[D(k)D(k-1)]。式中:(k)为k时刻的 学习率,它是(k-1)时刻学习率的函数。η是动量因子,用来抑制振荡。

  确定好网络结构和训练算法后,就可以利用输入输山样本对网络进行训练,即按照式(3)对网络权值进行调整,当达到期望的输出时训练即告完成,否则继续调整权值。
 
基于神经网络的车牌照字符识别   
  引言
  字符识别是模式识别领域的一项传统的课题,这是因为字符识别不是一个孤立的问题,而是模式识别领域中大多数课题都会遇到的基本问题,并且在不同的课题中,由于具体的条件不同,解决的方法也不尽相同,因而字符识别的研究仍具有理论和实践意义。这里讨论的是用神经网络识别数字的问题.
  人工神经网络模式识别方法是近些年提出的新方法,为字符识别研究提供了一种新手段,它具有一些传统技术所没有的优点:良好的容错能力、分类能力强、并行处理能力和自学习能力。因而,采用神经网络识别方式是一种很好的选择。
  一、模式识别方法的比较
  针对模式特征的不同选择及其判别决策方法的不同,可将模式识别方法大致分为5大类。这5种识别方法均可实现字符识别,但它们特点不同,必须根据条件进行选择。
  1. 统计模式法:对已知类别的模式样本进行各种特征的提取和分析,选取对分类有利的特征,并对其统计均值等按已知类别分别进行学习,按贝叶斯最小误差准则,根据以上统计特征设计出一个分类误差最小的决策超平面,识别过程就是对未知模式进行相同的特征提取和分类,通过决策平面方程决定该特征相应的模式所属的类别。此方法比较成熟,能考虑干扰、噪声等的影响,识别模式基元能力强。但对结构复杂的模式抽取特征困难;不能反映模式的结构特征,难以描述模式的性质;难以从整体角度考虑识别问题。
  2. 句法结构方法:分为训练过程和识别过程:训练过程就是用已知结构信息的模式作为训练样本,先识别出基元和它们之间的连接关系,并用字母符号表示它们,然后用构造句子的方法来描述生成这些场景的过程,并由此推断出生成该场景的一种文法规则;识别过程就是对未知结构的模式进行基元识别及其相互关系分析,然后用训练过程中获得的文法对其作句法分析,如果它能被已知结构信息的文法分析出来,则该模式具有与该文法相同的结构,否则就可判定不是这种结构。此方法识别方便,可从简单的基元开始,由简至繁;能反映模式的结构特征,能描述模式的性质,对图像畸变的抗干扰能力较强,但当存在干扰及噪声时,抽取基元困难,且易失误。
  3. 逻辑特征法:就是其特征的选择对一类模式识别问题来说是独一无二的,即在一类问题中只有1个模式具有某1种(或某1组合的)逻辑特征,此方法建立了关于知识表示及组织,目标搜索及匹配的完整体系;对需通过众多规则的推理达到识别目标的问题,有很好的效果,但当样品有缺损,背景不清晰,规则不明确甚至有歧义时,效果不好。
  4. 模糊模式方法:就是在模式识别过程中引入了模糊集的概念,由于隶属度函数作为样品与模板相似程度的量度,故能反映整体的、主要的特性,模糊模式有相当程度的抗干扰与畸变,从而允许样品有相当程度的干扰与畸变,但准确合理的隶属度函数往往难以建立。目前有学者在研究,并将其引入神经网络方法形成模糊神经网络识别系统。
  5. 神经网络方法:就是使用人工神经网络方法实现模式识别。可处理一些环境信息十分复杂,背景知识不清楚,推理规则不明确的问题,允许样品有较大的缺损、畸变,神经网络方法的缺点是其模型在不断丰富完善中,目前能识别的模式类还不够多,神经网络方法允许样品有较大的缺损和畸变,其运行速度快,自适应性能好,具有较高的分辨率。
  二、神经网络字符识别系统
  神经网络的字符识别系统是神经网络模式识别系统的一种,原理是一致的。一般神经网络字符识别系统由预处理,特征提取和神经网络分类器组成。预处理就是将原始数据中的无用信息删除,平滑,二值化和进行幅度归一化等。神经网络字符识别系统中的特征提取部分不一定存在,这样就分为两大类:(1)有特征提取部分的:这一类系统实际上是传统方法与神经网络方法技术的结合,这种方法可以充分利用人的经验来获取模式特征以及神经网络分类能力来识别字符。特征提取必须能反应整个字符的特征。但它的抗干扰能力不如第2类。(2)无特征提取部分的:省去特征抽取,整个字符直接作为神经网络的输入(有人称此种方式是使用字符网格特征),这种方式下,系统的神经网络结构的复杂度大大增加了,输入模式维数的增加导致了网络规模的庞大。此外,神经网络结构需要完全自己消除模式变形的影响。但是网络的抗干扰性能好,识别率高。
  构造神经网络分类器首先要选择适当的网络结构:神经网络分类器的输入就是数字字符的特征向量;神经网络分类器的输出节点应该是字符数。10个数字输出层就有个10个神经元,每个神经元代表一个数字;隐层数要选好,每层神经元数要合适,目前有很多采用一层隐层的网络结构。然后要选择适当的学习算法,这样才会有很好的识别效果。在学习阶段应该用大量的样本进行训练学习,通过样本的大量学习对神经网络的各层网络的连接权值进行修正,使其对样本有正确的识别结果,这就像人记数字一样,网络中的神经元就像是人脑细胞,权值的改变就像是人脑细胞的相互作用的改变,神经网络在样本学习中就像人记数字一样,学习样本时的网络权值调整就相当于人记住各个数字的形象,网络权值就是网络记住的内容,网络学习阶段就像人由不认识数字到认识数字反复学习过程是一样的。神经网络是按整个特征向量的整体来记忆数字的,只要大多数特征符合曾学习过的样本就可识别为同一字符,所以当样本存在较大噪声时神经网络分类器仍可正确识别。在字符识别阶段,只要将输入进行预处理,特征提取后的特征向量作为神经网络分类器的输入,经过网络的计算,分类器的输出就是识别结果。
  三、BP神经网络
  这里我们采用BP神经网络来进行车辆字符的识别。BP网络是采用Widrow-Hoff学习算法和非线性可微转移函数的多层网络。一个典型的BP网络采用的是梯度下降算法,也就是Widrow-Hoff算法所规定的。backpropagation就是指的为非线性多层网络计算梯度的方法。一个典型的BP网络结构如图所示:

  
1.gif


  我们将它用向量图表示如下:

2.gif

  
  其中:对于第k个模式对,输出层单元的j的加权输入为 ,该单元的实际输出为 ,而隐含层单元i的加权输入为 ,该单元的实际输出为 ,函数f为可微分递减函数 。
  其算法描述如下:
  (1)初始化网络及学习参数,如设置网络初始权矩阵、学习因子等。
  (2)提供训练模式,训练网络,直到满足学习要求。
  (3)前向传播过程:对给定训练模式输入,计算网络的输出模式,并与期望模式比较,若有误差,则执行(4);否则,返回(2)。
  (4)后向传播过程:a.计算同一层单元的误差;b.修正权值和阈值;c.返回(2)
  四、车牌数字识别
  我采用Matlab来模拟用神经网络进行车牌照数字识别这一过程。作为对比,一种采用提取特征部分的方法,一组采用无特征部分提取的方法。
  提取特征法采用投影-变换系数法进行特征提取。设N为图形尺寸,g(x)和g(y)分别是图形在X轴和Y轴上的投影,对它们进行Fourier变换得到K个变换系数,从K个变换系数gk(k=0,1,2,…,K-1)中选出M个有代表性的特征,使它满足类间距离要大、类内距离要小,这里选出16个作为有代表性的特征作为网络输入。
  由于神经网络对图形的旋转、平移敏感,车牌照数字的获取中不可避免的存在这一类问题,所以即使是采用无特征部分提取的时候,也要对图形进行处理,这里对图形矩阵进行二维fft变换,分别得到矩阵的幅值和相值,通过实验可知网络对变换矩阵的相值收敛性好,因此这里取矩阵的相值作为网络输入。
  我取了0-9共十个数字作为待识别数,每个数字取6个样本进行训练,共有60个训练样本,另取10个样本作为识别样本。神经网络采用三层结构,提取特征法有16个输入,隐含层取24个神经元,输出为十个,无特征提取法有16X16个输入,隐含层取24个神经元,输出也为10个,取最大输出端对应的数字作为识别结果,如果所有输出端的结果都小于0.5,则认为系统无法识别。其收敛波形如下图所示:
       有特征提取法的收敛图像            
    
6.gif


无特征提取法的收敛图像
7.gif


  由图可知,两种不同方法的收敛速度,采用无特征提取法要快的多,但是由于其网络规模要比特整体取法大,每一次训练所耗时间要长,所以总的训练时间两者相差不多。识别样本和识别结果示例如附录所示。根据结果来看,采用无特征提取得到字符识别率为84.3%,采用有特征提取得到的字符识别率为92.9%,后者明显高于前者。如要进提高识别率,可以考虑改良特征值的提取,采集更多的样本进行训练及改善网络结构。
  五、结论
  由实验可知,采用神经网络识别车牌号字符是切实可行的,由于时间关系,目前只是用Matlab进行了简单的试验,下一步的工作是如何降低网络规模,似的字符识别达到系统可忍受的程度,并把它改编为C语言程序,以便用到高速公路车辆管理收费系统中去。
  附录:
  原始图像

8.gif
  

  分割后的字符图像
 
9.gif
 

  识别出来的结果是
   7    3   0    5   1
 
上文连接为:基于神经网络的车牌照字符识别 作者:夏寒 发布时间:2000/11/03
http://www.china-pub.com/computers/emook/0382/info.htm
 
后退
顶部