C / C ++中的健壮人脸检测?

时间:2009-05-25 02:25:45

标签: c algorithm computer-vision face-detection

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

6 个答案:

答案 0 :(得分:9)

使用OpenCV WikiHaar-like features上查看有关人脸检测的页面。

@floppydisk:同一个人发布了另一个project来实现这些类似Haar的脸部检测功能。

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

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

答案 1 :(得分:5)

您可以尝试查看此库:

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

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

答案 2 :(得分:3)

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

什么会妨碍你做四次比较,每次比较后旋转90°?

答案 3 :(得分:2)

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

答案 4 :(得分:1)

我唯一合作的是Visionics FaceIt。它运作得相当好,但最后我知道非常非常非常自由(无论是啤酒还是演讲)。

答案 5 :(得分:1)

我没有使用Haar功能进行人脸检测,但据我记得,它可能比特征脸/ pca更有效地检测到脸部。

我遇到了关于面部旋转问题的问题。我的想法也许你可以尝试形状匹配并尝试纠正对象。尝试并将其定位为正常的头部纵横比。在我与Eigenface的项目中,我从来没有这么远,但让我知道这是如何工作的。这在matlab中应该很容易。 :P