$ 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//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//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$ 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
inside the Flir One app I found the interesting file SuperResDenoise.plistCode: [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:
https://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/msg363688/#msg363688 (https://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/msg363688/#msg363688)
https://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/msg363213/#msg363213 (https://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)
(https://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/?action=dlattach;attach=75389;image)
stacked image (all pins are sharp)
(https://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/?action=dlattach;attach=75391;image)
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?
(https://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/?action=dlattach;attach=75391;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/ (http://www.astronomie.be/registax/) and save as 16 bit tif image
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 ;)
rset .image.flow.digitalFilter.noiseGen.enabled true/false
rset .image.flow.digitalFilter.noiseGen.level 150 (mK)
Quote.caps.config.image.targetNoise.enabled bool trueIt 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?
.caps.config.image.targetNoise.targetNoiseMk int32 135
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 noiseCode: [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)Quotehttp://gs.flir.com/surveillance-products/surveillance-technology/imaging-technotes/IR_Technology_Parameters (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)
if you simple delete the SuperResDenoise.plist nothing changes :(
I think devilmastah can better look inside the code of the flir one app
#
# 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
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:
.caps.config.image.settings.IRwidth int32 320
.caps.config.image.settings.IRheight int32 240 :(
mac osx
// verbose: g++ -v
$ g++ *.cpp -o crc01
$ ./crc01
Usage: ./crc01 infile.txt
// 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
EzCRC01
I took the liberty and made a simplified version of CRC01 - called EzCRC01
Just extract the attached zip archive, doubleclick EzCRC01.exe and follow the on screen instructions
edit3: To complete the process your e8.conf (lowercase "e" important) needs to be placed on the camera (via .FIF or RNDIS+FTP) - then cold boot your cam (battery removal)
It's intended as supplement to Mikes files and as a codebase for an in-place-crc01-updater.
EDIT2: Replaced with static version (64 bit)
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 :)Do you have source code of this Flir's MSX implementation or only make changes to some app config files to tweak its parameters?
Do you have source code of this Flir's MSX implementation or only make changes to some app config files to tweak its parameters?
Probably DFT will do the job in my OpenCV based Seek Thermal app, but it would be nice to see code how Flir makes this fusion of IR & visual in their products >:D
Just noticed the Flir lepton page is now showing a 25 deg lens option (presumably as used in the security camera product) and a shutter (as used in TG165)
Datasheet TG165:
Saved Image Format: Bitmap (BMP) Image with Temperature and EmissivityNow the nice thing, i removed the file and made some pictures, see the attatchment, right onces are without the file!
(https://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/?action=dlattach;attach=119300;image)
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.
Flir MSX it's simple, see my IM scripts hereJust looking into this flir.php from zip'ed flir-scriptV3.zip and it looks like there is only one input file:
-i ir_file.jpg flir radiometric image
but there is attached real image and a few thermal ones-in one of them those contours from visual already applied, but how real visual light image is passed to this program to make MSX like Ir & visual fusion? :-//exec($convert." raw.png -fx \"($B/ln($R1/($R2*(65535*u+$O))+$F)-$Smin)/$Sdelta\" ir.png");
...
if ( !isset($options['msx']) && !isset($options['shade']) )
{
exec($convert." ir.png $crop +repage ".$resize." $pal -clut embedded.png +swap -gravity Center -geometry $geometrie -compose over -composite -background ".$frame_color." -flatten +matte gradient.png -gravity East +append ".$destimg);
}else{
$cropx=$resizepercent*$exif[0]['RawThermalImageWidth']/100;
$cropy=$resizepercent*$exif[0]['RawThermalImageHeight']/100;
// $escape: bash/win have different brackets
if ( isset($options['msx']) )
{
// high pass to real image and crop to IR size
exec($convert." embedded.png -gravity center -crop {$cropx}x{$cropy}{$geometrie} $escape( -clone 0 -blur 0x3 $escape) -compose mathematics -define compose:args=0,-1,+1,0.5 -composite -colorspace gray -sharpen 0x3 -level 30%,70%! embedded1.png");
}else{
// shade filter to real image and crop to IR size
exec($convert." embedded.png -gravity center -crop {$cropx}x{$cropy}{$geometrie} -auto-level -shade 45x30 -auto-level embedded1.png");
$gamma=exec($convert." embedded1.png -format \"%[fx:mean]\" info:");
$gamma=log($gamma)/log(0.5);
exec($convert." embedded1.png -gamma $gamma embedded1.png");
}
// overlay real with IR
exec($convert." ir.png ".$resize." $pal -clut embedded1.png +swap -compose overlay -composite ir2.png");
echo "\n";
#echo($convert." ir.png $crop +repage ".$resize." $pal -clut embedded1.png +swap -gravity Center -geometry $geometrie -compose overlay -composite ".$destimg);
exec($convert." embedded.png ir2.png -gravity Center -geometry $geometrie -compose over -composite -background ".$frame_color." -flatten +matte gradient.png -gravity East +append ".$destimg);
}
convert real.png ( -clone 0 -blur 0x3 ) -compose mathematics -define compose:args=0,-1,+1,0.5 -composite -colorspace gray -sharpen 0x3 1.jpg
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.
chmod 777 SuperResDenoise.plist
mv SuperResDenoise.plist SuperResDenoise.bak
rm SuperResDenoise.bakthen I rebooted the Iphone and took 10 images with the Flir One App without SuperResDenoise.plist>convert -define png:swap-bytes=on *.png -set filename:fname R%t +adjoin %[filename:fname].png
>identify -verbose R_*.png | grep -n4 statist | grep max | C:\util\GnuWin32\bin\sort -k 3 | tail -n 1
230- max: 13145 (0.20058)
>identify -verbose R_*.png | grep -n3 statist | grep min | C:\util\GnuWin32\bin\sort -k 3 | head -n 1
1889- min: 12895 (0.196765)
>convert R_*.png -level 12850,13250 -resize 320x -set filename:fname "S%t" +adjoin "%[filename:fname].png"
>montage SR*.png -tile 1x1 -geometry +0+0 A-Superes.gif(https://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/?action=dlattach;attach=119427;image):palm: Dear Mr devilmastah , clutch can't crack flir one app “error: Cannot crack ARMV7 portion of fat binary. error: Could not crack binary Failed. " and the data of original rosebud can't match your description.
:palm: Dear Mr devilmastah , clutch can't crack flir one app “error: Cannot crack ARMV7 portion of fat binary. error: Could not crack binary Failed. " and the data of original rosebud can't match your description.
What ios version are you on? And which version of clutch, i use version 1.4.7 on ios 7.1.2.
Ios 8 changed a lot and clutch is broken on 8 or higher!
@Tomas,
Maybe it sees the difference because my app is fully decrypted and all files are decrypted, i see a huge difference and also see difference when changing values in tha SuperResDenoise. It also reads that file in the app.
What do you do in flir tools for your pictures, mine where just standard pictures with the msx turned off ?
General:
Has anybody upgraded the firmware?
If yes are there changes?
@devilmastah temperature range unlocked ! thank you very much.
I upgraded the firmware in my Flir One, and i don't really notice any difference in operation.
@devilmastah temperature range unlocked ! thank you very much.
Lepton sensor electron microscope images:
Flir Lepton electron microscope images (https://www.youtube.com/watch?v=ny17r03uj9Y#ws)
Flir App delivers the new Flir One Firmware : 1.0.10
Thanks for the reply. The paper shows that a burn will register a surface temperature at 30C compared to 36 for unburnt skin. They compared the temperature profiles between deeper burns and more superficial burns, and the difference is of the order of 1C. Obviously, the greater the sensitivity, the greater the chances of detecting smaller differences. Unfortunately the FLIR SC660 is a bit out of my price range.
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 One => Lens FOL 2 (80x60)
(https://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/?action=dlattach;attach=118925;image)
Thanks. The 'fuzziness' of the image is partly due to the (low) resolution?
Thanks. It's all compromises, at the moment I'll take the FLIR ONE over the SEEK because the sensitivity (0.1vs 0.5C) seems more important to me. I'm considering the Therm-App too though even at it's special price of 939 it's the price of about 4 FLIR ONEs.
Thanks. I can't seem to see the images that the guy (Pantheron) posted, the links are broken for me. Hmm choices choices.
I'm going to try a FLIR one first, and then maybe try either the therm-app or thermal expert. Thanks all.This post from earlier in the thread my be interesting: https://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/msg553249/#msg553249 (https://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/msg553249/#msg553249)
The sdk app has crop factor switch.... the FlirOne app makes only cropped images
If you unplug the Flir One and then start the SDK.app then all simulation images are uncropped.
If you plug in the Flir One then the simulation get the config values from the real camera and simulation images are cropped!!
see attachments (images from SDK simulation):
- both images from simulator loaded in FlirTools.app to shrink the file size
- very crazy: FlirTools for Android resize the image to the crop factor
(https://www.eevblog.com/forum/testgear/actual-resolution-of-flir-one-v2/?action=dlattach;attach=181210;image) (https://www.eevblog.com/forum/testgear/actual-resolution-of-flir-one-v2/?action=dlattach;attach=181212;image)
see the difference in image size
The Flir1G2 give us a cropped image of RAW sensor!!
You can simple test it with the Flir One SDK. There is a sample app (compile it with Android Studio) which show you the real sensor image without fake noise etc.
select "Thermal Linear Flux 14 Bit Image"
As attachment two images from my notebook:
(1) a flir radiometric image with the FlirOne.app (= SDK)
(https://www.eevblog.com/forum/testgear/actual-resolution-of-flir-one-v2/?action=dlattach;attach=180948;image)
(2) and at the same position two screenshots from my android device
(https://www.eevblog.com/forum/testgear/actual-resolution-of-flir-one-v2/?action=dlattach;attach=180958;image)(https://www.eevblog.com/forum/testgear/actual-resolution-of-flir-one-v2/?action=dlattach;attach=180960;image)
Look at the keyboard and you see the difference in field of view (FOV) and thermal resolution!!
an interesting detail:
Inside the android sdk app (see post above) there is an simulator which works without a real FlirOne.
http://www.file-upload.net/download-11032220/FlirOneSDK.apk.html (http://www.file-upload.net/download-11032220/FlirOneSDK.apk.html)
The images for the simulator are real Lepton Sensor (raw) USB frames on which you can switch the view between large FOV "Thermal Linear Flux 14 Bit Image" and the cropped Flir "Thermal Image"
You can import the images with PS / Open as ... "Photoshop Raw *.RAW"
see PS screenshot (it's a rotated coffee cup)
(https://www.eevblog.com/forum/testgear/actual-resolution-of-flir-one-v2/?action=dlattach;attach=181138;image)
Here you can download a working SDK sample with the extracted java.class (see my post above)
see path FLIROneSDKBundle\FLIRONEExampleApplication\app\src\main\java\com\flir\flironesdk\usb
have fun
http://www.file-upload.net/download-11040066/FLIROneSDKBundle04-Basis.zip.html (http://www.file-upload.net/download-11040066/FLIROneSDKBundle04-Basis.zip.html)
ImageJ handles the raw Lepton images. ImageMagik should as well, but I wasn't able to get it to work.
$ convert -depth 16 -size 164x120 gray:00001-lep 00001-lep.png ;)Remarkable is the really short integration time. The rotating fan is sharp!
a good visible barrel distortion
Afterwards I rebuild with my old panorama script (see my footer) a real size 160x120 Lepton radiometric jpg (a Flir format).
Now that its been discovered that that the effective thermal resolution of the G2 is only 120x90 for the end user and not the advertised four times (160x120) of the original 80x60 G1 - how long before we see a class action lawsuit? :box:
after the sensitivity tests above it's time to make a resolution test
...
one square = one sensor pixel of Flir One G1
(https://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/?action=dlattach;attach=118913;image)
....
Thinking about it - this is likely the reason for the cropping. I would think it is a lot easier to MSX with a distortion free thermal image then try to "un-action cam" it then MSX it on the fly.Hm, the crop factor is to large for a good faith.
Give that we have seen 30Hz Lepton's out there
The thermal time constant should not be mixed up with "integration time" which is a property of photon detectors.
A microbolometer detector is constantly open to incoming radiation, and responds to changes with the time constant.
A photon detector collects energy only during the integration time which is a parameter that is set by calibration.
Code: [Select]{"type":"setOption","data":{"option":"autoFFC","value":true}}
{"type":"setOptionStatus","data":{"option":"autoFFC","value":-1}}
I now have the flir 1.0.9 firmware update pkg.I wonder what firmware 1.0.11 has now that it was released for the version 1 Flir One.
Lets see what that contains :-DD
now i just need to find a way to depkg the file
the Ipod touch 5th generation fits great in the Flir One hardcase
but the flir one app doesn't run
(https://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/?action=dlattach;attach=118963;image)
interesting, in November 2014 it doesn't work with an Ipod touch 5th Generationthe Ipod touch 5th generation fits great in the Flir One hardcase
but the flir one app doesn't run
Drifting of 8 random pixels in 1 hour. On some pixels temperature readings go up and on some readings go down.
As you can see thermal pixels need at least 20min to output stable readings.
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=178710;image)
Explanation of values:
Dark red line is a pixel which starts with value 7537 and ends with 6818. That is 719 less.
The FLIR One houses its own battery source that can power the device for more than 45 minutes of continuous use.
Time Spot FFC
0:25:50 19,6
0:25:51 19,6 Shutter
0:25:52 19,3 Shutter
0:25:53 19,1
0:25:54 19,0
0:25:55 19,1
0:25:56 19,3
0:25:57 19,5
0:25:58 19,7
0:25:59 19,9
0:26:00 20,1
0:26:01 20,2
0:26:02 20,3
0:26:03 20,3
0:26:04 20,3
0:26:05 20,3
0:26:06 20,3
0:26:07 20,3
0:26:08 20,3
0:26:09 20,2
0:26:10 20,2
0:26:11 20,1
0:26:12 20,0
0:26:13 20,0
0:26:14 19,9
0:26:15 19,9
0:26:16 19,8
0:26:17 19,7
0:26:18 19,7
0:26:19 19,7
0:26:20 19,7
0:26:21 19,6
0:26:22 19,6
0:26:23 19,6
0:26:24 19,6
0:26:25 19,6
0:26:26 19,6
0:26:27 19,5
0:26:28 19,5
0:26:29 19,5
0:26:30 19,4
0:26:31 19,4
0:26:32 19,4
0:26:33 19,4
0:26:34 19,4
0:26:35 19,4
0:26:36 19,4
0:26:37 19,4
0:26:38 19,4
0:26:39 19,5
0:26:40 19,5
0:26:41 19,5
0:26:42 19,4
0:26:43 19,5
0:26:44 19,4
0:26:45 19,4
0:26:46 19,3
0:26:47 19,3
0:26:48 19,5
0:26:49 19,4
0:26:50 19,5
0:26:51 19,5
0:26:52 19,4
0:26:53 19,4
0:26:54 19,5
0:26:55 19,4
0:26:56 19,4
0:26:57 19,5
0:26:58 19,5
0:26:59 19,5
0:27:00 19,5
0:27:01 19,4
0:27:02 19,4
0:27:03 19,5
0:27:04 19,5
0:27:05 19,5
0:27:06 19,5
0:27:07 19,5
0:27:08 19,6
0:27:09 19,6
0:27:10 19,6
0:27:11 19,6
0:27:12 19,7
0:27:13 19,7
0:27:14 19,6
0:27:15 19,6
0:27:16 19,6
0:27:17 19,7
0:27:18 19,6
0:27:19 19,6
0:27:20 19,6
0:27:21 19,6
0:27:22 19,7
0:27:23 19,7
0:27:24 19,7
0:27:25 19,7
0:27:26 19,7
0:27:27 19,7
0:27:28 19,6
0:27:29 19,6
0:27:30 19,6
0:27:31 19,8
0:27:32 19,7
0:27:33 19,7
0:27:34 19,7
0:27:35 19,7
0:27:36 19,7
0:27:37 19,6
0:27:38 19,6
0:27:39 19,6
0:27:40 19,5
0:27:41 19,6
0:27:42 19,6
0:27:43 19,6
0:27:44 19,7
0:27:45 19,7
0:27:46 19,6
0:27:47 19,6
0:27:48 19,6
0:27:49 19,6
0:27:50 19,6
0:27:51 19,6
0:27:52 19,6
0:27:53 19,6
0:27:54 19,6
0:27:55 19,7
0:27:56 19,7
0:27:57 19,6
0:27:58 19,7
0:27:59 19,6
0:28:00 19,6
0:28:01 19,7
0:28:02 19,7
0:28:03 19,7
0:28:04 19,7
0:28:05 19,7
0:28:06 19,7
0:28:07 19,6 Shutter
0:28:08 19,4 Shutter
0:28:09 19,0
0:28:10 18,9 ....
I now have the flir 1.0.9 firmware update pkg.
Lets see what that contains :-DD
now i just need to find a way to depkg the file
it's for Flir One Gen 1 for Iphone
I tried to change the optics . An example can be found here. In T-10 using the Lepton sensor. https://youtu.be/gUOvAg0dGxY....
another question is: has anyone stick a better lens in front of the sensor to get much better results? :D
Yes, after a FW update the F1G1 charged the Iphone after full charging his own batterry.
But the Iphone has not a USB connector.
We know. that the Android Phone work with a plugged in F1G2 as USB host.
And you can't load a USB host by following the USB specification.
But some USB host controllers in Android phones ignores the specification.
Therefore it's sometimes possible with this steps:
- use a non specification Y-USB-cable
- load the phone over USB (USB controller goes in slave mode) over the first cable
- now plug in the F1G2 in the second cable
- the USB controller goes in host mode, but the charge controller is furthermore connected to the 5V-USB power
this is completely outside the USB specification