2

我正在尝试在 Matlab 中实现一个颜色条,当以灰色打印时它看起来是线性的。我认为最直接的方法是实现 gnuplot pm3d 30,31,32 RGB 颜色空间。在这个网站上,我找到了一个很好的介绍,它适用于一些更简单的 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 的值。有人可以帮忙吗?

4

1 回答 1

0

忽略超出范围的值似乎有效。(http://juluribk.com/2011/05/18/843/)

pm3d303132(pm3d303132<0)=0;

pm3d303132(pm3d303132>1)=1;

于 2012-07-05T02:37:56.660 回答