AR faceDB 由MAT格式转换为图片格式

来源:互联网 发布:濮院学淘宝在哪里学 编辑:程序博客网 时间:2024/05/20 13:06

最近在写人脸识别的毕业论文,需要一些人脸的数据库,知名的人脸数据库有好多!我看的那篇论文它用到3个数据库,分别是ORL,AR,和Yale。

下这些数据库都比较难,ORL这个数据库是我以前下过的,我也忘了我是怎么下载的,AR这个数据库我在数据堂这个网站上下的,但是下的是matlab的MAT文件。我想用普通的图片浏览器打开这些图片看看它们都是怎样的,于是就用matlab编了个小程序让这个mat的人脸数据转换为图片。


AR人脸数据库与程序资源


程序思想:

MAT文件包含测试和训练的图片信息,由两个图片矩阵和类标矩阵组成。我将测试人脸跟训练人脸放到两个不同的文件夹下,再对每个人的不同图片放到一个文件夹下。

人脸矩阵是一个2580*700的矩阵,2580=64*43是一张图片的分辨率。

先用reshape将这个矩阵转换为一个3维的矩阵。然后再对每张照片按类标写入到文件系统中。


程序代码

clc;clear;load('AR_database_60_43.mat');newTestFace = reshape(NewTest_DAT, 60,43,700);newTrainFace = reshape(NewTrain_DAT, 60,43,700);num = size(newTestFace,3);faceLabel = -1;for i = 1 : num    if(faceLabel ~= testlabels(i))        faceLabel = testlabels(i);        faceNum = 0;    end    faceNum = faceNum + 1;    % there is no the floder    if(exist(sprintf('test\\p%d',faceLabel),'dir') ~= 7)        mkdir(sprintf('test\\p%d',faceLabel));    end       imwrite(newTestFace(:,:,i),sprintf('test\\p%d\\%d.jpg',faceLabel,faceNum ));endfaceLabel = -1;num = size(newTrainFace,3);for i = 1 : num    if(faceLabel ~= trainlabels(i))        faceLabel = trainlabels(i);        faceNum = 0;    end    faceNum = faceNum + 1;    if(exist(sprintf('train\\p%d',faceLabel),'dir') == 7)        mkdir(sprintf('train\\p%d',faceLabel));    end       imwrite(newTrainFace(:,:,i),sprintf('train\\p%d\\%d.jpg',faceLabel,faceNum ));end



0 0