10

我正在开发一个需要检测用户何时打哈欠的 iOS 应用程序。

我所做的是包括 Open CV 并使用 haar 级联查找面孔,然后在面孔内找到嘴巴(也使用 haarcascade)。

我遇到的麻烦是,我相信像 (face.y - mouth.y) < something = 打哈欠这样的事情很容易检测到打哈欠。

但是我遇到的问题是面部和嘴巴的矩形是“不稳定的”,我的意思是每次循环运行面部和嘴巴的矩形的 X 和 Y 值(显然)不一样。

有没有我可以使用的“张开嘴”haar 级联,或者我怎么知道用户何时张开嘴?

4

2 回答 2

11

一般来说,支持向量机 (SVM) 用于面部表情识别,如愤怒、微笑、惊讶等仍在积极发展的地方。谷歌搜索给你很多关于这个主题的论文,(甚至我的一个同学也做了这个作为他最后一年的项目)。为此,首先您需要训练 SVM,为此,您需要打哈欠和正常人脸的样本图像。

打哈欠几乎与惊讶相似,在这两种情况下都张开嘴。我建议您查看以下论文的第 3 页:Real Time Facial Expression Recognition in Video using Support Vector Machines(如果您无法访问链接,请按论文名称谷歌)

论文(甚至我的同学)使用了面部特征的位移向量。为此,您会在脸上找到一些特征点。例如,在论文中,他们使用了眼睛瞳孔、眼睑的极值点、鼻尖、嘴部区域(嘴唇)的极值点等。然后他们不断跟踪特征的位置并找到它们之间的欧几里得距离。它们用于训练 SVM。

查看以下两篇论文:

从人脸中提取特征点

使用基于 Gabor 特征的增强分类器的全自动面部特征点检测

看下面我所说的面部特征点的图像:

在此处输入图像描述

就您而言,我认为您正在 iPhone 中实时实现它。所以可能你可以避免眼睛的特征点(虽然不是一个好主意,因为当你打哈欠时,眼睛会变小)。但与之相比,嘴唇的特征点表现出更多的变化和优势。因此,仅在唇上实施可能会节省时间。(嗯,这一切都取决于你)。

唇部分割:已经在 SOF 中讨论过并查看这个问题:OpenCV 唇部分割

最后,我相信你可以找到很多关于谷歌搜索的细节,因为它是一个活跃的发展领域,而且有很多论文。

另一种选择

这个地区的另一个选择,我听过好几次了,是Active Appearance Model。但我对此一无所知。自己谷歌一下。

于 2012-06-10T12:00:03.990 回答
0

OpenCV 还具有人脸识别/检测功能(请参阅 openCV SDK 附带的示例)。我认为这些会是一个更好看的地方,因为 haar cascade 并没有真正按照你需要的方式分析面部表情。尝试运行示例并亲自查看 - 您将获得有关检测到的眼睛/嘴巴等的实时数据。

祝你好运

于 2012-06-10T07:01:36.780 回答