看到很多人不会处理大疆无人机拍摄的热红外照片,也不怎么会合成正射影像,在这里我介绍一种处理大疆多种无人机热红外成像照片的方法,以及将处理好的热红外照片拼接成正射影像(大图)。
由于大疆R-JPEG格式照片无法直接导出纯温度信息,我这里提出通过提取温度信息转成TIFF或者TIF格式,并在Pix4Dmapper软件中进行空三和拼接,以保留温度细节。这个方法唯一的缺点就是没有了相机型号信息,目前我不知道怎么解决,如果有大佬知道,还望多指导指导。
我在网上看到有人将热红外图像转温度矩阵(我也试了这种方法,不太好用):先将热成像图片生成存储温度信息的.raw文件,然后将.raw文件中的值除以10得到温度值,最后转为.tif文件。这种方法太麻烦了,并且还会丢失图像中的一些信息,比如位置信息(纬度、经度和高度等)。
1.下载TSDK,编写转换脚本代码
下载大疆TSDK(版本dji_thermal_sdk_v1.4_20220929)解压缩,新建工程项目,将解压缩的文件夹dji_thermal_sdk_v1.4_20220929复制粘贴放入项目文件夹中,然后编写python脚本代码
TSDK和脚本放在同一个文件夹即可
转换代码
def get_platform():
return platform.system()
def mkdir(path):
isExists = os.path.exists(path)
if not isExists:
os.makedirs(path)
print(f"Successfully create path: {path}")
return True
else:
shutil.rmtree(path)
os.makedirs(path)
print(f"Path: {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图像可以保留原始图像的位置信息。
转换前后如下(基本上看不出差别)
但是转换之后用Arcgis打开可以看得到温度值
如果不会调节参数或者无论怎么调节参数转换得到的温度图像的温度值与实际相差太大,有这样的一个解决办法:(1)在拍摄地点中找一个易于手动测量温度的一个地点,在图像中找到对应位置;(2)等到一个天气与拍摄天气一样的日子,在同样的时间在指定的地点测量实际温度(物体表面温度,不要测量物体上方空气温度);(3)计算图像温度值与测量得到的值的比例关系;(3)设计算法将所有温度图像按照比例关系调整温度。该方法我已经试过,不会丢失图像的GPS等信息。
注意:转换后的图像格式可以是TIF,也可以是TIFF,转成什么格式看自己需要。TIF格式的温度图像可以使用大疆智图软件进行拼接,可以不用pix4D,对于不熟悉pix4D软件的人比较友好一些。TIFF格式的图像无法在大疆智图里面拼接,可以使用pix4D进行拼接。
2.使用pix4D mapper拼接TIFF图像
添加图像
可以看到,导入的图像有位置信息,但是没有相机型号(一个小缺点)
选择thermal camera
拼接之前点击处理选项,勾选正射影像图GeoTIFF及合并瓦片
Pix4D正在将tiff/tif合成
耐心等待完成即可。
合成结果如下所示(合成影像保存在工程文件路径4_index\project_data\reflectance_gsd\tiles下):
Pix4D也可生成指数图,根据需要生成相应的shp文件或Geotiff文件