2017-01-18 4 views
0

Matlab предоставляет возможность устанавливать индивидуальные цветовые карты для каждого подзаголовка. Же функциональность описывается Octave docsОтдельная цветовая палитра для каждого подзаголовка в Octave

А именно следующие фразы:

Функция файла: CMAP = Colormap (Hax, ...) Если первый аргумент Hax является AN оси ручки, то карта цветов для родительской фигуры hax запрашивается или задается.

Но когда я пытаюсь запустить следующий код, по какой-то причине у меня есть единая цветовая палитра для всех подзаговоров.

clear -all; 
clc; 

img = zeros(128, 128); 
img(64,64) = 0.2; 
rad = radon(img); 

x = 1; 
y = 4; 


s1 = subplot(y,x,1); imagesc(img); 
colormap(s1, gray); 
s2 = subplot(y,x,2); imagesc(rad); 
colormap(s2, hot); 
colorbar; 

line_img = zeros(128, 128); 
line_img(64, 32:64) = 0.5; 
line_img(63, 32:64) = 0.4; 
line_img(63, 32:64) = 0.2; 
line_rad = radon(line_img); 
s3 = subplot(y,x,3); imshow(line_img); 
colormap(s3, gray); 
s4 = subplot(y,x,4); imagesc(line_rad); 
colormap(s4, hot); 

colorbar; 

Любая помощь приветствуется. Я ожидаю, что исходные изображения в градациях серого и изображения радона преобразуются в «горячие». По какой-то причине я получаю первый subplot как оттенок серого (на самом деле это не так, поскольку я инициализирую точку со значением 0,2, а октава дает мне чистый белый цвет для нее, в то время как я ожидаю разумно темно-серого), а оставшиеся изображения кажутся установлена ​​«горячая» цветовая палитра.

+0

в документации сказано, что если вы передаете осей обрабатывать что * родитель * изменена цветовая схема. Это не то же самое, что и для каждой оси, имеющей другую цветовую палитру, поскольку все они одинаковы. – Suever

ответ

3

Если вы немного прочтете эту строку из документации, вы увидите, что если вы передадите дескриптор осей, то изменится цветовая карта . Это не то же самое, что и для каждой оси, имеющей другую цветовую палитру, поскольку все они одинаковы.

Функция Файл: cmap = colormap (hax, …) Если первый аргумент Hax находитесь в оси ручки, то Colormap для материнской фигуры Hax запрашивается или установить.

В настоящее время Octave не поддерживает эту функциональность, которая была только недавно введена в MATLAB.

Способ преобразования изображений в изображения RGB перед отображением с imshow, а затем цветовая схема рисунка не имеет значения. Вы можете сделать это, первыми преобразуя его в индексированное изображение (используя gray2ind), а затем в RGB с ind2rgb.

% To display the grayscale image 
rgb = ind2rgb(gray2ind(img), gray); 
imshow(rgb); 

Как примечание стороны, по причине, что ваше первое черно-белое изображение показывает вверх, как все белый цвет, что если вход imshow имеет типа double, то все значения, как ожидается, будет в диапазоне от 0 до 1. Если вы хотите изменить это поведение, которое вы можете использовать второй вход imshow, чтобы указать, что вы хотите, чтобы масштабировать границы цвета в соответствии с вашими данными

imshow(img, []) 
+0

Мой плохой, извините. Итак, в настоящее время ничего не реализовано, что имеет Matlab? Вот как заявлено, что он работает в matlab: «Если вы используете релиз MATLAB R2014b или более поздней версии, функция« colormap »принимает дескриптор оси в качестве входного сигнала и позволяет вам устанавливать разные цветовые схемы для каждой оси. Например, следующий фрагмент кода отобразит два подзаголовка с разными цветовыми картами. ax1 = subplot (2,1,1); surf (пики) colormap (ax1, spring) ' – Roman

+0

@Roman Нет Октава этого не имеет. Документация Octave очень понятна.Документация, которую вы вставляли непосредственно в свой пост. – Suever

+0

Большое спасибо за помощь. – Roman

Смежные вопросы