Haar-like特征来龙去脉


声明:引用请注明出处http://blog.csdn.net/lg1259156776/


haar-like特征概念

haar-like特征是是计算机视觉领域一种常用的特征描述算子。它最早是由Papageorigiou等人用于人脸描述。目前常用的Haar-like特征可以分为三类:线性特征、边缘特征、点特征(中心特征)、对角线特征。如下图所示

Haar特征(Haar-like features) 是用于物体识别的一种数字图像特征。它们因为与Haar小波转换极为相似而得名,是第一种实时的人脸检测算子。

haar-like特征的特点

Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征能由矩形特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述特定走向(水平、垂直、对角)的结构。

通过改变特征模板的大小和位置,可在图像子窗口中穷举出大量的特征。上图的特征模板称为“特征原型”;特征原型在图像子窗口中扩展(平移伸缩)得到的特征称为“矩形特征”;矩形特征的值称为“特征值”。

矩形特征可位于图像任意位置,大小也可以任意改变,所以矩形特征值是矩形模版类别、矩形位置和矩形大小这三个因素的函数。故类别、大小和位置的变化,使得很小的检测窗口含有非常多的矩形特征,如:在24*24像素大小的检测窗口内矩形特征数量可以达到16万个。这样就有两个问题需要解决了:(1)如何快速计算那么多的特征?—积分图;(2)哪些矩形特征才是对分类器分类最有效的?如通过AdaBoost算法来训练。

通过积分图快速计算haar-like特征

这方面的内容比较简单熟悉,不做过多总结。从下图和公式中可以看出:

设D的四个顶点分别为α、β、γ、δ,则D的像素和可以表示为

∑D=ii(α)+ii(β)−(ii(γ)+ii(δ))

而Haar-like特征值无非就是两个矩阵像素和的差,同样可以在常数时间内完成。

AdaBoost算法训练人脸分类器

最初的弱分类器可能只是一个最基本的Haar-like特征,计算输入图像的Haar-like特征值,和最初的弱分类器的特征值比较,以此来判断输入图像是不是人脸。这样一个弱分类实际上就是一个decision stump,决策树桩,就是说大于输入特征大于阈值就认为是人脸,小于则认为不是。
AdaBoost算法只需要求每个decision stump有略微比随机猜测要好的概率就行,也就是说略微大于50%。只要保证每个decision stump能够分别照顾不同的方面,也就是说decision stump之间具有差异性。举一个经典的例子如下:

老师问学生什么是苹果,每个同学说一个其它同学没说过的苹果的特点,比如同学A说苹果是圆的(形状特征),同学B说苹果是甜的(口味特征),同学C说苹果大多数是红色的(颜色特征)等等,当有足够多的同学对苹果进行了不同的描述后,这些描述合在一起就能充分的帮助不认识苹果的新同学来认识苹果。

关于AdaBoost的具体算法可以参考我的博文《机器学习技法总结(五)Adaptive Boosting, AdaBoost-Stump,决策树》和《 机器学习技法实现(一):AdaBoost- Decision Stump (AdaBoost - 决策树的基于Matlab的实现)》。

最后得到的实际上是一个决策树,每个树的节点都是一个决策树桩,很简单的弱分类器。关于决策树也可以参看上面的两篇博文,下面是引用维基百科的解释:

“机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。从数据产生决策树的机器学习技术叫做决策树学习,通俗说就是决策树。”(来自《维基百科》)

下面的这张图就是训练完毕的用于人脸检测识别的决策树:

只有通过所有的决策树桩检测的才会被认定为人脸,就好像是只有满足所有同学对苹果的描述特点的东西,新同学才会认为它是苹果。


2015-9-23 艺少

转载于:https://www.cnblogs.com/huty/p/8519132.html

