remove pixel and height that doesnt meet certain criteria
1 view (last 30 days)
Show older comments
hi sir, in my color detection, I used ismember to set object between pixel 100 and 500. Its worked. however, can I know from the bounding box of object detection, how to remove bounding of blobs that doesnt meet height and width criteria ,say width and height of 100x100 pixels?
0 Comments
Accepted Answer
Image Analyst
on 6 Nov 2012
Edited: Image Analyst
on 6 Nov 2012
Sure, you just get all the bounding boxes
allBB = [blobMeasurements.BoundingBox];
Then extract every 4th one for the widths and heights.
allWidths = allBB(3:4:end);
allHeights = allBB(4:4:end);
Then use ismember just like you did to filter based on area. You'd do something like this:
% Get a list of the blobs that meet our criteria and we need to keep.
allowableWidthIndexes = (allWidths > 150) & (allWidths < 220);
allowableHeightIndexes = allHeights < 2000; % Take the small objects.
keeperIndexes = find(allowableWidthIndexes & allowableHeightIndexes );
% Extract only those blobs that meet our criteria, and
% eliminate those blobs that don't meet our criteria.
% Note how we use ismember() to do this.
keeperBlobsImage = ismember(labeledImage, keeperIndexes);
You can then relabel keeperBlobsImage and call regionprops on keeperBlobsImage if you want to measure only the keeper blobs.
0 Comments
More Answers (1)
Walter Roberson
on 6 Nov 2012
minwidth = 100; maxwidth = 100; %as far as I can tell from your question
minheight = 100; maxheight = 100; %as far as I can tell from your question
rinfo = regionprops(YourLabeledImage, 'BoundingBox');
bb = [rinfo.BoundingBox];
bbmatches = bb(4) >= minheight & bb(4) <= maxheight & bb(3) >= minwidth & bb(3) >= maxwidth;
Now bbmatches would be a logical array and you can do things like
rinfo(bbmatches)
to select just the relevant boxes.
7 Comments
Image Analyst
on 6 Nov 2012
No. ismember() returns a labeled image, not bounding box coordinates. You'd need to either pick out selectively the bounding boxes that meet your criteria from your measurements (what regionprops returned the first time), or, probably easier, just relabel and call regionprops again. It's regionprops() that returns bounding box coordinates, not ismember().
See Also
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!