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)

是否有任何建议的算法可以代替这个,或者这个分段函数可以吗?这是当前算法生成的图像。 颜色曲线:发散

4

2 回答 2

1

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

这是一篇关于使用发散彩色地图的非常好的文章:http: //www.sandia.gov/~kmorel/documents/ColorMaps/

它描述了它背后的数学。我知道通过 Lab 和 MSH 色彩空间来完成这样一个简单的任务似乎有点矫枉过正,但如果你想要高质量的色彩贴图,那真的很值得。

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

于 2013-10-17T11:57:23.097 回答
0

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

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

于 2013-10-17T06:04:49.290 回答