2012-06-27 62 views
0

我必須創建一個地圖來顯示距離某個範圍的某些值的距離有多遠,並給出顏色的結果。同時,在該範圍內的值應該具有另一種不同的顏色。
例如:只有在[-2 2]之內的結果可以被認爲是有效的。對於其他值,顏色必須顯示距離這些限制有多遠(-3比-5更淺,顏色更深)
我試過色條但我無法設置自定義色標。
任何想法?? 在此先感謝!在matlab中創建一個定製的顏色條

回答

0

您需要爲您具有的值範圍定義顏色映射。
色圖是N * 3矩陣,定義每種顏色的RGB值。

請參見下面的例子中,對於範圍-10:10個有效值V1,V2:

v1=-3; 
v2=+3; 
a = -10:10; 
graylevels=[... 
    linspace(0,1,abs(-10-v1)+1) , ... 
    ones(1, v2-v1-1) , ... 
    linspace(1,0,abs(10-v2)+1)]; 
c=repmat(graylevels , [3 1])'; 
figure; 
imagesc(a); 
colormap(c); 
+0

很簡單,很容易實現但萬一變化的規模也變化了。我該如何解決它? – Luis

+0

您需要知道將哪種顏色分配給哪個值。例如,將最小值和最大值設置爲黑色,將平均值設置爲白色。其他選項是使用更穩健的數據百分比。一旦你決定,映射是很容易的:根據需要替換值-10,10,v1,v2以上的代碼。 –

0

這裏,我只是放在一起展示創建自己的查找表的簡單方法一些代碼並將其值分配給您正在使用的圖像。我假設你的結果是在二維數組中,我只是使用隨機分配的值,但概念是相同的。

我提到HSV作爲着色方案的潛在應用。請注意,這需要你有一個m乘n乘3的矩陣。頂層是H - 色調,第二層是S - 飽和度,第三層是V或值(明/暗)。只需將H和S設置爲您想要的任何顏色值,並按照下面所示的類似方式改變V,即可獲得您想要的各種明暗顏色。

% This is just assuming a -10:10 range and randomly generating the values. 
randmat = randi(20, 100); 
randmat = randmat - 10; 

% This should just be a black and white image. Black is negative and white is positive. 
figure, imshow(randmat) 

% Create your lookup table. This will illustrate having a non-uniform 
% acceptable range, for funsies. 
vMin = -3; 
vMax = 2; 

% I'm adding 10 here to account for the negative values since matlab 
% doesn't like the negative indicies... 
map = zeros(1,20); % initialized 
map(vMin+10:vMax+10) = 1; % This will give the light color you want. 

%linspace just simply returns a linearly spaced vector between the values 
%you give it. The third term is just telling it how many values to return. 
map(1:vMin+10) = linspace(0,1,length(map(1:vMin+10))); 
map(vMax+10:end) = linspace(1,0,length(map(vMax+10:end))); 

% The idea here is to incriment through each position in your results and 
% assign the appropriate colorvalue from the map for visualization. You 
% can certainly save it to a new matrix if you want to preserve the 
% results! 
for X = 1:size(randmat,1) 
    for Y = 1:size(randmat,2) 
     randmat(X,Y) = map(randmat(X,Y)+10); 
    end 
end 

figure, imshow(randmat) 
相關問題