我有一个代表强度的8位灰度图像。我想根据强度值显示颜色(要清楚,就像这样http://www.matthiaspospiech.de/files/matlab/plot/pcolor/pcolor-example-simple.png)。
我尝试使用HSV刻度(H in(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);
(最终的目标是在OpenImaj的Java程序中使用它,所以如果有人知道它,它也很好:))
答案 0 :(得分:2)
采用HSB系统。将S设置为100(完全饱和)。将B设置为100(最大亮度)。我想你的灰色在[0,255]中,将H设置为(1-(灰色/ 255.0))* 240。
这将大致产生类似给定图片的东西。当灰色= 0时,H将是240°那么蓝色,当灰色= 255时,H将是0°所以红色......
您也可以修改B以获得明亮或深色......
如果API中没有,可以在网上找到HVB到RGB转换。