【问题标题】:Extract vertical and horizontal dimensions of an irregular object提取不规则物体的垂直和水平尺寸
【发布时间】:2016-04-14 19:54:08
【问题描述】:

我有以下对象,想在 MATLAB 中提取最大垂直(红线)和水平(蓝线)尺寸。

我使用了以下代码,但我不确定我是否使用了正确的属性:

L = bwlabel(myImage);
prop = regionprops(L,'BoundingBox');

【问题讨论】:

    标签: matlab image-processing computer-vision pattern-matching dimensions


    【解决方案1】:

    如果您想要另一个不使用regionprops的答案,假设黑色块是图像中的only对象,您可以通过找到左上角找到最小跨度边界框和对象的右下角,然后通过分别减去被认为是对象像素的最右侧列和最左侧列以及最底部行和最顶部行来找到宽度和高度。假设您的二进制图像存储在L,请执行以下操作:

    [r,c] = find(~L);
    width = max(c) - min(c) + 1;
    height = max(r) - min(r) + 1;
    

    find 查找所有非零的行和列位置。因此,我必须反转您的图像,以便所有零位置都变为非零。 rc 是列向量,分别返回非零的行和列位置,然后执行我上面所说的逻辑。

    【讨论】:

      【解决方案2】:

      如果您真的只想要这些行的 大小,那么它们已经包含在来自 regionprops 的结果中。

      prop = regionprops(L, 'BoundingBox');
      
      prop = 
      
          BoundingBox: [x, y, width, height]
      

      蓝线和红线的长度分别是BoundingBox 字段的第三个和第四个元素。

      【讨论】:

      • 我的图片是左边的,我只是在右边展示了我想要的。那么,我可以使用左侧图像上的“BoundingBox”找到这些尺寸吗?
      • @Sam: “蓝线和红线的长度将分别是BoundingBox 字段的第三和第四个元素。” 我不认为有该陈述是否有任何误解的余地。写得很清楚。
      猜你喜欢
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多