opencv实现Eigenface人脸识别 | 您所在的位置:网站首页 › 人脸识别操作方法 › opencv实现Eigenface人脸识别 |
自己用opencv实现EigenFace 人脸识别的训练与识别、与重构过程。 实验目的和要求自己写代码实现EigenFace 人脸识别的训练与识别、与重构过程,要求如下: 假设每张⼈脸图像只有一张人脸,且两只眼睛位置已知(即可人工标注给出)。每张图像的眼睛位置存在相应目录下的㇐个与图像文件名相同但后缀名为txt的⽂本文件⾥,文本文件中用一行、以空格分隔的4个数字表示,分别对应于两只眼睛中⼼在图像中的位置; 实现三个程序过程,分别对应训练与识别、重构。 自己构建一个人脸库(至少40个,包括自己),课程主页提供一个AT&T人脸库可选用。 不能直接调用OpenCV里面与Eigenface相关的一些函数,所有关键函数需要自己实现。 特征值与特征向量求解函数可以调用SDK; 实验原理Eigenface人脸识别实现步骤: 对训练集内所有人脸图像作归一化处理; 通过PCA计算获得一组特征向量(特征脸)。通常一百个特征向量就足够; 将每幅人脸图像都投影到由该组特征脸张成的 子空间中,得到在该子空间坐标; 对输入的一幅待测图像,归一化后,将其映射到特征脸子空间中。然后用某种距离度量来描 述两幅人脸图像的相似性,如欧氏距离。 预处理确定模板 对灰度值做归一化 通常我们使用两种方法来增强图片的对比度: 直方图均衡化 OpenCV提供了一个易用的函数,用于直方图均衡化处理。 12//Equalizes the histogram of a grayscale image.void equalizeHist(InputArray src, OutputArray dst)实现原理:一个完全均衡的直方图,意味着所有箱子包含的像素数量是相同的。其中一个必要条件就是,50%像素的强度值小于128,25%像素的强度值小于64,依次类推。 直方图拉伸 直方图拉伸让像素尽可能分布在[0,255]的范围之内。 训练过程PCA原理PCA全名为主成分分析,其主要目的就是寻找一个矩阵,然后把原来的一组带有相关性的矩阵映射到寻找到的那个矩阵中,达到降维的目的。 一般的,如果我们有M个N维向量,想将其变换为由R个N维向量表示的新空间中,那么首先将R个基按行组成矩阵A,然后将向量按列组成矩阵B,那么两矩阵的乘积AB就是变换结果,其中AB的第m列为A中第m列变换后的结果。 这句话就相当于找到了一个R行N列矩阵,然后乘一个N行M列矩阵,这样就得到了一个R行M列矩阵(其中R |
CopyRight 2018-2019 实验室设备网 版权所有 |