我有一个灰色图像。我可以使用以下方法在matlab中创建热图:
I = imagesc(I);
它以彩色显示强度值。我想用这个热图获得彩色图像。我该怎么办?
这是imagesc的输出:
答案 0 :(得分:6)
据推测,“彩色图像”是指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图像或带有色彩图的索引彩色图像作为输入。
答案 1 :(得分:4)
将图像中的强度值缩放为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);