OpenThermal / libseek-thermal

SEEK thermal compact camera driver supporting the thermal Compact, thermal CompactXR and and thermal CompactPRO
MIT License
286 stars 99 forks source link

temp/raw drop issue #29

Open pauledd opened 6 years ago

pauledd commented 6 years ago

Sorry this might be a bit offtopic but that seems the only place where to discuss... I just wrote a little QT application that uses libseek-thermal (without flat generated).

bildschirmfoto_2018-06-17_15-42-11

I then pointed the cam's middle point to an area that was stable ~26°C and the app logged the centerpoint values with an average over 7 values to a file.

I plotted the values over time and that's what I got seek

That is a drop of about 10°C over 20 minutes. The original SeekThermal App (Android) does not show me such a drop, it starts just ~1-2°C off and stays quite stable over time.

So the question is what are they doing in their app to compensate for that drop? I assume they also get only raw values from the sensor and the rest is in-app-pre-processing... Can this be corrected with a flat? Or are they using such a curve that I plotted and compensate their readings against it over time (given that the curve characteristics stays consistent...)?

undera commented 6 years ago

I made some experiments around this. What is important is that "sensor value" we got decreases when device temperature increases. I have verified that by cooling down camera and then measuring sensor value. So sensor value can't be direct temperature value in the same way raw pixel data are.

Another thing to notice is that actual pixel values from camera also go down when camera temperature goes up My hypothesis is that this "sensor value" might be somehow used for compensating ambient temperature of camera, but real formula is yet to be found.

sjtosco commented 5 years ago

Hi. I'm working too. For Compact XR (not pro) and one point value near of center, an approximated formula can be seen in this Python code extract:

data16 = np.frombuffer(data,dtype=np.uint16) raw = data16.reshape(self.raw_height, self.raw_width) celcius = (0.03424 * raw[100,77] + 64) - 273

However, i'm agree with you. I think that sensor_value is like a reference (maybe a thermistor, with exponential curve). The actual value give me a difference with know reference and like this i can measure temp. It's a theory. Best regards!

Bostwickenator commented 3 years ago

Marking as duplicate of #39 since the two are so closely coupled