基于SVM与ANN技术的车牌识别1解剖.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
掩码填充效果 掩码填充效果 掩码填充效果 掩码填充效果 因为使用车牌,车牌有边界,漫水填充不会超过车牌的边界,而对于其他区域(检查出来的矩形)漫水填充会占据很多区域,形成的矩形也很大,再对矩形进行大小判别时,可能就会被丢弃,得到更可能是车牌的区域。 因此我们在原图上标记出仅剩的三块可能车牌区域。 仅剩3块可能的车牌区域 将这三块区域提取出来后,先进行适当的旋转,然后把所有的图像调整为统一的大小,对其采用直方图均衡化最终效果如下。 车牌分类 我们预处理和分割图像的所有可能部分之后,我们现在需要判别每一个分割部分是不是一个车牌。为这样做,我们使用SVM算法。 支持向量机是一个模式识别算法,它是监督学习算法的一份子,最初创建是为了二值分类的。有监督的学习是一种机器学习算法,它通过标签数据的使用进行学习。我们需要一些带有标签的数据来训练这个算法。每一个数据集需要有一个类别。 SVM创建一个或多个超平面,用来区分每类数据。 一个典型的例子是2维点集,它定义了两个类。SVM寻找最优线来区分每个类。 训练SVM分类器,简单来说在二维空间里就是求解这样一个线性函数,g(x)=wx+b,x是输入的特征,g(x)是输出的分类的类别,我们已知了输入特征与输出类别,来训练求解w和b的最优的值,获得这两个值后也就获得了这个分类的数学模型,接着就可对新样本进行预测。 寻找训练分类器所需特征 在任一分类之前的第一个任务是训练我们的分类器。 我们用大小为144*33的75张车牌和35非车牌来训练我们的系统。我们在下面的图中能看到数据的一些样本。 为机器学习的SVM算法训练的数据存储在一个N*M的矩阵中,N表示样本数,M表示特征数。 类别存储在另外一个大小为N*1的矩阵中。用0或者1表示无车牌和有车牌类别。 我们将以上存储了已经处理好和准备好的所有图像的数据,写成xml文件保存起来输入到分类器中进行训练。 创建和训练分类器 Opencv为支持向量机算法定义了CvSVM类。我们用训练的数据、类别和参数数据来初始化它并用CvSVM类中的train()函数训练我们的分类器。 CvSVM?svmClassifier(SVM_TrainingData,?SVM_Classes,?Mat(),?Mat(),?SVM_params);? bool CvSVM::train(const CvMat* trainData, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, CvSVMParams params=CvSVMParams() ) 预测分类 分类器准备好了,我们可以使用CvSVM类的predict函数来预测一个可能的修剪图像。这个函数返回类别i。在我们的实例中,我们标记每一个车牌类别为1,非车牌类别标记为0。对于每个检测到的区域,我们使用SVM来分出它是车牌还是非车牌。 float CvSVM::predict(const CvMat* samples, CvMat* results) const 车牌字符的识别 车牌识别目标的第二步即要获取车牌上的字符。对于每个检测到的车牌,我开始分割车牌得到每个字符,并且使用人工神经网络机器学习算法来识别字符。 OCR分割(字符分割) 我们将第一步检测到的车牌作为输入的图像 然后对其进行二值化,因为我们需要获取字符的轮廓,而轮廓的算法寻找的是白色像素。所以通过改变二值化函数的参数来把白色值变为黑色,黑色值变为白色。 最后我们检测到所有白色区域的轮廓,并且找到它们的最小外接矩形。 对于每一个检测到的轮廓,我们核实一下大小,去除那些规格太小的或者宽高比不正确的区域。字符是45/77的宽高比。我们允许用于选择或者扭曲带来的百分之35的误差。如果一个区域面积高于80%(就是像素大于0的超过80%),则我们认为这个区域是一个黑色块,不是字符。 提取每个字符的特征 不像车牌检测特征提取的是图像的所有像素。我们使用一个更加通用的特征在字符识别中,其中包括水平和垂直累加直方图,一个低分辨率样本。 一旦我们拥有了特征,我们创建一个M列的矩阵,矩阵的每一行中的每一列都是特征值。 OCR分类(字符分类) 在分类这一步,我们使用人工神经网络机器学习算法。更具体一点,多层感知器(MLP),一个广泛使用的人工神经网络算法。 MLP神经网络有一个输入层,输出层和一个或多个隐层。每一层有一个或多个神经元连接着前向和后向层。 下面的例子表示一个3层感知器(它是一个二值分类器,它映射输入的是一个实值向量,输出单一的二值),它带有三个输入,两个输出和一个含有5个神经元的隐层。 每个神经元用带有权重的输入和加上一个偏移量再经过一个选择的激活函数转换后得到输出结果。 一

文档评论(0)

ddf55855 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档