如何对齐面部图像c ++ opencv

时间:2012-04-13 15:15:38

标签: c++ opencv face-detection face-recognition

我正在开发面部身份验证的C ++应用程序。首先,我必须检测面部并预处理图像。

  1. 对于面部检测,我使用了HaarCascadeClassifier。问题是这个工具或这个算法给了我一个面部区域,由一个小大的矩形检测到,它可以吸收头发和一些背景。有没有解决方案来改变这个矩形的尺寸?我使用了“frontalfacecascaadclassifier.xml”。
  2. 对于面部预处理,我希望完全像this technique那样进行面部对齐。我将如何完成这项工作?

9 个答案:

答案 0 :(得分:18)

在给定图像中找到眼睛的准确位置远非微不足道。用于在OpenCV中找到眼睛的Haar级联产生太多的假阳性是有用的,而且这种方法对于图像旋转不会很稳健(它可以补偿轻微的旋转,但我不知道训练图像)。如果我是你,我会在http://scholar.google.com开始对这个研究领域的相关论文进行广度优先搜索。

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

答案 1 :(得分:8)

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

只需测量两只眼睛之间的角度,然后按该角度旋转图像。

angle = atan ( eye1.Y - eye2.Y ) / (eye1.X - eye2.X )

答案 2 :(得分:6)

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

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

答案 3 :(得分:4)

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

Supervised Descent Method and its Application to Face Alignment X. Xiong and F. De la Torre in CVPR 2013

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

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

此处显示可以处理倾斜面部的演示(出于隐私问题,添加模糊并注意左上角的轴): https://drive.google.com/file/d/0BztytuqPViMoTG9QaEpZWi1NMGc/edit?usp=sharing

答案 4 :(得分:1)

检测未对齐的面部会使面部识别变得困难。有时您想要修复对齐,有时排除未正确对齐的对齐(例如,如果您正在检测视频流中的面)。我采用了后一种方法并训练了一个特殊的Haar Cascade来检测正确对齐,光线充足的脸部。详情请见http://rwoodley.org/?p=417

如果你使用我的级联让我知道它是如何工作的。我很好奇其他人会得到什么结果。它满足了我的需求。

答案 5 :(得分:1)

我在这里使用OpenCV& amp; DLib:https://github.com/ManuBN786/Face-Alignment-using-Dlib-OpenCV

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

答案 6 :(得分:0)

看看CSIRO面部分析SDK(website and demossource code)软件,它确实面对齐,跟踪66个基准点。它快速而且非常准确。

答案 7 :(得分:0)

在整天搜索完成此算法的算法后,我找到了Hemlata等人的“Face Detection By Finding The Facial Features And The Angle of Inclination of Tilted Face ”。从谷歌切换到DuckDuckGo之后。它支持以大于45度的角度倾斜的面。

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

答案 8 :(得分:0)

对于面部身份验证,您可以使用dlibface_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实现。