, , RGB-. , . , , . , , ( ).
, @Jonas, .
, , . , .
calculateEllipse , , imoverlay .
%
I = imread('pears.png');
sz = size(I);
%
num = 20;
centers = bsxfun(@times, rand(num,2), sz([2 1])); %
radii = bsxfun(@times, rand(num,2), [300 50])+10; %
angles = rand(num,1) .* 360; %
ex = cell(num,1); %
ey = cell(num,1); %
%
L = zeros(sz(1),sz(2));
%
flag = false(num,1);
for i=1:num
%
[ex{i},ey{i}] = calculateEllipse(centers(i,1),centers(i,2), ...
radii(i,1),radii(i,2), angles(i), 100);
%
mask = poly2mask(ex{i},ey{i}, sz(1),sz(2));
%
if all( L(mask)==0 )
%
L(mask) = sum(flag)+1; %
flag(i) = true;
end
end
%
num = sum(flag);
centers = centers(flag,:);
radii = radii(flag,:);
angles = angles(flag);
ex = ex(flag);
ey = ey(flag);
%
E = (L ~= 0); %
WS = watershed( bwdist(E) ); %
WS = (WS == 0); %
WS = bwmorph(WS, 'thicken',1); %
%
II = I;
II = imoverlay(II, WS, [1 1 1]); %
%
clr = hsv(num); %
for i=1:num
mask = bwperim(L==i,8); %
mask = bwmorph(mask, 'thicken',1); %
II = imoverlay(II, mask, clr(i,:)); %
end
%
figure, imshow(II, 'InitialMagnification',100, 'Border','tight')
