img=imread('mushroomgroup.jpeg');
tlo = tiledlayout(fig, 3, 4, 'Padding','tight','TileSpacing','none');
imshow(img, 'parent', nexttile());
imshow(img_gray, 'parent', nexttile());
BW=imbinarize(img_gray,'adaptive','Sensitivity',1);
imshow(BW, 'Parent', nexttile());
imshow(BW1, 'Parent', nexttile());
[centers,radii,~] = imfindcircles(BW1,[60,90],...
'ObjectPolarity','dark','Sensitivity',0.97);
imshow(BW1, 'Parent', nexttile([2,4]))
title('Complement with labels')
[ximg, yimg] = meshgrid(1:size(BW1,2), 1:size(BW1,1));
blackPortion = nan(size(radii));
mask = hypot(ximg-centers(i,1), yimg-centers(i,2)) < radii(1);
blackPortion(i) = mean(~BW1(mask));
distanceToCenters = squareform(pdist(centers)) ./ (radii*2);
[row,col] = find(tril(distanceToCenters < overlapThreshold));
selection = false(nCircles,1);
tempRows(isnan(tempRows)) = [];
if isempty(tempRows); continue; end
[~, maxIdx] = max(blackPortion(tempRows));
row(ismember(row,setdiff(tempRows, tempRows(maxIdx)))) = NaN;
selection(tempRows(maxIdx)) = true;
centers(~selection,:) = [];
blackPortion(~selection) = [];
ch = viscircles(centers, radii, 'color', 'r');
th = text(centers(:,1), centers(:,2), compose('r = %.1f\n%.1f%%', radii, blackPortion*100), ...
'HorizontalAlignment', 'Center', 'VerticalAlignment', 'Top', 'Color', 'c');
th2 = text(centers(:,1), centers(:,2), compose('%d', 1:numel(radii)), ...
'HorizontalAlignment', 'Center', 'VerticalAlignment', 'Bottom', 'Color', 'y');
fprintf('%d mushrooms found.\n', numel(radii));