Jet colormap为灰度

Per*_*oob 7 rgb matlab colors grayscale

我有一个喷墨色彩图:

喷射色图

我想知道是否有某种方法可以转换为灰度.我无法使用平均值,因为最大值和最小值会变为相同的灰色.或者,如果有某种方式转换为另一种调色板.

我在Google上找不到转换它的功能.MATLAB使用了一些调用的东西,rgb2ind但我想知道这个公式.

Amr*_*mro 9

首先让我使用Jet colormap创建一个索引图像:

img = repmat(uint8(0:255), 100, 1);
cmap = jet(256);

imshow(img, 'Colormap',cmap)
Run Code Online (Sandbox Code Playgroud)

喷射

使用IND2GRAY进行直接转换会产生以下结果:

J = ind2gray(img,cmap);
imshow(J)
Run Code Online (Sandbox Code Playgroud)

jet_to_gray

如您所述,最小值/最大值收敛到相同的值.根据我的理解,您希望将喷射色图映射为从深色到浅色的灰色线性.为此,我们可以使用 RGB2HSV函数获得的色调值重新排序.将以下内容与原始色彩映射进行比较:

[~,idx] = sortrows(rgb2hsv(cmap), -1);  %# sort by Hue
C = gray(256);
C = C(idx,:);

imshow(img, 'Colormap',C)
Run Code Online (Sandbox Code Playgroud)

hue_sorted