【问题标题】:How can I display a grayscale raster in color in Matlab?如何在 Matlab 中显示彩色灰度栅格?
【发布时间】:2016-08-22 16:45:51
【问题描述】:

我有一个表示海拔的陆地 .tif 文件。我想用颜色渐变而不是灰度渐变来显示这个栅格。我将如何在 Matlab 中执行此操作?

我查看了与 tiff 相关的信息:

[Z, R] = geotiffread('Landmass.tif')

将标题“ColourType”表示为“灰度”。我试图将其更改为“冬季”(matlabs 内置配色方案之一),但没有任何区别。

目前我正在使用以下命令来显示 tiff:

[Z, R] = geotiffread('Landmass.tif');
e=uint8(Z);
mapshow(e,R);

所有较高的区域都是白色的,其他所有区域都是黑色的……甚至在陆地周围(我想我可能必须切割/掩盖陆地以摆脱)。 所有的黑色都让我很难在 tiff 上显示其他 shapefile,所以我想将颜色方案从灰度更改为更浅的颜色。 我该怎么做?

【问题讨论】:

    标签: matlab colors tiff raster


    【解决方案1】:

    colormap winter 不起作用的原因是因为mapshow(e,R); 的输出是 RGB 图像格式。
    即使显示的图像是灰色的,它实际上也是 RGB,当每个像素的 r=g=b 时。
    我以 Matlab mapshow 为例,将boston 图像转换为灰度,并使用mapshow
    对于使用colormap winter,我使用getimage 获得图像,使用rgb2gray 将其转换为灰度,然后在显示图像时colormap winter 工作。

    检查以下示例:

    [boston, R] = geotiffread('boston.tif');
    boston = rgb2gray(boston); %Convert to Grayscale for testing.
    figure
    mapshow(boston, R);
    axis image off
    
    %Get image data, note: size of I is 2881x4481x3 (I is not in Grayscale format).
    I = getimage(gca);
    
    %Convert I from RGB (R=G=B) formtat to Grayscale foramt, note: size of J is
    %2881x4481 (J is Grayscale format).
    
    %%%%%%%Avoid image being rotated%%%%%%%%%%%%%
            %Close old image and open new figure
    close Figure 1
        Figure
    J = rgb2gray(I);
    
    imshow(J);
    colormap winter %Now it's working...
    

    波士顿冬季颜色图:

    【讨论】:

    • @Rotem 这很有道理,您的解决方案完美运行。附带说明一下,在使用 mapshow 命令并获取图像的 gca 后,我必须在执行任何其他命令之前关闭图像。否则,显示器将被旋转。正如我所说,一旦原始图像在使用“imshow(J)”命令重新显示之前关闭,则没有任何旋转。非常感谢。
    • 对不起@Rotem ..我以为我已经接受了。现在已经完成了。我实际上对这条路线有一个后续问题。我现在无法在landmass.tif 上映射任何shapefile,从技术上讲,我不再将其显示为地图......所以空间参考丢失了。你知道我可以改变 tiff 的配色方案并仍然将其视为地图的方法吗? IE。使用 mapshow 显示它?
    • 我认为您需要在地图上完成所有工作,并在最后阶段(显示之前)将其转换为图像。也可以使用mapshow(I, R);,当我已经给出了颜色图。
    • hmm..我想知道我能否以某种方式在 ArcGIS 中使用颜色图指定“我”。我可能会尝试......虽然在matlab中应该可以修改光栅的“颜色类型”特征,但这对我来说似乎是合乎逻辑的。另外,我想知道我是否将我的 shapefile 绘制在光栅之上,最后尝试将配色方案修改为图像,它是否会将所有内容的配色方案共同更改为图像...
    • 对...查看RGB = ind2rgb(X,map) 以了解如何在灰度图像X 上应用颜色图。语法为:RGB = ind2rgb(I, winter(256));,当我处于灰度格式时。
    猜你喜欢
    • 1970-01-01
    • 2010-12-19
    • 2017-05-07
    • 1970-01-01
    • 2014-09-11
    • 2015-01-31
    • 1970-01-01
    • 2011-11-30
    • 2015-05-28
    相关资源
    最近更新 更多