我正在研究一个分割问题,其中给定一个图像,每个RGB值对应一个类标签。我的问题是如何有效地将RGB值从图像(numpy数组)映射到相应的类标签图像。你知道吗
让我们提供以下简化示例:
color2IdMap
{(100,0,100):0, (0,200,0):2}
labelOld
array([[[100,0,100],
[0,200,0]],
[[100,0,100],
[0,200,0]]], dtype=uint8)
(在实际示例中,colorIdMap将有大约20个条目,labelld将是一个形状数组:(1024512,3))
现在我希望结果是下面的映射数组。形状:(1024512)
labelNew
array([[ 0, 2],
[ 0, 2]])
我尝试使用循环和列表理解来实现这一点,但是这两种方法都非常慢(每幅图像大约10秒,对于250K图像来说这是一个很大的数字)。我想知道有没有更快的方法。你知道吗
尝试的方法1:
labelNew = np.empty((1052,1914), dtype=np.uint8)
for i in range(1052):
for j in range(1914):
labelNew[i, j] = color2IdMap[tuple(labelOld[i, j])]
尝试的方法2:
labelNew = [[color2IdMap[tuple(x)] for x in y] for y in labelOld]
所以,我的问题是,有没有更快更有效的方法?你知道吗
以下是一种基于
dimensionality-reduction
的方法-或者,我们可以使用
sidx
作为np.searchsorted
的分类器输入参数来获得最终输出-相关问题 更多 >
编程相关推荐