经过上一节,已经把MLX90640的32x24个像素点读出来了,可是使用32x24直接显示在屏幕上,显示区域显示太小了,于是就需要对图像就行放大。

图像插值

  常见的插值算法可以分为两类:自适应和非自适应。 自适应的方法可以根据插值的内容来改变(尖锐的边缘或者是平滑的纹理),非自适应的方法对所有的像素点都进行同样的处理。 非自适应算法包括:最近邻,双线性,双三次,样条,sinc,lanczos等。 由于其复杂度, 这些插值的时候使用从0 to 256 (or more) 邻近像素。 包含越多的邻近像素,他们越精确,但是花费的时间也越长。这些算法可以用来扭曲和缩放照片。

  具体实现可以参考这两篇文章,他们已经说得很详细了:图像插值算法总结、双线性内插值算法。
  插补后的效果如下:

图像彩色编码

  现在把32x24像素点放大了10倍,得到了320x240像素点,但是这些像素点还都是-40度到300度的温度值,要怎么转换成彩色来显示呢?
  其实都已经有转换规范了,而且还有很多种方案:

  温度转颜色的方法
(1)首先假设温度范围的上下限并将实际的温度数据转换为 0~255 之间的数值
(2)使用转换后的数值代入下面的伪彩编码计算函数,生成伪彩色

//伪彩 1
#define abs(x)      ((x)>0?(x):-(x))
void GrayToPseColor(uint8_t grayValue, uint8_t *colorR,uint8_t *colorG,uint8_t *colorB)
{*colorR=abs(0-grayValue);*colorG=abs(127-grayValue);*colorB=abs(255-grayValue);
}

伪彩 2、金属、彩虹、灰度编码的转换函数为:

