如何在Matlab中以彩色显示灰度栅格?
问题描述:
我有一个表示海拔的陆地.tif文件。我想用颜色斜坡来显示这个栅格,而不是灰度斜坡。我将如何在Matlab中做到这一点?如何在Matlab中以彩色显示灰度栅格?
我看着使用所述TIFF相关联的信息:
[Z, R] = geotiffread('Landmass.tif')
其表示在标题“ColourType”为“灰度”。我试图将其改为'冬季'(matlabs内置色彩方案之一),但它没有任何区别。
目前我使用下面的命令来显示TIFF:
[Z, R] = geotiffread('Landmass.tif');
e=uint8(Z);
mapshow(e,R);
所有较高的地区是白色的,其他的都是黑色的......即使周围的陆地(我想我可以有削减/掩盖大陆出来摆脱)。 所有的黑色都让我很难在tiff顶部显示其他形状文件,所以我想将颜色方案从灰度更改为更轻的东西。 我该怎么做?
答
原因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)'命令重新显示之前关闭,没有任何东西被旋转。非常感谢。 – new2matlab
对不起@ Rotem ..我以为我接受了它。现在完成了。我实际上有这条路线的后续问题。我现在无法在landmass.tif顶部绘制任何形状文件,因为技术上,我不再将其显示为地图...所以空间参考丢失了。你知道一种方法,我可以改变tiff的颜色方案,仍然把它当作地图吗?即。使用mapshow显示它? – new2matlab
我认为你需要在地图上完成所有工作,并在最后阶段将其转换为图像(显示之前)。当我已经使用colormap时,也可以使用'mapshow(I,R);'。 – Rotem