2020基于SVM与ANN技术的车牌识别1.ppt

最小外接矩形 ? 我们基于面积和宽高比,对于检查到的所有 外接矩形区域做一下确认。如果宽高比大于 为 520/110=4.727272 (车牌宽除以车牌高) (允许带有 40% 的误差)和边界在 15 像素到 125 像素高的区域,我们才认为可能是一个 车牌区域。这些值可以根据图像的大小和相 机的位置进行估算。 去除干扰区域后 剩余 6 块外接矩形 ? 对仅剩下的 6 块区域,我们利用车牌的白色 背景属性可以进一步改善。所有的车牌都有 统一的背景颜色。我们可以使用 漫水填充 算 法来获得这些剩余旋转矩阵的精确筛选。 ? 所谓漫水填充,简单来说,就是自动选中了 和种子点相连的区域,接着将该区域替换成 指定的颜色,这是个非常有用的功能 , 经常 用来标记或者分离图像的一部分进行处理或 分析 . 漫水填充也可以用来从输入图像获取 掩码区域 , 掩码会加速处理过程 , 或者只处理 掩码指定的像素点 . 寻找种子点 随机选取每个区域十个种子点 ? 为了下一步轮廓寻找、最小外接矩形的获取 以及筛选合适大小的轮廓做准备,我们对图 像漫水填充时,只对黑色背景的二值掩码区 域进行填充,不对原彩色图进行填充,填充 颜色为白色。 掩码填充效果 掩码填充效果 掩码填充效果 掩码填充效果 掩码填充效果 掩码填充效果 ? 因为使用车牌,车牌有边界,漫水填充不会 超过车牌的边界,而对于其他区域(检查出 来的矩形)漫水填充会占据很多区域,形成 的矩形也很大,再对矩形进行大小判别时, 可能就会被丢弃,得到更可能是车牌的区域。 ? 因此我们在原图上标记出仅剩的三块可能车 牌区域。 仅剩 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 来分出它是车牌还是非车牌。

文档评论(0)

1亿VIP精品文档

相关文档