最近在学习人脸识别算法,看了Opencv自带的Eigenfaces人脸识别算法,算法的主要思想是利用PCA(Principal Component Analysis)将人脸图像数据高维空间映射到底维空间,将待识别图像低维空间数据与训练样本低维空间数据比较达到识别的目的, 主要实现原理如下:
1. 设置参数和加载数据
1.1 设置主成份数num_components和误差距离阈值threshold
1.2 用vector<Mat> imgs和vector<int> labels分别存储各图像数据和图像对应的标签;
注:如果图像对应标签相同证明是同一个人;
2. 训练模型
2.1 数据格式转换
假设训练样本有N个人,各图像大小为w*h;则按行为主序将imgs转换为行数为N,列数为w*h的矩阵S,将labels存储为行数为N列数为1的矩阵;
2.2 PCA