我有两张不同波段的不同卫星图像。我想看到的是像素之间的差异。为了实现这一点,我已经减去了这两个图像的值。结果,我得到了一个具有差异值的新图像(对于带的情况)。我不知道这是否可能,但我会按颜色对这些值进行分类。例如,如果差值是从0到20,我希望像素将显示为蓝色,如果从30到40,则为绿色,如果大于40,则为红色。有可能做到这一点吗?
提前感谢!
发布于 2013-03-08 15:57:15
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)相对应的行数的色彩映射表,以使其匹配。如果不确定,请参阅image和colormap的帮助以了解详细信息。)
https://stackoverflow.com/questions/15288756
复制相似问题