如何将当前(喷射)颜色图转换为灰度颜色图

时间:2019-03-30 08:05:38

标签: matlab matlab-figure grayscale

我有一个GUI,用于计算和绘制项目图像。它以“ Jet”颜色图显示图像。但是,我希望显示图像为灰色颜色图。

我尝试了以下方法。但是它以黑色的颜色图显示了图像。
cmap = gray(255); J1 = ind2gray(J,cmap);
set(handle_fig,'Colormap',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

Default colomap就像是喷气机一样。我想将此喷射彩色图转换为灰度。

更新

我尝试了克里斯·伦戈的答案,这给了我 output 在此图中,下部和上部颜色条均以黑色开始和结束。但是,我只希望下标从白色开始,上标从黑开始。

coobar的GUI中的代码如下:

% Set colorbar
            handle_colorbar = colorbar('peer',handles_gui_sub.axes_formatplot);        
            set(handle_colorbar,'UIContextMenu','');
            set(get(handle_colorbar,'child'),'YData',[cmin cmax]);
            set(handle_colorbar,'YLim',[cmin cmax]);
            set(handle_colorbar,'Units','Pixels');

1 个答案:

答案 0 :(得分:1)

ind2gray将索引图像转换为灰度图像。显然,您没有索引图像,因此该功能没有用。

相反,使用rgb2gray将RGB颜色图转换为灰度颜色图:

J1 = rgb2gray(J);