Java 从灰度图像构建颜色栏

Java 从灰度图像构建颜色栏,java,c++,c,colors,Java,C++,C,Colors,我有一个8位灰度图像,表示强度。我想显示它的颜色根据强度值(要清楚,像这样的东西) 我试过用HSV标度(H在(0->85)或(85->140)或(140->255)中,然后返回RGB,但似乎不起作用。有什么想法吗?这是我的代码:(它在I和j上循环运行,img是灰度图像 grey = img[j*w+i]; H

我有一个8位灰度图像,表示强度。我想显示它的颜色根据强度值(要清楚,像这样的东西)

我试过用HSV标度(H在(0->85)或(85->140)或(140->255)中,然后返回RGB,但似乎不起作用。有什么想法吗?这是我的代码:(它在
I
j
上循环运行,
img
是灰度图像

grey = img[j*w+i];                                                                                             

H = (grey * 360.0) / 255 ;
X = 1-((int)abs((int)(h/60.0) % 2) - 1);

if(BETWEEN(H,0,60) || BETWEEN(H,300,360)) r = 1.0;
else if(BETWEEN(H,60,120) || BETWEEN(H,240,300)) r = X;
else r = 0;

if(BETWEEN(H,60,180)) g = 1.0;
else if(H >= 240) g = 0;
else g = X;

if(BETWEEN(H,180,300)) b = 1.0;
else if(H < 120) b = 0;
else b = X;

R = (int)(r*255.0);
G = (int)(g*255.0);
B = (int)(b*255.0);
grey=img[j*w+i];
H=(灰色*360.0)/255;
X=1-((int)abs((int)(h/60.0)%2)-1;
如果(在(H,0,60)|在(H,300360)之间)r=1.0;
如果(在(H,60120)|在(H,240300)之间)r=X;
否则r=0;
如果(在(H,60180)之间)g=1.0;
如果(H>=240)g=0,则为else;
否则g=X;
如果(在(H,180300)之间)b=1.0;
否则,如果(H<120)b=0;
否则b=X;
R=(int)(R*255.0);
G=(int)(G*255.0);
B=(int)(B*255.0);

(最终目标是在带有OpenImaj的Java程序中使用它,因此如果有人知道它,也可以:)

使用HSB系统。将s设置为100(完全饱和)。将B设置为100(最大亮度)。我假设在[0255]中,将H设置为(1-(灰色/255.0))*240

这将大致产生与给定图片类似的结果。当灰色=0时,H将是240°的蓝色,当灰色=255时,H将是0°的红色

您还可以修改B以获得明亮或深颜色