2014-01-30 204 views
2

我有一个灰度图像。我可以用matlab创建一个热图:热图对彩色图像matlab

 I = imagesc(I); 

它以彩色显示强度值。我想使用这个热图来获取彩色图像。我该怎么做?

这是于imagesc的输出:This is the output of imagesc

回答

5

据推测由“彩色图像”您的意思是RGB或真彩色图像(图像阵列与三个颜色通道)。而你所说的“热图”是colormap,默认情况下Matlab应用于灰度图像(只有一个颜色通道的图像阵列)。灰度图像加彩色图被称为索引彩色图像(详细阅读here)。您可以使用ind2rgb函数从索引颜色转换为RGB:

IMG_gray = rand(100); 
map = colormap; % Get the current colormap 
IMG_rgb = ind2rgb(IMG_gray,map); 

注意,默认情况下在Matlab的颜色表只能使用64种颜色,而256要获得平滑的色彩渐变,您可以通过map = colormap(jet(256));或手动设置的颜色表map = colormap(hsv(256));

如果要在随后的图像文件,你可以使用imwrite,可以采取两种RGB图像或索引颜色图像与色彩映射作为输入。

+0

非常感谢你。这非常有用。得到它了。 – user570593

+0

'默认情况下,Matlab中的颜色映射只使用64种颜色,而不是256'这就是有用的信息。谢谢! –

+1

@Jigg:我知道。毕竟是2014年!希望他们有一天会改变它。也许当新的[Handle Graphics 2](http://undocumentedmatlab.com/blog/hg2-update/)发布时。 – horchler

3

规模在你的形象imagesc强度值呢,并使用颜色表(jet是默认):

N = 256; 
IN = round(N * (I-min(I(:)))/(max(I(:))-min(I(:)))); 
cmap = jet(N); % see also hot, etc. 
IRGB = ind2rgb(IN,cmap); 
+0

非常感谢。得到它了。 – user570593