Ich arbeite gerade an einem Projekt, das mit Farbquantisierung verwandt ist. Der Algorithmus impliziert als erster Schritt K-Means-Algorithmus. Mein Code untill jetzt:Matlab Color Quantization
N = 10;
K=7;
I=imread('baboon.bmp');
Idouble = double(I);
mat=zeros(size(I,1)*size(I,2),size(I,3));
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
mat(:,1)=R(:);
mat(:,2)=G(:);
mat(:,3)=B(:);
[IDX,CENTERS] = kmeans(mat,N);
Nächster Schritt in dem Algorithmus ist das Finden der beliebteste Farbe (die Farbe, die die meisten Pixel im Bild enthält). Es scheint sehr einfach, aber irgendwie bleibe ich stecken, als ich versuchte, das von IDX
Variable zu extrahieren.
Die Variable 'Idouble' nutzlos ist. Außerdem können Sie die letzten 8 Zeilen in einem mit "Squeeze" und Verkettung zusammenführen. Dann verstehe ich deine Frage nicht: Was ist die gewünschte Ausgabe? Warum brauchst du Kmeans? Ist 'single' (...,. 'Rows') nicht genug? – Ratbert
'IDX' sollte den Index des Clusters' [1..k] 'für jeden Punkt in' mat' enthalten. Also sollte 'sum (IDX == 1)' dir die Anzahl der Punkte in Cluster 1 geben, oder? – beaker
@becher ja .. du hast recht .. –