MATLAB: покажите цветовую полосу изображения в градациях серого на фигуре, содержащей изображение RGB.

Предположим, у нас есть два изображения:

1) RGB-изображение:

% initialize RGB image:
rgbIm = zeros(100, 100, 3); 
rgbIm(20:80, 20:80, 1) = 1;

2) Изображение в оттенках серого:

% initialize grayscale image:
grayIm = zeros(100);
grayIm(20:80, 20:80) = 1;

Давайте покажем их обоих:

figure, imshow(rgbIm),  colormap('jet'), colorbar;
figure, imshow(grayIm), colormap('jet'), colorbar;

Как мы видим, colorbar на 2-м рисунке (то есть изображение в градациях серого) имеет смысл. С другой стороны, я не могу понять информацию, предоставленную палитрой на 1-м рисунке.

Чего я хотел бы добиться, так это отобразить цветовую полосу изображения в градациях серого на рисунке, соответствующем изображению RGB.

Может показаться, что это не имеет смысла, но это всего лишь очень минимальный пример, который я только что придумал, чтобы показать, что я хотел бы сделать в более крупном проекте.

Есть предположения?

Большое спасибо :)

EDIT1: Позвольте мне объяснить, зачем мне это нужно.

Предположим, я вычисляю некоторые физиологические параметры одного среза МРТ в определенных областях интереса, получая что-то вроде этого:

параметрическое изображение

Теперь я хочу наложить эти параметры поверх исходного фрагмента и для этого создаю одно RGB-изображение:

наложение на исходное изображение

Цветовая карта не имеет смысла, и именно поэтому я хотел бы отобразить цветовую карту, соответствующую параметрическому изображению в изображении RGB (то есть изображении с наложением).

Есть идеи?

Спасибо за внимание.


person fnery    schedule 06.05.2013    source источник


Ответы (2)


Я все еще думаю, что то, что вы спрашиваете, не имеет смысла.
Позвольте мне объяснить:
Что такое colorbar? Цветовая полоса — это представление функции (отображения) от уровня серого (скалярного) к цвету. Используя jet, в вашем примере вы сопоставляете 0 с темно-синим, а 1 с красным.
Запрашивая colorbar для изображения RGB, вы фактически запрашиваете сопоставление триплета RGB с цветом RGB — это сопоставление сопоставление личности! вам не нужен colorbar, чтобы увидеть это сопоставление, каждый пиксель представляет его!

РЕДАКТИРОВАТЬ

Увидев отредактированный вопрос, я немного пересматриваю свой ответ:
Поскольку и сигнал МРТ, и любые физиологические параметры, которые вы вычислили, не имеют смысла в пространстве RGB, у вас есть два одномерных сопоставления:
1. Сигнал МРТ в каждом вокселе для уровень серого ("серая" цветовая карта)
2. Физиологическая мера в каждом вокселе для "струйного" цвета

Что я обычно делаю в таких случаях, так это конвертирую срез 2D МРТ в серое RGB-изображение, просто реплицируя его в третьем измерении.

rgbSlice = twoDSlice(:,:,[1 1 1]);

Теперь покажите изображения друг над другом

figure;
imshow( rgbSlice );
hold on;
h = imshow( physiologicalParams );
colormap jet;
set(h, 'AlphaData', .5 ); 
colorbar

Возможно, вам придется поиграть с отображением цветов осей, используя caxis или clim, чтобы все получилось правильно.

person Shai    schedule 06.05.2013
comment
Отредактировал исходный пост, чтобы объяснить мотивацию исходного поста. Надеюсь, теперь это имеет смысл, и я был бы рад услышать ваши мысли по этому поводу. Спасибо. - person fnery; 06.05.2013

(Отвечая на мой собственный вопрос, я надеюсь, что смогу помочь кому-то в будущем)

Я только что выполнил то, что намеревался, с помощью приведенного выше ответа и сообщения от блог Стива Эддинса. Вот как:

baseImage = baseImage/(max(baseImage(:))); % normalize base (anatomical) image
rgbSlice  = baseImage(:,:,[1 1 1]);        % converting to RGB (ignore colormaps)
imshow(parameterROIImage, []);             % show parametric image
colormap('jet');                           % apply colormap
hold on;
h = imshow(rgbSlice);                      % superimpose anatomical image
set(h, 'AlphaData', ~bwROIlocations);      % make pixels in the ROI transparent
colorbar;       

где parameterROIImage это:

введите здесь описание изображения

bwROIlocations — логическая матрица, содержащая пиксели ROI:

введите здесь описание изображения

Конечный результат:

введите здесь описание изображения

Спасибо за помощь Шай.

person fnery    schedule 07.05.2013
comment
Как вы создали разноцветные пиксели на своем первом изображении? Объясните пожалуйста? Спасибо - person Pow; 17.05.2013