首先,我们需要了解特征是什么?所谓特征,就是某个区域的像素点经过某种运算后得到的结果。

其中,结果可能是 具体值、向量、矩阵

那么如何利用特征区分目标(即如何判断特征)?方法之一是,类似于阈值判决的方式区分。

所以问题又来了,如何得到这个判断条件呢?这时就要用到机器学习部分的内容。

总的来讲,分为三个问题:

1、弄清特征是什么。

2、如何判决特征。

3、如何得到这个判决(即如何得到判断条件)。

同样的,我们在学习haar特征的时候也是围绕这三个问题去探讨。

首先什么是haar特征?

haar特征有以下15种:

那么我们以第一种haar特征为例来讲述。

蓝色背景表示我们定义的图片,黑白矩形框表示haar特征模板,

假设模板范围为10*10,则该模板覆盖了100个像素点,黑色区域占50,白色区域占50

将当前的黑白两色模板放到图片任意位置,然后白色区域覆盖的50个像素点值之和 减去 黑色区域覆盖的50个像素点值之和,就得到了haar特征

即 haar特征 = sum(白)- sum(黑)

此外,还有其他计算方式: haar特征 = 整个区域像素点值 * 权重 + 黑色区域像素点值 * 权重。  这里的区域指10*10的区域。

接下来,我们考虑如何利用特征进行阈值判决?

Haar特征一般与Adaboost分类器结合在一起使用,因此简略介绍一下Adaboost。

Adaboost分类器的优点是:前一个基本分类器分出来的样本会在下一个分类器中得到加强。加强后的全体样本再次被用来训练下一个分类器。

比如 我们有三个苹果,一个香蕉

苹果   苹果   苹果   香蕉

0.1       0.1     0.1     0.5

由于香蕉不是我们期望的,因此在第一次训练后香蕉的系数比较大为0.5,我们将这个结果再次训练,那么苹果的系数会越来越小,香蕉的系数会越来越大。直到迭代的最大次数终止,或者,迭代到  训练出来的正确率大于等于设置好的最低值  终止。

1)Adaboost分类器的结构

一般的目标要通过15-20个强分类器,若一个目标能通过规定数量的强分类器,则视为预期结果。列如,有三个强分类器,给他们一个输入,如果由Haar特征计算出来的结果满足 X1 > ST1 and X2 > ST2 and X3 > ST3,(其中X1、X2、X3为Haar特征的代表值;ST1、ST2、ST3为三个强分类器的阈值),则被视为苹果。

强分类器的作用是判断当前阈值与当前特征是否吻合,来达到目标判决的效果。

弱分类器的作用是计算Haar特征的X1、 X2、 X3。例如(如上图所示) X2 = sum(y1,y2,y3),其中 指弱分类器的计算结果。

那么 如何得到呢?如上图所示,它是由Node节点计算得来。在OpenCV中一个弱分类器最高支持三个Haar特征,每一个Haar特征构成一个Node节点,因此每个特征都看成一个节点。

以Node1为例,其对应特征Haar1,

若 Haar1 > Node1的阈值(NodeT1),则 特征Haar1对应特征节点Node1的值 z1 = alpha1;

相反,若 Haar1 < Node1的阈值(NodeT1),则 特征Haar1 对应特征节点Node1的值 z1 = alpha2;

类似的,可以计算另外两个Haar特征对应的特征节点(Node2、Node3)的值z2、z3。

那么我们就可以得到Node节点之和 Z = sum(z1,z2,z3)

若 Z > 弱分类器的阈值( WT ),则 y1 = AA(某个值)

相反,若 Z < 弱分类器的阈值( WT ),则 y1 = BB(某个值)

上面的解释是从最上层的强分类器逆着推,那么,我们将其总结一下,从最底层的Node节点向上叙述。

首先,每一个Node节点对应一个Haar特征,这是最底层,OpenCV中一个弱分类器规定最多三个Haar特征。

然后,Node节点本身存在阈值,经Node节点计算出来的Haar特征与其做比较,会得到新的值小 z ,这个值就是Node节点的值。

这时,将三个小z求和,得到大Z。作为输入,送至弱分类器,与弱分类器阈值WT比较,得到y值。

将三个y值求和,得到 X 。作为输入,送至强分类器,与强分类器阈值ST比较,可判断特征与目标是否吻合。

若可以连续通过三个强分类器,则说明判断的目标和原目标一致。

2)Adaboost分类器计算过程

见上面黑体所述

3)  Adaboost分类器文件结构:xml类型

