opencv目标检测

 

cv::CascadeClassifer

将级联分类器作为对象进行实现

利用detectMultiScale搜索图像

学习新目标

训练分类器的四个步骤:

  1. 收集一组数据集,高质量和大量的数据,比如最好将眼睛对准,一个策略是首先在子区域上训练眼睛级联器,用人眼检测来搜寻眼睛并调整人脸
  2. 使用实用程序createsamples建立一个正样本的矢量输出文件
  3. 生成一组反例,热河不包含感兴趣目标的图像都变成负样本
  4. 训练级联器

使用支持向量机的目标识别

Latent SVM非常适合于识别可变形目标(行人),因为他明确概念化了由可变结构链接在一起的多个子组件的概念

Bag of Words使用了一种不同的方式并完全忽略了大规模的结构,他从文档识别技术中获得灵感,只考虑目标组件的列表,因此可以拥有不只局限于目标识别的通用性,还可以用于整个场景的识别和场景分析

Latent SVM用于目标识别

基于HOG-SVM建立,HOG-SVM使用一个滑动窗口,通过将窗口分割成较小的片并计算每片中的图像梯度方向的直方图来确定行人

将分别检测目标的不同组件,可以预测的相对彼此运动的目标或作为整体的目标。一旦根节点定位,并且每个组件的位置也被定位出来,就可以建立一个关于目标的假设,并计算各个组件相对根节点的似然度

通过cv::dpm::DPMDectector 的目标检测

Bag of Words 算法与语义分类

词袋算法,用于视觉分类或者识别场景中的目标内容

该算法灵感来源于文档分类中使用的方法,通过具有类之间的强区分能力的特定关键词的存在,尝试将文档组织成语义分类

BOW算法的第一阶段是了解随后将用于分类的特征,在此要提供算法的一部分,称为trainer,其中包含感兴趣的每个语义类别,在opencv的实现中,要首先从每个图像提取出关键点,向trainer提供生成的描述符列表

trainer的目的是找出哪些关键点看起来可以形成有意义的集群,来自提供的图像,在表示关键点的向量空间中靠在一起,之后抽象成关键点中心,在识别级群的中心创建新的关键点,通常称为视觉单词,视觉单词集合称为词汇

BOW 从给定图像中生成presence vector,用于训练分类器,并从新图像中生成presence vector ,用于分类器将该类别与该图像关联

使用cv::BOWTrainer 进行训练