河北稳控科技MLX90640 红外热成像仪测温模块开发笔记(四)

简介: 如前“开发笔记(一)”所说,MLX90640 可能存在不超过 4 个像素的损坏或者不良像素,在温度计算过程完成后,这些不良像素点会得到错误的温度数据,对于处理这些不良数据 MLX 也给出了推荐方法和具体的函数。(其实就是找相邻的正常的温度数据取平均来代替不良数据)

MLX90640 红外热成像仪测温模块开发笔记(四)损坏和不良像素的处理
红外成像仪效果图.png

如前“开发笔记(一)”所说,MLX90640 可能存在不超过 4 个像素的损坏或者不良像素,在温度计算过程完成后,这些不良像素点会得到错误的温度数据,对于处理这些不良数据 MLX 也给出了推荐方法和具体的函数。(其实就是找相邻的正常的温度数据取平均来代替不良数据)

前面开发笔记(一)的内容中所说的 API 库,里面缺少了对不良像素点的处理函数,在这里补上。
int CheckAdjacentPixels(uint16_t pix1, uint16_t pix2)
{
int pixPosDif;

pixPosDif = pix1 - pix2;
if(pixPosDif > -34 && pixPosDif < -30)
{
return -6;
}
if(pixPosDif > -2 && pixPosDif < 2)
{
return -6;
}
if(pixPosDif > 30 && pixPosDif < 34)
{
return -6;
}

return 0;
}

