1

我有来自红外相机的原始像素数据(640x480 像素),代表特定的测量温度。这些像素值的范围为 0 到 65535 的 16 位。

我可以将像素值显示为 8 位灰度,效果很好。

但现在我想通过使用假调色板来显示这些像素。

我注意到这里有两个挑战:
1.) 创建一个假调色板。这意味着不仅仅是一个简单的 RGB 或 HSV 调色板......我正在考虑从黑色到黄色,到橙色,到红色,最后到紫色的过渡
2.)将像素值与我调色板上的颜色相关联(例如 0 =黑色,65535 = 紫色,但 31521 = ???)

你知道我应该如何解决这个问题吗?我使用 Qt4 和 Python (PyQt),但如果您只是分享解决方案的方式,我会非常高兴。

4

2 回答 2

0

一种简单的方法是在您的范围内的某些点定义颜色 - 如在您的示例中,0 是黑色,65535 是紫色,也许 10000 是红色,无论您想做什么。使用这些关键 rgb 值设置一个表,然后简单地在输入值上方和下方的关键值的 rgb 值之间进行插值,以找到任何给定值的 rgb 颜色。

例如。如果您正在查找值 1000 的颜色,并且您的表有

value=0, color=(0,0,0)
value=5000, color=(255, 0, 255)

然后您将在这些值之间进行插值以获得颜色 (51, 0, 51)

于 2013-04-02T19:47:41.053 回答
0

最简单的方法如下:将 unsigned short 转换为一个QRgb类型,并在 QColor 构造函数中使用它。

unsigned short my_temp=...;
QColor my_clr((QRgb)my_temp);

这将使您的值介于黑色和青色之间。

于 2013-04-02T19:51:00.443 回答