2013-03-08 59 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