我正在尝试在 MATLAB 中生成给定三种颜色(最高值、零值和最低值)的颜色图。我的思维过程是从最高端到中间循环,并将每个步骤存储到一个 3xN(第一列是 R,第二列是 G,第三列是 B)矩阵。所以我正在使用:
%fade from high to zero
oldRed=high(1);
oldGreen=high(2);
oldBlue=high(3);
newRed=mid(1);
newGreen=mid(2);
newBlue=mid(3);
currentRed=oldRed; currentGreen=oldGreen; currentBlue=oldBlue;
for x=1:steps
currentRed=oldRed+((x*(newRed-oldRed))/(steps-1));
currentGreen=oldGreen+((x*(newRed-oldRed))/(steps-1));
currentBlue=oldBlue+((x*(newRed-oldRed))/(steps-1));
cmap=[cmap;[currentRed currentGreen currentBlue]];
end
然后我会做同样的事情,从零值到低极值。然而我的代码没有给我任何有用的矩阵。有人可以帮助我解决这个问题吗?
您可以使用线性插值来扩展颜色
nCol = 256; % number of colors for the resulting map
cmap = zeros( nCol, 3 ); % pre-allocate
xi = linspace( 0, 1, nCols );
for ci=1:3 % for each channel
cmap(:,ci) = interp1( [0 .5 1], [low(ci) mid(ci) high(ci)], xi )';
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)