前一篇文章分析了Haar特征,包括Haar特征生成、特征值计算和含义。这一篇则主要分析一下2个内容:

缩进1. OpenCV中的Adaboost级联分类器的结构,包括强分类器和弱分类器的形式;

缩进2. OpenCV自带的XML分类器中各项参数的含义,如internalNodes和leafValues标签里面的一大堆数字的意义。缩进下面进入正题。

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

缩进众所周知,OpenCV中的Adaboost级联分类是树状结构,如图1,其中每一个stage都代表一级强分类器。检测窗口通过所有的强分类器时才被认为是目标,否则拒绝。实际上,不仅强分类器是树状结构,强分类器中的每一个弱分类器也是树状结构

【人脸检测】OpenCV中的Haar+Adaboost级联分类器分解(三):级联分类器结构与XML文件含义_目标检测

图1 强分类器和弱分类器示意图

缩进这篇文章将结合OpenCV-2.4.11中自带的haarcascade_frontalface_alt2.xml文件介绍整个级联分类器的结构。需要说明,自从2.4.11版本后所有存储得XML分类器都被替换成新式XML,所以本文对应介绍新式分类器结构。

(一)XML的头部

缩进在了解OpenCV分类器结构之前,先来看看存储分类器的XML文件中有什么。图2中注释了分类器XML文件头部信息,括号中的参数为opencv_traincascade.exe训练程序对应参数,即训练时设置了多少生成的XML文件对应值就是多少(如果不明白,可以参考我的前一篇文章)。

【人脸检测】OpenCV中的Haar+Adaboost级联分类器分解(三):级联分类器结构与XML文件含义_项目_02

图2 分类器XML文件头部含义

(二)弱分类器结构

缩进之前看到有一部分文章将Haar特征和弱分类器的关系没有说清楚,甚至有些还把二者弄混了。其实Haar特征和弱分类器之间的关系很简单:

更多文章请关注《万象专栏》