2013-04-02 32 views
1

我有来自红外摄像机的原始像素数据(640x480像素),代表特定的测量温度。这些像素值有一个从0到65535的16位范围。创建一个虚假的调色板并将其与像素值相关联

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

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

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

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

回答

0

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

例如。如果你正在寻找弥补了价值1000的颜色,你的表有

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

那么你将这些值之间插值得到的颜色(51,0,51)

+0

是的,这似乎是一个很好的方法来做到这一点。另一种方法是为某些点定义颜色并在1x65536像素图上进行颜色填充(使用线性渐变)。然后,我可以在Python中构建一个字典,并使用像素图中的特定颜色为像素值分配一个QRgb对象。 – tjack

0

的最简单的方法是如下所示: 将未签名的short转换为QRgb类型,并在QColor构造函数中使用它。

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

这将使您的值为黑色和青色之间的颜色。

+0

看起来像一个非常简单的方法,但它不可能以我想要的方式为我的像素着色,也不会创建有用的调色板。或者我错了? – tjack

相关问题