-
Notifications
You must be signed in to change notification settings - Fork 16
Frame
Each frame consists of 32448 16 bit words representing a 208x156 array
Each word is transmitted as a little-endian value, only 14 of the 16 bits are used.
There is no header to the frame, some metadata is stored in special pixel locations.
A frame is issued upon request by the USB host at a rate of roughly 8fps.
Some frames contain calibration data rather than a standard image.
The last two values in each row are not image data, the microbolometer has a 206x156 array.
207: Some success using this value as line based weighting value
208: All zeros
Every 15th pixel, starting with the tenth, is blacked out to avoid infringing on a FLIR patent.
This forms a hexagon pattern in the image.
Some of these hexagon pixels are used to store frame metadata.
Pixel 10 stores the frame type ID.
Initial frame dissection
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg533867/#msg533867
More info: http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg545910/#msg545880
Frames have an ID stored in pixel 10
ID 1 | First calibration frame | |
ID 3 | A data frame | |
ID 6 | A pre-calibration frame | |
ID 4 | Looks like sensor calibration data | |
ID 5 | Half black, half bands | |
ID 7 | Looks like sensor calibration data | |
ID 8 | Looks like sensor calibration data | |
ID 9 | A gradient, with some distortion | |
ID 10 | Looks like sensor calibration data |
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg555452/#msg555452
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg555671/#msg555671
issue #2 raised by zougloub
The extracted frames have every 15 pixels blacked out leading to a hexagon pattern of black dots. This is a deliberate technique to avoid a FLIR patent. The resolution of a 12 micron pixel resolving 8-13 micron radiation means that there is theoretically no degradation.
An algorithm to extract each of the hexagon pixels
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg544671/#msg544671
Bilinear interpolation of pixels
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg538322/#msg538322
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg553805/#msg553805
More advanced technique, identify bad pixels and interpolate values from a weighted sum issue #3 raised by zougloub
The initial Seek Thermal software displayed a thermal gradient from at the side or corner of most devices. The impact varied, some users reported an error of ten degrees.
This was fixed by Seek Thermal in the 1.7.4 software release on the 9th of January 2015. From analysing version numbers and testing behaviour it is clear that the fix is performed in a software algorithm by the Android application.
Seek has not publicly documented how the problem was solved or the root cause of the issues.
Speculation on the root cause:
-
Degree of problem varied from camera to camera
-
Mike and others believed issue was caused by an alignment issue in the lens housing.
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg578244/#msg578244 -
Others observed the gradient got worse with time after switch on suggesting a system warm-up problem.
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg576907/#msg576907
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg546993/#msg546993 -
Discussion was also had on the shutter and its impact on the gradient, either through the shutter heating or not closing fully before a capture.
Heat from the sensor reflecting off lens housing matches all the observed symptoms. It explains how the problem gets worse over time as the sensor warms up, how realigning the lens housing can fix the problem and minor alignment differences between devices explains the varying degree of the problem.
The technique used by Seek has been documented as an Octave script. Fundamentally the process is to identify flat frames and use them to build a correction gradient.
Before — Floor |
After — Floor |
Before — Face |
After — Face |
The usb data frames have an artifact which causes horizontal bands to show up in the final image.
This can be removed by subtracting weighted values of the 207 column's value. The weighting factor is currently unknown, testers fiddle it by hand on each image.
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg559277/#msg559277
1/10th value shows good improvement
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg544298/#msg544298
Example code is also available which tries to weight automatically.
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg571235/#msg571235
Microbolometers are subject to manufacturing flaws which cause some pixels to fail.
Like an LCD screen Seek accepts a number of dead pixels but performs quality control to try and remove products with a large obvious cluster or a large number of dead pixels in the central area of the sensor. The remaining scattered dead pixels should be handled in software processing.
Code has been written to reduce this noise.
It looks for points which are different to all neighbours.
Aggressive use can degrade the detail in an image.
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg538423/#msg538423
eneuro did some work to calculate calibration models.
The aim was to calculate the impact of the gradient which would then allow a correction equation to be applied.
Linear approximation of calibration frame Non-linear approximation of calibration frame
Examination of calibration frame pixels, speculation of parametric equation values
http://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg545876/#msg545876