2013-10-17 43 views
1

我正在嘗試編寫一段代碼,它假定將數據映射到RGB值,而我試圖使用的可視化類型之一是發散式顏色映射。推薦用於發散顏色映射可視化的算法

我不確定最好的方法是去應用顏色。目前的算法,我現在用的就是: // F是被檢查

if(F <= .5){ 
    RGB[0] = F*510; 
    RGB[1] = F*510; 
    RGB[2] = F*254 + 128; 
}else{ 
    RGB[0] = 255 - (F-.5)*254; 
    RGB[1] = 255 - (F-.5)*510; 
    RGB[2] = 255 - (F-.5)*510; 
} 

凡曲線的關鍵點是數據點:

 F=0: (0,0,128) 
     F=0.5: (255,255,255) 
     F=1: (128, 0, 0) 

是否有任何建議的算法在那裏使用而不是這個,還是這個黑客一起分段功能好嗎? 這是由當前算法生成的圖像。 Color Curve: Divergent

回答

1

我認爲你應該使用一個條來測試你的函數,因爲在線性數據中看到轉換「速度」會更容易。

下面是使用發散的色彩映射一個真正的好文章:http://www.sandia.gov/~kmorel/documents/ColorMaps/

它描述它背後的數學。我知道通過Lab和MSH色彩空間來完成這樣一個簡單的任務似乎是一種矯枉過正,但是如果您想要高品質的色彩映射,那真的很值得。

除此之外,我不知道該功能的任何「手動」執行的(即,不使用來自MATLAB或R已經複雜的功能)

0

我認爲使用HSV color space而不是RGB可能更有用,並使用Hue組件顯示您的數據。這樣,你的函數的所有值將映射到一個不錯的彩虹顏色,並將均勻飽和。

在提供的鏈接中,您應該能夠導出公式,如何將Hue值轉換爲RGB。