2016-04-26 7 views
0

Ich möchte die erste Hauptkomponente für ein Bild mit der integrierten Funktion pca erhalten. Wie kann ich das machen?PCA für die Bildverarbeitung

Ich habe den folgenden Code versucht:

[COEFF, SCORE] = pca(image); 
SCORE(1:size(SCORE,1),:)=0; 
reconstructed_image = SCORE/COEFF + repmat(mean(image,1),size(image,1), 1); 
I=reshape(reconstructed_image,[256,256]); 
figure 
imshow(I,[0 255]) 

ich nur die Faust Zeile des Bildes erhalten. Irgendeine Idee wie kann ich das richtig machen?

Antwort

1

Sie können nicht "PCA ein Bild". Was das getan hat, ist nicht geben Sie die erste Zeile, es verwendet alle Zeilen als Beobachtungen und Ihre Spalten als Parameter, wie Sie normalerweise Ihre Messungen einrichten würde. Also hat er die Varianz über alle Parameter berechnet und Ihnen einen Vektor gegeben, dessen Länge der Anzahl Ihrer Spalten entspricht. Wahrscheinlich möchten Sie stattdessen mehr Bilder.

Bitte lesen Sie die folgende Antwort von mir, bevor Sie fortfahren, da ich die wichtigsten Fallstricke von PCA in MATLAB dort erkläre.

PCA in matlab selecting top n components

+0

Ok, betrachten meine Bildzeilen sind Bilder wie kann ich dann die erste pca erhalten – Mohammed

+0

Sie sind bereits jede Zeile des Bildes als eine Beobachtung zu behandeln, wie ich in meiner Antwort geschrieben. Mit Ihrem Wissen über lineare Algebra sollten Sie wissen, welches die erste Hauptkomponente ist, nachdem Sie es durch 'pca' ausgeführt haben. Ich bezweifle sehr, dass es dir gut tut, aber da du mir nicht sagst, was das Problem ist, kann ich es nicht für dich lösen. Nur eine Randnotiz: Es gibt auch keinen "ersten PC". Es ist * Principal Component Analysis *, das Ihnen * Hauptkomponenten * gibt. Vielleicht möchten Sie ein oder zwei Dinge über die Technik lernen, bevor Sie sie anwenden. – Adriaan