2 回答

TA貢獻1868條經(jīng)驗 獲得超4個贊
來自文檔:
色圖是m到3的實數(shù)矩陣,介于0.0和1.0之間。每行是定義一種顏色的RGB矢量。色圖的第k行定義第k個顏色,其中map(k,:) = [r(k)g(k)b(k)])指定紅色,綠色和藍色的強度。
好的,首先我們要創(chuàng)建一個m-by-3矩陣,在你的情況下,m是161:
m = 161;map = zeros(m , 3);
現(xiàn)在你希望底部是黑暗的(我要用黑色),第50點是棕色的。但是讓我們以紅色為例,因為它更容易。分別為黑色和紅色的RGB三元組:[0,0,0]
和[1,0,0]
好的,目前我們的enitre色彩圖是黑色的。我們知道我們想要map(50,:) = [1, 0 ,0]
紅色,但現(xiàn)在我們想要一個正確的漸變?所以讓我們使用linspace(注意有一個更好的方法,interp1
而不是linspace
在這個答案的最后):
R0to50 = linspace(0,1,50)';
把它放在地圖上:
map(1:50, 1) = R0to50;
因此,現(xiàn)在讓我們使用棕色而不是紅色,從該鏈接獲得三元組將每個顏色分量除以255,這樣我們的三元組就是t = [101, 67, 33]./255
。好的,現(xiàn)在只需為每種顏色重復linspace過程:
R = linspace(0,t(1),50);G = linspace(0,t(2),50);B = linspace(0,t(3),50);T = [R', G', B'];map(1:50, :) = T;
現(xiàn)在重復每個其他節(jié)點。
例如:
I = linspace(0,1,161);imagesc(I(:, ones(10)))colormap(map)
linspace
單獨使用每個通道一次并對每種顏色重復此操作的替代方法是使用線性插值。
創(chuàng)建一個矩陣,其中每行是一個顏色三元組
T = [0, 0, 0 %// dark 101, 67, 33 %// brown 255, 105, 180 %// pink 255, 255, 255 %// white 255, 255, 255]./255; %// white again -> note that this means values between 161 and 255 will be indistinguishable
現(xiàn)在制作每種顏色應該在哪個范圍內(nèi)的矢量(即這個矢量定義顏色的間距,它們不需要定期/等間距):
x = [0 50 120 160 255];
最后,您可以使用一個簡單的插值創(chuàng)建整個地圖:
map = interp1(x/255,T,linspace(0,1,255));
測試
I = linspace(0,1,255);imagesc(I(ones(1,10),:)')colormap(map)
添加回答
舉報