![](https://www.mathworks.com/matlabcentral/images/broken_image.png)
An object with the biggest amount of scope in the Binary image
2 次查看(过去 30 天)
显示 更早的评论
Hello, I have a binary image with n white objects (not connected). How can I leave only the object with the biggest amount of scope in the picture I can do it by - bwareaopen, but in this way I have to know approximate size of an object. sorry for my english. thnx
0 个评论
采纳的回答
Image Analyst
2013-9-13
Try this:
grayImage = imread('coins.png');
subplot(2,2,1);
imshow(grayImage);
binaryImage = grayImage > 100;
binaryImage = imfill(binaryImage, 'holes'); % Fill holes.
[labeledImage, numObjects] = bwlabel(binaryImage);
stats = regionprops(labeledImage,'Area');
allAreas = [stats.Area]
[~, indexOfLargest] = max(allAreas);
largestBlob = ismember(labeledImage, indexOfLargest)>0;
subplot(2,2,2);
imshow(largestBlob);
title('Largest');
keeperIndexes = 1:numObjects;
keeperIndexes(indexOfLargest) = [];
binaryImage2 = ismember(labeledImage, keeperIndexes)>0;
subplot(2,2,3);
imshow(binaryImage2);
title('All Except Largest');
![](https://www.mathworks.com/matlabcentral/images/broken_image.png)
更多回答(2 个)
Adam Filion
2013-9-12
编辑:Adam Filion
2013-9-12
If you have Image Processing Toolbox you can use the function regionprops. It comes out to something like this, where tm is the binary image.
cc = bwconncomp(tm);
stats = regionprops(cc,'Area');
A = [stats.Area];
[~,biggest] = max(A);
tm(labelmatrix(cc)~=biggest) = 0;
You can watch a recorded presentation that steps through a similar example here:
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!