OpenCV14:Haar特征相关推荐

  1. 物体识别算法——SIFT/SURF、haar特征、广义hough变换的对比分析

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:cvvision 链接:http://www.cvvision.cn/7780.html 来源:CV视觉网 识别算法概述: ...

  2. 利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测

    级联分类器是将若干个分类器进行连接,从而构成一种多项式级的强分类器.级联分类器使用前要先进行训练,怎么训练呢?用目标的特征值去训练,对于人脸来说,通常使用Haar特征进行训练. Haar特征是由M.O ...

  3. 分类器是如何做检测的?(2)——【续】检测中的LBP和HAAR特征计算过程

    前面介绍分类器检测过程的示例中是以HOG特征为例,那LBP和HAAR特征在xml中是如何表达和测试的呢? 2.3    LBP与HAAR特征 HAAR特征的计算和表达方式与HOG很类似,在OpenCV ...

  4. OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己

    OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...

  5. 目标检测的图像特征提取—Haar特征

    1.Haar-like特征 Haar-like特征最早是由Papageorgiou等应用于人脸表示,Viola和Jones在此基础上,使用3种类型4种形式的特征. Haar特征分为三类:边缘特征.线性 ...

  6. 人脸识别案例:【实战】opencv人脸检测+Haar特征分类器

    1 基础 我们使用机器学习的方法完成人脸检测,首先需要大量的正样本图像(面部图像)和负样本图像(不含面部的图像)来训练分类器.我们需要从其中提取特征.下图中的 Haar 特征会被使用,就像我们的卷积核 ...

  7. Haar特征原理与icvCreateIntHaarFeatures方法的具体实现附详细注释—— 人脸识别的尝试系列(二)

    带着强烈的兴趣,上周开始人脸识别的尝试与学习,并且将具体的操作过程记录了下来 链接如下:http://blog.csdn.net/u011583927/article/details/44627493 ...

  8. Haar特征与积分图—概念解析

    1. Adaboost方法的引入 1.1 Boosting方法的提出和发展 在了解Adaboost方法之前,先了解一下Boosting方法. 回答一个是与否的问题,随机猜测可以获得50%的正确率.如果 ...

  9. opencv实战3: CascadeClassifier+Haar特征进行人脸检测

    1.级联分类器CascadeClassifier OpenCV官方文档:https://docs.opencv.org/3.4.3/d5/d54/group__objdetect.html 分类器: ...

最新文章

  1. module ‘tensorrt‘ has no attribute ‘BuilderFlag‘
  2. GSM Hacking Part① :使用SDR扫描嗅探GSM网络
  3. 解决spring的xml文件cannot be open ( class path resource cannot be opened)
  4. python软件设置代码字体的大小_PyCharm中代码字体大小调整方法
  5. 速读训练软件_记忆宫殿记忆力训练教程-第八天
  6. python的datetime模块用法_Python3.5内置模块之time与datetime模块用法实例分析
  7. LitePal 数据库使用方法(最新2.0LitePal数据库适用)
  8. JavaScript中Switch语句支持字符串类型数据
  9. UltraISO(制作U盘ISO启动镜像)制作U盘启动盘
  10. 医学图像分类 神经网络,神经网络图像识别技术
  11. 手机号码归属地查询,手机号码归属地批量查询
  12. 基于网络安全相关的开源项目技术预研分析报告
  13. java 策略模式会员_设计模式——策略模式:会员价格体系的简单实现
  14. 【软路由安装(PVE+ikuai)】
  15. Qt编写物联网管理平台13-短信告警
  16. 接口测试 Pytest断言处理_告警断言
  17. 携程到底有没有大数据杀熟?!
  18. 小程序分包加载不同项目字体图标引用问题
  19. tf SavedModel 转换为 可使用 tfjs 加载 的形式
  20. 未来软件工作室2019年年会总结

热门文章

  1. ST-LINK/V2 + STM8 + STVP 下载程序+Error on Option Bytes
  2. 4. Python--Scipy库(下/13-17)
  3. 12月最新仿知音漫画网站源码+手机端,小说漫画生成静态文件,超强负载量安全可靠
  4. Java图形化界面---进度条
  5. 【python句柄获取】——简单明了的获取窗口句柄,并使用句柄操作获取相应内容(全网最详细)
  6. 无人货架APP开发(软件源码)
  7. RK3568平台开发系列讲解(安卓篇)理解Android系统的编译
  8. Android OpenGL 仿自如 APP 裸眼 3D 效果
  9. 编译原理--词法分析器(python语言实现)
  10. android8.1.0官方下载,官方Xposed框架For Android8.0/8.1(Oreo)发布v90-beta3版本