An object with the biggest amount of scope in the Binary image
3 ビュー (過去 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');
その他の回答 (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:
参考
カテゴリ
Help Center および File Exchange で Image Segmentation and Analysis についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!