how to copy the segmented image in to single variable?
조회 수: 3 (최근 30일)
이전 댓글 표시
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
답변 (1개)
Image Analyst
2018년 3월 13일
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
Image Analyst
2018년 3월 14일
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);
참고 항목
카테고리
Help Center 및 File Exchange에서 Data Clustering에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!