图像分割 numpy 数组中的元素检查和修改,同时保持形状
Element check and modification in image segmentation numpy array while maintaining shape
我正在设计一个实时系统,根据语义分割网络中的 class ID 过滤掉图像的某些区域。从网络上,我有一个 numpy 数组 (13,16,1) class ID(数字 0 到 20)对应于图像的区域(即(1,1)是最左上角的区域, ETC)。我想最终得到的是我可以稍后在程序中参考的东西,以决定是否根据 class ID 过滤掉图像的给定区域。
我想过滤掉 classes(例如 class ID 0、2、13)的“黑名单”,并且稍后的分析只考虑那些 class未检测到。
我最初设想的解决方案是通过对 class ID 数组的每个元素执行检查来创建 class ID 数组的副本,检查 class ID 匹配“黑名单”中的任何一个,并根据该检查将该值更改为 0 或 1。我无法让我的任何首选解决方案发挥作用,而且我有点担心逐个元素的检查对于实时性能来说太慢,尤其是如果我提高图像分辨率。
作为参考,我从这样的数组开始:
class_ID_array = 1 2 3
4 5 6
7 8 9
我想按照这些行执行一个操作,生成格式为 desired_array:
的输出
desired_array = class_ID_array.copy()
blacklist = [2, 4, 5]
for x in desired_array:
if x is in blacklist:
x = 0
else:
x = 1
desired_array = 1 0 1
0 0 1
1 1 1
执行此操作的有效方法是什么?
def operation( a, blacklist ):
s = a.shape
l = np.ndarray.flatten( a )
ol = [ e not in blacklist for e in l ]
return np.reshape( ol, s )
我正在设计一个实时系统,根据语义分割网络中的 class ID 过滤掉图像的某些区域。从网络上,我有一个 numpy 数组 (13,16,1) class ID(数字 0 到 20)对应于图像的区域(即(1,1)是最左上角的区域, ETC)。我想最终得到的是我可以稍后在程序中参考的东西,以决定是否根据 class ID 过滤掉图像的给定区域。
我想过滤掉 classes(例如 class ID 0、2、13)的“黑名单”,并且稍后的分析只考虑那些 class未检测到。
我最初设想的解决方案是通过对 class ID 数组的每个元素执行检查来创建 class ID 数组的副本,检查 class ID 匹配“黑名单”中的任何一个,并根据该检查将该值更改为 0 或 1。我无法让我的任何首选解决方案发挥作用,而且我有点担心逐个元素的检查对于实时性能来说太慢,尤其是如果我提高图像分辨率。
作为参考,我从这样的数组开始:
class_ID_array = 1 2 3
4 5 6
7 8 9
我想按照这些行执行一个操作,生成格式为 desired_array:
的输出desired_array = class_ID_array.copy()
blacklist = [2, 4, 5]
for x in desired_array:
if x is in blacklist:
x = 0
else:
x = 1
desired_array = 1 0 1
0 0 1
1 1 1
执行此操作的有效方法是什么?
def operation( a, blacklist ):
s = a.shape
l = np.ndarray.flatten( a )
ol = [ e not in blacklist for e in l ]
return np.reshape( ol, s )