Thermal mapping support for FLIR, DJI and other manufacturers

Hi there!

Recently I tried to stitch photos from my DJI M2EA drone into ODM to analyze one of my solar stations.
Creating orthophotos only worked when I was processing stations without radiometric calibration and the pictures were seen as normal JPEGs instead of RJPEG, so I decided to improve ODM a bit)
Link to PR to master branch of ODM here

To add support for DJI Zenmuse XT S and DJI Zenmuse H20 Series and FLIR sensors, I need to discuss two problems I encountered during my work.

  1. The cameras from FLIR manufacturers store metadata inside the EXIF of the photo in binary form. The thermal_base library reads them using ExifTool, but ODM uses exifread instead of ExifTool which does not support such a tag.
  2. In order to read data from other DJI sensors - you need to add their thermal SDK (MIT license in parts) to call and pull metadata from DJI thermal photos (already covered by thermal_base), but for ODM there is a more rational way, and I need a little help on the right way to implement this feature.

Result of processing with radiometric calibration

Same plant without radiometric extraction:


Incredible stuff! Thanks so much for working on this!


This is fantastic! I have a non-FLIR thermal and if you need any data to help you test, let me know what you want.


Would you be willing to host sample data from it on GitHub or something so we can get at it easily in the future?

I don’t know much about GitHub but if it’s not overly complicated, I’m sure I could.

Just need to know what you want.
How many photos?
What height?
RTK/PPK enabled?
Wouldn’t think you would want/need gcp but I can set that up if needed.
Any preferred color scheme?


I will share some data using hub later.
I think that diverse variants of data are preferable!
10-20 photos,
20, 40, 60 and 80 meters
Some datasets with RTK and some not
1 dataset with GCP and other not.
One default BW, and can use any thermal color scheme which you want.

Hmm… Maybe 20 photos per dataset?

GSD of around 3cm/px? 85%/85% overlap/sidelap.

Could you do with and without RTK/PPK?

As for color scheme, what does your sensor offer?

1 Like

About question of stitching thermal photos from DJI (question (2)):

I decided to write a custom script that will convert DJI RJPEG into TIFF with thermal data. If tests for that will be successful - I will share it as file in contrib/ folder and mention it on README.


Hi,would you like to share the dataset with me?I want to test it with ODM.

1 Like

That is fantastic! Let me know if you need any H20T data. I can share for sure.