使用OpenCV Haar-cascades进行人脸特征检测

时间:2017-03-17 01:54:05

标签: java opencv face-detection haar-classifier eye-detection

我正在Java使用OpenCV资源库来使用Face来检测EyesMouthLaptop Camera

到目前为止我做了什么:

  1. 使用VideoCapture对象捕获视频帧。
  2. 使用Face检测Haar-Cascades
  3. Face区域划分为Top区域和Bottom区域。
  4. Eyes区域内搜索Top
  5. Mouth区域内搜索Bottom
  6. 我面临的问题:

    • 首先,视频正常运行,突然变慢。

    主要问题:

    1. 高等级相机的分辨率是否适用于Haar-Cascades?

    2. 我是否必须以一定比例捕获视频帧?例如(100px X100px)

    3. Haar-Cascades图片中的Gray-scale效果更好吗?

    4. 不同的照明条件会有所不同吗?

    5. 方法detectMultiScale(params)到底做了什么?

    6. 如果我想进一步分析Eye BlinkingEye Closure DurationMouth YawningHead NoddingHead Orientation以检测疲劳(嗜睡)使用Support Vector Machine,任何建议?

    7. 感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

以下article会给你一个概述内幕的内容,我强烈建议您阅读这篇文章。

  

做高级相机'决议对Haar-Cascades有效吗?

不一定,cascade.detectMultiScale有参数可以针对各种输入宽度,高度场景进行调整,例如minSizemaxSize,这些是可选参数但是,你可以调整这些以获得如果您可以控制输入图像大小,则可以进行稳健的预测。如果您将minSize设置为较小的值并忽略maxSize,那么它也适用于较小和较高分辨率的图像,但性能会受到影响。另外,如果您现在想象一下,为什么高分辨率图像和低分辨率图像之间没有差异,那么您应该考虑cascade.detectMultiScale内部将图像缩放到较低分辨率以提高性能,这就是定义{{}的原因。 1}}和maxSize对于避免任何不必要的迭代很重要。

  

我是否必须以一定比例捕获视频帧?例如   (100px X100px)

这主要取决于你传递给minSize的参数。我个人认为cascade.detectMultiScale对于帧中较小的脸部检测来说太小了,因为在将帧尺寸调整到较小尺寸时某些特征会完全丢失,100 x 100高度依赖于渐变或特征在输入图像中。

但是如果输入框架只有面部作为主要部分,并且没有其他较小的面孔悬在后面那么你可以使用cascade.detectMultiScale。我已经测试了一些大小为100 X 100的样本面,但效果非常好。如果不是这种情况,那么100 x 100 px宽度应该可以正常工作。但是,您需要调整参数以获得准确性。

  

Haar-Cascades在灰度图像中的效果更好吗?

它们仅适用于灰度图像。

article中,如果您阅读第一部分,您将会发现它的面部检测包括检测图像中的许多二进制模式,这基本上来自ViolaJones,论文这是该算法的基础。

  

不同的照明条件会有所不同吗?

可能在某些情况下,很大程度上哈尔特征是照明不变的。

如果您正在考虑将不同的光照条件视为在绿光或红光下拍摄图像,那么它可能不会影响检测,哈尔特征(因为依赖于灰度)与图像无关。输入图像的RGB颜色。检测主要取决于输入图像中的梯度/特征。因此,只要在输入图像中有足够的梯度差异,例如眉毛的强度低于前脑等,它就可以正常工作。

但考虑输入图像背光或环境光线很低的情况,在这种情况下,可能无法找到某些突出的特征,这可能导致未检测到面部。

  

方法detectMultiScale(params)究竟做了什么?

我想,如果你已经阅读了article,那么你必须要了解它。

  

如果我想进一步分析眼睛眨眼,闭眼   持续时间,嘴巴打哈欠,头部点头和头部方向检测   疲劳(困倦)通过使用支持向量机,任何建议?

不,我不建议您使用SVM执行这些类型的手势检测,因为运行10个不同的级联以结束当前的面部状态会非常慢,但我建议您使用一些面部标志检测框架,例如Dlib,您也可以搜索其他一些框架,因为dlib的模型大小接近100MB,如果您想将其移植到移动设备,它可能不适合您的需求。所以关键是**面部地标检测**,一旦你得到标记的全脸,你可以得出结论,如果嘴巴打开或眼睛闪烁,它可以实时工作,所以你的视频处理赢了&# 39;受苦很多。