2011-03-23 132 views
5

我想知道,脸部识别如何正确工作?因为每个人都有不同的面孔,所以你无法检测到一些“一般”的面孔或其他东西。脸部识别

+2

确实!我曾经看过一个人的眼睛......甚至三个人! – Mauricio 2011-03-23 22:28:03

+0

您是否尝试过在线搜索文章?我认为你会找到有用的信息,然后你可以问Stack Overflow的问题来深入了解你感兴趣的细节。 – Kai 2011-03-23 22:32:43

+0

哈哈,哈哈,p ..! – 2011-03-23 22:33:20

回答

11

Jun Zhang et al。 (1997)调查适用于计算机视觉,每个统计分析的在其自己的权利的值得注意域面部识别的三种不同的方法:

1)特征脸算法
2)弹性匹配
3)Autoassociation和分类网

本征脸方法使用某种形式的降维方法(如PCA)编码人脸图像之间的统计变异,其中特征空间中产生的特征差异不一定对应于孤立的面部特征,例如眼睛,耳朵和鼻子(换句话说,特征向量的不可缺少的组成部分不是预先确定的rmined)。

弹性匹配生成对应于脸部特定轮廓点(例如眼睛,下巴,鼻尖等)的节点图(即线框模型),并且识别基于图像图与已知数据库。由于图像图可以在匹配过程中旋转,因此该系统对于图像中的大幅变化趋于更强健。

分类网络识别利用了与弹性匹配相同的几何特征,但是通过作为监督机器学习技术(通常涉及使用支持向量机)从根本上不同。

尽管当照明或面部对齐变化很大时,特征脸检测的性能可能会低于其他方法,但它具有易于实现,计算效率高以及能够以无监督方式识别面部的优点,因此倾向于是事实上的标准。即使特征向量提取处理不同,许多最先进的检测技术也依赖于识别之前的某种形式的降维。

5

在这里你可以找到答案:Face recognition

每一张脸有许多,可区分的标志,不同的波峰和波谷组成的面部特征。 FaceIt将这些地标定义为节点。每个人脸都有大约80个节点。其中一些由软件测量的是:

* Distance between the eyes 
* Width of the nose 
* Depth of the eye sockets 
* The shape of the cheekbones 
* The length of the jaw line 

这些节点被测量创建一个数字代码,称为面印,代表数据库中的面部。

1

这是一个复杂的问题,需要大量的学习。我建议你首先看OpenCV - http://opencv.willowgarage.com/wiki/ - 一个包含教程等的计算机视觉库。部分是关于不是一个“普通面孔”,而是关于挑选功能,然后运行一个度量标准 - 比如说有多远或这些功能的相对定位。

4

一个好的开始方法是阅读主成分分析(PCA,也称为特征脸),Fisher线性判别分析(LDA)和支持向量机(SVM)。这些分类方法对人脸分类非常有用。

OpenCV已经包含了PCASVM的优秀实现。用于C++ OpenCV的人脸识别和分类代码的优秀资源是this website

一个网站提供资源和链接到大多数相关的脸部分类方法的文件是this one

一个很好解释的PCA特征脸和LDA例子,在Matlab中有示例代码,这对我的第一张脸分类程序is here非常有用。