【问题标题】:How to mask or crop an image region after applying connected components应用连接组件后如何屏蔽或裁剪图像区域
【发布时间】:2019-01-26 12:51:19
【问题描述】:

我有一个具有不同区域的 RGB 图像 (NxMx3 ndarray)。在应用聚类和连接组件 (skimage measure.label ) 后,我得到了一个带有标记区域的 NxM ndarray。

如何使用这些标记区域从原始图像 (NxMx3) 中裁剪或屏蔽像素?最后,我只想取背景(label=0)并从中提取一些平均颜色。

【问题讨论】:

  • 参见boolean masks 部分。本质上,numpy 允许您使用标签数组索引图像数组,并仅恢复掩码为 True 的条目。
  • 感谢您的提示!事实证明,布尔掩码是有效的,并且也很容易创建,因为 dtype=np.bool 的 numpy.ones() 或 numpy.zeros() 给出了一个具有图像形状 (NxM) 的布尔矩阵。然后将其应用于 RGB 图像 ( NxMx3 ) 允许设置特定颜色(RGB 矢量)。

标签: python-3.x numpy computer-vision scikit-image


【解决方案1】:

假设image 是您的源图像labels 是您的标签图像,您可以通过以下方式获取标签j 对应的像素:

pixels_j = image[labels == j]

这将为您提供这些像素的(Nj, 3) 数组。然后,您可以使用以下方法恢复平均颜色:

mean_color = np.mean(pixels_j, axis=0)

但是,如果您要对许多图像执行此操作,您可能应该使用 skimage.measure.regionprops

【讨论】:

  • 谢谢胡安!这真的很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
  • 2020-08-27
  • 2019-04-05
  • 1970-01-01
相关资源
最近更新 更多