【问题标题】:Overlaying segmentation masks with preference in Python在 Python 中根据偏好覆盖分割掩码
【发布时间】:2019-09-25 21:35:55
【问题描述】:

考虑 4 个分段图像或 numpy 数组 - A、B、C 和 D(每个像素为 0 或图像中对象位置的 classID)。这 4 个分段的 2-D 阵列是对一个图像中存在的不同对象的分段。例如。图像 A 已分割对象 #1,图像 B 已分割对象 #2,依此类推。需要将不同对象的所有这些分割叠加到一张图像中,而不是拥有 4 个单独的分割图像。

当然,只需执行 a + b + c + d 即可覆盖它们。然而,对象的分割像素可能跨图像重叠。例如,来自图像'A'的对象#1的分割像素可能与图像'B'中对象#2的分割像素重叠。如果发生这种重叠,则对象#2 的 ClassID 优先于该像素位置。较高对象的 ClassID # 优先。因此,不能简单地添加所有图像以将所有分割组合成一个连贯的分割图像。

两个分割图像的示例 - 对象 A 的像素值为 1,B 的像素值为 2。如果只考虑这两个图像,我想将对象 B 叠加到对象 A 上(每个对象都有不同的组合时的颜色)。对象 B 应该在它们重叠的对象 A 上可见。

我采取了将每个图像连续添加到下一个图像的方法,如果任何结果像素的值等于对象#1的classID和object#2的classID之和,则表示重叠,我设置了那些像素到 classID #2 的值。因为这种比较总和的解决方案不是唯一的,所以它没有正确运行。

我知道如何做到这一点的一种方法是遍历每个像素并一次比较两个图像的像素对。如果有人有更有效的解决方案,请告诉我!

【问题讨论】:

    标签: python image-processing computer-vision mask image-segmentation


    【解决方案1】:

    听起来您只想要所有图像的元素最大值。假设您使用的是 Numpy,这样的事情应该可以工作:

    numpy.maximum.reduce([A, B, C, D])
    

    这将逐个元素的最大操作一次应用于每个数组(例如减少)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 2020-09-06
      • 2020-07-30
      • 2019-03-25
      • 1970-01-01
      • 2023-04-10
      相关资源
      最近更新 更多