我正在为我的大学开发一个科学成像软件,我遇到了一个很大的问题。我实验室的科学相机(Apogee U57)提供了16 per阵列的图像--它是每个像素的0-65535值!我们希望保持这个范围,但实际上我们不能在监视器上显示它们(0-255灰度范围)。因此,我找到了解决这个问题的方法--简单地使用颜色,并将整个图像显示为热图(从黑色、蓝色、绿色到红色,再到纯白色)。
我是说像这样的东西- 我想要实现的热图图像示例

我唯一的问题是:如何有效地转换16 How像素值数组来完成c#中的热图位图?有图书馆可以这样做吗?如果没有,如何使用.NET资源实现这一目标?
我的想法是创建将65536个值映射到(255R,255 g,255 b)的函数,但这是一项艰巨的工作--特别是不使用HSV模型。
如果能提供任何帮助,我将不胜感激!
发布于 2015-07-05 15:47:20
你的问题包括几个部分:
我将跳过第一部分和第三部分,并给出关于第二部分的一些想法。
事实上,这比表面上要困难得多。一个不丢失任何信息的独特映射是简单的,实际上是微不足道的,只要稍微改变一下就行了。
但你也希望这个结果能在视觉上发挥作用,这意味着不应该有太多的视觉吸引力,但对人眼来说应该是有意义的。因此,我们需要一个具有可信但足够大的梯度的映射。
为此,你应该做一些实验。我建议使用LinearGradientBrush,正如我向这里展示的那样。请看一下interpolateColors函数!它只使用6种颜色的例子,方式很少为您的情况!
你应该选择更多的;你可能需要在一个螺旋中穿过颜色空间。
对你来说,诀窍将是选择好的和足够的停止颜色,以创造一个64k大的独特的颜色集,最好从蓝色到红色。
您将需要测试结果的唯一性;实际上,您可能需要为映射创建一对字典和字典。
https://stackoverflow.com/questions/31231972
复制相似问题