考虑4个分段图像或numpy数组-A,B,C和D(每个像素在图像中对象的位置为0或classID)。这4个分割后的二维数组是一个图像中存在的不同对象的分割。例如。图像A具有分割的对象#1,图像B具有分割的对象#2,依此类推。需要将不同对象的所有这些分割叠加到一个图像中,而不是具有4个单独的分割图像。
自然,人们只需要执行+ b + c + d来覆盖它们即可。但是,对象的分割像素可能会在图像上重叠。例如,来自图像'A'的对象#1的分割像素可能与图像'B'中的对象#2的分割像素重叠a。如果发生此重叠,则对象#2的ClassID优先于该像素位置。较高的对象#的ClassID优先。因此,不能简单地添加所有图像以将所有分段组合为一个连贯的分段图像。
两个分割图像的示例-对象A的像素值为1,而对象B的像素值为2。在仅考虑这两个图像的情况下,我想将对象B覆盖到对象A上(每个对象将具有不同的对象颜色组合在一起时)。对象B在重叠的对象A上应该是可见的。
我采取了一种将每个图像依次添加到下一个图像的方法,如果任何结果像素的值等于对象#1的classID与对象#2的classID之和,则表示存在重叠,并设置了这些图像像素到classID#2的值。由于这种比较和的解决方案不是唯一的,因此无法正确解决。
我知道如何做的一种方法是遍历每个像素并一次比较两个像素对。如果有人有更有效的解决方案,请告诉我!
答案 0 :(得分:0)
听起来像您只想要所有图像的逐元素最大值。假设您正在使用Numpy,则应该可以执行以下操作:
numpy.maximum.reduce([A, B, C, D])
这一次将基于元素的最大运算应用于每个数组(例如,约简)。