void GrayToPseColor(uint8_t converMethod,uint8_t grayValue, uint8_t *colorR,uint8_t *colorG,uint8_t *colorB)  //灰度-伪彩色变换
{switch(converMethod){case GCM_Pseudo1:*colorR=abs(0-grayValue);*colorG=abs(127-grayValue);*colorB=abs(255-grayValue);       break;case GCM_Pseudo2: if( (grayValue>=0) && (grayValue<=63) )  {*colorR=0;*colorG=0;*colorB=round(grayValue/64*255);}else if( (grayValue>=64) && (grayValue<=127) )  {*colorR=0;*colorG=round((grayValue-64)/64*255);*colorB=round((127-grayValue)/64*255);}else if( (grayValue>=128) && (grayValue<=191) )  {*colorR=round((grayValue-128)/64*255);*colorG=255;*colorB=0;}else if( (grayValue>=192) && (grayValue<=255) )  {*colorR=255;*colorG=round((255-grayValue)/64*255);*colorB=0;}        break;case GCM_Metal1:  if( (grayValue>=0) && (grayValue<=63) )  {*colorR=0;*colorG=0;*colorB=round(grayValue/64*255);}else if( (grayValue>=64) && (grayValue<=95) )  {*colorR=round((grayValue-63)/32*127);*colorG=round((grayValue-63)/32*127);*colorB=255;}else if( (grayValue>=96) && (grayValue<=127) )  {*colorR=round((grayValue-95)/32*127)+128;*colorG=round((grayValue-95)/32*127)+128;*colorB=round((127-grayValue)/32*255);}else if( (grayValue>=128) && (grayValue<=191) )  {*colorR=255;*colorG=255;*colorB=0;}else if( (grayValue>=192) && (grayValue<=255) )  {*colorR=255;*colorG=255;*colorB=round((grayValue-192)/64*255);}break;case GCM_Metal2:   *colorR=0;*colorG=0;*colorB=0;if( (grayValue>=0) && (grayValue<=16) )  {*colorR=0;}else if( (grayValue>=17) && (grayValue<=140) )  {*colorR=round((grayValue-16)/(140-16)*255);}else if( (grayValue>=141) && (grayValue<=255) )  {*colorR=255;}if( (grayValue>=0) && (grayValue<=101) )  {*colorG=0;}else if( (grayValue>=102) && (grayValue<=218) )  {*colorG=round((grayValue-101)/(218-101)*255);}else if( (grayValue>=219) && (grayValue<=255) )  {*colorG=255;}if( (grayValue>=0) && (grayValue<=91) )  {*colorB=28+round((grayValue-0)/(91-0)*100);}else if( (grayValue>=92) && (grayValue<=120) )  {*colorB=round((120-grayValue)/(120-91)*128);}else if( (grayValue>=129) && (grayValue<=214) )  {*colorB=0;}else if( (grayValue>=215) && (grayValue<=255) )  {*colorB=round((grayValue-214)/(255-214)*255);}break;       case GCM_Rainbow1:if( (grayValue>=0) && (grayValue<=31) )  {*colorR=0;*colorG=0;*colorB=round(grayValue/32*255);}else if( (grayValue>=32) && (grayValue<=63) )  {*colorR=0;*colorG=round((grayValue-32)/32*255);*colorB=255;}else if( (grayValue>=64) && (grayValue<=95) )  {*colorR=0;*colorG=255;*colorB=round((95-grayValue)/32*255);}else if( (grayValue>=96) && (grayValue<=127) )  {*colorR=round((grayValue-96)/32*255);*colorG=255;*colorB=0;}else if( (grayValue>=128) && (grayValue<=191) )  {*colorR=255;*colorG=round((191-grayValue)/64*255);*colorB=0;}else if( (grayValue>=192) && (grayValue<=255) )  {*colorR=255;*colorG=round((grayValue-192)/64*255);//0*colorB=round((grayValue-192)/64*255);}       break;case GCM_Rainbow2:if( (grayValue>=0) && (grayValue<=63) )  {*colorR=0;*colorG=round((grayValue-0)/64*255);*colorB=255;}else if( (grayValue>=64) && (grayValue<=95) )  {*colorR=0;*colorG=255;*colorB=round((95-grayValue)/32*255);}else if( (grayValue>=96) && (grayValue<=127) )  {*colorR=round((grayValue-96)/32*255);*colorG=255;*colorB=0;}else if( (grayValue>=128) && (grayValue<=191) )  {*colorR=255;*colorG=round((191-grayValue)/64*255);*colorB=0;}else if( (grayValue>=192) && (grayValue<=255) )  {*colorR=255;*colorG=round((grayValue-192)/64*255);*colorB=round((grayValue-192)/64*255);}break;case GCM_Rainbow3:if( (grayValue>=0) && (grayValue<=51) )  {*colorR=0;*colorG=grayValue*5;*colorB=255;}else if( (grayValue>=52) && (grayValue<=102) )  {*colorR=0;*colorG=255;*colorB=255-(grayValue-51)*5;}else if( (grayValue>=103) && (grayValue<=153) )  {*colorR=(grayValue-102)*5;*colorG=255;*colorB=0;}else if( (grayValue>=154) && (grayValue<=204) )  {*colorR=255;*colorG=round(255-128*(grayValue-153)/51);*colorB=0;}else if( (grayValue>=205) && (grayValue<=255) )  {*colorR=255;*colorG=round(127-127*(grayValue-204)/51);*colorB=0;}break;case GCM_Zhou:if( (grayValue>=0) && (grayValue<=63) )  {*colorR=0;*colorG=round((64-grayValue)/64*255);*colorB=255;}else if( (grayValue>=64) && (grayValue<=127) )  {*colorR=0;*colorG=round((grayValue-64)/64*255);*colorB=round((127-grayValue)/64*255);}else if( (grayValue>=128) && (grayValue<=191) )  {*colorR=round((grayValue-128)/64*255);*colorG=255;*colorB=0;}else if( (grayValue>=192) && (grayValue<=255) )  {*colorR=255;*colorG=round((255-grayValue)/64*255);*colorB=0;}        break;case GCM_Ning:if ((grayValue>=0) && (grayValue<=63))  {*colorR=0;*colorG=254-4*grayValue;*colorB=255;}else if ((grayValue>=64) && (grayValue<=127))  {*colorR=0;*colorG=4*grayValue-254;*colorB=510-4*grayValue;}else if ((grayValue>=128) && (grayValue<=191))  {*colorR=4*grayValue-510;*colorG=255;*colorB=0;}else if ((grayValue>=192) && (grayValue<=255))  {*colorR=255;*colorG=1022-4*grayValue;*colorB=0;}break;case GCM_Gray:    *colorR=grayValue;*colorG=grayValue;*colorB=grayValue;break;default:break;}
}

使用MLX90640自制红外热像仪(三):图像插值、图像彩色编码相关推荐

  1. 使用MLX90640自制红外热像仪(一):MLX90640介绍与API库移植

      平时工作的时候会遇到如下场景: 新焊接好的板子,通电后发现电流异常,需要看下板子上哪里发热异常. 需要监控某个器件(比如三极管.MOS)的温度,以防过热烧掉. 测量温升.   因此需要一个红外热像 ...

  2. 使用MLX90640自制红外热像仪(二):API函数的使用

      前面一篇文章介绍了MLX90640的相关信息和API库的移植,接下来介绍一下API库中的函数,和使用方法.   首先给出API函数的调用顺序,再对每个用到的API函数做说明: #define FP ...

  3. 使用MLX90640自制红外热像仪(四):stm32f103c8t6刷320x240分辨率屏的时间测试

    要显示MLX90640的数据,需要每次把320*240个像素点全部刷新一次.现在来测试下stm32f103c8t6使用普通IO刷屏. 72M主频的stm32f103c8t6刷TFT,全屏一直刷新测试 ...

  4. 福禄克FLUKE 重磅发布两款红外热像仪— TiS55+和TiS75+

    美国福禄克公司于2021年1月重磅发布两款红外热像仪--TiS55+和TiS75+. 作为福禄克优选系列热像仪中的拳头产品,TiS55+和TiS75+在传承福禄克仪器高品质的同时,也在硬件方面做了许多 ...

  5. 美国福禄克公司于2021年1月重磅发布两款红外热像仪——TiS55+和TiS75+

    美国福禄克公司于2021年1月重磅发布两款红外热像仪--TiS55+和TiS75+. 作为福禄克优选系列热像仪中的拳头产品,TiS55+和75+在传承福禄克仪器高品质的同时,也在硬件方面做了许多提升, ...

  6. Fluke TiX560 红外热像仪二次开发包

    Fluke TiX560 红外热像仪 增加一项:提供定制的二次开发包 主要特性 适用于 320x240 红外热像仪的 5.7 英寸感应液晶触摸屏 用于拍取难以拍摄的镜头的 240° 铰接式镜头 320 ...

  7. 红外测温 AGM8833红外热像仪传感器的使用

    红外测温 AMG8833红外热像仪传感器的使用 传感器介绍 模块原理图 温度测量 热成像 总结 原文链接:https://www.yourcee.com/newsinfo/2928723.html 传 ...

  8. 电气探测的黑科技工具——艾睿光电红外热像仪

    黑科技红外热成像仪已经成为一种趋势啦,设备故障.设施泄漏这样问题真的是太磨人了.你也一定跟我一样用过很多仪器和方法,但还是依然解决不了这问题. 在这里和大家分享一个设备探测的神器!艾睿光电的红外热像仪 ...

  9. 热像仪 二次开发 c++_一种全新的红外热像仪——“可编程红外热像仪”

    如 今,红外热像仪对于很多人而言已经不是一个新鲜事物了,它利用红外探测器对被测目标的红外辐射进行探测,并加以光电转换和信号处理等手段,将被测目标的温度分布转换为我们人眼可以直观识别的图像.受益于这种温 ...

最新文章

  1. C#中静态方法的运用和字符串的常用方法(seventh day)
  2. 中国电子学会青少年编程能力等级测试图形化三级编程题:海底寻宝
  3. mysql插入第一_mySQL教程 第5章 插入 更新与删除数据
  4. 人工智能开发语言排行榜:不死Java,不朽C/C++,新贵Python
  5. Ivan and Powers of Two CodeForces - 305C(set)
  6. WCF X.509验证
  7. Net设计模式实例之代理模式(Proxy Pattern)
  8. oracle_导致实例逐出的五大问题
  9. html资源文件记载进度条,HTML5矢量实现文件上传进度条
  10. VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/cpuid.c:376 bugNr=1036521
  11. “宽带中国、智慧岳阳”项目启动
  12. 秋色园QBlog技术原理解析:性能优化篇:读写分离与文本数据库(十八)
  13. WebStorm汉化教程
  14. 百度这个写在控制台的消息:2021百度校招
  15. 免费在线证件照制作-超级好用
  16. 计算机开机后黑屏鼠标显示桌面图标,电脑开机后黑屏只有一个鼠标箭头怎么办 电脑黑屏的解决方法...
  17. 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络
  18. 【VC】accent conversion 口音转换论文
  19. MAC 移动硬盘文件显示灰色
  20. 铃铛子训练营 | 我的感悟(二)

热门文章

  1. 西部数码虚拟主机服务器配置,西部数码虚拟主机设置首页功能介绍
  2. 圆角阴影_Win10新界面曝光,圆角设计加阴影半透明,更招年轻人喜欢
  3. Java 并发编程笔记(一)
  4. DeepMind让AI首次在量子水平描述物质!Nature:化学领域最有价值技术之一
  5. 全凭“脚感”,这个不看路的机器人就能稳稳爬楼梯,一脚踩空也不怕 | RSS 2021...
  6. MIT一招霸气颠覆传统:勇敢换导师,成本我买单,学生沸腾了
  7. 中国首次实现量子优越性!比谷歌突破更厉害,比最强超级计算机快一百万亿倍 | Science...
  8. 小冰完成数亿元Pre-A轮融资,投资方为北极光创投和网易,还宣布了和老东家微软的战略合作...
  9. 8篇论文梳理BERT相关模型进展与反思 | MSRA出品
  10. 联邦快递被曝拒送华为手机进入美国,即便是从英国寄出