将灰度值映射到图像中的 RGB 值
map grayscale values to RGB values in image
让我们考虑一个灰度值,其值在 [0, 255] 范围内。我们如何才能有效地将每个值映射到一个 RGB 值?
到目前为止,我想出了以下实现:
# function for colorizing a label image:
def label_img_to_color(img):
label_to_color = {
0: [128, 64,128],
1: [244, 35,232],
2: [ 70, 70, 70],
3: [102,102,156],
4: [190,153,153],
5: [153,153,153],
6: [250,170, 30],
7: [220,220, 0],
8: [107,142, 35],
9: [152,251,152],
10: [ 70,130,180],
11: [220, 20, 60],
12: [255, 0, 0],
13: [ 0, 0,142],
14: [ 0, 0, 70],
15: [ 0, 60,100],
16: [ 0, 80,100],
17: [ 0, 0,230],
18: [119, 11, 32],
19: [81, 0, 81]
}
img_height, img_width = img.shape
img_color = np.zeros((img_height, img_width, 3))
for row in range(img_height):
for col in range(img_width):
label = img[row, col]
img_color[row, col] = np.array(label_to_color[label])
return img_color
但是,如您所见,它效率不高,因为有两个 "for" 循环。
这个问题也在 Convert grayscale value to RGB representation? 中被问到,但没有提出有效的实施建议。
一种比对所有像素进行双重 for 循环更有效的方法是:
rgb_img = np.zeros((*img.shape, 3))
for key in label_to_color.keys():
rgb_img[img == key] = label_to_color[key]
让我们考虑一个灰度值,其值在 [0, 255] 范围内。我们如何才能有效地将每个值映射到一个 RGB 值?
到目前为止,我想出了以下实现:
# function for colorizing a label image:
def label_img_to_color(img):
label_to_color = {
0: [128, 64,128],
1: [244, 35,232],
2: [ 70, 70, 70],
3: [102,102,156],
4: [190,153,153],
5: [153,153,153],
6: [250,170, 30],
7: [220,220, 0],
8: [107,142, 35],
9: [152,251,152],
10: [ 70,130,180],
11: [220, 20, 60],
12: [255, 0, 0],
13: [ 0, 0,142],
14: [ 0, 0, 70],
15: [ 0, 60,100],
16: [ 0, 80,100],
17: [ 0, 0,230],
18: [119, 11, 32],
19: [81, 0, 81]
}
img_height, img_width = img.shape
img_color = np.zeros((img_height, img_width, 3))
for row in range(img_height):
for col in range(img_width):
label = img[row, col]
img_color[row, col] = np.array(label_to_color[label])
return img_color
但是,如您所见,它效率不高,因为有两个 "for" 循环。
这个问题也在 Convert grayscale value to RGB representation? 中被问到,但没有提出有效的实施建议。
一种比对所有像素进行双重 for 循环更有效的方法是:
rgb_img = np.zeros((*img.shape, 3))
for key in label_to_color.keys():
rgb_img[img == key] = label_to_color[key]