我正在使用PCA + SVM进行人脸识别。从PCA我得到大小为100x100的特征向量。我想为这些特征向量定义标签,以便我可以在SVM中使用这些标签。
答案 0 :(得分:0)
特征向量是向量而不是数组。
PCA空间必须从所有样本中定义,而不是单独使用任何一个样本。
答案 1 :(得分:0)
在PCA中,特征值矩阵,最大的特征值代表最突出的特征,例如鼻子。考虑到这一点,定位这些值是一个简单的问题,即重塑图像以产生协方差矩阵并计算特征值并提取正确的特征向量列。完成后,你再次重塑矩阵并显示它..
下面附带的基本示例代码:
% Reshape the image into a row vector where each row
% is placed next to the one above it.
MD_image1_Row = reshape(MD_image1.',1,[]);
% multiplying the the row matrix with its transpose to form a very large
% matrix
cov_matrix = (1/3).*(MD_image1_Row * MD_image1_Row .');
% finding the eigenvalues (D) and eigenvectors (V) of the large matrix
% formed above
[Vector, Value] = eig(norm_cov_matrix);
% by looking at the eigenvalue matrix the three (depending on the image)
% largest eigenvalues are located and then the corresponding column in the
% Eigenvector matrix is taken and manipulated to produce the Eigenface
% Extracting Eigenvector column
Eig_Vector1 = Vector(:,2803); %value is example
% reshaping Eigenvector into a matrix with the same dimensions as the
% original image
Eig_1_Matrix = reshape(Eig_Vector1.', 51,55); %value is example
% checking size of the Eigenface - this is to check the new image has the
% same size as the original images
eigenface_1_size = size(Eig_1_Matrix)
% displaying Eigenface image using specific limits so that the images are
% displayed correctly
figure, CC = imshow(Eig_1_Matrix,...
[min(Eig_1_Matrix(:)),...
max(Eig_1_Matrix(:))]);
提示:需要考虑拍摄对象的光线强度,还需要考虑图像方向以正确显示。
一旦确定了您想要的特征并提取了正确的特征向量列,就可以标记它们并按照您的意愿行事。