分类:

之前我们对图像进行了预处理并分割出了图像中含有车牌的可能区域。现在我们每个区域是否是车牌。要做到这点,我们使用了支持向量机算法(SVM)Support Vector Machine。

支持向量机是一种模式识别算法,它是监督学习算法的一种,最初用于二分类问题。

监督学习是通过已标记的数据进行学习的机器学习算法。我们需要通过大量的已经标记的数据训练算法。每个数据集(set)需要一个类。

支持向量机创造一个或者多个超平面(hyperplane)来区分不同的类。

一个经典的例子就是利用二维的点集定义两个类,支持向量机寻找区分两个类的最优路线。

任何分类操作之前都需要训练分类器,这项工作可以在主要任务开始之前完成,也被叫做离线训练。这不是一项简单的工作,(原因有两个)1.因为它需要大量的数据来训练这个系统,2.但是更大的数据集并不意味着更好的训练效果。对于我们这种情况,我们没有足够的数据因为没有公开的车牌照数据库。正因为如此,我们需要拍数百张车的图片,然后预处理并对所有的图像进行分割。

我们用75张有车牌照图片和35张没有车牌照的图片对系统进行训练,这些相片的大小为144*33.这些图像中的一部分在下面图中有显示。这个数据库并不是很大,这足以产生我满足我们要求的相当好的结果。在实际的应用中,我们需要用更多的数据进行训练。

