Can anyone help me out with the following code ?

조회 수: 1 (최근 30일)
Touhidul islam
Touhidul islam 2018년 1월 1일
댓글: Walter Roberson 2018년 1월 1일
if sum(isnan(CENTS(:))) ~= 0 % If CENTS(i,:) Is Nan Then Replace It With Random Point
NC = find(isnan(CENTS(:,1)) == 1); % Find Nan Centers in first column of cents
for Ind = 1:size(NC,1)
CENTS(NC(Ind),:) = F(randi(size(F,1)),:);
end
full code is given below:
clc
clear all
close all
%%Load Image
[filename,pathname]=uigetfile({'*.*';'*.bmp';'*.tif';'*.gif';'*.png'},'Pick an Image File');
I= im2double(imread([pathname,filename]));
size(I)
[nrows,ncols,colorchannels]=size(I);
F = reshape(I,nrows*ncols,colorchannels);
size(F)
K = 8; % Cluster Numbers
CENTS = F( ceil(rand(K,1)*size(F,1)) ,:); % Cluster Centers
DAL = zeros(size(F,1),K+2); % Distances and Labels
KMI = 10; % K-means Iteration
for n = 1:KMI
%first step is to find nearby cluster for each pixel
for i = 1:size(F,1)
for j = 1:K
DAL(i,j) = norm(F(i,:) - CENTS(j,:)); %compare the distance between every pixel value with cluster centre.
end
[Distance, CN] = min(DAL(i,1:K)); % 1:K are Distance from Cluster Centers 1:K
DAL(i,K+1) = CN; % K+1 is Cluster Label
DAL(i,K+2) = Distance; % K+2 is Minimum Distance
end
for i = 1:K
A = (DAL(:,K+1) == i); % Cluster K Points
CENTS(i,:) = mean(F(A,:)); % New Cluster Centers
*****
if sum(isnan(CENTS(:))) ~= 0 % If CENTS(i,:) Is Nan Then Replace It With Random Point
NC = find(isnan(CENTS(:,1)) == 1); % Find Nan Centers in first column of cents
for Ind = 1:size(NC,1)
CENTS(NC(Ind),:) = F(randi(size(F,1)),:);
***
end
end
end
end
X = zeros(size(F));
for i = 1:K
idx = find(DAL(:,K+1) == i);
X(idx,:) = repmat(CENTS(i,:),size(idx,1),1);
end
T = reshape(X,nrows,ncols,colorchannels);
%%Show
figure()
subplot(121); imshow(I); title('original')
subplot(122); imshow(T); title('segmented')
disp('number of segments ='); disp(K)
  댓글 수: 4
Walter Roberson
Walter Roberson 2018년 1월 1일
CENTS probably stands for Cluster Centers

댓글을 달려면 로그인하십시오.

답변 (1개)

Star Strider
Star Strider 2018년 1월 1일
@Touhidul islam —
If you want to know what that section of code is doing, the first comment describes it:
% If CENTS(i,:) Is Nan Then Replace It With Random Point
The ‘Random Point’ is a random row of the (Nx3) matrix ‘F’, that itself is a reshaped image.

카테고리

Help CenterFile Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by