3D物体检测-Opencv

13

我尝试使用OpenCV提供的文档进行人脸识别。它可以很好地检测多个人脸,但是网站上没有关于3D物体检测或头部跟踪的数据。以下是代码和维基链接:

人脸识别

级联分类器

虽然Wiki提供了足够的关于人脸检测的信息,但是如您所见,未提供3D人脸识别方法。

我想了解与3D人脸识别和跟踪相关的项目,以便查看源代码,并尝试制作相同的项目。


我和你处于类似的位置,目前正在寻找一种识别和跟踪三维物体的方法。如果我找到任何可能帮助你的东西,我会在这里发布。 - hjweide
非常感谢。:) 你有关于可以使用的任何算法的想法吗? - praxmon
1
很抱歉,我在这个领域仍然是一个初学者,但我可以推荐你看一下SURF算法,或者观看这个视频。也许你可以像他那样使用一种不断更新的模板匹配方法。我还发现了另一个教程,觉得很有趣。祝你好运! - hjweide
您可以尝试将Voronoi图剖分和单应性变换相结合。这种方法至少需要面部可见,即不能识别头部背面,但可以扩大您的识别范围。您有特定的应用方案吗? - gankoji
1
是的,我需要某种告诉我脸部位置的东西,这样我就可以用口罩或其他物品遮住它。虽然我可以使用2D算法实现,但我还需要各个面部部位的深度信息。 :) - praxmon
4个回答

8
这可能有些晚了,但 Willow Garage 还有另一个名为点云库(Point Cloud Library,PCL)的项目,专门用于 3D 数据处理任务。人脸识别是他们用来推广该项目的其中之一。当然,所有这些都是免费的... http://pointclouds.org

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
你应该看一下主动形状模型主动外观模型,它们是你所描述的任务的模型。 OpenCV只提供2D检测方法,而参考文献中的方法(现在在该领域非常流行)跟踪分布在脸上的一组3D点以及描述其外观的纹理。

维基百科页面会给你一些实现这些方法的链接。

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


1

有很多方法。我只能指导你正确的方向。人脸识别示例通常提供眼睛的子检测。因此,您实际上知道面部和眼睛的位置。通过类似或其他方式,您还可以检测嘴唇。 现在,当您至少拥有对象(这次是面部)的三个点时,您可以使用三角测量计算其在房间中的3D位置。此示例的一部分存在于随OpenCV一起提供的find_obj.cpp中。只是这个示例使用来自SURF的x点,并基于此信息绘制矩形。还要查看CvFindHomography的其他内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接