python颜色映射问题

如图所示,图右边是3x3的颜色板,左边是图片和无标签的语义分割图

需要把颜色板每行颜色对应到左边图中的每个物体上,如图第一行的颜色需要给狗,第二行颜色给背景,第三行给脚印


因为没有标签,我只能想到将语义分割图按颜色分为各个部分的mask

问题:接下来每个区域怎么对应到颜色板?每行每列的颜色怎么分布在每个物体上?希望大佬提供详细解决思路感谢

你是要替换图片中像素的颜色吗?

3X3的颜色板是图片输入吗,还是人为设计一个3*3矩阵


所以你到底是左边提取出颜色放到矩阵中,还是右边矩阵颜色分配个左边?

你搞的好乱啊

右边色板的颜色放到左边,图上是从右到左的单箭头...

3x3的颜色板是rgb值3*3的矩阵,我可能没表述清楚,目标是将右边每行色板里的颜色与左边的各个区域形成对应关系

colorboard = [(255, 255, 255), (0, 0, 0), (255, 0, 0)] #3*3颜色板

# 将颜色赋给各对象
dog['color'] = colorboard[0] # 狗的颜色
background['color'] = colorboard[1] # 背景
foot['color'] = colorboard[2]

# 你的输入是什么情况,还是没有描述清楚

输入是600*600的单位矩阵,原本是将单位矩阵分为3份然后和颜色板的各个对象对应。但是现在多了一张语义分割图,我想根据语义分割的各个对象来对应每行颜色,下面是没有语义分割图的代码

def make_colorgram_tensor(color_info, width=600, height=600):
    """
    divided by 3 regions
    """
    colors = list(color_info.values())#得到颜色板
    topk = len(colors[0].keys()) 

    tensor = np.ones([topk * 3, height, width], dtype=np.float32)

    region = height // 3 #这里分成了3份

    for i, color in enumerate(colors):
        idx = region * i
        for j in range(1, topk + 1):
            r, g, b = color[str(j)]

            # assign index
            red = (j - 1) * 3
            green = (j - 1) * 3 + 1
            blue = (j - 1) * 3 + 2

            # assign values
            tensor[red, idx:idx + region] *= r
            tensor[green, idx:idx + region] *= g
            tensor[blue, idx:idx + region] *= b

    tensor = torch.from_numpy(tensor.copy())
    return scale(tensor / 255.)