중화사전망 - 중국어 사전 - 누가 MATLAB 프로그램을 만드는 법을 가르쳐 줄 수 있습니까? 전부 영어야, 알아듣지도 못하고, 안 돼!
누가 MATLAB 프로그램을 만드는 법을 가르쳐 줄 수 있습니까? 전부 영어야, 알아듣지도 못하고, 안 돼!
%
프로토타입 퍼센트
% 함수 PCA (경로, 교육 목록, 하위 데이터)
%
% 사용 예
% PCA(' C:/FERET _ normalized/', trainList500Imgs, 200);
%
% 일반 설명
% 은 (는) 표준 Turk-Pentland Eigenfaces 방법을 구현했습니다. 결승전으로 삼다
% result-pcaProj 행렬을 모든 이미지와 함께 디스크에 저장합니다
% 는 PCA 에서 찾은 2 차원 공간에 투영됩니다.
%
% 참조
인식을 위한 특징적인 얼굴, 인지잡지
% 신경과학, 제 3 권, 1 호, 7 1-86 면
%
% M.A. Turk, A.P. Pentland, 얼굴 인식 기능을 사용하는 얼굴 인식, 프로그램
% IEEE 컴퓨터 비전 및 패턴 인식 회의,
% 3-6 6 월 199 1, 미국 하와이 마우이, 586-59 1 페이지
%
%
% 입력:
% path-FERET 데이터베이스에서 표준화된 이미지의 전체 경로입니다
% trainList-교육에 사용되는 이미지 목록입니다. 이름은
% 은 (는) 확장명이 및 이 없습니다. Pgm 이 자동으로 추가됩니다
% subDim-유지할 차원 (필요한 하위 공간
% 차원) 을 참조하십시오. 이 매개변수가 무시되면 최대
% 0 이 아닌 차원은 예약됩니다: (트레이닝 이미지 수)-1
%
% 출력:
% 함수는 다음 출력을 생성하여 디스크에 저장합니다.
% DATA-matrix. 각 열은 벡터 모양 이미지입니다
%-이 행렬의 크기는 (픽셀 수) x (이미지 수), uint8 입니다
% imSpace-데이터와 동일하지만 교육 세트의 이미지일 뿐입니다
% psi-평균 얼굴 (트레이닝 이미지)
% zeroMeanSpace-imSpace 의 각 행에서 평균 면을 뺍니다
% pcaEigVals-고유 값
% w-저차원 PCA 부분 공간
% pcaProj-차원 공간에 투영된 모든 이미지
%
% 주석/설명
% * 다음 파일은 함수와 같은 경로에 있어야 합니다
% 또는 Matlab 경로 중 하나:
% 1. 모든 38 16 FERET 이미지 목록을 포함합니다
%
% * * 결과 하위 공간의 각 차원은 단위 길이로 정규화됩니다
%
% * * * Matlab 7 을 사용하여 개발
%
%
% 개정 기록
%-
%
% 관련 기능 (참고)
% createDistMat, feret
%
약%
% 생성 시간: 2005 년 9 월 3 일
% 마지막 업데이트:-
% 개정: 1.0
%
% 저자: 크레시미르 드라치
% mailto:kdelac@ieee.org
% URL:
%
% 이 코드를 사용한 연구의 결과로 논문을 발표했을 때
% 또는 그 일부를 보려면 다음 파일을 참조하십시오.
% 드라치 K, 게지 M, 게지 S, 독립 비교 연구의 주성분 분석, 독립 성분 분석, 선형 판별 분석
FERET 데이터 세트의%, 국제 이미징 시스템 및 기술 잡지,
% 제 15 권, 2006 년 제 5 호, 252-260 면
%
% 하위 치수가 제공되지 않은 경우 n-1 치수는 다음과 같습니다
% 예약됨. 여기서 n 은 트레이닝 이미지 수입니다
만약 나이든< 3 이
Subdim = dim-1;
끝;
표시 (''')
ListAll 로드
% 상수
Numim = 3816;
데이터 매트릭스의 메모리 할당 백분율
Fprintf ('데이터 매트릭스 만들기 \n')
Tmp = imread ([pathchar (listall (1))'. Pgm']);
[m, n] = 크기 (tmp); % 그림 크기-나중에 사용할 것입니다! ! !
DATA = uint8 (0 (m*n, numIm));); 할당된 메모리 비율
Str tmp 를 지웁니다
% 데이터 매트릭스 생성
I = 1: numIm 의 경우
Im = imread ([path char(listAll(i))' 입니다. Pgm']);
데이터 (:,I) = 모양 (im, m*n,1);
끝;
데이터 데이터 저장
Im 지우기
% 트레이닝 이미지 공간 만들기
Fprintf ('트레이닝 이미지 공간 만들기 \n')
Dim = 길이 (trainlist);
ImSpace = zeros (m*n, dim) :
I = 1: dim 의 경우
Index = strmatch (trainList(i), listall);
ImSpace (:,i) = DATA (:,index);
끝;
ImSpace imSpace 저장
데이터 지우기
% 트레이닝 이미지로부터 평균 얼굴을 계산합니다
Fprintf ('0 평균 \n')
Psi = mean (double (im space'))';
Psi psi 저장
% 0 평균
Zeromeanspace = zeros (size (imspace));
I = 1: dim 의 경우
ZeroMeanSpace (:,i) = double(imSpace (:,I))-psi;
끝;
ZeroMeanSpace zeroMeanSpace 를 저장합니다
ImSpace 지우기
% PCA
Fprintf('PCA\n')
L = zeromeanspace' * zeromeanspace; % 터키-펜틀랜드 트릭 (부품 1)
[eigVecs, eigvals] = EIG (l);
대각선 = diag (eigvals);
[대각선, 색인] = sort (대각선);
Index = flipud (인덱스);
Pcaeigvals = zeros (크기 (eigvals));
I = 1: size 의 경우 (eigvals,1)
PcaEigVals(i, i) = eigVals(index(i), index (I));
PcaEigVecs (:,i) = eigVecs (:,index (I));
끝;
Pcaeigvals = diag (pcaeigvals);
Pcaeigvals = pcaeigvals/(dim-1);
Pcaeigvals = pcaeigvals (1:subdim); % 가장 큰 하위 항목만 유지
Pcaeigvecs = zeromeanspace * pcaeigvecs; % 터키-펜틀랜드 사기 (2 부)
PcaEigVals pcaEigVals 를 저장합니다
단위 길이 표준화 퍼센트
Fprintf ('정규화 \n')
I = 1: dim 의 경우
PcaEigVecs (:,i) = pcaEigVecs (:,i)/norm(pcaEigVecs (:,I));
끝;
% 차원 감소.
Fprintf ('저차원 하위 공간 만들기 \n')
W = pcaEigVecs (:,1:subdim);
W w 저장
W 지우기
% 모든 이미지에서 평균 얼굴을 뺍니다
데이터 로드
부하 psi
Zeromeandata = zeros (size (data));
I = 1: size(DATA, 2) 의 경우
ZeroMeanDATA (:,i) = double(DATA (:,I))-psi;
끝;
Psi 지우기
데이터 지우기
% 모든 그림을 새로운 저차원 하위 공간으로 투영 (w)
Fprintf ('모든 이미지를 새로운 저차원 하위 공간에 투영 \n')
하중 w;
PcaProj = w' * zeroMeanDATA
W 지우기
ZeroMeanDATA 를 지웁니다
PcaProj pcaProj 저장