use*_*593 3 matlab image-processing matlab-figure
我有一个灰色图像.我可以使用以下方法在matlab中创建热图:
I = imagesc(I);
Run Code Online (Sandbox Code Playgroud)
它以颜色显示强度值.我想用这个热图获得彩色图像.我该怎么做?
这是imagesc的输出:
据推测,"彩色图像"是指RGB或真彩色图像(具有三个颜色通道的图像阵列).你称之为"热图"的是colormapMatlab默认应用于灰度图像(只有一个颜色通道的图像阵列).灰度图像加上彩色图称为索引彩色图像(此处详细说明).您可以使用该ind2rgb函数从索引颜色转换为RGB:
IMG_gray = rand(100);
map = colormap; % Get the current colormap
IMG_rgb = ind2rgb(IMG_gray,map);
Run Code Online (Sandbox Code Playgroud)
请注意,默认情况下,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);
Run Code Online (Sandbox Code Playgroud)