首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >16位灰度图像到热图

16位灰度图像到热图
EN

Stack Overflow用户
提问于 2015-07-05 15:32:28
回答 1查看 1.1K关注 0票数 2

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

我是说像这样的东西- 我想要实现的热图图像示例

我唯一的问题是:如何有效地转换16 How像素值数组来完成c#中的热图位图?有图书馆可以这样做吗?如果没有,如何使用.NET资源实现这一目标?

我的想法是创建将65536个值映射到(255R,255 g,255 b)的函数,但这是一项艰巨的工作--特别是不使用HSV模型。

如果能提供任何帮助,我将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2015-07-05 15:47:20

你的问题包括几个部分:

  • 读取16位像素数据值
  • 将它们映射到24位rgb颜色
  • 将它们写入图像文件

我将跳过第一部分和第三部分,并给出关于第二部分的一些想法。

事实上,这比表面上要困难得多。一个不丢失任何信息的独特映射是简单的,实际上是微不足道的,只要稍微改变一下就行了。

但你也希望这个结果能在视觉上发挥作用,这意味着不应该有太多的视觉吸引力,但对人眼来说应该是有意义的。因此,我们需要一个具有可信但足够大的梯度的映射。

为此,你应该做一些实验。我建议使用LinearGradientBrush,正如我向这里展示的那样。请看一下interpolateColors函数!它只使用6种颜色的例子,方式很少为您的情况!

你应该选择更多的;你可能需要在一个螺旋中穿过颜色空间。

对你来说,诀窍将是选择好的和足够的停止颜色,以创造一个64k大的独特的颜色集,最好从蓝色到红色。

您将需要测试结果的唯一性;实际上,您可能需要为映射创建一对字典和字典。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31231972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档