2016-08-22 42 views
0

我有一个表示海拔的陆地.tif文件。我想用颜色斜坡来显示这个栅格,而不是灰度斜坡。我将如何在Matlab中做到这一点?如何在Matlab中以彩色显示灰度栅格?

我看着使用所述TIFF相关联的信息:

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

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

目前我使用下面的命令来显示TIFF:

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

所有较高的地区是白色的,其他的都是黑色的......即使周围的陆地(我想我可以有削减/掩盖大陆出来摆脱)。 所有的黑色都让我很难在tiff顶部显示其他形状文件,所以我想将颜色方案从灰度更改为更轻的东西。 我该怎么做?

回答

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... 

波士顿冬天的颜色表:

enter image description here

+0

@ Rotem公司这是有道理的,你的解决方案完美的作品。在附注中,在使用mapshow命令并获取图像的gca之后,必须在执行任何其他命令之前关闭图像。否则,显示器将被旋转。正如我所说,一旦原始图像在用'imshow(J)'命令重新显示之前关闭,没有任何东西被旋转。非常感谢。 – new2matlab

+0

对不起@ Rotem ..我以为我接受了它。现在完成了。我实际上有这条路线的后续问题。我现在无法在landmass.tif顶部绘制任何形状文件,因为技术上,我不再将其显示为地图...所以空间参考丢失了。你知道一种方法,我可以改变tiff的颜色方案,仍然把它当作地图吗?即。使用mapshow显示它? – new2matlab

+0

我认为你需要在地图上完成所有工作,并在最后阶段将其转换为图像(显示之前)。当我已经使用colormap时,也可以使用'mapshow(I,R);'。 – Rotem

相关问题