3

我正在开发一个需要检测视频流中人脸位置的应用程序,该应用程序使用放置在桌面高度的网络摄像头(稍微偏离用户一侧)。

我已经实现了一个版本的OpenCV(使用他们的 Haar 检测),它工作正常......问题是如果用户将头转向一边(或抬头),它往往会丢失面部的位置。

由于网络摄像头位于桌面上,因此它以 30 度角向上倾斜。OpenCV 检测算法是使用完全正面的图像进行训练的,而不是像我使用的那样的上角图像。我知道 OpenCV 也有一个可以使用的配置文件 Haar 文件。但从我的研究看来,配置文件检测的结果参差不齐。此外,我并不能真正控制图像的背景或照明......所以这有时也会影响 OpenCV 检测算法的功效。

所以,我想我要问的是......是否有其他人脸检测算法(希望是免费的,因为这是我大学研究的一部分)更适合检测这种设置的人脸?似乎某些内置网络摄像头(用于 Mac 和 PC)实际上具有相当强大的算法来检测面部(然后在面部上覆盖俗气的卡通图像)......但无论背景或照明如何,它们似乎都能正常工作。你有什么建议?谢谢。

4

2 回答 2

1

出于研究目的,您可以在 OpenCV 中使用 Haar 级联,如果您想商业化,情况会有所不同(在这种情况下,您需要考虑 LBP 级联)。请务必在参考文献中引用 Viola-Jones 的论文。

要改善人脸检测的结果,您有几种途径:

  • 单个图像检测:您可以将旋转图像发送到正面级联以解决一些可变性,而无需训练自己的级联
  • 单个图像检测但更多工作):在更接近应用程序的操作条件下训练您自己的级联
  • 视频流的稳定性(如网络摄像头等):这是通过在人脸检测周围添加一层跟踪来实现的。根据您对该主题的了解,您可以使用自己的过滤器,享受 OpenCV 的粒子或卡尔曼过滤器的乐趣,在人脸位置上实现简单的一阶或二阶低通滤波器或在检测到的人脸上实现 PID 跟踪器......

在处理视频流时,这些跟踪过滤器中的任何一个都会大大增强您的结果。

于 2013-03-21T14:30:11.880 回答
0

使用CLM 框架进行准确的实时人脸检测和人脸地标检测。系统运行示例:http: //youtu.be/V7rV0uy7heQ

您可能会发现它很有用。

于 2016-03-28T13:12:27.873 回答