内容来自网上博客(地址:http://lib.csdn.net/article/opencv/29324),我认为讲解的比较好。简单描述一下haar特征

haar特征生成

haar特征有以下5种基本类型:

当然网上还可以看到haar的其它一些扩展特征类型,这些扩展类型原理和基本类型一样,只是角度或者形状不同,且实际效果并不是特别好,所以这里就不介绍了

在实际中,Haar特征可以在检测窗口中由放大+平移产生一系列子特征,但是白:黑区域面积比始终保持不变。

对于 m×m 子窗口,我们只需要确定了矩形左上顶点A(x1,y1)和右下顶点B(x2,y2) ,即可以确定一个矩形;如果这个矩形还必须满足下面两个条件(称为(s, t)条件,满足(s, t)条件的矩形称为条件矩形):

1) x 方向边长必须能被自然数s 整除(能均等分成s 段);
2) y 方向边长必须能被自然数t 整除(能均等分成t 段);
则 , 这个矩形的最小尺寸为s×t 或t×s, 最大尺寸为[m/s]·s×[m/t]·t 或[m/t]·t×[m/s]·s;其中[ ]为取整运算符。

下面列出了,在不同子窗口大小内,特征的总数量

窗口大小 36x36 30x30 24x24 20x20 16x16
特征数量 816264 394725 162366 78460 32384

计算方法

haar特征就是一些矩形区域,同一个类型的矩形区域不管放大多少,黑白面积比都不变。用一个类型的haar放大N倍,盖住原图像中的目标区域,把haar特征白色区域盖住的像素点的值的和 减去 该haar特征黑色区域的像素点的值的和得到的结果作为haar特征值

在opencv代码中,是这样计算haar特征值的:

Haar特征值 = 整个Haar区域内像素和×权重 + 黑色区域内像素和×权重

公式表示就是

FeatureValue=Wall×∑f(x,y)∈all(x,y)+Wblack×∑(x,y)∈blackf(x,y)FeatureValue=Wall×∑f(x,y)∈all(x,y)+Wblack×∑(x,y)∈blackf(x,y)

FeatureValue = W_{all} \times \sum _{f(x,y) \in all} (x,y) + W_{black} \times \sum _{(x,y) \in black} f(x,y)

上图中权重分布:
特征 x2 y2 x2_y2 类型权重: W(all) = 1 , W(black) = -2
特征 x3 y3 类型权重: W(all) = 1 , W(black) = -3

为什么要设置权重? 设置权值就是为了抵消面积不等带来的影响,保证所有Haar特征的特征值在灰度分布绝对均匀的图中为

x3特征为例,在放大+平移过程中白:黑:白面积比始终是1:1:1。首先在红框所示的检测窗口中生成大小为3个像素的最小x3特征;之后分别沿着x和y平移产生了在检测窗口中不同位置的大量最小3像素x3特征;然后把最小x3特征分别沿着x和y放大,再平移,又产生了一系列大一点x3特征;然后继续放大+平移,重复此过程,直到放大后的x3和检测窗口一样大。这样x3就产生了完整的x3系列特征

如图:

特征值含义

选取了MIT人脸库中2706个大小为20*20的人脸正样本图像,计算下图中的两类不同的Haar特征值

图1图1

图1

上图左右两边的两类haar特征值分布如下:

图2图2

图2

可以看到,图1中2个不同Haar特征在同一组样本中具有不同的特征值分布,左边特征计算出的特征值基本都大于0,而右边特征的特征值基本均匀分布于0两侧(分布越均匀对样本的区分度越小)。所以,正是由于样本中Haar特征值分布不同,导致了不同Haar特征分类效果不同。显而易见,对样本区分度越大的特征分类效果越好,即红色曲线对应图1中的的左边Haar特征分类效果好于右边Haar特征。那么看到这里,应该理解了下面2个问题:

在检测窗口通过平移+放大可以产生一系列Haar特征,这些特征由于位置和大小不同,分类效果也各异;
通过计算Haar特征的特征值,可以有将图像矩阵映射为1维特征值,有效实现了降维

在检测窗口通过平移+放大可以产生一系列Haar特征,这些特征由于位置和大小不同,分类效果也各异;通过计算Haar特征的特征值,可以有将图像矩阵映射为1维特征值,有效实现了降维

特征值标准化

