detecttechnologies / thermal_base

Decoding and common processing for thermographs / thermograms. Currently supports FLIR's TIFF and PNG encoded metadata, and DJI-encoded metadata
MIT License
54 stars 9 forks source link

Temperature values for DJI ZH20T are not correct #14

Open lvEnertis opened 2 years ago

lvEnertis commented 2 years ago

I am testing the thermal_base library with some images from a DJI ZH20T, and the temperatures that I get are not what I was expecting. Basically all the values exported in image.thermal_np are negative, and there shouldnt be any negative value for the image I am using.

Is there anything I am missing?

Is the convertion to celsius tested for the DJI cameras?

If you need one example of image, I can send to an email. I tried attaching it here, but seems that we lose the metadata info.

Thanks!

rsnk96 commented 2 years ago

For review + @agarwalkunal12

And @lvEnertis - can you share a sample image from the camera here?

lvEnertis commented 2 years ago

This is one image from the camera.

example

If the metadata is not preserved by sharing here, I can send it to a email.

Thank you for looking into it.

rsnk96 commented 2 years ago

Can you zip it and attach it, like this? https://github.com/detecttechnologies/Thermal-Image-Analysis/issues/8#issuecomment-903709316

lvEnertis commented 2 years ago

Here it is!

example.zip

enertisbd commented 2 years ago

Hello,

Just writting to know if there is any update on this issue.

Thank you!

ChrisDAT20 commented 1 year ago

When you look into the function extract_temperatures_dji, the Emissivity, ObjectDistance and RelativeHumidity are set to constant values, instead using the values from the image meta data. When you change this, will you get correct temperatures?

lvEnertis commented 1 year ago

Hi,

I tried using the metadata values only for Emissivity, ObjectDistance and RelativeHumidity, and it didnt work. So I commented the whole definition (hard coded) of "meta" at thermal_base.py@123, and it seems to be working now.

From what I see the the redefinition of meta causes the image data to be ignored, so probably it should be removed or used in a different way.

Thank you for looking into it.

ChrisDAT20 commented 1 year ago

Removing the hard coded values will use the meta data values which are in the image data. As the execution flows through the utils.sensor_vals_to_temp() function too, even a completely empty meta dictionary will give you some results. That sensor_vals_to_temp function defaults the parameters too. I tried with Emissivity of the image (100), but that seems to mean 100%, and the results are surely wrong.

lvEnertis commented 1 year ago

Hi,

I compared the results (removing the hard coded values) with those of DJI Analysis Tool, and the values a wrong. The values of Distance, Relative Humidity, Emissivity, and Reflected Temp, used by the software are in the image below. They output the Emissivity as 1, but with this value thermal_base outputs all negative values.

I also have tried the library below and it seems to return the correct values (at least for the few pixels I checks). It may help on the solution of our problem. https://github.com/SanNianYiSi/thermal_parser

I dont have much experience in this issue, but if you guys need any help, feel free to ask!

DJI software output. image