opencv实现Eigenface人脸识别 您所在的位置:网站首页 人脸识别操作方法 opencv实现Eigenface人脸识别

opencv实现Eigenface人脸识别

2024-04-26 12:20| 来源: 网络整理| 查看: 265

自己用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 实验室设备网 版权所有