how to calculate eigen vector, value using in pca??

6 vues (au cours des 30 derniers jours)
pooja dixit
pooja dixit le 25 Juin 2013
Réponse apportée : Aashray le 14 Fév 2025
hello everyone.... my topic is face recognition... but problem is that how to calculate pca and how to find eigen value & matrix.. if anyone have an idea and have a matlab code for related this tropic please help me...

Réponses (1)

Aashray
Aashray le 14 Fév 2025
Hello Pooja,
for performing PCA it is recommended to convert the images into greyscale to reduce the dimensionality.
Next, the covariance matrix can be found by directly using the MATLAB in-built function cov. This can then be used to find the eigen values and hence the principal components from the images.
You may refer to the following MATLAB code for more understanding:
% Load face images into a matrix (here X) where each column is a flattened image vector
imageDir = './cats';
imageFiles = dir(fullfile(imageDir, '*.jpg'));
numImages = length(imageFiles);
sampleImage = imread(fullfile(imageDir, imageFiles(1).name));
[imageHeight, imageWidth] = size(rgb2gray(sampleImage)); % Convert to grayscale
% I have used 100 images of size 64x64 for illustration, so X is 4096x100.
X = zeros(imageHeight * imageWidth, numImages);
for i = 1:numImages
img = imread(fullfile(imageDir, imageFiles(i).name));
if size(img, 3) == 3
img = rgb2gray(img);
end
X(:, i) = img(:);
end
% Centering the data by subtracting the mean face
mean_face = mean(X, 2);
X_centered = X - mean_face;
% Calculating the covariance matrix, and the eigenvectors and eigenvalues matrix
cov_matrix = cov(X_centered');
[eigenvectors, eigenvalues_matrix] = eig(cov_matrix);
% Extracting eigenvalues from the diagonal of the eigenvalues matrix
eigenvalues = diag(eigenvalues_matrix);
% Sorting eigenvalues in descending order, and the corresponding eigen vectors
[sorted_eigenvalues, index] = sort(eigenvalues, 'descend');
sorted_eigenvectors = eigenvectors(:, index);
k = 10; % Selecting the top k eigenvectors (as they represent the principal components)
principal_components = sorted_eigenvectors(:, 1:k);
The following links might be helpful for better understanding of “cov”,eig”, and “diag” functions:
You can also refer to the attached output for better understanding, the principal components variable is highlighted:

Catégories

En savoir plus sur Dimensionality Reduction and Feature Extraction dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by