如何从轴内容中获取图像矩阵

时间:2012-04-04 09:32:20

标签: matlab matlab-figure

有没有办法将contourf图的内容作为图像矩阵?我想只栅格化内容,而不是整个图形的轴,标签和空白区域。

我的目标是在灰度图像上叠加透明的彩色等高线图,我没有看到另一种方法,因为MATLAB每个图形只有一个色彩图。

2 个答案:

答案 0 :(得分:3)

尝试getframeframe2im

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

答案 1 :(得分:1)

不是问题的直接答案,但我认为你可以实现目标:

%# 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]);

结果如下:

enter image description here

该图的colourmap正用于contourf图。背景图像不依赖于colourmap,而是以truecolour显示 - 即每个像素显示为rgb_gray_im中定义的RGB值。

还有其他方法可以解决MATLAB colourmap限制​​:例如,请参阅this blog postthese answers