Haar-like特征来龙去脉相关推荐

  1. 调用摄像头使用face_recognition 或 opencv中haar人脸特征实时检测识别人脸、给人脸打马赛克/给人脸贴图

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) OpenCV:python调用摄像头同时使用OpenCV中自带 ...

  2. face_recognition、opencv中haar人脸特征:视频/图片 进行 人脸检测/人脸识别

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) import face_recognition import ...

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

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

  4. CV之Haar特征描述算子-人脸检测

    3.1简介 Haar-like特征最早是由Papageorgiou等应用于人脸表示,在2001年,Viola和Jones两位大牛发表了经典的<Rapid Object Detection usi ...

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

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

  6. Haar特征类有哪些最新发表的毕业论文呢?

    一.总体简介 Haar特征的相关文献在2006年到2020年内共计132篇,主要集中在自动化技术.计算机技术.无线电电子学.电信技术.公路运输 等领域,其中期刊论文100篇.会议论文4篇.专利文献28 ...

  7. Adaboost 人脸检测:Haar特征及积分图、分类器的级联

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 人脸识别功能实现的原理介绍与算法介绍 人脸识别:人脸数据集 A ...

  8. haar分类器详解(Haar特征,积分图,adaboost算法,筛选式级联分类器),DCG介绍 --文献阅读报告《基于素描对视频的人脸识别研究》

    基于素描对视频的人脸识别--haar分类器详解,haar特征,adaboost,级联强分类器,积分图,DCG 背景 算法总体流程 1.预处理--识别出人脸并将人脸图像标准化 haar特征 积分图--加 ...

  9. Haar特征计算的一些见解

    最近在目标探测与识别课上学了积分图和Haar特征的相关知识.刚学的时候,对Haar特征的数量计算有一些疑惑.后来查阅相关资料之后,恍然大悟了.下面分享一下我的见解: 积分图 这个就不用多说了.积分图尺 ...

最新文章

  1. GPU加速库AmgX
  2. [Android应用]《花界》V1.0 正式版隆重发布!
  3. SRM 721 DIV2
  4. SQL Server 2008 修改安装路径后安装出错的解决方法
  5. 历久弥新 - 微软万亿市值背后的文化支撑(下)|DevOps案例研究
  6. python 浏览器显示本地文件夹_浏览器读取本地文件
  7. 深入理解Angular订阅者模式
  8. 一起学习C语言:C语言基本语法(三)
  9. 基于容器实现高并发网站
  10. Thinkphp 实现上一篇与下一篇的方法
  11. 网络安全基础——NTFS安全权限
  12. 深山红叶(袖珍PE系统工具箱)
  13. 快手用计算机弹奏,【图片】【CJ他家】弹计算器视频传送门、计算器谱等随时更新!_计算器音乐吧_百度贴吧...
  14. typecho评论不显示用户头像怎么办?怎么改为QQ头像显示?
  15. 金融投资大数据(1)-马科维茨资产组合基于excel
  16. 阿里云购买云服务器流程及注意事项(新手用户必看图文教程)
  17. 红米android如何把电池百分比,红米Note4电池怎么显示百分比?简单两步即可轻松搞定!...
  18. 回忆童年游戏之棋盘决奕
  19. Python|阶梯电价问题
  20. 海康摄像机web3.0控件

热门文章

  1. NCFM识别-Googlenet
  2. 如何用tf2.0训练中文聊天机器人chatbot
  3. 除了下拉框/下拉联想词优化推广,还可以做那些网络推广?
  4. sql server 配置管理器里为什么是32位_Windows Server2012 配置打印服务器图文教程
  5. java的 交换排序 快速排序算法_数据结构之排序算法Java实现(4)—— 交换类排序之快速排序算法...
  6. linux svn 自动启动,Linux下设置svn开机自启动
  7. matlab怎么找出奇数个数_用MATLAB绘制系统根轨迹和性能分析
  8. python2.7图像局部增强_Python OpenCV图像增强
  9. pycharm 服务器证书错误,pycharm 如何跳出服务器证书不受信任的提示
  10. C#制作QQ截图的自动框选功能的个人思路(二)设置Hook