如何在栅格数据集上添加新的色彩映射?

时间:2015-05-31 16:49:41

标签: image matlab tiff colormap

我正在尝试在Matlab中复制一些ArcGIS功能,特别是Add Colormap功能。 ArcGIS中的“添加色彩映射”功能将.clr文件与TIFF图像关联,以便在查看时图像具有与TIFF关联的自定义颜色方案。

我的TIFF图像最多有6个值(1 - 6),采用无符号8位整数格式。您可以从屏幕截图中看到,某些图像只有1,2或3个值,而其他图像有6个值 - 导致屏幕上的颜色呈现变化。

我看到Matlab具有colormap功能,但是,它似乎只是为数字设计,而不是为TIFF文件设计。如何在Matlab中将色彩映射与这些TIFF图像相关联,以便在我查看它们时(例如在ArcGIS中),它们具有自定义颜色方案?

enter image description here

1 个答案:

答案 0 :(得分:1)

正如一些评论者指出的那样,colormap功能实际上并不仅限于数字。色彩映射概念实际上只是一个查找表,它将特定值(索引)映射到特定颜色(通常为RGB)。

如果查看imwrite的文档,您会发现实际上可以指定一个色图作为该函数的第二个输入。

load mri
im = squeeze(D(:,:,12));

% This is an indexed image (M x N)

% Save without specifying a colormap
imwrite(im, 'nocolormap.tif')

enter image description here

现在用colormap保存

imwrite(im, heat, 'colormap.tif')

enter image description here

另一种方法是在MATLAB中创建RGB图像并保存此图像,而不向imwrite提供色彩映射。您可以手动创建此图像

% Normalize a little bit for display
im = double(im) ./ max(im(:));
output = repmat(im, [1 1 3]);   % Make the image (M x N x 3)

imwrite(output, 'rgb_grayscale.tif')

enter image description here

或者您可以使用内置函数gray2rgbind2rgb将索引图像转换为使用特定色彩图的RGB图像。

 rgb_image = gray2rgb(im, jet);
 imwrite(rgb_image, 'rgb_jet.tif')

enter image description here

在所有这些中要记住的一件事是,默认情况下,任何MATLAB色彩图只有64种颜色。因此,如果您需要更多颜色,可以在构造色彩图时指定它

size(gray)

    64   3

size(gray(1000))

    1000   3

如果您尝试显示高保真数据,这一点尤其重要。