3D物体检测-Opencv

Posted

技术标签:

【中文标题】3D物体检测-Opencv【英文标题】:3D Object Detection-Opencv 【发布时间】:2012-07-06 13:06:02 【问题描述】:

我已经尝试使用 OpenCV 使用他们的 wiki 上提供的文档进行人脸识别。它工作正常,可以检测多个人脸。但是,该站点上没有提供有关 3D 对象检测或头部跟踪的数据。下面提供了代码和 wiki 的链接:

Face recognition

Cascade Classifier

虽然 wiki 确实提供了有关人脸检测的足够信息,但您可能已经发现,但并未提供 3D 人脸识别方法。

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

【问题讨论】:

我和你的情况类似,我目前正在寻找一种识别和跟踪 3D 对象的方法。如果我遇到任何可能对你有帮助的东西,我会在这里发布。 非常感谢。 :) 您对可以使用的任何算法有任何想法吗? 恐怕我还是这个领域的初学者,但我可以建议你看看SURF算法,或者this clip。也许你可以像他一样使用一种不断更新模板匹配的形式。 Another tutorial 我觉得很有趣。祝你好运! 你总是可以看看结合 Voronoi 镶嵌和单应变换。这种方法将仅限于至少让面部可见,IE 没有后脑勺识别,但它可以扩大您的识别范围。您有什么特别的应用吗? 是的,它告诉我脸部的位置,这样我就可以用面具或其他东西遮住它。我可以使用 2D 算法来做到这一点,但我也需要脸部不同部位的深度。 :) 【参考方案1】:

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

【讨论】:

【参考方案2】:

从OpenCV 2.4.2开始,出现了人脸检测跟踪的头文件:opencv2/contrib/detection_based_tracker.hpp

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

【讨论】:

【参考方案3】:

您应该查看用于您描述的任务的Active shapes models 和Active Appearance Models。 OpenCV 只为您提供 2D 检测方法,而参考中的方法(现在在该领域非常流行)跟踪一组 3D 点分布在一张脸上加上一个纹理来描述它的外观。

***页面将为您提供一些上述方法实现的链接。

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

【讨论】:

【参考方案4】:

这可能来晚了,但 Willow Garage 正在运行另一个名为点云库 (PCL) 的项目,该项目完全专注于 3D 数据处理任务。人脸识别是他们用来宣传该项目的用例之一。当然,这一切都是免费的……

http://pointclouds.org

【讨论】:

以上是关于3D物体检测-Opencv的主要内容,如果未能解决你的问题,请参考以下文章

opencv 如何检测特定形状的物体

关于射线检测:3D物体点击 与UI检测

OpenCV-Python视频分析(移动物体检测,物体追踪)

OpenCV/EMGU (C#) 物体检测

OpenCV:如何检测视频中是不是有快速移动的物体?

使用 opencv 仅检测缓慢移动的物体