2012-07-06 150 views
10

我尝试使用OpenCV使用他们的wiki上提供的文档识别人脸。它的工作正常,它可以检测多个面。然而,网站上没有提供关于3D物体检测或头部追踪的数据。对代码和维基链接下面提供:三维物体检测-opencv

Face recognition

Cascade Classifier

虽然维基确实提供了有关人脸检测足够的信息,你可能已经发现了,都没有提供的3D面部识别方法。

我想知道有关3D人脸识别和跟踪的项目,以便我可以看到源代码并尝试使项目执行相同的操作。

+0

我在相似的位置给你,我目前正在寻找一种方法来识别和跟踪的3D对象。如果我遇到任何可能帮助你,我将它张贴在这里。 – casper 2012-07-24 13:41:28

+0

谢谢。 :)你有任何想法可以使用任何算法? – 2012-07-25 05:35:17

+1

我怕我仍然非常这一领域的初学者,但我可以推荐你看看[SURF(http://opencv.willowgarage.com/documentation/c/feature_detection.html)算法,或在[此片段](http://www.youtube.com/watch?feature=endscreen&NR=1&v=G5GLIKIkd6E)。也许你可以像他一样使用不断更新的模板匹配形式。我发现有趣的[另一个教程](http://www.morethantechnical.com/2010/03/19/quick-and-easy-head-pose-estimation-with-opencv-w-code/)。祝你好运! – casper 2012-07-25 13:25:28

回答

6

这可能来晚了,但Willow Garage的还有另外一个项目运行称为点云中图书馆(PCL),它完全专注于三维数据处理任务。人脸识别是他们用来宣传项目的用例之一。当然,所有这一切都是免费的......

http://pointclouds.org

1

有很多方法。我只能指出你正确的方向。人脸识别示例通常提供眼睛的次检测。所以实际上你知道面部和眼睛的位置。以类似或其他方式,你也可以检测嘴唇。 现在,如果至少有三个物体(此时为脸部),则可以使用三角测量计算其在房间中的3D位置。这部分示例存在于find_obj.cpp中,它以OpenCV为例。只是这个例子使用了SURF的x个点,并根据这个信息绘制了矩形。查看CvFindHomography的其他内容。

1

由于OpenCV的2.4.2,出现了用于面部检测跟踪头文件:opencv2 /了contrib/detection_based_tracker.hpp

头文件定义了一个名为DetectionBasedTracker类。它定义的跟踪机制在后台使用haar级联来检测对象。跟踪比OpenCV Haar实现要快得多(但是,有些人发现它不太准确)。 我个人发现它在Android设备上工作得非常好。实现人脸检测和跟踪一些示例代码在这里找到: http://bytesandlogics.wordpress.com/2012/08/23/detectionbasedtracker-opencv-implementation/

1

你应该看看Active shapes modelsActive Appearance Models这是你所描述的任务。 OpenCV为您提供了唯一的2D检测方法,而参考方法(现在在该领域非常流行)跟踪分布在脸上的一组3D点加上纹理来描述其外观。

维基百科页面会给你一些指向上述方法实现的链接。

如果你想知道头在世界坐标中的3D参数(例如用于注视检测),那么你应该谷歌的关键字“3D头部跟踪”和“头部姿态估计”。