温度信息,热红外图像转tiff或tif,并使用pix4d将tiff或tif进行拼接 | 热红外照片温度信息提取(重制版))
有些事情重复做多次了才注意到之前有哪些步骤操作不规范......大疆无人机拍摄的热红外照片RJPG的温度只能用大疆红外热分析工具3进行查看原始热红外图像的像素点的值不是温度值所以原始热红外照片很难在实际中应用。我们需要将其转换为温度图像温度图像为单波段图像tif、tiff格式像素点的值为温度值可以直接在arcmap等软件中查看温度情况。图1 原始热红外照片通过大疆官网我们知道需要结合大疆的TSDK工具进行开发编写代码才能将热红外照片转换成像素点代表温度信息的TIFF或者TIF图像转成TIFF或者TIF之后才能将热红外图像拼接成为一整张图。方法总结起来如下1结合大疆TSDK进行开发提取热红外照片温度信息对热红外照片进行转换得到像素点为温度值的TIFF或者TIF图像。2在Pix4Dmapper软件中进行空三和拼接以保留温度细节。1.结合大疆TSDK进行二次开发大疆TSDK的版本为dji_thermal_sdk_v1.4_20220929也可以使用最新版本。将解压缩的TSDK与脚本代码存放在同一个目录即可二次开发的代码如下需要完整代码可私聊我q3641987155或者附上你的联系方式我已经将工程文件打包成一个软件运行即可转换def get_platform(): return platform.system() def mkdir(path): isExists os.path.exists(path) if not isExists: os.makedirs(path) print(fSuccessfully create path: {path}) return True else: shutil.rmtree(path) os.makedirs(path) print(fPath: {path} already exists, delete and create again.) return False def jpg2tiff(inputpath, outpath, **kwargs): # 代码可私聊我 **** **** def run(input_dir, output_dir, **kwargs): # 代码可私聊我 **** ****运行代码就可以将R_JPG图像转换为TIF格式的图像了TIF图像中每个像素的数据不再表示颜色信息而是表示了温度转化完成后的TIF图像可以保留原始图像的位置信息。2.热红外照片温度信息提取之前写的博客内容方法不太对这里更正一下代码需要设置四个参数这四个参数分别为测量距离环境湿度发射率反射温度。- 测温距离待测目标的距离。红外热像仪接收物体自身辐射的红外线生成热像图距离越远红外辐射衰减越多。红外热像仪出厂时默认的标定距离一般是固定的在这个距离测温最精确距离过近或过远都会增大测温误差。- 相对湿度目标测量环境下的空气相对湿度。请根据实际测量环境配置默认 70 即表示相对湿度为 70%取值范围 [20~100]。湿度值配置是否准确将影响测温精度但影响度较小。- 发射率被测物体表面以辐射的形式释放能量相对强弱的能力。可参考“常见物质发射率表”进行配置由于被测物体表面可能存在腐蚀、氧化等情况实际发射率值与参考值可能存在一定差异。发射率配置是否准确将影响测温精度且影响度较大。- 反射温度周围环境物体辐射的能量可能被待测目标表面反射与待测目标辐射一同被相机接收造成测温误差。如果周围环境没有特别的高温或低温物体反射温度配置为环境温度即可。反射温度是否配置准确会影响测温精度数值与环境温度偏差越大影响度越大。我们先用大疆的红外热分析工具3DJI Thermal Analysis Tool 3查看拍摄的热红外图像。添加文件夹中的所有图像先点击第一张热红外图像进行查看我们可以看到这张图像的一些基本信息以及查看每个像素点的温度值。其中特别重要的是那四个参数的值测量距离环境湿度发射率反射温度我们需要将这四个值记住。之所以说那四个参数的值重要是因为在代码转换前需要进行设置。我们一开始的时候是难以知道其应该设置什么数值的加上大疆TSDK官方文档里面说无人机拍摄热红外照片飞行高度超过25米的测量距离参数也只能设置为25米个人见解我觉得这有点误导了......但是这样会带来一些问题那就是需要不断调整其他三个参数不断进行转换看看哪个参数组合转换出来的图像温度值最符合实际这是非常费时费力的。我之前没有注意到这一点。但是如果忽略大疆TSDK官方的说法将测量距离参数设置为上述查看到的5米其他参数也是这样进行设置那么转换得到的温度图像中的温度会很接近实际可能误差在3到5度之间这个时候就可以慢慢调整参数进行微调了。可能大家会觉得误差也不小但是根据我的经验如果根据实际将测量距离设置为25米温度误差会更大。根据记住的那四个参数的值设置代码里面那四个参数变量的值然后即可进行转换。如何查看转换得到的温度图像与实际是否一致呢我们可以先在大疆的红外热分析工具3DJI Thermal Analysis Tool 3里面查看某一个点的温度值即然后查看转换得到的温度图像对应点的温度值是否一致可以使用ArcMap进行查看如下实际温度为38.2度转换之后温度为41.7相差3.5度。这时候可以进行参数微调使得转换之后的温度值更接近实际。3.pix4d拼接图像打开pix4d新建项目添加路径建议使用这个一次性导入全部点击Next会显示读取EXIF数据没有的话拼接可能会出现问题不用设置什么直接点Next不用设置什么直接点Next选择左侧的“Thermal Camera”取消勾选“开始处理”点击“Finish”选择左下方的“处理选项”选择“3.DSM正射影像和指数”勾选图中所标选项然后点击“OK”点击“开始”即可开始拼接拼接需要时间比较多慢慢等4.拼接报错问题和解决方案我在拼接M3T相机的时候报错提示[Error]: No calibrated cameras. 和 [Error]: Error e0046: Processing failed. No calibrated cameras.这个问题我目前已经找到了一个解决方案。出现该错误的原因可能是航向重叠没有大于等于80%旁向重叠没有大于等于70%也有可能是该热红外相机拍摄的数据在前面的代码处理后相机参数不对了需要重新调整相机参数。解决方案就是使用较低版本的pix4d进行拼接或者使用其他拼接软件进行拼接。PS:本人也不是什么都懂还在不断学习当中希望跟大家互相学习一起进步