哈尔特征的官方解释这里就不费口舌了,这个方法最主要的优点就是可以被快速的计算,所以应用在很多实时系统中。
如图中所示,哈尔特征分为三大类:
(1) 边缘特征
(2)线性特征
(3)中心对称特征
特征值 = 白-黑
既图中白色矩形内的像素和-黑色矩形内的像素和,这里是在白色矩形和黑色矩形大小相等的情况下。如果白色矩形和黑色矩形大小不一样,则要进行归一化处理,使黑白点像素个数相同,比如2-(a)所示的特征,就要将黑色矩形的像素和乘以2再进行计算。
下图中是从Opencv中训练好的分类器中提取出的几个特征矩形。第一个矩形最能代表人眼和鼻子的特征。眼睛比脸颜色要深,鼻梁两侧比鼻梁颜色要深。
哈尔特征的计算离不开积分图integral image,利用积分图能够在多种尺度下,使用相同的时间来计算不同的特征。
积分图中每一个位置对应的值是该位置图像左上所有的像素值之和。这样需要计算一次积分图,就可以快速的计算出哈尔特征值来。
下面我们结合opencv中已经训练好分类器,再描述一下haar特征值的计算。
- <feature>
<rects>
<_>3 7 14 4 -1.</_>
<_>3 9 14 2 2.</_> </rects>
</feature>
<threshold>4.0141958743333817e-003</threshold>
<left_val>0.0337941907346249</left_val>
< right_val > 0.8378106951713562 </ right_val >两个矩形,分别表示黑色和白色区域。
rects: 第一第二位是起点(x,y)的坐标,第三位和第四位是矩形的宽和高,最后一个是系数,负数对应的是黑色矩形,2表示对已像素个数做归一化处理,haar特征就表示出来了。
threshold表示该弱分类器的对应的阈值,
其实图像是已经经过了归一化之后的图像,如果haart特征值大于right_val为若分类器的结果,否则左值left_val为弱分类器的结果。