从HSV色彩空间转换而成的RGB图像的色彩图

时间:2019-07-15 14:06:04

标签: python image matplotlib image-processing

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

0 个答案:

没有答案