1

我有两个不同波段的不同卫星图像。我想看到的是像素之间的差异。为此,我减去了两个图像的值。结果,我得到了一张具有差异值的新图像(在波段的情况下)。我不知道这是否可能,但我会用颜色对这些值进行分类。例如,如果差值是从 0 到 20,我希望像素颜色为蓝色,如果从 30 到 40,则为绿色,如果高于 40,则为红色。是否有可能做到这一点?

提前致谢!

4

1 回答 1

0
img=rand(300,200)*256; // test image
image(img)
colorbar

将使用默认颜色映射显示您的图像,正如您从颜色栏中看到的那样,它使用各种深浅不一的蓝色表示接近 0 的值,绿色表示大约 120 的值,红色表示最高值。

请注意,image它采用值从 0 到 255 的矩阵作为参数,而默认颜色映射包含 64 个条目,因此每个条目将用于四个相邻的值。但是,颜色图也可能有 256 行。

只需重新定义该颜色图,如下所示:

myMap = [repmat([0 0 1],20,1); ... %# blue for first 20 values
         repmat([0 1 0],20,1); ... %# green for next 20
         repmat([1 1 0.5],216,1)];  %# bright yellow for the rest
colormap(myMap); 

(这是假设您的图像值从 0 缩放到 255。如果颜色图中的行数少于图像中的值,则颜色图将被缩放并且颜色栏中的标签将与图像值不匹配。您可以但是创建一个颜色图,其行数对应于图像中的最大值(如果 <=255),以便匹配。如果不确定,请参阅 和 的帮助以获取详细信息。imagecolormap

于 2013-03-08T07:57:14.740 回答