【问题标题】:How to get region with lowest y value in the centroid如何获得质心中y值最低的区域
【发布时间】:2016-07-13 05:55:37
【问题描述】:

我有一个包含两个连通分量的二进制图像。两者都是相当水平的,一个在图像的顶部,另一个在底部。我需要做的是通过提取质心 y 值最低的组件(因为 MATLAB 使用 Java 显示图像,所以原点在左上角)并擦除另一个组件。到目前为止,我已经能够使用regionprops 找到质心的 y 值最低的区域,但是从那里我不确定如何使用我想要的组件再次获取二进制图像。

我在文档中读到 bwconncomplabelmatrixismember 很有用,但我不太确定如何很好地使用它们(或根本不知道如何使用它们。

【问题讨论】:

  • 您有想要保留的组件的'PixelIdxList' 吗?
  • 这两个组件我都有PixelIdxList。我不确定如何使用来自regionprops 的信息来选择我想要的PixelIdxList

标签: matlab image-processing


【解决方案1】:

这是我刚刚提出的解决方案,但如果有更好或更优雅的解决方案,我很想知道它!

附: filtered是我的头像

connComp = bwconncomp(filtered);

props = regionprops(filtered, 'Centroid');

justTop = zeros(size(filtered,1), size(filtered,2));
if props(1).Centroid(2) > props(2).Centroid(2)
    justTop(connComp.PixelIdxList{2}) = 1;
else
    justTop(connComp.PixelIdxList{1}) = 1;
end`

【讨论】:

  • 如果超过两个区域,例如由于噪音或其他原因,此方法将失败。为了解决这个问题,您可能需要检查检测到的区域的面积,并且只比较最大的两个区域左右。否则这很好用!
  • @hbaderts 谢谢!那是在我发布后不久发生的,所以我可能会做类似的事情。谢谢你让它更清楚!
  • 很高兴为您提供帮助。感谢您在这里分享您的答案,以便将来帮助其他人解决同样的问题。
猜你喜欢
  • 2013-09-23
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 2013-09-29
  • 1970-01-01
  • 2016-02-04
  • 2019-06-22
  • 2022-06-10
相关资源
最近更新 更多