基于稀疏理论的字符识别方法
技术领域
本发明涉及一种标牌字符的自动识别方法,特别涉及一种基于稀疏理论的字符识别方法,属于字符识别技术领域。
背景技术
标牌字符自动识别是现代社会发展和进步的表现,也是信息化、智能化管理的一个方向。其中,车牌自动识别是标牌字符识别的一个重要领域,也是现代交通智能化管理的重要手段。
车牌识别技术是指:能够自动检测受控路面车辆并提取车辆牌照信息的处理技术,包括汉字字符、英文字母和阿拉伯数字的区分以及号牌颜色的识别。其以数字图像处理、模式识别、计算机视觉等技术为基础,对摄像机所拍摄的车辆图像或者视频序列进行分析,得到每一辆汽车唯一的车牌号码,从而完成识别过程。识别后的车牌通过一些后续处理手段不仅可以实现停车场或高速公路收费管理、车辆出入管理、交通流量指标控制测量、公路超速自动化监管、违章处罚管理等,还可以实现车辆定位、汽车防盗等防控技术管理,保证了车辆使用安全性,对于维护交通安全和城市治安,防止交通堵塞,实现交通自动化管理有着现实的意义。
车牌自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。
当前,国内做车牌识别的厂商有几十家,其中字符识别部分基本上都是基于两类技术:一类是模板匹配;另一类是基于神经网络的分类器技术。模板匹配技术算法简单,但运算量大,抗干扰能力较弱,对二值化的要求较高,综合识别率不高;神经网络技术的优点是运算量小,但对字符特征的选取很敏感,鲁棒性并不高,同样存在抗干扰能力弱等缺陷。
如何改善相关字符识别技术,基于现有硬件设备的基础上,提高字符识别速度和准确性,就成为本发明想要解决的主要问题。
发明内容
鉴于上述现有识别技术的不足,本发明旨在提供一种基于稀疏理论算法,直接训练灰度图像,省去了二值化图像的过程,避免了二值化对图像信息产生的损失和失真,从而达到提高字符识别率的目的。
本发明是通过以下技术方案来实现的:
一种基于稀疏理论的字符识别方法,具体步骤包括:
步骤一:建立测试样本集,人工区分并假设测试样本集中含有n个类,每个样本中的数据为1位以上。
步骤二:从测试样本集中每个类里抽出一个样本(D1,D2,D3.....,Dn)作为训练样本train_data,Train_data=[D1D2D3.....Dn];随机挑选一个测试样本Dt作为测试样本Test_data,Test_data=[Dt]。
步骤三:将训练样本灰度归一化为一个训练矩阵train_lab,计算得出训练矩阵的秩x2x,x2x平方和再开方后生成Y2Y,Y2Y的逆矩阵和训练矩阵的转置矩阵相乘得到一个新的矩阵Proj_M。
步骤四:将Test_data的灰度值归一化后生成Test_data2,将Test_data2中的样本逐一跟这个新的矩阵Proj_M计算,得到一组值S,S为系数向量,测试数据、训练数据与S的关系为:
Test_data=Train_data*S
步骤五:按照S寻找train_data中相应的训练项,求出train_data中所有类训练项与测试数据的差异矩阵gap,gap中各项为train_data中与S值对应的相同类所有数据与测试样本的误差总和除以此类对应的S值的平方;得出所有类的gap值后,其最小值所对应的就是测试样本所应归属的类。
步骤六:对比步骤五中测试样本所应归属的类是否与步骤一中的人工分类相同,如相同,则识别正确;否则,为识别错误,将测试样本加入到训练样本中。
步骤七:依次循环上述步骤二至步骤六,直到所有测试样本都能识别正确为止。
本发明所述的基于稀疏理论的字符识别方法,通过训练灰度图像,省去了二值化图像的过程,避免了二值化对图像信息产生的损失和失真,同时,对输入数据优化选择,选择差异性较大的个体作为训练样本,训练样本少而精,训练样本中具有大部分有效数据,较少的冗余数据,有效减少了无效数据的影响,提高了识别率。其基于稀疏理论的识别方法具有识别速度快,识别效率高,抗干扰能力强的特点,单个字符的识别率可以达到99.2%。
具体实施方式
本发明所述的基于稀疏理论的字符识别方法,具体步骤包括:
步骤1:建立测试样本集,人工区分并假设测试样本集中含有n个类,每个样本中的数据为128位;
步骤2:从测试样本集中每个类里抽出一个样本(D1,D2,D3......,Dn)作为训练样本train_data,Train_data=[D1D2D3.....Dn]。随机挑选一个测试样本Dt作为测试样本Test_data,Test_data=[Dt],则train_data大小为128*n,Test_data的大小为128*1。
步骤3:将训练样本集灰度归一化为一个训练矩阵train_lab,计算得出训练矩阵的秩x2x,x2x平方和再开方后生成Y2Y,Y2Y的逆矩阵和训练矩阵的转置矩阵相乘得到一个新的矩阵Proj_M。
步骤4:将测试集Test_data灰度值归一化后生成Test_data2,将Test_data2中的样本逐一跟这个新的矩阵Proj_M计算,得到一组值S。
测试数据、训练数据与S的关系为:
Test_data=Train_data*S
S为系数向量,其中,按照稀疏理论的原理可以直观理解为:若测试数据与训练数据的类相同,那相应的系数向量S应该接近1;反之,应该接近0。
步骤5:按照系数向量S寻找train_data中相应的训练项,求出train_data中所有类训练项与测试数据的差异矩阵gap。其中,gap中各项为train_data中与S值对应的相同类所有数据与测试样本的误差总和除以此类对应的S值的平方,得出所有类的gap值后,其最小值所对应的就是测试样本所应归属的类。
如:假设人工分类有4类,第1类在Train_data中的样本有三个数据D1D2D3,则,gap(1,1)=(sum(D1-Dt)+sum(D2-Dt)+sum(D3-Dt))/S(1,1)^2
如gap={0 8.4*10^23 0.6*10^23 2.2*10^23},其中最小值‘0’所对应的第1类就是输入Test_data后的识别结果。
步骤6:对比步骤5中测试样本所应归属的类是否与步骤1中的人工分类相同。如果相同,则识别正确;否则,为识别错误,将测试样本加入到训练样本中。
如:识别字符信息时,Test_data已经经过人工识别为第1类,若最终判断结果也是第1类,则识别正确。若系统自动识别判断不为第1类,则识别错误,代表识别系统训练数据不充足,要将Test_data的数据加入到Train_data中,这样训练样本才能包含所有样本的大部分特征信息。
步骤7:重新获取新的Test_data,依次循环上述步骤2至步骤6,直到所有测试样本都能识别正确为止。
按照上述方法挑选出来的样本,可以保证当前测试样本全部识别正确,只要测试样本有足够的代表性,单个字符的识别率可以达到99.2%。