TL; DR
我有一个RGB图像(即形状的ndarray(nlines,ncolumns,3)),其颜色是HSV色彩图(matplotlib.cm.hsv)的颜色
如何变换此类RGB图像,以使这些值对应于不同的颜色图?
更多详细信息
我有两个2D numpy数组,分别表示某些数据的相位(-pi,pi)和大小。我想让相位值通过幅度“调制”,所以我创建了一个像这样的矩阵:
HSV_matrix[..., 0] = phase_scaled # rescaled in (0,1)
HSV_matrix[..., 1] = np.ones_like(phase_scaled)
HSV_matrix[..., 2] = magnitude_scaled # rescaled in (0,1)
这意味着相位与HUE相关,幅度与VALUE相关。
然后我将此类矩阵输入到hsv_to_rgb():
rgb_image = matplotlib.colors.hsv_to_rgb(hsv_matrix)
rgb_image现在是形状的ndarray(nlines,ncolumns,3),代表我图像的RGB值,其中颜色与相位相关,亮度与幅度相关。
这时已经定义了颜色图,因为根据定义,rgb_image的值指示每个像素的红色绿色和蓝色值。
hsv_to_rgb之后,rgb_image的 colormap 是matplotlib.cm.hsv,因此产生一致的 colorbar :
cmap = cm.ScalarMappable(cmap=cm.hsv, norm=plt.Normalize(vmin=hmin, vmax=hmax))
plt.colorbar(cmap)
其中hmin和hmax是我的HUE中的最小值和最大值(hsv_matrix [...,0])。
注意: 如果输入为RGB(A)[1],Matplotlib imshow将忽略cmap参数,因此我无法使用imshow更改颜色图
[1] https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.imshow.html