Преобразование матрицы в массив - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу получить самые высокие коэффициенты после применения PCA к изображению с помощью Matlab. Для этого я собираюсь преобразовать матрицу пикселей в массив и затем отсортировать ее. Как это сделать? или есть лучший способ сортировки 10 самых высоких коэффициентов PCA?

Пример кода следующий.

close all
clear all

imIdx = 8;
cropCorner = [100 100];

resampleRatio = 1.25;

N = 2;   % window size
M = 64; % block size

im  = imread('kodim06.png');
[H,W,~] = size(im);

for k = 1:length(resampleRatio)   
  r = resampleRatio(k);   
  cropWidth = floor(M/r);

  img = double(im(cropCorner(1):cropCorner(1)+cropWidth-1, ...
                  cropCorner(2):cropCorner(2)+cropWidth-1));
  %img = imresize(img,[M M],'bilinear');    
  pmap = emresample(img,N,'verbose');                  
  fmap = fft2c(pmap);


  % display p-map
  figure;
  subplot(131)
  imshow(img,[])
  subplot(132)
  imshow(pmap,[])
  subplot(133)
  imshow(abs(rmcenter(fmap)),[]);

  filename = sprintf('F:/Project/ImgPro/EM/im%i_r%.2f.png',imIdx,(r-1)*100);

  imwrite(fmap,filename)
  %disp(fmap);

  coeff = pca(fmap);  

  eigval = eig(coeff);
  disp(eigval);

end    

1 Ответ

0 голосов
/ 29 апреля 2018

От документации до pca:

Каждый столбец coeff содержит коэффициенты для одного главного компонента, а столбцы расположены в порядке убывания дисперсии компонента.

Итак, после

coeff = pca(fmap);

Вы можете просто оставить первые 10 столбцов coeff, чтобы получить 10 крупнейших основных компонентов:

coeff = coeff(:,1:10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...