Haar特征描述算子——疑惑与解惑

目录

    • 1.为什么Haar特征算子(模板)是如图所示的黑白?
    • 2.Haar特征算子(模板)是怎么样检测计算的?==怎么平移+缩放得到特征值?
    • 3.为什么积分图可以加快计算
    • 4.采用AdaBoost的原因是什么?

1.为什么Haar特征算子(模板)是如图所示的黑白?

Haar特征描述算子——疑惑与解惑_第1张图片
Haar特征算子主要应用于人脸检测,通过灰度值的变化来寻找特征。我们人脸有棱有角,对光的反射程度也是不尽相同的,这就造成了人脸上有亮和暗的区域,由于我们人眼一般对比较剧烈的亮度变化才有感觉,所以造成了对一些平缓的变换可能感知不到。但是计算机通过电子化处理可以清楚地知道像素值的变换。比如鼻梁这个区域就比鼻翼区域亮。因为鼻翼斜侧,光没有全部正对着摄像头反射进入感光元件,而是部分光被反射到别处去了。再说一个例子,比如眼睛区域就比眼部外的区域暗。想一想深井,越往深处看越暗。因为眼睛相对周围区域向内凹陷,所以造成了这个亮暗变化。
因为这个特点,算法作者就提出了这个公式,特征值=白色区域的像素值之和-黑色区域的像素值之和。因为检测的之前会把图像转换为灰度图像,故像素值就对应灰度值。
请谨记是和,和,和,这就是为什么会用到积分。离散值的累加和就是离散数据的积分运算。

2.Haar特征算子(模板)是怎么样检测计算的?==怎么平移+缩放得到特征值?

Haar特征描述算子——疑惑与解惑_第2张图片
首先需要一个检测框(绿色),其为所需检测的范围,这样可以减少不必要的计算。然后需要选定一个Haar特征算子(模板),这里用红色表示问题1中所示的模板。对于一幅图的检测会用到许多个模板,这也是为什么需要多个分类器的原因。

  1. 检测的开始。
  2. 模板选取最小的大小,如果是模板A,那就是像素为2的大小,黑白比1:1。
  3. 利用公式计算所在区域的特征值并记录下来
  4. 保持模板黑白之间的比例,分别XY轴增大。如模板A,此时便可以先沿着X轴先延长,变成4像素大小,特征值计算并记录;然后再沿着Y轴增大,作类似的计算。
  5. 直至模板大小跟检测框尺寸一样大,便不再进行下一步计算了。

模板的变换是多样化的,除第4条所提及的,还可以沿着X轴变化直至达到检测框的尺寸,在沿着Y轴作变换。如图所示,保持模板尺寸比例不变,作橙色的X轴向的变换,作粉色的Y轴向的变换,还是作灰色的XY轴的共同变换,都是可以的。这就是特征数量众多的原因。
总结一下:保持模板的尺度比例,作增大尺寸的变换,直至填满整个检测框。

Haar特征描述算子——疑惑与解惑_第3张图片

3.为什么积分图可以加快计算

首先说明一下如何做积分的。每次横向遍历,计算位置(i,j)的积分值,一行遍历后换行遍历计算,总体来看是作Z字型计算。其中第一行和第一列的值为单纯的累加值,除此之外,其他位置的积分值用如下公式计算。
截取B站Harr特征视频资料
其中ii为当前位置(i,j)的积分值,f(i,j)为位置(i,j)的灰度值。

积分图示例如下
Haar特征描述算子——疑惑与解惑_第4张图片
完成积分图后,利用其计算某区域的像素值之和。例如计算下图中D区域的像素值之和。sum(D) = ii(4)-ii(2)-ii(3)+ii(1)。 ii(4)表示A+B+C+D区域的像素值之和,ii(2)表示
A+B区域的像素值之和, ii(3)表示A+C区域的像素值之和。因为在相减的过程之中,A区域的值被减了两次,所以需补偿一次ii(1)。
以同样的方式计算sum©,两者作差就可以计算出特征值。

Haar特征描述算子——疑惑与解惑_第5张图片
积分图所用的思想可以说是动态规划。一次遍历计算,后续只需查询积分结果即可。若非如此,便需要次次计算一次当前位置的积分,耗费大量的计算资源。
通过特征模板的端点,锁定相关位置,然后查询积分图,将相关积分值进行计算,便可得到特征值结果。

4.采用AdaBoost的原因是什么?

Haar特征描述算子只是对图像特征的提取,如果不对其进行相应的判断,这特征就是一堆未开发的金矿。
AdaBoost是根据决策树得到了集成学习算法。不同特征对应着不同决策条件,该算法就是从特征内部的决策判断,到特征之间的决策做了一个整合。从外部看,将得到的特征数据交给该算法处理,得到结果——人脸与非人脸。
简单说明一下AdaBoost。一个模板会形成数量众多的特征值,通过归一化处理,缩小数值的范围,减少计算资源开销,然后将特征值与阈值结合形成决策树判断的条件,这样就可以形成弱分类器了。从单个弱分类器来看,它是针对某个特征下特征值的判断,就像层次分明的流水,能越过边缘高度的水(大于阈值的特征值),向下流出,单一流向。单个强分类器就是弱分类器汇聚起来,但是要注意的是,弱分类器之间相互独立。强分类器之间也是像层次分明的流水,不过这次针对的是特征之间的联动,这是为了进行多特征的判断来决定是否是人脸。

下图大致展示了上一段文字的思想。绿色框表示强分类器,红色框表示所分类器,黄色框表示弱分类器内部的决策。
Haar特征描述算子——疑惑与解惑_第6张图片

参考
1.Datewhale的计算机视觉基础(下)
2.博客——haar+adaboost结合讲解

你可能感兴趣的:(Haar特征描述算子——疑惑与解惑)