请用几句话向我解释Viola-Jones人脸检测方法是如何工作的。
发布于 2011-04-28 02:13:22
Viola-Jones检测器是一个强的、的二进制分类器,由几个弱检测器构建而成
Each weak detector is an extremely simple binary classifier在学习阶段,训练弱检测器的级联以获得期望的命中率/错失率(或精确度/召回率)。使用Adaboost检测对象,将原始图像划分为几个矩形块,每个矩形块被提交给级联
如果一个矩形图像块通过所有级联级联阶段,则将其分类为“正”。该过程在不同的尺度上重复。

实际上,在较低的层次上,对象检测器的基本组件只是需要说明原始图像的某个子区域是否包含感兴趣对象的存在。这就是二进制分类器所做的。
基本的弱分类器基于一个非常简单的视觉特征(这类特征通常被称为“类Haar特征”)

类Haar特征由一类局部特征组成,这些局部特征是通过从特征剩余区域的总和中减去特征子区域的总和来计算的。

这些特征的特点是它们很容易计算,并且使用积分图像,非常有效地计算。
Lienhart介绍了一组扩展的扭曲类Haar特征(见图)

这些是被扭曲了45度的标准的类似Haar的特征。Lienhart最初没有使用扭曲的棋盘类特征(x2y2),因为它们所代表的对角元素可以简单地使用扭曲的特征来表示,但是很明显,也可以实现和使用该特征的扭曲版本。
这些扭曲的Haar类特征也可以使用已经扭曲45度的积分图像快速有效地计算。唯一的实现问题是扭曲的特征必须四舍五入为整数值,以便它们与像素边界对齐。此过程与缩放较大或较小窗口的类Haar要素时使用的舍入类似,但一个不同之处在于,对于45度扭曲要素,用于要素高度和宽度的整数个像素意味着像素的对角坐标将始终位于同一对角线像素集上

这意味着与标准的垂直和水平对齐特征相比,可用的不同大小的45度扭曲特征的数量显着减少。
所以我们有类似这样的东西:

关于该公式,使用积分图像的类Haar特征的快速计算如下所示:

最后,使用Ivan Kusalic的ViolaJones.h的here is a c++ implementation
查看完整的c++ project go here
发布于 2018-06-15 19:11:42
Viola-Jones检测器是几个弱检测器的构建的强二进制分类器。每个弱检测器都是一个非常简单的二进制分类器
检测包括以下几个部分:
Haar Filter:从图像中提取特征到calssify(特征用于编码ad-hoc领域知识)
Integral Image:允许非常快速的特性评估
Cascade Classifier:级联分类器由多级滤波器组成,用于对图像(图像的滑动窗口)进行分类的是人脸。
下面是如何在图像中检测人脸的概述。

检测窗口围绕整个图像提取特征(通过
Integral Image计算的haar filter,然后将提取的特征发送到Cascade Classifier以识别它是否是人脸)。滑动窗口逐个像素地移动。每次窗口移动时,窗口内的图像区域将通过级联分类器。
Haar Filter:你可以理解过滤器可以提取eyes,bridge of the nose等特征。

Integral Image:允许非常快速的特性评估

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

有关更多详细信息,请参阅:
首先,我建议您阅读源文件Rapid Object Detection using a Boosted Cascade of Simple Features以对该方法有一个概括性的理解。
如果您不能清楚地理解它,您可以查看Viola-Jones Face Detection、Implementing the Viola-Jones Face Detection Algorithm或Study of Viola-Jones Real Time Face Detector以了解更多详细信息。
这是一段python代码Python implementation of the face detection algorithm by Paul Viola and Michael J. Jones。
matlab代码here。
https://stackoverflow.com/questions/5808434
复制相似问题