【问题标题】:How to check if an image contains a face and it is reasonably visible如何检查图像是否包含人脸并且是否合理可见
【发布时间】:2011-05-16 06:02:42
【问题描述】:

我不确定这是否可以解决,但我还是会问。

在我的公司中,我们处理大规模的招生营地,由 5 到 10 人组成的小团队去一个村庄招收人。注册涉及输入一些数据、捕获指纹并使用网络摄像头拍摄最终用户的面部照片。可以理解的是,注册是由我们将活动外包给的外部供应商完成的。

由于记录的数量非常庞大,因此尝试手动验证记录会使整个过程变慢。所以我们尽可能地自动化了很多事情,除了一件事,那就是检查使用网络摄像头拍摄的照片质量是否良好。

我知道,“优质”是一个模糊的术语,不能翻译为基于软件的解决方案。然而,当我试图给自己定义优良品质时,我发现了这个:http://en.wikipedia.org/wiki/Image_quality

现在,终于要问我的问题了,这些图像质量检查的哪些部分可以自动化。

注意:照片将以邮票大小打印在智能卡上。在 300 DPI 下,它们几乎不会是 100x125 像素。

干杯, 拉古

【问题讨论】:

  • 我知道有些新相机有“人脸识别功能”,显然有人在这方面投入了时间。祝你好运!

标签: c# validation machine-learning imaging


【解决方案1】:

Viola-Jones 算法是经典。 Here 你可能会找到一篇关于其实现的论文,但你会在那里找到很多资源。

我喜欢的图片:

Here 你可能会找到一个实现算法的 .Net 框架。 (免费)

Ps:请注意,某些外星生命形式可能会返回误报。

【讨论】:

  • 我担心.NET 实现的链接断开 - 但this 可能在这个领域...Accord.Vision.Detection.HaarObjectDetector ?
【解决方案2】:

【讨论】:

  • 其实这个想法还不错,大约在 Kinnect 发布前 6 个月,我在做“找到左右手并标记头部”,从看起来我可以发誓这是 Kinnect 正在捕获的输入。我认为 MS 正在使用它来改进其面部和手部检测算法。
【解决方案3】:

openCV 库有一些很棒的人脸检测代码。您可以使用 openCV 人脸检测作为图像质量的阈值来安装某些东西 - 如果它成功检测到人脸,那可能还不错? http://sourceforge.net/projects/opencvlibrary/

【讨论】:

  • 实际上我结束了使用这种技术。我使用了 EmguCV,一个围绕 OpenCV 库的 .NET 包装器,并使用了基于 HaarCascade 的人脸检测。为了消除误报,我还尝试寻找其他面部特征,例如眼睛、鼻子和嘴巴。如果找到至少 2 个特征,我的结论是照片质量可以接受。该系统已经上线几个月了,它似乎工作正常,除了一些光线昏暗的照片。
【解决方案4】:

人脸检测是一个非常活跃的研究课题和论文,一直发表在ECCV、ICCV等计算机视觉会议上。在今年的 ECCV2010 中,甚至还有一个workshop on face detection。所以,是的,它在合理的程度上是可以解决的。

如果我是你,我会构建一些非常简单的东西,但它可以处理照明、肤色和框架变化的基本要素。如果您知道照片通常是面部照片,则不需要像 Viola-Jones 这样复杂的东西。你应该建立一个面部照片验证系统(这张照片看起来像面部照片吗?)而不是一个人脸检测系统(这张照片中的人脸在哪里?)。

首先,只需检查图像中的基本信息 - 例如使用强度直方图来确保照明正常(不太亮;太暗),图像具有对比度(不同的阴影)等。

然后,您可以构建一个面部/面部照片验证系统 - 像经典的“Eigenfaces for Recognition”论文那样构建面部空间,然后确定每个面部照片是否足够像这个子空间中的面部照片。 (这是相当简单的技术,网上有很多代码可以做到这一点)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 2014-02-08
    相关资源
    最近更新 更多