Author Topic: Flir One Thermal imaging camera teardown and hacks  (Read 67851 times)

0 Members and 2 Guests are viewing this topic.

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Flir One Thermal imaging camera teardown and hacks
« on: November 17, 2014, 04:12:04 am »
in the current Flir One thread http://www.eevblog.com/forum/testgear/flir-one-personal-thermal-imaging-device-for-your-iphone5-5s/
the  thread holder can't create a link list to the important posts

So I start a new thread and I will try to collect some links for the Flir one

for hacking the Flir Ex (Flir E4, E5, E6, E8) and the Exx (Flir E30, E40,  E50, E60)
see here http://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/


Link list for Flir One Generation One Flir1G1 

Mike
Flir One teardown part 1
http://www.eevblog.com/forum/testgear/flir-one-personal-thermal-imaging-device-for-your-iphone5-5s/msg502599/#msg502599

Flir One teardown part 2
http://www.eevblog.com/forum/testgear/flir-one-personal-thermal-imaging-device-for-your-iphone5-5s/msg504750/#msg504750

Mike's self made mini thermal camera with lepton sensor
http://www.eevblog.com/forum/testgear/flir-one-personal-thermal-imaging-device-for-your-iphone5-5s/msg507550/#msg507550
http://hackaday.com/2014/09/07/building-the-worlds-smallest-thermal-camera/

Mike's Flir Lepton reverse-engineering page
http://www.electricstuff.co.uk/lepton.html

Lepton sensor
Lepton software command spec at the Pure Engineering site
http://www.pureengineering.com/projects/lepton

vincentwrath
palettes and emissivities hacks in flir one app
http://www.eevblog.com/forum/testgear/flir-one-personal-thermal-imaging-device-for-your-iphone5-5s/msg547670/#msg547670

devilmastah
hack to unlock a temperature range of -40 to 150 degrees C in the iPhone app
http://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/msg553481/#msg553481


Link list for Flir One Generation Two Flir1G2 

full datasheet for Lepton 3
http://media.wix.com/ugd/53cdb6_5191be73d1c943d78d2e1a095cb7f3b8.pdf

Lepton 160x120 is cropped to 120x90 in Flir One
http://www.eevblog.com/forum/thermal-imaging/actual-resolution-of-flir-one-v2/msg797429/#msg797429
http://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/msg799649/#msg799649

images from disassembly
http://www.eevblog.com/forum/testgear/new-flir-products/msg750181/#msg750181

a working SDK sample with the extracted java.class
http://www.eevblog.com/forum/thermal-imaging/question-about-flir-one-for-android/msg799634/#msg799634

Flir One Android with Linux
general setup with v4l2loopback kernel driver: http://www.eevblog.com/forum/thermal-imaging/question-about-flir-one-for-android/msg832208/#msg832208
last code: http://www.eevblog.com/forum/thermal-imaging/question-about-flir-one-for-android/msg840976/#msg840976
endpoint 0x85
http://www.eevblog.com/forum/thermal-imaging/question-about-flir-one-for-android/msg822120/#msg822120

compare the image quality between Flir One G1, Flir One G2, Flir Ex, Flir Exx
http://www.eevblog.com/forum/thermal-imaging/flir-e4-thermal-imaging-camera-teardown/msg802245/#msg802245

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #1 on: November 17, 2014, 04:13:02 am »
a sensitivity test

For comparing the quality of the flir lepton sensor with the Flir Ex / Exx I shot sample images from a (uncooled) beer crate and two bottles of champagne with the same FOV.

Knowingly I shot a image with minimal temperature differences (only 1 Kelvin).
Please note the different temperature scales!

All screenshots from FlirTools after pressing the Auto-Range Button. (without MSX)

Flir E40 (hacked 320x240), Germanium (?) lens


Flir E4 (hacked 320x240),  Chalcogenide Glass lens


Flir One => Lens FOL 2 (80x60)
« Last Edit: November 17, 2014, 05:12:32 am by tomas123 »
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #2 on: November 17, 2014, 04:14:15 am »
check for fake noise

in the post above you can see in the Flir One image mystery artifacts (vertical lines)

Let's start the next experiment to analyse the temperature sensitivity with stacking 30 images from the Flir One

I choose an image with 2 Kelvin temperature gradient: a candle lantern on a underfloor heating.

First compare the image from the Flir One with  Flir E40 (hacked to 320x240)
For better comparing I took screenshots  from Flir tools

E40


Flir One (slightly another angle, flir one has wide-angle focal length)