float GetMedian(float *values, int n)
{
float temp;

for(int i=0; i<n-1; i++)
{
for(int j=i+1; j<n; j++)
{
if(values[j] < values[i])
{
temp = values[i]; values[i] = values[j]; values[j] = temp;

}
}

if(n%2==0)
{
return ((values[n/2] + values[n/2 - 1]) / 2.0);

}
else
{

}

return values[n/2];

}

int IsPixelBad(uint16_t pixel,paramsMLX90640 *params)
{
for(int i=0; i<5; i++)
{
if(pixel == params->outlierPixels[i] || pixel == params->brokenPixels[i])
{
return 1;
}
}

return 0;
}
void MLX90640_BadPixelsCorrection(uint16_t pixels, float to, int mode, paramsMLX90640
*params)
{
float ap[4]; uint8_t pix; uint8_t line; uint8_t column;

pix = 0;
while(pixels[pix] != 0xFFFF)
{
line = pixels[pix]>>5;
column = pixels[pix] - (line<<5);

if(mode == 1)
{
if(line == 0)
{
if(column == 0)
{
to[pixels[pix]] = to[33];
}
else if(column == 31)
{

}
else
{

}
}

to[pixels[pix]] = to[62];

to[pixels[pix]] = (to[pixels[pix]+31] + to[pixels[pix]+33])/2.0;

else if(line == 23)
{
if(column == 0)
{
to[pixels[pix]] = to[705];
}
else if(column == 31)
{

}
else
{

}
}

to[pixels[pix]] = to[734];

to[pixels[pix]] = (to[pixels[pix]-33] + to[pixels[pix]-31])/2.0;

else if(column == 0)
{
to[pixels[pix]] = (to[pixels[pix]-31] + to[pixels[pix]+33])/2.0;
}
else if(column == 31)
{

}
else
{

to[pixels[pix]] = (to[pixels[pix]-33] + to[pixels[pix]+31])/2.0;

ap[0] = to[pixels[pix]-33];
ap[1] = to[pixels[pix]-31]; ap[2] = to[pixels[pix]+31]; ap[3] = to[pixels[pix]+33];
to[pixels[pix]] = GetMedian(ap,4);

}
else
{

}

if(column == 0)
{

to[pixels[pix]] = to[pixels[pix]+1];
}
else if(column == 1 || column == 30)
{
to[pixels[pix]] = (to[pixels[pix]-1]+to[pixels[pix]+1])/2.0;
}
else if(column == 31)
{

}
else
{

0)

to[pixels[pix]] = to[pixels[pix]-1];

if(IsPixelBad(pixels[pix]-2,params) == 0 && IsPixelBad(pixels[pix]+2,params) ==

{
ap[0] = to[pixels[pix]+1] - to[pixels[pix]+2]; ap[1] = to[pixels[pix]-1] - to[pixels[pix]-2];
if(fabs(ap[0]) > fabs(ap[1]))
{

}
else
{

}
else
{

}

to[pixels[pix]] = to[pixels[pix]-1] + ap[1];

to[pixels[pix]] = to[pixels[pix]+1] + ap[0];

to[pixels[pix]] = (to[pixels[pix]-1]+to[pixels[pix]+1])/2.0;
}
}
}
pix = pix + 1;
}
}
用法很简单,在开发笔记(三)MLX90640_CalculateTo(Frame, MLXPars, 0.95, Tr, Temp);之后添加两行即可。如下(斜体是添加的内容):
……
MLX90640_CalculateTo(Frame, MLXPars, 0.95, Tr, Temp); MLX90640_BadPixelsCorrection(MLXPars.brokenPixels, Temp, 1, MLXPars); MLX90640_BadPixelsCorrection(MLXPars.outlierPixels, Temp, 1, MLXPars);
……
/*
经过上面的处理后,Temp 中的损坏和不良像素点已经处理,Temp 数组中是处理完成后的
768 个温度值。
*/

红外成像仪效果图2.png

相关文章
|
传感器 编解码 JSON
开源项目-基于小熊派STM32红外热成像仪
开源项目-基于小熊派STM32红外热成像仪
245 1
|
数据采集 前端开发
河北稳控科技便携式钻孔测斜仪数据采集仪如何使用
主界面包含了若干程序的快捷方式,通过双击快捷方式可以启动对应的程序(软件),通过鼠标右键(手写笔长按)桌面空白区域可弹出桌面菜单调用。桌面快捷方式中,【我的设备】和【WIN5/612X】两个最为常用。 【我的设备】快捷方式:打开系统资源管理器,可访问设备内部、外部存储器,完成文件浏览、复制、粘贴、删除等文件操作。
河北稳控科技便携式钻孔测斜仪数据采集仪如何使用
|
传感器 数据采集
河北稳控科技便携式钻孔测斜仪数据采集仪的使用方法
开机前,请将测斜探头连接到采集仪传感器接口上。禁止开机后带电插拔探头。按下电源开关按钮,电源指示灯亮(按钮外环),主设备通电,屏幕启动,操作系统启动完成后,若设置了测斜程序自动启动则进入测斜仪程序主界面,否则进入操作系统桌面。
河北稳控科技便携式钻孔测斜仪数据采集仪的使用方法
BOSHIDA 三河博电科技 开关电源模块 遥控开/关电路
模块电源的遥控开关操作,是通过 REM 端进行的。一般控制方式有两种: (1)REM 与-VIN(参考地)相连,遥控关断,要求 VREF<0.4V。REM 悬空或与+VIN 相连,模块工作,要求 VREM>1V。 (2)REM 与 VIN 相连,遥控关断,要求 VREM<0.4V。REM 与+VIN 相连,模块工作,要求 VREM>1V。REM 悬空,遥控关断,即所谓“悬空关断”(-R)。 如果控制要与输入端隔离,则可以使用光电耦合器作为传递控制信号。
BOSHIDA 三河博电科技  开关电源模块 遥控开/关电路
|
存储 人工智能 API
红外热成像仪测温模块开发资料准备
MLX90640 有两个型号, A 型和 B 型,各拍了一个,在等待物流的过程中索性先做些准备工作,也科普一下红外成像是怎么回事。
红外热成像仪测温模块开发资料准备
|
传感器 数据采集
河北稳控科技便携式钻孔测斜仪的组成与测量原理
便携式钻孔测斜仪由测斜探头、多功能数据采集仪组成。 测斜探头组成:探头包括吊环、传感段、导向段、加长段、尾段五部分组成
河北稳控科技便携式钻孔测斜仪的组成与测量原理
|
传感器 安全
河北稳控科技振弦采集模块电子标签测量(智能振弦传感器)
智能振弦传感器电子标签专用读数模块模块TR01,最早应用到手持振弦采集仪VH03型上面,并申请获得了两项标准专利,一直应用于工程项目上安全监测使用,也就是自产自用。近期升级了振弦采集仪的核心VM系列振弦采集模块( 修改固件版本号为 V3.52_2201009。增加了电子标签测量功能。 WKMOD.[12]用于控制是否使用此功能新增状态位 STATUS,用来表示是否检测到了电子标签。
河北稳控科技振弦采集模块电子标签测量(智能振弦传感器)
|
物联网
传感与检测技术,Pt100热电阻测温实验报告,江南大学物联网
传感与检测技术,Pt100热电阻测温实验报告,江南大学物联网
184 2
传感与检测技术,Pt100热电阻测温实验报告,江南大学物联网
|
物联网 数据挖掘
传感与检测技术,光电二极管和光敏电阻的特性研究实验报告,江南大学物联网工程学院自动化
传感与检测技术,光电二极管和光敏电阻的特性研究实验报告,江南大学物联网工程学院自动化
285 2
传感与检测技术,光电二极管和光敏电阻的特性研究实验报告,江南大学物联网工程学院自动化
|
传感器
红外热成像仪测温传感器模块开发笔记
什么是红外成像伪彩编码 红外成像的最终目的是用图像来表现温度变化,并且可以通过颜色来区分出不同热量的物体轮廓和形状。那么,到底用什么颜色来表示什么温度呢?是否有什么标准规范呢?