1

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

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

4

2 回答 2

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
于 2012-04-04T09:48:18.243 回答
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]);

这给出了结果:

在此处输入图像描述

该图的颜色图正在用于轮廓图。背景图像不依赖于颜色图,而是以真彩色显示 - 即每个像素都显示为 rgb_gray_im 中定义的 RGB 值。

还有其他方法可以绕过 MATLAB 颜色图限制:例如,请参阅此博客文章这些答案

于 2012-04-04T09:49:21.673 回答