Detect largest bounding box and applying centroid.
4 次查看(过去 30 天)
显示 更早的评论
I have written this code to use bounding box and centroid properties. Due to noise of the image i am getting many unwated boxes and centroids. so i want to edit this code so that only the biggest bounded box is shown and centroid is shown only on that box. i need help in this regards.
binaryY = im2bw(rgb2gray(F));
Ibw1 = imfill(binaryY,'holes');
K1 = medfilt2(Ibw1);
subplot(2,2,2);
imshow(K1, []);
%centrod
Ilabel1 = bwlabel(K1);
stat = regionprops(Ilabel1,'centroid');
subplot(2,2,3);
imshow(Im1); hold on;
for x = 1: numel(stat)
plot(stat(x).Centroid(1),stat(x).Centroid(2),'r+');
end
% Make sure image is not artificially stretched because of screen's aspect ratio.
[L,num]=bwlabel(K1);
bboxes=regionprops(L,'BoundingBox');
subplot(2,2,4)
imshow(Im1),title('Bounding Box');
hold on;
for k=1:length(bboxes)
CurrBB=bboxes(k).BoundingBox;
rectangle('position',[CurrBB(1),CurrBB(2),CurrBB(3),CurrBB(4)],'EdgeColor','g','LineWidth',2);
end
hold off;

2 个评论
Walter Roberson
2019-3-2
regionprops the Area as well. max [stat.Area] to find the index of the largest .
采纳的回答
Image Analyst
2019-3-3
Near the top, do this:
Ibw1 = bwareafilt(Ibw1, 1); % Extract largest blob only.
Then continue with the rest of your code, though I don't believe the median filter is needed.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!