【问题标题】:How to Draw BoundingBox or Tag Objects Which Has Less Area Than Others如何绘制 BoundingBox 或标记面积小于其他对象的对象
【发布时间】:2014-04-09 23:42:55
【问题描述】:
在我的图像中,我有 5 个黑白形式的对象。有些分别较小,有些较大。
所以我想做的是绘制一个边界框或标记面积小于其他对象的对象(例如,低于 10 像素/面积)。
我无法做到这一点,有人可以帮忙吗?
【问题讨论】:
标签:
image
matlab
image-processing
tags
bounding-box
【解决方案1】:
这是两个不同的问题。第一种是只选择某个区域以上的对象。所以只需删除它下面的所有对象:
clean = bwareaopen (im, 10); # remove all objects with area below 10
那么对于第二个问题有很多可能性。你可以得到他们的边界:
borders = bwperim (clean);
imshow (borders);
你可以给它们贴上标签:
labeled = bwlabel (clean);
imshow (labeled);
或者你可以得到他们的边界框(取决于你的对象的形状可能会重叠):
props = regionprops (clean, 'BoundingBox');
all_bb = props.BoundingBox;
boxes = false (size (clean));
for i = 1:numel (all_bb)
bb = all_bb{i};
bb(round (bb(2):bb(2)+bb(4), bb(1):bb(1)+bb(3))) = true;
end
imshow (boxes);
注意:这是我脑子里写的,没有测试。可能有一些小疏忽,但没有什么大不了的。