please note the temperature scale (2 Kelvin)


I shot 30 photos from the same subject with the Flir One.

following the code for converting the RAW data of the 30 Flir One images (IMG_*.JPG) and generating the attached images
(use imagemagick and exiftool)
Code: [Select]
$ exiftool -b -RawThermalImage IMG_*.JPG -w _%f.png

$ convert -version
Version: ImageMagick 6.8.9-1 Q16 x86_64 2014-07-08 http://www.imagemagick.org

$ convert  -define png:swap-bytes=on *.png    -set filename:fname 'R%t' +adjoin '%[filename:fname].png'

// find max/min RAW value
$ identify -verbose R_*.png | grep -n3 statist | grep min | sort -k 3 | head -n 1
10409-      min: 13272 (0.202518)

$ identify -verbose R_*.png | grep -n3 statist | grep max | sort -k 3 | tail -n 1
376-      max: 13658 (0.208408)

//stretch level und resize for stacking
convert R_*.png -level 13250,13700 -resize 320x -set filename:fname 'S%t' +adjoin '%[filename:fname].png'

// calc average
$ convert  -average SR_*.png stack.png

// mosaic
$ montage SR*.png -tile 6x5 -geometry +2+2  tile_6x5.jpg

//animated gif
$ montage SR*.png -tile 1x1 -geometry +0+0 tile_1x1.gif

see the stacked image

There are no visible sensor disturbances. If you have a good monitor, you can see on the right side the diagonal line of flagstone!!
this image says: "Yes I can 50mK"

The data sheet of the Flir Lepton sensor give a sensitivity of 50mK (like the sensor of a hacked Exx/Ex).
I think, that the Flir App overlays a dirty noise, like on an unhacked Flir Ex/Exx 

look at the movements of the fake(?) noise:


I see vertical and horizontal lines


...and on some images are partly visible patterns!



I know, there is a temperature drift. I haven't wait long enough...

Formerly I made the same experiment with a Flir E4.
I the E4 is unhacked, then the stacking magnificent remove the noise.
But with a hacked E4 you can not mentionable improve the s/n-value of the image with stacking.
« Last Edit: November 17, 2014, 05:23:30 am by tomas123 »
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #3 on: November 17, 2014, 04:15:09 am »
after the sensitivity tests above it's time to make a resolution test

I used a 0,2mm heating wire and take some photos from 1m distance of the diagonal wire.
To avoid optical crosstalk I only heated the wire 5 Kelvin.
 
First the screenshots from Flir Tools. Here you can check the minor temperature differences (crosstalk)

E40 (hacked to 320x240 pixel)



Flir One (80x60 pixel)

we can see, that the noise level from the Flir One by a 6 Kelvin scale is very good (compared to the Seek Thermal infrared camera) 
please note the cold spots around the wire (artefacts from upscaling to 160x120??)



now some steps with imagemagick and exiftool to extract the raw values
As overlay a grid, to show the real size of one sensor pixel.
For better viewing I resize a sensor pixel to 8x8 screen pixels

Flir E40 (image IR_3115.jpg with 320x240 sensor pixels)

Code: [Select]
//extract RAW
$ exiftool -b -RawThermalImage IR_3115.jpg > IR_3115.tif

//auto-level and resize (without interpolation!) to 8x8 pixel size
$ convert IR_3115.tif -auto-level -filter point -resize 2560x wire6.png

//draw one square with size 8x8
$ convert -size 8x8 xc:none -stroke gray -strokewidth 0  -draw "line 0,0 0,7"  -draw "line 0,0 7,0"  1.png

//enlarge to 320x240 squares of size 8x8
$ convert -size 2560x1920 tile:1.png 320x240.png

//overlay grid with image
$ convert wire6.png 320x240.png  -compose overlay -composite IR_3115ov.png

//crop a part of 640x480 => 80x60 sensor pixel
$ convert IR_3115ov.png -crop 640x480+800+700 IR_3115ov-crop.png

this is a crop with the size of 80x60 sensor pixels ( crop to same size like Flir One)
(the full image download as attachment)
one square = one sensor pixel of Flir Exx

the result is really sharp (thanks to good optics of the Flir Exx)
Wow



Now process the image from the Flir One ( IMG_3353.JPG )
Flir converts the RAW values of the Lepton Sensor from 80x60 to 160x120 Pixel.
I still make a overlay grid of 80x60 Pixel. As result you see 4 extrapolated pixels in one 8x8 sensor square.

Code: [Select]
//extract RAW
$ exiftool -b -RawThermalImage IMG_3353.JPG > wire.png

