优利德uti260m红外热成像RAW数据分析记录

优利德uti260m红外热成像RAW数据分析记录

发现最近随便转载的很多啊,未经授权禁止转载!抄袭!!否则转载者死全家!!另外这是我的笔记,不是教程,难免会有错误,不具有很高的参考性,望周知。

最近斥巨资买了一个优利德uti260m热成像仪,不过官方只提供了手机APP,并未提供PC上位机和SDK。偶然发现将uti260m插在PC上,打开PC的相机程序,是可以直接看到uti260m图像的,猜想uti260m是通过视频流的方式对热成像图像进行输出的。于是想自己分析一下uti260m的输出数据,看能否自己对视频流的数据进行逆向,然后写出一个PC端的uti260m上位机出来,增大uti260m的实用价值(当然不太抱有希望)

开始分析

首先吧uti260m插在手机上,使用themal mobile APP拍摄几张图像,然后进入Android/data/com.unitrend.thermal_mobile/files/TI260 Files目录中,可以看到如下几个文件夹,经过几番对比,我将每个文件夹的作用进行注释:

draw                //未知

fusion            //可见光图像

image_byte        //图像原始数据

mark            //标记点

merge            //处理后的JPG图像(预览图)

ori                //不含任何标记的JPG图像

setting            //图像的参数(发射率、拍摄距离等参数)

temp            //图像的温度数据

这里主要的文件是image_byte中的文件和temp中的文件。这两个目录下的文件后缀为.jpg.txt,因此可以判断是二进制文件。这两个文件夹中的文件都是98304字节,uti260m热像仪的分辨率为256*192,而256*192*2=98304,证明这两个文件夹中的文件都是存储图像的原始数据,每个像素点使用2个字节存储。

另外,使用PotPlayer软件打开摄像头设备,也可以证明uti260m输出的视频流是2个字节的。由下方的截图可以看出,uti260m使用16bit YUV2格式视频流输出图像。由此猜想,image_byte中的图像原始数据是直接存储的YUV2编码的帧数据或者有YUV2转换之后的灰度数据。

还有另外发现,这个视频流中的声音通道是有数据输出的,猜想可能是uti260m视频流中的一些对比度、曝光度等数据是通过声音通道输出的。当然这个只是有可能,具体声音通道传输的数据是什么,后续再进行分析。

然后分析一下temp目录中的文件。删除掉temp中对应图像的.jpg.txt文件,发现APP无法进入编辑模式,可以确定图像后续的温度分析以及温度标点都是使用temp目录中的文件。

删除image_byte中的图像文件,APP同样无法进入编辑模式,可以看出图像后续的温度分析以及温度标点也用到了image_byte目录中的文件。

重新换一张图,使用image_byte目录中的文件替换temp目录中的同名文件,发现图像的最高、最低、中心点温度由原来的10~20℃变成290~300℃,由此猜想image_byte中的文件和temp中的文件存在一定的转换关系。

下面使用winhex修改temp中的文件:

  1. 使用winhex软件,打开temp中的.jpg.txt文件,将所有数据都填充为十六进制:1C48,再次进入手机APP,可以看出图像的最高、最低、中心点温度都变成了15.3℃。

  2. 再次使用winhex软件,打开temp中的.jpg.txt文件,将所有数据都填充为十六进制:2c48,再次进入手机APP,可以看出图像的最高、最低、中心点温度都变成了15.5℃。

  3. 再次使用winhex软件,打开temp中的.jpg.txt文件,将所有数据都填充为十六进制:2548,再次进入手机APP,可以看出图像的最高、最低、中心点温度都变成了15.4℃。

  4. 再次使用winhex软件,打开temp中的.jpg.txt文件,将所有数据都填充为十六进制:1C49,再次进入手机APP,可以看出图像的最高、最低、中心点温度都变成了19.3℃。

可以得出,temp中的.jpg.txt文件按照低字节在前,高字节在后的方式进行存储的。数值增加8,APP端得到的温度就会增加0.1℃。

使用temp目录中的文件替换image_byte目录中同名文件,可以进入图像编辑模式,但是更改测温条时,图像出现了乱码。打Android/data/com.unitrend.thermal_mobile/files/TI260 Files目录,发现merge目录和ori目录中的jpg图像同样出现了乱码,由此可以得出merge和ori目录中的.jpg图像是由image_byte中的.jpg.txt重新编码转换而来的。image_byte目录中的.jpg.txt文件就是图像的RAW数据。

但是此时进行标点温度测量,发现温度数据仍然是乱码之前的,此时temp中的.jpg.txt并没有重新生成。

(继续推导更新中。。。)

坚持原创技术分享,您的支持是我前进的动力!