本文主要是介绍eigenface,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
eigenface实现人脸识别
采用PCA方法,利用YALE的人脸数据库做人脸识别,15个人,165张图片,每张图片大小为100*100
这里yale文件中是源图片,通过changename.py将名字更改,存放到picture文件下
eigenface具体步骤
1.读取训练所需要的图片,这里使用subjectxx.normal.bmp文件,共15张图片,每张图片拉直为一个(1,100*100)的向量,合并成为一个(15,100*100)的大矩阵
import numpy as np
import cv2
import osdef loadImageSet(add):FaceMat = np.mat(np.zeros((15,100*100)))j =0for i in os.listdir(add):if i.split('.')[1] == 'normal':try:img = cv2.imread(os.path.join(add,i),0)#0表示读取灰度图except:print('load %s failed'%i)#变成一个向量j += 1return FaceMat
2.计算平均矩阵avgImg,得到偏差矩阵diffTrain(以下推导中记偏差矩阵为T)
FaceMat = loadImageSet('picture').T
avgImg = np.mean(FaceMat,1)
diffTrain = FaceMat-avgImg
3.计算协方差矩阵 S=TTT S = T T T ,注意到 T的大小为(100∗100,15) T 的 大 小 为 ( 100 ∗ 100 , 15 ) , S将会巨大(100∗100,100∗100) S 将 会 巨 大 ( 100 ∗ 100 , 100 ∗ 100 ) ,为了避免计算大矩阵特征值,特征向量,采用如下方法。
这篇关于eigenface的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!