2

一个简短的免责声明:我是自学成才的程序员,这是我正式发布的第一篇堆栈溢出帖子,所以请耐心等待。

我有一个 250X250 概率分布(pdf)矩阵(值范围为 0 到 1),我想将其转换为真彩色(250x250x3)矩阵,因此我可以保存一系列这些矩阵并将它们显示为电影或保存它们作为 RGB 图像。我的问题有两个:

首先,如果我使用:

cmp=jet;
img=ind2rgb(pdf,cmp);

虽然 imagesc(pdf) 返回我期望的正确热图,但 img 最终是一个完全蓝色的图像,带有img(:,:,3)=(some value<1)and (img(:,:,1:2)==0ind2rgb()如果有人能解释为什么(缩放?)不一样,我将非常感激imagesc(),以及我将如何解决这个问题。

此外:

我知道contour()并且imagesc()是在 matlab 图形窗口中显示这些索引值的有用函数,但是有没有办法将 matlab 图形保存为没有图形轴的真彩色图像?

对这些问题中的一个或两个问题的答案将不胜感激。

科林

4

1 回答 1

2

ind2rg 不缩放图像,它仅将其映射到颜色图。您必须自己缩放图像。此外,您需要指定颜色图的大小。这是一个例子:

pdf = rand(100,100); % fake data
pdfScaled = uint8(256*pdf); % scale data
cmp = jet(256); % 256 element colormap
img = ind2rgb(pdfScaled,cmp);

subplot(2,1,1)
imagesc(pdf)
title('indexed image')
subplot(2,1,2)
image(img) 
title('rgb image')

结果图如下所示:

索引和 rgb 图像

至于你的第二个问题,getframe可以imwrite用来保存图像,因为它显示在一个轴上。例如:

figure
imagesc(spiral(10))
frame = getframe();
imwrite(frame.cdata, 'frame.png')
于 2013-05-14T22:49:37.827 回答