Как добавить '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   
Другие вопросы по тегам