最近在做segmentation的时候,有这样的需求,从一个id映射到一个特定的颜色,一个一个查表太复杂了,碰巧看到别人在代码中有这样一种比较巧妙的计算方式,这里记录一下,以备以后使用
但是有一个要求,id的值必须恰好等于其在码本中的index,即id=0这一项映射关系在码本中的Index也需为0
目标:将一张class id图像 映射到一个 (r,g,b) value图像
colorMap = [
(0,0,120),
(10,0,0),
(30,40,50),
(50,79,90)
]
idImg = np.array([
np.array([1,3]),
np.array([2,0])
])
接下,就可以根据colored = Map(id)这样的映射操作得到想要的结果了
colorMap = np.array(colorMap)
>>> colorImg = colorMap[idImg.astype(int)]
>>> colorImg
array([[[ 10, 0, 0],
[ 50, 79, 90]],
[[ 30, 40, 50],
[ 0, 0, 120]]])
>>>