Matlab 如何将当前(jet)颜色贴图转换为灰度颜色贴图

Matlab 如何将当前(jet)颜色贴图转换为灰度颜色贴图,matlab,matlab-figure,grayscale,Matlab,Matlab Figure,Grayscale,我有一个gui用于计算和绘制我的项目的图像。它以“Jet”彩色地图显示图像。但是,我希望在灰色颜色贴图中显示图像 我试过以下方法。但它用黑色的彩色地图显示图像。 cmap=gray(255); J1=ind2gray(J,cmap) 设置(手柄图,“彩色地图”,J1) 实际代码如下所示: n = ceil(m/4); u = [(1:1:n)/n ones(1,n-1) (n:-1:1)/n]'; g = ceil(n/2) - (mod(m,4)==1) + (1:le

我有一个gui用于计算和绘制我的项目的图像。它以“Jet”彩色地图显示图像。但是,我希望在灰色颜色贴图中显示图像

我试过以下方法。但它用黑色的彩色地图显示图像。
cmap=gray(255);
J1=ind2gray(J,cmap)
设置(手柄图,“彩色地图”,J1)

实际代码如下所示:

    n = ceil(m/4);
    u = [(1:1:n)/n ones(1,n-1) (n:-1:1)/n]';
    g = ceil(n/2) - (mod(m,4)==1) + (1:length(u))';
    r = g + n;
    b = g - n;
    g(g>m) = [];
    r(r>m) = [];
    b(b<1) = [];
    J = zeros(m,3);
    J(r,1) = u(1:length(r));
    J(g,2) = u(1:length(g));
    J(b,3) = u(end-length(b)+1:end);

    if verLessThan('matlab','9.1')
         set(handle_fig,'Colormap',J); 


    else
        % Get all axes and set their colormap. This is a fix for 2016b+ 
        % (9.1+) which now sets colormaps on a per-axis basis for imshow()
        % instead of for the entire figure. 
        handle_axes = findobj(handle_fig,'type','axes');
        for i = 1:length(handle_axes)
            colormap(handle_axes(i),J);
        end
    end

ind2gray
将索引图像转换为灰度。显然,您没有索引图像,因此此函数没有用处

而是使用将RGB颜色贴图转换为灰度颜色贴图:

J1 = rgb2gray(J);

我建议使用“灰色”(灰度)颜色贴图。。。如果将jet colormap转换为灰度,则高值和低值将显示为黑色,中间值将显示为较亮。所以只需使用:set(handle_fig,'Colormap','gray');我已经按照您的建议尝试了
set(handle_fig,'Colormap','gray')
它向我显示了以下错误:在设置Figure的'Colormap'属性时使用matlab.ui.Figure/set时出错:Value必须是:范围[0 1]内的single或double类型的Mx3数组UINT8类型的Mx3数组感谢您的建议。我已经尝试过了。看来我离我想要的很近了。我已经用你建议的结果更新了我的问题。上下刻度均为黑色。但是,我希望下刻度为白色,上刻度为黑色。但是,我希望颜色条的下刻度为白色,上刻度为黑色。**@Khubabilyaskhan:你是说你只想使用标准的
灰色
颜色贴图吗?您的问题是如何将给定的颜色贴图转换为灰度。应用标准的灰色颜色贴图很简单。查看
colormap
的帮助。
J1 = rgb2gray(J);