我在给定范围内有一些温度值,比如0到100摄氏度。现在我想将这些值映射到颜色,因此蓝色= RGB(0,0,255)表示0°C,红色= RGB(255,0,0)表示100°C,其间的颜色表示介于两者之间的温度。
Matlab实际上有一个名为colormap的函数。我的东西是在OpenCV& C ++。有没有人,谁已经有一些颜色编码经验或知道任何好的数学方法来做到这一点?
答案 0 :(得分:2)
对于从0到100的温度(t),您可以计算每种颜色:
Pseudocode:
Col(t)=( 0+INT(2.55*t), // Red
0, // Green
255-INT(2.55*t)) // Blue
Col(0) =(0,0,255)
Col(100)=(255,0,0)
因子2.55来自给定的最大/最小值0°和100°C。 你现在必须选择你的间隔。
希望有所帮助。
答案 1 :(得分:2)
HSV colourspace在这里可能会有所帮助。
Hue是周期性的,但是,也就是说,如果你从红色一路走到光谱的另一端,你会回到红色,这对你的情况没有用。您可能想要做的是选择从红色,黄色和绿色到蓝色(省略粉色/紫色)的色调光谱的子集。 RGB-HSV section中有一张图片可以显示我的意思。
更新:实际上,this previous answer告诉您如何实现您描述的MATLAB Jet 调色板。
似乎 Jet 实际上是HSV色彩空间的变体!
答案 2 :(得分:-1)
听起来你想要一个JET色图,它以深蓝色开始,以深红色结束。
假设你有一组从0到100的温度,递增1:
temps = 0:1:100;
使用JET函数在N个点上创建颜色集,其中N是温度矢量的长度:
colors = jet(length(temps));
现在,要访问第一个温度的颜色(这将给出蓝色):
colors(1,:)
或最后一个温度的颜色(这将是红色):
colors(end,:)