我正在尝试在Matlab中复制一些ArcGIS功能,特别是Add Colormap功能。 ArcGIS中的“添加色彩映射”功能将.clr文件与TIFF图像关联,以便在查看时图像具有与TIFF关联的自定义颜色方案。
我的TIFF图像最多有6个值(1 - 6),采用无符号8位整数格式。您可以从屏幕截图中看到,某些图像只有1,2或3个值,而其他图像有6个值 - 导致屏幕上的颜色呈现变化。
我看到Matlab具有colormap功能,但是,它似乎只是为数字设计,而不是为TIFF文件设计。如何在Matlab中将色彩映射与这些TIFF图像相关联,以便在我查看它们时(例如在ArcGIS中),它们具有自定义颜色方案?
答案 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')
现在用colormap保存
imwrite(im, heat, 'colormap.tif')
另一种方法是在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')
或者您可以使用内置函数gray2rgb
或ind2rgb
将索引图像转换为使用特定色彩图的RGB图像。
rgb_image = gray2rgb(im, jet);
imwrite(rgb_image, 'rgb_jet.tif')
在所有这些中要记住的一件事是,默认情况下,任何MATLAB色彩图只有64种颜色。因此,如果您需要更多颜色,可以在构造色彩图时指定它
size(gray)
64 3
size(gray(1000))
1000 3
如果您尝试显示高保真数据,这一点尤其重要。