【发布时间】:2014-02-14 20:40:27
【问题描述】:
我想使用regionprops 找出连接组件的宽度。宽度不是regionprops 的默认属性之一,但我认为BooundingBox 有这个选项。从我阅读的文档中:
'BoundingBox' - 包含该区域的最小矩形,一个 1×Q *2 向量,其中 Q 是图像维度的数量:ndims(L)、ndims(BW) 或 numel(CC.ImageSize) . BoundingBox 为 [ul_corner width],其中:
ul_corner 的格式为 [x y z ...] 并指定左上角 边界框宽度的角采用 [x_width y_width ...] 形式 并指定边界框沿每个维度的宽度
所以,如果我在控制台中输入 s(1).BoundingBox,我会得到这个
ans =
7.5000 27.5000 197.0000 132.0000
我是否正确假设第三个元素(在本例中为 197)是连接组件的宽度?前两个是 xy 坐标,最后一个是高度?
如果是,我该如何提取它?
我试过这段代码,但它似乎不起作用。
BB = [stats.BoundingBox];
for m = 3:3:length(BB) % start from third element, skip next three and so on
width = BB(m);
end
它似乎只是对 BB 的所有元素求和并将结果存储在 width 中。
我从 BoundingBox 中提取宽度是否正确?我的索引方法有什么问题?为什么不给我width 向量?
谢谢
【问题讨论】:
-
3:4:length(BB)- 每个条目有 4 个元素,因此您希望每个第 4 个元素从 3 开始。此外,您没有索引到width,所以您只需覆盖它每次都是一个标量。我个人会选择BB=vertcat(stats.BoundingBox); width=BB(:,3);
标签: matlab image-processing vector image-segmentation