19

我正在寻找一个强大的人脸检测算法/库,最好是用 C 语言(C++ 也可以;如果需要,我可以移植其他语言)。我过去使用过OpenCV的实现,但我不认为它对旋转是不变的。不需要是实时的,但也不应该太慢(也许每张照片一两秒就可以了)。寻求高可靠性,而不是很多误报。有谁知道任何好的实现?

4

6 回答 6

9

OpenCV Wiki上查看有关使用Haar-like features进行人脸检测的页面。

@floppydisk:同一个人发布了另一个项目,该项目实现了这些类似 Haar 的面部检测功能。

这个概念并不难理解,你甚至可以自己实现它。也许最困难的部分是构建增强分类器的级联(但 openCV 已经很容易实现所有这些!)

可以在人脸检测中使用的其他一些可以使仿射变换不变的方法包括:

  • 带有 SVD/PCA 的特征脸
  • 傅里叶描述符
  • 统计形状模型(特别是本文
于 2009-09-27T06:33:58.710 回答
5

您可以尝试查看此库:

http://vasc.ri.cmu.edu/NNFaceDetector/

它显示在旋转的测试用例之一中。正如你所看到的,它是作为一篇论文完成的,所以如果你愿意,你也可以阅读那篇论文。

于 2009-05-25T06:48:04.217 回答
2

在 Code Project 上,有人发布了面部识别项目的详细描述,以及该项目的一些 C++ 源代码和他使用的库的链接。他的算法侧重于使用颜色差异来查找皮肤斑块,然后测试 19x19 像素的图片是否与人脸匹配。我不熟悉面部识别的所有库,但阅读了他的一些代码,许多方法和函数的名称中都有 CV,所以他可能正在使用 OpenCV 库,但我不熟悉它,所以我我不能 100% 确定。但是,他确实提供了很多关于他的应用程序和源文件的解释,所以这可能是一个很好的起点。

于 2009-05-26T17:45:15.063 回答
2

马克 - 你说 OpenCV 可能不会旋转不变

什么会阻止您进行四次比较,每次比较后旋转 90°?

于 2009-09-27T06:02:35.907 回答
1

我唯一使用过的是 Visionics FaceIt。它运作得相当好,但最后我知道离自由非常、非常、非常远(无论是在啤酒中还是在演讲中)。

于 2009-05-25T02:31:06.933 回答
1

我没有使用 Haar 特征进行人脸检测,但据我所知,它在检测人脸方面可能比 eigenfaces/pca 更有效。

我遇到了关于面部旋转问题的问题。我的想法是也许你可以尝试形状匹配并尝试纠正对象。尝试将其定向为正常的头部纵横比。在我的 Eigenface 项目中,我从未走得那么远,但请告诉我它是如何工作的。这在matlab中应该很容易。:P

于 2009-09-27T07:53:49.660 回答