人脸识别是指程序对输入的人脸图像进行判断,并识别出对应的人的过程。人脸检测是人脸识别的基础。

人脸存在性问题检测

在人脸检测中,主要任务是构造能够区分包含人脸不包含人脸的分类器。这些实例被分为“正类”(包含人脸图像)以及“负类”(不包含人脸图像)。

为了解决人脸存在的问题,在OpenCV中,可以调用已经训练好的级联分类器。训练分类器非常耗费时间。现成的一些分类器已经可以用来检测人脸及相关特征(例如眼睛和鼻子)、人类和其他物体。这些级联分类器以XML 文件存放在OpenCV源文件的data目录中,加载不同的联级分类器的XML文件就可以实现不同对象的检测。

通过级联分类器就能识别出来人脸,调整适当的参数,就能把人脸圈出来,如下图所示:

Android openCV人脸采集 opencv人脸检测原理_Android openCV人脸采集

分辨人脸

识别出来人脸之后就要开始分辨这脸是谁的。

Android openCV人脸采集 opencv人脸检测原理_Android openCV人脸采集_02

在OpenCV中,有多种算法用于人别识别。

LBHP(Local Binary Pattern Histogram,局部二值模式直方图)所使用的模式基于LBP算法。LBP是一种有效的纹理描述算子提出的,在表述图像局部纹理特征上效果出众。

EigenFace通常也被称为特征脸,他使用主成分分析(PCA)的方法实现将高纬度的人脸处理数据处理为低维数据(降维),再进行数据分析和处理,获取识别结果。

OpenCV人脸检测的EigenFaces方法缺点在于操作过程中会损失许多特征信息。Fisherface采用LDA(线性判别分析)实现人脸识别,是一种经典学习方法。

当然,这都是最基础的人脸识别方法,属于入门级别的。要是想更加专业和高精度识别人脸,还需要加入更多的训练集以及智能框架来使得功能更加精确和完善。希望写的这几篇博客能帮助到你。