自从热成像初期以来,红外热像仪就经常使用从黑色到蓝色,品红色,橙色,黄色到亮白色的独特调色板。此调色板通常称为铁,或铁弓。

这是使用前视红外摄像机拍摄的图像的典型虚假颜色可视化效果(来源:Wikipedia)。

Lcamtuf的 "Termografia kot"-典型的伪彩色红外

在一个专业的红外图像论坛上,我发现了2005年的一则帖子,上面贴着一个离散调色板,似乎与我要寻找的调色板很接近。

未知来源的离散FLIR调色板

但是,与使用彩虹调色板一样,最好有一个简洁的分析表达式来定义调色板。

对于使用GNUPLOT的用户来说,此调色板可能看起来很熟悉,因为默认的PM3D调色板运行黑色,蓝色,洋红色,橙色,黄色。

GNUPLOT PM3D调色板

此调色板具有简洁的定义

r = Math.round(255*Math.sqrt(x));
g = Math.round(255*Math.pow(x,3));
b = Math.round(255*(Math.sin(2 * Math.PI * x)>=0?
                   Math.sin(2 * Math.PI * x) : 0 ));

但是,其他调色板的外观并不完全是这样。我的口味有点太褐色了。有关FLIR相机使用的调色板的原产地或分析表达式的任何其他信息都将有所帮助。

我创建了一个JSFiddle来与不同的调色板一起玩。

最佳答案

这些调色板是任意的,主要用于根据您所拥有图像的类型来改善对比度。因此,这些值可以是纯自定义集。

由于IR不能捕获任何颜色(因为它不在颜色范围内),因此返回的亮度值将被简单地映射到产生最佳对比度的位置,特别是在边缘和形状方面。

铁调色板具有5-7种基色,然后进行插值(可以对红色进行微调,以调整黄色和品红色之间的混合色)。确切的值和位置可以按照您喜欢的任何方式进行设置,下面是一个示例:

var ctx = document.querySelector("canvas").getContext("2d");
var gr = ctx.createLinearGradient(0, 0, 600, 0);
var keys = ["white", "gold", "#c07", "#20008c", "black"];

// add color stops to gradient:
for(var i = 0, key; key = keys[i]; i++) {
  gr.addColorStop(i / (keys.length-1), key);
}

ctx.fillStyle = gr;
ctx.fillRect(0, 0, 600, 20);
<canvas width=600></canvas>

10-02 03:25
查看更多