我的处女作:在matlab中使用ind2rgb函数时遇到问题

我的处女作:在matlab中使用ind2rgb函数时遇到问题,matlab,image-processing,plot,contour,Matlab,Image Processing,Plot,Contour,breif免责声明:我是自学成才的程序员,这是我正式发布的第一篇堆栈溢出帖子,所以请耐心等待 我有一个250X250概率分布(pdf)矩阵(值范围为0到1),我想将其转换为真彩色(250x250x3)矩阵,这样我可以保存一系列矩阵,并将它们显示为电影或保存为RGB图像。我的问题有两个方面: 首先,如果我使用: cmp=jet; img=ind2rgb(pdf,cmp); 虽然imagesc(pdf)返回了我所期望的正确的热图,但img最终是一个完全蓝色的图像,带有img(:,:,3)=(一些值

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

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

首先,如果我使用:

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

虽然imagesc(pdf)返回了我所期望的正确的热图,但img最终是一个完全蓝色的图像,带有
img(:,:,3)=(一些值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')

谢谢莫莉,这很有帮助。很抱歉延迟回复。我读了帖子,修改了代码,很快就忘记了回复。