Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
Drexel University or The Math Forum.
|
|
|
|
can someone help me to fix this error(Error using ==> kmeans at 382 An empty cluster error occurred in every replicate)
Posted:
Feb 15, 2012 10:39 AM
|
|
??? Error using ==> kmeans at 382 An empty cluster error occurred in every replicate.
Error in ==> segmentizeImage1 at 25 [cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ...
Error in ==> bui_simple>start_snap_Callback at 108 segmentizeImage1;
Error in ==> gui_mainfcn at 96 feval(varargin{:});
Error in ==> bui_simple at 42 gui_mainfcn(gui_State, varargin{:});
Error in ==> @(hObject,eventdata)bui_simple('start_snap_Callback',hObject,eventdata,guidata(hObject))
??? Error while evaluating uicontrol Callback
REFER TO THIS CODE BELOw: x = wa; % this is where the image get from snapshot on video rawImage = x; I = imresize(rawImage,0.50); cform = makecform('srgb2lab'); J = applycform(I,cform); ab = double(J(:,:,2:3)); nrows = size(ab,1); ncols = size(ab,2); ab = reshape(ab,nrows*ncols,2); nColors = 2; [cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ... 'Replicates',2); pixel_labels = reshape(cluster_idx,nrows,ncols); segmented_images = cell(1,2); rgb_label = repmat(pixel_labels,[1 1 3]); for k = 1:nColors color = I; color(rgb_label ~= k) = 0; segmented_images{k} = color; end mean_cluster_value = mean(cluster_center,2); [tmp, idx] = sort(mean_cluster_value); hand_cluster_num = idx(2); K = segmented_images{hand_cluster_num}; L = im2bw(segmented_images{hand_cluster_num},0.001); s = regionprops(rgb_label, I, {'Centroid','BoundingBox'}); % s(hand_cluster_num).Centroid % s(hand_cluster_num).BoundingBox centroid_x = uint8(s(hand_cluster_num).Centroid(1)); centroid_y = uint8(s(hand_cluster_num).Centroid(2)); cropped_x = uint8(s(hand_cluster_num).BoundingBox(1))+1; cropped_y = uint8(s(hand_cluster_num).BoundingBox(2))+1; cropped_w = uint8(s(hand_cluster_num).BoundingBox(4))-2; cropped_h = uint8(s(hand_cluster_num).BoundingBox(5))-2; % apply gaussian blur to remove noise PSF = fspecial('gaussian',7,10); L = imfilter(L,PSF,'symmetric','conv'); % cropped region of interest from main image M = L( cropped_y : (cropped_y+cropped_h), cropped_x: (cropped_x+cropped_w) ); % trim leading and leading zeroes M(:, logical(sum(abs(M)) == 0)) = []; cropped_h = size(M,1); cropped_w = size(M,2); non_zeroes = find(sum(abs(L))~=0); cropped_x = non_zeroes(1); % fill holes to remove flares M = imfill(M, 'holes'); % get a shrunk sample from cropped image N = imresize(M, 0.25); [sample_height sample_width] = size(N); % clip excess pixels if(sample_height>50) N = N(1:50,:); end if(sample_width>50) N = N(:,1:50); end [sample_height sample_width] = size(N); %pad both sides htopad = double(25 - ceil(sample_height/2)); wtopad = double(25 - ceil(sample_width/2)); if((htopad>=0)&&(wtopad>=0)) N = padarray(N,[htopad wtopad]); %for uneven padding, add padding to end [sample_height sample_width] = size(N); htopad = 50 - sample_height; wtopad = 50 - sample_width; N = padarray(N,[htopad wtopad],0,'post'); else disp('Padding not performed...'); end imshow(M); %hold on; % plot(centroid_x, centroid_y, 'bo'); % rectangle('Position', [ cropped_x cropped_y cropped_w cropped_h ], 'EdgeColor','y'); % hold off; y = N; z = imresize(y, [40 30]); z = z(:);
|
|
|
|