2013-03-08 117 views
1

我有两个不同带的不同的satelital图像。我想看到的是像素之间的差异。为了达到这个目的,我放弃了两幅图像的值。结果,我有一个新的图像与差异值(在一个乐队的情况下)。我不知道这是否可能,但我会用颜色对这些值进行分类。例如,如果差异是从0到20,我希望像素会像蓝色,绿色(如果它从30到40)变为绿色,如果像素大于40,则为红色。是否有可能做到这一点?按颜色分类的Matlab图像分类

在此先感谢!

回答

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的帮助以获得详细信息,如果不确定。)

+0

谢谢!我有问题,因为值是从0.001到1,我试图改变它,但我没有得到确切的结果(我也乘以图像* 256) – user1578688 2013-03-08 09:18:07

+0

@ user1578688问题是什么?它是否具有最高的价值? (请尝试乘以255然后。)或者太多的低值被分组在一起? (然后可能做非线性缩放,例如在乘以255之前取值的平方根。如果需要,也可手动设置色条的标签。) – 2013-03-08 09:28:52

+0

嗨!最高值是500(值从0到500)。 image(roug) colorbar myMap = [repmat([0 0 1],50,1); ...前20个值的%#蓝 repmat([0 1 0],180,1); ...%#绿下一个20 repmat([1 1 0.5],500,1)]; %#明亮的黄色其余 colormap(myMap);问题是第一种颜色重复。 – user1578688 2013-03-20 13:07:40