//change byte order, auto-level and resize (without interpolation) to 8x8 pixel size
$ convert  -define png:swap-bytes=on wire.png -auto-level -filter point -resize 640x IMG_3353.png

//draw one square with size 8x8
$ convert -size 8x8 xc:none -stroke gray -strokewidth 0  -draw "line 0,0 0,7"  -draw "line 0,0 7,0"  1.png

//enlarge to 80x60 sensor pixel squares
$ convert -size 640x480 tile:1.png 80x60.png

//overlay grid with image
$ convert IMG_3353.png 80x60.png -compose overlay -composite IMG_3353ov.png

one square = one sensor pixel of Flir One

Well, the result is definite poorer, as the 80x60 crop of the Exx ...
... but the Exx is a reference design.

I think this a good result for the price of the Flir One.
Please note the above described cold spots around the wire.

Edit 19.11.2014
better use this code with transparent png's
Code: [Select]
$ convert -size 8x8 xc:none -stroke gray -strokewidth 0  -draw "line 0,0 0,7"  -draw "line 0,0 7,0"  1.png
$ convert -size 640x480 tile:1.png -transparent white grid.png
$ convert largeimage.png grid.png -flatten overlay.png
« Last Edit: November 20, 2014, 08:05:13 am by tomas123 »
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #4 on: November 17, 2014, 08:52:36 am »
the Ipod touch 5th generation fits great in the Flir One hardcase

but the flir one app doesn't run

« Last Edit: November 17, 2014, 05:35:42 pm by tomas123 »
 

Offline Bud

  • Super Contributor
  • ***
  • Posts: 2365
  • Country: ca
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #5 on: November 17, 2014, 10:10:09 am »
You mean iPod Touch ? I do not think there is iPhone Touch.

Even on iPhone, as far as I remember you need OS version 6 or higher.

EDIT: iOS 7 or higher
« Last Edit: November 17, 2014, 10:12:31 am by Bud »
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #6 on: November 17, 2014, 05:36:48 pm »
Yes
Ipod touch 5G with IOS 8 doesn't work
« Last Edit: November 17, 2014, 06:37:26 pm by tomas123 »
 

Offline vincentwrath

  • Contributor
  • Posts: 11
  • Country: cn
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #7 on: November 17, 2014, 05:53:28 pm »
then how can we remove the " Flir App overlays a dirty noise" you mentioned?  :)
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #8 on: November 17, 2014, 06:16:26 pm »
I don't know.

Mike read out the Lepton Sensor with the raw stream of 80x60 pixels.
http://www.eevblog.com/forum/testgear/flir-one-personal-thermal-imaging-device-for-your-iphone5-5s/msg507550/#msg507550
He can confirm, if the mystery artefacts are created by firmware or by Flir app software.

If I look at this great video from Lepton Sensor
http://www.pureengineering.com/projects/lepton
then I can't see artefacts and all pixels are really sharp.

I think, it's from software.
Maybe, the noise is not added with intent and a side effect of a bad extrapolation to 160x120  with an magic flir filter

In real live with a large (>5K) temperature scale , the artefacts are not visible!
You cant shrink the temperature scale in Flir App to less as 8 Kelvin (only automatic).
Therefore  you never see the noise in the flir app.
You must load the image in the Flir Tools app and manual edit the scale ...

