人脸检测分类器haarcasade_frontalface_alt_xml文件中数据含义

来源:互联网 发布:手游网络枪战游戏大全 编辑:程序博客网 时间:2024/06/05 18:31

最近在读的一篇目标跟踪的论文中,使用了 MIL方法 ,而在做实验的时候,将其方法用在人脸识别中 ,在读 程序的时候,发现 作者用到了haar特征 ,使用了 opencv中的 一个很重要的 东西 就是 haarcasade_frontalface_alt_xml文件 ,但是读不懂其中的含义,懒得去读 前人的paper,于是网搜了一下,发现已经有人研究过了,呵呵,借来学一下 :

下面来自 http://beeway.net/tag/haar

opencv中提供的人脸识别分类器xml文件,看了Paul Viola和Rainer Lienhart的论文才大致明白。

<size>20 20</size><stages><_>...<!--trees--><_>   <!-- tree 0 -->   <_>       <!-- root node -->       <feature>          <rects>             <_>2 7 14 4 -1.</_>             <_>2 9 14 2 2.</_>          </rects>          <tilted>0</tilted>        </feature>        <threshold>3.7895569112151861e-003</threshold>        <left_val>-0.9294580221176148</left_val>        <right_val>0.6411985158920288</right_val>    </_></_>...</trees><stage_threshold>-1.3442519903182983</stage_threshold>...

size为分类器长宽,这里为20X20

xml文件中主要单元为tree节点,其中:

feature代表一个矩形特征;

rects表示矩形特征中矩形个数,2个或者3个,跟特征类型有关;

2 7 14 4 -1和2 9 14 2 2五元组中前2个数代表矩形的左上角顶点坐标(x,y),中间2个为矩形的长宽(w,h),最后一个权重a,跟矩形面积成反比,且特征中黑白区域此值是反号的。计算特征像素总数时即用这个矩阵的像素和乘以权重,加上另一个矩阵的像素和乘以权重;

tilted为0或者1,0代表正矩形,1代表旋转45度矩形;

threshold为弱分类器的阀值,
left_val为左值,
right_val为右值,
stage_threshold为强分类器阀值。
当弱分类器求出的特征值小于阈值时,左值为弱分类器结果,当大于阈值时,右值为弱分类器的结果,然后一个强分类器里面若干个弱分类器的结果之和如果大于强分类器的阈值,则强分类器输出为1,否则输出为0。

附论文(豆丁docin.com可以找到):
Paul Viola:Robust Real-time Object Detection
Rainer Lienhart:An Extended Set of Haar-like Features for Rapid Object Detection

------------------------------------------------------------------------------------------------------------------------------------------------

发现 在这个xml文件中,可以有很多特征,每一个特征都包含了features,rect,titled,threshold,left_val,right_val,stage_threshold等内容,可以看成是很多棵树,每一棵树代表一个特征


原创粉丝点击