2013-04-02 34 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

相關問題