新版本的OpenCV加入FaceRecognizer类,用于进行人脸识别,支持Eigenfaces、Fisherface、Local Binary Patterns Hisograms算发,对应函数分别是createEigenFaceRecognizer()、createFinsherFaceRecognizer()、createLBPHFaceRecognizer()。
我们的大脑会针对不同的场景(线、边、角或者运动等)的局部特征有专门的神经细胞做出反应。显然大脑没有把眼前的世界看成零散的块块,我们的视觉皮层必须以某种方式把不同的信息转化成有用的模式。人脸自动识别就是如何从一幅图像中提取有意义的特征,然后把它对他们进行分类。基于几何特征的人脸识别是最直观来进行人脸识别的方式之一。通过标记点(眼睛、耳朵、鼻子等的位置)用来构造一个特征向量(点与点之间的距离、角度等)。通过计算测试和训练图像的特征向量的欧式距离来进行识别。这样的方法对于光照变化很稳健,但也有很大的缺点:标记点的确定是很复杂的,即使是使用最先进的算法,单靠几何特征不能提供足够的信息用于人脸识别。
特征脸的方法是使用一个全面的方法来识别人脸,面部图像是一个点,这个点是从高维图像空间找到它在低维空间表示,这样分类变得很简单。低维子空间是使用主元分析(Principal Component Analysis,PCA)找到的,他可以找到拥有最大方差的那个轴。虽然这样的转换是从最佳重建角度考虑的,但是它没有把标问题考虑进去。如果变化的是基于外部来源,比如光照。轴的最大方差不一定包含任何有鉴别性的信息,因此此时分类是不可能的。因此,一个使用线性鉴别(Linear Discriminant Analysis,LDA)的特定类投影方法被提出来解决人脸识别问题。其中一个基本方法就是,使类内方差最小的同时,使类外方差最大。
最近几年,各种局部特征提取方法出现。为了避免输入的图像的高维数据,仅仅使用的局部特征描述图像的方法被提出,提取的特征对局部遮挡、光照变化、小样本等情况更强健。
有关局部特征提取的方法有Gabor Waelets,离散傅立叶变换,局部二值模式。
文章评论(0条评论)
登录后参与讨论