18

我正在开发一个用于面部认证的 C++ 应用程序。首先,我必须检测人脸并对图像进行预处理。

  1. 对于人脸检测,我使用了 HaarCascadeClassifier。问题是这个工具或这个算法给了我一个面部区域,该区域由一个有点大的矩形检测到,该矩形覆盖了头发和一些背景。有没有办法改变这个矩形的尺寸?我使用了“frontalfacecascaadclassifier.xml”。
  2. 对于面部预处理,我想完全像这种技术一样进行面部对齐。我将如何实现这一目标?
4

9 回答 9

18

在给定图像中找到眼睛的准确位置绝非易事。用于在 OpenCV 中寻找眼睛的 Haar 级联会产生太多的误报而无用,而且这种方法对图像旋转不具有鲁棒性(虽然它可能会补偿轻微的旋转,但我不知道训练图像)。如果我是你,我会在http://scholar.google.com上进行广度优先搜索,以查找该研究领域的相关论文。

您需要一个强大的头部姿势估计来对齐面部图像。我自己做了一些研究,我认为在这里共享算法和代码很有用。我见过的最有趣的方法是:

于 2012-04-15T06:05:32.313 回答
8

然后你不能使用另一个 Haar 分类器来找到每只眼睛(眼睛很容易找到)然后假设这个人有两只眼睛,我们定义一个“水平”的脸来表示眼睛是水平的。

只需测量两只眼睛之间的角度并将图像旋转该角度即可。

angle = atan ( eye1.Y - eye2.Y ) / (eye1.X - eye2.X )
于 2012-04-13T15:36:41.387 回答
6

我在 Wild 项目页面的 Labeled Faces 中尝试了以下面部对齐代码。它工作得非常好,不需要检测面部特征点。C++ 代码可从以下网址下载:http: //vis-www.cs.umass.edu/faceAlignment/

如果您仍然希望找到面部关键点,我发现 Viola-Jones 检测器不是很健壮和准确。我个人推荐使用 Flandmark 人脸关键点检测器:http ://cmp.felk.cvut.cz/~uricamic/flandmark/ ,它更加健壮和准确。C 代码可以从上面的站点下载。

于 2012-12-11T07:05:06.240 回答
4

先进的面部对齐方法必须是这样的:

有监督的下降方法及其在人脸对齐中的应用 X. Xiong 和 F. De la Torre 在 CVPR 2013

它非常快速和有效。您可以查看他们的项目网站IntraFace

他们提供了一个易于使用的软件。但是,核心部分代码,即监督下降法(SDM)没有发布,它只是简单的线性回归,可以很容易地实现。

这里有一个演示它可以处理倾斜的脸(为了隐私问题,添加模糊并注意左上角的轴): https ://drive.google.com/file/d/0BztytuqPViMoTG9QaEpZWi1NMGc/edit ?usp=分享

于 2014-02-19T13:13:38.420 回答
1

检测未对齐的人脸会使人脸识别变得困难。有时您想修复对齐,有时排除未正确对齐的那些就足够了(例如,如果您正在检测视频流中的人脸)。我采用了后一种方法并训练了一个特殊的 Haar Cascade,以仅检测正确对齐、光线充足的人脸。详细信息:http ://rwoodley.org/?p=417 。

如果您使用我的级联,请告诉我它是如何为您工作的。我很好奇其他人会得到什么结果。它满足了我的需求。

于 2013-05-21T13:42:51.227 回答
1

我在这里使用 OpenCV 和 DLib 实现了它:https ://github.com/ManuBN786/Face-Alignment-using-Dlib-OpenCV

任何倾斜的面都可以使用我的代码对齐。

于 2018-02-21T17:32:56.303 回答
0

看看 CSIRO 人脸分析 SDK(网站和演示源代码)软件,它可以进行人脸对齐,跟踪 66 个基准点。它快速且非常准确。

于 2014-02-16T07:19:18.023 回答
0

在搜索了一整天的算法来实现这一点之后,我发现了 Hemlata 等人的“通过查找面部特征和倾斜面的倾斜角度进行人脸检测”。从 Google 切换到 DuckDuckGo 后。它支持以大于 45 度的角度倾斜的面。

至于如何在代码中实现,这是我目前正在研究的另一个问题,但至少这是一个起点。

于 2014-02-16T12:44:22.557 回答
0

对于人脸认证,可以使用dlib或者face_recognition来做,比现在的 opencv 非常方便和准确。

至于 dlib,人脸对齐可以在这里找到(C++ 代码)http://dlib.net/face_alignment.py.html

或在这里(python代码)https://www.pyimagesearch.com/2017/05/22/face-alignment-with-opencv-and-python/

算法论文名为Face Alignment at 3000 FPS via Regressing Local Binary Features由 dlib 实现。

于 2018-06-04T02:47:18.127 回答