if you simple delete the SuperResDenoise.plist nothing changes :(
I think devilmastah can better look inside the code of the flir one app
inside the Flir One app I found the interesting file SuperResDenoise.plist

Code: [Select]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Date</key>
<date>2014-03-12T22:10:38Z</date>
<key>Deblur_PSD</key>
<dict>
<key>ht1_1x8x8</key>
<array>
--- snip ---
</dict>
<key>Denoise_Parameters</key>
<dict>
<key>dn_dctBlkStepSz</key>
<integer>4</integer>
<key>dn_motionThreshold</key>
<real>0.20000000000000001</real>
<key>dn_smoothing</key>
<integer>50</integer>
</dict>
<key>Description</key>
<string>Flir One Parameters for SuperResolution, Denoise and Deblur.</string>
<key>PSD</key>
<dict>
--- snip ---
<key>Revision_number</key>
<integer>0</integer>
<key>Super_Resolution_Parameters</key>
<dict>
<key>sr_alpha</key>
<real>0.59999999999999998</real>
<key>sr_bestQuality</key>
<true/>
<key>sr_beta</key>
<integer>10</integer>
<key>sr_bilinearUpscale</key>
<false/>
</dict>
</dict>
</plist>

see my posts for details about superresolution:
http://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/msg363688/#msg363688
http://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/msg363213/#msg363213

you can see this effect on the pins of the LQFP64 (pin-distance: 0.5mm)

single image (see left side of chip - pins are different blurred)


stacked image (all pins are sharp)

« Last Edit: November 17, 2014, 06:38:45 pm by tomas123 »
 

Offline eneuro

  • Super Contributor
  • ***
  • Posts: 1411
  • Country: 00
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #9 on: November 17, 2014, 07:40:51 pm »
stacked image (all pins are sharp)

This is result of superresolution algorithm only or stacked means many single images were merged together eg. 8 size moving weighted average while thermal camera were mounted on tripot to avoid any sensor movements relative to thermal scene?
12oV4dWZCAia7vXBzQzBF9wAt1U3JWZkpk
“Let the future tell the truth, and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I have really worked, is mine”  - Nikola Tesla
-||-|-
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #10 on: November 17, 2014, 08:07:35 pm »
see here for details about this stacked image
connect with telnet to shell of Flir E40 camera and take a RAW sequence of 90 frames
I used a tripod and moved the cam a little while recording.
...
now stack all png images with free tool Registax  http://www.astronomie.be/registax/ and save as 16 bit tif image

« Last Edit: November 17, 2014, 08:14:08 pm by tomas123 »
 

Offline eneuro

  • Super Contributor
  • ***
  • Posts: 1411
  • Country: 00
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #11 on: November 17, 2014, 08:22:46 pm »
Thanks for those hints.
However it looks like there is no source code and only wine tools under Linux http://www.astronomie.be/registax/linux.html to test it.
Need to find algorithm used there itself while I want implement this with OpenCV support and include to native C/C++ code for Seek Thermal output images enhancements after its calibration frames gradient corrections are made  ;)
12oV4dWZCAia7vXBzQzBF9wAt1U3JWZkpk
“Let the future tell the truth, and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I have really worked, is mine”  - Nikola Tesla
-||-|-
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #12 on: November 17, 2014, 09:08:18 pm »
Which camera do you use?
How do you get the frames for stacking?

I succesfull tested thermal image stacking with

- Photoshop CS3 -> HDR
- Registax (Wavelets)
- AviStack  (Wavelets)

Registax and AviStack works fine under wine
but no open source

I think, Hugin (GPL) can also used for stacking images (align_image_stack, not tested)
« Last Edit: November 17, 2014, 09:45:09 pm by tomas123 »
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #13 on: November 17, 2014, 09:27:23 pm »
Need to find algorithm used there itself while I want implement this with OpenCV support and include to native C/C++ code for Seek Thermal output images enhancements after its calibration frames gradient corrections are made  ;)

suggest for Quick-and-dirty Linux stacking with imagemagick

Variant A - tripod no movements
simple avarege the samples
see sample http://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/msg551881/#msg551881
sharp the averaged image

Variant B - minor movements
1. select a reference image
2. find the best fit offset for every frame with imagemagick "compare -metric"
     see sample http://studio.imagemagick.org/discourse-server/viewtopic.php?f=1&t=23318#p97884
   hint: "compare -metric rmse -subimage-search" is very slow, better check discrete every the pixel inside the (goal) area with ""compare -metric"
3. average the images with best fit offset

Offline mikeselectricstuff

  • Super Contributor
  • ***
  • Posts: 11005
  • Country: gb
    • Mike's Electric Stuff
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #14 on: November 17, 2014, 10:01:47 pm »
Before getting heavily into image stacking on the F1, bear in mind that they use the fact that the image is moving to do automatic nonuniformity correction, so using lots of frames from a stationary mount will almost certainly not give as much improvement as you might otherwise expect. At the very least you may need to do a manual nonuniformity cal at the start & end of the image sequence. 
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #15 on: November 17, 2014, 10:28:21 pm »
you are right, stacking terrible postprocessed single images of the F1 is not useful

It surprises me, that here in the F1 thread asked someone for stacking, after I posted some (great  ;) ) solutions for the Flir Ex and Exx to record a raw video sequence
see
http://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/msg377140/#msg377140
http://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/msg363898/#msg363898
http://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/msg363213/#msg363213

PS: it's nice to see the temperature drift in my 30 manual triggered F1 shots (without manual NUC between images)
« Last Edit: November 17, 2014, 10:37:56 pm by tomas123 »
 

