等同于 Python 中的 Matlab 的 ind2rgb
Equivalent to Matlab's ind2rgb in Python
在Matlab中,有一个函数ind2rgb
函数可以这样使用:
y = ind2rgb(im2uint8(rescale(cfs)),jet(256));
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, :]
在Matlab中,有一个函数ind2rgb
函数可以这样使用:
y = ind2rgb(im2uint8(rescale(cfs)),jet(256));
RGB = ind2rgb(X,map)
converts the indexed imageX
and corresponding colormapmap
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, :]