1.引言
本篇文章是人脸检测和人脸识别的原理的介绍。主要是Haar+Adaboost和和三大经典人脸识别算法其中的Eigenface的原理。
这是本项目的第三篇文章。
第一篇文章,主要介绍项目的任务和实验环境,点击阅读
第二篇文章,主要介绍opencv和相关模型,点击阅读。
第四篇文章,主要介绍PCA降维和人脸识别的原理,点击阅读。
第五篇文章,主要给出相关的代码,点击阅读。
2.正文
前言
首先说一下,现在好多博客都没弄懂什么是人脸识别什么是人脸检测,每次都点进去一个人脸识别的项目,结果就是一个简简单单的人脸检测。
人脸检测就是简单的在视频、摄像头或者图片中用框框标出人脸的位置,没有其他多余的标注,但是对于人脸识别,首先需要录入自己的人脸,再训练出模型,通过模型对视频、摄像头或者图片中的人进行检测+标注出名字等相关的信息。
打个简单的比方,人脸检测就是一条狗能做的:这里是个人脸,叫几声吓吓他。人脸识别则是一个小孩:这是我爹,这是我娘。
opencv实现人脸检测主要是通过haar级联分类器。
我在人脸检测部分将详细的介绍怎么来训练这个分类器。
opencv实现人脸识别有三个主要的算法:
EIgenface 特征脸算法
FisherFace算法
LBP局部二值直方图
我在人脸识别部分将详细的介绍特征脸算法的原理。
人脸检测原理
人脸检测的目标是找出图像中所有的人脸对应的位置,算法的输出是人脸外接矩形在图像中的坐标,可能还包括姿态如倾斜角度等信息。下面是一张图像的人脸检测结果:
虽然人脸的结构是确定的,由眉毛、眼睛、鼻子和嘴等部位组成,近似是一个刚体,但由于姿态和表情的变化,不同人的外观差异,光照,遮挡的影响,准确的检测处于各种条件下的人脸是一件相对困难的事情。