Offline eneuro

  • Super Contributor
  • ***
  • Posts: 1411
  • Country: 00
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #16 on: November 17, 2014, 10:43:53 pm »
This image enhancement will be made for Seek Thermal Android dongle, but principles should be the same.
Maybe there is different shutter technology used, but for thermal camera for security system it will be most of the time not moving, but I might want the feature that if it detects suspicious thermal object it will track this object using step motors, so I will have source of thermal image frames when camera is not moveing and in movement too.
Tracking feature is addon to this system, so for the moment probably will use only moving weighted averaging for not moveing fixed Seek Thermal camera to get downgraded output to 1Hz from 9Hz max available, so about 8 image frames back  8)

This has to work in realtime so it have to be optimized for speed C/C++ code  ;)
Imagemagic only can be used as source code hint.
« Last Edit: November 17, 2014, 10:47:33 pm by eneuro »
12oV4dWZCAia7vXBzQzBF9wAt1U3JWZkpk
“Let the future tell the truth, and evaluate each one according to his work and accomplishments. The present is theirs; the future, for which I have really worked, is mine”  - Nikola Tesla
-||-|-
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #17 on: November 17, 2014, 11:59:35 pm »
another thoughts to Flir Lepton and the noise filtering >:D  in the Flir One App

FLIR TG165 with lepton microbolometer
http://flir.com/uploadedFiles/Instruments/Products/TG165/FLIR-TG165-Datasheet.pdf
Thermal Imaging Sensitivity: 150mK

Flir One  with lepton sensor
http://www.flir.com/flirone/explore.cfm
Sensitivity: ability to detect temperature differences as small as 0.18 °F ( 100 mK)

LEPTON Longwave Infrared (LWIR) Camera Module
http://www.flir.com/uploadedFiles/CVS_Americas/Cores_and_Components_NEW/Products/Uncooled_Cores/Lepton/FLIR-Lepton-DataBrief.pdf
Thermal sensitivity: <50 mK

from the Flir Ex / Exx we know the switch:
Code: [Select]
rset .image.flow.digitalFilter.noiseGen.enabled true/false
rset .image.flow.digitalFilter.noiseGen.level 150 (mK)

Quote
.caps.config.image.targetNoise.enabled bool true
.caps.config.image.targetNoise.targetNoiseMk int32 135
It could actually be noise reduction or shaping - maybe this is a threshold to decide when to apply noise reduction, i.e. adjust filter until noise is below the target value.  "Mk" - mask? Perhaps something like a hysteresis function?

targetNoiseMk is a noise generator in mK (conforming with NETD/ thermal sensity in Flir Datasheets of the selected cam)
Formerly I stacked some noisy images with Registax or AviStax  to subtract out the randomly noise and it works great!!

after setting targetNoiseMk to zero, stacking of images don't improve results  :(

here a sample from a Flir E40 (old cam hacked formerly from 160x120 to 320x240)
in service menu I can measuring the noise

Code: [Select]
rset .caps.config.image.targetNoise.targetNoiseMk  60 (MilliKelvin)

 Temporal noise        MilliKelvin      Digital Units
Pixel Noise      61.28      12.13
Row Noise        14.84      2.94
Column Noise     13.67      2.71

Spatial noise        MilliKelvin      Digital Units
Pixel Noise      25.69      5.09
Row Noise         7.08      1.40
Column Noise      7.82      1.55
Uniformity      198.23     39.25

Total noise        MilliKelvin      Digital Units
Pixel Noise       67.01     13.27
Row Noise          9.71      1.92
Column Noise      10.10      2.00


and now without noise (cam temperature is 25 Grad):
Code: [Select]
rset .caps.config.image.targetNoise.targetNoiseMk  0 (MilliKelvin)

 Temporal noise        MilliKelvin      Digital Units
Pixel Noise      19.85      3.93
Row Noise         6.39      1.26
Column Noise      8.64      1.71

Spatial noise        MilliKelvin      Digital Units
Pixel Noise      18.98      3.76
Row Noise         4.70      0.93
Column Noise      5.54      1.10
Uniformity      210.23      41.63

Total noise        MilliKelvin      Digital Units
Pixel Noise      28.96      5.73
Row Noise         5.76      1.14
Column Noise      7.66      1.52


see the differences (NETD is 0,03 °C @ 25°C)

Quote
http://gs.flir.com/surveillance-products/surveillance-technology/imaging-technotes/IR_Technology_Parameters
Uncooled infrared cameras systems are typically a little noisier, in the range of 30 - 120mK. Noise in an image can be spatial or temporal.
Spatial noise is noise across the image at any given point in time. It is perceived as an unchanging fixed pattern on top of the image.
Temporal noise is noise at any point in the image over time. It is perceived as the static that moves in an image.
NETD is typically the measure of both these noise types.

