9

Select the largest object in an image

 2 years ago
source link: https://www.codesd.com/item/select-the-largest-object-in-an-image.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Select the largest object in an image

advertisements

I am trying to find the the largest object in an image and remove any other objects in the image that are smaller than it.

This is what I have but I cannot get it to work.

 l=bwlabel(BW);

 %the area of all objects in the image is calculated
 stat = regionprops(l,'Area','PixelIdxList');
 [maxValue,index] = max([stat.Area]);

  %remove any connected areas smaller than the biggest object
  BW2=bwareaopen(BW,[maxValue,index],8);
  subplot(5, 5, 4);
  imshow(BW2, []);

I am working with digital mammograms such as these. I am trying to remove all objects from the image except for the breast region.


Use bwconncomp instead since it returns the coordinate indexes for region in a separate cell, where the size of each is easily discerned:

>> BW = [1 0 0; 0 0 0; 0 1 1]; % two regions
>> CC = bwconncomp(BW)
CC =
    Connectivity: 8
       ImageSize: [3 3]
      NumObjects: 2
    PixelIdxList: {[1]  [2x1 double]}

The PixelIdxList field is a cell array with the indexes of coordinates for each region. The length of each array is the size of each region:

>> numPixels = cellfun(@numel,CC.PixelIdxList)
numPixels =
     1     2
>> [biggestSize,idx] = max(numPixels)
biggestSize =
     2
idx =
     2

Then you can easily make a new image with just this component:

BW2 = false(size(BW));
BW2(CC.PixelIdxList{idx}) = true;


EDIT: From the comments, the need to crop the output image so that the region comes to the edges can be addressed with regionprops using the 'BoundingBox' option:

s  = regionprops(BW2, 'BoundingBox');

which gives you a rectangle s.BoundingBox which you can use to crop with BW3 = imcrop(BW2,s.BoundingBox);.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK