基于ORL人脸数据库和PCA特征降维算法的人脸识别matlab仿真

本文涉及的产品
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频通用资源包5000点
视觉智能开放平台,图像通用资源包5000点
简介: 基于ORL人脸数据库和PCA特征降维算法的人脸识别matlab仿真

1.算法仿真效果
matlab2022a仿真结果如下:

69fa9ce3df32c864ff1c9a7a9ea5dd0a_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要

    人脸识别系统的研究始于20世纪60年代,80年代后随着计算机技术和光学成像技术的发展得到提高,而真正进入初级的应用阶段则在90年后期,并且以美国、德国和日本的技术实现为主;人脸识别系统成功的关键在于是否拥有尖端的核心算法,并使识别结果具有实用化的识别率和识别速度;“人脸识别系统”集成了人工智能、机器识别、机器学习、模型理论、专家系统、视频图像处理等多种专业技术,同时需结合中间值处理的理论与实现,是生物特征识别的最新应用,其核心技术的实现,展现了弱人工智能向强人工智能的转化。

  人脸识别 技术是指利用分析比较的计算机技术识别人脸。人脸识别是一项热门的计算机技术研究领域,其中包括人脸追踪侦测,自动调整影像放大,夜间红外侦测,自动调整曝光强度等技术。

人脸识别技术属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。人脸识别技术是基于人的脸部特征,对输入的人脸图像或者视频流,首先判断其是否存在人脸,如果存在人脸,则进一步的给出每个脸的位置、大小和各个主要面部器官的位置信息。并依据这些信息,进一步提取每个人脸中所蕴涵的身份特征,并将其与已知的人脸进行对比,从而识别每个人脸的身份。广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。生物特征识别技术所研究的生物特征包括脸、指纹、手掌纹、虹膜、视网膜、声音(语音)、体形、个人习惯(例如敲击键盘的力度和频率、签字)等,相应的识别技术就有人脸识别、指纹识别、掌纹识别、虹膜识别、视网膜识别、语音识别(用语音识别可以进行身份识别,也可以进行语音内容的识别,只有前者属于生物特征识别技术)、体形识别、键盘敲击识别、签字识别等。

    人脸识别训练集的人脸图像验选取剑桥大学ORL人脸数据库。一共40个人,每人10张人脸图像,随机选取7张用作训练,图像分辨率为112*92.将原始图像的每一行的像素串联在一起,产生一个具有112*92个元素的列向量,每个图像被视为一个向量。人脸原图片的尺寸是112 x 92,并横向的进行翻转、平移等-系列的操作来拓展数据集大小。0RL人脸数据库的样例如图3所示。

c3940dc74af6a3e60523d439189181b1_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   然后,使所有的训练集的图像(一共40张)存储在一个单一的矩阵T中,矩阵的每一列是一个图像。减去均值向量. 均值向量a要首先计算,并且T中的每一个图像都要减掉均值向量。计算协方差矩阵S的特征值和特征向量。每一个特征向量的维数与原始图像的一致,因此可以被看作是一个图像。因此这些向量被称作特征脸。选择主成分。

   主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。在实际课题中,为了全面分析问题,往往提出很多与此有关的变量(或因素),因为每个变量都在不同程度上反映这个课题的某些信息。主成分分析首先是由K.皮尔森(Karl Pearson)对非随机变量引入的,尔后H.霍特林将此方法推广到随机向量的情形。信息的大小通常用离差平方和或方差来衡量。

  一般选择最大的k个特征值,保留对应的特征向量。对每个训练图像的向量,投影到特征空间后得到一组坐标。对测试图像,也作同样的投影运算,得到坐标,与训练图像的坐标进行二范数最小匹配。

3.MATLAB核心程序

    sub_dir = strcat('s', num2str(i));
    images = cell(10);
    for j=1:10
        filename = fullfile(input_dir, sub_dir, strcat(num2str(j), '.pgm'));
        images{j} = imread(filename); 
    end
   
    images = images(randperm(10));
    
    img = zeros(image_dims);
    
    for j=1:7
        img = img + double(images{j});
    end
    
    img = img / 7;
    train_images(:, i) = img(:);
    
    for j=8:10
        test_images{i,j-7}=images{j};
    end
end
 
% steps 1: mean-shifted
mean_face = mean(train_images, 2);
shifted_images = train_images - repmat(mean_face, 1, num_images);
 
% steps 2: ordered eigenvectors and eigenvalues
[full_evectors, score, evalues] = pca(train_images');
 
result = zeros(39, 2);
for num_eigenfaces = 1:39
    evectors = full_evectors(:, 1:num_eigenfaces);
    features = evectors' * shifted_images;
 
    cnt = 0;
 
    for i=1:40
        for j=1:3
            input_image = double(test_images{i,j});
...................................................................
            if match_ix == i
                cnt = cnt + 1;
            else
 
            end
        end
    end
    result(num_eigenfaces, 1) = cnt;
    result(num_eigenfaces, 2) = cnt / 120;
end
 
figure, plot(result(:, 2),'-bs',...
    'LineWidth',2,...
    'MarkerSize',8,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.0,0.9,0.0]);
 
xlabel('特征维度')
ylabel('识别率')
xlim([1 39]), ylim([0 1]), grid on;
相关文章
|
10天前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
|
10天前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
|
10天前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
|
10天前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
|
10天前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
|
10天前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
|
10天前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
|
10天前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
|
10天前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
|
21天前
|
编解码 运维 算法
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
117 12

热门文章

最新文章

下一篇
开通oss服务