remarkably Flir dont't disable the noise generator at the top cams of a serie (Flir E4 -> E8 , Flir E30 -> E60)
« Last Edit: November 18, 2014, 12:07:41 am by tomas123 »
 

Offline devilmastah

  • Contributor
  • Posts: 14
  • Country: nl
    • My blog (which i should update more often)
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #18 on: November 19, 2014, 01:20:09 am »

if you simple delete the SuperResDenoise.plist nothing changes :(
I think devilmastah can better look inside the code of the flir one app


Make shure that the file is chmodded correctly! else it wont be deleting it for real. I can make changes in the file and the image of my camera changes as well.
I can take a look inside the code later this week, i am quite busy with work at the moment :(
But i am shure the file gets used! I can try what happens if i delete it later today.
 

Offline devilmastah

  • Contributor
  • Posts: 14
  • Country: nl
    • My blog (which i should update more often)
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #19 on: November 19, 2014, 05:27:36 am »

if you simple delete the SuperResDenoise.plist nothing changes :(
I think devilmastah can better look inside the code of the flir one app


i had a little play with the SuperResDenoise,plist.

First of all, the app seems to be perfectly fine with missing that file (as i delete it the app still works).
Furthermore weird, there seems to be a reference to the file in the code so i dont really get why it doesnt just crash.

Then, it does something with the values of it and puty them in a function Write_4x4x8_PSD.
i am pretty shure i have seen a file or reference to  4x4x8 psd somewhere but cant find it right now.

Now the nice thing, i removed the file and made some pictures, see the attatchment, right onces are without the file!
Left ones with. One of them is a shot accross my bed to the window (i should fix the isolation of that), and the other one is a uniform tabletop with the camera directly on it.
Both images have the normal picture removed with flir tools.
The sharpness of the ir image itself does not seem to be really affected as in its not burryer, looks more crisp overall.

I archieved this by doing the following.
1. I chmodded the file via ssh terminal to 777, "chmod 777 SuperResDenoise.plist"
2. After that you are able to rename or delete it, if you dont own or have rights to the file the file will not get delted or modified!
3. Then i rebooted the app, make shure its not running in the background (double click home button)! Thats really important as the file wil be in memory when the app is in background, hence you see no change.

tip, im not shure if this is needed, i already own all the files as root. You could chown the file to root. I dont think its needed.


EDIT 1:
As to the
from the Flir Ex / Exx we know the switch:
rset .image.flow.digitalFilter.noiseGen.enabled true/false
rset .image.flow.digitalFilter.noiseGen.level 150 (mK)

values, the enable disable does seem to live in camerafiles/system/calib.rsc - however i did not notice any change (maybe thats due to the lack of my SuperResDenoise).
Another thing i noticed is their reference:
"## NO VALUES READ FROM .calib.detector. ATM. Everything is set in ifc_detector_dummy.cpp in appcore." that is on line 175 for me.

*goes back at decomping app*


EDIT 2


i found some references to toggle MSX mode and other stuff, i will now boot my mac to take a look at the other screensets that are in the app :)
Maybe those are some future items they want to include, but would be nice to have them now
« Last Edit: November 19, 2014, 06:16:18 am by devilmastah »
 

Offline Starman

  • Contributor
  • Posts: 12
  • Country: ca
  • It's Just Magic
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #20 on: November 19, 2014, 07:57:58 am »
i'm wondering if perhaps since Flir have been in the thermal buisness so long, they just took big chunks of code they had for say the E4, and ported it for use with the Lepton module and Flir One. Hence why so many things are disabled or unused.
 

Offline devilmastah

  • Contributor
  • Posts: 14
  • Country: nl
    • My blog (which i should update more often)
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #21 on: November 19, 2014, 09:12:35 am »
It seems like that, since you can find lots of references to other cameras if you look closeley in some of the code :P
The app however seems quite clean since thats propably the first one.
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #22 on: November 19, 2014, 09:40:46 am »
great images, how do you shot exact the same crop?

and the best is, there is a conf.cfg like in Ex/Exx firmware

/FLIR ONE 1.1.3/Payload/Rosebud.app/CameraFiles/system/appcore.d/config.d/conf.cfg
Code: [Select]
#
# Generated at  2014-05-27
#
.caps entry
.caps.config entry
.caps.config.name text "app super"
.caps.config.revision text "1.1"
.caps.config.image entry
.caps.config.image.framegrab entry
.caps.config.image.framegrab.fusion entry
.caps.config.image.framegrab.fusion.enabled bool true
.caps.config.image.framegrab.fusion.pip entry
.caps.config.image.framegrab.fusion.pip.enabled bool true
.caps.config.image.framegrab.fusion.hcf entry
.caps.config.image.framegrab.fusion.hcf.enabled bool true
.caps.config.image.services entry
.caps.config.image.services.store entry
.caps.config.image.services.store.enabled bool true
.caps.config.image.services.store.radiometric entry
.caps.config.image.services.store.radiometric.enabled bool true
.caps.config.image.services.store.incompatible entry
.caps.config.image.services.store.incompatible.enabled bool false
.caps.config.image.services.store.incompatible.level int32 0
.caps.config.image.settings entry
.caps.config.image.settings.enabled bool true
.caps.config.image.settings.IRwidth int32 320
.caps.config.image.settings.IRheight int32 240
.caps.config.image.sysimg entry
.caps.config.image.sysimg.alarms entry
.caps.config.image.sysimg.alarms.enabled bool false
.caps.config.image.sysimg.alarms.measfunc entry
.caps.config.image.sysimg.alarms.measfunc.enabled bool false
.caps.config.image.sysimg.alarms.measfunc.maxCount int32 3
.caps.config.image.sysimg.alarms.humidity entry
.caps.config.image.sysimg.alarms.humidity.enabled bool false
.caps.config.image.sysimg.alarms.humidity.maxCount int32 1
.caps.config.image.sysimg.alarms.insulation entry
.caps.config.image.sysimg.alarms.insulation.enabled bool false
.caps.config.image.sysimg.alarms.insulation.maxCount int32 1
.caps.config.image.sysimg.gps entry
.caps.config.image.sysimg.gps.enabled bool true
.caps.config.image.sysimg.irMarkers entry
.caps.config.image.sysimg.irMarkers.enabled bool false
.caps.config.image.sysimg.irMarkers.spot entry
.caps.config.image.sysimg.irMarkers.spot.enabled bool false
.caps.config.image.sysimg.irMarkers.spot.maxCount int32 0
.caps.config.image.sysimg.irMarkers.arrow entry
.caps.config.image.sysimg.irMarkers.arrow.enabled bool true
.caps.config.image.sysimg.irMarkers.arrow.maxCount int32 0
.caps.config.image.sysimg.irMarkers.box entry
.caps.config.image.sysimg.irMarkers.box.enabled bool false
.caps.config.image.sysimg.irMarkers.box.maxCount int32 0
.caps.config.image.sysimg.measureFuncs entry
.caps.config.image.sysimg.measureFuncs.enabled bool true
.caps.config.image.sysimg.measureFuncs.diff entry
.caps.config.image.sysimg.measureFuncs.diff.enabled bool true
.caps.config.image.sysimg.measureFuncs.diff.maxCount int32 1
.caps.config.image.sysimg.measureFuncs.diff.calcMask int32 65526
.caps.config.image.sysimg.measureFuncs.isotherm entry
.caps.config.image.sysimg.measureFuncs.isotherm.enabled bool true
.caps.config.image.sysimg.measureFuncs.isotherm.calcMask int32 20
.caps.config.image.sysimg.measureFuncs.isotherm.dual bool false
.caps.config.image.sysimg.measureFuncs.isotherm.fixScale bool false
.caps.config.image.sysimg.measureFuncs.isotherm.interval bool true
.caps.config.image.sysimg.measureFuncs.isotherm.invInterval bool false
.caps.config.image.sysimg.measureFuncs.isotherm.maxCount int32 1
.caps.config.image.sysimg.measureFuncs.mbox entry
.caps.config.image.sysimg.measureFuncs.mbox.enabled bool true
.caps.config.image.sysimg.measureFuncs.mbox.calcMask int32 1924
.caps.config.image.sysimg.measureFuncs.mbox.maxCount int32 5
.caps.config.image.sysimg.measureFuncs.mcircle entry
.caps.config.image.sysimg.measureFuncs.mcircle.enabled bool true
.caps.config.image.sysimg.measureFuncs.mcircle.calcMask int32 1924
.caps.config.image.sysimg.measureFuncs.mcircle.maxCount int32 5
.caps.config.image.sysimg.measureFuncs.mline entry
.caps.config.image.sysimg.measureFuncs.mline.enabled bool true
.caps.config.image.sysimg.measureFuncs.mline.calcMask int32 1924
.caps.config.image.sysimg.measureFuncs.mline.maxCount int32 1
.caps.config.image.sysimg.measureFuncs.reftemp entry
.caps.config.image.sysimg.measureFuncs.reftemp.enabled bool true
.caps.config.image.sysimg.measureFuncs.reftemp.calcMask int32 1924
.caps.config.image.sysimg.measureFuncs.reftemp.maxCount int32 1
.caps.config.image.sysimg.measureFuncs.script entry
.caps.config.image.sysimg.measureFuncs.script.enabled false
.caps.config.image.sysimg.measureFuncs.script.maxCount int32 0
.caps.config.image.sysimg.measureFuncs.spot entry
.caps.config.image.sysimg.measureFuncs.spot.enabled bool true
.caps.config.image.sysimg.measureFuncs.spot.calcMask int32 514
.caps.config.image.sysimg.measureFuncs.spot.maxCount int32 10
.caps.config.image.sysimg.visualMarkers entry
.caps.config.image.sysimg.visualMarkers.enabled bool false
.caps.config.image.sysimg.visualMarkers.spot entry
.caps.config.image.sysimg.visualMarkers.spot.enabled bool false
.caps.config.image.sysimg.visualMarkers.spot.maxCount int32 0
.caps.config.image.sysimg.visualMarkers.arrow entry
.caps.config.image.sysimg.visualMarkers.arrow.enabled bool false
.caps.config.image.sysimg.visualMarkers.arrow.maxCount int32 0
.caps.config.image.sysimg.visualMarkers.box entry
.caps.config.image.sysimg.visualMarkers.box.enabled bool false
.caps.config.image.sysimg.visualMarkers.box.maxCount int32 0
.caps.config.image.targetNoise entry
.caps.config.image.targetNoise.enabled bool false
.caps.config.image.targetNoise.targetNoiseMk int32 0
.caps.config.image.zoom entry
.caps.config.image.zoom.enabled bool false
.caps.config.image.zoom.maxFactor double 8
.caps.config.system entry
.caps.config.system.focus entry
.caps.config.system.focus.laser entry
.caps.config.system.focus.laser.updateFocus entry
.caps.config.system.focus.laser.updateFocus.enabled bool false
.caps.config.ui entry
.caps.config.ui.fusion entry
.caps.config.ui.fusion.PIP entry
.caps.config.ui.fusion.PIP.enabled bool true
.caps.hw entry
.caps.hw.sdcard entry
.caps.hw.sdcard.enabled bool false
# ID *
# CRC01 b114169e

but this this the "app super" config file for calibration purpose and not for working
on Exx the path for "app super"  is \FlashFS\system\service\appcore.d\config.d\conf.cfg

i'm wondering if perhaps since Flir have been in the thermal buisness so long, they just took big chunks of code they had for say the E4, and ported it for use with the Lepton module and Flir One.
you are right, the file above says:
Code: [Select]
.caps.config.image.settings.IRwidth int32 320
.caps.config.image.settings.IRheight int32 240
:(
« Last Edit: November 19, 2014, 09:47:45 am by tomas123 »
 

Offline devilmastah

  • Contributor
  • Posts: 14
  • Country: nl
    • My blog (which i should update more often)
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #23 on: November 19, 2014, 09:43:51 am »
do you have info on what does what in that config ?
 

Offline tomas123

  • Frequent Contributor
  • **
  • Posts: 832
  • Country: de
Re: Flir One Thermal imaging camera teardown and hacks
« Reply #24 on: November 19, 2014, 09:51:18 am »
as I wrote above, this is a service file and for Flir One (80x60 instead of 320x240 ?? )

for editing, you need a CRC01 keygen
http://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/msg321956/#msg321956
Code: [Select]
mac osx
// verbose: g++ -v
$ g++  *.cpp -o crc01

$ ./crc01
Usage: ./crc01 infile.txt


CRC32 in *.rsc files is regular CRC32
a crc32 sample on command line
Code: [Select]
// count lines
$ wc -l FlashFS/system/calib.rsc
     801 FlashFS/system/calib.rsc

//print last line
$ tail -n1  FlashFS/system/calib.rsc
# CRC32 ef8f7e0e

//calc a new crc32 for 801-1=800 lines
$ crc32 <(head -n 800 FlashFS/system/calib.rsc)
ef8f7e0e
« Last Edit: November 19, 2014, 11:01:21 am by tomas123 »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf