我有一个灰度图像。我可以用matlab创建一个热图:热图对彩色图像matlab
I = imagesc(I);
它以彩色显示强度值。我想使用这个热图来获取彩色图像。我该怎么做?
这是于imagesc的输出:
我有一个灰度图像。我可以用matlab创建一个热图:热图对彩色图像matlab
I = imagesc(I);
它以彩色显示强度值。我想使用这个热图来获取彩色图像。我该怎么做?
这是于imagesc的输出:
据推测由“彩色图像”您的意思是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图像或索引颜色图像与色彩映射作为输入。
规模在你的形象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);
非常感谢。得到它了。 – user570593
非常感谢你。这非常有用。得到它了。 – user570593
'默认情况下,Matlab中的颜色映射只使用64种颜色,而不是256'这就是有用的信息。谢谢! –
@Jigg:我知道。毕竟是2014年!希望他们有一天会改变它。也许当新的[Handle Graphics 2](http://undocumentedmatlab.com/blog/hg2-update/)发布时。 – horchler