【问题标题】:How to map array data to RGB colours如何将数组数据映射到 RGB 颜色
【发布时间】:2018-04-06 15:54:22
【问题描述】:

我有一个近似尺寸为 3000x1 的浮点数组。该数组包含范围在 -10^(-3) 到 10^(-3) 之间的值。我想使用这些值使用 setColor 方法为 Android 手机显示屏上的图像着色,该方法接受 RGB 值作为 int。

我想要最小值,例如-10^-3 出现蓝色,当你接近 0 时变得更绿色。从 0 到最大值,颜色应该从绿色变为黄色/橙色/红色。我相当有信心这是一个很容易解决的问题。

基本上,min(my_array) 应该被分配一个近似的 0x0000F0。当我们从 min(my_array) 向 0 移动时,颜色应该逐渐变得更蓝绿色,直到它变成绿色。从那里开始它应该朝向黄色和红色,直到达到 max(my_array)。

我是否需要将 RGB 地图分成 3000 段。然后我可以按升序排列我的数组,并以升序添加相应的 RGB 值作为第二列。然后我不确定如何让数组恢复到原始顺序。

【问题讨论】:

  • 实际上,不,我在上一段中提出的方法不起作用,因为如果我的最小值有很大差异,它们看起来或多或少具有相同的颜色。映射需要简单地接受 -10^-3 到 10^-3 范围内的值,然后简单地扩展该范围并将其映射到 0x0000FF 到 0xFF0000。

标签: arrays mapping rgb


【解决方案1】:

我认为您应该将您的范围 -10^(-3) 到 10^(-3) 量化为至少 512 个值,并将前 256 个值用于蓝色,129 到 364 个值用于绿色,257 到 512 用于红色.例如:

quantized_array[0] = -10^(-3)   ->   rgb = 0x0000ff
quantized_array[128] = some val ->   rgb = 0x004488
quantized_array[256] = 0        ->   rgb = 0x00ff00
quantized_array[364] = some val ->   rgb = 0x884400
quantized_array[512] = 10^(-3)  ->   rgb = 0xff0000

【讨论】:

  • 是的,我同意,但我感到困惑的部分是如何在我的代码中将数组的最小值实际映射到 0x0000ff 以及如何将最大值映射到 0xff0000。基本上,我如何量化我的数组?
猜你喜欢
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 2018-06-21
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 2020-01-04
相关资源
最近更新 更多