简短的免责声明:我是自学成才的程序员,这是我正式的第一篇堆栈溢出帖子,所以请耐心等待。
我有一个 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 图形保存为真彩色图像而没有图形轴?
如果能回答其中一个或两个问题,我们将不胜感激。
科林
最佳答案
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')
结果图如下所示:
关于你的第二个问题,getframe
和 imwrite
可用于保存在轴中显示的图像。例如:
figure
imagesc(spiral(10))
frame = getframe();
imwrite(frame.cdata, 'frame.png')
关于matlab - 我的处女帖 : Having trouble with ind2rgb function in matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16553149/