从灰度图像构建颜色条

时间:2015-06-16 13:24:45

标签: java c++ c colors

我有一个代表强度的8位灰度图像。我想根据强度值显示颜色(要清楚,就像这样http://www.matthiaspospiech.de/files/matlab/plot/pcolor/pcolor-example-simple.png)。

我尝试使用HSV刻度(H in(0-> 85)或(85-> 140)或(140-> 255)然后返回RGB但似乎不起作用。任何有想法?这是我的代码:(它在ij的循环中运行,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);

(最终的目标是在OpenImaj的Java程序中使用它,所以如果有人知道它,它也很好:))

1 个答案:

答案 0 :(得分:2)

采用HSB系统。将S设置为100(完全饱和)。将B设置为100(最大亮度)。我想你的灰色在[0,255]中,将H设置为(1-(灰色/ 255.0))* 240。

这将大致产生类似给定图片的东西。当灰色= 0时,H将是240°那么蓝色,当灰色= 255时,H将是0°所以红色......

您也可以修改B以获得明亮或深色......

如果API中没有,可以在网上找到HVB到RGB转换。