为了更好地理解机器学习的过程我们使用图像的像素作为分类器的特征(记住,有其他的更好的特征来训练SVM,例如主成分分析(Principal Components Analysis),傅里叶变换,文理分析(texture analysis)等等。

我们需要制作图片使用DetectRegions类来训练我们的系统,设置savingRegion变量来实现保存图片。我们可以使用segmentAllfile.sh bash 脚本对目录下的所有图片文件重复刚才处理,脚本可以从书的源代码中看到。

为了简单起见,我们存储所有处理得到的图像训练数据在XML文件当中,方便SVM函数直接使用。trainSVM.cpp根据文件夹和图片文件的数量生成了这个文件。

机器学习的OpenCV算法的训练数据被存储到N*M的矩阵中,N个样本,M个特征。训练矩阵中的,每个数据集是按照行进行保存的。

类是存储在另一个矩阵中,大小为N*1,这里每个类由一个浮点数确定。

OpenCV可以通过FileStorage类,非常简单就能实现对XML或者JSON格式的数据文件的管理。这个类可以让我们存储、读取OpenCV的变量、结构体或者我们的成员变量。利用这个函数,我们可以读取训练数据的矩阵和训练类,并将它们保存到SVM_TrainingData和SVM_Classes:

现在我们需要设置SVM算法中的参数,我们使用CvSVMParams结构来定义它。它是一种作用于训练数据的映射关系,将训练数据中相似的转变为线性可分的数据集。映射主要提升了数据的维数,实现主要通过有效的使用核函数。这里我们选择CvSVM:LINEAR类型,意味着不做映射。

我们设计并训练我们的分类器,OpenCV在支持向量机算法中定义了CvSVM类,我们通过训练数据、类、参数对其进行初始化。

我们的分类器通过使用SVM类中predict函数来预测。可能的裁剪后的图像。这个函数返回一个类标示符i。在我们这个例子中,我们标记车牌类为1,没有车牌类为0。每个被检测到的区域都有可能是车牌,我们使用SVM算法来确定它是不是车牌,然后保存正确的响应。

下面的代码是主应用代码的一部分,这部分是所谓在线处理。

【OpenCV学习笔记】【教程翻译】四(车牌检测之SVM分类)相关推荐

  1. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope

    OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...

  2. OpenCV学习笔记(十四):重映射:remap( )

    OpenCV学习笔记(十四):重映射:remap( ) 图像的坐标映射是通过原图像与目标图像之间建立一种映射关系,这种映射关系有两种,一种是计算原图像任意像素在映射后图像的坐标位置,另一种是计算变换后 ...

  3. 【OpenCV 学习笔记】第四章: 色彩空间类型转换

    第四章: 色彩空间类型转换 为什么有色彩空间这个概念? 世界本是无颜色的,我们人类看到的各种有色光只是特定波长的电磁波能够刺激人眼的锥体细胞,进而在人脑中形成颜色信号而已,实际上电磁波的波长域是非常广 ...

  4. opencv 学习笔记(十四) grabCut

    grabCut 前言 一.grabCut函数 二.compare函数 三.代码 前言 grabCut算法利用了图像中的纹理(颜色)信息和边界(反差)信息,只用少量的用户交互操作,即可得到比较好的分割结 ...

  5. OpenCV学习笔记(十一)(十二)(十三)(十四)(十五)

    OpenCV学习笔记(十一)--谈谈像素的类型和对Templates的限制使用 Templates是c++的一个很强大的特征,可以是数据结构更加安全高效.但也会增加编译时间和代码的长度,当函数被频繁调 ...

  6. 某人写的openCV学习笔记

    原文地址:某人写的openCV学习笔记作者:拔剑 http://blog.csdn.net/thefutureisour 我的OpenCV学习笔记(25):c++版本的高斯混合模型的源代码完全注释 之 ...

  7. 某人写的openCV学习笔记_拔剑-浆糊的传说_新浪博客

    http://blog.csdn.net/thefutureisour 我的OpenCV学习笔记(25):c++版本的高斯混合模型的源代码完全注释 之前看到过C版本的,感觉写的很长,没有仔细看,但是C ...

  8. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算

    OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...

  9. 检测单击鼠标左键并拖动的消息_计算机视觉OpenCV学习笔记(四):关于鼠标的相关事件函数...

    (7)把鼠标当画笔 本篇目标: 学会使用OpenCV中的鼠标处理的相关事件,事件回调函数怎么去定义,参数有哪些,以及如何注册鼠标监听事件. 7.1 .1 回调函数的定义: 1 def name(eve ...

  10. OpenCV学习笔记(一)(二)(三)(四)(五)

    OpenCV学习笔记(一) 决心开始研究OpenCV.闲言少叙,sourceforge网站最近的版本是2011年8月的OpenCV2.3.1,下载安装,我这里使用的开发环境是vs2008,网上搜了一下 ...

最新文章

  1. 海康威视人证对比设备SDK-C#
  2. 编译-C++支持iOS静态库的脚本学习
  3. 设置Kali Linux虚拟机连接网络
  4. linux kprobe rootkit 简介
  5. ubuntu 远程访问mysql_Ubuntu下远程访问MySQL数据库
  6. 网页设计过程中一般命名规则
  7. python dict sorted
  8. IntelliJ IDEA for Mac 如何在当前的普通Java项目中创建新的模块/添加模块/创建模块
  9. 【CAM应用】谈CAM软件在实际生产中的应用举例
  10. 成功领导者的20个好习惯
  11. mysql 从库修改表结构_在mysql数据库中---修改表结构
  12. promise allrace
  13. Android大学课件SQLite3 数据库操作
  14. 小程序中的css样式有哪些,微信小程序中css样式media标签
  15. 华为手机投屏电脑_手机投屏干货分享:华为如何投屏到电视机?
  16. net idautomationhc39m条形码字体生成条形码
  17. friends105. The One with the East German Laundry Detergent
  18. 电脑开机后实现自动开启移动热点,再也不用担心没流量了
  19. Mac 此账户尚未用于app store_iOS、Android 本周不能错过的 14 款新 App
  20. Larval Excel导入

热门文章

  1. 无锁同步-C++11之Atomic和CAS
  2. JDBC8.011连接数据库 3个小改动
  3. FISCO BCOS(八)——— 一键部署 WeBase
  4. vue中的传参的两种方式
  5. python的输入输出语句_Python基本输出语句/输入语句/变量解析
  6. iphone怎么重启_手机卡死了,又不能拆电池!你会怎么处理?
  7. JavaScript中清空数组的三种方式对比以及JavaScript常用数组操作方法
  8. opencv图像分析与处理(12)-逆滤波、维纳滤波、约束最小二乘方滤波和几何均值滤波
  9. 概率论与数理统计【三】一维随机变量及其分布
  10. 一文看懂Python列表表达式及高阶函数如lambda, zip, enumerate, map和filter方法