Как добавить 'colorbar' и установить 'clim' для цветного изображения, наложенного на изображение уровня серого?
Я пытаюсь наложить цветное изображение на изображение уровня серого. Тем не менее, когда я пытаюсь построить "цветную полосу" и установить "клим". Matlab всегда создает цветовую шкалу в соответствии с нижним уровнем изображения серого.
Однако я хочу получить цветную полосу для наложенного цветного изображения. Любые предложения будут оценены. Большое спасибо.
%% Example codes:
greyImage = imread('AT3_1m4_08.tif');
colorImage = imread('hestain.png');
figure,
greyImagePlot = image(greyImage); colormap(gray); hold on;
overlayImage = imagesc(colorImage, ...
'CDataMapping', 'scaled', 'HitTest', 'off');
alF = 0.5.*ones(size(colorImage, 1), size(colorImage, 2));
set(overlayImage, 'AlphaData', alF);
colorbar; % This will show a grey scale colorbar not the colour one I want
set('CLim', [0 100]); % Also, the colormap limit here is not working
axis off
axis image
1 ответ
Ссылка на одну фигуру / несколько цветовых карт можно найти здесь http://www.mathworks.fr/support/solutions/en/data/1-GNRWEH/index.html
В частности, используя изображения, можно использовать функцию "subimage".
Я также использую функции 'FreezeColor' и 'cbfreeze' из 'matlabcentral', когда домашнее решение слишком сложно. http://www.mathworks.com/matlabcentral/fileexchange/7943-freezecolors-unfreezecolors http://www.mathworks.com/matlabcentral/fileexchange/24371
Простое и ленивое решение для сохранения цветовой полосы на нескольких графиках в пределах одной оси: сначала нанесите цветное изображение и его цветную полосу, заморозьте цветную полосу, затем нанесите изображение на изображение уровня серого (без прозрачности) и, наконец, нанесите цветное изображение опять (прозрачность).
Вот кусок кода.
figure;
%first step: RGB image and colorbar
overlayImage = imagesc(colorImage, 'CDataMapping', 'scaled', 'HitTest', 'off');
alF = 0.5.*ones(size(colorImage, 1), size(colorImage, 2));
set(overlayImage, 'AlphaData', alF);
colorbar;
set(gca, 'CLim', [0 100]);
cbfreeze; %from 'COLORMAP and COLORBAR utilities' in Matlab Central
%second step: gray image (no transparency)
greyImagePlot = image(greyImage); colormap(gray); hold on;
%third step: plot colour image
overlayImage = imagesc(colorImage, ...
'CDataMapping', 'scaled', 'HitTest', 'off');
alF = 0.5.*ones(size(colorImage, 1), size(colorImage, 2));
set(overlayImage, 'AlphaData', alF);
axis off
axis image