在 Python 中优先叠加分割蒙版
Overlaying segmentation masks with preference in Python
考虑 4 个分段图像或 numpy 数组 - A、B、C 和 D(图像中对象所在位置的每个像素要么是 0 要么是 classID)。这 4 个分段的二维阵列是对一幅图像中存在的不同对象的分段。例如。图像 A 具有分割对象 #1,图像 B 具有分割对象 #2,依此类推。需要将不同对象的所有这些分割叠加到一个图像中,而不是有 4 个单独的分割图像。
自然地,一个人会执行 a + b + c + d 来覆盖它们。但是,对象的分割像素可能会重叠 images.For 例如,图像 'A' 中对象 #1 的分割像素可能与图像 'B' 中对象 #2 的分割像素重叠.如果发生这种重叠,则对象 #2 的 ClassID 优先于该像素位置。较高对象的 ClassID # 优先。因此,不能简单地将所有图像相加以将所有分割组合成一个连贯的分割图像。
两个分割图像的示例 - 对象 A 的像素值为 1,B 的像素值为 2。在只考虑这两个图像的情况下,我想将对象 B 叠加到对象 A 上(每个对象都有组合时颜色不同)。对象 B 应该在它们重叠的对象 A 上可见。
我采取了一种方法,将每个图像依次添加到下一个图像中,如果任何结果像素的值等于对象#1 的类 ID 和对象#2 的类 ID 的总和,则表示重叠,并且我将这些像素设置为 classID #2 的值。因为这个比较总和的解决方案不是唯一的,所以它没有正确地计算出来。
我知道如何做到这一点的一种方法是遍历每个像素并一次比较两个图像的像素对。如果有人有更有效的解决方案,请告诉我!
听起来您只想要所有图像中的 element-wise 个最大值。假设您使用的是 Numpy,像这样的东西应该可以工作:
numpy.maximum.reduce([A, B, C, D])
这会将 element-wise 最大操作一次应用于每个数组(例如减少)。
考虑 4 个分段图像或 numpy 数组 - A、B、C 和 D(图像中对象所在位置的每个像素要么是 0 要么是 classID)。这 4 个分段的二维阵列是对一幅图像中存在的不同对象的分段。例如。图像 A 具有分割对象 #1,图像 B 具有分割对象 #2,依此类推。需要将不同对象的所有这些分割叠加到一个图像中,而不是有 4 个单独的分割图像。
自然地,一个人会执行 a + b + c + d 来覆盖它们。但是,对象的分割像素可能会重叠 images.For 例如,图像 'A' 中对象 #1 的分割像素可能与图像 'B' 中对象 #2 的分割像素重叠.如果发生这种重叠,则对象 #2 的 ClassID 优先于该像素位置。较高对象的 ClassID # 优先。因此,不能简单地将所有图像相加以将所有分割组合成一个连贯的分割图像。
两个分割图像的示例 - 对象 A 的像素值为 1,B 的像素值为 2。在只考虑这两个图像的情况下,我想将对象 B 叠加到对象 A 上(每个对象都有组合时颜色不同)。对象 B 应该在它们重叠的对象 A 上可见。
我采取了一种方法,将每个图像依次添加到下一个图像中,如果任何结果像素的值等于对象#1 的类 ID 和对象#2 的类 ID 的总和,则表示重叠,并且我将这些像素设置为 classID #2 的值。因为这个比较总和的解决方案不是唯一的,所以它没有正确地计算出来。
我知道如何做到这一点的一种方法是遍历每个像素并一次比较两个图像的像素对。如果有人有更有效的解决方案,请告诉我!
听起来您只想要所有图像中的 element-wise 个最大值。假设您使用的是 Numpy,像这样的东西应该可以工作:
numpy.maximum.reduce([A, B, C, D])
这会将 element-wise 最大操作一次应用于每个数组(例如减少)。