Как преобразовать текущую (реактивную) цветовую карту в цветовую карту в оттенках серого - PullRequest
0 голосов
/ 30 марта 2019

У меня есть графический интерфейс для расчета и построения изображения моего проекта.Показывает изображения в цветовой карте «Jet».Однако я хочу отображать изображения в серой цветовой карте.

Я попробовал следующее.Но оно показало изображение в чёрной цветовой карте.
cmap = gray(255); J1 = ind2gray(J,cmap);<br> 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

По умолчанию colomap выглядит так, какструи.Я хочу преобразовать эту цветовую карту струи в оттенки серого.

ОБНОВЛЕНИЕ

Я попробовал ответ Криса Луенго, он дает мне этот вывод На этом рисунке нижняя и верхняя цветная полоса и начинается, изаканчивается в черном.Тем не менее, я хочу, чтобы нижняя шкала начинала со значения белого цвета, а верхняя - черного цвета.

Код в графическом интерфейсе для колобара выглядит следующим образом:

% 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 Ответ

1 голос
/ 30 марта 2019

ind2gray преобразует проиндексированное изображение в оттенки серого.Очевидно, у вас нет индексированного изображения, поэтому эта функция бесполезна.

Вместо этого используйте rgb2gray для преобразования карты цветов RGB в карту цветов в оттенках серого:

J1 = rgb2gray(J);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...