第一步 首先完成格式的转化。ORL人脸库中图片格式为pgm,将图片转换成bmp格式。

%{将ORL人脸数据库的pgm格式批量转换为bmp格式
%}clc;   % clear all;for i=1:40for j=1:10image=imread(strcat('F:\mriimage\att_faces\orl_faces\s',int2str(i),'\',int2str(j),'.pgm'));imwrite(image,strcat('F:\mriimage\att_faces\orl_faces\s',int2str(i),'\',int2str(j),'.bmp'));enddisp(strcat('s',int2str(i),'转换结束.'));end
disp('批量转换结束.');

第二步,需要对数据进行特征提取,采用最大奇异值作为特征。

1.需要找到每张图片的路径,依次的对图像进行分割,提取特征

num=1;%用最大的奇异值作特征值
dir = ['\1.bmp ''\2.bmp ''\3.bmp ''\4.bmp ''\5.bmp ''\6.bmp ''\7.bmp ''\8.bmp ''\9.bmp ''\10.bmp'];
for x=1:40%将数字转换成字符,便于把两个字符连接,组成图片的完整路径a = int2str(x);b = ['s'];d = [b a];for i=1:10%得到每张图片的文件名e = [d dir(i,1:7)];% 将图片转化成为灰度矩阵M = double(imread(e));    %把数据处理得到32维的特征向量for j=1:8for k=1:4%将图片的灰度矩阵划分成32块小矩阵temp=M((j-1)*14+1:j*14,(k-1)*23+1:k*23);%对每个小矩阵进行SVD变换[u,temp1,v]=svd(temp);%提取最大的SVD系数作为特征值temp2=temp1(num,num);%得到所有图片的特征矩阵feature((x-1)*10+i,(j-1)*4+k)=temp2;endendend
end

第三步,构建训练集和测试集

feature=feature'; %进行矩阵倒置,因为该算法要求矩阵的行数比列数少
num_train=5;%表示用来训练的样本
num_test=10-num_train;%用来测试的样本
for y=1:40               %一共有40个人,每人10张图片for n=1:num_train%构造训练集train_data(:,(y-1)*num_train + n) = feature(:,(y-1)*10 + n);%train_data 为训练集向量空间endfor z=1:num_test%构造测试集test_data(:,(y-1)*num_test+z)= feature(:,(y-1)*10 +num_train+z);%test_data 为测试集向量空间end
end

第四步,对数据进行归一化处理

pn = mat2gray(train_data);
pnewn = mat2gray(test_data);

第五步,创建神经网络 构造训练目标集

pn1=minmax(pn);
for y=1:40for m=1:num_train%构造训练集目标集t(y,(y-1)*num_train+m)=1;end
end

第六步,调用MATLAB神经网络工具箱并构建BP神经网络和训练BP神经网络

net1 = newff(pn1,[110,40],{'logsig','logsig'},'trainlm');   %调用MATLAB神经网络工具箱,构建BP神经网络
net1.trainParam.goal=1e-5;         %设置训练目标
net1.trainParam.epochs=1000;       %训练迭代数
net1.trainParam.lr = 0.005;        %设置学习速率
%训练BP神经网络
[net1,tr] = train(net1,pn,t);
第七步,测试

result_test=sim(net, pnewn);
result_train=sim(net, pn);
%C是得出的result_test中的每一列的最大值,I是最大值所在的行数
[C,I]=max(result_test);
%A是得出的result_train中的每一列的最大值,B是最大值所在的行数
[A,B]=max(result_train);
count_test=0;
count_train=0;
for f=1:40for g=1:num_test%计算在得出的结果中,被正确识别出来的测试集图片数目if(I(1,(f-1)*num_test+g)==f)count_test=count_test+1;end endfor h=1:num_train%计算在得出的结果中,被正确识别出来的训练集图片数目if(B(1,(f-1)*num_train+h)==f)count_train=count_train+1;end            end
end
fprintf('统计结束:\n正确识别的测试集数目为: %d\n\n',count_test);
fprintf('正确识别的训练集数目为: %d\n\n',count_train);
%计算出总识别率
Total_reg=(count_test+count_train)/400

第八步,选择图片识别

select_img=imread('t1.bmp');
figure
subplot(121); imshow(select_img);title('你选择的图片')
M=double(select_img);
num=1;%用最大的奇异值作特征值
x=1
i=1
for j=1:8for k=1:4%将图片的灰度矩阵划分成32块小矩阵temp=M((j-1)*14+1:j*14,(k-1)*23+1:k*23);%对每个小矩阵进行SVD变换[u,temp1,v]=svd(temp);%提取最大的SVD系数作为特征值temp2=temp1(num,num);%得到所有图片的特征矩阵feature1((x-1)*10+i,(j-1)*4+k)=temp2;end
end
feature1=feature1';
pnewn1 = mat2gray(feature1);
result_test=sim(net, pnewn1);
[C,I]=max(result_test);
disp([ '该图像属于第',num2str(I),'个人的人脸图像']);
subplot(122); imshow(strcat('F:\mriimage\att_faces\orl_faces\s',num2str(I),'\','1.bmp'));title('判断的图像')

ORL 人脸库 BP神经网络人脸识别相关推荐

  1. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  2. bp神经网络模式识别,bp神经网络数字识别

    BP人工神经网络方法 (一)方法原理人工神经网络是由大量的类似人脑神经元的简单处理单元广泛地相互连接而成的复杂的网络系统.理论和实践表明,在信息处理方面,神经网络方法比传统模式识别方法更具有优势. 人 ...

  3. C++毕业设计——基于VC+++BP神经网络+车牌识别的车牌定位和识别系统设计与实现(毕业论文+程序源码)——车牌定位和识别系统

    基于VC+++BP神经网络+车牌识别的车牌定位和识别系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于VC+++BP神经网络+车牌识别的车牌定位和识别系统设计与实现,文章末尾附有本毕业设 ...

  4. bp神经网络数字识别matlab,matlab神经网络字母识别

    MATLAB平台下的汉字识别 . <Visual+C++_MATLAB图像处理与识别实用案例精选>程序代码说明P0201:MATLAB赋值P0202:MATLAB中的for循环P0203: ...

  5. 基于BP神经网络车牌识别系统的设计与实现

    1.1 题目的主要研究内容 (1)工作的主要描述 使用MATLAB将采集到的图像信息读入,采用一系列的方法对图像信息进行预处理:再分析不同像素点分布与边缘的相应变化范围,从而确定牌照的大致位置,由此分 ...

  6. matlab水果定位与分割,利用Matlab软件和BP神经网络快速识别水果实现分拣

    我国是水果生产与消费大国,我国水果不但品种丰富,而且以水果为原料的食品如罐头.果冻等加工产业也颇具规模.然而,在水果果料的加工过程中可能会不经意地混入诸如毛发.纤维丝.纸屑.金属.油漆等异物,从而对产 ...

  7. 【车牌识别】基于matlab GUI BP神经网络车牌识别(带面板)【含Matlab源码 790期】

    ⛄一.BP车牌识别简介(附课程作业报告) 车牌识别系统设计与实现 车牌识别系统主要分为三部分:车牌图像预处理.特征提取以及基于BP神经网络对特征进行训练和分类,流程图如图1所示. 图1 车牌识别系统组 ...

  8. bp神经网络车牌识别matlab源代码,BP神经网络车牌识别

    [实例简介]利用GUI搭建车牌识别 [实例截图] [核心代码] bp神经网络车牌识别 ├── bp.m ├── bpnet.mat ├── getword.m ├── lpr.m ├── lpr_GU ...

  9. 大华sdk(java)上传人脸图片到人脸库,订阅人脸识别对比

    上传人脸图片到人脸库 controller: @RestController @RequestMapping("/facePicture") public class FacePi ...

  10. 【车牌识别】基于matlab GUI BP神经网络车牌识别(带面板+语音播报)【含Matlab源码 1220期】

    ⛄一.BP车牌识别简介(附课程作业报告) 车牌识别系统设计与实现 车牌识别系统主要分为三部分:车牌图像预处理.特征提取以及基于BP神经网络对特征进行训练和分类,流程图如图1所示. 图1 车牌识别系统组 ...

最新文章

  1. react draft api 简介
  2. 如何理解矩阵特征值?
  3. 【MySQL】常用配置
  4. $$和$BASHPID区别
  5. python前后端分离前端权限_Linux上搭建前后端分离项目
  6. 想赚钱,需要脑袋能开窍
  7. paip.svn服务服务器安装配置
  8. Android系统基础介绍
  9. python中文相似度_python文本相似度计算
  10. 考研—计算机网络—应用层
  11. IAR 中的 Fatal Error[Lc002]: could not open file 解决办法
  12. 【环境搭建】Ubuntu18.04 nvidia显卡 OpenCL环境搭建
  13. WPS添加下划线,文字尾部不显示下划线问题解决(一个So stupid问题)
  14. 深度学习中Concat层和Flatten层作用
  15. 旋转平移变换矩阵是先旋转还是先平移?
  16. KISSY基础篇乄KISSY之IO(1)
  17. ArrayMap 源码解析
  18. 数字媒体导论(习题答及答案01)
  19. C# 关于MessageBox.Show()函数
  20. 回归预测 | MATLAB实现MSE-ELM极限学习机剩余使用寿命预测(RUL预测)

热门文章

  1. 多智能体强化学习MAPPO源代码解读
  2. 精通innodb引擎_《MySQL技术内幕:InnoDB存储引擎》PDF 下载
  3. win10搭建无盘服务器配置,关于今天搞定网吧无盘Win10x64一包多配置到底的详细讲解 By 原来我不帅...
  4. 2008 r2 server sql 中文版补丁_sql2008 r2 sp1下载
  5. iOS关于上传iTunes store一直卡住终极解决方案
  6. 锐捷客户端在Linux下的使用。
  7. Ubuntu20安装gcc6.3.0
  8. pdflib使用:pdf的分割与合并
  9. 中华优秀传统文化教育的有效渗透
  10. 思科为计算机配置ip命令,使用CLI在交换机上配置IP地址设置