温度的假/伪彩色编码

时间:2012-02-02 16:07:15

标签: opencv color-mapping color-codes color-coding

我在给定范围内有一些温度值,比如0到100摄氏度。现在我想将这些值映射到颜色,因此蓝色= RGB(0,0,255)表示0°C,红色= RGB(255,0,0)表示100°C,其间的颜色表示介于两者之间的温度。

Matlab实际上有一个名为colormap的函数。我的东西是在OpenCV& C ++。有没有人,谁已经有一些颜色编码经验或知道任何好的数学方法来做到这一点?

3 个答案:

答案 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,:)