주 성분 분석 (PCA)을 수행하는 데 필요한 약 2000 개의 얼굴 이미지가 있습니다. 그런 다음 두 개의 가장 큰 고유 값을 무시하고 나머지 고유 값의 그래프를 내림차순으로 정렬합니다. 이미지는 모두 19 x 19 픽셀입니다.여러 이미지로드 및 주성분 분석 적용
내가 제대로 할 수 있는지 알아보기 위해 Matlab의 1 이미지에서 PCA를 가져 와서 이미지를로드하는 일반적인 작업을 수행했습니다.
a = imread('face1.pmg');
b = imgradient(a);
[COEFF,SCORE,latent] = princomp(b);
이 그냥 멋쟁이했다,하지만 난 많은이 : 처음에는 matlab에에 Princomp 기능을 사용하기 전에 단순히 이미지의 imgradient을 들었다 후 잘 작동하지 않았지만 그래서 기본적으로 나는이 작업을 수행 그렇게 많은 이미지가 이렇게 하나씩하는 것은 그렇게 재미 있지 않을 것입니다. 따라서 나는 for 루프를 작성하여 내 디렉토리에서 이미지를로드하고 각 이미지 파일 이름을 읽고 imgradient와 충돌시킨 다음 princomp 함수로 전달합니다. 그러나 그것은 마지막 이미지에 대해서만 이것을 수행하는 것으로 보입니다.
내 생각은 배열이나 매트릭스에 저장되도록 각 이미지의 인덱스를 지정했지만 온라인으로 볼 때 나는 아무 것도 찾지 못했습니다. 이것은 내가 지금까지 가지고있는 것인데, 그것의 실행은 잘되지만, 모든 이미지를 저장하는 것처럼 보이지 않는다고 말했다.
filePattern = 'C:\Users\Morgan Weiss\Documents\MATLAB\STA5635_HW12\faces\*.pgm';
fileList = dir(filePattern); % Will not contain any directories, only .pgm files.
for k = 1:length(fileList)
thisFileName = fileList(k).name;
thisImage(k) = imread(thisFileName);
% Get the gradient of this image.
A = imgradient(thisImage);
% Principle Component Analysis
[COEFF,SCORE,latent] = princomp(A);
end
누군가가 나를 알아 채도록 도울 수 있거나 제안을 할 수 있다면 매우 감사하겠습니다.