how to copy the segmented image in to single variable?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
how to copy the segmented image in to single variable?
test=imread(fname);
imData=reshape(test,[],1);
imData=double(imData);
[IDX nn obj]=fcm(imData,4);
0 Kommentare
Antworten (1)
Image Analyst
am 13 Mär. 2018
I don't have the Fuzzy Logic Toolbox, but if it gives you a vector, you can reshape it
[rows, columns, numberOfColorChannels] = size(test);
classifiedImage = reshape(IDX, rows, columns];
imshow(classifiedImage, []);
4 Kommentare
Image Analyst
am 14 Mär. 2018
You need to use nn. (This is why it's good to name variables sensibly.)
[centers,U,objFunc] = fcm(___)
U: Fuzzy partition matrix, returned as a matrix with Nc rows and Nd columns. Element U(i,j) indicates the degree of membership of the jth data point in the ith cluster. For a given data point, the sum of the membership values for all clusters is one.
So you need to scan U and find out what column the max value is in. That's what class it thinks that pixel is in. Something like (untested because I don't have that toolbox):
classifiedImage = zeros(rows, columns);
for k = 1 : length(U)
% For every pixel...
[~, col] = max(U(k, :));
outputImage(k) = col;
end
outputImage = reshape(outputImage, rows, columns);
Siehe auch
Kategorien
Mehr zu Fuzzy Logic Toolbox finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!