从上图中发现,仅仅一个12*18大小的Haar特征计算出的特征值变化范围从-2000~+6000,跨度非常大。这种跨度大的特性不利于量化评定特征值,所以需要进行“标准化”,压缩特征值范围。假设当前检测窗口中的图像为i(x,y),当前检测窗口为w*h大小(例如图6中为20*20大小),OpenCV采用如下方式“标准化”:

  1. 计算检测窗口中间部分(w−2)∗(h−2)(w−2)∗(h−2)(w-2)*(h-2)的图像的灰度值和灰度值平方和:

    sum=∑i(x,y)sum=∑i(x,y)

    sum = \sum i(x,y)

    sqsum=∑i2(x,y)sqsum=∑i2(x,y)

    sqsum = \sum i^2 (x,y)

  2. 计算平均值:

    mean=sumw∗hmean=sumw∗h

    mean = {sum \over w*h}

    sqmean=sqsumw∗hsqmean=sqsumw∗h

    sqmean = {sqsum \over w*h}

  3. 计算标准化因子:

    varNormFactor=sqmean−mean2−−−−−−−−−−−−−−√varNormFactor=sqmean−mean2

    varNormFactor = \sqrt {sqmean - mean^2}

  4. 标准化特征值:

    normValue=featureValuevarNormFactornormValue=featureValuevarNormFactor

    normValue = {featureValue \over varNormFactor}

之后按照上述公式求出varNormFactor后,使用标准化后的特征值normValue与阈值对比

haar特征简单分析相关推荐

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

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

  2. R语言splines包构建基于logistic回归的自然样条分析:南非心脏病数据集、非线性:基函数展开和样条分析、你简单分析的不重要特征,可能只是线性不显著、而非线性是显著的

    R语言splines包构建基于logistic回归的自然样条分析:南非心脏病数据集.非线性:基函数展开和样条分析.你简单分析的不重要特征,可能只是线性不显著.而非线性是显著的 目录

  3. 三种强大的物体识别算法——SIFT/SURF、haar特征、广义hough变换的特性对比分析

    识别算法概述: SIFT/SURF基于灰度图, 一.首先建立图像金字塔,形成三维的图像空间,通过Hessian矩阵获取每一层的局部极大值,然后进行在极值点周围26个点进行NMS,从而得到粗略的特征点, ...

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

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

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

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

  6. 特征提取之——Haar特征

    本文有自己的原创,也有转载摘录的文章,转载部分在这里这里这里等等. 特征提取方法有很多种,比如说Haar特征,edgelet特征,shapelet特征,HOG特征,HOF特征,小波特征,边缘模板等等 ...

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

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

  8. 机器学习 之 Haar特征

    Haar特征 Haar特征原理综述 Haar特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征.它分为三类:边缘特征.线性特征.中心特征和对角线特征.用黑白两种矩形框组合成特征模板,在特征模板 ...

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

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

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

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

最新文章

  1. ES6入门概览二--数组
  2. java 文件上传ssm_ssm框架下实现文件上传
  3. ajax 同步怎么回调,Ajax jquery同步回调成功
  4. 模拟生态圈_电源工程师必备求生技能——经典20种模拟电路
  5. 秒级快速批量创建kvm虚拟机并指定IP地址和主机名
  6. UVA 254 Towers of Hanoi
  7. 第三季-第4课-Linux应用程序地址布局
  8. 【CoreBluetooth】iOS 系统蓝牙框架
  9. 中达优控触摸屏编程视频教程_YKBuilder(中达优控触摸屏编程软件)下载
  10. 一起自学SLAM算法:写在前面
  11. 3. 布莱叶盲文与二进制码
  12. 如何用电脑调试安卓手机浏览器上的网页
  13. swiper.js显示指定图片
  14. VUE 引用腾讯地图
  15. 【论文研读】基于BP 神经网络的 Q235 钢力学性能预测模型
  16. 一个网卡如何设置两个ip,(如何加装网卡,两网卡或多网卡)
  17. 苹果svg解析自适应长图
  18. 淘宝模板开发系列之SDK DEV REF
  19. java available用法_Java ObjectInputStream available()用法及代码示例
  20. rotate java 参数_java rotateLeft()和rotateRight()方法

热门文章

  1. 在页面超链接a前加上图标
  2. 主流浏览器以及兼容问题
  3. 【SQL基础】SQL查询语句实例
  4. ivx中字体显示_Windows 7 中的 SimSun-ExtB 是什么字体,为何与中易宋体 SimSun 显示出来不一样?...
  5. 短视频技术与市场动态
  6. 迅雷mac版精简教程
  7. 计算机 开机硬盘灯一直亮,硬盘灯一直亮,教您电脑硬盘指示灯一直亮怎么办
  8. Github Actions 云编译 OpenWRT LEDE 固件
  9. 维修三菱油妍服务器,三菱油研伺服驱动器常见报警AL17,AL19,AL1A
  10. 计算机考研培训中公,计算机408