Skip to content
frenkinet edited this page Nov 3, 2015 · 5 revisions

Basic information

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

Frame ID

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

Calibration

Hexagon pattern

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

Thermal gradient

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:

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.

Gradient correction technique


Before — Floor

After — Floor

Before — Face

After — Face

Banding

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

Noise reduction

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

Calibration

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