我正在尝试在Matlab中实现一个颜色条,当以灰色打印时看起来是线性的。我最直接的方法是实现gnuplot pm3d 30,31,32 RGB色彩空间。在this website上我找到了一个很好的介绍,对于一些更简单的gnuplot方案来说,它可以正常工作。但是,当试图实施30,31,32方案时,我遇到了麻烦。
gnuplot指令
30: x/0.32-0.78125 31: 2*x-0.84 32: 4x;1;-2x+1.84;x/0.08-11.5
我对此进行了解释,对于蓝色通道,我必须应用四个不同的方程式。每四分之一强度值一个。这是我到目前为止所尝试的
x = linspace(0,1,128);
r = x/0.32-0.78125;
g = 2*x-0.84;
b(1:length(x)/4) = 4*x(1:length(x)/4);
b(length(x)/4:length(x)/2) = 1;
b(length(x)/2:length(x)*.75) = -2*x(length(x)/2:length(x)*.75)+1.84;
b(length(x)*.75:end) = x(length(x)*.75:end)/0.08-11.5;
pm3d303132=[r;g;b]';
但遗憾的是它不起作用。我最终得到的负值和超过1的值,Matlab无法解释。
我确实在show palette rgbformulae
帮助中读到了
* negative numbers mean inverted=negative colour component
但我不知道如何在Matlab中实现它;我也不明白如何处理超过1的值。任何人都可以帮忙吗?
答案 0 :(得分:0)
忽略出界值似乎有效。 (http://juluribk.com/2011/05/18/843/)
pm3d303132(pm3d303132℃,)= 0;
pm3d303132(pm3d303132→1)= 1;