我正在开发面部身份验证的C ++应用程序。首先,我必须检测面部并预处理图像。
答案 0 :(得分:18)
在给定图像中找到眼睛的准确位置远非微不足道。用于在OpenCV中找到眼睛的Haar级联产生太多的假阳性是有用的,而且这种方法对于图像旋转不会很稳健(它可以补偿轻微的旋转,但我不知道训练图像)。如果我是你,我会在http://scholar.google.com开始对这个研究领域的相关论文进行广度优先搜索。
您需要一个强大的头部姿势估计来对齐脸部图像。我自己做了一些研究,我认为共享算法和代码在这里很有用。我见过的最有趣的方法是:
Gary B. Huang,Vidit Jain和Erik Learned-Miller。 复杂图像的无监督联合对齐。 2007年计算机视觉国际会议(ICCV)。(Project page),(PDF Online available),(Source code)
X. Zhu,D. Ramanan。 野外计算机视觉和模式识别中的人脸检测,姿态估计和地标定位(CVPR)2012年6月,罗德岛普罗维登斯。(Project page),(PDF Online available),{{3} }
答案 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)
面部对齐的最先进的方法必须是这样的:
非常快速有效。您可以查看他们的项目网站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 demos,source code)软件,它确实面对齐,跟踪66个基准点。它快速而且非常准确。
答案 7 :(得分:0)
在整天搜索完成此算法的算法后,我找到了Hemlata等人的“Face Detection By Finding The Facial Features And The Angle of Inclination of Tilted Face ”。从谷歌切换到DuckDuckGo之后。它支持以大于45度的角度倾斜的面。
至于如何在代码中实现,这是我目前正在处理的另一个问题,但至少这是一个起点。
答案 8 :(得分: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实现。