Viola-Jones面部检测方法如何工作?

时间:2011-04-27 17:57:05

标签: c++ opencv viola-jones

请用几句话向我解释Viola-Jones人脸检测方法的工作原理。

2 个答案:

答案 0 :(得分:78)

Viola-Jones探测器是一个强大的,二元分类器构建的几个弱 探测器

Each weak detector is an extremely simple binary classifier

在学习阶段,训练一系列弱探测器以便进行训练 使用Adaboost获得所需的命中率/未命中率(或精确度/召回率) 为了检测对象,原始图像被分成几个矩形 补丁,每个补丁都提交给级联

如果矩形图像补丁通过所有级联阶段,那么 它被归类为“积极的” 该过程以不同的比例重复

enter image description here

  

实际上,在较低的水平,   物体探测器的基本组件   只是需要说的话   原始的某个子区域   图像包含一个istance   感兴趣的对象与否。那是   什么是二元分类器。

基本的弱分类器基于一个非常简单的视觉特征(那些 一种特征通常被称为“类哈尔特征”) enter image description here

Haar-like功能包含类本地 通过减去a的总和来计算的特征 该剩余部分的特征子区域 功能区域

enter image description here
这些特征的特点是它们易于计算,并且使用积分图像,计算效率非常高。

Lienhart介绍了一组延伸的类Haar特征(见图)

enter image description here
这些是标准的Haar式特征,已扭曲45度。 Lienhart最初没有使用扭曲的棋盘格Haar-like(x2y2),因为它们代表的对角线元素可以简单地用扭曲表示 但是很明显,这个功能的扭曲版本也可以实现和使用。

这些扭曲的类似Haar的特征也可以使用扭曲45度的整体图像快速有效地计算。唯一的实施问题是 扭曲的特征必须四舍五入为整数值,以便它们与像素边界对齐。此过程类似于缩放哈尔样时使用的舍入 更大或更小的窗户的功能,但一个区别是45度  扭曲特征,用于高度和宽度的整数像素数 特征意味着像素的对角线坐标将始终位于相同的对角线像素集上

enter image description here
这意味着与垂直和水平标准相比,可用的不同尺寸的45度扭曲特征的数量显着减少 对齐的功能。

所以我们有类似的东西: enter image description here

关于公式,使用积分图像快速计算类哈尔特征看起来像:

enter image description here

最后,here is a c++ implementation使用了Ivan Kusalic的ViolaJones.h

查看完整的c ++ project go here

答案 1 :(得分:3)

Viola-Jones探测器是一个强二进制分类器构建的几个弱探测器。每个弱检测器都是一个非常简单的二元分类器

检测由以下部分组成:

Haar Filter:从图像中提取特征到calssify(特征用于编码特殊领域知识)

Integral Image:允许非常快速的功能评估

Cascade Classifier:级联分类器由多级过滤器组成,用于对图像(图像的滑动窗口)进行分类是一个面。

以下是如何检测图像中的脸部的概述。

enter image description here

  

检测窗口在整个图像提取特征周围移动(由haar filter计算Integral Image,然后将提取的特征发送到Cascade Classifier以对其进行分类(如果它是面部)。滑动窗口逐个像素地移动。每次窗口移动时,窗口内的图像区域都将通过级联分类器。

Haar Filter:您可以了解过滤器可以提取eyesbridge of the nose等功能。

enter image description here

Integral Image:允许非常快速的功能评估

enter image description here

Cascade Classifier

  

级联分类器由多级过滤器组成,如下图所示。每次滑动窗口移动时,滑动窗口内的新区域将逐级地通过级联分类器。如果输入区域未能通过阶段的阈值,则级联分类器将立即拒绝该区域作为面。如果一个区域成功通过所有阶段,它将被分类为面部候选者,可以通过进一步处理来细化。

enter image description here

更多详情:

首先,我建议您阅读源文件Rapid Object Detection using a Boosted Cascade of Simple Features,以便对该方法有一个概述。

如果您无法清楚地了解它,可以查看Viola-Jones Face DetectionImplementing the Viola-Jones Face Detection AlgorithmStudy of Viola-Jones Real Time Face Detector了解详情。

这是一个python代码Python implementation of the face detection algorithm by Paul Viola and Michael J. Jones

matlab代码here