PCA OF AN IMAGE...
Afficher commentaires plus anciens
I want to find PCA of an image... but when i run the code i get following error..
Error using - Integers can only be combined with integers of the same class, or scalar doubles. Error in pca (line 26) data = data - repmat(mn,1,N);
here is the code....'
function [signals,PC,V] = pca()
I = imread('C:\Users\div\Pictures\Picture1.png');
I = rgb2gray( I);
[irow, icol] = size(I);
data = reshape(I',irow*icol,1);
% [sR ,sC ,eR ,eC] = deal(1, 3, 2, 4);
% Compute the sum over the region using the integral image.
% PCA1: Perform PCA using covariance.
% data - MxN matrix of input data
% (M dimensions, N trials)
% signals - MxN matrix of projected data
% PC - each column is a PC
% V - Mx1 matrix of variances
[M,N] = size(data);
% subtract off the mean for each dimension
mn = mean(data,2);
data = data - repmat(mn,1,N);
% calculate the covariance matrix
covariance = 1 / (N-1) * data * data;
% find the eigenvectors and eigenvalues
[PC, V] = eig(covariance);
% extract diagonal of matrix as vector
V = diag(V);
% sort the variances in decreasing order
[junk, rindices] = sort(-1*V);
V = V(rindices); PC = PC(:,rindices);
% project the original data set
signals = PC * data;
Réponse acceptée
Plus de réponses (3)
yagnesh
le 24 Mai 2013
0 votes
try data = double(data)- double(repmat(mn,1,N));
farahnaz
le 22 Mar 2014
0 votes
please use this cod :
function [signals,PC,V] = pca() I=imread('G:\Users\farahnaz\Downloads\018.jpg'); b= im2double(I); imshow(b, []); [irow, icol] = size(b); data = reshape(b',irow*icol,1);
[M,N] = size(data);
mn = mean(data,2);
data = data - repmat(mn,1,N);
covariance = cov(data)';
[PC, V] = eig(covariance);
V = diag(V);
[junk, rindices] = sort(-1*V);
V = V(rindices); PC = PC(:,rindices);
4 commentaires
Shaveta Arora
le 31 Jan 2016
how to show the image after this using principal components. Please answer!!
Image Analyst
le 31 Jan 2016
With
imshow(pcimage, [])
Make sure you get your PC image as a 2D image.
Shaveta Arora
le 31 Jan 2016
pls elaborate about the pcimage variable. how to get PC image as 2D
Image Analyst
le 31 Jan 2016
I don't see how he's getting PC images. There aren't any. You can see my attached demo if you want.
Shaveta Arora
le 1 Fév 2016
actually I want to recover the image using principal components after the following instruction:
% project the original data set
signals = PC * data;
pls help me in recovering the image.
Catégories
En savoir plus sur Dimensionality Reduction and Feature Extraction dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!