等同于 Python 中的 Matlab 的 ind2rgb

Equivalent to Matlab's ind2rgb in Python

在Matlab中,有一个函数ind2rgb函数可以这样使用:

y = ind2rgb(im2uint8(rescale(cfs)),jet(256));

来自Matlab website

RGB = ind2rgb(X,map) converts the indexed image X and corresponding colormap map to RGB (truecolor) format.

Python中是否有等效的方法?

我不知道内置的等价物,但您可以使用 numpy 数组轻松做到这一点:

import numpy as np

# Create a 5x5 array of indices for demo
img = np.random.randint(0, 10, (5, 5)) 

# Create a fake grayscale colormap for demo
cmap = np.vstack((np.linspace(0, 1, n), np.linspace(0, 1, n), np.linspace(0, 1, n))).T  

现在,cmap 的第 i 行为您提供颜色,img 的每个元素告诉您 cmap 中的哪个索引是该颜色像素,因此您只需要为 img 中的每个元素 i 取第 i 行。因为 numpy 的索引与广播一起工作,你可以将整个 img 数组作为行索引器,你将得到一个形状为 (img_rows, img_cols, cmap_cols)

的数组
rgb_img = cmap[img, :]
print(rgb_img.shape) # (5, 5, 3)

换句话说,ind2rgb(img, cmap)等同于cmap[img, :]