分散颜色映射可视化的建议算法

时间:2013-10-17 05:39:41

标签: c++ visualization

我正在尝试编写一段代码,假设将数据映射到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

2 个答案:

答案 0 :(得分:1)

我认为您应该使用一个条来测试您的功能,因为在线性数据中更容易看到过渡“速度”。

这是一篇非常好的文章,用于使用不同颜色的地图:http://www.sandia.gov/~kmorel/documents/ColorMaps/

它描述了它背后的数学。我知道通过实验室和MSH色彩空间来完成这么简单的任务似乎有些过分,但如果你想要高质量的彩色地图,那真的是值得的。

除此之外,我不知道该函数的任何“手动”实现(即不使用matlab或R中已经很复杂的函数)

答案 1 :(得分:0)

我认为使用HSV color space而不是RGB可能更有用,并使用Hue组件显示您的数据。这样,你的函数的所有值都会映射到漂亮的彩虹色,并且会均匀饱和。

在提供的链接中,您应该能够推导出公式,如何将Hue值转换为RGB。