• 已解决 35090 个问题
  • 已帮助 5838 位优秀工程师

如何将温度值转换为色阶显示?

15345338508 2019-05-07 浏览量:1329
如何将温度值转换为色阶显示?例如测温成像仪那样的。
综合应用 消费电子
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 其实这个不是特别复杂,但需要转换一下思路

    1. 成像仪中温度值并不是一个,而是类似像素点似的有很多个点,只是测到的不是亮度、色度信号,而是温度值而已

    2. 有了这个温度值,就可以量化映射到亮度(色度)信号中,比如温度值是8bit的数值,可以直接作为8bit的亮度值,或者按3:3:2分别映射到RGB的高位中,这样也是可以的,然后按原来的分布显示就好。

    • 发布于 2019-05-07
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:3
  • 通过改变像素的色调比例来显示不同颜色,首先需要一个默认比例作为基准,然后在这里基准上修改色调比例,你可以参考红外热释电阵列的例程,他用就是用这种算法的
    • 发布于2019-05-07
    • 举报
    • 评论 0
    • 0
    • 0

  • /// 根据温度获取颜色
        /// 算法如下:
        /// 1.定义色阶变化范围fromColor toColor
        /// 2.获取因子:factor = T / (MaxT - MinT);
        /// 3.计算新的RGB
        ///   R = fromColor.R * (1 - factor) + toColor.R * factor
        ///   G = fromColor.G * (1 - factor) + toColor.G * factor
        ///   B = fromColor.B * (1 - factor) * toColor.B * factor
        /// 4.如果多个色阶,重复上面的运算
        /// </summary>
        public static class TemperatuerColor
        {
            private static Color Red = Color.FromRgb(255 0 0);
            private static Color Yellow = Color.FromRgb(255 0 0);
            private static Color Blue = Color.FromRgb(255 0 0);

            
            public static SolidColorBrush GetColor(double temperature double maxtemperature double mintemperature)
            {
                double ratio = temperature / (maxtemperature - mintemperature);
                Color result1 = Compute(Blue Yellow ratio);
                Color result2 = Compute(Yellow Red ratio);
                Color result =  Compute(result1 result2 ratio);

                return new SolidColorBrush(result);
            }

            private static Color Compute(Color fromColor Color toColor double ratio)
            {
                byte r = (byte)(fromColor.R * (1.0f - ratio) + toColor.R * ratio);
                byte g = (byte)(fromColor.G * (1.0f - ratio) + toColor.G * ratio);
                byte b = (byte)(fromColor.B * (1.0f - ratio) + toColor.B * ratio);
                return Color.FromRgb(r g b);
            }

        }
    • 发布于2019-05-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 首先它是动态利用红外扫描一个区域里面各个点的温度,然后将这个温度转换为需要显示的颜色,比如红代表高温,蓝代表低温,那么它就是根据温度确定每个像素点红蓝两色的比例
    • 发布于2019-05-15
    • 举报
    • 评论 0
    • 0
    • 0

如何将温度值转换为色阶显示?