网站链接: ngui
当前位置: 首页 > 学习教程  > 编程语言

机器学习之PCA算法的人脸图像识别-平均脸的计算(详细操作步骤)

2020/11/8 17:32:53 人评论 文章标签: 平均脸

前言 PCA算法介绍 PCA算法的步骤: 1:求出每一列的平均值,让该列的元素减去求出的平均值 2:求该矩阵的协方差矩阵 3:求特征值、特征矩阵 4:保留主要的成分 这次讲PCA算法的前期准备工作,即收集……

前言

PCA算法介绍
PCA算法的步骤:
1:求出每一列的平均值,让该列的元素减去求出的平均值
2:求该矩阵的协方差矩阵
3:求特征值、特征矩阵
4:保留主要的成分

这次讲PCA算法的前期准备工作,即收集朋友的照片,自拍照。以不同的角度拍摄十张照片。然后用PS等图像处理软件对照片进行处理,照片分辨率为92X112像素,72分辨率,8位深度,并将图像变为灰度图像,如下图所示。
在这里插入图片描述将图像保存为JPG格式和PGM格式,JPG格式方便查看,PGM格式让程序进行读取,获取数据。每个人收集十张照片,以0-9进行命名。
在这里插入图片描述因为肖像问题,就不给大家显示人物的图像了。做好这个之后,我们就可以使用jupyter notebook进行编程了。

jupyter notebook编程程序
首先先引入

import numpy as npimport mathimport matplotlib.pyplot as pltimport matplotlib.image as mpimg

读取第一张照片,并让其显示出灰色图像。

img = mpimg.imread('./face_image/0/0.pgm')plt.imshow(img,cmap='gray')

将像素的长和宽进行定义

img_height, img_width = mpimg.imread('./face_image/0/0.pgm').shape #照片像素

通过循环语句一次读取照片的数据,并将数据集保存到vectorized_images中。

#读取train数据vectorized_images = []for image_data in range(7):image_data > 7img_path ='./face_image/' +  str(image_data) + '/'+'{0}.pgm'for image_no in range(0, 9):img = mpimg.imread(img_path.format(image_no))vectorized_images.append(img.ravel())# ravel函数是 numpy 的函数: 将多维数组中的元素变成一个一维数组vectorized_images #这是一个list对象,里面每一个一维数组代表一张图片

显示出数据集中的照片

vectorized_images[0].reshape((img_height, img_width))plt.imshow(vectorized_images[-1].reshape((img_height,img_width)),cmap="gray")

显示出所有的数据集的照片,并将其加上相应的label

#显示所有的train datanrows = int((img_per_person)/9)ncols = 9 fig, axes = plt.subplots(nrows,ncols, figsize = (25, 13))title = 'face {0}'for i in range(nrows):for j in range(ncols):axes[i,j].imshow(vectorized_images[i*9+j].reshape((img_height,img_width)),cmap="gray")axes[i,j].set_title(title.format(j))for ax in axes.ravel():ax.axis('off')

读取出后的结果为:
在这里插入图片描述

gamma = np.array(vectorized_images) #把list对象变成数组print(gamma.shape) #63行,10304列print(gamma)

计算平均脸

average_face = np.mean(gamma, axis = 0) #axis = 0:压缩行,对各列求均值,返回 1* n 矩阵print(average_face)

最终将平均脸显示出来

plt.imshow(average_face.reshape((img_height,img_width)),cmap="gray")
本文链接: http://xiahunao.cn/news/show-61981.html

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?