【问题标题】:How to add a new colormap on a raster dataset?如何在栅格数据集上添加新的颜色图?
【发布时间】:2015-08-14 02:45:16
【问题描述】:

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

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

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

【问题讨论】:

  • 如果我理解你想用给定的“颜色图”保存你的图像。我说的对吗?
  • 那就看看imwrite吧。

标签: image matlab tiff colormap


【解决方案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')

现在用颜色图保存

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')

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

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

在所有这一切中要记住的一件非常重要的事情是,默认情况下,任何 MATLAB 颜色图都只有 64 种颜色。所以如果你需要更多的颜色,你可以在构建颜色图时指定它

size(gray)

    64   3

size(gray(1000))

    1000   3

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

【讨论】:

    猜你喜欢
    • 2018-07-18
    • 1970-01-01
    • 2017-11-20
    • 2022-01-26
    • 2020-05-07
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多