我的处女帖:在matlab中遇到ind2rgb函数问题

时间:2013-05-14 21:26:54

标签: matlab image-processing plot contour

breif disclaimer:我是自学成才的程序员,这是我的第一个堆栈溢出帖子,所以请耐心等待。

我有一个250X250的概率分布(pdf)矩阵(值为0到1),我想把它变成真彩色(250x250x3)矩阵,这样我就可以保存一系列这些矩阵并将它们显示为电影或将它们保存为RGB图像。我的问题有两方面:

首先,如果我使用:

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

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

此外:

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

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

科林

1 个答案:

答案 0 :(得分: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')

结果情节如下所示:

indexed and rgb images

关于您的第二个问题,getframeimwrite可用于保存图像,因为它显示在轴上。例如:

figure
imagesc(spiral(10))
frame = getframe();
imwrite(frame.cdata, 'frame.png')