how to copy the segmented image in to single variable?

1 visualización (últimos 30 días)
Melaku Eneayehu
Melaku Eneayehu el 13 de Mzo. de 2018
Comentada: Image Analyst el 14 de Mzo. de 2018
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);

Respuestas (1)

Image Analyst
Image Analyst el 13 de Mzo. de 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 comentarios
Melaku Eneayehu
Melaku Eneayehu el 13 de Mzo. de 2018
Images are gray scale and IDX is
Name Size Bytes Class Attributes
IDX 4x1 32 double
i also try mat2gray but it doesn't work
Image Analyst
Image Analyst el 14 de Mzo. de 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);

Iniciar sesión para comentar.

Categorías

Más información sobre Fuzzy Logic Toolbox en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by