Как получить матрицу изображения из содержимого осей

Есть ли способ получить содержимое контурного графика в виде матрицы изображения? Я хочу растрировать только содержимое, а не оси, метки и пустое пространство всей фигуры.

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


person Herr von Wurst    schedule 04.04.2012    source источник
comment
Не могли бы вы преобразовать матрицу изображения в изображение в градациях серого rgb (т.е. n x m x 3), а затем использовать imshow (RGB), чтобы показать это изображение? Это должно остановить изображение в градациях серого, полагающееся на цветовую карту.   -  person Bill Cheatham    schedule 04.04.2012
comment
Спасибо, но я так не думаю, поскольку контурный график должен использовать струйную цветовую карту, которая сделает изображение в градациях серого неузнаваемым.   -  person Herr von Wurst    schedule 04.04.2012
comment
См. мой ответ ниже - поскольку ваше фоновое изображение имеет оттенки серого, его можно нарисовать в истинном цвете и использовать цветовую карту фигуры для контурного графика.   -  person Bill Cheatham    schedule 04.04.2012


Ответы (2)


Попробуйте getframe и frame2im

Пример из документации frame2im:

Create and capture an image using getframe and frame2im:

peaks                      %Make figure
f = getframe;              %Capture screen shot
[im,map] = frame2im(f);    %Return associated image data 
if isempty(map)            %Truecolor system
  rgb = im;
else                       %Indexed system
  rgb = ind2rgb(im,map);   %Convert image data
end
person Castilho    schedule 04.04.2012
comment
Спасибо, frame2im это то, что я искал. - person Herr von Wurst; 04.04.2012

Не прямой ответ на вопрос, но я думаю, что вы могли бы достичь своей цели:

%# load in grayscale image
gray_im =  rgb2gray(imread('peppers.png'));

%# converting n x m grey image to n x m x 3 rgb gray image
rgb_gray_im = cat( 3, gray_im, gray_im, gray_im );

%# displaying this image
imshow( rgb_gray_im );

%# plotting contourf on top with arbitrary colourmap
hold on
h = axes('position', [0.5, 0.5, 0.2, 0.2]);
z = peaks;
contourf(h, z, [min(z(:)), -6 : 8]);

Что дает результат:

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

Цветовая карта фигуры используется для построения контура. Фоновое изображение не зависит от цветовой карты, а вместо этого отображается в истинном цвете, то есть каждый пиксель отображается как значение RGB, определенное в rgb_gray_im.

Существуют также другие способы обойти ограничения карты цветов MATLAB: см., например, этот пост в блоге или эти ответы.

person Bill Cheatham    schedule 04.04.2012
comment
См. некоторые ответы здесь: groups.google .com/group/comp.soft-sys.matlab/browse_thread/ - person Bill Cheatham; 04.04.2012