Pri*_*alj 2 c# pixel colors spectrogram
我需要将0.0到1.0的值转换为它们的颜色表示(每个值都是一个像素).我正在制作光谱图,因此像素应该是最亮的值(如下图所示).
我怎样才能做到这一点?我在C#工作,但普遍适用的解决方案也很好.
例:

这个答案不仅应该向您展示如何从单个浮点值创建颜色,而且输出应该非常类似于显示的强度标度.
private float LinearStep(float x, float start, float width = 0.2f)
{
if (x < start)
return 0f;
else if (x > start+width)
return 1;
else
return (x-start) / width;
}
private float GetRedValue(float intensity)
{
return LinearStep(intensity, 0.2f);
}
private float GetGreenValue(float intensity)
{
return LinearStep(intensity, 0.6f);
}
private float GetBlueValue(float intensity)
{
return LinearStep(intensity, 0f)
- LinearStep(intensity, 0.4f)
+ LinearStep(intensity, 0.8f);
}
private Color getColor(float intensity)
{
return Color.FromArgb(255,
(int)(255*GetRedValue(intensity)),
(int)(255*GetGreenValue(intensity)),
(int)(255*GetBlueValue(intensity))
);
}
Run Code Online (Sandbox Code Playgroud)
我在记事本++中这样做了,所以没有经过测试.但是你应该得到这个想法;-)
当然,您可以使用它来创建查找表.这完全取决于你;-)
由于我无法在评论中添加此图像,因此以下是如何获得此解决方案的过程:

第3步由代码中的LinearStep()函数完成,每个斜率调用一次.增加上升斜率,减去下降斜率.如果您对此不确定,请尝试使用原始颜色映射.我希望你能从这里拿走它:-)
| 归档时间: |
|
| 查看次数: |
1644 次 |
| 最近记录: |