人脸识别课程设计附带代码(3)

2019-04-09 10:49

% I have chosen the name of each image in databases as a corresponding

% number. However, it is not mandatory! str = int2str(i);

str = strcat('\\',str,'.jpg');

str = strcat(TrainDatabasePath,str);

img = imread(str); img = rgb2gray(img);

[irow icol] = size(img);

temp = reshape(img',irow*icol,1); % Reshaping 2D images into 1D image vectors

T = [T temp]; % 'T' grows after each turn end

%EigenfaceCore

function [m, A, Eigenfaces] = EigenfaceCore(T)

% Use Principle Component Analysis (PCA) to determine the most % discriminating features between images of faces. %

% Description: This function gets a 2D matrix, containing all training image vectors

% and returns 3 outputs which are extracted from training database. %

% Argument: T - A 2D matrix, containing all 1D image vectors.

% Suppose all P images in the training database

% have the same size of MxN. So the length of 1D

% column vectors is M*N and 'T' will be a MNxP 2D matrix.

%

% Returns: m - (M*Nx1) Mean of the training database

% Eigenfaces - (M*Nx(P-1)) Eigen vectors of the covariance matrix of the training database

% A - (M*NxP) Matrix of centered image vectors

%

% See also: EIG

% Original version by Amir Hossein Omidvarnia, October 2007

% Email: aomidvar@ece.ut.ac.ir

%%%%%%%%%%%%%%%%%%%%%%%% Calculating the mean image

m = mean(T,2); % Computing the average face image m = (1/P)*sum(Tj's) (j = 1 : P)

Train_Number = size(T,2);

%%%%%%%%%%%%%%%%%%%%%%%% Calculating the deviation of each image from mean image

A = [];

for i = 1 : Train_Number

temp = double(T(:,i)) - m; % Computing the difference image for each image in the training set Ai = Ti - m

A = [A temp]; % Merging all centered images end

%%%%%%%%%%%%%%%%%%%%%%%% Snapshot method of Eigenface methos % We know from linear algebra theory that for a PxQ matrix, the maximum

% number of non-zero eigenvalues that the matrix can have is min(P-1,Q-1).

% Since the number of training images (P) is usually less than the number

% of pixels (M*N), the most non-zero eigenvalues that can be found are equal

% to P-1. So we can calculate eigenvalues of A'*A (a PxP matrix) instead of

% A*A' (a M*NxM*N matrix). It is clear that the dimensions of A*A' is much

% larger that A'*A. So the dimensionality will decrease.

L = A'*A; % L is the surrogate of covariance matrix C=A*A'. [V D] = eig(L); % Diagonal elements of D are the eigenvalues for both L=A'*A and C=A*A'.

%%%%%%%%%%%%%%%%%%%%%%%% Sorting and eliminating eigenvalues % All eigenvalues of matrix L are sorted and those who are less than a

% specified threshold, are eliminated. So the number of non-zero % eigenvectors may be less than (P-1).

L_eig_vec = [];

for i = 1 : size(V,2)

if( D(i,i)>1 )

L_eig_vec = [L_eig_vec V(:,i)]; end end

%%%%%%%%%%%%%%%%%%%%%%%% Calculating the eigenvectors of covariance matrix 'C'

% Eigenvectors of covariance matrix C (or so-called \ % can be recovered from L's eiegnvectors.

Eigenfaces = A * L_eig_vec; % A: centered image vectors

%example

% A sample script, which shows the usage of functions, included in

% PCA-based face recognition system (Eigenface method) %

% See also: CREATEDATABASE, EIGENFACECORE, RECOGNITION

% Original version by Amir Hossein Omidvarnia, October 2007

% Email: aomidvar@ece.ut.ac.ir

clear all clc close all

% You can customize and fix initial directory paths TrainDatabasePath

=

uigetdir('D:\\Program

Files\\MATLAB\\R2006a\\work', 'Select training database path' );

TestDatabasePath = uigetdir('D:\\Program

Files\\MATLAB\\R2006a\\work', 'Select test database path');

prompt = {'Enter test image name (a number between 1 to 10):'}; dlg_title = 'Input of PCA-Based Face Recognition System'; num_lines= 1; def = {'1'};

TestImage = inputdlg(prompt,dlg_title,num_lines,def); TestImage

strcat(TestDatabasePath,'\\',char(TestImage),'.jpg');

im = imread(TestImage);

T = CreateDatabase(TrainDatabasePath); [m, A, Eigenfaces] = EigenfaceCore(T);

OutputName = Recognition(TestImage, m, A, Eigenfaces);

SelectedImage = strcat(TrainDatabasePath,'\\',OutputName); SelectedImage = imread(SelectedImage);

imshow(im)

title('Test Image');

figure,imshow(SelectedImage); title('Equivalent Image');

str = strcat('Matched image is : ',OutputName); disp(str)

=


人脸识别课程设计附带代码(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:18.中国知识产权保护的新进展

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: