有没有办法将contourf图的内容作为图像矩阵?我想只栅格化内容,而不是整个图形的轴,标签和空白区域。
我的目标是在灰度图像上叠加透明的彩色等高线图,我没有看到另一种方法,因为MATLAB每个图形只有一个色彩图。
答案 0 :(得分:3)
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]);
结果如下:
该图的colourmap正用于contourf图。背景图像不依赖于colourmap,而是以truecolour显示 - 即每个像素显示为rgb_gray_im中定义的RGB值。
还有其他方法可以解决MATLAB colourmap限制:例如,请参阅this blog post或these answers。