2014: the year of thermal imaging?Clearly - Flir is probably the only contender for this year's Christmas gadget market, but by next year it could be a bloodbath at the low end though.
Hey FLIR have been giving thermal cameras away at press conferences !Very cute - maybe start emailing a few journos to make an offer...!
Take a look here:
http://www.sourcesecurity.com/news/articles/co-9756-ga-co-5188-ga-sb.14647.html (http://www.sourcesecurity.com/news/articles/co-9756-ga-co-5188-ga-sb.14647.html)
A small Lepton based demo camera !
Clearly - Flir is probably the only contender for this year's Christmas gadget market, but by next year it could be a bloodbath at the low end though.
They've put new video on YT:resolution & framerate on that looks somewhat higher than what the product is likely to have - I bet they used a high-end Flir for that video
https://www.youtube.com/watch?v=lRjOsdtZnL4 (https://www.youtube.com/watch?v=lRjOsdtZnL4)
They've put new video on YT:resolution & framerate on that looks somewhat higher than what the product is likely to have - I bet they used a high-end Flir for that video
https://www.youtube.com/watch?v=lRjOsdtZnL4 (https://www.youtube.com/watch?v=lRjOsdtZnL4)
Really disappointing that they don't ship to Europe. |O
(I tried to order trough shipito.com but order on thermal.com didn't go trough because my credit card address was different from shipping address...)
Thank for your order! Due to the extremely high demand for our products, we are currently experiencing a 5-7 business delay in the shipment of your order. In order to minimize transit times, items may ship separately from multiple locations, and all shipped items may not be reflected on this confirmation.
however it is a pitty it works only under Android?
The other interesting aspect is at what point will the US manufacturers manage to persuade their leaders that restrictions on higher framerates are harming business more than they are protecting anyone from anything.
Applications like firefighting need a decent framerate, and once the kit becomes sufficiently small and cheap it will be impractical to control.
Almost certainly a bogus listing
Totally true. I found someone selling on ALI Express last week - "high res" 640x480 sensor assembly, 70FPS, "only" :) $900 each. 10 were available.
I am not familiar with Chinese market. Would they create bogus listing just to check the demand? Does it mean they pretty much ready to start shipping or may not even close to it? This one looks like a real deal to me for example: http://hbjir.en.alibaba.com/product/618597547-214483688/Infrared_IR_Thermal_imaging_Camera_Core_Module.html (http://hbjir.en.alibaba.com/product/618597547-214483688/Infrared_IR_Thermal_imaging_Camera_Core_Module.html) or http://hbjir.en.alibaba.com/product/637449470-214483688/zoom_camera_module.html (http://hbjir.en.alibaba.com/product/637449470-214483688/zoom_camera_module.html)Almost certainly a bogus listing
Totally true. I found someone selling on ALI Express last week - "high res" 640x480 sensor assembly, 70FPS, "only" :) $900 each. 10 were available.
The other interesting aspect is at what point will the US manufacturers manage to persuade their leaders that restrictions on higher framerates are harming business more than they are protecting anyone from anything.
Applications like firefighting need a decent framerate, and once the kit becomes sufficiently small and cheap it will be impractical to control.
Totally true. I found someone selling on ALI Express last week - "high res" 640x480 sensor assembly, 70FPS, "only" :) $900 each. 10 were available.
384×288 sensors at 50FPS are easily available - shipping worldwide. I am wondering if these can be overclocked to 60FPS. I searched last year - there were none for sell with these frame rates. I can only imagine what will be available next year! I think Chinese company that makes/sells them is called "JIR" ... .
http://www.alibaba.com/product-detail/M700-thermal-image-sensor-cheap-thermal_1899090531.html?s=p (http://www.alibaba.com/product-detail/M700-thermal-image-sensor-cheap-thermal_1899090531.html?s=p)
206x156 array, it's real, and only $199. This one could be a game changer.Probably it does not have any reliable calibration between frames like Flir, but is looks quite compact for some apps, however it is a pitty it works only under Android?
"Key features include a KMS (Kernel Mode Setting) enabled Linux kernel 3.10.x LTS, Wi-Fi support, battery status, V4l2 camera support, G-sensor, bluetooth, suspend, resume, audio though ALSA, and mouse wheel support."
however it is a pitty it works only under Android?IPhone as well, also $199.
About shipping of Seek Thermal module. This is from facebook: https://www.facebook.com/pages/Seek-Thermal/628554970550411 (https://www.facebook.com/pages/Seek-Thermal/628554970550411)
[user]when are you guys shipping?
[Seek Thermal] Hi Dat, The cameras will ship when the apps go live in their respective app stores. We estimate that that will be 1-2 weeks for Android and shortly thereafter for iOS.
so that means any shipping option other then the standard isnt worth it :) unless you really want it the next day after they start shipping.
They do have an IPhone version as well, same price $199 and it should work even with the new IPhones not stuck to the 5s like the Flir module.I'd like to use this thermal camera just like other cameras under Linux or better Linux based wiki: Robot Operating System (ROS) (http://en.wikipedia.org/wiki/Robot_Operating_System), so it is interesting if this Android version could be detected under Linux and if I coud be able to catch its output frames using OpenCV like in video below (FLIR with ROS module) it would be nice, while I do not like even Android, while it is not fully open source OS.
anyways, looks like their noise reduction isn't as advanced as the Flir (One) Lepton Mike was showing off.I think It might depend what that app does inside software and what alghorithms were used, while Flir might use diffrent ones and maybe has much better hardware with black body built in calibration between frames.
"The phone or tablet must have support for USB On The Go, however, or the camera dongle won't work"Lets see what guys from Seek Thermal support will say about running this thing under Linux or ROS control, while FLIR have such support as we could see in video above ;)
Lets see what guys from Seek Thermal support will say about running this thing under Linux or ROS control, while FLIR have such support as we could see in video above ;)I suspect that to minimise costs, Seek will rely a lot more heavily on software in the host to do processing than the Flir One does, but as it uses USB, it should at least be possible to extract the raw sensor data.
I would suggest you sign up for the Seek developer SDK, I ordered the camera and signed up for SDK access but no news on either.the software they've shown so far seems to going out of its way to avoid looking like Flir's MSX. I'm sure people will write apps to remedy that...!
I know they are waiting for the google app store to have the app before they ship and the ETA is 2 weeks. I would think the SDK will follow later.
I have a TrimSlice with a Tegra 2 that can run both Android and different flavors of Linux, including L4T (Linux for Tegra) I might have a play if I receive the SDK.
But a Jetson K1 devkit might be better (Linux only right now) because it has 192 CUDA cores that can be used for OpenCV.
But a Jetson K1 devkit might be better (Linux only right now) because it has 192 CUDA cores that can be used for OpenCV.It looks really nity and I can use this thing in one of the projects even without thermal camera, while with its CUDA accelearted OpenCV I will be able probably detect objects in the scene using cheap classic camera and make movements detections in real time :-+
iPhone 6 isn’t simply bigger — it’s better in every way. Larger, yet dramatically thinner. More powerful, but remarkably power efficient.It looks like crappy toy for childrens to play old fashion tetris ;D
That is what those Chinese sensors are good for IMHO - see through Oculus Rift kind of gadget. If sensor can handle 60FPS - there will be enough frame rate to switch between left/right eye and enabling stereo vision. I am not sure if it is possible to switch between two lenses using some kind of liquid Crystal shutter device,Nope
but I assume same technology that used in 3D glasses can be used here. I think thermal vision sensors are still too big and heavy to fit two in one headset.No, just rather expensive
As many here already pointed out if all components are sourced in China there is no need to worry about stupid export restrictions - ship anywhere you want around the globe.I'd be surprised if China didn't have similar restrictions
Well, Nvidia does it pretty well. I have them at work. http://en.wikipedia.org/wiki/Active_shutter_3D_system (http://en.wikipedia.org/wiki/Active_shutter_3D_system) so why not do it in reverse ?That is what those Chinese sensors are good for IMHO - see through Oculus Rift kind of gadget. If sensor can handle 60FPS - there will be enough frame rate to switch between left/right eye and enabling stereo vision. I am not sure if it is possible to switch between two lenses using some kind of liquid Crystal shutter device,Nope
Well, Nvidia does it pretty well. I have them at work. http://en.wikipedia.org/wiki/Active_shutter_3D_system (http://en.wikipedia.org/wiki/Active_shutter_3D_system) so why not do it in reverse ?That is what those Chinese sensors are good for IMHO - see through Oculus Rift kind of gadget. If sensor can handle 60FPS - there will be enough frame rate to switch between left/right eye and enabling stereo vision. I am not sure if it is possible to switch between two lenses using some kind of liquid Crystal shutter device,Nope
Good point, I did not think of that. So common liquid crystal shutter will be transparent to IR? I cannot seem to find good source in this. What about DMD? I mean Digital Micro Mirror Devices? (http://www.ti.com/lsds/ti/analog/dlp/overview.page (http://www.ti.com/lsds/ti/analog/dlp/overview.page) Maybe that is the solution for switching between lenses?
Good point, I did not think of that. So common liquid crystal shutter will be transparent to IR? I cannot seem to find good source in this. What about DMD? I mean Digital Micro Mirror Devices? (http://www.ti.com/lsds/ti/analog/dlp/overview.page (http://www.ti.com/lsds/ti/analog/dlp/overview.page) Maybe that is the solution for switching between lenses?
Well, Nvidia does it pretty well. I have them at work. http://en.wikipedia.org/wiki/Active_shutter_3D_system (http://en.wikipedia.org/wiki/Active_shutter_3D_system) so why not do it in reverse ?I will never ever wear active shutter 3D glasses, while only wiki: Polarized 3D system (http://en.wikipedia.org/wiki/Polarized_3D_system) makes sense in my opinion.
It makes a constant clicking noise as it runs. That’s the sound of the thermal imager automatically recalibrating itself
Ordered another just now, order # 309X.
Six days ago my last order was 79X.
The seem so be some progress...
Twitter:
we hope to have approval for the app store by EOD today and our first shipments are leaving the factory right now!
---
We will likely be taking orders in US$ from the EU by next week!
---
BIG DAY! The first Seek thermal Android cameras are on the dock and ready to ship to customers! #seetheheat #thermal
---
https://twitter.com/search?f=realtime&q=seekthermal&src=typd
Link to app:
https://play.google.com/store/apps/details?id=com.tyriansystems.SeekThermal
It doesn't support my Nvidia Shield, but it does support my wife's S4, So I guess she will have to go to work without her phone :)
I ordered one this morning and just installed the app on my HTC DNA phone. I ran it and it is asking me for my login info. Gave it the same thing I put in the web site and it is not working! Let's hope they fix this.
Link to app:
https://play.google.com/store/apps/details?id=com.tyriansystems.SeekThermal (https://play.google.com/store/apps/details?id=com.tyriansystems.SeekThermal)
It doesn't support my Nvidia Shield, but it does support my wife's S4, So I guess she will have to go to work without her phone :)
Just tried installing and it says "This app is not available in your country".
I tried using Market Helper to make it think it was in US but same thing.
I know nothing about Android - is it be possible for someone in the US to download it to a file that I could install outside of the Google Play store?
WARN: iAP: ERROR: Halting at ms
,... Link Init
Unable to parse iAP Packet - Invalid packet length (expected at least 9 bytes)
Raw Packet - Unable to parse iAP Packet - Invalid Start-Of-Packet (expected 0xFF 0x5A)
Ctrl= SYN +ACK +EAK +RST +SLP PAN= SID= (Invalid)
Unable to parse iAP Packet Data Payload - Invalid payload size
Payload Checksum= RequestAuthenticationCertificate RequestAuthenticationChallengeResponse AuthenticationResponse AuthenticationFailed AuthenticationSucceeded StartIdentification IdentificationInformation IdentificationAccepted IdentificationRejected CancelIdentification IdentificationInformationUpdate StartExternalAcessoryProtocolSession StopExternalAcessoryProtocolSession StartPowerUpdates PowerUpdate StopPowerUpdates Unexpected session parameter size - Expected at least 4 bytes
ParamID= Len= Poorly structured session packet - Unable to continue parsing.
PowerMgrState_SlowSystemInitialization - PowerMgrState_EnumeratingUSB - PowerMgrState_ResponsiveSleep - PowerMgrState_SleepMode - PowerMgrState_RunMode - Performing system reset
WDT Warning
WDT Tiimeout
Setting up delayed event
ÿU îBad packet header
com.thermal.SeekThermal Target Platform: Received iAP Link Init echo from host. Platform determined to be iOS.
Invalid packet
ÿUÿÿÿÿÿÿÿÿÿÿÿÿëTarget Platform: iAP IC not responding. Guessing Windows.
Cmd= (Unknown request)
Request handler returned with error
Request has no handler
USBD Suspend Event
USBD Resume Event
USBD Configure Event
USBD Reset Event
Implementation Error - Not enough memory for USB stack
Reseting EP1 IN
Implementation Error - Invalid queue count
Sending queued IN request
iAP To Dev
IN request has timed out - Resetting EP1 IN
Implementation Error - USBD failure
Waiting for packet ACK
iAP To Acc
Previous ExIAP packet was ACK'd
Some other packet was ACK'd!
iAP Acc - INVALID! Ignoring
USB OUT data received - More expected
Pending USB OUT request
BytesQueued= Ran out of buffer queue items
Buffering IN request PSN= Invalid request size - Sending error response - Unknown request Implementation Error - SUBI_LastError not set by VendorClass_HandleInRequest
Implementation Error - IN Request handler failed but there's no way to inform the host. Stalling EP (may cause app lock-up).
Implementation Error - SUBI_LastError not set by VendorClass_HandleOutRequest
Implementation Error - No IN or OUT request handler for request
` ÿ 8œ*** iAP Packet To Accessory (Pending) ***
USB OUT data received (Pending) - More expected
S1€Ý ·JùäÅ”¾ÔInvalid image processing mode
Cannot toggle shutter when in RUN and CHOP1/CHOP2/CSATIME
Invalid parameter
Invalid parameter 0
Invalid parameter 1
Invalid parameter 2
GetFirmwareInfo index= Invalid firmware information index
Invalid data size
Invalid attempt to dynamically switch target platform
Invalid data page
Canceling queued IN requests. Previous image was likely interrupted. IMPLEMENTATION ERROR!
Invalid memory region
Invalid backdoor key
Erasing flash at Flash erase failed
Programming flash at Flash write failed
Flash program validation failure
Updating RDAC in RAM
Updating VDAC in RAM
Updating CMD in RAM
Updating factory settings
Done
Invalid shutter polarity
Erasing flash sector at Programming flash sector at Flash write failure
Done Invalid checksum
Writing memory region - New Image= Invalid image
Received image is a valid firmware image
Flash erase failure
Programming firmware image
Image programming verified
Erasing image select flash sector at Writing new image select flash sector
Image select flash write verified
Programming image select flash sector
Invalid image size
Canceling queued IN requests. IMPLEMENTATION ERROR!
Request does not have a defined IN EP action handler
Request sent during FW init
), Time= Request not served in SLEEP mode
Request not served in RUN mode
Dir=IN, Req= ( does not have a defined OUT EP action handler
Dir=OUT, Req= Ignoring request to non-zero interface
Target Platform: Received vendor class request. Guessing Windows.
GetErrorCode GetChipID ToggleShutter SetShutterPolarity GetShutterPolarity SetBITDataFeatures GetBITData SetOperationMode GetOperationMode SetIPMode GetIPMode SetDataPage GetDataPage SetCurrentCmdFeatures SetCurrentCmd GetCurrentCmd SetDefaultCmdFeatures SetFeaturedFlashData GetDefaultCmd SetVDACFeatures GetVDAC SetRDACFeatures SetRDAC GetRDAC GetFirmwareInfo GetFeaturedFirmwareData SetFeaturedFirmwareData CompleteMemoryUpgrade BeginFirmwareUpgrade ImageData TargetPlatform SetFirmwareInfoFeatures SetFactorySettingsFeatures GetFeaturedData ResetDevice SetRamDataFeatures ---| HardFault |---
Time: [Stack Frame]
R0= R1= R2= R3= R12= LR= PC= PSR= [FSR/FAR]
CFSR= HFSR= DFSR= AFSR= [Misc]
MMFAR= BFAR= LR/EXC_RETURN= Implementation Error
StartStreaming
ResetState
StopStreaming
Processing is not keeping up with data TX. Buffer overrun is imminent.
Invalid frame header: Sync Lost: Restarting sensor interface
Unexpected frame index number. Expected but got Inconsistent Chip ID
6nStarting sensor comm check
Sensor comm check complete
Initializing USB system
Waiting for USB enumeration on Port 0...
BETA UNIT Canceling all queued USB requests
Reseting all OUT and IN endpoints
Entering SLEEP
Entering RUN mode
Sensor is not responding
USB connected
USB connection removed
Seek Thermal PIR206 Firmware (RELEASE-IMAGE)
------------------------------------
Target Platform: Guessing IOS
$ @ @ ` ¦ À Ã à à @@ BB bb ‚‚ ¢¢ ÂÂ ââ ""
## i%ÿÿÐè Thermal Camera LW-AAA Seek Thermal, Inc. ABC123456789 1.0.0.0
99.28
® ®ê ® d ( iAP2 -
com.thermal.pir206.1 ( com.thermal.SeekThermal en
en S e e k T h e r m a l ,P I R 2 0 6 T h e r m a l C a m e r a i A P I n t e r f a c e *c o m . t h e r m a l . p i r 2 0 6 . 1
To be honest I did send mike a pm with the link one hour earlier than your post but chickened out making it public.
Seems like the tryansystems folders are the most interesting ones :)
Possible data format samples?
Link to app:I'm not Nvidia Shield user yet, but found something like this and it looks like in the case of ethernet adapter connection order matters?
https://play.google.com/store/apps/details?id=com.tyriansystems.SeekThermal (https://play.google.com/store/apps/details?id=com.tyriansystems.SeekThermal)
It doesn't support my Nvidia Shield, but it does support my wife's S4, So I guess she will have to go to work without her phone :)
"Plug in the Charging Cable first (the controller brick and cable that came with your SHIELD are recommended).Maybe something similar with this "Shit Thermal" :palm:
Then plug in the USB to Ethernet Adapter"
Just tried installing and it says "This app is not available in your country".I do not know how this Google Play works but maybe they detect someones IP WHEN you download app and modify somehow this apk on the fly? So they let you download this, but then during instalation they display this stupid country message?
I know nothing about Android - is it be possible for someone in the US to download it to a file that I could install outside of the Google Play store?For example this VPN http://www.strongvpn.com/ (http://www.strongvpn.com/) can teleport you to US with speed of light easy :-DD
I fired up VisiQuest (signal processing software) and imported the raw data as unsigned short
156 width and 206 height, then equalized the image and scale it by 3 to make it 3 times bigger
This is 000098.data 3 times bigger than it is.
The thing is that 156 x 206 x 2 bytes is 64272 bytes, and the file is 64,896 bytes So there are an extra 624 bytes there, so an extra 3 rows of data (159x206?) but it seems there are some markers within the data.
To be honest I did send mike a pm with the link one hour earlier than your post but chickened out making it public.Thanks - installed OK after second attempt!
Seems like the tryansystems folders are the most interesting ones :)
So the image format is 208 by 156 unsigned short (2 bytes per pixel)CRC perhaps.
There are 2 extra pixels that are not part of the sensor, here is image
This is the negative of the one above
(http://www.miguelvp.com/ForMike/Animation2.gif)
Thanks. Figured it out after posting that message :). Should have realized they were using a third-party ecommerce system.I ordered one this morning and just installed the app on my HTC DNA phone. I ran it and it is asking me for my login info. Gave it the same thing I put in the web site and it is not working! Let's hope they fix this.
Your account associated with your purchase is not the one associated with the application. You have to register.
I'm not sure this is a thermal image, I should invert it, can the water reflect heat?Why not to use oryginal app and grab those thermal images than compare with raw data?
BTW: This movie is from images catched at night or with day light present?Probably daylight due to reflection from water, though could be reflection from clouds
OK, but are you talking about those simulation raw data from this folder (Linux unzip extracts easy everything of course >:D)BTW: This movie is from images catched at night or with day light present?Probably daylight due to reflection from water, though could be reflection from clouds
$ ./seek_thermal_v1.0.0.apk/com/tyriansystems/Seekware/simulation/rawor you captured I mean used this thermal camera and working on data obtained from real world?
libSeekware.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not strippedThere are two versions of libSeekware.so in folders: ./seek_thermal_v1.0.0.apk/lib/armeabi and ./seek_thermal_v1.0.0.apk/lib/armeabi-v7a .
$ cat libSeekware.so |bin2hex >armeabi_libSeekware.so.txtLUT calls are defined there to native calls from Java
.plt:00007088 ; File Name : C:\Users\Boris\Desktop\seek_thermal\lib\armeabi-v7a\libSeekware.so
.plt:00007088 ; Format : ELF for ARM (Shared object)
.plt:00007088 ; Needed Library 'libstdc++.so'
.plt:00007088 ; Needed Library 'libm.so'
.plt:00007088 ; Needed Library 'libc.so'
.plt:00007088 ; Needed Library 'libdl.so'
.plt:00007088 ; Shared Name 'libSeekware.so'
.plt:00007088 ;
.plt:00007088 ; EABI version: 5
.plt:00007088 ;
.plt:00007088 ; Source File : 'crtbegin_so.c'
.plt:00007088 ; Source File : 'SeekwareNativeLib.c'
.plt:00007088 ; Source File : 'luts.c'
.plt:00007088 ; Source File : 'colorize.cpp'
.plt:00007088 ; Source File : 'palettes.cpp'
.plt:00007088 ; Source File : 'temperature.cpp'
.plt:00007088 ; Source File : 'badpix_corr.cpp'
.plt:00007088 ; Source File : 'badpix_detect.cpp'
.plt:00007088 ; Source File : 'gain_coef.cpp'
.plt:00007088 ; Source File : 'gain_corr.cpp'
.plt:00007088 ; Source File : 'median_5.cpp'
.plt:00007088 ; Source File : 'median_avg.cpp'
.plt:00007088 ; Source File : 'offset.cpp'
.plt:00007088 ; Source File : 'temp_coef.cpp'
.plt:00007088 ; Source File : 'temp_corr.cpp'
.plt:00007088 ; Source File : 'thermography.cpp'
.plt:00007088 ; Source File : 'alpf.cpp'
.plt:00007088 ; Source File : 'peaklimit.cpp'
.plt:00007088 ; Source File : 'asbnuc.cpp'
.plt:00007088 ; Source File : 'bilateral.cpp'
.plt:00007088 ; Source File : 'kalman.cpp'
.plt:00007088 ; Source File : 'median.cpp'
.plt:00007088 ; Source File : 'median_gain.cpp'
.plt:00007088 ; Source File : 'median_stack.cpp'
.plt:00007088 ; Source File : 'rc-offset.cpp'
.plt:00007088 ; Source File : 'bclahe.cpp'
.plt:00007088 ; Source File : 'imageprocess.cpp'
.plt:00007088 ; Source File : 'del_opv.cc'
.plt:00007088 ; Source File : 'new_opv.cc'
.plt:00007088 ; Source File : 'bad_alloc.cc'
.plt:00007088 ; Source File : 'del_op.cc'
.plt:00007088 ; Source File : 'eh_arm.cc'
.plt:00007088 ; Source File : 'eh_aux_runtime.cc'
.plt:00007088 ; Source File : 'eh_call.cc'
.plt:00007088 ; Source File : 'eh_catch.cc'
.plt:00007088 ; Source File : 'eh_exception.cc'
.plt:00007088 ; Source File : 'eh_globals.cc'
.plt:00007088 ; Source File : 'eh_personality.cc'
.plt:00007088 ; Source File : 'eh_terminate.cc'
.plt:00007088 ; Source File : 'eh_throw.cc'
.plt:00007088 ; Source File : 'eh_unex_handler.cc'
.plt:00007088 ; Source File : 'fundamental_type_info.cc'
.plt:00007088 ; Source File : 'new_op.cc'
.plt:00007088 ; Source File : 'pointer_type_info.cc'
.plt:00007088 ; Source File : 'pure.cc'
.plt:00007088 ; Source File : 'si_class_type_info.cc'
.plt:00007088 ; Source File : 'tinfo.cc'
.plt:00007088 ; Source File : 'atexit_arm.cc'
.plt:00007088 ; Source File : 'bad_cast.cc'
.plt:00007088 ; Source File : 'bad_typeid.cc'
.plt:00007088 ; Source File : 'class_type_info.cc'
.plt:00007088 ; Source File : 'eh_alloc.cc'
using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
StreamReader sr = new StreamReader(@"C:\temp\000010.data", ASCIIEncoding.Default);
byte[] bytes = sr.CurrentEncoding.GetBytes(sr.ReadToEnd());
UInt16[] vals = new UInt16[32448];
int[] ivals = new int[32448];
for (int i = 0; i < 32448; i++)//64896
{
vals[i] = BitConverter.ToUInt16(bytes, i * 2);
if (vals[i] > 9000 || vals[i] < 7000) vals[i] = 8223;//outside this range is checksum?; max: 8632, min:7814
ivals[i] = (vals[i] - 7814);
ivals[i] = (int)Math.Round(Convert.ToDouble(ivals[i]) / 3.17);
}
var target = new Bitmap(208, 156);
int ix = 0;
for (int x = 0; x < 156; ++x)
{
for (int y = 0; y < 208; ++y)
{
target.SetPixel(y, x, Color.FromArgb(ivals[ix], ivals[ix], ivals[ix]));
ix++;
}
}
pictureBox1.Image = target;
target.Save(Application.StartupPath + "\\img.png");
}
}
}
Seems they are doing a lot of filtering which is why all the public released shots are so blurry. The actual sensor data is quite good. This thing has potentialHow do you know that data is from one of their sensors? Could easily have been from something else, generated for testing before hardware was available.
Seems they are doing a lot of filtering which is why all the public released shots are so blurry. The actual sensor data is quite good. This thing has potentialHow do you know that data is from one of their sensors? Could easily have been from something else, generated for testing before hardware was available.
The Ebay listing is almost certainly a pre-order as there is no pic of the real thing, and shipping is estimated at 17-27 Oct
I now have Java source of the library. I can see the device startup sequence (series of USB SetFeature requests) and it may be possible to get this running on PC with this information. Contact me if you want it.
If it's of any relevance, the Flir palettes are defined as YUV - I have an excel doc somewhere that converts them to RGB
There is a man on the boat... :D
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=111501;image)
USB device (or at least beta) has VID 0x289D and PID 0x000F. Class/subclass 255 (Vendor specific):palm: Why didn't they use something like UVC? Do they really want vendor lock-in that much?
I really hope this is the actual sensor data, because the details are great.It will be interesting to see if I we make visual light photo in sunny day, convert to gray image, scale to this resolution and add some of those LUTs :-DD
Because they need to do a lot of processing to produce a visible image, so no particular reason to use a standard USB class.USB device (or at least beta) has VID 0x289D and PID 0x000F. Class/subclass 255 (Vendor specific):palm: Why didn't they use something like UVC? Do they really want vendor lock-in that much?
The fact that the boats ID is so clear would be very unusual unless it was directly heated !..or different emissivity - warm day, dark boat?
I have seen a lot of thermal imagery of vessels on water and sadly the image that you guys are manipulating does not look like a thermal image to my eyes. I am happy to be wrong but that boat is not displaying the thermal signiture that I would expect. The fact that the boats ID is so clear would be very unusual unless it was directly heated ! I have considered whether the boat is exposed to high levels of sunlight but it still looks wrong to me.
I have seen a lot of thermal imagery of vessels on water and sadly the image that you guys are manipulating does not look like a thermal image to my eyes. I am happy to be wrong but that boat is not displaying the thermal signiture that I would expect. The fact that the boats ID is so clear would be very unusual unless it was directly heated ! I have considered whether the boat is exposed to high levels of sunlight but it still looks wrong to me.
I was thinking that the images include a lot of near infrared in them lowering the far infrared contrast and making them look more like a visible light image.
This is more likely a dummy imagery converted from visible.Maybe they (Seek thermal) wanted to show something which will give you feeling of incredible accuracy and resolution of this thing to have more backers, while reality might be cold shower with blured imaginery which without aka Flir MSX additional visual image and good calibration will be difficult to understand what you see if environment ambient temperature and weather condition changes :-DD
Is it possible to add a Peltier cooler to an uncooled TIC for better imagery?
Is it possible to add a Peltier cooler to an uncooled TIC for better imagery?
I assume you would also have to make provisions to prevent condensation.
Good news! I just got mine from FedEx today (I had overnight shipping). Works well, minus a few bugs. Is anyone interested in me doing anything with it? Also, my order number was 39X, so they had at least 500 units shipped from my guess, more than like 1,000.
Good news! I just got mine from FedEx today (I had overnight shipping). Works well, minus a few bugs. Is anyone interested in me doing anything with it? Also, my order number was 39X, so they had at least 500 units shipped from my guess, more than like 1,000.
Did you get a shipping email, or did it just show up?
Good news! I just got mine from FedEx today (I had overnight shipping). Works well, minus a few bugs. Is anyone interested in me doing anything with it? Also, my order number was 39X, so they had at least 500 units shipped from my guess, more than like 1,000.
Did you get a shipping email, or did it just show up?
No shipping email and the website still says processing, so I was rather surprised to see it on my doorstep when I got home!
I could see them processing over night orders first, regardless of order number. Then following with standard by order number.
So the story goes that this ebay seller bought the unit for an incompatible phone and now he wants to gouge people for $750 on a $200 device.... ar*e ho*e. >:( He is free to sell it for whatever he can get though. Its a pity that people are so keen to turn a fast buck....kinda makes them look really greedy. That's life though and it is a free world. I will be interested to see what it sells for, if at all.A couple of Flir Ones Sold for around $500 each a couple of days ago, so I don't doubt it will sell, especially as he's offering international shipping.
Is it just me, or are the pictures a little blurry for the specs? The camera is supposed to have a 206 x 156 resolution, yet many sample images from 160 x 120 cameras of other brands seem much sharper.
Bummer... Since there still is no SEEK THERMAL iOS app in the Apple App Store, Seek obviously does not have any iOS cameras to ship yet. :-- It looks like I'm still out of luck for delivery any time soon, even with a low order number. :(I just hope they don't hold orders for both types til the Apple one is available - I ordered both in case they became available at different times but maybe this was a bad move...
I'm guessing they will probably tweet out dock arrival of the iOS devices like they did for the Android cameras on October 3rd.
Apple, you have failed me again... :palm:
Bummer... Since there still is no SEEK THERMAL iOS app in the Apple App Store, Seek obviously does not have any iOS cameras to ship yet. :-- It looks like I'm still out of luck for delivery any time soon, even with a low order number. :(I just hope they don't hold orders for both types til the Apple one is available - I ordered both in case they became available at different times but maybe this was a bad move...
I'm guessing they will probably tweet out dock arrival of the iOS devices like they did for the Android cameras on October 3rd.
Apple, you have failed me again... :palm:
It would be much better if they would map whole palette to current temp range in photo.Wouldnt you start getting some weird glowing effects across the whole image, as something heats up or cools down?
I just noticed something... If you look at dog image with iron palette.
They are only using small part of pallete.
It seems that software is mapping palette colors to predefined temperatures.
So on all images specific color represents the same temperature.
(http://i.gyazo.com/dd3ee3ff2b3e81956790de4bd6882e23.png)
It would be much better if they would map whole palette to current temp range in photo.
Then all photos would look more like this:
(http://gyazo.com/f5cb3faa30080590d5c933b5ba0fdb9d.png)
... I ordered both in case they became available at different times but maybe this was a bad move...
Mike, how did you order it to be shipped to the UK?Someone in the US is ordering & reshipping to me.
Brother at end of hallway (approx. 50 ft away from camera)This image when saved has .png extension and resolution 456x611, so it looks like gyazo.com where you downloaded oryginal image changed oryginal one :palm:
gyazo.com bac57cd16ac0bfd6ad58309e0f2d69f2.png
The camera is supposed to have a 206 x 156 resolution, yet many sample images from 160 x 120 cameras of other brands seem much sharper.This oryginal image had 206x156 resolution and RGB (3 bytes per pixel) ?
(%i2) float(611/456);
(%o2) 1.339912280701754
(%i3) float(206/156);
(%o3) 1.32051282051282
This oryginal image had 206x156 resolution and RGB (3 bytes per pixel) ?
...piece of history about Flir and the co-founder of Seek Thermal Bill Parrish describing a lawsuit from 2009...So it looks like that FLIR lost a lawsuit since they were:
http://caselaw.findlaw.com/ca-court-of-appeal/1229385.html (http://caselaw.findlaw.com/ca-court-of-appeal/1229385.html)
FLIR SYSTEMS, INC., et al., Plaintiffs and Appellants
William PARRISH et al., Defendants and Respondents
The judgment and order awarding respondents $1,641.216.78 attorney fees and costs are affirmed. (§?3426.4.) Respondents are awarded costs and attorney fees on appeal, in an amount to be determined by the trial court on noticed motion.
"Subjective bad faith may be inferred by evidence that appellants intended to cause unnecessary delay, filed the action to harass respondents, or harbored an improper motive."
"After quitting Indigo, Parrish learned that appellants were submitting patent applications on a packaging and manufacturing process that he had worked on. Parrish told Woolaway, FLIR's Chief Intellectual Property Officer, that the patent applications were not valid."
"Woolaway, who authored the patent applications, stated that the United States Patent & Trademark Office could go either way on the validity of the applications. Woolaway was concerned about Parrish's remarks but did not believe Parish would steal or misuse appellants' intellectual property."
Lewis's testimony is remarkable and clearly shows that the action was brought for an anti-competitive purpose. Lewis did not “think it would be good, healthy for them [respondents] to go and directly compete with us.”
Lewis stated that FLIR “couldn't tolerate a direct competitive threat by [respondents] because it would fly in the face of everything that we spent 200 million dollars to buy.”
Lewis's statements were corroborated by FLIR Senior Vice President Tony Trunzo who testified that respondents' “vision for the industry will take place someday” but FLIR “wanted that competition to take place as far out in the future as possible.”
This Flir's MSX made not inside Lepton module, but using external ARMs is bullshit as now it is clear they simply wanted stop others do such trivial things.It would be ridiculous to put it in the Lepton module. There are many applications that wouldn't need it, so it would waste silicon, and you'd lose flexibility of camera interfaces.
Who gave them patent for such obvious thing used for years in image processing applications?Is there another thermal imager prior to the Flir patent that uses edges extracted from a visible image to enhance a low-res thermal image?
Some history here, I have first hand knowledge of this situation in background as an analyst; In 2004, FLIR purchased Indigo for approximately $185 million, acquiring Indigo's (prior company to Seek) patents, technology, and intellectual property. Bill Parish and Fitzgibbons (Seek founders) were shareholders and officers of Indigo before the company was sold. After the sale, Parish and Fitzgibbons continued working at Indigo. Both informed FLIR that they intended to create a new class of product for consumer markets and company called Thermicon and asked FLIR's board if they wanted in. Ratheon lined up as a licensing customer. FLIR backed out and so did Ratheon when they found out FLIR had backed out. Then FLIR sued for a perminent injunction against Parish and Fitzgibbons for (1) making use of appellants' trade secrets in the design, manufacture, and high-volume production of uncooled Vanadium Oxide microbolometers; ?(2) selling uncooled Vanadium Oxide microbolometers in commercial markets less than 12 months after respondents entered into a license with Raytheon Company or any other third party to purchase intellectual property; ?or (3) using, disclosing or misappropriating the contents of an Indigo commodity code database that Parrish attempted to download while an employee at Indigo. The trial court found no misappropriation or threatened misappropriation of trade secrets and FLIR was forced to pay >$1.6M in court costs and attorney's fees. It is my belief that Parrish has successfully proven that he has access to the IP and patents through an agreement, only after a given amount of time, or Parrish owns the IP and is licensing it back to FLIR, which would account for the dispairity in cost of the two products. -R. T.
All this is off topic I know but it is worth considering who and what 'FLIR' really are as they have much influence in the world of thermography and they are a potential competitor to SEEK Thermal.Nice to know some history, but who knows who is patent owner if any of this fusion adding visual light based edges/countours to thermal image, named by Flir MSX?
It could, however, affect what third parties (meaning: you) can legally do with regard to distributing their own apps that use the ideas in these patents.Rather, those patents can be illegal and only a way to limit competition in wrong way.
Patent 8,520,970: Infrared resolution and contrast enhancement with fusion - https://www.google.com/patents/US8520970 (https://www.google.com/patents/US8520970)One of the claims:
combining, by a processor, luminance information of the extracted pixel data with luminance information of corresponding pixels in the IR image to augment the IR image with the contours and/or edges from the visual image, wherein the augmented IR image comprises temperature information that is unaltered by the combining.This doesn't have any sense, while if we add/modify even edges we have to destroy/change small parts of IR image where edges are else we can't see any difference on IR image if we do not change it :wtf:
Seek Support (Seek Thermal)
Oct 10 12:42
Thank you for contacting Seek Support.
We understand that you are interested in getting a status update on your order. Initial shipments were held pending the release of our companion Android and iOS apps. The Android app posted to Google Play on Friday, and Android cameras began shipping right away. We anticipate that it will take 1-2 weeks to work through the backlog of Android orders.
For iOS, we submitted to Apple and the app is in review. Once approved we will begin shipping iOS units as well.
All orders are being processed in the order in which they were received, and we are working to get them out to everyone as quickly as possible. When your order ships you will receive an update email with tracking details.
If you have other questions regarding your order, or need to have details from your order modified, please send an email to retailsupport@thermal.com with your order number, and the desired updates.
The judgment and order awarding respondents $1,641.216.78 attorney fees and costs are affirmed. (§?3426.4.) Respondents are awarded costs and attorney fees on appeal, in an amount to be determined by the trial court on noticed motion.
QuoteThe judgment and order awarding respondents $1,641.216.78 attorney fees and costs are affirmed. (§?3426.4.) Respondents are awarded costs and attorney fees on appeal, in an amount to be determined by the trial court on noticed motion.
$1.6M just in attorney fees :o
LEV - the Legal Engineering Videoblog...Ditto....
Or is it?
Also anyone received their seek yet? I can't wait for Mike to get his :D
According to a reply on the comments, no postprocessing was doneThis part of one of those comments:
"It could be that noise is less noticeable on video then on still image... ?"
Damned if you do, damned if you dont. If they have stock they can fulfill orders.
Can always update software later.
According to a reply on the comments, no postprocessing was doneThis part of one of those comments:Quote"It could be that noise is less noticeable on video then on still image... ?"
In spare time I will load one of them frame by frame using OpenCV and try to enhance it a little bit and look into differences between frames too >:D
But there is a problem on YT there is no oryginal thermal video I guess, while only we can watch and download processed by YT itself ???
How do you think, which of those YT videos is in the best quality in your opinion?
As for imau, what makes you think it's a SCAM, we all know is an IRCAM ;)
patience is a virtue.
Edit: after all we didn't know anything about this camera 2 months back, they just announced it at the end of September so it's been really just 2 weeks.
We'll see if they actually end up shipping anything. In the last week, as far as I can tell, there have only been two Youtube videos showing the camera - one unboxing (and not powering it up) and one showing 3D printing.
Seek's remarkable lack of communication since launch is extremely worrisome. I placed my order on 9/26, and my confirmation email stated, "we are currently experiencing a 5-7 business delay in the shipment of your order." Well, something like a week went by and then Seek announced that they were waiting for the Android app to go live before they shipping. Judging by the community reaction, this was a big surprise and was pretty upsetting to a lot of people.
Well, here we are, now 18 days since my order, 11 days since the app was released in the Play Store. No matter how you slice it, Seek is very late in shipping their product, and is not communicating with its customers. This whole thing is looking more and more like a scam everyday, or at least a horribly mismanaged company. Either way, if I don't hear *something* from them today to address all of this, I'll be calling my bank to ensure I don't lose $214.93.
I'm in the 600s and getting impatient. :rant:How do you know you are 600's-maybe they simply assigned random unique numbers in the unknown range >:D
Product is currently on back order.Product is being shipped as quickly as possiblefor Android
Product is currently on back order. It should begin shipping within the next several weeks.For iPhone.
And Mike: <1000 installs are curiosity and 10 reviews are employees.I was trying to install the software, it just says my device isn't supported. :-// And I don't think I'm going to order one of these before I see real people using it and all the kinks and bugs have been fixed. Maybe the next generation or cheap thermal imagers has come out and hopefully they would be even cheaper since it would be a toy.
My device wasn't supported so I side loaded it, but since it supports my wife's phone then I installed it again in there. So I guess that counts for 2 installs for one device. But then I did share it so I don't know how much the install base reflects the actual purchases.
Update: due to an unexpected shortage of a key component, production is delayed right now. Android shipping will ramp back up in a few days.
My device wasn't supported so I side loaded it, but since it supports my wife's phone then I installed it again in there. So I guess that counts for 2 installs for one device. But then I did share it so I don't know how much the install base reflects the actual purchases.
I don't know if side-loading would show up in Play store stats.
The lack of communication is inexcusable. Even if they have to manually do an export of their customers to use a service. Sending emails to a mass of people is easy and common.
Two new posts showed up on their blog: http://seekthermal.tumblr.com/ (http://seekthermal.tumblr.com/)yeah but before that they were saying 2015...
and another video on facebook:
https://www.facebook.com/video.php?v=753765308029376 (https://www.facebook.com/video.php?v=753765308029376)
IMHO a good way to calm down people who started to doubt that they will ever receive the module.
Sadly there are some bad news for us outside the USA:
when will you be shipping to the UK ?
in the next couple of weeks. pls fill out form here to be notified
Before they were saying that international shipping will be available by the end of this week...
Two new posts showed up on their blog: http://seekthermal.tumblr.com/ (http://seekthermal.tumblr.com/)Not sure I like all the talk of glue on that page.... >:(
Two new posts showed up on their blog: http://seekthermal.tumblr.com/ (http://seekthermal.tumblr.com/)Not sure I like all the talk of glue on that page.... >:(
Two new posts showed up on their blog: http://seekthermal.tumblr.com/ (http://seekthermal.tumblr.com/)Not sure I like all the talk of glue on that page.... >:(
I don't mind it on the structural side, but I really, really like to take things apart. When they are expensive things, it is nice if they go back together. :o
There is nothing a well placed set of screws and O-rings couldn't do.....at a price.
Could that be the shutter actuating and NUCing or FFCing the image?Could be the effect of keyframes on Youtube video compression of a noisy image
Wire just published review: http://www.wired.com/2014/10/seek-thermal-infrared-camera-iphone-android/ (http://www.wired.com/2014/10/seek-thermal-infrared-camera-iphone-android/)
The interesting part is comparison with Flir One.
There is so much difference between Flir One and Seek shots. Obviously, MSX is great add-on.
Every few seconds image gets "nicer".Nicer does not mean more accurate, but it can be simply blured as well ;)
This are two frames at 00:02 and the difference is huge:
Wire just published review: http://www.wired.com/2014/10/seek-thermal-infrared-camera-iphone-android/ (http://www.wired.com/2014/10/seek-thermal-infrared-camera-iphone-android/)For me interesting is this Thermal+ mode >:D
"But wait! There is one other mode – Thermal+. In this mode, the app uses both the IR camera and the iPhone’s built in camera. This way you can switch back and forth between visible and IR images."
Mike, would you happen to know your order number?69x - it has arrived in the US, the acknowledgement email arrived afterwards!
Every few seconds image gets "nicer".
This are two frames at 00:02 and the difference is huge:
Without an NUC event the Industrial cameras take some time to suffer the mottling effect that is a sign of temperature drift in the Pixels. I have had a stable image for more than 5 minutes BUT these cameras have TEC temperature stabilized microbolometers. The E4 drift rate is much rater due to the lack of any TEC but the software does try to compensate based on the chassis and microbolometer die temperature sensor readings.So would modifying it with a TEC (Peltier) possibly make it better? Just to cool it down enough so it doesn't start condensation but still keep it at optimum temperature. I've seen some cool modifications for astro imaging cameras using peltiers, just a small cold finger will do wonders.
Small pixel size and subsequent lower mass may also add to temperature uniformity issues across the array.
THE APP IS NOW IN THE APP STORE!!!APP with closed source code is not needed, but real hardware to hack >:D
I don't know too much about the physics of the sensors, but I'm sure that if cooling would help, manufacturers would be doing it, as the cost of a peltier is small compared to the sensor.Without an NUC event the Industrial cameras take some time to suffer the mottling effect that is a sign of temperature drift in the Pixels. I have had a stable image for more than 5 minutes BUT these cameras have TEC temperature stabilized microbolometers. The E4 drift rate is much rater due to the lack of any TEC but the software does try to compensate based on the chassis and microbolometer die temperature sensor readings.So would modifying it with a TEC (Peltier) possibly make it better? Just to cool it down enough so it doesn't start condensation but still keep it at optimum temperature. I've seen some cool modifications for astro imaging cameras using peltiers, just a small cold finger will do wonders.
Small pixel size and subsequent lower mass may also add to temperature uniformity issues across the array.
THE APP IS NOW IN THE APP STORE!!!APP with closed source code is not needed, but real hardware to hack :blah:
Just got hold of mine. Having issues possibly due to old phone -in the meantime can someone download the latest app for me (not available outside US) - looks like it was updated Oct 14th
Just got hold of mine. Having issues possibly due to old phone -in the meantime can someone download the latest app for me (not available outside US) - looks like it was updated Oct 14thCan't wait for the teardown & reverse engineering video... :-/O
Thanks!Just got hold of mine. Having issues possibly due to old phone -in the meantime can someone download the latest app for me (not available outside US) - looks like it was updated Oct 14th
Check your PMs...
Case is aluminumMagnesium
4 very nice test points under the sensor.. separated ground fill... money's on SPI-likeYes, probably. Also the MCU is flashless -all the code lives in the external SPI flash >:D
Device Descriptor:
bcdUSB: 0x0200
bDeviceClass: 0x00
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x40 (64)
idVendor: 0x289D
idProduct: 0x0010
bcdDevice: 0x0100
iManufacturer: 0x01
0x0409: "Seek Thermal"
iProduct: 0x02
0x0409: "PIR206 Thermal Camera"
iSerialNumber: 0x05
bNumConfigurations: 0x01
ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed: High
Device Address: 0x02
Open Pipes: 2
Endpoint Descriptor:
bEndpointAddress: 0x01 OUT
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x00
Endpoint Descriptor:
bEndpointAddress: 0x81 IN
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x00
Configuration Descriptor:
wTotalLength: 0x0040
bNumInterfaces: 0x02
bConfigurationValue: 0x01
iConfiguration: 0x00
bmAttributes: 0x80 (Bus Powered )
MaxPower: 0x32 (100 Ma)
Interface Descriptor:
bInterfaceNumber: 0x00
bAlternateSetting: 0x00
bNumEndpoints: 0x02
bInterfaceClass: 0xFF
bInterfaceSubClass: 0xF0
bInterfaceProtocol: 0x00
iInterface: 0x03
0x0409: "iAP Interface"
Endpoint Descriptor:
bEndpointAddress: 0x01 OUT
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x00
Endpoint Descriptor:
bEndpointAddress: 0x81 IN
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x00
Interface Descriptor:
bInterfaceNumber: 0x01
bAlternateSetting: 0x00
bNumEndpoints: 0x00
bInterfaceClass: 0xFF
bInterfaceSubClass: 0xF0
bInterfaceProtocol: 0x01
iInterface: 0x04
0x0409: "com.thermal.pir206.1"
0x0409: "com.thermal.pir206.1"
Interface Descriptor:
bInterfaceNumber: 0x01
bAlternateSetting: 0x01
bNumEndpoints: 0x02
bInterfaceClass: 0xFF
bInterfaceSubClass: 0xF0
bInterfaceProtocol: 0x01
iInterface: 0x04
0x0409: "com.thermal.pir206.1"
0x0409: "com.thermal.pir206.1"
Endpoint Descriptor:
bEndpointAddress: 0x02 OUT
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x00
Endpoint Descriptor:
bEndpointAddress: 0x82 IN
Transfer Type: Bulk
wMaxPacketSize: 0x0200 (512)
bInterval: 0x00
There have been reports of flakiness on other platforms, in particular Samsung S3, and a message on their facebook page indicates that they have found some issues and will be issuing an update soon.
convert -depth 16 -endian lsb -size 208x156 gray:epdump.bin -auto-level seek.png
If epdump.bin contains many images (dump an entire stream) this will dump all of them to separate files named seek-0.png, seek-1.png, etc.convert marshallh-wave.png ..\palette.png -clut marshallh-wave-colorized.png
Plugging it into a linux desktop lsusb produced: Bus 002 Device 006: ID 289d:0010Did you checked what dmesg shows on its output?
D/ConnectivityService( 489): Done.
D/ConnectivityService( 489): Setting timer for 720seconds
I/ServiceDumpSys( 887): dumping service [account]
D/dalvikvm( 887): GC_FOR_ALLOC freed 246K, 7% free 9225K/9904K, paused 31ms, total 31ms
D/libgps ( 489): proxy_gps_inject_location()
I/GCoreUlr( 983): Successfully inserted location
I/GCoreUlr( 983): Not calling LocationReportingService, hasMoved: false, elapsed millis: 3015626, request: Tablet
W/UsbSettingsManager( 489): no meta-data for ResolveInfo{426a8bf8 com.estrongs.android.pop/.view.FileExplorerActivity m=0x108000}
W/ContextImpl( 489): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1131 com.android.server.usb.UsbSettingsManager.deviceAttached:621 com.android.server.usb.UsbHostManager.usbDeviceAdded:156 com.android.server.usb.UsbHostManager.monitorUsbHostBus:-2 com.android.server.usb.UsbHostManager.access$000:38
I/ActivityManager( 489): START u0 {flg=0x10000000 cmp=com.android.systemui/.usb.UsbPermissionActivity (has extras)} from pid 489
I/ActivityManager( 489): START u0 {flg=0x10000000 cmp=com.android.systemui/.usb.UsbConfirmActivity (has extras)} from pid 489
I/ActivityManager( 489): Displayed com.android.systemui/.usb.UsbConfirmActivity: +121ms
I/ActivityManager( 489): Displayed com.android.systemui/.usb.UsbPermissionActivity: +122ms
V/GmsNetworkLocationProvi( 983): onSetRequest: ProviderRequestUnbundled, reportLocation is true and interval is 120000
V/GmsNetworkLocationProvi( 983): SET-REQUEST
V/GmsNetworkLocationProvi( 983): in Handler: ProviderRequestUnbundled, reportLocation is true and interval is 120000
W/InputMethodManagerService( 489): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@42650200 attribute=null, token = android.os.BinderProxy@426e4510
W/GA-SERVICE( 887): Thread[Thread-546,5,main]: Using destination https://ssl.google-analytics.com
D/Grafika (11376): EGLContext created, client version 2
D/dalvikvm(11376): GC_CONCURRENT freed 12062K, 35% free 32240K/49316K, paused 2ms+5ms, total 54ms
D/dalvikvm(11376): WAIT_FOR_CONCURRENT_GC blocked 22ms
W/GA-SERVICE( 887): Thread[Thread-546,5,main]: Using destination https://ssl.google-analytics.com
D/dalvikvm(11376): GC_CONCURRENT freed 4139K, 27% free 36233K/49316K, paused 2ms+4ms, total 39ms
D/dalvikvm(11376): WAIT_FOR_CONCURRENT_GC blocked 33ms
V/GmsNetworkLocationProvi( 983): onSetRequest: ProviderRequestUnbundled, reportLocation is true and interval is 120000
V/GmsNetworkLocationProvi( 983): SET-REQUEST
V/GmsNetworkLocationProvi( 983): in Handler: ProviderRequestUnbundled, reportLocation is true and interval is 120000
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/dalvikvm( 983): GC_CONCURRENT freed 597K, 12% free 9484K/10724K, paused 3ms+4ms, total 29ms
D/dalvikvm( 983): WAIT_FOR_CONCURRENT_GC blocked 20ms
D/libgps ( 489): proxy_gps_inject_location()
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/Seekware(11376): Begin ThermographyCalc
D/Seekware(11376): Finished ThermographyCalc
D/Seekware(11376): Begin ImageProcess
D/Seekware(11376): Finished ImageProcess
D/Seekware(11376): Begin Colorize
D/Seekware(11376): Finish Colorize
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/Seekware(11376): Begin ThermographyCalc
D/Seekware(11376): Finished ThermographyCalc
D/Seekware(11376): Begin ImageProcess
D/Seekware(11376): Finished ImageProcess
D/Seekware(11376): Begin Colorize
D/Seekware(11376): Finish Colorize
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): close
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/UsbRequestJNI(11376): init
D/Seekware(11376): Begin ThermographyCalc
D/Seekware(11376): Finished ThermographyCalc
D/Seekware(11376): Begin ImageProcess
D/Seekware(11376): Finished ImageProcess
D/Seekware(11376): Begin Colorize
D/Seekware(11376): Finish Colorize
This goes on and on forever...
(http://i.imgur.com/PDDU1hP.jpg)
Empty space where Lightning<>USB bridge interface sits.
Tell me the lens holder isn't styrofoam, please...Silicone dust shield, white plastic lens holder. It's quite solid
Where are you suggesting the Lighting bridge would go in that? I don't see any obvious empty spots.If you mean the Lightning IC for iOS devices, it could be like the FLIR ONE which has the Lightning IC in the Lightning connector assembly itself. From what I could tell on the FLIR ONE it's just USB pass-through with some basic comms to tell the iDevice that a peripheral is attached.
Low values probably dead pixels - if they want to keep costs low, they wouldn't want to scrap sensors with bad pixels.There are definitely some dead pixels, but there are also low value pixels which occur regularly, every 28 pixels, forming broken diagonal lines across the image. I guess it's still possible those are dead pixels but that pattern would be quite a coincidence :o
If you mean the Lightning IC for iOS devices, it could be like the FLIR ONE which has the Lightning IC in the Lightning connector assembly itself. From what I could tell on the FLIR ONE it's just USB pass-through with some basic comms to tell the iDevice that a peripheral is attached.There is an unpopulated 8 pin chip on the opposite side to the flex
There are definitely some dead pixels, but there are also low value pixels which occur regularly, every 28 pixels, forming broken diagonal lines across the image. I guess it's still possible those are dead pixels but that pattern would be quite a coincidence :oEmbedded reference dark pixels?
D'oh! I missed that.QuoteIf you mean the Lightning IC for iOS devices, it could be like the FLIR ONE which has the Lightning IC in the Lightning connector assembly itself. From what I could tell on the FLIR ONE it's just USB pass-through with some basic comms to tell the iDevice that a peripheral is attached.There is an unpopulated 8 pin chip on the opposite side to the flex
Since not all are exactly 0, that would be my guess as well.QuoteThere are definitely some dead pixels, but there are also low value pixels which occur regularly, every 28 pixels, forming broken diagonal lines across the image. I guess it's still possible those are dead pixels but that pattern would be quite a coincidence :oEmbedded reference dark pixels?
I wonder who makes the sensor.
Since these data are presumably unprocessed raw data, why does the image change significantly?It may be wrong assumption while there is quite powerfull IC MCU ARM ROMLESS 100TFBGA digikey: NXP LPC4320FET100 (http://www.digikey.com/product-detail/en/LPC4320FET100,551/568-9456-ND/2677579) ;)
Code is stored in an external SPI flash, so should be pretty accessible, probably via the test pads. ISTR someone said there was a firmware image file in the .APK package.Since these data are presumably unprocessed raw data, why does the image change significantly?It may be wrong assumption while there is quite powerfull IC MCU ARM ROMLESS 100TFBGA digikey: NXP LPC4320FET100 (http://www.digikey.com/product-detail/en/LPC4320FET100,551/568-9456-ND/2677579) ;)
Latest datasheet linked from Digikey: LPC18X0,LPC43X0 IRC Update 22/Aug/2014 (http://media.digikey.com/pdf/PCNs/NXP/201408013F01.pdf)
Update: Above some production notice of IRC details changed.
Its NXP page there:
http://www.nxp.com/products/microcontrollers/cortex_m4/lpc4300/LPC4320FET100.html (http://www.nxp.com/products/microcontrollers/cortex_m4/lpc4300/LPC4320FET100.html)
Its datasheet: http://www.nxp.com/documents/data_sheet/LPC4350_30_20_10.pdf (http://www.nxp.com/documents/data_sheet/LPC4350_30_20_10.pdf)
It would be very interesting to.... disassemble its ARM program code, but where it is -on external flash IC? >:D
BTW: It costs on Digikey <$10 and arount $4 for bigger volume. Quite nice MCU-maybe it is time to do some ARM development ::)
on the one image of the internals, it looks like the pins for that coil are not soldered to the board. am I the only one to notice that?I noticed that too, it makes sense: This board is build for lowest price. The coil seems to be pressed into the board. This can be done with a machine, soldering coil contacts is often done by hand.
on the one image of the internals, it looks like the pins for that coil are not soldered to the board. am I the only one to notice that?I noticed that too, it makes sense: This board is build for lowest price. The coil seems to be pressed into the board. This can be done with a machine, soldering coil contacts is often done by hand.
If done properly, pressfit contacts aremore robust than soldering. This technique is widely used in automtive electronics because it is much more tolerant to vibrations than solder connections.
Watermarking the images like that is a very obnoxious move from Seek Thermal.
No, it's definitely pressfit (I've had it out) - the pin is split in the middle to provide tensionon the one image of the internals, it looks like the pins for that coil are not soldered to the board. am I the only one to notice that?I noticed that too, it makes sense: This board is build for lowest price. The coil seems to be pressed into the board. This can be done with a machine, soldering coil contacts is often done by hand.
If done properly, pressfit contacts aremore robust than soldering. This technique is widely used in automtive electronics because it is much more tolerant to vibrations than solder connections.
It could also be pin in hole reflow (on top only).
Picture of one of my dogs.Why this image has bigger resolution than Seek Thermal sensor capability?
...
img_thermal1915628406.jpg (35.53 kB, 624x832 - viewed 193 times.)
process/batch variation? or die revs?Did you tried to make more thermal image shots at different ambient temperatures just to see if these hexagonal sensor pixels patterns maybe changes somehow and it is temperature dependent or is consistent and unique to given Seek Thermal sensor-something like its footprint?
If it was only 156x208 it would be too tiny to display....Operating system software could simply resize 208x156 it to fit into display, but we still could be able to save oryginal one.
After thinking again, the press fit mounting has probably another reason:on the one image of the internals, it looks like the pins for that coil are not soldered to the board. am I the only one to notice that?I noticed that too, it makes sense: This board is build for lowest price. The coil seems to be pressed into the board. This can be done with a machine, soldering coil contacts is often done by hand.
If done properly, pressfit contacts aremore robust than soldering. This technique is widely used in automtive electronics because it is much more tolerant to vibrations than solder connections.
For Mike and those with a SEEK that has been taken apart.... it would be interesting to see a thermal image of the SEEK PCB (front and rear) when running to see if the PCB is suffering significant thermal creep towards the microbolometer.
...just received a Moto G which works :D
"Radio FM radio":-DD
5 MP, 2592 ? 1944 pixels, autofocus, LED flash
720 x 1280 pixels, 4.5 inches (~326 ppi pixel density)
microUSB v2.0, USB HostAccording to http://en.wikipedia.org/wiki/USB_On-The-Go (http://en.wikipedia.org/wiki/USB_On-The-Go)
USB OTG is a part of a supplement[1] to the Universal Serial Bus (USB) 2.0 specification originally agreed upon in late 2001 and later revisedThis microUSB v.20 is the key that that this thermal camera can work, or this is also Android version issue?
GPS Yes, with A-GPS, GLONASSIt has builtin one or this is some kind of external device?
My Motorola MOTO G comes with a decent auto focus camera (confirmed in tests) and a GPS that tells the OS where the camera is and interacts with apps.From link above to gsmarena.com
Sensors Accelerometer, proximity, compassit has also accelerometer and compass, so with GPS live data, probably it is possible to make those Google street view images and send directly via internet to their website ;)
What I don't really understand is why Seek want you to register - at least you can do 'later..' - hope this doesn't get naggy!
What I don't really understand is why Seek want you to register - at least you can do 'later..' - hope this doesn't get naggy!
That unfortunately is quite simple. When you buy consumer "smart-device", you're not simply buying a piece of equipment. You are buying the manufacturer's way of getting closer to your personal info, be it your email address, your physical location, your personal comms, browsing history or your brand preferences. This data is then sold in bulk.
This is the very same thing - you buy a cheap TIC and they get to place their closed-source code into something you carry 24/7 with you.
I'm not saying it's not possible for tyrian to be an exception (though that would be unlikely), all I'm saying is that this is a common industry practice.
Mike,No idea - I don't see any reason to register it so can't see it being a problem. My guess is they'll start EU shipping once they clear the US backlog.
You made mention of registering your SEEK app and from what you said this seemed to be an issue. Do you think SEEK will refuse to register the app for UK users as they have not released it here yet ? It would be very petty for SEEK to refuse registration of a personal import unit. It would lower my view of a company that claims that it wishes to bring affordable thermal cameras to the masses.
Aurora
$ file libseekthermal.so.1.0.1For the moment automated software marked those black sensor data pixels with RGB green and now will try to output my own version of thermal imaginery using simple image processing tools to fill those black pixels with some usefull values and detect bad pixels and mark them red
libseekthermal.so.1.0.1: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, not stripped
Mike, neat stuff. I take that just powering up the device doesn't spew the raw data until it's initialized, right?Correct. But it's possible there might be a test mode...
Seek Thermal sensor 206 x 156 black pixels: count: 2169 good: 2138 bad: 31However, when we count those 5 pink pixels and let them be good ones, than we have in 206x156 image:
The almost-black dots are not all 00., they are definitely intentional.On PNG image provided by you (RGBA) 8 bits per channel those black pixels marked by my tools green, red and pink had 0x00 zero the same values in RGB channels and 255 in Alpha channel and most of them fits into this hexagon pattern.
Is there a convenient connector to plug this camera into a standard laptop USB port (type A)?
Is there a convenient connector to plug this camera into a standard laptop USB port (type A)?
A quick search found this:
http://usb.brando.com/usb-2-0-male-to-micro-b-female-adapter_p02840c0042d015.html (http://usb.brando.com/usb-2-0-male-to-micro-b-female-adapter_p02840c0042d015.html)
There has to be others as well.
My search was "usb a male to micro b female adapter" and click on images to make sure the micro b is female.
A quick search found this:
http://usb.brando.com/usb-2-0-male-to-micro-b-female-adapter_p02840c0042d015.html (http://usb.brando.com/usb-2-0-male-to-micro-b-female-adapter_p02840c0042d015.html)
There has to be others as well.
My search was "usb a male to micro b female adapter" and click on images to make sure the micro b is female.
Or: http://www.amazon.com/gp/product/B009AWA3VK/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1 (http://www.amazon.com/gp/product/B009AWA3VK/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1)Thanks for the link, actually that pushed me to get one for my seek to start probing the protocol, but it seems like it will come from the slow boat (delivery estimate Nov 20th to Dec 9th) but i'm in no hurry since I got this to winterize my home and I won't be messing with it until I'm done.
Probably made in the same factory. I got one of these and it took about 2 weeks to arrive. I figured for ~$1.50 why not...
It works fine with my Seek TC.
...ken....
This gradient issue is pretty bad. Does anyone else experience this? Seems almost unusable for most practical situations, although I can now use this $200 camera to verify that my teapot is hot vs. using my finger before.
Here's a door with a leak around the bottom and it has a dual-flap pet door that's a little cool too. Comparing E4+ with seek (no comparison of course - to be expected), but look at what happens when I turn the Seek upside-down. Now where is the door leaking?
It seems to me this has potential to be corrected by improved calibration routines in the app/firmware, but I haven't contacted them yet to see if that's in the works. Has anyone already had that conversation with them?
As has been stated, an FPA with a thermal gradient across it that cannot be compensated adequately is pretty useless for anything more than toy applications.I think this really was intended as a "toy" product, built down to a price. (And as the comparison with Flir One shows, "resolution isn't everything" either...)
... but look at what happens when I turn the Seek upside-down. Now where is the door leaking?Maybe there is more trivial explanation to this- some kind of weird software bug, so while such use case scenario (turning Seek up-down) is not implemented well and missed something during testing. ;)
Actually, the fact that the shutter closed images look good point exactly to the shutter itself as the source of the gradient if the calibration is working correctly. The calibration is neutralizing the shutter gradient, and thus we get negative shutter gradient overlay on the real image.
A quick look at the PCB design and shutter position leads me to the following comments:the switching reg is at the opposite end, and is unlikely to get hot, if you assume it handles all the input current ( which it doesn't but I don't have a figure for the seperate regs), and it's 75% effifcient, dissipation will be about 60mW
1. The likely greatest sources of heat in the SEEK are the switching regulator transistor and the microprocessor. If we treat them as warm air generators within the SEEK's sealed case and consider convection air movement we may find our problem
Friendly email sent to SEEK and this thread referenced for their information. It will be interesting to hear their thoughts on this matter.
Aurora
Friendly email sent to SEEK and this thread referenced for their information. It will be interesting to hear their thoughts on this matter.
Aurora
Thanks, I was just gonna do that :)
Quick observations :
Mine shows a gradient at power-up, so it isn't thermal.
Removing the shutter and pointing at a flat surface, there is no gradient, but noise increases pretty rapidly between cal times - presumably this is a warm-up thing.
The surface of the shutter, though nominally flat, has machining marks from the mould. Although in a photo these make it look like the surface is curved, this is not the case.
Hello everyone, I've been a lurker for awhile but I just had to register because this is a fascinating thread.
As mike pointed out, it could be a timing issue.
Perhaps the gradient is due to a rolling shutter effect...
Is it possible that the speed of the shutter action is a variable that depends on mfg batch, phone battery voltage, or something else?With decent scope maybe it will be possible make own DIY using only this part cut from whole PCB - sensor itself and put there MPU we like :-DD
With decent scope maybe it will be possible make own DIY using only this part cut from whole PCB - sensor itself and put there MPU we like :-DDI think the only viable way will be to write new code for the MCU - there are 18 bond-wires onto the die and some disappear onto vias inside the lens housing
I've now established that it is definitely nothing to do with the shutter.
It is either the lens itelf, or the alignment of the lens.
I haven't seen it mentioned yet, but there is a solenoid that operates the shutter. I recall that the solenoid is continuously active and holding the shutter open while the camera is operating, rather than the expected reverse situation where the solenoid activates momentarily to close the shutter when commanded. If the solenoid is continuously activated, could this not be a source of heat close to the optical assembly? Could it even be warming up the shutter in an uneven way?No - heat is negligible. I have repeated the gradient using a substitute shutter comprising a strip of plastic manually removed from in front of the sensor.
I don't know why Mike ruled out the shutter.- yes it's seeing a static scene, so when it thinks it's done a cal, it's subtracting the image form itself, giving ablank field.
After being on for a while, if I force the shutter open and point it down, the blob disappears.
After forcing it close for a while if I release it and let it operate normally and point it down, it's as bad as it gets.the issue is that the "blank field" of the shutter-closed image is different from that of a blank field through the lens.
Shutter is visible here, it's the hook shape that's green in front of the lens housing. Obviously much warmer than the lens housingBear in mind shutter is black plastic, lens housing is metal with white paint on it, so at least some of the difference could be down to emissivity.
That microbolometer still looks hotter than I would have expected but interestingly there is no evidence of a hot spot on the rear of the PCB under the microbolometer.Don't hold your breath. They've not exactly been very communicative to date
It will be very interesting to hear SEEKs thoughts on this matter, hopefully tomorrow.
Aurora
That microbolometer still looks hotter than I would have expected but interestingly there is no evidence of a hot spot on the rear of the PCB under the microbolometer.
It will be very interesting to hear SEEKs thoughts on this matter, hopefully tomorrow.
Aurora
After being on for a while and the shutter forced open if I force it close, the image is less even but not terrible:Which LUT are you using? Is it possible in Seek Thermal app disable any LUTs and get grey output?
The shutter arm may also conduct away heat from that part of the flag.Talking about DIY shutter I was thinking about one... without any physical connection with PCB >:D
New app version was released on the 24th:
https://play.google.com/store/apps/details?id=com.tyriansystems.SeekThermal (https://play.google.com/store/apps/details?id=com.tyriansystems.SeekThermal)
What's new:
* Corrected crashing issues on various devices.
* Image quality improvements.
* Other misc. Improvements.
Can someone confirm if it has a firmware upgrade?
Image has new firmware built Oct 21.
#if AVERAGE
int[] deadpixelarray = { 10, 6, 2, 13, 9, 5, 1, 12, 8, 4, 0, 11, 7, 3, 14 };
int deadpixel;
ulong average;
ulong numpoints;
int v;
for (y = 0; y < 156; y++)
{
deadpixel = deadpixelarray[y % 15];
for (int x = 0; x < 208; x++)
{
if (x == deadpixel)
{
average = 0UL;
numpoints = 0;
if (x > 0)
{
average += data.PixelData[c - 1];
numpoints++;
}
if (x < 208)
{
average += data.PixelData[c + 1];
numpoints++;
}
if (y > 0)
{
average += data.PixelData[c - 208];
numpoints++;
}
if (y < 155)
{
average += data.PixelData[c + 208];
numpoints++;
}
if (numpoints > 0)
average = average / numpoints;
else
average = data.MinValue;
v = (int)average;
deadpixel += 15;
}
else
{
v = data.PixelData[c];
}
v = (v - data.MinValue) * 255 / (data.MaxValue - data.MinValue);
if (v < 0) v = 0;
if (v > 255) v = 255;
bmp.SetPixel(x, y, Color.FromArgb(v, v, v));
c++;
}
}
#else
for (y = 0; y < 156; y++)
{
for (int x = 0; x < 208; x++)
{
int v = data.PixelData[c++];
v = (v - data.MinValue) * 255 / (data.MaxValue - data.MinValue);
if (v < 0) v = 0;
if (v > 255) v = 255;
bmp.SetPixel(x, y, Color.FromArgb(v, v, v));
}
}
#endif
Edit: got rid off an unused variable and defaulted the dead pixel to min value instead of max value if it couldn't average (but that should never happen anyways)https://github.com/sgstair/winusbdotnetSo, those 3 images on screen shoots provided by @marshallh are NOT exactly raw sensor data but you modify its values, for example those non hexagon pixels somehow and change from 14bit to 8bit to be able to render it in RGBA mode?
I still have some plans to improve it, at the moment it's just doing very dumb calibration on the raw data and rendering it.
New app version was released on the 24th:..and upload an .apk...?
https://play.google.com/store/apps/details?id=com.tyriansystems.SeekThermal
What's new:
* Corrected crashing issues on various devices.
* Image quality improvements.
* Other misc. Improvements.
Can someone confirm if it has a firmware upgrade?
if (bmpQueue.Count > 3) bmpQueue.Dequeue();
it was > 5 //get image
Bitmap sourceImg = new Bitmap(@"C:\temp\thermo\seek.png");
Color leftPixel, centerPixel, rightPixel, topPixel, bottomPixel;
int avgVal;
//loop trough horiz pixels
for (int x = 0; x < sourceImg.Width-2; x++)
{
for (int y = 0; y < sourceImg.Height-2; y++)
{
leftPixel = sourceImg.GetPixel(x, y + 1);
rightPixel = sourceImg.GetPixel(x + 2, y + 1);
topPixel = sourceImg.GetPixel(x + 1, y);
bottomPixel = sourceImg.GetPixel(x + 1, y + 2);
centerPixel = sourceImg.GetPixel(x + 1, y + 1);
avgVal = (leftPixel.R + rightPixel.R + topPixel.R + bottomPixel.R) / 4;
if (Math.Abs(leftPixel.R - centerPixel.R) > 20) //if pixel is too different use average color from near pixels
{
sourceImg.SetPixel(x + 1, y + 1, Color.FromArgb(avgVal, avgVal, avgVal));
}
}
}
sourceImg.Save(Application.StartupPath + "\\clear.png");
I was able to remove most of the dead pixels with this simple (C#) code:
//must include: using System.Linq;
//set level of the noise reduction:
int noiseReduction = 25; //smaller number means less noise but also less details, 25 seems to be a good value
//get image
Bitmap sourceImg = new Bitmap(@"C:\temp\thermo\seek.png");
Color centerPixel;
int avgVal;
int[] arrColor = new int[4];
//loop trough pixels
for (int x = 0; x < sourceImg.Width-2; x++)
{
for (int y = 0; y < sourceImg.Height-2; y++)
{
arrColor[0] = sourceImg.GetPixel(x, y + 1).R;
arrColor[1] = sourceImg.GetPixel(x + 2, y + 1).R;
arrColor[2] = sourceImg.GetPixel(x + 1, y).R;
arrColor[3] = sourceImg.GetPixel(x + 1, y + 2).R;
//get average value, but exclude neighbour dead pixels from average:
avgVal = (arrColor.Sum() - (arrColor.Min() + arrColor.Max())) / 2;
centerPixel = sourceImg.GetPixel(x + 1, y + 1);
if (Math.Abs(avgVal - centerPixel.R) > noiseReduction) //if pixel is too different use average color from near pixels
{
sourceImg.SetPixel(x + 1, y + 1, Color.FromArgb(avgVal, avgVal, avgVal));
}
}
}
sourceImg.Save(Application.StartupPath + "\\clear.png");
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=115052;image)
It works on a standard USB 2.0 port but you have to install the winusb driver with ZadigNice :-+
On another note, brute force approach to add the Iron palette directly to the code, I know I could have just make it so it will read a file with the palette but meh. Notepad++ helped meI used libPNG to generate automatic code to include into C source file, so make it available using JNI in Android application, or generate output for OpenCV, and of course optimize it for speed ;)
#ifndef _SEEK_THERMAL_LUT_IRON256_C_
#define _SEEK_THERMAL_LUT_IRON256_C_
void seek_thermal_lut_iron256_get(unsigned int idx, unsigned char *pr, unsigned char *pg, unsigned char *pb ) {
static unsigned char *lutr= NULL;
static unsigned char *lutg= NULL;
static unsigned char *lutb= NULL;
if(lutr==NULL || lutg==NULL || lutb==NULL ) {
lutr=(unsigned char*)malloc(sizeof(unsigned char)*256);
lutg=(unsigned char*)malloc(sizeof(unsigned char)*256);
lutb=(unsigned char*)malloc(sizeof(unsigned char)*256);
lutr[0]= 0; lutg[0]= 0; lutb[0]= 0;
lutr[1]= 0; lutg[1]= 0; lutb[1]= 7;
lutr[2]= 0; lutg[2]= 0; lutb[2]= 24;
lutr[3]= 0; lutg[3]= 0; lutb[3]= 38;
lutr[4]= 0; lutg[4]= 0; lutb[4]= 46;
lutr[5]= 0; lutg[5]= 0; lutb[5]= 52;
lutr[6]= 0; lutg[6]= 0; lutb[6]= 59;
lutr[7]= 0; lutg[7]= 0; lutb[7]= 66;
lutr[8]= 0; lutg[8]= 0; lutb[8]= 73;
lutr[9]= 0; lutg[9]= 0; lutb[9]= 80;
lutr[10]= 1; lutg[10]= 0; lutb[10]= 85;
lutr[11]= 2; lutg[11]= 0; lutb[11]= 89;
lutr[12]= 3; lutg[12]= 0; lutb[12]= 93;
lutr[13]= 4; lutg[13]= 0; lutb[13]= 97;
lutr[14]= 5; lutg[14]= 0; lutb[14]= 101;
lutr[15]= 6; lutg[15]= 0; lutb[15]= 104;
lutr[16]= 8; lutg[16]= 0; lutb[16]= 108;
lutr[17]= 10; lutg[17]= 0; lutb[17]= 112;
lutr[18]= 11; lutg[18]= 0; lutb[18]= 116;
lutr[19]= 13; lutg[19]= 0; lutb[19]= 118;
lutr[20]= 15; lutg[20]= 0; lutb[20]= 119;
lutr[21]= 17; lutg[21]= 0; lutb[21]= 121;
lutr[22]= 20; lutg[22]= 0; lutb[22]= 123;
lutr[23]= 24; lutg[23]= 0; lutb[23]= 126;
lutr[24]= 27; lutg[24]= 0; lutb[24]= 128;
lutr[25]= 30; lutg[25]= 0; lutb[25]= 130;
lutr[26]= 33; lutg[26]= 0; lutb[26]= 133;
lutr[27]= 36; lutg[27]= 0; lutb[27]= 135;
lutr[28]= 40; lutg[28]= 0; lutb[28]= 136;
lutr[29]= 43; lutg[29]= 0; lutb[29]= 138;
lutr[30]= 47; lutg[30]= 0; lutb[30]= 139;
lutr[31]= 50; lutg[31]= 0; lutb[31]= 141;
lutr[32]= 53; lutg[32]= 0; lutb[32]= 142;
lutr[33]= 56; lutg[33]= 0; lutb[33]= 144;
lutr[34]= 59; lutg[34]= 0; lutb[34]= 145;
lutr[35]= 62; lutg[35]= 0; lutb[35]= 146;
lutr[36]= 64; lutg[36]= 0; lutb[36]= 148;
lutr[37]= 66; lutg[37]= 0; lutb[37]= 149;
lutr[38]= 69; lutg[38]= 0; lutb[38]= 150;
lutr[39]= 72; lutg[39]= 0; lutb[39]= 150;
lutr[40]= 75; lutg[40]= 0; lutb[40]= 150;
lutr[41]= 78; lutg[41]= 0; lutb[41]= 151;
lutr[42]= 81; lutg[42]= 0; lutb[42]= 151;
lutr[43]= 83; lutg[43]= 0; lutb[43]= 152;
lutr[44]= 87; lutg[44]= 0; lutb[44]= 152;
lutr[45]= 90; lutg[45]= 0; lutb[45]= 153;
lutr[46]= 93; lutg[46]= 0; lutb[46]= 154;
lutr[47]= 96; lutg[47]= 0; lutb[47]= 155;
lutr[48]= 99; lutg[48]= 0; lutb[48]= 155;
lutr[49]= 102; lutg[49]= 0; lutb[49]= 155;
lutr[50]= 105; lutg[50]= 0; lutb[50]= 155;
lutr[51]= 108; lutg[51]= 0; lutb[51]= 156;
lutr[52]= 111; lutg[52]= 0; lutb[52]= 156;
lutr[53]= 113; lutg[53]= 0; lutb[53]= 157;
lutr[54]= 115; lutg[54]= 0; lutb[54]= 157;
lutr[55]= 119; lutg[55]= 0; lutb[55]= 157;
lutr[56]= 122; lutg[56]= 0; lutb[56]= 157;
lutr[57]= 125; lutg[57]= 0; lutb[57]= 157;
lutr[58]= 128; lutg[58]= 0; lutb[58]= 157;
lutr[59]= 130; lutg[59]= 0; lutb[59]= 157;
lutr[60]= 133; lutg[60]= 0; lutb[60]= 157;
lutr[61]= 136; lutg[61]= 0; lutb[61]= 157;
lutr[62]= 138; lutg[62]= 0; lutb[62]= 157;
lutr[63]= 141; lutg[63]= 0; lutb[63]= 157;
lutr[64]= 144; lutg[64]= 0; lutb[64]= 156;
lutr[65]= 147; lutg[65]= 0; lutb[65]= 156;
lutr[66]= 150; lutg[66]= 0; lutb[66]= 155;
lutr[67]= 153; lutg[67]= 0; lutb[67]= 155;
lutr[68]= 155; lutg[68]= 0; lutb[68]= 155;
lutr[69]= 157; lutg[69]= 0; lutb[69]= 155;
lutr[70]= 160; lutg[70]= 0; lutb[70]= 155;
lutr[71]= 162; lutg[71]= 0; lutb[71]= 155;
lutr[72]= 164; lutg[72]= 0; lutb[72]= 155;
lutr[73]= 167; lutg[73]= 0; lutb[73]= 154;
lutr[74]= 169; lutg[74]= 0; lutb[74]= 154;
lutr[75]= 171; lutg[75]= 0; lutb[75]= 153;
lutr[76]= 172; lutg[76]= 0; lutb[76]= 153;
lutr[77]= 174; lutg[77]= 1; lutb[77]= 152;
lutr[78]= 176; lutg[78]= 1; lutb[78]= 152;
lutr[79]= 177; lutg[79]= 1; lutb[79]= 151;
lutr[80]= 179; lutg[80]= 1; lutb[80]= 151;
lutr[81]= 181; lutg[81]= 2; lutb[81]= 150;
lutr[82]= 183; lutg[82]= 2; lutb[82]= 149;
lutr[83]= 184; lutg[83]= 3; lutb[83]= 149;
lutr[84]= 185; lutg[84]= 4; lutb[84]= 149;
lutr[85]= 187; lutg[85]= 5; lutb[85]= 148;
lutr[86]= 188; lutg[86]= 5; lutb[86]= 147;
lutr[87]= 190; lutg[87]= 5; lutb[87]= 146;
lutr[88]= 191; lutg[88]= 6; lutb[88]= 146;
lutr[89]= 192; lutg[89]= 7; lutb[89]= 145;
lutr[90]= 193; lutg[90]= 8; lutb[90]= 144;
lutr[91]= 194; lutg[91]= 9; lutb[91]= 143;
lutr[92]= 195; lutg[92]= 11; lutb[92]= 142;
lutr[93]= 196; lutg[93]= 12; lutb[93]= 141;
lutr[94]= 197; lutg[94]= 13; lutb[94]= 140;
lutr[95]= 199; lutg[95]= 14; lutb[95]= 138;
lutr[96]= 200; lutg[96]= 16; lutb[96]= 136;
lutr[97]= 201; lutg[97]= 18; lutb[97]= 134;
lutr[98]= 202; lutg[98]= 19; lutb[98]= 133;
lutr[99]= 203; lutg[99]= 20; lutb[99]= 131;
lutr[100]= 205; lutg[100]= 22; lutb[100]= 129;
lutr[101]= 206; lutg[101]= 23; lutb[101]= 127;
lutr[102]= 207; lutg[102]= 25; lutb[102]= 124;
lutr[103]= 208; lutg[103]= 26; lutb[103]= 121;
lutr[104]= 209; lutg[104]= 27; lutb[104]= 119;
lutr[105]= 210; lutg[105]= 29; lutb[105]= 116;
lutr[106]= 211; lutg[106]= 31; lutb[106]= 114;
lutr[107]= 212; lutg[107]= 33; lutb[107]= 112;
lutr[108]= 213; lutg[108]= 34; lutb[108]= 108;
lutr[109]= 214; lutg[109]= 36; lutb[109]= 104;
lutr[110]= 215; lutg[110]= 38; lutb[110]= 101;
lutr[111]= 216; lutg[111]= 40; lutb[111]= 98;
lutr[112]= 217; lutg[112]= 42; lutb[112]= 95;
lutr[113]= 218; lutg[113]= 45; lutb[113]= 92;
lutr[114]= 219; lutg[114]= 47; lutb[114]= 87;
lutr[115]= 220; lutg[115]= 48; lutb[115]= 82;
lutr[116]= 221; lutg[116]= 49; lutb[116]= 77;
lutr[117]= 222; lutg[117]= 51; lutb[117]= 71;
lutr[118]= 223; lutg[118]= 53; lutb[118]= 65;
lutr[119]= 224; lutg[119]= 55; lutb[119]= 60;
lutr[120]= 224; lutg[120]= 56; lutb[120]= 54;
lutr[121]= 225; lutg[121]= 58; lutb[121]= 49;
lutr[122]= 226; lutg[122]= 60; lutb[122]= 43;
lutr[123]= 227; lutg[123]= 62; lutb[123]= 37;
lutr[124]= 228; lutg[124]= 63; lutb[124]= 32;
lutr[125]= 228; lutg[125]= 65; lutb[125]= 28;
lutr[126]= 229; lutg[126]= 67; lutb[126]= 26;
lutr[127]= 230; lutg[127]= 69; lutb[127]= 24;
lutr[128]= 230; lutg[128]= 71; lutb[128]= 21;
lutr[129]= 231; lutg[129]= 73; lutb[129]= 19;
lutr[130]= 232; lutg[130]= 75; lutb[130]= 17;
lutr[131]= 232; lutg[131]= 76; lutb[131]= 15;
lutr[132]= 233; lutg[132]= 77; lutb[132]= 13;
lutr[133]= 234; lutg[133]= 78; lutb[133]= 12;
lutr[134]= 235; lutg[134]= 80; lutb[134]= 11;
lutr[135]= 235; lutg[135]= 82; lutb[135]= 10;
lutr[136]= 235; lutg[136]= 84; lutb[136]= 9;
lutr[137]= 236; lutg[137]= 86; lutb[137]= 8;
lutr[138]= 236; lutg[138]= 88; lutb[138]= 8;
lutr[139]= 237; lutg[139]= 90; lutb[139]= 7;
lutr[140]= 237; lutg[140]= 91; lutb[140]= 6;
lutr[141]= 238; lutg[141]= 92; lutb[141]= 5;
lutr[142]= 238; lutg[142]= 94; lutb[142]= 5;
lutr[143]= 239; lutg[143]= 95; lutb[143]= 4;
lutr[144]= 239; lutg[144]= 97; lutb[144]= 4;
lutr[145]= 240; lutg[145]= 99; lutb[145]= 3;
lutr[146]= 240; lutg[146]= 101; lutb[146]= 3;
lutr[147]= 241; lutg[147]= 102; lutb[147]= 3;
lutr[148]= 241; lutg[148]= 103; lutb[148]= 3;
lutr[149]= 241; lutg[149]= 105; lutb[149]= 2;
lutr[150]= 241; lutg[150]= 106; lutb[150]= 2;
lutr[151]= 241; lutg[151]= 108; lutb[151]= 1;
lutr[152]= 242; lutg[152]= 109; lutb[152]= 1;
lutr[153]= 242; lutg[153]= 111; lutb[153]= 1;
lutr[154]= 243; lutg[154]= 113; lutb[154]= 1;
lutr[155]= 243; lutg[155]= 114; lutb[155]= 1;
lutr[156]= 244; lutg[156]= 116; lutb[156]= 0;
lutr[157]= 244; lutg[157]= 117; lutb[157]= 0;
lutr[158]= 244; lutg[158]= 119; lutb[158]= 0;
lutr[159]= 244; lutg[159]= 121; lutb[159]= 0;
lutr[160]= 245; lutg[160]= 124; lutb[160]= 0;
lutr[161]= 245; lutg[161]= 126; lutb[161]= 0;
lutr[162]= 246; lutg[162]= 128; lutb[162]= 0;
lutr[163]= 246; lutg[163]= 130; lutb[163]= 0;
lutr[164]= 247; lutg[164]= 131; lutb[164]= 0;
lutr[165]= 247; lutg[165]= 133; lutb[165]= 0;
lutr[166]= 248; lutg[166]= 135; lutb[166]= 0;
lutr[167]= 248; lutg[167]= 136; lutb[167]= 0;
lutr[168]= 248; lutg[168]= 137; lutb[168]= 0;
lutr[169]= 248; lutg[169]= 139; lutb[169]= 0;
lutr[170]= 248; lutg[170]= 140; lutb[170]= 0;
lutr[171]= 249; lutg[171]= 142; lutb[171]= 0;
lutr[172]= 249; lutg[172]= 143; lutb[172]= 0;
lutr[173]= 249; lutg[173]= 144; lutb[173]= 0;
lutr[174]= 249; lutg[174]= 146; lutb[174]= 0;
lutr[175]= 250; lutg[175]= 148; lutb[175]= 0;
lutr[176]= 250; lutg[176]= 150; lutb[176]= 0;
lutr[177]= 251; lutg[177]= 152; lutb[177]= 0;
lutr[178]= 251; lutg[178]= 155; lutb[178]= 0;
lutr[179]= 252; lutg[179]= 157; lutb[179]= 0;
lutr[180]= 252; lutg[180]= 159; lutb[180]= 0;
lutr[181]= 253; lutg[181]= 161; lutb[181]= 0;
lutr[182]= 253; lutg[182]= 163; lutb[182]= 0;
lutr[183]= 253; lutg[183]= 166; lutb[183]= 0;
lutr[184]= 253; lutg[184]= 168; lutb[184]= 0;
lutr[185]= 253; lutg[185]= 170; lutb[185]= 0;
lutr[186]= 253; lutg[186]= 172; lutb[186]= 0;
lutr[187]= 253; lutg[187]= 174; lutb[187]= 0;
lutr[188]= 254; lutg[188]= 175; lutb[188]= 0;
lutr[189]= 254; lutg[189]= 177; lutb[189]= 0;
lutr[190]= 254; lutg[190]= 178; lutb[190]= 0;
lutr[191]= 254; lutg[191]= 180; lutb[191]= 0;
lutr[192]= 254; lutg[192]= 183; lutb[192]= 0;
lutr[193]= 254; lutg[193]= 185; lutb[193]= 0;
lutr[194]= 254; lutg[194]= 186; lutb[194]= 0;
lutr[195]= 254; lutg[195]= 188; lutb[195]= 0;
lutr[196]= 254; lutg[196]= 189; lutb[196]= 0;
lutr[197]= 254; lutg[197]= 191; lutb[197]= 0;
lutr[198]= 254; lutg[198]= 193; lutb[198]= 0;
lutr[199]= 254; lutg[199]= 195; lutb[199]= 0;
lutr[200]= 254; lutg[200]= 197; lutb[200]= 0;
lutr[201]= 254; lutg[201]= 199; lutb[201]= 0;
lutr[202]= 254; lutg[202]= 200; lutb[202]= 0;
lutr[203]= 254; lutg[203]= 202; lutb[203]= 1;
lutr[204]= 254; lutg[204]= 203; lutb[204]= 1;
lutr[205]= 254; lutg[205]= 204; lutb[205]= 2;
lutr[206]= 254; lutg[206]= 206; lutb[206]= 3;
lutr[207]= 254; lutg[207]= 207; lutb[207]= 4;
lutr[208]= 254; lutg[208]= 209; lutb[208]= 6;
lutr[209]= 254; lutg[209]= 211; lutb[209]= 8;
lutr[210]= 254; lutg[210]= 213; lutb[210]= 10;
lutr[211]= 254; lutg[211]= 215; lutb[211]= 11;
lutr[212]= 254; lutg[212]= 216; lutb[212]= 12;
lutr[213]= 255; lutg[213]= 218; lutb[213]= 14;
lutr[214]= 255; lutg[214]= 219; lutb[214]= 16;
lutr[215]= 255; lutg[215]= 220; lutb[215]= 19;
lutr[216]= 255; lutg[216]= 221; lutb[216]= 23;
lutr[217]= 255; lutg[217]= 222; lutb[217]= 27;
lutr[218]= 255; lutg[218]= 224; lutb[218]= 31;
lutr[219]= 255; lutg[219]= 225; lutb[219]= 35;
lutr[220]= 255; lutg[220]= 227; lutb[220]= 38;
lutr[221]= 255; lutg[221]= 228; lutb[221]= 42;
lutr[222]= 255; lutg[222]= 229; lutb[222]= 48;
lutr[223]= 255; lutg[223]= 230; lutb[223]= 53;
lutr[224]= 255; lutg[224]= 231; lutb[224]= 60;
lutr[225]= 255; lutg[225]= 233; lutb[225]= 65;
lutr[226]= 255; lutg[226]= 234; lutb[226]= 71;
lutr[227]= 255; lutg[227]= 235; lutb[227]= 77;
lutr[228]= 255; lutg[228]= 237; lutb[228]= 83;
lutr[229]= 255; lutg[229]= 238; lutb[229]= 89;
lutr[230]= 255; lutg[230]= 239; lutb[230]= 96;
lutr[231]= 255; lutg[231]= 239; lutb[231]= 102;
lutr[232]= 255; lutg[232]= 240; lutb[232]= 109;
lutr[233]= 255; lutg[233]= 241; lutb[233]= 115;
lutr[234]= 255; lutg[234]= 241; lutb[234]= 124;
lutr[235]= 255; lutg[235]= 242; lutb[235]= 132;
lutr[236]= 255; lutg[236]= 243; lutb[236]= 139;
lutr[237]= 255; lutg[237]= 244; lutb[237]= 146;
lutr[238]= 255; lutg[238]= 244; lutb[238]= 153;
lutr[239]= 255; lutg[239]= 245; lutb[239]= 160;
lutr[240]= 255; lutg[240]= 245; lutb[240]= 168;
lutr[241]= 255; lutg[241]= 246; lutb[241]= 175;
lutr[242]= 255; lutg[242]= 247; lutb[242]= 181;
lutr[243]= 255; lutg[243]= 248; lutb[243]= 187;
lutr[244]= 255; lutg[244]= 248; lutb[244]= 193;
lutr[245]= 255; lutg[245]= 249; lutb[245]= 198;
lutr[246]= 255; lutg[246]= 249; lutb[246]= 204;
lutr[247]= 255; lutg[247]= 250; lutb[247]= 210;
lutr[248]= 255; lutg[248]= 251; lutb[248]= 216;
lutr[249]= 255; lutg[249]= 252; lutb[249]= 222;
lutr[250]= 255; lutg[250]= 253; lutb[250]= 227;
lutr[251]= 255; lutg[251]= 253; lutb[251]= 232;
lutr[252]= 255; lutg[252]= 254; lutb[252]= 237;
lutr[253]= 255; lutg[253]= 254; lutb[253]= 243;
lutr[254]= 255; lutg[254]= 255; lutb[254]= 247;
lutr[255]= 255; lutg[255]= 255; lutb[255]= 249;
}
(*pr)= lutr[idx];
(*pg)= lutg[idx];
(*pb)= lutb[idx];
}
unsigned int seek_thermal_lut_iron256_size() {
return 256;
}
#endif //_SEEK_THERMAL_LUT_IRON256_C_
If you got the order in fairly early, and it arrives soon-ish chances are you can flip it on ebay for a profit. Looking at their FB page seems the order numbers are well over 10K
The 2nd unit I simply don't want at all and there doesn't seem to be a way to canc the order.I would be very happy to buy it from you if it's android version and you would be willing to ship it to Europe?
I definitely wouldn't expect unprocessed data. They have to maintain the 9hz to make their camera ITAR safe.Why not? They can simply make toy version hardware eg. with voltage regulators operating temperature 0*C-70*C or use ICs in non MIL versions as well as simplify design and make this thing not usable on battle fields.
Sure thing, but I have more to come, double the resolution and frenky's noise reduction.Still, you have guys black pixels column on the right >:D
https://www.youtube.com/watch?v=hzsTsFvHss8 (https://www.youtube.com/watch?v=hzsTsFvHss8#ws)
ZnSe CO2 laser focus lens. these are either Biconvex or Plano Convex. Both will work OK. Plano Convex is likely the best performingThx for those hints ;)
...
ZnSe lense are common in certain thermal camera optics as a high transmission efficiency and relatively cheap element.
I'm looking forward to seeing what people come up with on the firmware, perhaps the real value is there.My guess is that next @Mike's teardown Seek Thermal video might be... applying logic analyser to a few of these 18 wires close to the sensor and hacking its communication protocol, while it survived milling and complete lens disassembling and still outputs some decent thermal imaginery :-DD
@miguelvp, I'd add a button control to the form in the UI editor and double click on it to create a new event handler. If you really want the keyboard, in the UI editor properties window, the events tab will let you hook a KeyPress event (or in Form1(), this.KeyPress += <event function>; MSDN has all the details.)
I'm ultimately going to seriously refactor a lot of this stuff, I have some things I'd like to add also.
My opinion for best way to dead pixel removal and noise control.
Dead pixel problem:
Take an image from thermally equal surface, convert it into black and white. Mark position of all dead pixels and replace it like this:
Get values from top, bottom, left and right neighbor pixel. Check which pair (horizontal or vertical) has smallest difference in color.
Calculated pixel should have the average value of this pair. This will work great on small vertical or horizontal changes in temperature.
(My code already implements this)
If you use multiple frames from a moving image then this should be possible in background without any need for a manual calibration:
- Detect dead pixels as you described
- Filter the dead pixel map over several frames, but update only when the image is changing (to avoid false masking of good pixels in static scenes)
- Use the generated dead pixel mask to clean the image
It should be even possible to compensate hot pixels (pixels that are not completely dead but have a significant difference in gain, so they can not be compensated with the shutter).
Maybe it could be even possible to predict the drift between shutter calibrations and remove the remaining nonuniformity.
I would not convert the data to 8bit before applying the palette: The hot metal palette allows to display about 1024 different colours. Especially after scaling the image to double size, this gives a much more smooth display and shows more details than rounding to 8bit.Yep, I used this Iron palette at size 256 so far, ONLY for the reason that any sensor available raw data provided there I was able to obtain was from those images included in this thread and they are degraded to RGBA 8bit per channel, but in my libseekthermal.so.1.01 I use DOUBLE matrix in image processing operations, so with acceess to oryginal 14bit sensor data it is easy to convert them to double, make image processing enhancements and then take for example 10bit palette so about 1024 palette size not 256.
void seek_thermal_lut_iron256_get(unsigned int idx, unsigned char *pr, unsigned char *pg, unsigned char *pb );
unsigned int seek_thermal_lut_iron256_size();
Mike,If that was the case, the effect would be the same with the shutter open or closed.
Regarding the temperature gradient issue.
I thought he same as you when I saw teh small aperture at the rear of the lens 'tube'. I am slo considering the eefect that may be caused when teh lens 'tube' touches teh microbolometer on one side as appeared to be the case in your video.
If the lens tube is warmer than the microbolometer, contact between teh two could potentially cause a localised heat transfer into the microbolometer. The area in contact and adjacent would be warmed but the opposite side of the microbolometer is adjacent to the shutter access hole and may stay cooler as a result due to air cooling. As the camera warms up, teh lens tube may continue to rise in temperature and cause greater temperature differential impact on teh microbolometer. Just a thought.
Aurora
I only skimmed though the video, but from my experience with superresolution (both as final product embedded in a digital camera and playing with some algorithms) it works in theory but is not really good for practical usage except with a lot of manual tweaking for each scene.The man having the lecture was obviously involved in developing this feature in TESTO thermal cameras:
I've been playing with it too and results are encouraging. (See attachement)Wow, that looks great! The resolution fits, but they look too good to be images from the seek camera.
No they aren't because I don't have the module yet.That is exactly what most people do: Taking an image, resizing it and using superresolution to recreate the original file. This works well, but with real images it gets hard.
What I have done:
- resize all 4 images to 50%
There seem t be happy customers there and pictures look pretty reasonable for $199 !Did you saw this comment by "Louis Rigo Jr" :-DD
How about you stop trying to sell and give iPhone users an update!?!
Update: Raster of 8x8 pixels cleary visible and it does not look better than simply linear resize I used from 208x156 to higher 832x624 >:DThe 8x8 blocks are probably due to jpeg compression, they are also on the visible image.
I decided to give SEEK a small 'prod in the ribs' and publicly ask them to comment on the thermal gradient, noise, dead pixel count and their lack of response to email on the topic. It may be a bit mean of me to out the issues on Facebook but SEEK need to improve their attitude and communications if they are to be a competitor in the thermal camera marketplace. I would have expected Ex Indigo employees to know that already. Sometimes you have to be cruel to be kind.
Fraser
Its obvious they have done heavy post processing to make the image look good enough to sell to consumers.Thx for this link.
The 8x8 blocks are probably due to jpeg compressionLater realized that too and missed it's not PNG when investigated this ;)
Seek Thermal has been following this thread with great interest. We would like to be as transparent as possible, ...
Thank you again for your interest in our product, we look forward to continuing our dialogue with the community.
Best,
The Seek Thermal Team
Dark Pixels. No great mystery here. Every 15th pixel is intentionally blanked to avoid a potential patent infringement.I'm really curious to know what patent claim this works around - Flir (I presume it's them!) have a lot of patents to comb through though....
Dark Pixels.There is close to 7% such useless black pixels, so it might affect image quality depending on application :-DMM
...
With the effective blur length of a 12 micron pixel resolving 8-13 micron Radiation, loss of single isolated pixels does not (in itself) degrade image quality.
Seconded; if anything I'd think that specific pattern of black pixels was a patented technique for something like calibration as suggested earlier, and a sensor with all functional pixels would be too obvious to patent. But then again, I'm not so surprised, given the absurdity of some of the patents out there.Dark Pixels. No great mystery here. Every 15th pixel is intentionally blanked to avoid a potential patent infringement.I'm really curious to know what patent claim this works around - Flir (I presume it's them!) have a lot of patents to comb through though....
Could be something really silly like "a contiguous array of 15 or more pixels"...Seconded; if anything I'd think that specific pattern of black pixels was a patented technique for something like calibration as suggested earlier, and a sensor with all functional pixels would be too obvious to patent. But then again, I'm not so surprised, given the absurdity of some of the patents out there.Dark Pixels. No great mystery here. Every 15th pixel is intentionally blanked to avoid a potential patent infringement.I'm really curious to know what patent claim this works around - Flir (I presume it's them!) have a lot of patents to comb through though....
Hello, we are not alone in this thread ;)Dark Pixels.There is close to 7% such useless black pixels, so it might affect image quality depending on application :-DMM
...
With the effective blur length of a 12 micron pixel resolving 8-13 micron Radiation, loss of single isolated pixels does not (in itself) degrade image quality.
BTW: Maybe, It could be nice to send each EEVblog member in this thread who made some effort and wrote more than 3 posts there, brand new Seek Thermal for teardown with latest software on CD/DVD ? >:D
OK-software not so important, one can write his own, but Seek experimental hardware dongle from Santa Claus to European EEVblog fans banned so far from official relase could be a very nice surprise and clear evidence that really Seek Thermal Team is there on EEVblog ::)
I could for example test my Linux version of Seek Thermal app on real hardware, not only on USB sniffied 8bit channel RGBA PNG's :D
It is probably more difficult to compensate. From mike's video it seems to be dependend on the temperature: If the measured temperature is at the same temperature as the lens assembly, there is almost no gradient, but looking at a much warmer or colder object, the gradient gets more pronounced.
@Hyperion
Considering the temperature span of about 100°C the gradient looks much worse than 2-3°C in your image, more like 10-20°C.
The reason why it is important to me is because my main purpose for this device is to simply scan my immedieate area for life (humans and/or animals) while I go on night hikes using NOD. I hike in an area with wildlife and it freaks me out when I hear something rattling the leaves.
The reason why it is important to me is because my main purpose for this device is to simply scan my immedieate area for life (humans and/or animals) while I go on night hikes using NOD. I hike in an area with wildlife and it freaks me out when I hear something rattling the leaves.
The gradient issue is really only a problem for people using the camera for commercial applications like heat leak or moisture inspections, electronics thermal characteristics, or anything that needs a very flat field. Scanning for signs of life (hunters, security, front lines combat) isn't so much affected by a gradient. Which this sensor, even if somewhat handicapped, does effortlessly. If all you are after is detection of a somewhat warmer object from its surroundings, the minimal gradient shouldn't cause any problems. Its really more of annoyance that debilitating. I think this whole design is full of win, and it seems more than adequate...but I think there's plenty of juice left in the lemons.
The inherent issue with this forum is that it brings together a lot of experts and "tech tweakers" who will not be happy until they have a FLIR E8 equivalent device for $200 or a camera that outputs something like this (NSFW?)I'm happy with this MLX90614 Digital, plug & play, infrared thermometer in a TO-can (http://www.melexis.com/Infrared-Thermometer-Sensors/Infrared-Thermometer-Sensors/MLX90614-615.aspx)
"Factory calibrated in wide temperature range: -40 to 125 °C for sensor temperature and -70 to 380 °C for object temperature."while it costs <$10 and by adding a few low cost components I can detect easy and quickly and what is the most important without any temperature gradients energy losses in house as well as find hot places on ground and do many other things which are not possible to do with device like Seek Thermal, when it has such huge hardware issue like this weird gradient, which makes this thermal camera simply NOT RELIABLE :o
Scanning for signs of life (hunters, security, front lines combat) isn't so much affected by a gradient.Not reliable thermal camera is more dangerous than no such thing at all-for example now some drivers with this toy can feel king of the roads and drive very fast in the dark, because of they... have night vision, but... due to many reasons this what they are able to see in different conditions will not be the same so can easy to miss... for example humans on the bike... etc....
A few other notes on the gradient issue:Tanks for measuring. That is interesting.
Item Seek L Seek H delta
Hot Water 120 127 7
notepad 72 79 7
deck 52 63 11
Milk 39 49 10
overcast sky 30 43 13
IceCream 19 32 13
BTW, the low temperature tended to be the most accurate.
3/A user selectable 'span' or equivalent to manual exposure/gain would be great. As a thermal imager for amateur search and rescue or animal 'life' detection'outdoors, the inclusion of a any part of a clear sky at night (with its v low temperature) causes the span to change dramatically. Without any sky in the image the Seek works well for this, but image say a tree, with gaps with sky showing between branches, and the span automatically changes so dramatically it becomes near useless to detect anything a few degrees above ambient.
It seems like heat is internally injected into the sensor.Answer is simply type in Google search "Seek Thermal gradient issue" and what we get?
...
I wonder how they plan to compensate that in software.
"Google is preparing a new tweak to its search engine to ensure that some of the most ‘notorious’ piracy sites are less likely to appear when people search for music, films and other copyrighted content."
Dear Seek Customers:
We apologize again for the delay in shipping cameras. We have had several unanticipated issues that prevented our production from ramping up as quickly as originally planned. We’ve been working closely with our manufacturing partner to address these issues in order to fulfill our backorders as soon as possible.
This is the first time that thermal cameras have been produced on a mass production line, and assembling, aligning, and calibrating the high tech lenses and sensors requires multiple unique steps that have taken longer than we anticipated to ramp up to full capacity. Our company and our manufacturer are both dedicated to continue to increase production as quickly as possible, and we will also be adding a third shift next week. With these measures, and given our current production trends, we hope to catch up with all of the backorders within the next few weeks.
There is an additional issue that is currently preventing us from shipping any further iOS cameras from our existing inventory. Prior to accepting any orders, our cameras received hardware approval from Apple. However, we have recently received unanticipated additional requests from Apple, which we are actively working on with them. We hope to resolve these issues quickly so we can resume shipping the iOS cameras we are now manufacturing and building inventory on.
Our number one priority is getting cameras out to our customers as quickly as possible over the next few weeks.
Statement on their FB pageMaybe I woke up in some kind of another weird parallel universe today somewhere in the future, where nobody can attach to device he payed piece of hardware made by someone else who knows how to do it than device manufacturer business partners?Quote...
Prior to accepting any orders, our cameras received hardware approval from Apple. However, we have recently received unanticipated additional requests from Apple, which we are actively working on with them.
...
Why Seek Thermal can not simply sell this dongle to iOS users as well as other target platforms with software on... yes old good times CD and provide this software for download on HIS OWN web pages? :wtf:
It looks like we a're back in the past at the origins of internet now, but even that time on news groups one could get what he wants even had to wait some time to download it, but probably much less than for any approvals :palm:
Isn't customers who payed for these crappy phones should decide if they want to buy this toy or return it back if it is not this what they want since they bought it via internet so had no chance to play with it in normal shop...
Apple currently refuses connections to Bluetooth devices that lack their authentication chip.
I believe keyboards are about the only generic, non Apple-taxed thing they will pair with.Apple currently refuses connections to Bluetooth devices that lack their authentication chip.
What does this mean? I have been able to pair a generic Bluetooth keyboard with my iDevices and it works fine.
Apple currently refuses connections to Bluetooth devices that lack their authentication chip.
Flir have a patent on that. there is also the issue of different positions and fields of view of cams on different phones. maybe someone will write an app for it though
3 - Poor display definition - with a built in visible light camera it would be easy to boost the apparent definition. For example perform edge detection on the visible light
and apply as an alpha channel to the IR display.
4 - Poor display contrast - this is seriously easy stuff to bump the contrast so details can be distinguished.I suspect this is a deliberate tactic to hide noise.
Apple is probably the most proprietary-centric consumer product manufacturer out there.Anyway, may be better if Seek Thermal will leave them alone with their greatness if they do not want to be involved in similar lawsuits and release PC version with drivers for Linux, Window$, etc for price <$100 :-DD
"GTAT is prohibited from modifying any equipment, specifications, manufacturing process or materials without Apple’s prior consent. Apple can modify any of these terms at any time and GTAT must immediately implement Apple’s modifications."Apple? No thanks :rant:
I found this vid comparing Seek with Therm-app. sorry if this is a not so smart question to ask as I don't have much thermal background (or anything else :palm:) With future software revisions, does anybody think its posbile for seek to look similar to therm app?Ther therm-app lens alone probably costs more than the Seek
http://youtu.be/5FvVJE-qLhw (http://youtu.be/5FvVJE-qLhw)
An update, I've just discovered that if I use the direct url for the Thermal App I can install it from New Zealand, even though a search on Google Play won't show it.
Direct url :https://play.google.com/store/apps/details?id=com.tyriansystems.SeekThermal&hl=en&rdid=com.tyriansystems.SeekThermal (https://play.google.com/store/apps/details?id=com.tyriansystems.SeekThermal&hl=en&rdid=com.tyriansystems.SeekThermal)
Didn't work for me - after the "please login to download" prompt I get "Page not found"Does APK Downloader help in those situations?
@Mike, URL works OK from my Moto G but no camera found for download. Not sure if you need the Seek plugged in to install ? My Seek has just arrived at its USA destinatiom so hopefully not long until I can test it.
Flir have a patent on that.
@Mike, URL works OK from my Moto G but no camera found for download. Not sure if you need the Seek plugged in to install ? My Seek has just arrived at its USA destinatiom so hopefully not long until I can test it.No - the app can be installed, and run in demo mode without the camera, at least when installing from a .apk file
Here's a thermie of my cat. Really shows the detail the camera can achieve.That doesn't look quite right unless it's an inverted palette... the eyes should be much hotter:
Here's a thermie of my cat. Really shows the detail the camera can achieve.That doesn't look quite right unless it's an inverted palette... the eyes should be much hotter:
http://traveldave.com/wp-content/uploads/2010/02/thermalcat2_sm.jpg (http://traveldave.com/wp-content/uploads/2010/02/thermalcat2_sm.jpg)
https://athermallife.files.wordpress.com/2012/02/cat.jpg (https://athermallife.files.wordpress.com/2012/02/cat.jpg)
http://cnet1.cbsistatic.com/hub/i/2014/01/07/7d42182c-8533-11e3-bc97-14feb5ca9861/208f1d19dc978f193aaa148996f169d7/flirone.jpg (http://cnet1.cbsistatic.com/hub/i/2014/01/07/7d42182c-8533-11e3-bc97-14feb5ca9861/208f1d19dc978f193aaa148996f169d7/flirone.jpg)
I found this vid comparing Seek with Therm-app. sorry if this is a not so smart question to ask as I don't have much thermal background (or anything else :palm:) With future software revisions, does anybody think its posbile for seek to look similar to therm app?
http://youtu.be/5FvVJE-qLhw (http://youtu.be/5FvVJE-qLhw)
I agree with Amyk. I do not expect the nose and the eyes to be the same value in a thermal image!Here's a thermie of my cat. Really shows the detail the camera can achieve.That doesn't look quite right unless it's an inverted palette... the eyes should be much hotter:
That is the "Black" pallet. Which is the inverse of "White".
In "black" hottest objects are darkest, so the cat looks as expected. I still think "Tyrian" is my favorite.
The cat does look a bit visible-spectrumy...
Also anyone owns both a TIC and a guinea pig? I'd like to see that...
The cat does look a bit visible-spectrumy...Cat simply could sleep, than many people reported even without thermal cameras that his nose will be warmer than usual and it doesn't have to mean that it is sick ;)
The cat does look a bit visible-spectrumy...
Also anyone owns both a TIC and a guinea pig? I'd like to see that...
The cat does look a bit visible-spectrumy...
Also anyone owns both a TIC and a guinea pig? I'd like to see that...
I assure you it was a real shot through the camera. And it wasn't post processed outside the seek app.
Close up lenses are used to provide detailed images of PCB's etc.
Close up lenses are used to provide detailed images of PCB's etc.
I've put up a simple holder for the 20mm ZnSe lenses over at Thingiverse. It's just a friction fit which depends on the asymmetry of the camera face to hold it in place, but it seems to do the trick. Should do well enough to keep handy in the toolbag. http://www.thingiverse.com/thing:525605 (http://www.thingiverse.com/thing:525605)
I think the security/surveillance people use the blackhot palette. The whitehot feels just so much more natural to me...
Close up lenses are used to provide detailed images of PCB's etc.
I've put up a simple holder for the 20mm ZnSe lenses over at Thingiverse. It's just a friction fit which depends on the asymmetry of the camera face to hold it in place, but it seems to do the trick. Should do well enough to keep handy in the toolbag. http://www.thingiverse.com/thing:525605 (http://www.thingiverse.com/thing:525605)
Weird thing about flatfield calibration...if i do the magnet trick, obviously it takes whatever it sees and uses that to sub out each frame. But on the very next flat field where i let the shutter work, a ghost image of the last flat field (like hot objects) is still present, but less. l think Seeks software is averaging flat fields. A bug?
Not sure I can agree about the focus statement.Could you in spare time try to make thermal images with Flir which has this MSX available of hot gorund like those from http://wildfiretoday.com/2014/10/27/a-thermal-infrared-camera-attachment-for-smart-phone/ (http://wildfiretoday.com/2014/10/27/a-thermal-infrared-camera-attachment-for-smart-phone/) shown by me in prev posts and its grayed visual there?
To be clear on MSX.I saw this Flir's patent claim and while they make this transparency they have to modify thermal image in a way I do not like at all to show transpareny on their output images,
...
The idea of fusion was enhanced by allowing the transparency of the visible light image to be adjusted in order to have lower impact on the thermal image data that was being displayed.
Does anybode know how to convert the 16bit image data to absolute temperature values?
have any pictures you've taken with this setup?Close up lenses are used to provide detailed images of PCB's etc.
I've put up a simple holder for the 20mm ZnSe lenses over at Thingiverse. It's just a friction fit which depends on the asymmetry of the camera face to hold it in place, but it seems to do the trick. Should do well enough to keep handy in the toolbag. http://www.thingiverse.com/thing:525605 (http://www.thingiverse.com/thing:525605)
I made a look into that code since I'm interested in own Linux USB driver if they resolve those gradient issues.Does anybode know how to convert the 16bit image data to absolute temperature values?Those are pre getting the real images but the range is about the same.
208x156 16 bits unsigned only 14 bits used.
Pretty much you want to capture the max and min value (ignoring dead pixels and reference ones, under 0x800) and then stretch them ramp them from min to max to fit on a 256 look up table. So (max-min)/256 should get you started.
So I've managed to reduce the noise using a convoluted method.You mean http://en.wikipedia.org/wiki/Moving_average (http://en.wikipedia.org/wiki/Moving_average) ? How many frames used and what is output frame rate from this sensor hardware catched by USB?
Yep, there are a couple at Thingiverse. I'll stick 'em over here as well, one each with a 100mm and 50mm aux lens.One question-is it possible from Seek Thermal application save output images like those you provided not in JPEG format, but in other losless like RGB PNG for example?
They are noisy and the resolution isn't world-changing but it's better than the "Ow! $#!% my finger!" test to answer the question "What's pulling all the current on this damned board?"
So I've managed to reduce the noise using a convoluted method.You mean http://en.wikipedia.org/wiki/Moving_average (http://en.wikipedia.org/wiki/Moving_average) ? How many frames used and what is output frame rate from this sensor hardware catched by USB?
For us, we need the ability to get the full framerate off the sensor, because right now it's only allowing around 9fps. Its averaging 5 frames together for each visible frame. By my math its about a 45fps sensor. Its a shame ITAR limits the fps on such a low resolution sensor.9 fps not so bad -if moving average of 8 were used than even on MPU it can be fast while divide by 8 in assembler can be performed by shifting bits and will be fast -no integer divide needed, and output 1 Hz frequency could be fine in many applications if we were able improve image quality 8)
I did manage to compile the seeker windows program on a dell venue tablet and run it with the camera plugged directly into the usb port.Nice, so if you could add a few lines of code where raw sensor data is read and output it simply as unsigned int or uint16_t to text file (than compress) without any comparisions and changing to 0 those pixels with 0x800 condition in this code-raw data as it comes from the sensor in format below (and include also thermal image of catched object as well as its visual image to see what light conditions it was: dark, normal working light) they maybe someone from the forum could be able to figure out what is in those last 2 columns in those raw sensor images.
/**
* (C) 2014 Eneuro
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <time.h>
void random_init() {
srand(time(0) );
}
double random_double() {
return ((double)rand())/RAND_MAX;
}
unsigned int random_14bit() {
// 2^14= 16384
unsigned int pixel= random_double()*16384;
if(pixel>=16384) {
pixel= 16384-1;
}
return pixel;
}
int main(int argc, char *argv ) {
unsigned int i, j, k, l, m, n;
unsigned int y,x, w= 208, h= 156, wh= w*h;
unsigned int img0, *img;
unsigned int f, frames= 8;
random_init();
img= (unsigned int*)malloc(sizeof(unsigned int)*wh );
// frames
for(f=0; f<frames; f++ ) {
// frame
// Create random image with 14bit data or read from sensor
for(i=0; i<wh; i++ ) {
img[i]= random_14bit();
} // Create random image with 14bit data or read from sensor
// Output frame
// rows
for(y=0; y<h; y++ ) {
// column
for(x=0; x<w; x++ ) {
img0= (unsigned int)img[y*w +x];
printf("%05u ", img0 );
} // column
printf("\n");
} // rows
printf("\n\n");
// Output frame
// frame
} // frames
return 0;
}
so, each frame in this text file could look like this below separated by 2 empty lines (it is LF 10 dec codes on Linux and CRLF 13 dec 10 dec on Window$ as text new line character(s) ).I made a look into that code since I'm interested in own Linux USB driver if they resolve those gradient issues.Does anybode know how to convert the 16bit image data to absolute temperature values?Those are pre getting the real images but the range is about the same.
208x156 16 bits unsigned only 14 bits used.
Pretty much you want to capture the max and min value (ignoring dead pixels and reference ones, under 0x800) and then stretch them ramp them from min to max to fit on a 256 look up table. So (max-min)/256 should get you started.
This hardcoded 0x800 looks bad in this code, as well as fitting to 256 LUT- while we have 14bit using 1024 LUT could give much better results.
Also averaging/convolution methods used in this code are computational not efficient- it can be done much faster using a little bit memory which is not concern on modern devices while we'are processing 208x156 raw sensor data.
Also it does not use any moving average between frames, so no chance to make this image less noisy by mounting this thermal dongle on tripod to avoid any movements while it does not have any stabilization.
I suggest reading image processing publications to make this code more efficient, however USB communication part might be usefull if someone have no chance to make USB sniffing :-+
I did manage to compile the seeker windows program on a dell venue tablet and run it with the camera plugged directly into the usb port. I notice a lot of white specs along with dead pixels and the null pixels. We'll just call those patent pixels.That was my intent for usage as well, I bought my wife a Venue tablet last year and she doesn't use it for fear to damage the screen.
Since 16 bit grayscale doesn't seem to be supported, I had to do 48 bit color (with R=G=B).Gray Alpha channels in PNG could be used-easy to write using libPNG ;)
"Flexible Image Transport System (FITS) is an open standard[3] defining a digital file format useful for storage, transmission and processing of scientific and other images."
Since 16 bit grayscale doesn't seem to be supported, I had to do 48 bit color (with R=G=B).Gray Alpha channels in PNG could be used-easy to write using libPNG ;)
http://www.libpng.org/pub/png/book/chapter08.html#png.ch08.div.5.4 (http://www.libpng.org/pub/png/book/chapter08.html#png.ch08.div.5.4)
However, this FITS image format (http://en.wikipedia.org/wiki/FITS (http://en.wikipedia.org/wiki/FITS)) can be very usefull there :-+Quote"Flexible Image Transport System (FITS) is an open standard[3] defining a digital file format useful for storage, transmission and processing of scientific and other images."
There is a few links to FITS docs, libs, sample files on NASA web pages:
The FITS Support Office at NASA/GSFC http://fits.gsfc.nasa.gov/ (http://fits.gsfc.nasa.gov/)
http://fits.gsfc.nasa.gov/fits_documentation.html (http://fits.gsfc.nasa.gov/fits_documentation.html)
http://fits.gsfc.nasa.gov/fits_libraries.html (http://fits.gsfc.nasa.gov/fits_libraries.html)
I've downloaded for research this simple:
The Interactive FITS File Editor fv: http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv (http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv)
http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/fv_download.html (http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/fv_download.html)
ftp://heasarc.gsfc.nasa.gov/software/lheasoft/fv/fv53.exe (http://ftp://heasarc.gsfc.nasa.gov/software/lheasoft/fv/fv53.exe)
ftp://heasarc.gsfc.nasa.gov/software/lheasoft/fv/fv53_pc_linux64.tar.gz (http://ftp://heasarc.gsfc.nasa.gov/software/lheasoft/fv/fv53_pc_linux64.tar.gz)
With funtools library it should be easy add support for FITS images to application
https://www.cfa.harvard.edu/~john/funtools/ (https://www.cfa.harvard.edu/~john/funtools/)
https://www.cfa.harvard.edu/~john/funtools/funtools.pdf (https://www.cfa.harvard.edu/~john/funtools/funtools.pdf)
There is Definition of the Flexible Image Transport System (FITS) (http://fits.gsfc.nasa.gov/standard30/fits_standard30aa.pdf)
Using mentioned above fv it is easy view and modify eg. sample Hubble telescope image I've downloaded from NASA website for testing (it is just 16bit):
(http://s5.postimg.org/a9wf65fmr/fv_fits_viewer_editor.jpg) (http://postimg.org/image/a9wf65fmr/)
Which is more interesting contours can be added to those FITS image files as well as other data incuding tables, etc, so Flir's MSX no longer needed to add edges while we can output thermal image in this FITS format with contours :-+
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=116130)
No problem to load such FITS image even using GIMP, but probably this data is scalled to 8bit I guess,
so using software like fv is adwantage.
I've suggested simple text format for investigation purposes while no problem with bits order in different machines and it is easy to add only few lines of code to output this raw data while we have fixed size Seek Thermal sensor image data, so easier than include FITS library, but while NASA is using FITS and it is designed with backward compatibility for archives purposes, so it is well defined image format :-/O
the gradient is indeed still easily seen on the 16 bit raw output from the camera.How many dead pixels has your sensor? >:D
BTW, the gradient is indeed still easily seen on the 16 bit raw output from the camera. Just set the white and blackpoints to give high contrast and it shows up just like in the app.
One interesting artifact I notices is a oval light patter in the upper left corner just like sgstairs shown in post 312.
https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/312/ (https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/312/)
Too coincidental to be a random manufacturing glue or dirt I would think...but marshallh's image next to it didn't seem to show it, so it may be a batch thing.
But it's invisible in the app, so it must get compensated for in the calibration.
My raw images don't have any circles in the field but plenty of bad pixels. These things claim to pass QC before they are shipped. I think they are "allowing" a greater amount of bad sensors through because the demand is so high.
You can ignore all of the calibration frames if you want. If you look at sgstair's code byte 20 of the raw data (pixel 10) is used to determine if it's a cal frame or a good frame.
They already are on a separate buffer :)
I'm going to save off the cal frames separately so I can analyze them and possibly use them for image processing.It looks like libPNG outputs very nice 16bit gray images with a few lines of C code:
$ file seek_thermal_sensor_gray_16bit_test_by_eneuro.png(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=116195)
seek_thermal_sensor_gray_16bit_test_by_eneuro.png: PNG image, 208 x 156, 16-bit grayscale, non-interlaced
The raw sensor image you are showing looks pretty good compared to all the sensors raw outputs I've seen.Yep, this is of course simulation, while tested which PC software can read those 16bit gray images ;)
Reference pixels or dead pixels, the ones in the pattern are purposely turned off and they are every 15 pixels from this series modulus height: 10, 6, 2, 13, 9, 5, 1, 12, 8, 4, 0, 11, 7, 3, 14
So on the first row is: 10, 25, 40 ...
on the second row is: 6, 21, 36 ...
on the sixteenth row is the same as the first row: 10, 25, 40 ...
Not sure why it never starts on pixel 15 but it just doesn't.
I added code back on page 32, to interpolate those pixels, the same loop can be done to generate them.
Just declare a uint16 array of 208*156, and fill it with 0x8000, then use that loop and instead of averaging set those values to 0.
https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg538322/#msg538322 (https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg538322/#msg538322)
I'd be interested to understand how seek gets rid of most of the horizontal lines. They appear to be pretty fixed, so maybe some Flat Field is stored off.Maybe data from last 2 columns is used to modify somehow rows ;)
using nom.tam.fits;
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Fits f = new Fits(@"C:\temp\thermo\router_image2i.fit");
ImageHDU h= (ImageHDU) f.ReadHDU();
System.Array img = (System.Array[])h.Kernel;
int x = 0, y = 0;//for pixel position tracking
foreach (short[] collection in img)
{
Console.WriteLine("LineNo: "+ y);
foreach (UInt16 pixVal in collection)
{
Console.Write(pixVal + ",");
x++;
}
y++;
Console.WriteLine("");
}
Console.Read();
}
}
}
@ricksastroThe output fits and png's are unmodified, unscaled, unbiased, unstretched...they are how they come from the camera.
Nice 14bit sensor data :-+
Did you modified its pixels eg, those output FITS files and 16bit channel RGB (48bit) converted to 16bit gray PNGs or only this JPEG with screen shot from your software has calibrated pixel data in a way you descibed in your post ? ::)
BTW: It looks like those FITS files are flipped vertical so first row on PNG image is last on FITS etc ;)When I view either file (PNG or FITS), they look and act identical, unflipped. Must just be the way they store the FITS file or the way your library is handling them differently. I just did a"save-as" of the png file to the FITS from MaximDL, so no process that would do any flipping.
Once you perform the subtraction calibration, then you need to add some sort of bias, otherwise you'll get negative values.I research test software I use libPNG to load 16bit gray PNG 208x156 images, and then convert it to double so no problem with negative values ;)
index= round(val_double*LUT_size);
Once you perform the subtraction calibration, then you need to add some sort of bias, otherwise you'll get negative values.I research test software I use libPNG to load 16bit gray PNG 208x156 images, and then convert it to double so no problem with negative values ;)
When you mathematically subtract the calibration frame from the thermal frame, those areas in the thermal frame that are of a lower temperature than the calibration frame will mathematically be negative no matter the format unless you add in a bias to compensate.I forgot about those calibration frames for the moment at all, while just processing visual web cam outputs in OpenCV ;)
Seek Thermal has been following this thread with great interest. We would like to be as transparent as possible, realizing that competition may use this as ammunition, but we believe that in the end we will be helped far more than hurt by an open and honest exchange.
Seek Thermal Inc. has been built from the ground up bring affordable IR sensors to the commercial market.
We greatly appreciate the professional attitude and creative troubleshooting your collaborators have demonstrated. We are actively reviewing our product to confirm your findings. Identifying these issues early in our production cycle gives us a good opportunity to implement improvements when appropriate. With the low cost of our camera some compromises need to be made between performance and cost. We will be looking for cost effective improvements to address some of the issues you have identified.
Epoxy invasion. The good news is that our lens attachment process is fully automated. Thus the process ‘should’ be well controlled and any corrective action should be effective with low variability.
We image test every detector visually before shipment, so the worst units will be screened out. Our experience is that anything under the shutter will be almost perfectly removed by a Flat Field Calibration.
Thermal Gradient over time, We are actively investigating possible improvements to this issue. No resolution or definite direction yet. Note that for ‘relative’ thermography where the spot is fixed in the center of the display, we expect thermography to retain its ‘relative’ accuracy.
Dark Pixels. No great mystery here. Every 15th pixel is intentionally blanked to avoid a potential patent infringement. Seek has an updated design for future product that eliminate the need for this measure. With the effective blur length of a 12 micron pixel resolving 8-13 micron Radiation, loss of single isolated pixels does not (in itself) degrade image quality.
Thank you again for your interest in our product, we look forward to continuing our dialogue with the community.
Best,
The Seek Thermal Team
----------- NOV 3 --------------------
I hope some of the seek engineers are still following this thread, because I have a pretty good question for them...
Why is there a ghost image that slowly reappears strongest right before a flat field event? It doesn't have to be an intentional image (like holding the shutter open during a flat field to see it), I notice it creeps back in after a calibration, no matter what it is. Sometimes the flatfield image shows up as blocky hotspots, and it gets hotter right before a fresh flat. Whatever the sensor looked like during the calibration, that image slowly appears right before a new flat field. Even fixed pattern noise shows up. What...is going on?!
I just want to know the math involved in how you subtract the flat from each frame. I don't think its a trade secret or anything, but its clearly some kind of bug. I know sometimes I get 5 frames on a flatfield, sometimes it's only one frame. I tested this while waving the camera with the shutter forced open.
-------------- END POST. -----------
Please confirm that this only occurs when you interfere with the shutter?
If you interfere with the shutter you can confuse the temporal drift algorithm.
Thanks,
Seek Technical Team
Thus, while some have suggested a user triggered 'Secondary’ calibration, that is an extra step that could require a significant amount of user education for nonprofessionals, and lead to frustration when the gradient returns.
It's not uncommon for software to have an "advanced" mode for additional functions that might confuse stupid peopleThus, while some have suggested a user triggered 'Secondary’ calibration, that is an extra step that could require a significant amount of user education for nonprofessionals, and lead to frustration when the gradient returns.
With all due respect this is what makes today's computer tech unusable. With UI being replaced by UX and settings which would "get in the way of either designing a minimalistic interface or maybe could confuse some slower users" simply get removed, nothing can be really customized, all configuration is left to the engineers or worse the marketing people and users have to stick it out...
Why not make two flavours of the program (or APP, as is popular to say today) or maybe include a submenu (with a warning) for the "pros"?Censorship is not allowing a man to have a steak because a baby can't chew it.--Mark Twain
(I run Linux on my computers and have long thought this wouldn't get to me, and then Gnome 3 came out and with each and every major update more settings went missing...)
It's not uncommon for software to have an "advanced" mode for additional functions that might confuse stupid peopleThus, while some have suggested a user triggered 'Secondary’ calibration, that is an extra step that could require a significant amount of user education for nonprofessionals, and lead to frustration when the gradient returns.
With all due respect this is what makes today's computer tech unusable. With UI being replaced by UX and settings which would "get in the way of either designing a minimalistic interface or maybe could confuse some slower users" simply get removed, nothing can be really customized, all configuration is left to the engineers or worse the marketing people and users have to stick it out...
Why not make two flavours of the program (or APP, as is popular to say today) or maybe include a submenu (with a warning) for the "pros"?Censorship is not allowing a man to have a steak because a baby can't chew it.--Mark Twain
(I run Linux on my computers and have long thought this wouldn't get to me, and then Gnome 3 came out and with each and every major update more settings went missing...)
It's not uncommon for software to have an "advanced" mode for additional functions that might confuse stupid people
It's not uncommon for software to have an "advanced" mode for additional functions that might confuse stupid people
no, its INDUSTRY STANDARD to have separate advanced/manual menu, every frickin point and shoot digital camera on the market has some kind of manual menu. It sits unused on 99.9% of cameras because like you said average potato people are too stupid to use it, but its there nonetheless.
software (OSes mainly? maybe apple software in general lately) seems to be the exception, constantly dumping down UI, catering to the lowest common denominator and making it less usable in the process.
# You will need to have python 2.7 (3+ may work)
# and PyUSB 1.0
# and PIL 1.1.6 or better
# and numpy
# and scipy
# and ImageMagick
# Many thanks to the folks at eevblog, especially (in no particular order)
# miguelvp, marshallh, mikeselectricstuff, sgstair and many others
# for the inspiration to figure this out
# This is not a finished product and you can use it if you like. Don't be
# surprised if there are bugs as I am NOT a programmer..... ;>))
import usb.core
import usb.util
import sys
import Image
import numpy
from scipy.misc import toimage
# find our Seek Thermal device 289d:0010
dev = usb.core.find(idVendor=0x289d, idProduct=0x0010)
# was it found?
if dev is None:
raise ValueError('Device not found')
# set the active configuration. With no arguments, the first
# configuration will be the active one
dev.set_configuration()
# get an endpoint instance
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]
ep = usb.util.find_descriptor(
intf,
# match the first OUT endpoint
custom_match = \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_OUT)
assert ep is not None
# Deinit the device
msg= '\x00\x00'
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
# Setup device
#msg = x01
assert dev.ctrl_transfer(0x41, 0x54, 0, 0, 0x01)
# Some day we will figure out what all this init stuff is and
# what the returned values mean.
msg = '\x00\x00'
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
ret1 = dev.ctrl_transfer(0xC1, 0x4E, 0, 0, 4)
ret2 = dev.ctrl_transfer(0xC1, 0x36, 0, 0, 12)
#print ret1
#print ret2
#
msg = '\x20\x00\x30\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret3 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x40)
#print ret3
#
msg = '\x20\x00\x50\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret4 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x40)
#print ret4
#
msg = '\x0C\x00\x70\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret5 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x18)
#print ret5
#
msg = '\x06\x00\x08\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret6 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x0C)
#print ret6
#
msg = '\x08\x00'
assert dev.ctrl_transfer(0x41, 0x3E, 0, 0, msg) == len(msg)
ret7 = dev.ctrl_transfer(0xC1, 0x3D, 0, 0, 2)
#print ret7
#
msg = '\x08\x00'
assert dev.ctrl_transfer(0x41, 0x3E, 0, 0, msg) == len(msg)
msg = '\x01\x00'
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
ret8 = dev.ctrl_transfer(0xC1, 0x3D, 0, 0, 2)
#print ret8
#
x=0
while x < 5:
# Send read frame request
msg = '\xC0\x7E\x00\x00'
assert dev.ctrl_transfer(0x41, 0x53, 0, 0, msg) == len(msg)
ret9 = dev.read(0x81, 0x3F60, 1000)
ret9 += dev.read(0x81, 0x3F60, 1000)
ret9 += dev.read(0x81, 0x3F60, 1000)
ret9 += dev.read(0x81, 0x3F60, 1000)
# Let's see what type of frame it is
# 1 is a Normal frame, 3 is a Calibration frame
# 6 may be a pre-calibration frame
# 5, 10 other... who knows.
status = ret9[20]
if status == 1:
# Convert the raw calibration data to a string array
calimg = Image.fromstring("I", (208,156), ret9, "raw", "I;16")
# Convert the string array to an unsigned numpy int16 array
im2arr = numpy.asarray(calimg)
im2arrF = im2arr.astype('uint16')
if status == 3:
# Convert the raw calibration data to a string array
img = Image.fromstring("I", (208,156), ret9, "raw", "I;16")
# Convert the string array to an unsigned numpy int16 array
im1arr = numpy.asarray(img)
im1arrF = im1arr.astype('uint16')
# Subtract the calibration array from the image array and add an offset
additionF = (im1arrF-im2arrF)+ 800
# convert to an image and display with imagemagick
toimage(additionF).show()
x = x + 1
What it's interesting is that if I point the camera to a different heat source than the reference one I only get the reference pattern pixels to be the same, all the other pixels are different.How much those dead looking sensor pixels close to black does change?
In the router_image1c.fit and router_image2i.fit files the last value (208th) is always 32768 (1000 0000 0000 0000).I think at some point during conversion of the data 32768 has been added. In the images recorded by marshallh (https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg533801/#msg533801 (https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg533801/#msg533801)) the 208th value is 0 and the 207th is around 5200. There is a clear tendency over all frames from 5250 in the first to 5211 in the last. There is no difference between the reference or any other frame. Maybe it is the sensor temperature.
The 207th values are just a little apart in this two files:
4607, 5364
4612, 5365
4609, 5366
4612, 5362
4607, 5362
4604, 5358
4605, 5357
4607, 5359
4606, 5358
4605, 5359
4602, 5356
4605, 5359
4601, 5354
4602, 5354
4606, 5351
4602, 5353
4600, 5352
4601, 5350
4600, 5352
4598, 5350
4599, 5350
4598, 5351
4598, 5350
4599, 5345
Maybe they have added a black pixel at the end of each line.
In our first post we thanked the collaborators in this forum for their professional and helpful comments and suggestions. Your response since has been even more impressive. We are grateful.
Thermal Gradient: We have been able to reproduce the thermal gradient effect that several people have reported. We are now working on a software solution and will incorporate it into an app update within the next month.
One goal for the Seek camera has been ease of operation since we are positioning it as the first general consumer thermal camera. Thus, while some have suggested a user triggered 'Secondary’ calibration, that is an extra step that could require a significant amount of user education for nonprofessionals, and lead to frustration when the gradient returns. In that spirit we are focused on a fully automatic compensation solution in the upcoming application update.
Thanks again,
Seek Technical Team
We could try to subtract 207th value from each line pixel and see if the image gets better/worse...It gets much better!
I know this might be a shot in then dark, but perhaps the patent pixels are working thermistors...which means maybe they are reading the temperature of the sensor. Maybe each line is an average of the readings from those pixels? Declining values would point me to think that the resistance is falling (heating) and thus the values are mapped.
I know this might be a shot in then dark, but perhaps the patent pixels are working thermistors...which means maybe they are reading the temperature of the sensor. Maybe each line is an average of the readings from those pixels? Declining values would point me to think that the resistance is falling (heating) and thus the values are mapped.
patent pixels are always 0 they don't vary. (other than the first one that tells you if it's a cal frame or not)
@miguelvp,
Double check your count, I count 10 per line.
In the darker lines the 207th value is higher (~5300 instead of ~4900). Therefore they have to be added to remove the dark lines. This is a bit strange, because this means the 207th value uses a different sensor, or it is an already processed value. Maybe it is even the absolute temperature: 5200/256=20.3°C
It is not possible to remove the horizontal noise completely from both hot and cold areas with the same scaling factor. To remove the dark lines completely there are probably more calculations to be done:
I do not know, but I think the data is the non linearized data from the adc. To get the absolute temperature, you have to know some constants (I think it works the same way for all bolometers):
http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=4898.msg23972#msg23972 (http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=4898.msg23972#msg23972)
Therefore subtracting or adding raw values only works for a small temperature range before it gets nonlinear.
Does anybody know if other thermal cameras simply scale/offset the sensor data the same way we do, or do they linearize the data to temperature scale before applying the palette?
We could try to subtract 207th value from each line pixel and see if the image gets better/worse...It gets much better!
I have added 207th value/10 to each pixel of the line after subtracting the reference frame.
I think it is some sort of reference pixel for each line.
Technically you should be dividing by the number of thermistors counted on each line, which seems to vary.
As it gets warmer, the resistance decreases but not linear to the temperature. One degree change at low temperature could make a change of 100 on the ADC, while at high temperature it could be only 30 or less. That's why its hard to get accurate readings at high temperature, as the resolution drops.It is probably the reverse: I did some rough estimates with some old thermal images from a different camera using the min/max values on the thermal images and the min/max values of the raw data. The temperature to raw data conversion is more like exponential, higher temperatures have therefore a higher resolution. This matches the formula using ln() to calculate the temperature from the other forum I have posted.
I was hoping that subtracting the flat paper image from the router image would remove the lines and even out some of the pixel noise.Probably cats and human face are beter thermal objects than those router images ;)
As it gets warmer, the resistance decreases but not linear to the temperature. One degree change at low temperature could make a change of 100 on the ADC, while at high temperature it could be only 30 or less. That's why its hard to get accurate readings at high temperature, as the resolution drops.It is probably the reverse: I did some rough estimates with some old thermal images from a different camera using the min/max values on the thermal images and the min/max values of the raw data. The temperature to raw data conversion is more like exponential, higher temperatures have therefore a higher resolution. This matches the formula using ln() to calculate the temperature from the other forum I have posted.
I made a small animated gif out of several frames. The noise seems to be mostly static. It should be quite easy to remove it with a bit of additional processing. Furthermore there are a few pixels (always 2 adjacent) that seem to change constantly without any reference to the normal image. Maybe they contain other information?
We could try to subtract 207th value from each line pixel and see if the image gets better/worse...It gets much better!
I have added 207th value/10 to each pixel of the line after subtracting the reference frame.
I think it is some sort of reference pixel for each line.
As it gets warmer, the resistance decreases but not linear to the temperature. One degree change at low temperature could make a change of 100 on the ADC, while at high temperature it could be only 30 or less. That's why its hard to get accurate readings at high temperature, as the resolution drops.It is probably the reverse: I did some rough estimates with some old thermal images from a different camera using the min/max values on the thermal images and the min/max values of the raw data. The temperature to raw data conversion is more like exponential, higher temperatures have therefore a higher resolution. This matches the formula using ln() to calculate the temperature from the other forum I have posted.
I made a small animated gif out of several frames. The noise seems to be mostly static. It should be quite easy to remove it with a bit of additional processing. Furthermore there are a few pixels (always 2 adjacent) that seem to change constantly without any reference to the normal image. Maybe they contain other information?
Not sure if those are bright pixels or subtracted darker pixels from the calibration frame. Regardless, you should be able to do a bad pixel map of the patent pixels and those and median them out.
Also if you are taking images of static objects, you could take many frames and move the camera slightly between frames (dithering) and then stack the images using a sigma reject type of combination (after alignment of the subject) do all but eliminate the noise. This can also give you a "superresolution" if you align and combine higher res resampled iamges. The lower noise will allow more sharpening as well.
Not practical for many objects, but an interesting exercise nonetheless.
Adding them after being divided by 10 would give you the same relative image as just adding it without dividing by 10 (other than when you get over 2^16 but that can be fixed by reducing our introduced 0x8000=32768 d offset, say to 24K instead of 32K leaving 8K (8192d) on the table).If I do not divide by 10, the black line get white and white lines gets black. I need to scale the values down to reduce theie effect just so to compensation the lines in the original image.
The division just takes away some precision.
... build a loop that scans each pixels and compares it to its 4 neighbors. So find the average of x+1,x-1,y+1,y-1, divide that in to a variable. Subtract value of current pixel from the variable hosting the average, flip the sign so its positive, and replace the pixels value with the average if it is over or under the average by 10 (or however agressive you choose it to be.)
... build a loop that scans each pixels and compares it to its 4 neighbors. So find the average of x+1,x-1,y+1,y-1, divide that in to a variable. Subtract value of current pixel from the variable hosting the average, flip the sign so its positive, and replace the pixels value with the average if it is over or under the average by 10 (or however agressive you choose it to be.)
Already done that:
https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg538423/?topicseen#msg538423 (https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg538423/?topicseen#msg538423)
I went a step futher by checking which pair (horizontal or vertical) has smallest difference in color.
(This is to keep details on vertical and horizontal edges)
The average value of this pair is the new pixel value.
Bktemp, try what I said. You can't average out noise if it doesn't change on each frame. This works traditionally on astrophotography because the noise changes on each frame, so the real data can get averaged in. In our case, we have to do a neighbor comparison to find the bad pixels give them the average of their neighbors.
Bktemp, try what frenky did. Just cut and paste his code in, that should put the nail on this. Removing the banding first, then run the code frenky put up. Post an image and let us see how much better this sensor looksI do not try to avarage it out. I am trying to generate a black level reference image and subtract it from all images. This works well, as long as there are no big thermal differences. The image is almost noise free, without replacing any pixels. The nonlinearity is the main problem. I can tweak the gain to compensate either hot or cold areas, but not both.
You can't average out noise if it doesn't change on each frame. This works traditionally on astrophotography because the noise changes on each frame, so the real data can get averaged in. In our case, we have to do a neighbor comparison to find the bad pixels give them the average of their neighbors.
Not sure if those are bright pixels or subtracted darker pixels from the calibration frame. Regardless, you should be able to do a bad pixel map of the patent pixels and those and median them out.Why do you suggest to use median for those 2143 hexagon sensor pattern pixels?
Mat img = imread(fin, CV_LOAD_IMAGE_GRAYSCALE| CV_LOAD_IMAGE_ANYDEPTH );
The processing steps:Just thinking of FFT on reference frame and some kind of averaging aproximation before using this calibration data.
...
- reference frame subtracted
- black pixels removed
...
@bktempIt was this filter:
That image looks good up to right before that heavy filter you applied.
I'm curious, are these images already averages of 5 frames or are they individual frames? If so the noise could be filtered with frame stacking, but so far it looks really good!I have used the recorded USB data from marshallh:
Funny you should ask, I've been poking at this for a couple of days. I've written a Python program which uses PyUSB to capture calibration and Image Frames from the Seek Imager.
I used the term generically in reference to the neighbor pixel method presented here.Not sure if those are bright pixels or subtracted darker pixels from the calibration frame. Regardless, you should be able to do a bad pixel map of the patent pixels and those and median them out.Why do you suggest to use median for those 2143 hexagon sensor pattern pixels?
seek_thermal_test: Seek Thermal sensor hexagon pattern (black) pixel count in row: 14 14 14 13 14 14 14 13 14 14 14 13 14 14 13 14 14 14 13 14 14 14 13 14 14 14 13 14 14 13 14 14 14 13 14 14 14 13 14 14 14 13 14 14 13 14 14 14 13 14 14 14 13 14 14 14 13 14 14 13 14 14 14 13 14 14 14 13 14 14 14 13 14 14 13 14 14 14 13 14 14 14 13 14 14 14 13 14 14 13 14 14 14 13 14 14 14 13 14 14 14 13 14 14 13 14 14 14 13 14 14 14 13 14 14 14 13 14 14 13 14 14 14 13 14 14 14 13 14 14 14 13 14 14 13 14 14 14 13 14 14 14 13 14 14 14 13 14 14 13 14 14 14 13 14 14Probably it could be better apply this line tunning even before updating those hexagon pattern black pixels, while processing its neighbor with not corrected pixels in rows up and down will introduce incorrect values to processed row pattern pixels inside.
Probably it could be better apply this line tunning even before updating those hexagon pattern black pixels, while processing its neighbor with not corrected pixels in rows up and down will introduce incorrect values to processed row pattern pixels inside.It makes sense. I have already done that in my example unintentionally, by doing all subtractions at one place.
x = 10; // first black pixel is at x=10
for (y=0; y<156; y++)
{ for (; x<206; x+=15)
{ ...
}
x-=208+8;
if (x<0)
x+=15;
}
By the way, the easiest way to go through all hexagon pattern pixels:Yep, but anyway we need sensor hexagon pattern pixels matrix, for example when dealing with rows stats, so wrote it once and now it was easy too in OpenCV to generate some row stats from router calibration and image frames using this ;)
Mat hex= seek_thermal_black_dots_matrix();
...
for(i=0; i<h; i+=k ) { // i
val0= cor.at<ushort>(i, n); // 207th column
sum= 0;
m= 0;
for(j=0; j<n; j++ ) {
val= cor.at<ushort>(i,j);
if( hex.at<uchar>(i,j)>0 ) {
// Skip hexagon pattern pixel
} else {
sum+= val;
m++;
}
}
// Non zero pixels average
if(m>0 ) {
avg= sum/m;
} else {
avg= 0;
}
// Stats
fprintf(f,"%03u %0.3f %0.3f %03u %03u \n",
(i+1), avg, val0, m, n );
} // i
With above code I've got such nice stats of each row:row avg 207th count width
001 7947.229 5533.000 192 206
002 8029.047 5188.000 192 206
....
154 8198.523 5180.000 193 206
155 7953.286 4873.000 192 206
156 7892.047 5184.000 192 206
When we plot such pixels row averages vs this additional 207th column we get something like this for router raw data (router_image1c.png and router_image2i.png) provided earlier by @ricksastro:I was testing today this line tuning with 207th values.If you increase the gain applied to the 207th value it works for hot areas, but then it leaves stripes on dark areas.
I works great on low temp background, but on higher temp areas it adds light stripes.
So it probably should only be applied to the low temp areas...
Therefore I would convert the data to linear temperature scale before any further processing, but I have no idea how to do it.I have some idea how to tweak those temperatures, but no physical device for the moment :-/O
I wan't to see how accurate the central spot for the Seek is both at boot time and after being on for a while.It could be interesting another teardown of Seek Thermal for @mikeselectricstuff where he could test how accurate are those temperature spots shown in Android app in comparision to real temperature measurement made on heated object-for example using classic multimeter thermometer and maybe additionally IR thermometer with lase pointer.
October 30, 2014
Size
7.6M
Installs
1,000 - 5,000
Current Version
1.4.0.2
Requires Android
4.3 and up
Maybe will try download it later under Android and see if maybe inside is Seek Thermal users manual? :-//Technical Specs:
mUSB Thermal Camera for Android devices
Works on most Android devices running 4.3 or higher that support USB on the go. See Device List for Compatibility
True Thermal Sensor
206 x 156 Array
32,136 Thermal Pixels
12um Pixel Pitch
Vanadium Oxide Microbolometer
Chalcogenide Lens
36° Field of View
Magnesium Housing
Long Wave Infrared 7.2 - 13 Microns
-40C to 330C Detection
< 9Hz
Includes Protective Carrying Case
Model: UW-AAA
Very interesting is this < 9 Hz output frequency - does it mean it could be 1 Hz after some app updates? :-DDThere are 2 different scenes. One is taken against flat notebook paper (flatpaper) at ambient 73F. One is an image of my router (router).What about ambient temperature when you made those router images?
(%i56) max: 2^14;
(%o56) 16384
(%i54) tf: 5078.125/max*256;
(%o54) 79.345703125
(%i55) cel(79.345703125);
(%o55) 26.30316840277778
This means +3*C ~ +6*F difference between room ambient temperature and maybe those sensor zone thermistors formed in hexagon pattern "black pixels" ? :phew:@bktemp, the min/max value should be constant. The frame max and min values shouldn't be considered as they can change the calculated gain on individual pixels per frame. We need to find the lowest and highest reported values the sensor can display. I hope that clarifies my math.Ok, now I've got it. But that should not change much. Using the maximum and minimum values that can appear in the data you basically get the same as I have already used: pixel=pixel + (pixel+offset)/gain * 207th value
Has anyone received the iPhone version of the camera yet? The app is out so that is no longer an issue.There claim that they are still having issues with Apple hardware approval
Has anyone received the iPhone version of the camera yet? The app is out so that is no longer an issue.There claim that they are still having issues with Apple hardware approval
Has anyone received the iPhone version of the camera yet? The app is out so that is no longer an issue.There claim that they are still having issues with Apple hardware approval
Flir bribe bigger.
The intensity of the remaining horizontal stripes change after each calibration frame.How much does it change -more than 10% per minute? Did you tried to estimate this?
When you say shutter frame, do you mean that you have the option to actually ignore flat field events? When I tried sgstairs source the shutter still clicked away, so I assumed it was impossible to stop this even from happening. Like its handled by the firmware. Hmmm I wonder if anyone has messed with that chip yet...mike?Since I do not own a Seek camera, my only source of Seek raw data is the captured USB traffic from marshallh. It contains 75 image frames, 7 shutter frames and 6 preshutter frames.
Sine the only Seek raw data I have to work with contain only 87 frames, I can't give an absolute number. I did noticed some changes after the shutter frames. Not big, but noticeable. Maybe I am wrong and it is only the changing noise pattern that adds a different pattern to the stripes.The intensity of the remaining horizontal stripes change after each calibration frame.How much does it change -more than 10% per minute? Did you tried to estimate this?
@bktemp,
Bummer well it was worth a go. It seems reverse engineering this puppy is not so simple.
When you say shutter frame, do you mean that you have the option to actually ignore flat field events? When I tried sgstairs source the shutter still clicked away, so I assumed it was impossible to stop this even from happening. Like its handled by the firmware. Hmmm I wonder if anyone has messed with that chip yet...mike?
@bktemp,
Bummer well it was worth a go. It seems reverse engineering this puppy is not so simple.
When you say shutter frame, do you mean that you have the option to actually ignore flat field events? When I tried sgstairs source the shutter still clicked away, so I assumed it was impossible to stop this even from happening. Like its handled by the firmware. Hmmm I wonder if anyone has messed with that chip yet...mike?
There is a bit that tells you if it's a calibration frame or flat field event or not, you can ignore them but they are still going to happen since that is in control of the firmware.
Maybe there is some USB command that can be used to prevent it but as of now you can't prevent them from happening.
My gradient is the opposite. Its not cold, it's hot. The shutter starts off about the same temperature as ambient. The longer it runs it gets hotter, and it seems to run about as hot as the sensor. People report the sensor at around 38°C and that about 100°F, which is close to what my shutter reads when forced shut.
I have written to SEEK asking for their assistance with my development of their product for other uses. I will be working with a standard bare PCB without the SEEK lens as I will be adding some specialist optics. The camera will be temperature stabilised and adapted to work remotely from the host. Sadly I have yet to receive a reply from SEEK Thermal so they may be too busy or unwilling to assist me in this development work. I will have to wait and see if they respond over the next few days. Plan B will be to order some more SEEK cameras when they become available in the UK.I think they are way too busy with production to be spending time talking to people about special applications.
Aurora
And Seek responded and they think it might be possible to address the problem via software.They had to write something to keep people buying this since it is still in top google search "Seek Thermal gradient" issue :-DD
For the moment frustrated customers will listen to what will be done in... not defined future.
Simply it is not fair.
I've watched Mike's video several times and I am not sold on his solution (no offense Mike). I just can't comprehend how lens position would be the cause of a gradually apearing gradient.Could be change in temp of the lens housing (relative to the sensor and/or lens)?
I got my camera a few days ago. I agree the gradient issues basically ruins the device.Such thing should be found by Seek team before they send it to customers.
I opened my camera at work today, did some experiments, even cracked the glue free of the lens housing. My imager was free of any residue at all. I attempted to reposition the lens which made no appreciable difference. I tried all different ways to prove it was a thermal issue. I simply couldn't make a difference in the gradient. I also may have destroyed the sensor because I think the lens housing pushed some bond wires together and now I have a black image output. I have to get under a microscope and look, might need to just bump them free of each other. I hope. Otherwise it's $200 in the garbage.If it's unfixable, don't sling it.... I could do with a sacrificial unit to teardown the sensor and trace out the PCB.
I was not seeing a lot of unhappy posts on Facebook regarding the gradient issue which surprised me (remember they did not delete my question regarding such) so the user base appears unaware of a problem. From pictures shown here, it would appear to be obvious BUT I wonder......
I would be willing to try that if they would ship the damn thermal module to EU... |OMaybe there are also other reasons than ITAR limitations?
There are no ITAR issues (well at least not as far as the finished product is concerned ;) )I would be willing to try that if they would ship the damn thermal module to EU... |OMaybe there are also other reasons than ITAR limitations?
EUR-Lex Access to European Union law (http://eur-lex.europa.eu/homepage.html)
In the case of our country when normal person not company fill such complain form, than wait I'm not sure 30 days I guess, than if the problem is not resolved and make lawsuit in the court than when unsolved and not repaired issue was found within 6 months than in the case of court lawsuit manufacturer have to proove that there is no issue at all, while after 6 moonths customer have to proove it which in the case of modern technology can extremelly difficult and probably one had to pay for expert in this area.
I didn't gone througth court with such issues, but in many cases one email and official letter is fine, while company lawyers knows that one can make lawsuit vs them if they dismiss official document (not email).
So, talki that something will be done sometime by Seek Thermal maybe also simply game for time... to pass this 6 month pwriod-but ok I'm not a lawyer so in the case of broken thermal device maybe layers offize could help in US...
There is also another issue with Seek Thermal-for me is not acceptable there is no even end user manual available, which as I know is required in EU - I'm not usr ehot it looks like in US, so maybe if someone destroyed this device becouse of tried somehow "tune" this device to avoid this gradient, maybe there is a chance even without any lawsuits that will get his money back, because of there is NO SEEK THERMAL USER MANUAL available :box:
If they ship from the US to the EU, then it's a personal import and not subject to EU consumer lawReally? I have to investigate this in local customers lawyers office.
I've watched Mike's video several times and I am not sold on his solution (no offense Mike). I just can't comprehend how lens position would be the cause of a gradually apearing gradient.Could be change in temp of the lens housing (relative to the sensor and/or lens)?
The fact the lens was glued and I had no way to accurately hold & adjust everything meant it was difficult to conclusively prove anything - having to manually hold things may also have contributed some thermal effects.
It is possible that the temp was different between my original "before" and "after" results, though I did leave it off for a while to stabilise after I'd been handling stuff.
Must remember to try the lens form the Audi camera on it some time.
There is also another issue with Seek Thermal-for me is not acceptable there is no even end user manual available, which as I know is required in EUThere is help in the app. What's the big deal about a manual?
As the lens holder is no longer stuck down it can't really be used at the moment!
Mike, how does your unit perform with real use now that you've made the modifications? im interested in the quality of the pictures and video.
As the lens holder is no longer stuck down it can't really be used at the moment!
Mike, how does your unit perform with real use now that you've made the modifications? im interested in the quality of the pictures and video.
Something that might be interesting to try is heating/cooling the lens holder.
How often does it calibrate in normal operation?
I don't have a working cellphone (mine is CyanogenMod 11, which doesn't work with Seek) -- so I'm trying it with the computer USB connection...
Congrats on resurrecting your camera :phew:
You should have watched Mike's video about the bond wires, it almost happened to him but he dodged the bullet.
PX F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
01 3251 0 8733 15625 135 4256 8721 8278 8680 8701 8278 8683
02 0 2000 3237 15520 112 4257 3236 3236 3235 3234 3234 3234
03 3361 2000 8566 15626 139 4258 8540 8080 8500 8516 8076 8496
04 3221 2000 7266 15612 136 4129 7251 6772 7202 7227 6758 7200
05 3320 2000 6417 15588 139 4382 6384 5877 6360 6371 5878 6338
06 3304 2001 9039 15639 137 16287 9024 8570 8985 8997 8575 8968
07 3352 2001 7086 15587 141 4001 7067 6565 7026 7029 6560 7008
08 3133 2001 5748 15574 132 4255 5733 5223 5686 5699 5226 5673
09 3281 2001 6932 15589 138 4257 6914 6437 6882 6904 6427 6872
10 3088 2001 7765 15615 130 4257 7741 7293 7693 7707 7283 7688
11 4 9 8 7 10 5 1 3 6 1 3 6
12 3321 2002 6264 15595 140 4129 6255 5714 6201 6213 5710 6181
13 3353 2002 6949 15585 142 4223 6923 6404 6885 6892 6407 6859
14 3351 2002 8650 15623 141 3999 8635 8173 8603 8616 8176 8588
15 3408 2003 8593 15603 144 3998 8570 8088 8543 8540 8086 8520
16 3404 2003 6941 15600 142 4255 6919 6420 6870 6885 6406 6859
17 3397 2003 6417 15576 143 4126 6405 5887 6356 6374 5855 6349
18 3382 2003 8247 15611 143 4638 8229 7742 8177 8195 7732 8168
19 3432 2003 8360 15618 144 3868 8349 7862 8298 8305 7845 8292
20 3492 2004 7514 15604 146 4257 7491 6986 7450 7468 6984 7438
21 3391 2004 6048 15572 145 16289 6024 5486 5979 5991 5466 5969
22 3381 2004 6525 15587 144 3874 6500 5961 6462 6465 5957 6441
23 3263 2004 6276 15571 139 3746 6258 5746 6207 6227 5748 6205
24 3389 2005 6530 15580 143 4127 6511 5979 6458 6476 5981 6439
25 3488 2005 6730 15581 147 4000 6719 6185 6672 6687 6177 6656
26 0 2005 0 0 0 4511 0 0 0 0 0 0
27 3298 2005 5906 15568 140 4385 5883 5352 5847 5850 5351 5827
28 3392 2005 6634 15603 143 4095 6618 6077 6571 6580 6065 6556
29 3524 2006 9092 15630 149 4130 9059 8556 9022 9028 8560 9010
30 3474 2006 5879 15588 146 4256 5867 5271 5801 5814 5264 5788
31 3529 2006 7605 15604 147 4385 7582 7071 7540 7555 7067 7520
32 3602 2006 7792 15623 150 4255 7772 7243 7720 7740 7229 7705
33 3300 2007 6456 15596 140 4257 6436 5901 6376 6391 5893 6369
34 3266 2007 5959 15593 139 4513 5923 5388 5886 5900 5394 5867
35 3467 2007 9011 15668 142 4259 8998 8510 8959 8971 8514 8955
36 3469 2007 6178 15588 146 16288 6156 5583 6103 6118 5581 6087
37 3523 2007 8010 15598 149 4257 7981 7455 7939 7937 7446 7916
If the shutter is at an angle, as it has a slightly reflective finish, could it cause a change in the field? I can report my gradient has now moved, but only occupies one side of the image along the edge, and it doesn't go towards the center of the image. I didn't move the lens position.When we compare this Seek shutter with Flir E4 that probably the first suspect could be this Seek shutter, while there is no perfect symetry in its design and shutter holder with relative higher mass or maybe even comparable to its thin part when moves in sensor FOV than simply maybe faster moving end of shutter is cooled in air while part close to rotation point is at lower speed so I can imagine that there can be temperature difference.
So here are the first 8 frames of the camera facing down but not to scale range (value) wise, but so that the data is somewhat visible.Good work, but it is issue that those images are ONLY 8bit so they are useless for anything but display them only....
$ file Frame1.pngIf you provided those 16bit grayscale PNGs I suggested and using as input to my image processing soft while raw sensor data is 14bit, not 8 bit, then people could verify what you stated :-\
Frame1.png: PNG image, 208 x 156, 8-bit/color RGBA, non-interlaced
$ file sts_cal.pngThis is only two lines of code in OpenCV to output such 16bit grayscale PNG image after or durring processing from any internal matrix format:
sts_cal.png: PNG image, 208 x 156, 16-bit grayscale, non-interlaced
// Conversions
outf.convertTo(out, CV_16U, 16384 );
imwrite("sts_cal.png", out );
I used 16384 scaling factor since operated on real numbers 0.0..1.0 in software...it can be changed or keep oryginal raw sensor data intact...So here is some raw data, 20 frames from startup including those first 6 frames then calibration, capture and precalibration.It looks much better :-+ >:D
First file is with the camera facing down during startup for 20 frames.They were send at <10Hz ?
2nd file is with the camera facing the router during startup for 20 frames.
The next thing that needs to be done is to unlock that firmware. I'm curious to see how they process the frames off the sensor.ISTR someone said they'd found a firmware image in the .apk - should be fairly easy to determine if this is ARM code, or is obfuscated/encrypted.
First file is with the camera facing down during startup for 20 frames.They were send at <10Hz ?
2nd file is with the camera facing the router during startup for 20 frames.
Do you have any timing hint what frame rate in this raw data could be?
It could be helpfull to estimate when those events took place, so for example delays between calibration frames and normal-do they happen at the same constant frame rate and delay between each those frames?
Such time stamp information when each frame took place could help investigate this raw data...so suggested to output each frame with time stamp info.
OpenCV has builtin functions for calculating such timing, but one have to be carefull and check if task scheduling in OS doesn't affect those time stamp at higher frequencies :-/O
Has anyone made a USB API (something similar to the winusbdotnet program written by sgstair) in the form of a dll file that can be called from matlab?
I'll work on adding a time_t timestamp before each frame, what do you prefer, before capturing, after capturing, or both?I used to use this code to compute how much time some processing is made and when (of course using C/C++ OpenCV):
// http://docs.opencv.org/modules/core/doc/utility_and_system_functions_and_macros.html
double t= (double)getTickCount()/getTickFrequency();
calf.convertTo(cal256, CV_8U, 128 );
imgf.convertTo(img256, CV_8U, 128 );
outf.convertTo(out256, CV_8U, ((double)128/25.0) );
double dt= ((double)getTickCount())/getTickFrequency() -t;
fprintf(stderr,"%s: Timestamp: %0.9f [s] Processing time: %0.9f [s]\n",
argv0, t, dt );
It outputs nice time in seconds how when from system powerup something happened and processing time:./seek_thermal_opencv_test: Timestamp: 14736.406878773 s Processing time: 0.000353242] s
Frame 1 ID 4
08d1c9758415a0a4
08d1c97584209d4d <- 72.0041 ms
Frame 2 ID 9
08d1c97584209d4d
08d1c9758425584f <- 31.0018 ms
Frame 3 ID 8
08d1c9758425584f
08d1c97584384456 <- 124.0071 ms
Frame 4 ID 7
08d1c97584384456
08d1c9758441ba5a <- 62.0036 ms
Frame 5 ID 10
08d1c9758441ba5a
08d1c9758446755b <- 31.0017 ms
Frame 6 ID 5
08d1c9758446755b
08d1c975844b305d <- 31.0018 ms
Frame 7 ID 1
08d1c975844b305d
08d1c9758488d684 <- 404.0231 ms
Frame 8 ID 3
08d1c9758488d684
08d1c97584a07d8d <- 155.0089 ms
<- 4.0002 ms File Write delay
Frame 9 ID 3
08d1c97584a119cf
08d1c97584b36994 <- 120.0069 ms
<- 2.0001 ms File Write delay
Frame 10 ID 3
08d1c97584b3b7b5
08d1c97584c67cab <- 123.0070 ms
<- 1.0001 ms File Write delay
Frame 11 ID 6
08d1c97584c6a3bc
08d1c97584e2deb6 <- 185.0106 ms
Frame 12 ID 1
08d1c97584e2deb6
08d1c97584ff67d1 <- 187.0107 ms
Frame 13 ID 3
08d1c97584ff67d1
08d1c97585170ed9 <- 155.0088 ms
<- 2.0001 ms File Write delay
Frame 14 ID 3
08d1c97585175cfa
08d1c9758529fae0 <- 122.0070 ms
<- 1.0001 ms File Write delay
Frame 15 ID 3
08d1c975852a21f1
08d1c975853ce6e7 <- 123.0070 ms
<- 1.0001 ms File Write delay
Frame 16 ID 3
08d1c975853d0df8
08d1c9758554b520 <- 155.0120 ms
<- 0.9969 ms File Write delay
Frame 17 ID 3
08d1c9758554dc11
08d1c975856c5c09 <- 154.0088 ms
<- 1.0001 ms File Write delay
Frame 18 ID 6
08d1c975856c831a
08d1c9758588be13 <- 185.0105 ms
<- 1.0001 ms File Write delay
Frame 19 ID 1
08d1c9758588e524
08d1c97585a5472e <- 186.0106 ms
Frame 20 ID 3
08d1c97585a5472e
08d1c97585bcee37 <- 155.0089 ms
@eneuro, here you go, timestamps for all the first 20 frames,Thx, I hope someone else also will try to look into this raw data so will benefit from this timing info too :-+
Frame 1 ID 4
8D1C9A479478DFD
8D1C9A479526396 <- 71.0041ms
Frame 2 ID 9
8D1C9A479526396
8D1C9A479571E98 <- 31.0018ms
Frame 3 ID 8
8D1C9A479571E98
8D1C9A4796A0A9F <- 124.0071ms
Frame 4 ID 7
8D1C9A4796A0A9F
8D1C9A4797380A2 <- 62.0035ms
Frame 5 ID 10
8D1C9A4797380A2
8D1C9A479783BA4 <- 31.0018ms
Frame 6 ID 5
8D1C9A479783BA4
8D1C9A4797CF6A6 <- 31.0018ms
Frame 7 ID 1
8D1C9A4797CF6A6
8D1C9A479BA9CCD <- 404.0231ms
Frame 8 ID 3
8D1C9A479BA9CCD
8D1C9A479D243D5 <- 155.0088ms
<- 3.0002ms File Write delay
Frame 9 ID 3
8D1C9A479D2B907
8D1C9A479E9EADE <- 152.0087ms
<- 2.0001ms File Write delay
Frame 10 ID 3
8D1C9A479EA38FF
8D1C9A479FCFDF6 <- 123.0071ms
<- 1.0000ms File Write delay
Frame 11 ID 6
8D1C9A479FD2506
8D1C9A47A196000 <- 185.0106ms
Frame 12 ID 1
8D1C9A47A196000
8D1C9A47A35E91B <- 187.0107ms
Frame 13 ID 3
8D1C9A47A35E91B
8D1C9A47A4D9024 <- 155.0089ms
<- 2.0001ms File Write delay
Frame 14 ID 3
8D1C9A47A4DDE45
8D1C9A47A607C2B <- 122.0070ms
<- 1.0000ms File Write delay
Frame 15 ID 3
8D1C9A47A60A33B
8D1C9A47A736831 <- 123.0070ms
<- 1.0001ms File Write delay
Frame 16 ID 3
8D1C9A47A738F42
8D1C9A47A865438 <- 123.0070ms
<- 2.0002ms File Write delay
Frame 17 ID 3
8D1C9A47A86A25A
8D1C9A47A996750 <- 123.0070ms
<- 1.0000ms File Write delay
Frame 18 ID 6
8D1C9A47A998E60
8D1C9A47AB5C95A <- 185.0106ms
Frame 19 ID 1
8D1C9A47AB5C95A
8D1C9A47AD25275 <- 187.0107ms
Frame 20 ID 3
8D1C9A47AD25275
8D1C9A47AE9F97E <- 155.0089ms
I was looking at it more from the software side, with his fusion of thermal and visual images. mostly a visual image with thermal overlayed, almost the opposite of what flir is doing with msx.MSX is only strange name given by FLIR to simple few image processing tasks ;)
datascheet
I just read something the other day about patent trolls being hit with a new law that prevents "ideas" from being patented. So this heavily rolls on the fine line of software. Unless you stole code or your process matches the process of a piece of software, you can't be sued. Idea's are no longer protected, only material products. Imaginary bits ans bytes aren't really solid material things...so this should prove interesting.
So I've been adding some more information to display the max and min values of both the sensor raw frame and the calibration raw frame, ignoring values under 2000 and over 49152Seek Thermal sensor has 14bit output or more bits while @ 14bits maximum unsigned value is... 16383 ONLY so 50k value is 3 times bigger than 14 bit maximum, but Ok we'll see what I get from this raw data and compare :-//
That's fairly warm, enough to reflect off the flat bottom of a white lens holder.Do you mean this PCB part marked it with a more red in previous post?
So I've been adding some more information to display the max and min values of both the sensor raw frame and the calibration raw frame, ignoring values under 2000 and over 49152Seek Thermal sensor has 14bit output or more bits while @ 14bits maximum unsigned value is... 16383 ONLY so 50k value is 3 times bigger than 14 bit maximum, but Ok we'll see what I get from this raw data and compare :-//
Anyway watched again this Seek Thermal gradient issue teardown by @Mike and made those screenshots for some investigation, while it is cleary visible that this shutter looks smaller than sensor external top dimensions and it looks like without lens holders its end position is not limited and one sensor edge formed some kind of triangle not covering this sensor uniformly (selected shutter edges and made it more visible by adding more green).
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=117575)
*snip* maybe this affects temperature and that is why it is not uniform and we land with those strange gradients? :o
*snip*
I think you are onto something. its does look like the shutter leaves a sizeable corner of the sensor uncovered when it hits the inside of the holder wall. that corner is also where my gradient starts (assuming non inversion).Updated this my post above and added two more detailed imaged from @Mike, but first video teardown BEFORE he cut this part of lens holder and later in issue gradient teardown it was not such clear visible :o
Also to note that the camera has been running non stop for one hour and I don't see any gradient forming after my external calibration.
Also to note that the camera has been running non stop for one hour and I don't see any gradient forming after my external calibration.
right right
Also to note that the camera has been running non stop for one hour and I don't see any gradient forming after my external calibration.
right right
edit to add : good. continue with this. it helps to narrow down the culprit. less likely an issue with lens alignment or heat radiating in through the slot, and more likely an issue with calibration, the shutter shape, or the temperature of the shutter.
Just want to point out that if I use the internal shutter I don't see the gradient forming either. It's just noisier and harder to clean up than using the external reference image.
But that can be cleaned up via software maybe using those first 6 frames, so it does point to a software bug to me.
A slowly warming sensor is bouncing heat off the inside of the lens housing back at itself, which it can't account for if the shutter is blocking it during a calibration.This lens holder is metalic inside too, so shutter during calibration event removes part of the air inside and when leaves this sensor cage external heat is pumped inside from many air gaps in one corner side of the sensor, but whole internal lens holder will buildup temperature non uniformly.
Did anyone found any kind of temperature sensor on PCB in this Seek Thermal design?There is a diode on the rear which I'm pretty sure is used as a temp sensor.
Scenes with wide temperature ranges won't show the gradient because the gradient only shows itself when the palette is squished to fill a small range.Nope, you call gradient something that in fact is thermal image destruction in the corners and is more visible in one of them for reasons I wrote and modeled with glass block.
@efahrenholz,
Very nice analysis. Thank you.
That diaphragm in front of the microbolometer does seem quite invasive to the signal path and it seems very reasonable to believe that it could be causing radiation reflection issues for the microbolometer. I was not expecting narcissus effect from the lens tube but you may well be on to something here.
I am still considering options to replace the lens tube with something less enclosed, and now with less of a diaphragm, if any.
Thanks again.
Aurora
The lens holder is not electrically connected, so would not be very useful as a shield.
I don't believe you will be able to remove the lens housing from the design. It was intentional and I'll tell you why. Seek wanted this camera module on cell phones. Devices that blast all sorts of radiation which would easily be picked up by the small bond wires. They are short, but they are not so short that they can't receive interference. So the lens holder was probably designed as a Faraday cage of sorts.
I did come up with an idea that maybe we could remove the lens from the lens housing and just glue it to the rubber grommet, and shove that into the module case like it was designed toWouldn't be accurate enough.
The only solution I can foresee is external through the lens calibration.Before saw Flir's E4 approach where this cool shooter is put between sensor and lenses BUT inside metal cage with accurate ADT7031 temp sensor thermally coupled I was thinking that putting shutter in front before lens could do the job, but... no way :-\
$ sudo python seek.py
@miguelvp,
Any more progress on seeker?
I hope SEEK Thermal are suitably impressed with the excellent work that is being done on thsi forum.Yep, probably now they now how to NOT design thermal dongles, but do not care too much about this forum, because their target customers are not electronic guys who can hack their circuits and writ eown better software, but gadget fans, who will be able now make thermal blob of their cats, dogs, etc and will have another good reasons to chat on facebook etc. about this ;)
I made a FLIR photon 320 do the exact same thing when I tried to substitute a non-athermalized Thorlabs germanium lens for the factory lens.Can't find any FLIR Photon 320 teardown to see what is inside this thing, but if we take even 2/3 of 320 resolution, so we get about 213 so close to this Seek has, but of course we still could have great night eye with this Photon 320 while these imaginery as it were takem during the day with nice contrast :-+
# You will need to have python 2.7 (3+ may work)
# and PyUSB 1.0
# and PIL 1.1.6 or better
# and numpy
# and scipy
# and Tkinter
# and ImageMagick
# and other stuff when I get this working
# You will probably have to run this as root unless you get your udev/mdev rules
# set up to allow the Seek device to be used by other than root.
# Many thanks to the folks at eevblog, especially (in no particular order)
# miguelvp, marshallh, mikeselectricstuff, sgstair, Fry-kun and many others
# for the inspiration to figure this out
# This is not a finished product and you can use it if you like. Don't be
# suprised if there are bugs as I am NOT a programmer..... ;>))
# There is also a lot of test code sprinkled about which probably doesn't work.
# not all these are needed, must trim as required when this application is done
import usb.core
import usb.util
import sys
from PIL import Image, ImageTk
import numpy
from scipy.misc import toimage
import Image
from numpy import array
import Tkinter
class App(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self,parent)
self.parent = parent
self.initialize()
# defs
def usbinit(self):
# find our Seek Thermal device 289d:0010
dev = usb.core.find(idVendor=0x289d, idProduct=0x0010)
# was it found?
if dev is None:
raise ValueError('Device not found')
# set the active configuration. With no arguments, the first
# configuration will be the active one
dev.set_configuration()
# get an endpoint instance
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]
ep = usb.util.find_descriptor(
intf,
# match the first OUT endpoint
custom_match = \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_OUT)
assert ep is not None
return dev
#
def camerainit(self,dev):
# Deinit the device
msg= '\x00\x00'
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
# Setup device
#msg = x01
assert dev.ctrl_transfer(0x41, 0x54, 0, 0, 0x01)
# Some day we will figure out what all this init stuff is and
# what the returned values mean.
msg = '\x00\x00'
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
ret1 = dev.ctrl_transfer(0xC1, 0x4E, 0, 0, 4)
ret2 = dev.ctrl_transfer(0xC1, 0x36, 0, 0, 12)
#print ret1
#print ret2
#
msg = '\x20\x00\x30\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret3 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x40)
#print ret3
#
msg = '\x20\x00\x50\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret4 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x40)
#print ret4
#
msg = '\x0C\x00\x70\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret5 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x18)
#print ret5
#
msg = '\x06\x00\x08\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret6 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x0C)
#print ret6
#
msg = '\x08\x00'
assert dev.ctrl_transfer(0x41, 0x3E, 0, 0, msg) == len(msg)
ret7 = dev.ctrl_transfer(0xC1, 0x3D, 0, 0, 2)
#print ret7
#
msg = '\x08\x00'
assert dev.ctrl_transfer(0x41, 0x3E, 0, 0, msg) == len(msg)
msg = '\x01\x00'
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
ret8 = dev.ctrl_transfer(0xC1, 0x3D, 0, 0, 2)
#print ret8
#####################################################################
# build a matrix of "patent pixils" that match the Seek Imager
# this may be useful later
def dots(self):
dotsF = numpy.zeros((156,208))
dotsI = dotsF.astype('uint8')
k = 10
for i in range(0,155,1):
for j in range(k,206,15):
# print i,j
dotsI[i,j] = 255
k = k - 4
if k < 0: k = k + 15
return dotsI
# display it to see if it matches the Seek black dot hex pattern
# zz = Image.fromstring("I", (208,156), dotsI, "raw", "I;8")
# toimage(zz).show()
# print dotsI
#####################################################################
def printIMG(self,img):
global Label1, Label2
# print "img min= ", img.min()
# print "img max= ", img.max()
j = img.min()
k = img.max()
Label1.configure( text="Img min %d" % j)
Label2.configure( text="Img max %d" % k)
def printCAL(self,cal):
global Label3, Label4
# print "cal min= ", cal.min()
# print "cal max= ", cal.max()
j = cal.min()
k = cal.max()
Label3.configure( text="Cal min %d" % j)
Label4.configure( text="Cal max %d" % k)
def printSUM(self,add):
global Label5, Label6
# print "sum min =", add.min()
# print "sum max =", add.max()
j = add.min()
k = add.max()
Label5.configure( text="Sum min %d" % j)
Label6.configure( text="Sum max %d" % k)
def print3(self):
print additionF.shape
print additionF.dtype
print additionF.max()
print additionF.min()
print additionF.mean()
def read_frame(self,dev): # Send a read frame request
msg = '\xC0\x7E\x00\x00'
assert dev.ctrl_transfer(0x41, 0x53, 0, 0, msg) == len(msg)
# For some reason, we need to read the result in 4 blocks, setting the
# read length to 4*0x3F60 returns only 0x3F60 bytes. Why?? maybe it is a
# PyUSB thing, since it seems to work elsewhere.
data = dev.read(0x81, 0x3F60, 1000)
data += dev.read(0x81, 0x3F60, 1000)
data += dev.read(0x81, 0x3F60, 1000)
data += dev.read(0x81, 0x3F60, 1000)
return data
def add_207(self,imgF): # Add the data from the 207 row to each pixil
# or not depending on the testing some of the following may be commented out.
# there are a different # of black dots in each row so the divisor
# needs to change for each row according to what is in the dot_numbers.txt file.
# this may not be the best way to do this. The code below does not do this now.
for i in range(0,156,1):
for j in range(0,205,1):
if imgF[i,j] == 0:
# if dotsI[i,j] == 255:
imgF[i,j] = 0 # this should be all the "patent pixils" as well as the dead ones
else:
imgF[i,j] = imgF[i,j]+imgF[i,206]/14
return imgF
def initialize(self):
global dev, label, Label1, Label2, Label3, Label4, Label5, Label6
dev = self.usbinit()
self.camerainit(dev)
self.grid()
# self.entry = Tkinter.Entry(self)
# self.entry.grid(column=0,row=0,sticky='EW')
# button = Tkinter.Button(self,text=u"Click me !")
# button.grid(column=1,row=0)
Label1 = Tkinter.Label(self,text="Label1")
Label2 = Tkinter.Label(self,text="Label2")
Label3 = Tkinter.Label(self,text="Label3")
Label4 = Tkinter.Label(self,text="Label4")
Label5 = Tkinter.Label(self,text="Label5")
Label6 = Tkinter.Label(self,text="Label6")
Label1.grid(row=2,column=1)
Label2.grid(row=3,column=1)
Label3.grid(row=2,column=2)
Label4.grid(row=3,column=2)
Label5.grid(row=2,column=3)
Label6.grid(row=3,column=3)
label = Tkinter.Label(self,text="your image here", compound="top")
label.grid(column=0,row=1,columnspan=2,sticky='EW')
self.grid_columnconfigure(0,weight=1)
self.resizable(True,True)
self.iteration=0
global calImage
self.calimage = self.get_cal_image(dev)
self.UpdateImage(10)
def UpdateImage(self, delay, event=None):
# this is merely so the display changes even though the image doesn't
global dev, status, calImage, ImageFinal, label
self.iteration += 1
self.image = self.get_image(dev)
ImageFinal = self.image
label.configure(image=ImageFinal, text="Frames captured %s" % self.iteration)
# reschedule to run again in 10 ms
self.after(delay, self.UpdateImage, 10)
def get_cal_image(self,dev):
# Get the first cal image so calImage isn't null
global status, calImage
status = 0
# Wait for the cal frame
while status != 1:
# 1 is a Calibration frame
# Read a raw frame
ret9 = self.read_frame(dev)
status = ret9[20]
# 6 is a pre-calibration frame (whatever that means)
# 4, 9, 8, 7, 5, 10 other... who knows.
# See https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg545910/#msg545910
# for examples.
# Convert the raw 16 bit calibration data to a PIL Image
calimgI = Image.frombytes("F", (208,156), ret9, "raw", "F;16")
# Convert the PIL Image to an unsigned numpy float array
im2arr = numpy.asarray(calimgI)
im2arrF = im2arr.astype('float')
# im2arrI16 = im2arr.astype('uint16')
calImage = im2arrF
return
def get_image(self,dev):
# this is where you get your image and convert it to
# a Tk PhotoImage. For demonstration purposes I'll
# just return a static image
global calImage, status
status = 0
# Wait for the next image frame
while status != 3:
# 3 is a Normal frame
# Read a raw frame
ret9 = self.read_frame(dev)
status = ret9[20]
# check for a new cal frame, if so update the cal image
if status == 1:
# Convert the raw 16 bit calibration data to a PIL Image
calimgI = Image.frombytes("F", (208,156), ret9, "raw", "F;16")
# Convert the PIL Image to an unsigned numpy float array
im2arr = numpy.asarray(calimgI)
im2arrF = im2arr.astype('float')
# Save the calibration image
calImage = im2arrF
# If this is normal image data
# Convert the raw 16 bit thermal data to a PIL Image
imgx = Image.fromstring("F", (208,156), ret9, "raw", "F;16")
# Convert the PIL Image to an unsigned numpy float array
im1arr = numpy.asarray(imgx)
im1arrF = im1arr.astype('float')
# Add the row 207 correction
# im1arrF_207 = self.add_207(im1arrF)
self.printIMG(im1arrF)
self.printCAL(calImage)
# Subtract the most recent calibration image from the offset image data
additionI16 = ((im1arrF) + 5000) - (calImage)
self.printSUM(additionI16)
# imxx = Image.fromarray(numpy.uint8(cm.gray(img)*255))
imxx = toimage(additionI16).resize((640, 480),Image.ANTIALIAS)
image = ImageTk.PhotoImage(imxx)
return image
if __name__ == "__main__":
app=App(None)
app.title('Kens test')
app.mainloop()
Fry-Kun,
My version developed in a very similar manner to yours, mine is a bit more complex, without some of the error checking
and with less python knowledge some parts are a bit brute force. :P
Here is what I have now.
It does real time view and expands the image to 640 x 480.
Still lots to do, colorize, and pixil 207 at least
cheers ...ken...
btw no black frames any more, that was a problem with mine too.;>))
$ md5sum sts_router_frames.raw
52d19a3324a800fb15245f77542a6dec sts_router_frames.raw
I did order a ZnSe lens 101.6 mm (4") focus length and it probably will take another week or two to get here.I have a couple of those cheap $14 ZnSe 20mm x f50mm lenses. They are pretty good as macro extention for Seek Thermal.
Not bad for $200 cam!$214 + shippments costs so closser to $250 with this mod ;)
$214 + shippments costs so closser to $250 with this mod ;)Both seek and the lens are free shipped to US, so it is $215 indeed :)
Also, the software they provide is good enough to play with, but it misses the mark.Yep, maybe it is good to find a cat, but one have to be carefull to confound with a bad dog due to not great image quality :-DD
Close up lenses are used to provide detailed images of PCB's etc.
I've put up a simple holder for the 20mm ZnSe lenses over at Thingiverse. It's just a friction fit which depends on the asymmetry of the camera face to hold it in place, but it seems to do the trick. Should do well enough to keep handy in the toolbag. http://www.thingiverse.com/thing:525605 (http://www.thingiverse.com/thing:525605)
http://apk-dl.com/root/apk/2014/11/3/com.tyriansystems.SeekThermal_1.4.0.2_[www.apk-dl.com].apk
Enjoy ;DReally nice temp difference in the corners-they show only 2 points-minimum and maximum, so many people have no idea that other corners are thermal useless images too :-DD
...
Gradient at 10 minutes.jpg
1.4.0.2We'll see what they changed in software in comparision to earlier versions >:D
The file names are random to prevent file name conflicts between users of the camera who share the images with each other.Common, those "sick" names looks not so bad.. but only when compared to SHA512 >:D
$ sha512sum sts.raw.img.000011.png
700585e4c04d94059f93516807793d077c685b9e2953b3e1d9501517f9afe166bf8670c6cb553d55f5d97f8ea95545bb1d04b70eda022ca3e85fdb0f03c34c21 sts.raw.img.000011.png
I will also detail the ambient temp.It could be interesting mod to add.. additional external temp sensor close to shutter via drilled hole to monitor inside temperature of this dongle, so probably will do it when it comes if is it possible to add such thermometer inside this thing to compare with ambient temperature changes and suspected temperature info send in each frame ;)
Thinking about the image noise, a microbolometer is an analogue device that is read by a ADC read out chip. A very important element of a conventional thermal imaging camera design is separation of analogue and digital power supplies to prevent digital noise getting into the sensitive analogue circuits around the microbolometer. The SEEK is a very compact and low component count design. I am wondering whether some of the noise coming out of the core is as a result of analogue supply contamination ?Filtering the supply is relatively cheap - they do appear to have multiple supplies, each with their own decoupling, fed from a 4 way resistor network.
Mike, if you get a spare moment, any chance of having a look at the core supplies for the presence of noise ?
Aurora
Hi Everyone,
The Android orders are almost completely caught up and should hopefully be out of backorder within a few days. iOS cameras are currently on hold as we work through some additional, unanticipated requests from Apple. We are members of the Apple MFi Program which is the only authorized means to manufacture and distribute products for use with iOS. We are in direct contact with the MFi Program Team to provide all the necessary information required by Apple for compliance with program requirements. After being previously approved, our program plan is under review by Apple. We are eagerly working with them to complete the process as quickly as possible.
-The Seek Team
Moving images certainly look better than still ones.This is may be result of different human eye sensitivity to different color, so a few degrees temperature gradient can be easier notice at the end of Iron palette than at the beginning, where there is more blue channel less sensitive to our eye ;)
QuoteHi Everyone,
The Android orders are almost completely caught up and should hopefully be out of backorder within a few days. iOS cameras are currently on hold as we work through some additional, unanticipated requests from Apple. We are members of the Apple MFi Program which is the only authorized means to manufacture and distribute products for use with iOS. We are in direct contact with the MFi Program Team to provide all the necessary information required by Apple for compliance with program requirements. After being previously approved, our program plan is under review by Apple. We are eagerly working with them to complete the process as quickly as possible.
-The Seek Team
I think Seek has targeted too low of a price and may have made some compromises that make this camera unattractive for me.Especially as they originally announced at $250...
A lot of money has been invested in the sensor, so that's not going to be abandoned.
At this point, I'm not sure we will see a version 2.0.
A lot of money has been invested in the sensor, so that's not going to be abandoned.
At this point, I'm not sure we will see a version 2.0.
I do wonder how long it will be before the "meh, thermal imaging" attitude sets in - after the novelty wears off I'm not convinced there is a viable ongoing market for low cost/low performance consumer imagers.
I think Flir have maybe got it more right in going for an easily integratable module with all the magic inbuilt to provide a low entry cost to someone wanting to use thermal imaging in new applications, though their 1K MOQ is an unnecessary barrier to entry.
I wouldn't be surprised if Flir don't even bother doing Flir One for other phones, though it wouldn't be much effort for them to do a Seek style dongle for Android, so maybe worth doing that.
Cooling the lens mount produces a massive gradient, with the bottom of the display showing cold. The lens is inverting, so this corresponds to the shutter opening side.
Seems little doubt that the sensor is "seeing" the mount rather than only what is coming through the lens.
Again this could be lens alignment, but could also be that the lens is producing either too small an image for the sensor.
The time that the shutter obscures the signal path does seem shorter than other cameras though so is not as noticeable to the user.Is it any noticeable sound when shutter is active in this Seek cam or this event is completelly transparent to user?
Yes there is a very audible clickThe time that the shutter obscures the signal path does seem shorter than other cameras though so is not as noticeable to the user.Is it any noticeable sound when shutter is active in this Seek cam or this event is completelly transparent to user?
It looked like there were nothing to limit shutter position inside lens holder, so it have to hit somehow to stop moveing or maybe there is special controll signal to make this movement smooth?
Did anyone tried to catch on scope those shutter calibration pulses?
Non-US forum members might be interested in this.It depends how many those units were manufactured already and if they plan to change/upgrade hardware a litle bit to make this sensor maybe more stable and resolve gradient issue in hardware, rather than in software.
...
Can't wait...
$ file sts_cal-approx.raw.cal.000013.png
sts_cal-approx.raw.cal.000013.png: PNG image, 208 x 156, 16-bit grayscale, non-interlaced
After running software processing Seek Thermal calibration frames with image frames and joining them to create output image:$ ./seek_thermal_opencv_test sts.raw.img.000011.png sts.raw.cal.000013.png
we get on its output approximation of provided calibration frame (this is from earlier router sample raw data provided in this thtread):seek_thermal: Approximation of calibration frame: -0.015972115*x -0.015298731*y +1.693952814Now, we can try to estimate tilt angle and try to correct this gradient issue while we can detect that approximated calibration surface is not flat (has gradients), so we might be able add some gradient correction to our image processing engine.
A few observations :By on the back do you mean still inside this dongle? This temp sensor Is visible in your Seek Thermal teardown videos?
The diode on the back is definitely sensing temp - shunting it causes an instant change in temp readings, but no change in the image, or any change after a shutter close, so presumably being used to calculate a delta between the sensor pixel value and actual temp.
Cooling the lens mount produces a massive gradient, with the bottom of the display showing cold. The lens is inverting, so this corresponds to the shutter opening side.It was such massive cooling as in one of your teardowns with this magic spray or something softer? Sensor PCB was without its enclosure, I guess?
If the image quality can be improved there is a massive CCTV market waiting for lower priced thermal security cameras.I'm not convinced about that. Low-res thermal isn't good enough for identification, only detection. Even then it probably needs a better lens than we've see on F1/Seek
seek_thermal: Approximation of calibration frame parameters: -0.002520609 -0.000198617 -0.000972260 +0.001552013 -0.003539129 +0.005632120 +0.008891812 +0.000917557 -0.000869635 +1.587426345 time: 0.016320916 s10 approximation parameters are computed at time below 0.02s, so even for 10Hz output should be fine.
Low-res thermal isn't good enough for identification, only detection.Yep, however if it detect suspicious heat sources it can guide visual hires camera, so operator can have fusion of thermal & visual systems and can toggle between them or thermal part can auto fire additional light source to help visual system record unusual events and catch in high intensity visual light flash ;)
Different temperatures, but same color. The gradient is dynamic in sense that, when the sensor detects higher radiation in the corner, the rest of the sensor compensates, by moving that blue color away from it's inital location.Probably you mean something like this in this approximated calibration sensor frame
My sensor must be crap. Maybe lots of bad pixels or something.Probably you must have option in this soft to output raw sensor data or recognized raw sensor frames as 16bit PNG images, so easy to look how those frames looks like even using imagej2 or other soft capable to make image processing of 16bit depth PNG images...
BTW I forgot to say that it will dump the first 20 frames including the first 6 system frames including frame 1 with ID 4 which I use instead of column 207, and metadata in the current working directory.
The raw data will be in a file named data.dat, the metadata in a file named data.txt with the frame IDs on it.
Raw data is 16bit unsigned totally unprocessed, 208x156 per frame.
Edit: Frame IDs link with visual pictures on how they look like:
https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg545910/#msg545910 (https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg545910/#msg545910)
Edit2: Also I don't know what I did to get to
https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg547638/#msg547638 (https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg547638/#msg547638)
didn't have source control then, but it looks like it was a better result, will try to get back to that.
@miguelvp:
How did you connect the module to PC? Did you make your own diy usb cable?
What about the drivers?
Zadig to install the winusb driver on the "iAP interface"
@miguelvp,
I tried out your new version. For some reason my camera looks like crap. I get extremely noisy image. The external reference frame button doesn't seem to give the expected results. I don't get a smooth image after subtraction. Its got a round circular gradient going on.
I don't know how your images look so good. My sensor must be crap. Maybe lots of bad pixels or something. That would be my luck. Also, I have to rotate my tablet upside down to get proper orientation. Its like the image is flipped sideways?
@miguelvp, I found your executable a few pages back. Thought about putting the code on GitHub for all os us to play with?
@eneuro I can't wait to see your code so we can integrate it with sgstair's framework.For the moment I will release only custom made Iron LUTs on my OpenThermal Web Site (http://openthermal.sourceforge.net/) while probably I have very different vision how this thermal imagining software should look like and no plans to support Window$ OS, only Linux...maybe Android.
I re-watched mikeselectricstuff's gradient video.
when he removed the shutter, there was no gradient. He then partially reassembled everything, and I think shorted out the shutter so he could do it manually, and the gradient re-appeared, but he said the issue was the lens, even though the gradient had disappeared after he removed the shutter only.
Now, just over 3/4 past the video, and for a very short period, he is showing the top view of the sensor with the shutter attached. The shutter closes and opens again. For a split second, you see that the shutter doesn't cover the entire sensor, leaving part of it exposed. Noticing the unusually shaped shutter, I immediately asked myself, "why isn't the shutter cut to cover the entire sensor"? If part of it is exposed, then there could be a very good possibility it will detect radiation on that exposed part. So how about chopping that section of shutter and creating one that covers the entire sensor, using some epoxy or super glue to reattach? or even 3D printing out one?
miguelvp:
http://retroactive.be/data.zip (http://retroactive.be/data.zip)
Has anyone tried talking to the USB device directly on an android device using the usb host apis?Not yet, but this dongle works under Android, so it should be piece of cake ;)
seek_thermal: Approximation of calibration frame parameters: #11 (FFT) +0.000000000 +0.000000000 +0.000000000 +0.000000000 +0.000000000 +0.000000000 +0.000000000 +0.000000000 +0.000000000 +0.000000000 +0.000000000 time: 0.005437720 s(http://s5.postimg.org/m5fjctj37/sts_approx_fft_gp.jpg) (http://postimg.org/image/m5fjctj37/)
And while we are talking about code, here is my latest Python code.Maybe some screenshoots or Seek video recorded using this soft? ;)
seek_thermal: Approximation of calibration frame parameters: #65 time: 0.000910133It quite nice fits into sensor calibration frames:
@miguelvp,
I tried out your new version. For some reason my camera looks like crap. I get extremely noisy image. The external reference frame button doesn't seem to give the expected results. I don't get a smooth image after subtraction. Its got a round circular gradient going on.
I don't know how your images look so good. My sensor must be crap. Maybe lots of bad pixels or something. That would be my luck. Also, I have to rotate my tablet upside down to get proper orientation. Its like the image is flipped sideways?
Compressed with zip it should be less than 1000KB which is the limit for uploads.Gmail Add attachments (https://support.google.com/mail/answer/6584?hl=en)
You can send messages up to 25 megabytes (MB) in size.
Frame ID 10 with values up to 200 more or lessThis frame histogram before hexagon pixels filling looks like this:
There are other frames available at boot time that might be helpful as well.Those router raw sensor data provided by you earlier, shows frames like this in the sequence they apear:
sts2img: Frame 0x4 #1 file: facerouter20frames.raw.000000001.0x4.png 208x156 hexagon bad dots: 6 frame dot10: 4 dot25: 0 dot40: 0
sts2img: Frame 0x8 #2 file: facerouter20frames.raw.000000002.0x8.png 208x156 hexagon bad dots: 18 frame dot10: 8 dot25: 0 dot40: 7
sts2img: Frame 0xa #3 file: facerouter20frames.raw.000000003.0xa.png 208x156 hexagon bad dots: 7 frame dot10: 10 dot25: 0 dot40: 185
sts2img: Frame 0x1 #4 file: facerouter20frames.raw.000000004.0x1.png 208x156 hexagon bad dots: 18 frame dot10: 1 dot25: 0 dot40: 23
sts2img: Frame 0x3 #5 file: facerouter20frames.raw.000000005.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 28
sts2img: Frame 0x3 #6 file: facerouter20frames.raw.000000006.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 33
sts2img: Frame 0x3 #7 file: facerouter20frames.raw.000000007.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 37
sts2img: Frame 0x6 #8 file: facerouter20frames.raw.000000008.0x6.png 208x156 hexagon bad dots: 18 frame dot10: 6 dot25: 0 dot40: 43
sts2img: Frame 0x1 #9 file: facerouter20frames.raw.000000009.0x1.png 208x156 hexagon bad dots: 18 frame dot10: 1 dot25: 0 dot40: 49
sts2img: Frame 0x3 #10 file: facerouter20frames.raw.000000010.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 54
sts2img: Frame 0x3 #11 file: facerouter20frames.raw.000000011.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 58
sts2img: Frame 0x3 #12 file: facerouter20frames.raw.000000012.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 62
sts2img: Frame 0x3 #13 file: facerouter20frames.raw.000000013.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 66
sts2img: Frame 0x3 #14 file: facerouter20frames.raw.000000014.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 70
sts2img: Frame 0x6 #15 file: facerouter20frames.raw.000000015.0x6.png 208x156 hexagon bad dots: 18 frame dot10: 6 dot25: 0 dot40: 76
Hex bad dots count is amount of pixels which are NOT 0x0000 in the place where perfect hexagon pattern should be (so frame type dot 10 (indexing from 0,1,...10 etc) also included in this stat).sts2img: Frame 0x4 #1 file: facedown20frames.raw.000000001.0x4.png 208x156 hexagon bad dots: 6 frame dot10: 4 dot25: 0 dot40: 0
sts2img: Frame 0x8 #2 file: facedown20frames.raw.000000002.0x8.png 208x156 hexagon bad dots: 18 frame dot10: 8 dot25: 0 dot40: 6
sts2img: Frame 0xa #3 file: facedown20frames.raw.000000003.0xa.png 208x156 hexagon bad dots: 7 frame dot10: 10 dot25: 0 dot40: 185
sts2img: Frame 0x1 #4 file: facedown20frames.raw.000000004.0x1.png 208x156 hexagon bad dots: 18 frame dot10: 1 dot25: 0 dot40: 23
sts2img: Frame 0x3 #5 file: facedown20frames.raw.000000005.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 28
sts2img: Frame 0x3 #6 file: facedown20frames.raw.000000006.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 33
sts2img: Frame 0x3 #7 file: facedown20frames.raw.000000007.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 38
sts2img: Frame 0x6 #8 file: facedown20frames.raw.000000008.0x6.png 208x156 hexagon bad dots: 18 frame dot10: 6 dot25: 0 dot40: 44
sts2img: Frame 0x1 #9 file: facedown20frames.raw.000000009.0x1.png 208x156 hexagon bad dots: 18 frame dot10: 1 dot25: 0 dot40: 50
sts2img: Frame 0x3 #10 file: facedown20frames.raw.000000010.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 55
sts2img: Frame 0x3 #11 file: facedown20frames.raw.000000011.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 60
sts2img: Frame 0x3 #12 file: facedown20frames.raw.000000012.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 64
sts2img: Frame 0x3 #13 file: facedown20frames.raw.000000013.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 68
sts2img: Frame 0x3 #14 file: facedown20frames.raw.000000014.0x3.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 72
sts2img: Frame 0x6 #15 file: facedown20frames.raw.000000015.0x6.png 208x156 hexagon bad dots: 18 frame dot10: 6 dot25: 0 dot40: 78
sts2img: Frame 0x1 #16 file: facedown20frames.raw.000000016.0x1.png 208x156 hexagon bad dots: 18 frame dot10: 1 dot25: 0 dot40: 84
For last frame #16 it has value 84 which means if it were 84*F~29*C, so still it could be temperature inside this Seek dongle close to sensor, but I do not know history how you played with it and what room ambient temperature could be during this USB dump ::)I printed out the value as well as the frame ID and found that the value in dot[40] continues to increase. I'm running that test now and it is up to ~20000 after about 10 minutes of operation.Maybe this is frame time stamp in this dot[40] value?
...
(3, 204.0)
(3, 208.0)
(3, 212.0)
...
(3, 199.0)
(3, 207.0)
(3, 215.0)
...
we have difference about 4 between frames there, so 40ms which could give us 25 frames type 0x3 per second, but there are also other frames type 0x1 .We should probably investigate any of the "patent pixels" that are non-zero.I've already wrote such software and have function which returns all those "patent pixels" - I call them hexagon dots while they looks like this ;)
./sts2img: Raw sensor input file: sts.raw frame 0x3 #5 output files: sts.raw.000000005.0x3.png sts.raw.000000005.0x3.img.png 208x156 hexagon bad dots: 18 frame dot10: 3 dot25: 0 dot40: 28For the moment outputed only those three first: dot[10] dot[25] whch looked 0x0000 on this short 20 first frames after Seek start, and dot[40].
.... frame #NNNNN ... ( colx: 40 rowy: 0 dot[40]: 0x001C 28 ) ...
# This is a quick python program to get and save the first few frames
# of raw data from the Seek Thermal camera.
# copy & paste this code into a file xxxx.py
# run the code like this "python xxxx.py 42"
# 42 being the number of frames to capture.
import usb.core
import usb.util
import sys
import Image
y = int(sys.argv[1])
# find our Seek Thermal device 289d:0010
dev = usb.core.find(idVendor=0x289d, idProduct=0x0010)
# was it found?
if dev is None:
raise ValueError('Device not found')
# set the active configuration. With no arguments, the first
# configuration will be the active one
dev.set_configuration()
# get an endpoint instance
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]
ep = usb.util.find_descriptor(
intf,
# match the first OUT endpoint
custom_match = \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_OUT)
assert ep is not None
#msg = '\x41\x41'
#print (msg)
# Deinit the device
msg= '\x00\x00'
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
# Setup device
#msg = x01
assert dev.ctrl_transfer(0x41, 0x54, 0, 0, 0x01)
#
msg = '\x00\x00'
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
ret1 = dev.ctrl_transfer(0xC1, 0x4E, 0, 0, 4)
ret2 = dev.ctrl_transfer(0xC1, 0x36, 0, 0, 12)
#print ret1
#print ret2
#
msg = '\x20\x00\x30\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret3 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x40)
#print ret3
#
msg = '\x20\x00\x50\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret4 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x40)
#print ret4
#
msg = '\x0C\x00\x70\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret5 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x18)
#print ret5
#
msg = '\x06\x00\x08\x00\x00\x00'
assert dev.ctrl_transfer(0x41, 0x56, 0, 0, msg) == len(msg)
ret6 = dev.ctrl_transfer(0xC1, 0x58, 0, 0, 0x0C)
#print ret6
#
msg = '\x08\x00'
assert dev.ctrl_transfer(0x41, 0x3E, 0, 0, msg) == len(msg)
ret7 = dev.ctrl_transfer(0xC1, 0x3D, 0, 0, 2)
#print ret7
#
msg = '\x08\x00'
assert dev.ctrl_transfer(0x41, 0x3E, 0, 0, msg) == len(msg)
msg = '\x01\x00'
assert dev.ctrl_transfer(0x41, 0x3C, 0, 0, msg) == len(msg)
ret8 = dev.ctrl_transfer(0xC1, 0x3D, 0, 0, 2)
#print ret8
# Get and save the first 11 frames as 16bit .png files
# The file name is rawDataXX_YY.png where xx is the frame # and YY is the frame ID
# except for frame # 2 where the data in pixil 10 is not the frame # but part of the
# gradient
x = 0
while x < y:
msg = '\xC0\x7E\x00\x00'
assert dev.ctrl_transfer(0x41, 0x53, 0, 0, msg) == len(msg)
ret9 = dev.read(0x81, 0x3F60, 1000)
ret9 += dev.read(0x81, 0x3F60, 1000)
ret9 += dev.read(0x81, 0x3F60, 1000)
ret9 += dev.read(0x81, 0x3F60, 1000)
status = ret9[20]
img = Image.fromstring("I", (208,156), ret9, "raw", "I;16")
x = x + 1
img.save('rawData%d'%(x,)+'_%d'%(status,)+'.png')
# img.show()
print 'Done'
2) Use the following Python code to capture as many raw frames as you choose.I'm not python expert rather more familar with C/C++/Java/ILERPG , but when looked into similar example of reading mouse using pyusb there Read and Decode Data From Your Mouse Using This PyUSB Hack (http://www.orangecoat.com/how-to/read-and-decode-data-from-your-mouse-using-this-pyusb-hack) it looks like frames are taken there after setup above, but it means that this USB read gives you EXACTLY 1 frame from Seek sensor : dot[0], to dot[32448-1] than saved as 16bit PNG?Code: [Select]...
msg = '\xC0\x7E\x00\x00'
assert dev.ctrl_transfer(0x41, 0x53, 0, 0, msg) == len(msg)
ret9 = dev.read(0x81, 0x3F60, 1000)
ret9 += dev.read(0x81, 0x3F60, 1000)
ret9 += dev.read(0x81, 0x3F60, 1000)
ret9 += dev.read(0x81, 0x3F60, 1000)
status = ret9[20]
img = Image.fromstring("I", (208,156), ret9, "raw", "I;16")
...
Look at frames 1,3,4,5. they all look like cal frames except with the max data at different points. I think it is worth looking at them further, maybe they are factory cal data for that specific imager.
...ken...
Frame 9 ID 6 is the first "pre-calibration" frame, (since it occurs right before the ID 1 calibration frame (as to what is used for I'm clueless)As showed above the difference between frame 0x6 and 0x1 is very small and biggest are in those first and last lines.
0x1: 001
0x6: 110
0x3: 011
Ok, there is no clear bit connections with similar histogram frames 0x1 and 0x6, so maybe this is some kind of frame id, but who knows :-/OI see min values or 0 for all these frames, but since they include the "patent pixels" and maybe some dead pixels, that is understandable. I will look at removing the zero values to see if that casts any light on the range of these frames.When filled hexagon patent dots with its neighbours weighted average and shifting to fit into 208x156 output image from oryginal native 206x156 resolution as shown in posts above I see no lower values than about 5000 in frames 0x3 with scene thermal data, as well as frames 0x1 and 0x6 which looked like only small changes in non hexagon patent pixels (regular real sensor thermal ones) exists and its standard deviation was only 9 while average pixels value about 7500, so very small difference between those 0x1 0x6 frames .
I know they are 8bits it was more for visual inspection...Isn't better make screen shot than everybody see that it is not raw sensor data? ;)
My approach will be to take one capture of painted aluminium plate at 0*C and also one at 100*C.Probably you have to keep those things at proper distance from Seek sensor to avoid reflections back of heat around sensor which was around 35*C, so maybe also try different angles.
The alu plate will cover the entire view of sensor.
How on earth did Mu get approval on their POS ? Maybe they didn't ?Why would you think they got approval? - they never had a real product and never will.
New Post on Seek's Facebook page:Yep, but so many people have their bankrolls $200 less and still can only watch how we play with those images :o
Scott Maggio Why are you still accepting Apple orders if you a "few weeks away" from knowing if you will even be approved?
"There have been reports from users about thermal gradient problems with the images in the app. This means that the temperature can vary across a uniform surface, which results in color differences. Some variation is expected in the camera, but we are also working on an app update that will further minimize the effect. That updated version is in testing right now and we hope to have it posted by the end of the month."We'll see who will have better gradients correction-my open source version which is also tested or Seek update if they do it for Santa Claus really? >:D
00007298 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_getLibraryVersion>:
00007318 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_requestShutterOperation>:
00007360 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_CheckGainTable>:
0000737c <Java_com_tyriansystems_Seekware_SeekwareNativeLib_ColorizeInit>:
000073a0 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_ColorizeProcess>:
00007480 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_ColorizeDeInit>:
00007488 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_applyThermographyLut>:
00007800 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_applyLUT>:
00007948 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_TemperatureInit>:
000079d4 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_Temperature>:
000079f4 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_TemperatureDeInit>:
000079fc <Java_com_tyriansystems_Seekware_SeekwareNativeLib_ImageProcessInit>:
00007a14 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_ImageProcessDeInit>:
00007a18 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_ImageProcessProcess>:
00007abc <Java_com_tyriansystems_Seekware_SeekwareNativeLib_BclaheInit>:
00007ae4 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_BclaheProcess>:
00007b46 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_BclaheDeInit>:
00007b4a <Java_com_tyriansystems_Seekware_SeekwareNativeLib_ThermographyInit>:
00007b5e <Java_com_tyriansystems_Seekware_SeekwareNativeLib_ThermographyDeInit>:
00007b62 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_ThermographyCalculate>:
00007c4e <Java_com_tyriansystems_Seekware_SeekwareNativeLib_Golomb>:
00007d4c <Java_com_tyriansystems_Seekware_SeekwareNativeLib_RGBAToYUV420SemiPlanar>:
00007e26 <Java_com_tyriansystems_Seekware_SeekwareNativeLib_WriteBits>:
Decompiled, SEEK thermal app.Decompiled or unzipped only? ;)
JAR files are fundamental archive files, built on the ZIP file format and have the .jar file extension.
my images names are of the form rawdataXX_YY.png where XX is the frame sequence # and YY is the Frame ID from Pixel 10.If you attached this hot iron raw sensor data rawdataXX_1.png rawdataXX_3.png rawdataXX_6.png we could see if this gradient issue is also present on your Seek dongle around hot iron in the corners, as well as since we know it was about 300*C iron and it looks like around 15000 in histograms make analysis for frames id 0x1 0x3 0x6 with hexagon patent and dead pixels removed including data from 207th column ;)
-rw-rw-r-- 1 501 501 2593 2014-11-23 15:10 /opt/imagej2/Fiji.app/luts/iron256_by_eneuro.lut
Three consecutive frames, 11_6, 12_1 and 13_3. 16bit .pngThx ;)
I can confirm that amazon orders are shipped out immediately.
If I was in USA I would already have it in hand because the package has arrived to my virtual US address.
(And is now on it's way to Europe...)
Decompiled, SEEK thermal app.Decompiled or unzipped only? ;)
JAR (file format) (http://en.wikipedia.org/wiki/JAR_%28file_format%29)QuoteJAR files are fundamental archive files, built on the ZIP file format and have the .jar file extension.
It has java source, so as he stated it's decompiled.@blackboxdisease Yep, I had problems to view this google folder so had no idea that there are very nice looking text files >:D
private float kelvinToChosenUnits(float f)
{
switch ($SWITCH_TABLE$com$tyriansystems$Seekware$enums$SeekwareThermographyUnit()[units.ordinal()])
{
case 3: // '\003'
default:
return f;
case 2: // '\002'
return f - 273.15F;
case 1: // '\001'
return 32F + 1.8F * (f - 273.15F);
}
}
public float getMaximumThresholdTemperature()
{
return kelvinToChosenUnits(523.15F);
}
public float getMinimumThresholdTemperature()
{
return kelvinToChosenUnits(253.15F);
}
SeekwareNativeLib.ThermographyCalculate(bytebuffer, bytebuffer1, floatbuffer, 32448, 32448, 0, 0, 208, 156, emissivity, minMaxTemperatureBuffer, bytebuffer2);
libSeekware.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
SeekwareNativeLib.ThermographyCalculate(bytebuffer, bytebuffer1, floatbuffer, 32448, 32448, 0, 0, 208, 156, emissivity, minMaxTemperatureBuffer, bytebuffer2);
The actual processing is done by the phone, but the code is in libSeekware.soIt would be interesting to know the balance of what happens in the phone vs. the firmware.
Do you have any way to decompile that, or is it part of that new drop that you posted?
The decompiled source is not useless because you can at least tell what frames they are passed into the library.
It would be interesting to know the balance of what happens in the phone vs. the firmware.
I'd be surprised if the 30->9fps filtering wasn't in the firmware - what framerate are people seeing coming over USB?
but I'm not using a very accurate clock like the query performance counter, just c# DateTime class.No precision clocks needed if 20000 frame counter in image sensor data dot[40] had this value after about 10 minutes as @cynfab posted many posts ago.
That is an image from the camera, so you can extract the thermal image (as well as the visible camera image)...OK. The question was if is it possible to set jpeg compression level in Flir E4+ as well as maybe set other lossless image formats like our nice 16bit PNGs, so one can grab high quality image not jpeg like above which for futher image processing is useless due to those 8x8 compression blocks which as I've shown simply destroyed thermal image.
File format: radiometric jpgOnly this radiometric jpg available? No other file formats supported? ???
Simultaneus storage of IR/Visual/MSX images
This paper outlines the limitations and hurdles that thermographers must face when dealing with infrared images where the radiometric data is stored/encrypted within a proprietary file format (.IMG, .JPG, .SIT, .IS2, .IRI, .ANA, .TIF, .FTS, etc.).
exiftool Hot_Iron_E4.jpg -RawThermalImage -b | convert - -interlace none -depth 16 r:- | convert -size 320x240 -interlace none -depth 16 -endian msb gray:- Hot_gray_16.png
Dump the exif data for the .jpg using exiftool and you will see that it is not your usual .jpgNo plans to use Flir thermal cameras for the moment, just wanted to do some image processing with this attached by you file, but from link I've provided above:
Note: Do not be confused. FLIR uses file extensions of .JPG, and .TIF which are also used as extensions for digital photo files; however, the FLIR file structure for the radiometric image is completely different. You cannot get radiometric data out of FLIR .JPG or .TIF files without using FLIR’s Proprietary software).It explains everything, I was a little bit supprised what I saw in this attached .jpg using Gimp-will try imagej2 later >:D
Example of exiftool usage:
( I didn't come up with this command, it was posted by someone far more skilled at exiftool than I)
in level stretched 8 bit you can show more informations ;)But one can miss that there is a lot of bluring in this Flir E4 image and 8bit images-no ;)
there is a lot of bluring in this Flir E4 image
one square = one sensor pixel of Flir Exx
(https://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/?action=dlattach;attach=118919;image)
the result is really sharp (thanks to good optics of the Flir Exx)
Wow
Video comparison from the article.Probably different thermal LUTs used there or on Flir One the same trick was made which we saw above when very hot spots were present in Flir E4+ image-on Flir One they saturated so even if the same LUTs were used we'll get very different RGB output images recorded in this video :D
FLIR ONE and Seek Thermal test footage on Vimeo (http://vimeo.com/112600498)
Edit: warning long text file with the data attached.Compression turns this long file into 134KB only >:D
$ gzip -9 dot40_20000frames_2696s.txt
$ ls -n dot40_20000frames_2696s.txt.gz
-rw-rw-r-- 1 501 501 37021 2014-11-25 11:21 dot40_20000frames_2696s.txt.gz
0x1 ( 1) 1.9% 388
0x3 ( 3) 96.1% 19219
0x4 ( 4) 0.0% 1
0x5 ( 5) 0.0% 1
0x6 ( 6) 1.9% 387
0x7 ( 7) 0.0% 1
0x8 ( 8) 0.0% 1
0x9 ( 9) 0.0% 1
0xa (10) 0.0% 1
So, we had in thi scase 2% of shutter thermal images in frames 0x1 and 0x6, so about 96% frames was thermal scene image frames, but probably depending on temperature changes inside this Seek Thermal dongle maybe there will be more frequent shutter calibration.Did you examined Seek PCB firmware and have conclusion that it can be >30fps before it is send via USB?No need to look at it, a simple image capture of a fast moving object show all the frames combined, search for Mike's video.
This frame_dot[40] word value can be simply timestamp not any frame countIt could be used as a time stamp but not a very accurate one (1/4th of a millisecond variance), all indications are that it is a frame count.
so since we do not know what is going on in Seek firmware difficult to say anything, but 20000 catched from USB in 0.75 hour gives us: 7.4 fps, but there are not only thermal scene frames there, so it will be interesting to make histogram of frame IDs which were present in this what you were able to capture and get statistics-probablity of capturing each frame ID ;)
...
Edit2: 387 is the total of pre-cal and cal frames (each for a total of 774 out of the 20000 frames captured - 5 pre-captured frames, and it should be 6 but there is an extra cal frame, so 7.13 fps average displayed frames)Well I guess 7.128100 if you want to be more precise. (from 7.1280999882273377242034710681756)
most of blurring comes from the lenseUnfortunate those images attached in this thread are 800x600 8-bit grayscale, while it could be nice to work on 16bit 320x240 oryginal ones from Flir E4+: FLIR0238.jpg and FlirE40: IR_0480.jpg
see my images here
https://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/msg343791/#msg343791 (https://www.eevblog.com/forum/testgear/flir-e4-thermal-imaging-camera-teardown/msg343791/#msg343791)
e40-gray.png: PNG image, 800 x 600, 8-bit grayscale, non-interlaced
e4-gray.png: PNG image, 800 x 600, 8-bit grayscale, non-interlaced
I have latest Image-ExifTool-9.76 installed, so no problem to extract 16bit PNGs even from oryginal Flir's .JPG, so could you provide those oryginal images or 16bit ones for deeper analysis, please?
Unfortunate those images attached in this thread are 800x600 8-bit grayscale, while it could be nice to work on 16bit 320x240 oryginal ones from Flir E4+: FLIR0238.jpg and FlirE40: IR_0480.jpg
Code: [Select]exiftool -b -RawThermalImage FLIR0238.jpg | convert - gray:- | convert -depth 16 -endian msb -size 320x240 gray:- -auto-level -resize 800x -depth 8 e4-gray.png
convert e4-gray.png iron.png -clut e4-iron.png
exiftool -b -RawThermalImage IR_0480.jpg | convert - -auto-level -resize 800x -depth 8 e40-gray.png
convert e40-gray.png iron.png -clut e40-iron.png
but I described all stepsI know those exiftool steps ;)
# You will need to have python 2.7 (3+ may work, not tried)
# and PyUSB 1.0 (needs to be gotten as source from Github and installed as root)
# and PIL (Pillow fork, often in debian distros)
# and numpy (often in debian base distros)
# and scipy
# and Tkinter
# and ImageTk (part of Pillow but a seperate module)
# and maybe some other stuff
# You will probably have to run this as root unless you get your udev/mdev rules
# set up to allow the Seek device to be used by other than root.
# Many thanks to the folks at eevblog, especially (in no particular order)
# miguelvp, marshallh, mikeselectricstuff, sgstair, Fry-kun and many others
# for the inspiration to figure this out
# This is not a finished product and you can use it if you like. Don't be
# suprised if there are bugs as I am NOT a programmer..... ;>))
# There is also a lot of test code sprinkled about which probably doesn't work.
# Updated the USB send/receive mseeage code to use Fry-Kun's (sort of). And add
# a bit of error checking.
# There are also the beginnings of some documentation on the Seek init sequence.
import usb.core
import usb.util
import sys
from PIL import Image, ImageTk
import numpy
import colorscale # used to colorizing the image, be sure that colorscale.py is in the
# current directory
# Original colorscale.py from https://github.com/pklaus/python-colorscale
from scipy.misc import toimage
from scipy import ndimage
import Image
from numpy import array
import Tkinter
class App(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self,parent)
self.parent = parent
self.initialize()
# defs
def usbinit(self):
# find our Seek Thermal device 289d:0010
dev = usb.core.find(idVendor=0x289d, idProduct=0x0010)
# was it found?
if dev is None:
raise ValueError('Device not found')
# set the active configuration. With no arguments, the first
# configuration will be the active one
dev.set_configuration()
# get an endpoint instance
cfg = dev.get_active_configuration()
intf = cfg[(0,0)]
ep = usb.util.find_descriptor(
intf,
# match the first OUT endpoint
custom_match = \
lambda e: \
usb.util.endpoint_direction(e.bEndpointAddress) == \
usb.util.ENDPOINT_OUT)
assert ep is not None
return dev
#
# send_msg sends a message that does not need or get an answer
def send_msg(self,dev,bmRequestType, bRequest, wValue=0, wIndex=0, data_or_wLength=None, timeout=None):
assert (dev.ctrl_transfer(bmRequestType, bRequest, wValue, wIndex, data_or_wLength, timeout) == len(data_or_wLength))
# alias method to make code easier to read
# receive msg actually sends a message as well.
def receive_msg(self,dev,bmRequestType, bRequest, wValue=0, wIndex=0, data_or_wLength=None, timeout=None):
zz = dev.ctrl_transfer(bmRequestType, bRequest, wValue, wIndex, data_or_wLength, timeout) # == len(data_or_wLength))
return zz
# Some day we will figure out what all this init stuff is and
# what the returned values mean.
# Here are what the commands mean, still no clue about the passed params or return values:
# ("WINDOWS_TARGET", 0, 0);
# ("ANDROID_TARGET", 1, 1);
# ("MACOS_TARGET", 2, 2);
# ("IOS_TARGET", 3, 3);
# There seem to be 2 SeekOperationMode(s) 0 = Sleep, 1 = Run
# BEGIN_MEMORY_WRITE = 82;
# COMPLETE_MEMORY_WRITE = 81;
# GET_BIT_DATA = 59;
# GET_CURRENT_COMMAND_ARRAY = 68;
# GET_DATA_PAGE = 65;
# GET_DEFAULT_COMMAND_ARRAY = 71;
# GET_ERROR_CODE = 53;
# * GET_FACTORY_SETTINGS = 88;
# * GET_FIRMWARE_INFO = 78;
# GET_IMAGE_PROCESSING_MODE = 63;
# * GET_OPERATION_MODE = 61;
# GET_RDAC_ARRAY = 77;
# GET_SHUTTER_POLARITY = 57;
# GET_VDAC_ARRAY = 74;
# * READ_CHIP_ID = 54;
# RESET_DEVICE = 89;
# SET_BIT_DATA_OFFSET = 58;
# SET_CURRENT_COMMAND_ARRAY = 67;
# SET_CURRENT_COMMAND_ARRAY_SIZE = 66;
# SET_DATA_PAGE = 64;
# SET_DEFAULT_COMMAND_ARRAY = 70;
# SET_DEFAULT_COMMAND_ARRAY_SIZE = 69;
# SET_FACTORY_SETTINGS = 87;
# * SET_FACTORY_SETTINGS_FEATURES = 86;
# SET_FIRMWARE_INFO_FEATURES = 85;
# * SET_IMAGE_PROCESSING_MODE = 62;
# * SET_OPERATION_MODE = 60;
# SET_RDAC_ARRAY = 76;
# SET_RDAC_ARRAY_OFFSET_AND_ITEMS = 75;
# SET_SHUTTER_POLARITY = 56;
# SET_VDAC_ARRAY = 73;
# SET_VDAC_ARRAY_OFFSET_AND_ITEMS = 72;
# * START_GET_IMAGE_TRANSFER = 83;
# * TARGET_PLATFORM = 84;
# TOGGLE_SHUTTER = 55;
# UPLOAD_FIRMWARE_ROW_SIZE = 79;
# WRITE_MEMORY_DATA = 80;
# Only a few of the above (*) seem to be used in the normal startup sequence
# De-init the device
def deinit(self,dev):
msg = '\x00\x00'
for i in range(3):
self.send_msg(dev,0x41, 0x3C, 0, 0, msg) # 0x3c = 60 Set Operation Mode 0x0000 (Sleep)
# Camera initilization
def camerainit(self,dev):
try:
msg = '\x01'
self.send_msg(dev,0x41, 0x54, 0, 0, msg) # 0x54 = 84 Target Platform 0x01 = Android
except Exception as e:
self.deinit(dev)
msg = '\x01'
self.send_msg(dev,0x41, 0x54, 0, 0, msg) # 0x54 = 84 Target Platform 0x01 = Android
self.send_msg(dev,0x41, 0x3C, 0, 0, '\x00\x00') # 0x3c = 60 Set operation mode 0x0000 (Sleep)
ret1 = self.receive_msg(dev,0xC1, 0x4E, 0, 0, 4) # 0x4E = 78 Get Firmware Info
#print ret1
#array('B', [1, 3, 0, 0]) # version 1.3.0.0 firmware. This was captured a while ago and may not represent the current version.
ret2 = self.receive_msg(dev,0xC1, 0x36, 0, 0, 12) # 0x36 = 54 Read Chip ID
#print ret2
#array('B', [20, 0, 12, 0, 86, 0, 248, 0, 199, 0, 69, 0])
self.send_msg(dev,0x41, 0x56, 0, 0, '\x20\x00\x30\x00\x00\x00') # 0x56 = 86 Set Factory Settings Features
ret3 = self.receive_msg(dev,0xC1, 0x58, 0, 0, 0x40) # 0x58 = 88 Get Factory Settings
#print ret3
#array('B', [2, 0, 0, 0, 0, 112, 91, 69, 0, 0, 140, 65, 0, 0, 192, 65, 79, 30, 86, 62, 160, 137, 64, 63, 234, 149, 178, 60, 0, 0, 0, 0, 0, 0, 0, 0, 72, 97, 41, 66, 124, 13, 1, 61, 206, 70, 240, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 66, 0, 0, 2, 67])
self.send_msg(dev,0x41, 0x56, 0, 0, '\x20\x00\x50\x00\x00\x00') # 0x56 = 86 Set Factory Settings Features
ret4 = self.receive_msg(dev,0xC1, 0x58, 0, 0, 0x40) # 0x58 = 88 Get Factory Settings
#print ret4
#array('B', [0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 161, 248, 65, 63, 40, 127, 119, 60, 44, 101, 55, 193, 240, 133, 129, 63, 244, 253, 96, 66, 40, 15, 155, 63, 43, 127, 103, 186, 9, 144, 186, 52, 0, 0, 0, 0, 0, 0, 2, 67, 0, 0, 150, 67, 0, 0, 0, 0])
self.send_msg(dev,0x41, 0x56, 0, 0, '\x0C\x00\x70\x00\x00\x00') # 0x56 = 86 Set Factory Settings Features
ret5 = self.receive_msg(dev,0xC1, 0x58, 0, 0, 0x18) # 0x58 = 88 Get Factory Settings
#print ret5
#array('B', [0, 0, 0, 0, 255, 255, 255, 255, 190, 193, 249, 65, 205, 204, 250, 65, 48, 42, 177, 191, 200, 152, 147, 63])
self.send_msg(dev,0x41, 0x56, 0, 0, '\x06\x00\x08\x00\x00\x00') # 0x56 = 86 Set Factory Settings Features
ret6 = self.receive_msg(dev,0xC1, 0x58, 0, 0, 0x0C) # 0x58 = 88 Get Factory Settings
#print ret6
#array('B', [49, 52, 48, 99, 49, 48, 69, 52, 50, 78, 55, 49])
self.send_msg(dev,0x41, 0x3E, 0, 0, '\x08\x00') # 0x3E = 62 Set Image Processing Mode 0x0008
ret7 = self.receive_msg(dev,0xC1, 0x3D, 0, 0, 2) # 0x3D = 61 Get Operation Mode
#print ret7
#array('B', [0, 0])
self.send_msg(dev,0x41, 0x3E, 0, 0, '\x08\x00') # 0x3E = 62 Set Image Processing Mode 0x0008
self.send_msg(dev,0x41, 0x3C, 0, 0, '\x01\x00') # 0x3c = 60 Set Operation Mode 0x0001 (Run)
ret8 = self.receive_msg(dev,0xC1, 0x3D, 0, 0, 2) # 0x3D = 61 Get Operation Mode
#print ret8
#array('B', [1, 0])
# 11/25/2014-21:10 MDT no documentation of Seekware stuff below here... This will change.
I've been looking at the "sources" as well and have added a bit of documentation to my Python program detailing what the startup sequence is.I looks like parameters are passed in Little Endian ;)Code: [Select]...
self.send_msg(dev,0x41, 0x3E, 0, 0, '\x08\x00')
# 0x3E = 62 Set Image Processing Mode 0x0008
self.send_msg(dev,0x41, 0x3C, 0, 0, '\x01\x00')
# 0x3c = 60 Set Operation Mode 0x0001 (Run)
ret8 = self.receive_msg(dev,0xC1, 0x3D, 0, 0, 2)
# 0x3D = 61 Get Operation Mode
...
public ShutterArg(short word0, short word1)
{
this$0 = RequestSequence.this;
super();
response = new byte[4];
ByteBuffer bytebuffer = ByteBuffer.wrap(response).order(ByteOrder.LITTLE_ENDIAN);
bytebuffer.putShort(word0);
bytebuffer.putShort(word1);
}
public SingleCommandArg(byte byte0, byte byte1)
{
this$0 = RequestSequence.this;
super();
command = ByteBuffer.allocate(2).order(ByteOrder.LITTLE_ENDIAN);
command.put(byte0);
command.put(byte1);
}
0x7ec0 32448=208*156
0x41 65
private final int USB_TYPE_VENDOR_TYRIAN = 65;
0x53 83
private final int URB_SUBI_START_GET_IMAGE_TRANSFER = 83;
msg = '\xC0\x7E\x00\x00'
assert dev.ctrl_transfer(0x41, 0x53, 0, 0, msg) == len(msg)
int j=usbdeviceconnection.controlTransfer(65, 83, 0, 0, abyte0, abyte0.length, 1000);
In your code you have something like this:# For some reason, we need to read the result in 4 blocks, setting the
# read length to 4*0x3F60 returns only 0x3F60 bytes. Why?? maybe it is a
# PyUSB thing, since it seems to work elsewhere.
data = dev.read(0x81, 0x3F60, 1000)
data += dev.read(0x81, 0x3F60, 1000)
data += dev.read(0x81, 0x3F60, 1000)
data += dev.read(0x81, 0x3F60, 1000)
return data
Since 0x3F60 = 16224 = 1/2 32448=280*156, while we have 16bit raw data requested 32448 two byte words is 64896 bytes per frame which is exactly 4*0x3F60 :Dprivate final int URB_SUBI_GET_IMAGE_PROCESSING_MODE = 63;
private final int URB_SUBI_SET_IMAGE_PROCESSING_MODE = 62;
private final int URB_SUBI_SET_OPERATION_MODE = 60;
Than try to catch frames in different mode and see if we are able to get something at higher frame rate :Paround 30 degrees Celsius is coming up as around 84 degrees now.84F is around 30C... coincidence?
Not only does the gradient appear to be unchanged, now all of the measurements are off by a huge amount!One image or better video is worth thousands of words ;)
F= 1.8*C +3230*C ~ 86*F
$ md5sum com.tyriansystems.SeekThermalSeek-Thermal-1.6.0-20141127v102900.apk
4f46662903727d09079da60ea27a92c0 com.tyriansystems.SeekThermalSeek-Thermal-1.6.0-20141127v102900.apk
btw, for my fellows in europe, here you can grap the apk:Could you run md5sum on this downloaded *.apk file?
http://apk-dl.com/ (http://apk-dl.com/)
4f46662903727d09079da60ea27a92c0 com.tyriansystems.SeekThermalSeek-Thermal-1.6.0-20141127v102900.apkComputed also md5sum of Seek firmware files in previous version:
398486dac94b80b0bb77efa8ec78ab41 com.tyriansystems.SeekThermal_1.4.0.2-20141113.apkIt is interesting that there is NO CHANGE in Seek firmware, so they made only changes in Android app :D
121abfd4e5fcadc246c1dfe9448dd000 com.tyriansystems.SeekThermalSeek-Thermal-1.6.0-20141127v102900/com/tyriansystems/Seekware/SUBI_LPC43XX_LPCOpen_1.2.0.0.binPrevious:
94ac6ed421559d04c6a36f65f4e67c8e com.tyriansystems.SeekThermalSeek-Thermal-1.6.0-20141127v102900/com/tyriansystems/Seekware/SUBI_LPC43XX_LPCOpen_1.3.0.0.bin
121abfd4e5fcadc246c1dfe9448dd000 com.tyriansystems.SeekThermal_1.4.0.2-20141113/com/tyriansystems/Seekware/SUBI_LPC43XX_LPCOpen_1.2.0.0.binIt looks like is the same, but what the hell there is two versions of this firmware *.bin files and which is written to Seek dongle? :-\
94ac6ed421559d04c6a36f65f4e67c8e com.tyriansystems.SeekThermal_1.4.0.2-20141113/com/tyriansystems/Seekware/SUBI_LPC43XX_LPCOpen_1.3.0.0.bin
-rw-rw-r-- 1 501 501 47768 2014-11-25 12:38 SUBI_LPC43XX_LPCOpen_1.2.0.0.binMaybe close look to decompiled Android java code will tell us which version of firmware is applied for PCB MPU - it's size is the same :-/O
-rw-rw-r-- 1 501 501 47768 2014-11-25 12:38 SUBI_LPC43XX_LPCOpen_1.3.0.0.bin
Target platform: Guessing IOS
So, OK lets assume 1.3.0 firmware version and see if it is java code uploaded or somehow different using iAP ( in-application programming) and system tools :)-rw-rw-r-- 1 501 501 385144 2014-11-25 12:30 libSeekware-1.6.0.so
-rw-rw-r-- 1 501 501 343456 2014-11-25 12:30 libSeekware-1.6.0-v7a.so
-rw-r--r-- 1 501 501 375728 2014-10-30 15:39 libSeekware-1.4.0.2.so
-rw-r--r-- 1 501 501 329892 2014-10-30 15:39 libSeekware-1.4.0.2-v7a.so
-rw-rw-r-- 1 501 501 372808 2014-09-30 15:12 libSeekware-1.0.0.so
-rw-rw-r-- 1 501 501 326028 2014-09-30 15:12 libSeekware-1.0.0-v7a.so
BTW: This 1.6.0 apk is 2 days long (2014 Nov 25 dates inside).
here is the same pic as before with °F, sorry, i forgot that...Yep, it will be fun to see what they did wrong in his new app if we'll have decompiled sources if possible of this new "sick" version.
here is the same pic as before with °F, sorry, i forgot that...Yep, it will be fun to see what they did wrong in his new app if we'll have decompiled sources if possible of this new "sick" version.
Anyway emissivity settings are the same as in previous 1.4.0 version and correct for skin?
Did you tried install previous version and set the same emissivity, temp units and compare?
I can't believe they did not noticed something like this during testing :o
BTW: md5sums are fine, so we have the same versions of "Sick" Thermal 1.6.0 apk :-DD
I took my Seek to the optometrist (my ZnSe 4" Focal length lens showed up today).Hi.
And my seek can read the label in my router. Edit: (The red Z doesn't show neither does a big red V over the whole verizon logo) the letters showing are white/silver and they probably dissipate heat quicker.
now i'm again on 1.6 and there is NO MORE OPTION TO ADJUST EMISSIVITY!!!It could be interesting to put on glass plate (table) a few objects with different emissivity like very low for aluminium foil , black plastic stuff, wood, etc, let it settle at constant ambient room temperature for longer time, measure this ambient temperature and than record this thermal objects scene quickly starting from lets say 2m distance to closer eg. up to 0.2m (20cm) at different angles around those things.
..
how can they miss that (to have no option could be intentionally, because a change from skin to granite didn't change anything at 1.4.2 temperature wise) at QC??
$ diff libSeekware-1.4.0.2.so.nm.txt libSeekware-1.6.0.so.nm.txt
49a50,52
> aslpf_deinit
> aslpf_init
> aslpf_process
154a158,160
> gradient_deinit
> gradient_init
> gradient_process
249a256
> retrieve_bplut
266a274
> tDiodeCount
325d332
< _Z16median5x_processPtS_ii
As we can see added gradient_* functions and aslpf_* and retrieve_bplut and a few other.There is a single rectangular shutter aperture in one side of the lens 'tube' and the X-Rays are punching through the other side wall producing the contrast where the aperture is located.Yep, but on the right there is small much more transparent area-looks like no metalic walls on the other side?
I was able to get rid of horizontal banding on all temperature ranges by subtracting weighted values of 207 column from sensor values.Do you mean this this Seek raw sensor data 207th column "rainbow" ? >:D
Higher the temperature lower the weight -> lower the subtracted value.
http://apk-dl.com/root/apk/2014/11/3/com.tyriansystems.SeekThermal_1.4.0.2_[www.apk-dl.com].apk
Just received my Seek For Android Saturday and was wondering if anyone has the old version of the app?
Some promising news!... I am order 1624X and I received my seek thermal camera on Saturday November 29th. Some backstory... I ordered on November 13th, received label created notification on November 17th, and I received this email on 11/25/14 after asking for the status of my order and received this email:Just received my Seek For Android Saturday and was wondering if anyone has the old version of the app?
If you don't mind answering, when did you order, and how long did it take to arrive?
I ordered mine directly from Seek on November 18, and got email on the 19th saying it had been shipped. But FedEx tracking STILL says "Label created", meaning Seek hasn't turned over the package to them yet. I've sent three messages to orders@thermal.com, and I haven't yet seen a single reply (other than "got your email" auto-responses).
I guess I'm just looking for reassurance that they actually ARE shipping currently. From all I can tell, it looks like they're taking money, but not delivering products, and not answering email. I don't want to dispute the charge via my CC, but it seems like that's the next step. :(
Argh, cant get the square brackets to escape, still trying.Maybe Non-Local Means Denoising (http://www.ipol.im/pub/art/2011/bcm_nlm/) might be usefull with thermal images too :-/O
NLM is too clever by half ... way too much chance of introducing spurious detail.NLM can be also computationaly too expensive on some less powerfull machines, so after looking into this nice Bilateral Filtering by Eric Yuan's Blog (http://eric-yuan.me/bilateral-filtering/) comparision of other popular filters vs bilateral filtering it looks like it should be fine and test visual images at the end of this article are very nice looking :-+
External lenses only work for macro photo. When installing telephoto sensor sensitivity is low. Noise obscures.I'm not sure which filters are used in your app and in oryginal Seek Thermal android app-not too many options available in this software-anyway just implemented in my Linux thermal interface custom filters for huge spikes filtering and bilateral-bilateral filters works fine, but it had problem with this very noisy frame below (only a few Seek raw sensor frames and banding not removed in this test-at the end only low temperatures manualy tuned), so implemented additional much stronger filer before bilateral which removes those large noisy pixels and at the end result might be close to Flir's One smoothed image for their MSX :D
Don't care; I'm having fun.It is more fun with 16bit thermal LUT tables like this iron -those Seek images looks very noisy and since there is no sharp edges maybe it is better smooth flat areas a little bit while image looks much better and applying 16bit thermal LUTs makes those images more friendly to human eye, so it should be option in Seek software to adjust smooth and noise reduction levels manualy when needed as I've did in my thermal interface ;)
The program creates two files. TXT and DAT. DAT is greater than 1 megabyte .
Anyway it is interesting why Seek do not provide for the moment any thermal LUT scale like in Flir's cameras, while it is a must to have feature in such software :-//
Will see when Seek will add this to his official app-can't understand why it is not already done.
Almost certainly not all of them though
Anyway it is interesting why Seek do not provide for the moment any thermal LUT scale like in Flir's cameras, while it is a must to have feature in such software :-//
Will see when Seek will add this to his official app-can't understand why it is not already done.
cant be patents, afaik part of Seek/Flir settlement was access to flir patent pool
They haven't added a scale because this camera wasn't aimed at people who needed an accurate camera.Even if it will not be great accuracy without temperature LUT range in OSD we have no idea which objects in the scene are at room ambient temperature range and this what we see is complete mess, so while it is only a few lines of code to create choosen thermal LUT preview and assign it with choosen temp limits etc and display it as an option like in many thermal cameras of course I won't wait for Seek and will have it done today I hope, since have idea how it could be done to be very easy to use on touchscreen devices and classic PC machines with mouse pointers :-/O
Succeeded in rar.I suggest probably better use this @cynafab python code to catch raw USB Seek images, while it looks like this data file from @ miguelvp in version you might have IS NOT raw sensor data, but preprocessed somehow by @miguelvp :palm:
../img2pat: Seek Thermal sensor hexagon pattern image dimensions: 206 x 156 value min: 128
../img2pat: Seek Thermal raw sensor image patterns written to: pat.rawData11_6.png bad pattern pixels: 23/32136 (0.072 %)
../img2pat: Seek Thermal sensor hexagon pattern image dimensions: 206 x 156 value min: 128
../img2pat: Seek Thermal raw sensor image patterns written to: pat.rawData12_1.png bad pattern pixels: 23/32136 (0.072 %)
and they are attached to this post:You can look at the code and find outNo need to look at any code.
75ecb0faf5916b2088eb0f2a03139350 facerouter20frames2.raw
After processing this file:../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #1: type: 4 image (gray 16bit): facerouter20frames2.raw.000000001.0x4.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #2: type: 9 image (gray 16bit): facerouter20frames2.raw.000000002.0x9.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #3: type: 8 image (gray 16bit): facerouter20frames2.raw.000000003.0x8.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #4: type: 7 image (gray 16bit): facerouter20frames2.raw.000000004.0x7.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #5: type: 10 image (gray 16bit): facerouter20frames2.raw.000000005.0xa.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #6: type: 5 image (gray 16bit): facerouter20frames2.raw.000000006.0x5.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #7: type: 1 image (gray 16bit): facerouter20frames2.raw.000000007.0x1.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #8: type: 3 image (gray 16bit): facerouter20frames2.raw.000000008.0x3.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #9: type: 3 image (gray 16bit): facerouter20frames2.raw.000000009.0x3.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #10: type: 3 image (gray 16bit): facerouter20frames2.raw.000000010.0x3.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #11: type: 6 image (gray 16bit): facerouter20frames2.raw.000000011.0x6.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #12: type: 1 image (gray 16bit): facerouter20frames2.raw.000000012.0x1.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #13: type: 3 image (gray 16bit): facerouter20frames2.raw.000000013.0x3.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #14: type: 3 image (gray 16bit): facerouter20frames2.raw.000000014.0x3.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #15: type: 3 image (gray 16bit): facerouter20frames2.raw.000000015.0x3.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #16: type: 3 image (gray 16bit): facerouter20frames2.raw.000000016.0x3.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #17: type: 3 image (gray 16bit): facerouter20frames2.raw.000000017.0x3.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #18: type: 6 image (gray 16bit): facerouter20frames2.raw.000000018.0x6.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #19: type: 1 image (gray 16bit): facerouter20frames2.raw.000000019.0x1.png
../raw2png: Seek Thermal sensor raw frames file: facerouter20frames2.raw frame #20: type: 3 image (gray 16bit): facerouter20frames2.raw.000000020.0x3.png
and looking into first calibration frame which should be raw Seek sensor data BUT IT IS NOT while there is no visible any bad sensor dots and this is the same calibration frame I used above to compare with @Uho data provided there from your software I guess because simply his sensor look TOO PERFECT to be real raw sensor data :palm:$ ../img2pat facerouter20frames2.raw.000000007.0x1.png
../img2pat: Seek Thermal sensor hexagon pattern image dimensions: 206 x 156 value min: 128
../img2pat: Seek Thermal raw sensor image patterns written to: pat.facerouter20frames2.raw.000000007.0x1.png bad pattern pixels: 5/32136 (0.016 %)
You wrote this I made a new version of the program that will read the first 20 frames from a file as if they came from the camera as long as there is a data.dat in there. (https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg552889/#msg552889)I never published that code that reads the raw data and displays the image, so don't assume they have it.
Common @miguelvp I'm not newbie, but involved in IT for so many years....and there are also other people who remember Commodore 64 and LOGO programming :phew:So? I do remember LOGO since in high school I did help the math teacher setup all the CP/M 80 systems that he was going to use to teach LOGO I was already programming assembly on my zx81 and spectrum and knew enough CP/M 80 that my teacher seeked my help.
I never published that code that reads the raw data and displays the image, so don't assume they have it.No problem, while a few posts above we can see how to do it while Seek java source code was presented and it looks like python code presented by @cynafab in section where frames were taken from Seek device if fine, so from my point of view no need to look end examine other code than this python few lines of code and Seek java source code, but it looks like software you use and maybe other people too does something strange, so recomended look for other tool to grab Seek raw sensor data like mentioned by @cynafab python code example where it is easy modify this code to output compressed 16bit PNGs and analysis of calibration frame provided by @cynafab looked like real Seek sensor data, so it is WARNING for new Seek players and for you that this "raw" data provided by you might be useless and people need to do it yourself if want reliable data or use other raw usb dump provided there by other people if you do not know what is going on app at usb level-we know how it works in this python code and explained basic part which reads those Seek frames from USB in comparision to its java source code, so we know it should be fine for the moment 8)
You are looking at the wrong frame, that's is frame with ID 7.Each 7th frame in Seek startup sequence is calibration frame with id 0x1 (1) and yuo know it while you printed this also in your text file data.txt
Frame 7 ID 1Attached frame 7 from data.dat has of course id 0x1 (1) and everybody can verify this in imagej2 :
8D1DD3D3BCABAA1
8D1DD3D3C08B7C5 <- 406,2500ms
But my camera and Uho's actually have more noise that the others, but not concentrated in spots.Yep, you have special Seek dongle version made for @miguelvp :-DD
That is 28 frames in total (14 calibration and 14 real images).Thinking of using steppers but in different setup: 2 axis x and y controlled by simple motors with IR encoders to count number of turns and make very small less than 1mm movements by such created rectangle area ;)
Each new frame is 4.5 degrees to the right.
Mat img(156,208,CV_16U );
...
// PNG9
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9);
...
imwrite(fout, img, compression_params );
In similar fashion you will be able write in OpenCV jpeg files with forced 100% quality, so this tip with 3rd parameter in OpenCV imwrite is worth to add those 3 lines of code to your C++ app 8)../img2pat: Seek Thermal raw sensor image patterns written to: pat.frenky_osc_motor.raw.000000001.0x1.png bad pattern pixels: 79/32136 (0.246 %)
That is indeed the reference image from that series, and it's unmodified raw data.You are looking at the wrong frame, that's is frame with ID 7.Each 7th frame in Seek startup sequence is calibration frame with id 0x1 (1) and yuo know it while you printed this also in your text file data.txtQuoteFrame 7 ID 1
8D1DD3D3BCABAA1
8D1DD3D3C08B7C5 <- 406,2500ms
I think your method to find unresponsive pixels is flawed because mine does have plenty of them.But my camera and Uho's actually have more noise that the others, but not concentrated in spots.Yep, you have special Seek dongle version made for @miguelvp :-DD
Hopefully, we know now how to grab frames from Seek dongle using python code or java code and no need to mess with those data.dat and data.txt files from other amateur Seek devel apps.You sir are an Ass!
Update:
Also data.dat send by @marshallh shows he used not "improved" version of oryginal Seek app and in 7th startup frame id 0x1 of course those dead pixels visible (showed this above).
// Get frame
lastFrame = thermal.GetFrameBlocking();
// Save data and metadata for the first framesToCapture frames
if (frameCount <= framesToCapture)
{
// Write frame in binary file.
bw.Write(lastFrame.RawData);
...
No manipulation is done in the raw data, before writing it to disc.I think your method to find unresponsive pixels is flawed because mine does have plenty of them.Yep, if you take random pixels maybe :-DD
I made my own while waiting for the adapter, don't recall where I got it from but here is a listing for 2 of them.
http://www.ebay.com/itm/2X-USB-2-0-A-type-male-to-Micro-USB-B-type-5p-female-Connector-Adapter-convertor-/151445719442 (http://www.ebay.com/itm/2X-USB-2-0-A-type-male-to-Micro-USB-B-type-5p-female-Connector-Adapter-convertor-/151445719442)
So you want a USB A male to Micro USB B female adapter.
Edit: Also you can use a micro usb b extender and cut it up and hook it to a usb a male like this:
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=115021;image)
http://www.ebay.com/sch/i.html?_nkw=Micro+USB+B+extension (http://www.ebay.com/sch/i.html?_nkw=Micro+USB+B+extension)
I've blended together 10 images that were taken 0.225 degrees apart and stacked on top of each-other.Which is distance from your Seek to this captured thermal object?
The end result is great. More details less noise:
Offset of each frame is 0.255 DEG which is approx 1.35 pixel.It looks like you assumed 36 DEG FOV of this Seek dongle so 1 pixel is 0.173 DEG which means about 1.3 pixel in your setup ;)
If I would go into making circular motion I would do something like this: https://static.hackaday.io/images/9207121405936029200.jpeg (https://static.hackaday.io/images/9207121405936029200.jpeg)It is too big and too heavy to move such small Seek dongle-we have I think better idea how to keep this thing moving at close to constant angle around in a few steps >:D
What do you think-is it possible tweak Seek dongle in similar way to get circular motion images on Seek sensor, but by putting this rotating part in front of Seek lens, while there is no chance to do it inside like they did in this prototype camera? :-/OI've paid 350$ for Seek so I won't be removing lens or lens holder any time soon. ;)
I have now figured out that 1 step 0.225 fits exactly into 1 pixel. So perhaps lens angle is not 36 degrees but closer to 52. (I will measure it.)Seek thermal website shop http://obtain.thermal.com/product-p/uw-aaa.htm (http://obtain.thermal.com/product-p/uw-aaa.htm) says it has 36 DEG FOV ;)
Did anyone verified capability to detect -40*C thermal object temperature using this dongle?It says detection, not measurement, so possibly not a very meaningful figure.
@Aurora:
I agree with you that if we work together instead of insulting each other much more could be accomplished...
We've come a long way. Just look at the photos below: original photo from android app VS stacked photos on PC.
I have now figured out that 1 step 0.225 fits exactly into 1 pixel. So perhaps lens angle is not 36 degrees but closer to 52. (I will measure it.)
If we had one brilliant android programmer on forum he could use collected knowledge to make an alternative app that would use camera angle & position to stack multiple photos and do it without need for pc and stepper motor. Only by using built in accelometer, compas and gyro...
That would be really an accomplishment. :-+
Photo from android app:
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=123134;image)
Stacked photos got from pc:
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=123136;image)
Take a look at the detail on IC pads on bottom left. This module has a huge potential.
The corresponding values for the rawData are 6625 and 15766.It was too interesting data @cynfab to do not to try to use sixth sense and try to predict absolute temperature in [*C] based on this additional Seek raw data >:D
Seek Thermal sensor: raw: 6384 temp: -40.0 [*C]
Seek Thermal sensor: raw: 6625 temp: -31.1 [*C]
Seek Thermal sensor: raw: 7903 temp: 16.2 [*C]
Seek Thermal sensor: raw: 15766 temp: 307.1 [*C]
Seek Thermal sensor: raw: 16384 temp: 330.0 [*C]
Using this simply formula cold part (-31.1*C) and hot iron (307.1*C) looks good, as well as... Seek claimed thermal object detection temperatures -40*C .. 330*C :oThat must mean that my stepper motor is making 0.1747 DEG (sub)steps and not 0.225 as I thought.36 DEG/206 is exactly: 0.174757282 ~ 0.175 DEG, so very close to those (sub)steps.
I think your method to find unresponsive pixels is flawed because mine does have plenty of them.Could you @miguelvp reveal your algorithm for finding such huge amount of dead pixels on Seek frames?
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=122425;image)
...
for(int li=0; li<14; li++ ) {
for(int lj= li+1; lj<14; lj++ ) {
lcount++;
calprvf= calsf[li];
calcurf= calsf[lj];
caldiff= calcurf- calprvf;
...
and after marking dots that changed at least once (difference was not zero) I've got the same result as with simple <128 threshold before, because of when we add to this changed pixels map:../sts_analysis: Calibration difference: #11 vs #13 number: 90 mean: -2.580 deviation: 141.947
../sts_analysis: Calibration difference: #12 vs #13 number: 91 mean: -0.440 deviation: 441.066
../sts_analysis: Calibration frame change pattern of #91 differences written to 8bit gray file: calchgpat.png
completly dead pixels map created from ONLY one calibration frame we can see that that it looks like this dead dots map is fine and no chance to find any other unresponsive thermal image pixels :phew:I remember awhile back some talk about the sensor fps possibly being limited in the firmware. Do we know if that is true?Didn't check it yet, but since we want to use circular motion to enhance Seek thermal output quality it could be nice to hack this <9Hz limit >:D
Is there anyone on the forum working on the firmware side of the device? I remember awhile back some talk about the sensor fps possibly being limited in the firmware. Do we know if that is true?
What's the problem with that ? As long as they don't do anything that breaks the FW update process, it will just re-update it if connected to a device with an app that needs a later version.
For the moment the main concern might be to be carefull when conecting this Seek dongle to Andorid devices with different app versions, while it looks like older app CAN TRY DOWNGRADE firmware ON PCB in your Seek Thermal just to match with its own which comes with apk :palm:
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=123479)
It is in their website there Seek Thermal Camera Firmware Updates FAQ (http://support.thermal.com/hc/en-us/articles/201278949-Camera-Firmware-Updates) .
Probably I could imagine that when inserting my Seek to friend Android with old app version, when this app detects newer firmware in this dongle WIILL RATHER ask to upgrade itself and do NOT OVERWRITE FIRMWARE in my Seek dongle ???
I observed what appeared to be a framerate of around 30FPS from the sensor to the MCU, so higher rates are probably possible, however the image will be even noisier than with the standard lens as it wouldn't have the multi-frame filtering, so may only be of use with a bigger, more expensive lens.It is a good news and maybe even some of the operation modes already allow select different one with higher frame rate, but probabbly not while there is this <9Hz requirement for those thermal cameras, so it have to be hidden inside MCU firmware and not easy to change just by guessing this code and setting this mode as we saw in Seek jave source code.
On the topic of dead pixels, a commercial microbolometer will generally have one of two dead pixel specifications: Type 1 = 99.9% or better operational pixels, Type 2 = 99.8% operational pixels. Only 0.1 % between them and this is the normal range found in a manufacturers product range.Examined many different calibration Seek frames and it looks like that range of unresponsive pixels visible from application on other usb side in Seek dongle rather easy fits into this 0.1%-0.2% of bad pixels, however when we take into account those hexagon useless "patent" pixels 2.1k on 32.1k 260x156 sensor which is 6.5% blanked hexagon pixels +/- 0.1%-0.2% dead pixels it is not what can be seen on Flir calibration frames if not hidden somehow :-//
pat.cynafab_temp_300-30_rawCal.png bad pattern pixels: 23/32136 (0.072 %)
pat.marshallh.raw.000000007.0x1.png bad pattern pixels: 28/32136 (0.087 %)
pat.frenky_osc_motor.raw.000000027.0x1.png bad pattern pixels: 79/32136 (0.246 %)
23/(32136-2143): 0.077 %
I was wondering what the minimal working distance of the Seek Thermal device is.
The minimal working distance is the minimal distance from the lens to an object with the requirement that the object is in focus.
I'm performing some research on liquid droplets (2 < 3 mm) which are several degrees hotter than the environment and I just need a thermal image of them (relative temperature is OK) without spending thousands of dollars of tax money. There are some cheap lenses available (ZnSe) which can help a lot with this experiment but it would be nice if there are some people who can provide me some values about working distances with and without these lenses.
It would also be great if someone just deposits a small droplet which is heated a bit on a surface, just to test.
Another question is about the possibility of connecting the Seek Thermal device to a PC (windows) with some kind of trick and still running the standard app provided for a device with Android as an operating system.Do you need to monitor experiment, so Android app and PC apps running at the same time or there are other requirements there in this project?
kalman_deinit
kalman_init
kalman_process
_Z10med5_fixedPi
_Z10med9_fixedPi
_Z11median_compPiS_
_Z13kalman_updateiP14kalman_private
_Z14histogram_clipPjj
_Z15create_transferPjPtj
_Z15median5_processPtS_ii
_Z15median9_processPtS_ii
_Z16bilateral_filterPtS_iiff
_Z16histogram_createPtjjjPjS_
_Z16median5x_processPtS_ii
_Z16median9f_processPfS_ii
_Z7aeg_abss
_Z7filter_PtPij
_Z8opt_med3Pt
_Z8opt_med4Pt
_Z8opt_med5Pt
_Z8opt_med9Pt
_Z9opt_med9fPf
However those Seek android app thermal images and video looks very bad, so looking for ways to use more advanced filtering including hardware circular motion support to "see through" those blanked hexagon patent pixels.its nice for that price... but gradient.... :(It is quite easy make automatic correction of linear surface component of this gradient on Seek thermal output, while nonlinear part is more tricky and not fully automated for the moment, but early Hubble Space Telescope images were distorted by a flawed mirror and could be sharpened by deconvolution :-/O
Do you need to monitor experiment, so Android app and PC apps running at the same time or there are other requirements there in this project?
The hardware circular motion is a nice way of capturing good images. You need to do something like that to solve the blanked pixel problem.Maybe inserting a few NOPs to Seek firmware will... disable this intenional blanking of those hexagon anti patent pixels, so another reason after effective Seek java app disassembly to look around in those Seek firmware files and try to guess if pixels are blanked in hardware during sensor manufacturing or simply in this firmware? >:D
Dark Pixels. No great mystery here. Every 15th pixel is intentionally blanked to avoid a potential patent infringement. Seek has an updated design for future product that eliminate the need for this measure. With the effective blur length of a 12 micron pixel resolving 8-13 micron Radiation, loss of single isolated pixels does not (in itself) degrade image quality."
Seek has an updated design for future product that eliminate the need for this measure
What do they mean, which kind of measure is hidden in those hexagon pattern pixels-sensor temperature detection? ???QuoteSeek has an updated design for future product that eliminate the need for this measure
The lens you need is designed to be non inverting and to sit in front of the cameras objective lens.
I find that I can't really see anything at long distances with the seek which is why I was curious, but I guess you can't expect too much from a low cost imager like this.Trying to figureout and calculate if those lenses mentioned in this thread
Has any1 tryed to isntall this lens http://therm-app.com/product/19mm-lens/ (http://therm-app.com/product/19mm-lens/) on to a flir e4 cammera since it is fairly cheap 19mm narow fov lens that could give a longer detection range (at least i hope so :D ) there would be some housing modifications since i dont think the threads on the lenses are the same...Optical specs below:
I find that I can't really see anything at long distances with the seek which is why I was curious, but I guess you can't expect too much from a low cost imager like this.Trying to figureout and calculate if those lenses mentioned in this threadHas any1 tryed to isntall this lens http://therm-app.com/product/19mm-lens/ (http://therm-app.com/product/19mm-lens/) on to a flir e4 cammera since it is fairly cheap 19mm narow fov lens that could give a longer detection range (at least i hope so :D ) there would be some housing modifications since i dont think the threads on the lenses are the same...Optical specs below:
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=123948)
Maybe with custom lens holder it could be possible mount those lenses and add also custom shutter with cicular motion plate inside similar to this from Flir E4 and still be in the range below $500 with Seek Thermal "enhanced" sensor (firmware hacked).
@Aurora
Any good tutorials how to choose correct lenses for given thermal sensor unit parameters?
these are a slightly cheaper option than the therm-app lenses. they work on the therm-app, and there is a larger selection.Thx for this link :-+
http://eom.umicore.com/en/infrared-optics/product-range/35-mm-f-1.1/ (http://eom.umicore.com/en/infrared-optics/product-range/35-mm-f-1.1/)
3) The gradient issue is pretty bad.What was distance from Seek dongle to this surface and what kind of surface it was?
....
I'm seeing about a 12 deg F difference between opposite corners. Attached is a picture of a uniform surface.
./sts_analysis: Calibration image surface: z0: 8003.694395287 zx: 8008.635499644 zy: 8002.172119205 zmin: 7997.231014848 zmax: 8010.157775727 dz: 12.926760879Its difficult to say that this small gradient on calibration surface makes such a huge difference in temperatures (6*C) on expected uniform thermal object surface.
old 1.4.0.2(76) new 1.4.0.2(81).Really?
old 1.4.0.2(76) new 1.4.0.2(81).Really?
Anyway Google play app store it is a joke ..apps for toys-no version numbers before install click :-DD
Scroll downCleary visible with... Google Glass :-DD
Thanks Aurora! That means that I must have the wrong cable.
Have you came across of a OTG microUSB cable that fits Samsunt Galaxy Tab 2.0 ?
Would this one work?
http://www.ebay.co.uk/itm/USB-2-0-A-Female-to-Micro-B-Female-OTG-Data-SAMSUNG-Plug-Adapter-for-GALAXY-TAB-/261513203575?pt=UK_Computing_USB_Cables&hash=item3ce366cf77 (http://www.ebay.co.uk/itm/USB-2-0-A-Female-to-Micro-B-Female-OTG-Data-SAMSUNG-Plug-Adapter-for-GALAXY-TAB-/261513203575?pt=UK_Computing_USB_Cables&hash=item3ce366cf77)
In the supply gap has set a jumper instead of a fuse.Yep, only this black thing on (1+) line looked very mysterious on your DIY Micro-B female <-> Type A male usb adapter PCB while inside Seek we have Micro-B male USB connector and now its clear howto solder those pads on Seek PCB to any custom adapter without any additional measurements 8)
It seems that they have removed blockage of an app installation outside US:I wonder if this was blocked for Canada!??? That sucks
https://play.google.com/store/apps/details?id=com.tyriansystems.SeekThermal
So it should be much easier to get future versions of the app... :-+
Everybody please check your credit card statements.
I received a "REFUND CONFIRMATION" email from Seek for $199 for the first order I placed. Completely out of the blue.
Then I checked my bank statement and they had debited $199 from my account.
Hoping I can get this straightened out.
I made my own while waiting for the adapter, don't recall where I got it from but here is a listing for 2 of them.
http://www.ebay.com/itm/2X-USB-2-0-A-type-male-to-Micro-USB-B-type-5p-female-Connector-Adapter-convertor-/151445719442 (http://www.ebay.com/itm/2X-USB-2-0-A-type-male-to-Micro-USB-B-type-5p-female-Connector-Adapter-convertor-/151445719442)
I got the cancellation / refund email going on about a month ago. My card was charged the 199 about a month before that.
As of yet i have still not gotten the money back, no emails, no nothing. As far as i have seen seek has not actually issued any refunds yet. This might just be another stall tactic. I originally ordered mine about 3 months and some change ago, getting to be
so long ago i forget! Mine was one of the first orders for the ios version.
I got the cancellation / refund email going on about a month ago. My card was charged the 199 about a month before that.
As of yet i have still not gotten the money back, no emails, no nothing. As far as i have seen seek has not actually issued any refunds yet. This might just be another stall tactic. I originally ordered mine about 3 months and some change ago, getting to be
so long ago i forget! Mine was one of the first orders for the ios version.
I actually have the seek device and paid for it a while back. My transactions were complete. THEN I got the refund notice and THEN a few days later got another charge of $199 out of the blue.
Perhaps they have started shipping iOS versions and that is the reason thet credit cards were charged.Just saw one report on the FB page of someone having received an ios unit
When I ordered my Android one a while back it took them forever to ship it and my charge hold disappeared, then they proceeded to charge the amount again, but it wasn't a double charge since the original charge never went through.
Look in your bank history statement to make sure you are not charged twice, but I did find it confusing they way they did the charges.
The app has been approved for some time now...
No revised software release for Android yet though. It will be interesting to see how well the iOS application works with the SEEK. Surely they have addressed the issues that have been highlighted here by now ?A complication is that AIUI any update requires re-approval in the Apple store, but it's not like they've not had time to get stuff sorted.
Could this turn out like the Hantek offerings....nice hardware, pity about the software :-//
Decent software is every bit as important as the clever hardware that provides the data.
Aurora
I've bought cheap 50mm and 100m ZnSe lens too but haven't played with it yet.I haven't found a way to mount it, was going to make something from acrylic tube or similar. It has a 25mm focal length right up against the seek no gap. 50-100mm would probably be better to give a bit wider shot, I was looking at a 7.5" focal length but the the seller ran out. I'd kill for a 3d printer, but just can't afford one, I love 3d modelling so I do want to get one in the future if they come down in price. A cheap desktop cnc would be great too. The ultimate would be a metal printer that could print metal right into the plastic print. Something like this but all materials at the same time - https://www.youtube.com/watch?v=zApmGFDA6ow (https://www.youtube.com/watch?v=zApmGFDA6ow)
How did you mount it on the seek module and at what distance?
Meanwhile I've found probably the easiest way for making vertical & horizontal pano head.
I was looking at kossel/delta 3d printer...
I'll use this small steppers:
(http://i.ebayimg.com/00/s/NTc2WDc2OA==/z/Q70AAOSwF1dUPo0F/$_12.JPG)
3 steppers will be instead of vertical bars of kossel and the platform for seek module will be where printer extruder is.
This way I'll be able to easily move seek vertically, horizontaly and in circular (axial precession) movement.
I still haven't gotten as good a banding reduction as miguelvp or frenky, but it does work, and in real time.This works ok for me:
//tempFrame= calibration frame - image frame + 10000
//then:
int iPeak = 10230;//depends on the image, I don't have it hardcoded
int iRange = 570;// -||-
int minPix = iPeak - (iRange/2);
int imaxPix = iPeak + (iRange / 2);
int maxPix = imaxPix;
//put 207th colum into array:
for (int y = 0; y < 156; y++)
{
arrLinet[y] = tmpImgLine[206, y];
}
//get min & max values of the array:
minTune = arrLinet.Min();
maxTune = arrLinet.Max();
//range is:
range = maxTune - minTune;
//"floor" the array so the min is 0 and max = range
for (int y = 0; y < 156; y++)
{
arrLinet[y] = arrLinet[y] - minTune;
}
maxTune = maxTune - minTune;
//tune lines:
double tuningStrength=0.003;
for (int y = 0; y < 156; y++)
{
for (int x = 0; x < 208; x++)
{
pixVal = tmpImg[x, y];//current pixel
if (pixVal < minPix) pixVal = minPix;
if (pixVal > imaxPix) pixVal = imaxPix;
maxPix = imaxPix - minPix;
pixVal = pixVal - minPix;
pixPrescaler = 1;
pixPrescaler = ((double)pixVal / (double)maxPix);
linePrescaler = ((double)arrLinet[y] / (double)maxTune);
newVal = tmpImg[x, y] * linePrescaler * tuningStrength * pixPrescaler;//higher the value, less correction is applied
tmpVal = tmpImg[x, y] - Convert.ToInt32(newVal);
tmpImg[x, y] = tmpVal;
}
}
Seems like this thread has gone cold.My main interest was investigating connecting the sensor direct to the sensor, which looks rather tricky, both electrically and the amount of processing needed, and along with the disappointing image quality means I haven't been doing much with it.
Nobody with any firmware decoding experience has stepped in, and the windows development has basically gone on hiatus.I haven't had a chance now destoy Seek unit and make its simplified circuit diagram with its MPU pins marked and scope waveforms.
Someone is selling a close-up lens for the SEEK camera on ebay.
Price isn't bad considering parts cost and the need for a 3D printed mount. I have no connection with the seller.
http://www.ebay.com/itm/NEW-SEEK-THERMAL-Macro-Lens-CAMERA-IMAGING-ANDROID-FLIR-LWIR-NIGHT-VISION-/201245366108?pt=US_Other_Cell_Phone_Accessories&hash=item2edb28975c (http://www.ebay.com/itm/NEW-SEEK-THERMAL-Macro-Lens-CAMERA-IMAGING-ANDROID-FLIR-LWIR-NIGHT-VISION-/201245366108?pt=US_Other_Cell_Phone_Accessories&hash=item2edb28975c)
Correction: they are using sealed cell high density foam and not a 3D printed plastic holder. A clever idea as I have used such foam before and it is tough stuff and fitted to the task. Expensive to buy thick sheets of it though. No idea how they created the required profile for the lens and SEEK parts though. Looks a neat job.
Aurora
I certainly haven't investigated in as much depth as Mike and others, but my impression from the thread has been that the gradient issue is due to non-uniform heating of the internal shutter -- part of the shutter is close to a warmer component when it's open, so when it closes, the camera sees a non-uniform surface temperature, and thus does a uniformity "correction" that's incorrect.
From what I read so far, there are conflicting observations as to the possible cause of the gradient...damn. Would be most annoying to go down the "realign the lens tube" route only for it to not solve it. Be interesting to hear MikeStuff's latest conclusions. :-DMMNot had time to look further & unlikely to anytime soon, but I'm pretty sure it's lens alignment.
I took off the lens. There is only the shutter. Remained gradient. Take picture later.
Painted black lacquer verge sensor. Gradient decreased! Now it evenly over the edges of the image. Still try to paint the inside of the tube.I wonder if having the inside of the lensholder black may make it more dependent on ambient temp, due to higher emissivity.
I imagine MSX like features could be added to the seek using another camera especially due to most phones having 5mp+ sensors. Also the windows tablet with the seek has its optical camera right next to it. MSX tech to me appears to just be edge detection and overlay two images.It's not that simple - different phones will have different sensor positions and fields of view, the camera-to-imager distances will usually be a lot higher.
Lurchbox
Please photo flat surface. I want to see the gradient. Maybe your Seek has a smaller gradient.
Lurchbox
Please photo flat surface. I want to see the gradient. Maybe your Seek has a smaller gradient.
Lurchbox
Please photo flat surface. I want to see the gradient. Maybe your Seek has a smaller gradient.
All those photos cover a wide range of temperatures, much wider than the typical gradient, so that would minimize the gradient's appearance.
I'd try for uniform rather a particular temp, Lurchbox. I'd try an internal wall (painted matt) or door...or something else dense, homogenous, flat and stabilised enough.ll get a shot of the door in a sec
Uho, I think that's just the pad hotspot from the coffee maker.
Picture my flat surface do Seek.
Combining layers in gimp looks pretty decent. with and without edge filteringI've been playing with image overlay too:
Combining layers in gimp looks pretty decent. with and without edge filteringI've been playing with image overlay too:
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=128482;image)
A new version of the android app has been released (1.7.4)!
For me the gradient is gone :-+.
A new version of the android app has been released (1.7.4)!
For me the gradient is gone :-+.
Wow, they really fixed it.
For me the gradient is also gone complettly but I can not find the settings for emissivity factor. Is it gone too?Yep, it's also gone. But it didn't work anyway, at least my readings didn't change when setting different values.
Not that such concerns me as I will never trust the Seek for accurate measurements ;DAs befitting its cost, miniature dongle form and target market. It isn't intended to obsolesce* professional units.
Aurora
For me the jury is still out on the image quality. In my ambient test I thought I saw more noise in the image but that isn't the fairest of tests. My hard test for thermal cameras is to see if they can reveal the plaster dot and dabs behind my homes plasterboard walls. Out of 29 thermal cameras, the SEEK is the only one that cannot reveal such detail. It is just too noisy and likely the span too wide. Sadly as span is reduced, noise gets worse so that does not look good for the SEEK.
I downloaded using raccoon-3.3.exe.
It has been suspected some of the gradient was caused by heat near the sensor. Maybe they just found a way to make the processor run cooler (optimising the code, underclocking, etc. who knows) thus virtually/completely eliminating the issue.
Now I have to get me one of these, damn it! :)
I've been working on pan/tilt motorised head lately:I've been working too, but I think we found easier way and more compact package to prepare Seek dongle for more serious tasks
It's a bit strange, because on one of the pics 5 deg difference is shown but there's no gradient visible. Maybe sensor sensitivity is less at lower temps, causing more noise.Maybe Seek "improvement" is.... adding more noise in their software.
has just shown a second version of the temperature-sensitive camera that’s set to be released in the next few months. Currently unpriced but planned to sell for a small premium over the original model, the Seek Thermal Camera with Zoom will be capable of zooming in up to three times by using a twisting front lens
... But the claimed resolution was deceptive. If a pixel is supposed to give real data, its included in the resolution count. Not imaginary or guessed data.
@YewSuck
are you able to capture videos with the galaxy SII ? I tried that before with a cyanogenmoded SII and everything worked fine exept the video function. I tried also the omnirom without success.
That Seek Thermal zoom capability is interesting in anounced new version 8)Quotehas just shown a second version of the temperature-sensitive camera that’s set to be released in the next few months. Currently unpriced but planned to sell for a small premium over the original model, the Seek Thermal Camera with Zoom will be capable of zooming in up to three times by using a twisting front lens
http://9to5mac.com/2015/01/05/ces-2015-olloclip-cpl/ (http://9to5mac.com/2015/01/05/ces-2015-olloclip-cpl/)
3D Printed Dock for Seek Thermal.Since no plans to use Seek Thermal even in Android version mounted directly into crappy phone/tablet USB port but via extension cable, do not like at all this "Z" shaped zig-zag Seek Thermal.
http://www.shapeways.com/model/2944122/seek-thermal-dock.html?li=shortUrl (http://www.shapeways.com/model/2944122/seek-thermal-dock.html?li=shortUrl)
Quite handy! I don't need one though, I have no intention of dropping anything. The seller didn't mention the current difficulty in finding an extension micro-B OTG cable. Amazon list one on their SeeK page, but I've yet to see one on eBay (among the hundreds of others). The one I tried from there didn't work, and couldn't find anything to bridge in the bared male connector...just four pins showing.
***
I pulled this from another forum and thought it might be relevant to the topic since there were a few asking for mounts. This a link to someone selling a mount. Moderators if this seems inappropriate then please delete link. I have nothing to do with this vendor.
3D Printed Dock for Seek Thermal.
http://www.shapeways.com/model/2944122/seek-thermal-dock.html?li=shortUrl (http://www.shapeways.com/model/2944122/seek-thermal-dock.html?li=shortUrl)
-YS
Quite handy! I don't need one though, I have no intention of dropping anything. The seller didn't mention the current difficulty in finding an extension micro-B OTG cable.A search for "micro USB extension" on ebay shows hundreds, though I don't know how many of them will be OTG compatible
I thought I would offering it to someone before offering it to the trash can.Yes please!
@rjardina,
If your lens mount broke free from the pcb, the sensor is likely toast. The bond wires are literally a millimeter from the left inside wall of the lens holder. Any slight movement and they get jammed up and short the sensor. I've done it twice and was able to repair it using a microscope. I did it a third time and broke 3 bond wires. Needless to say, it's now a $200 write off. I'm waiting on the new flir one now, and watching development here of what I could have had, had I not jacked with my camera in the first place.
With the old SW the camera got a little warm after some minutes. With the new SW I could not feel the temperature rising. Even after 10 minutes. Has anybody the same observation? As the firmware was not changed I not sure about my oberservations.I checked the power draw with old and new version - no different at 57mA - I doubt this is enough to make it get noticeably warm.
With the old SW the camera got a little warm after some minutes. With the new SW I could not feel the temperature rising. Even after 10 minutes. Has anybody the same observation? As the firmware was not changed I not sure about my oberservations.I checked the power draw with old and new version - no different at 57mA - I doubt this is enough to make it get noticeably warm.
I did a short measurement with a thermocouple glued to the backside of the SEEK. I measured a rise of the temperature of 5 degree Celsius after 10 minutes. I could do that only with the new version. What I do not know is if the temperature is generated within the SEEK or transfered from my galaxy S4 via the usb connector to the SEEK.
It was just glued external on the round part of the backside where the sensor is located.I did a short measurement with a thermocouple glued to the backside of the SEEK. I measured a rise of the temperature of 5 degree Celsius after 10 minutes. I could do that only with the new version. What I do not know is if the temperature is generated within the SEEK or transfered from my galaxy S4 via the usb connector to the SEEK.
I'd wager that it's nearly all internally generated, but a quick check with an extension cable would confirm that.
I'm losing track of who's disassembling SEEK units -- did you glue your thermocouple to the exterior of the SEEK case, or to something inside it?
. But no one noticed that the shutter has a limit of travel. It rests on the tube at closing.As remember I've shown Mikes's photo where it is clear that strange things can happen during this shutter events-it could be very interesting to see Seek oryginal shutter operation in high speed camera slow motion as it enters area over sensor.
Another amateur interjection again, my apologies...is the SeeK app known to be buggy? I have the 1.7.4, and the unit performed fine yesterday, when I received it. Now today it kept (past tense) repeatedly telling me to attach it again, after a couple of seconds of working normally each time. I've since arranged to send it back to Amazon...and now tonight it's working fine again! Eh?
I prefer stuff that either works or not...intermittent is a pain. Is there a possibility of a buggy app? If it's that, I can be assured and keep the (blameless) camera. Thanks fellows.
INow, let's see if they can add some new features like changing the max/min thresholds. Or is that called the temperature span? They could add a palette bar, with a slider to change the center of span, and pinch to scale the span. Hint hint Seek ;-). They could even plot the temperature range on it.This is exactly what i am waiting/ hoping for.
INow, let's see if they can add some new features like changing the max/min thresholds. Or is that called the temperature span? They could add a palette bar, with a slider to change the center of span, and pinch to scale the span. Hint hint Seek ;-). They could even plot the temperature range on it.This is exactly what i am waiting/ hoping for.
Can anyone point me in the right direction of the newest version of the windows app?
Also, in regards to theleft lepton, anyone have the actual fps of the scensor vs the fps of the seek sensor? I'm wagering that the lepton is also noisy, but they are integrating far more frames per second than the seek sensor is. This, I think, is the key to how clean and how sensitive the sensor can be. If they could figure out a way to grab more frames per second for integration, I'd buy another camera. No questions asked. 4 frames per integration just isn't good enough. They need to be running this sensor at 60. And I'm guessing the lepton is already there.The Lepton data format implies a raw rate of 3x, but could be more - I've not had a chance to investigate further.
He was using it to monitor temperatures in an experiment on house chimney construction....and he got 10*F~5*C difference only because had no insulation no more when opened "model" box doors :-DD
Thermography has been used in the medical profession, ... for imaging women's breasts in the hunt for anomalies in the tissue structures.
You are not able to distinguish temperature at all. You can only sense that the object is warmer than you, or colder. Sensing differences in temperature as little as 2 degrees would be nearly impossible. It would take at least 10 degrees difference to feel a difference. There's a reason we use thermometers and IR cameras.
Imagine finding heat leaks in your house by touch alone. It would take ages. And it would only work of its a large difference. The human body is no different. It might take less time to map the body but a lot is guessing, like does it feel different? Not sure.
Has anyone worked on a linux driver for the Seek? i would like to combine the UV-NIR camera of the raspberry pi as an overlay with the thermal images... maybe sweep the full field of view of the camera module or use a zoom lens that approximately matches that of the seek.
Also, can anyone point me to latest version of the compiled seeker windows program?
Has anyone worked on a linux driver for the Seek?Do you mean Linux kernel module?
Today saw the error of the program. Incorrectly saves the photo. No heat on the display image. Mode Imager + photo.
I saw a photo of a thermal imager with a zoom. The diameter of the lens is not changed. Means that at maximum zoom - sensitivity decreases 3 times.Would be good if it will also do close-ups, but still looking less attractive now Flir have announced a 160x120 Lepton.
Re: the zoom lens version--it looks then that the zoom image would just be a glorified blowup of the standard image? Useful maybe for picking out a hot blob in the distance...
I saw a photo of a thermal imager with a zoom. The diameter of the lens is not changed. Means that at maximum zoom - sensitivity decreases 3 times.
I saw a photo of a thermal imager with a zoom. The diameter of the lens is not changed. Means that at maximum zoom - sensitivity decreases 3 times.
The diameter of the lens has increased - however definitely not 3x.
(http://puu.sh/eQAiT/faa69e72ec.jpg)
(http://puu.sh/eQArJ/cd7709aae8.jpg)
I'm not a expert on this, but I think it would still be possible for the lens to maintain a constant aperture throughout the zoom range, even without increasing the lens's diameter - depending on if the original lens as was already the largest aperture they could fit in the size (of the orig lens)
I saw a photo of a thermal imager with a zoom. The diameter of the lens is not changed. Means that at maximum zoom - sensitivity decreases 3 times.
The diameter of the lens has increased - however definitely not 3x.
(http://puu.sh/eQAiT/faa69e72ec.jpg)
(http://puu.sh/eQArJ/cd7709aae8.jpg)
I'm not a expert on this, but I think it would still be possible for the lens to maintain a constant aperture throughout the zoom range, even without increasing the lens's diameter - depending on if the original lens as was already the largest aperture they could fit in the size (of the orig lens)
It is further interesting to note that the icon for the Seek app has always been an image of the larger lens device
(snip)
It is further interesting to note that the icon for the Seek app has always been an image of the larger lens device
micro-lens holder for less than $1.50US (elastic cord)
If anyone else is interested in doing this too. 12,500RPMs while dipping it in water every 10 seconds. Or better yet drill the lens under water if possible, to prevent chipping. I learned a little from the first hole I chipped, as seen.
It will be interesting to know how the zoom feature has been created. It normally required three lenses, with the middle one moving. It is possible to create a zoom function using two lenses with one (front) moving in and out of the seconds (rear) optical axis to create a variable zoom effect. Zoom with a single lens would be 'interesting'.Aurora wrote is true. Need more lenses. Each transition air - glass is 6% loss. You need to add at least one lens. This two transitions. This minus 12%. If two lenses is 24% loss. Zoom in three times. Means the area of the lens Sx3 + 0.24Sx3. This is not an exact formula. But you can estimate the size of the lens. I do not see an increase in the lens. Although it is impossible to believe Seek. They are used in advertising professional imager. Not Seek. They can again draw pretty pictures.
The lens also needs to remain focus free (fixed focus)...... quite a challenge !
Hopefully we will find out in due course.
I hope Seek are putting effort into improving the electronic and software design, as well as the optical path.
Aurora
With regard to lens diameter, I recall during Mikes tear down that there appears to be a rubber cup over the lens tube that reduces the amount of lens visible to the user and so effectively reduces the effective diameter. I just checked my SEEK and this does indeed appear to be the case.The SeeK Thermal is a fixed focus camera therefore you have only a certain depth of field. I assume, if they use the whole diameter of the lens, the depth of field would be to small. By reducing the aperture with the rubber cup they increased the depth of field. Another option was to add a focus adjustment as they do now for the XR model. But that was probably to expensive.
Aurora
@WSPI--if those FOV's are correct then it appears that rather than the XR being a "zoom" or a "manual focuser" it is now neither--but a fixed telephoto, with focusing. [Obviously, a zoom lens has two figures for FOV].@Seeker
Soooo...XR quite a lot better for distance imaging, it would seem.
Maybe the current Version is a wide field then the XR could be a normal range?
As mentioned in Mike's video on the SeeK, it looks possible to attach the ZnSe lens for close-up work with a plastic cap of some kind...no lens drilling.
I don't need such a lens but if I did I'd make an interference fit cap, comprising a side lip (for grip on the bezel) and a thin shoulder to capture the edge of the extra lens. Polyethelene would give the pressure required for a good grip.
Of course the exact size would have to be arrived at by experiment--or use a slightly undersize hard plastic (ABS, styrene) with a cut in it for spring. In a lot of cases a domestic bottle cap (of some kind) could be utilised, with most of the top cut away.
The original seeks appear to now be $249 on thermal.com
(http://puu.sh/eTSMb/ef71c86958.jpg)
They are recovering the developmengt costs for software fixing the gradient issue :-DDThere might be something else-they made significant changes to new Seek hardware and do not want no more people to mess with old version and slowly move to new version.
Think very carefully before buying the SEEK. The new FLIR One will likely blow it away.I sold mine to buy the flir android.. Not sure if that was a dumb move, but the higher resolution flir sounds really nice. I don't like that it runs on it's own battery though, because eventually a battery like that will die, and then what. Will they sell replacement batteries for it? Also why not design the unit in such a way to use the phone or tablets camera, so all your money goes towards the thermal imager. Of course the parallax problem, but if you made the attachment similar to the thermapp it could be right next to the camera. I read on another forum, that the flir 1 android was coming out very soon, so I guess we will see.
Think very carefully before buying the SEEK. The new FLIR One will likely blow it away.
Think very carefully before buying the SEEK. The new FLIR One will likely blow it away.
Think very carefully before buying the SEEK. The new FLIR One will likely blow it away.The new FLIR One has still one limitation : Scene temperature range: -4°F to 248°F (-20° to 120°C).
Also why not design the unit in such a way to use the phone or tablets camera, so all your money goes towards the thermal imager. Of course the parallax problem, but if you made the attachment similar to the thermapp it could be right next to the camera.
I honestly believe that, even if more expensive, the FLIR One new version will outperform the SEEK in terms of image quality and processing (inc. MSX)Maybe on crappy phone with limited processing power, but there are use cases where even this Seek thermal versions with powerfull PC OpenCV processing and implemented hardware circular motion as well as smimplicity to write own PC app optimized for mlticore powerfull modern procesors is advantage in many research projects ;)
Another avenue of investigation for SEEK should be making a camera with a Chalcogenide glass filter in front of the microbolometer and then using ZnSe optics rather than Chaclogenide glass. Presumably cheaper ?
In the press info from Seek no zoom function is mentioned. Only Extended range and Manual Focus.Another avenue of investigation for SEEK should be making a camera with a Chalcogenide glass filter in front of the microbolometer and then using ZnSe optics rather than Chaclogenide glass. Presumably cheaper ?
I'm confused here. ZnSe is a chalcogenide. I know I'm taking an overly-literal approach, but what other chalcogenides are you contrasting it with?
I'm also trying to figure out where I missed the announcement that the "3x Zoom" lens was actually a fixed-field-of-view (and thus fixed-"zoom"), variable-focus lens. If SEEK is only advertising a single figure for field-of-view angle, it's possible that that was just a goof on the part of the marketing folks. If there are other announcements that indicate it really isn't going to be a zoom, could someone link to them?
I assume that folks like FLIR wouldn't market a zoom lens because it would be too hard for them to maintain calibration as it moved through its zoom range. For a qualitatively-oriented rather than quantitatively-oriented device like the SEEK, I can imagine that many folks would like to have a zoom range, even if it means temperature readings are only accurate at one point in the range.
Think very carefully before buying the SEEK. The new FLIR One will likely blow it away.The new FLIR One has still one limitation : Scene temperature range: -4°F to 248°F (-20° to 120°C).
For checking the temperature of power electronics that is not enough. Here the Seek will still be my favorite with-40C to 330C detection. Especially as my comparision to a Flir T335 showed sufficient accuracy for temperatures above room temp.
Chalcogenide Glass as in 'GASIR' versus ZnSe
http://www.lightpath.com/products/infrared-optics/thermal-imaging-optics.html (http://www.lightpath.com/products/infrared-optics/thermal-imaging-optics.html)
FLIR says they are looking to get the price on the ONE 2015 (as they are calling the new version) to $250 and it should be available for pre-order mid-year. If it's like the original though they won't be shipping until August.Are you sure about this? I read a post where someone said he recently talked with a flir rep, and said the android version was coming out in a week or so.
FLIR says they are looking to get the price on the ONE 2015 (as they are calling the new version) to $250 and it should be available for pre-order mid-year. If it's like the original though they won't be shipping until August.Are you sure about this? I read a post where someone said he recently talked with a flir rep, and said the android version was coming out in a week or so.
Do you have a credible source to verify this? This sounds like a 'my hairdresser has a friend who knows this beta tester that was told by an insider at [insert tech company] that the [insert tech product] will have usb 4.0 'No verifiable source, I had only read a post on another forum talking about the flir1. Could just as well be bs, I have no idea, which is why I was asking.
The second generation should be released this week and it is Droid compatible. I chatted with David a Flir representative last night about this and some other projects they are working on. They will adding a mil dot reticle on their scopes and it should be ready shortly. Then you can upload it from your PC. I prefer a mil dot and looking forward to this upgrade.
How exactly did you get that apart so cleanly?grindy wheel on dremel and 600 grit paper.
Are you sure about this? I read a post where someone said he recently talked with a flir rep, and said the android version was coming out in a week or so.
The FLIR ONE will be available for pre-order online from FLIR.com mid-year and will be available
through retail partners across the globe later this year. For more information, please visit
www.flir.com/flirone2015 (http://www.flir.com/flirone2015)
@Mike,Although you can see the layers, you can't tell which track is on which layer, so not as useful as you might have thought it would be
Nice pictures. thank you :-+
I will be interested to compare your pictures with what can be revealed by the Faxitron. Guaranteed X-Ray will not show the layers as well as physical disassembly but having you images will show me the Faxitron's limitations.
Aurora
If anyone's interested in poking about with the hardware, here are some pics of the bare PCB layers. all viewed from sensor side
Some interesting features on the die, but waiting for new bulb for my microscope to get some decent pics
With semi transparent layers it should be easy to reverse engineer whole circuit.It is more interesting if new Seek... has the same PCB and circuit... didn't checked latest software changes if any (I mean MD5 check sums and binary comparisions of *.bin MPU files),
Where do I find the Seek app?:wtf: in modern internet age is it?
The Seek Thermal apps are available in the Apple and Google Play app stores.
Seek Thermal for iOS
Seek Thermal for Android*
*The Android APK is not available for direct download outside of Google Play, and cannot be provided by Customer Support.
I'll try to make vector drawings of all layers so that we can stack them on top of eachother.Note some copper is missing on the ground plane (l3) due to over-Dremelling
With semi transparent layers it should be easy to reverse engineer whole circuit.
Layer 2 is in the attachement...
The Android APK is not what you think it isI do not know what you think what I think about *.apk, but... I simply upack it using unzip and get what I want- *.bin Seek MPU raw code :-DD
$ md5sum *.apk
4f46662903727d09079da60ea27a92c0 com.tyriansystems.SeekThermalSeek-Thermal-1.6.0-20141127v102900.apk
$ unzip com.tyriansystems.SeekThermalSeek-Thermal-1.6.0-20141127v102900.apk
Archive: com.tyriansystems.SeekThermalSeek-Thermal-1.6.0-20141127v102900.apk
...
inflating: com/tyriansystems/Seekware/SUBI_LPC43XX_LPCOpen_1.2.0.0.bin
inflating: com/tyriansystems/Seekware/SUBI_LPC43XX_LPCOpen_1.3.0.0.bin
...
You did not try to eliminate the gradient? I have a large gradient.
It's one that rjardina broke and donated.
@Mike... do you sacrifice your seek just for getting this layer images?
Well... thanks.
It would be interesting if this sensor could be used with another µC...like a stm32f4xx.
Your countrymen have done a good editor.thank you... it was my website ;)
I assume they didn't supply a disc or USB flash drive because of the cost and fragmentation it would cause.In this video
the Seek was designed with mobile phones and tablets in mind.So, they loose other customers.
Well folks, that video sums it up. Mike is officially disappointed with the performace.Thinking about it, if you don't have enough reference pixels on a row, you effectively lose the whole image row, so they need enough that even after bad pixels etc. in the reference array, they have enough to compensate the main row.
I found it interesting that there were no pixels physically blanked. That means it's done by the controller. Also the reference block has so many pixels. Perhaps row 207 is where these values come from. Each pixel in the reference row might be averaged and applied to the main array. Really interesting stuff.
could they use the array of reference pixels to make a two dimensional predictive reference map of the entire die?I can't see how anything across the 22 pixel width of the ref array could relate to anything over the with of the main one. Not even sure about the length either, though without knowing the sorts of things they are compensating it's hard to know.
could they use the array of reference pixels to make a two dimensional predictive reference map of the entire die?I can't see how anything across the 22 pixel width of the ref array could relate to anything over the with of the main one. Not even sure about the length either, though without knowing the sorts of things they are compensating it's hard to know.
If there is some progressive issue across the array, you'd think a strip on all 4 sides would be the way to compensate it.
Mike I think you are spot on. I suspected that because lots of pixels will inevitibly drift, pixels will be dead or have wild gain differences from the main array, they need a large range of reference pixels to compute an average value from. I wonder if flir sensors have a the same large amount of reference pixels. The seek sensor manufacturing process appears to contain serious limitations. I wonder what yield of sensors they get from a wafer that contain fewer than 1% bad pixels.Well folks, that video sums it up. Mike is officially disappointed with the performace.Thinking about it, if you don't have enough reference pixels on a row, you effectively lose the whole image row, so they need enough that even after bad pixels etc. in the reference array, they have enough to compensate the main row.
I found it interesting that there were no pixels physically blanked. That means it's done by the controller. Also the reference block has so many pixels. Perhaps row 207 is where these values come from. Each pixel in the reference row might be averaged and applied to the main array. Really interesting stuff.
In reference to a previous post I made, I'm wondering what the integration time is. it would be really interesting if someone was able to reverse engineer the flash chip and write some code to change the integration time. In my opinion, the shortest possible integration might reduce drift. A shorter duty cycle of current being passed through each pixel, less energy being converted to heat and thus a more uniform image for longer periods between NUC events.
These things are typical with any company trying to pursuade buyers to an unproven product, and I scold them for it, but people will still buy.If someone doesn't know that lens holder is.... glued to PCB and have no technical background maybe someone will buy those toys (Flir One also is a toy only).
That appears to be almost like the Bible for thermal imaging engineers.Maybe adding "site:......." to Google search could help find it, but due to new Google policy do not expect find it on top of serch results >:D
Wow.
This thread is amazing, and although I am an absolute no one compared to you all, I wanted to contribute in some way.
I received a sample SeeK Thermal XR a few days back. I can compare it to a standard SeeK, and post the results. Alas, I cannot take it apart safely, and i would be of no use anyway due to lack of gear - and knowledge on how to use it. So all I can do, is post pictures!
Here's a little comparison between the two TICs
(http://imgur.com/1WxvJyc.jpg)
(http://imgur.com/hcaFUnR.jpg)
Note the size of the objective lens:
(http://imgur.com/JML8xsi.jpg)
About focussing. The objective lens does not move at all rotating the focusing ring, so i guess there's another element inside that actually moves - the feedback is also terrible, not smooth at all. But has no backlash.
How I tested:
(http://imgur.com/EZIYb8t.jpg)
Not professional, but at least this way I could compare actual FOV of both seek's.
original Seek:
(http://imgur.com/nSiCnUk.jpg)
color palette
(http://imgur.com/LhURb3M.jpg)
B&W
Seek XR:
(http://imgur.com/42nCVMR.jpg)
color palette
(http://imgur.com/KooDgo3.jpg)
B&W
How near can I focus?
(http://imgur.com/zRUBwuG.jpg)
about two inches... here's the image in visible light:
(http://imgur.com/uhAQoEJ.jpg)
(I think I rotated it wrong, just realized it)
Sorry i could not do more than this... I need to buy a cable to test these in a PC, have any suggestion on which cable will work?
I received a sample SeeK Thermal XR a few days back. I can compare it to a standard SeeK, and post the results. Alas, I cannot take it apart safely, and i would be of no use anyway due to lack of gear - and knowledge on how to use it. So all I can do, is post pictures!
[...]
About focussing. The objective lens does not move at all rotating the focusing ring, so i guess there's another element inside that actually moves - the feedback is also terrible, not smooth at all. But has no backlash.
I conducted tests with other lenses. Is the gradient. Gradient not only the original lens and the original tube. When the lens is moved it can be. To check. Today held a test range. Made lens X1.7. Got 20 degrees. As the new Seek. Detection range up to 120m person. You need to use a black and white palette. When using a color palette less. 600m - a fairy tale. They are lying again. pizzigri can do the test. I think the result will be similar.
Does anyone have a copy of the latest APK? Does this work with the Galaxy S3? (I have an S4, but it's broken, so I'm borrowing a friend's S3.)
I can't seem to get the 1.7.4 APK to install on the S3.
if you need an imager now, it's not relevant.It depends what do you want to do with your thermal imager-to detect house thermal energy gaps one can use even MELEXIS ;)
That's hard to answer. What do you intend to do with it?The big question is how much will the new f1 cost. It looks like it will replace the current one, so seems like pricing could be similar
The current SeeK has significantly higher native resolution (206x156) than the current FLIR ONE (80x60), and has a wider range of displayable temperatures. The new SeeK XR adds adjustable focus, which is quite useful in some applications, and costs a bit more.
The current FLIR ONE (iPhone-only) has vastly better software support -- more robust and reliable, more accurate measurements, fewer crashes, better apparent image quality (lower noise, MSX optical enhancement).
The upcoming FLIR ONE (iOS or Android) will be closer to the SeeK's resolution (160x120). Assuming that its software is still high-quality, it's likely to significantly outperform the SeeK in nearly every aspect. But it will be a while before it's available; if you need an imager now, it's not relevant.
The big question is how much will the new f1 cost. It looks like it will replace the current one, so seems like pricing could be similar
The big question is how much will the new f1 cost. It looks like it will replace the current one, so seems like pricing could be similar
If that is the case, the bigger question is what will be the fate of the E4, E5 & E6, other than the hackability for those in the know.
The big question is how much will the new f1 cost. It looks like it will replace the current one, so seems like pricing could be similar
If that is the case, the bigger question is what will be the fate of the E4, E5 & E6, other than the hackability for those in the know.
Yet it seems to me that an even bigger question for the new F1 would be whether or not the temperature range capability is extended, especially at the high-end. Those considering an E4,E5 or
E6 are more often than not seeking higher temperature reading capability than what the current F1
offers. Adding another 100° to the F1 top end, in addition to the already revealed pixel enhancement would prove to be a real winner.
@-jeffB,
I regret I am not a chemist, just an end user.
The background to my knowledge about these lenses is that I have used ZnSe lenses for some years as a close-up auxilliary lens for my industrial thermal cameras. I was familiar with them and their fragility in terms of scratching. Unlike Germanium lenses ZnSe offered an affordable solution to close up work on PCB's
Move forward a few years......the FLIR E4 was released. Many of us on this forum discussed the various parts of the new Ex series, including the lens. There was some discussion about the size of the lens and whether it was Germanium. Without saying too much, I have a friend inside the industry and I discussed the E4 with him. He knows the design well ;) Being a great chap he directed me towards the Lightpath web site and said that a Chalcogenide lens was used in the E4 to save cost.
http://www.lightpath.com/images/Products/LightPath%20Infrared_Brochure_Jan2015.pdf (http://www.lightpath.com/images/Products/LightPath%20Infrared_Brochure_Jan2015.pdf)
I then started reading about the Chalcogenide lenses used in modern thermal cameras. I read an article detailing a company that started production of the first Chalcogenide lenses that could replace Germanium lenses. These lenses were dark grey/black in colour and opaque to visible light. The clever bit was that they could be molded to shape which saves cost. No mention was made in any relates articles about ZnSe. My experience with ZnSe is that it is yellow in colour and very wide in bandwidth so transmits visible light as well as IR and thermal wavelengths. It normally needs a filter between it and a microbolometer.
http://ceramics.org/ceramic-tech-today/fraunhofer-imw-molded-chalcogenide-glass-approach-delivers-low-cost-infrared-lenses (http://ceramics.org/ceramic-tech-today/fraunhofer-imw-molded-chalcogenide-glass-approach-delivers-low-cost-infrared-lenses)
http://www.gizmag.com/cheap-infrared-lenses-fraunhofer/23659/ (http://www.gizmag.com/cheap-infrared-lenses-fraunhofer/23659/)
I was not aware that ZnSe was a chalcogenide glass. What I do know is that GASIR is not ZnSe. Exactly what it contains may be covered by commercial secrecy ?
What I can say for sure is that the GASIR product is used extensively in modern thermal cameras and ZnSe is not, so GASIR must have some advantages over ZnSe.
A Google search on GASIR does produce results discussing it. Many are too technical on the Chemistry front for me.
i.e.
https://global.arizona.edu/sites/default/files/docs/experts/Lucas-Recentadvancesinchalcogenideglasses.pdf (https://global.arizona.edu/sites/default/files/docs/experts/Lucas-Recentadvancesinchalcogenideglasses.pdf)
Just found this article stating that Germanium is a significant element in GASIR, hence the dark colour of the lenses.
http://www.photonics.com/Article.aspx?AID=24318 (http://www.photonics.com/Article.aspx?AID=24318)
Hope this helps.
Aurora
The lens is made from a product called GASIR from UMICORE. The exact content is likely a trade secret but I can confirm that t contains a percentage of Germanium yet is less affected by ambient temperature when compared to pure Germaniun.I suppose I could try putting it in my x-ray fluorescence spectrometer..
http://eom.umicore.com/en/infrared-optics/blanks/ (http://eom.umicore.com/en/infrared-optics/blanks/)
Aurora
I was following this thread for quite a while. I am curious about that chalcogenide lens: has anyone an idea, which material exactly is is made of? As I read on wikipedia, chalcogenides may contain Arsen (bound, but long term stability?) and I wonder about product safety of such lenses?
@ Aurora
I do not agree to your Statement "SEEK have not shown themselves to very customer friendly or concerned that their product does not perform as well as expected".
A new version of the Android APP has been released, with a new feature that lets you move and resize the the phone camera image.
I wonder, why did they choose this split screen solution? Some other thermal cameras have nice overlay views, which is much better, this split screen thing is close to useless, at least for me.
I saw a mention that it reduces lagYes, it seems to be a bit smoother now. It also fixed a crash that I used to get when using the recent apps key, and trying to relaunch the app and getting a black screen. Overall it feels much better. Still issues with the prompt screen to set as default camera, would be nice not to have to click that every time, but I'm just glad they are still making improvements.
I wonder, why did they choose this split screen solution?This mode is useless.
So the jurys finding is that this image did not come from the next generation flir one, but a professional camera and the image was posted under the flir one twitter account in error. And this post is off topic.
I keep trying to decipher which photos flir have posted came from the next gen imager and not the older one. Is there such little visual difference that it's practically indistinguishable? I thought doubling the resolution would make a major difference. This is a fairly significant increase in resolution.
So the jurys finding is that this image did not come from the next generation flir one, but a professional camera and the image was posted under the flir one twitter account in error. And this post is off topic.I saw this image -
I keep trying to decipher which photos flir have posted came from the next gen imager and not the older one. Is there such little visual difference that it's practically indistinguishable? I thought doubling the resolution would make a major difference. This is a fairly significant increase in resolution.
1) Software (v.1.4.02) seems really unstable on Android 5.0 Lollipop running on a stock Nexus 5. Usually it will immediately crash the first time I run it, but once relaunched it will stay running.
I haven't had the time yet to ascertain if the update has resolved the flakiness of the app (it deciding (at various points) to be uppity about working contunuously without repeated reboots etc).
I have noticed the "bong" alarm (which only used to sound when it wanted a reboot) now sounds whenever you exit the app, and also when you unplug the unit. Is more "bongs" better? Time will tell.
The good news: Seek Thermal and FLIR are offering a 10% discount to people who have contributed to the Mu Optics campaign.
I've been in contact with the developers and the most recent update sounded promising, yet it turned out disastrous.Are there developers in this team-really? :palm:
I've been in contact with the developers and the most recent update sounded promising, yet it turned out disastrous.Are there developers in this team-really? :palm:
http://en.wikipedia.org/wiki/Test_case (http://en.wikipedia.org/wiki/Test_case)
A test case, in software engineering, is a set of conditions under which a tester will determine whether an application, software system or one of its features is working as it was originally established for it to do.
Too many mistakes, too often :--
Hopefully, it is easy write own software for Seek toy...
Has anyone else had dead pixel issues with the last few updates? Starting with version 1.5.x I had a bottom eight of the screen containing dead pixels and now with the most recent update nearly 75% of the screen contains dead pixels and makes it unusable. Attached is a video of the Seek Thermal module on the 1.8.4 update, interesting enough when using the module on 1.3.1 it works perfectly fine without any issues. I've been in contact with the developers and the most recent update sounded promising, yet it turned out disastrous.
(http://i.gyazo.com/398ef0a26ca9da84de22992fa2e7979b.jpg)
(http://i.gyazo.com/71944c89a25b35bc49cf98c5b27427d3.gif)
https://drive.google.com/file/d/0B9Zl4KisxaP8cENFN0I3XzFnU0U/view?usp=sharing (https://drive.google.com/file/d/0B9Zl4KisxaP8cENFN0I3XzFnU0U/view?usp=sharing)
And the other bad news is that the "coupon" for the Seek discount expired about 10 days after it was announced.
From the comments page:
"Coupon code “MUOPT15” is not valid. The coupon expired on Fri Feb 13 00:00:00 PST 2015."
Chances are that the Flir "coupon" has expired as well, or will not be applicable to the "new" Flir One for android.
Mu ==> bad situation all around.
@Kilrah
That's great, now I am not the only one that is happy with the SeeK. I posted several time that the SeeK is performing very well if you take the price into account. Unfortunatelly the majority in this forum is just requesting the best technical possible today without looking if that is reachable for that price. For me the SeeK is currently the number 1 because there is no competition in this range.
Me
Mar 13, 01:31
Hi,
I’ve seen several reviews showing a setting for object emissivity in the android and iPhone apps, but I don’t seem to be able to find it (I use android). Has it been removed and if yes why ? I’d have needed it a few times lately.
Regards,
Andre
Seek Support (Seek Thermal)
Mar 13, 16:42
Hi Andre,
It was removed several versions ago and is being reevaluated before possibly returning in a different form later.
Ryan
Seek Support
Hi there, guys. I am new to this forum. I want to buy some thermal sights for my father's birthday. One of my friends recommended me the one from atncorp (http://www.atncorp.com). What do you think of them? He says that they are very good
Bah--this thread is bleeding demised....bereft of life, it pushes up the daisies.Sometimes there's just no more to say.....
Erik soon starts the project HemaVision. It is more promising.
A computer vision-enabled thermal imager that helps you diagnose problems in your building or anywhere temperatures are important:bullshit:
I do macro and telephoto lens for this project.
Macro lenses are external. Prototypes have already been sent to Erik for testing. Telephoto lenses being developed as external. While they are rather large price. Perhaps I will change the lens to the sensor on the window. This will make the universal imager. It will be possible to put the lens with the right focus. But it is a complicated technology. Actual results will be in a few months. When Eric will send the test sample sensor.I do macro and telephoto lens for this project.
Are you talking about thermal lenses here or lenses for the optical sensor?
PS. why are these sensors so low FPS? Is it regulative restriction?
No, the framerate was calculated at about 36fps.Could you show us this calculation details to prove your statement? :-DD
I'm looking for a thermal camera for my Andoid LG p880 optimus 4x hd is the Seek Thermal sill recommended or should I wait for the Android version of Flir one that was announced on the CES?push...
The limit on framerate for LWIR cameras is 9fps.
320x240 Gen 2 microbolometer running at 60 frames per second and with FLIR's excellent image processing capabilities.
I'm looking for a thermal camera for my Andoid LG p880 optimus 4x hd is the Seek Thermal sill recommended or should I wait for the Android version of Flir one that was announced on the CES?push...
I read the thread but its never the less not clear to me how good or bad is this thing.
Sure in compaction to any professional hardware it may be crap,
but for a student that want to play around the standards are completely different than for a pro.
And for a student 200-300 bucks is a lot of money.
So any advice would be greatly appreciated.
Poor software. If you want to see the hottest places - that's enough. But not anymore.Students with basic C/C++ skils can write his own software with OpenCV accelerated by Nvidia CUDA and easy outperform FLIR postoprocessing capabilities, so many interesting problems can be solved with Seek toy with custom software ;)
After all, the circular motion requires motors and control board.Using any camera requires operator too. Sometimes is more comfortable just put camera on tripod and... controll it from remote location, so automatic measurements can be made and data recorded for futher analysis, so we need to position camera to interesting spots using motors.
@Uho and @Marco, yes the frame rate is limited to 9fps, the readout cannot go any faster without saturating the amplifiers, and there is also a pixel time constant of about 100 milliseconds - you'd get really visible trails on images if the frame rate were to go faster with these pixels.
con on people why no one answers to my questions, you don't like me or what :'(From what I've read you have got many answers...
I have found this great comparison between Flir One, Seek Thermal and Therm-App.
The images tell it all. Flir One is terrible without MSX.
That Therm-App image is clearly using some kind of fusion algorithmI don't think so. There is no additional camera lens on the Therm-App.
Now military thermal imaging is a very different matter.....but we mere mortals are unlikely to get our hands on that sort of imaging equipment any time soon.**Cough***
@Mike,
Nah that's just circa year 2000 long range surveillance kit from IRAQ ;)
The Military kit I am talking about is based upon true high resolution multi megapixel arrays and stuff that I'll not talk about here :)
Aurora
The increase in resolution is very expensive but does produce 'cleaner' images. In the more affordable cameras running lower resolutions, it is helpful to see some context in the image so that the location of 'areas of interest' may be ascertained. One method of achieving this is using a higher resolution thermal imaging FPA, but these bring with them increased cost. 320x240 resolution FPA's do produce an image that the human brain can correlate with the visible domain in order to localise the area of interest. 80x60 resolution is a little more challenging, especially when working at some distance from the area of interest. The solution is often to move much closed to the target in order to gain a better understanding of the scene.
Seek Thermal is noisy.If you resized to higher width Seek (Flir One nothing to compare-it has thermal blobs at low res) than you introduced noise and created artificial thermal pixels ;)
...
(Seek and Flir One resized to 384px by width)
Therm-App:
Seek Thermal:
Flir One:
Where I can find the software someone had written for Windows that talks to the camera and if it provides real-time output like normal usb camera's.
I'm trying to find some solution to be able to use this damn thing without human interaction for a continuous six hour period.
not to promote FLIR at all... but this is basically their clone of Mike's cam. http://www.amazon.com/FLIR-C2-Compact-Thermal-Imaging/dp/B00T9RANUC (http://www.amazon.com/FLIR-C2-Compact-Thermal-Imaging/dp/B00T9RANUC)
Seeker just keeps crashing when running it after installing the winusb drivers. Ah well.
not to promote FLIR at all... but this is basically their clone of Mike's cam. http://www.amazon.com/FLIR-C2-Compact-Thermal-Imaging/dp/B00T9RANUC (http://www.amazon.com/FLIR-C2-Compact-Thermal-Imaging/dp/B00T9RANUC)
Not really a clone once you factor in MSX, touch screen, image storage, and so on. Not worth $700+ in my view since a hackable E4 can be had for a bit more but still an interesting product!
I had plans to develop it further, probably with OLED display, storage etc. but other stuff got in the way, plus it would end up quite expensive for a toy device. I was thinking along the lines of a keychain type thing, but would have wanted to make it robust, with some sort of slide-over lens & screen cover - haven't had the time to look at it for a while, and little prospect any time soon.not to promote FLIR at all... but this is basically their clone of Mike's cam. http://www.amazon.com/FLIR-C2-Compact-Thermal-Imaging/dp/B00T9RANUC (http://www.amazon.com/FLIR-C2-Compact-Thermal-Imaging/dp/B00T9RANUC)
Not really a clone once you factor in MSX, touch screen, image storage, and so on. Not worth $700+ in my view since a hackable E4 can be had for a bit more but still an interesting product!
I can guarantee you it isn't a stolen idea. Flir had been working on this long before Mike ever dreamed this up. It takes a lot of time to get tooling for molds, circuit designs and etc ready for mass production. This was likely a targeted device for contractors that needed a rugged thermal imager that was a little more compact.
Now Mikes take on this is far more compact, which is totally awesome. I'm convinced it's the smallest thermal camera with built-in screen that has ever been shown off. If he had the time, he could get some friends together to help develop a tiny arm board to process the video (blur) and add an OSD for temp readout. Probably would be a very popular project if the old lepton modules ever come down in price. I bet almost every EE on here would be interested in building one if a kit could be developed. Mike do you see any £ in your future? ;-)
The phone has to be on host mode meaning that it does supply power so it can't be recharged at the same time.My phone for example with replaced Li-on battery with... small 4.1V PSU connected to 12V car starter battery doesn't need to be recharged while phone is running on car battery for weeks if not months >:D
But it shows in inverted form.Not such a big deal while oryginal Seek software is useless, while it completely destroys thermal image around cursor by making this bloody shadow rectangle :palm:
I made a telephoto lens X3. But it shows in inverted form. :palm:
I'm surprised nobody sells a short micro usb adaptor that is there to simply change the direction of the port orientation. I mean, you'd sell plenty of these. Seek thermal and the next Flir One will need them. It's going to be nothing more than a female micro usb, a male micro usb, a short run of wire between the two (something long enough to twist) and a plastic shell, or even more common--a rubberized coating. Just need a machined mold, then mount and inject the rubber. Any cable factory is already setup to do this is massive runs. Sell them for $5 a piece. Seek and Flir would buy them by the thousands. Walk away rich.
I'm surprised nobody sells a short micro usb adaptor that is there to simply change the direction of the port orientation. I mean, you'd sell plenty of these. Seek thermal and the next Flir One will need them. It's going to be nothing more than a female micro usb, a male micro usb, a short run of wire between the two (something long enough to twist) and a plastic shell, or even more common--a rubberized coating. Just need a machined mold, then mount and inject the rubber. Any cable factory is already setup to do this is massive runs. Sell them for $5 a piece. Seek and Flir would buy them by the thousands. Walk away rich.
+1000000!
Couldn't believe how hard it was to find a USB micro to USB micro cable. Ended up getting this: http://www.ebay.co.uk/itm/171761135081 (http://www.ebay.co.uk/itm/171761135081)
though it doesn't work! I can charge things though it fine, but when connected to the phone and seek, the phone can't see the seek! I've also noticed the phone charges a lot slower through that cable than when connected directly (with both connections, the phone still reports Charing (AC) - though the battery graph shows a massive difference in the gradient at which it's charging).
The next thing I will try is a standard phone charging cable with this on the other end: http://www.ebay.co.uk/itm/261863844960 (http://www.ebay.co.uk/itm/261863844960)
fingers crossed!
You're right, it doesn't make any sense!! Didn't know I need a PhD to connect some accessories to my phone. Thanks for the info though, much appreciated. I can only see 4 pins on the actually connector, is the 5th the metal surrounding of the connector?I'm surprised nobody sells a short micro usb adaptor that is there to simply change the direction of the port orientation. I mean, you'd sell plenty of these. Seek thermal and the next Flir One will need them. It's going to be nothing more than a female micro usb, a male micro usb, a short run of wire between the two (something long enough to twist) and a plastic shell, or even more common--a rubberized coating. Just need a machined mold, then mount and inject the rubber. Any cable factory is already setup to do this is massive runs. Sell them for $5 a piece. Seek and Flir would buy them by the thousands. Walk away rich.
+1000000!
Couldn't believe how hard it was to find a USB micro to USB micro cable. Ended up getting this: http://www.ebay.co.uk/itm/171761135081 (http://www.ebay.co.uk/itm/171761135081)
though it doesn't work! I can charge things though it fine, but when connected to the phone and seek, the phone can't see the seek! I've also noticed the phone charges a lot slower through that cable than when connected directly (with both connections, the phone still reports Charing (AC) - though the battery graph shows a massive difference in the gradient at which it's charging).
The next thing I will try is a standard phone charging cable with this on the other end: http://www.ebay.co.uk/itm/261863844960 (http://www.ebay.co.uk/itm/261863844960)
fingers crossed!
Unfortunately, what you purchased was a charge only adapter. It's cheaper and quicker to sell usb cables without the wires connected for data lines because most people buying an adapter are doing so to charge phones and usb devices. The adapter you now humbly own only changes the plug type to a microusb. It's deceitful based on the listing saying it is a full spec usb 2.0 plug, but nowhere do they clearly mention it as an otg compatible cable.
OTG cables and the whole spec is utterly stupid. You can thank the cell phone industry. Basically there are 5 pins in the plug of a microusb cable. Pin 4 is unconnected and by grounding pin 5 to 4, it becomes an OTG cable. It tells the device you are plugging into to act as the host. Since cell phones can be a host for devices or be a mass storage device, grounding the 4th pin tells the phone to host a connection, while leaving it disconnected tells it to act as a mass storage device for a computer. This is the only time I've seen it used in this manner. Most phones should have the ability to enable mass storage I believe the SEEK needs the 4th pin grounded in order to confirm it isn't acting as a host, even if a host attempts a handshake.
Like I said, makes no sense.
You can get a short micro-B-to-micro-B cable with one end configured for OTG here http://hakshop.myshopify.com/collections/accessory/products/micro-to-micro-otg?variant=211796287 (http://hakshop.myshopify.com/collections/accessory/products/micro-to-micro-otg?variant=211796287)The only issue is that I'm in the UK - thanks for the links though! :)
I got one and use it to connect an x-protolab http://www.gabotronics.com/development-boards/xmega-xprotolab.htm (http://www.gabotronics.com/development-boards/xmega-xprotolab.htm) to a google nexus tablet. Previously, I needed an Micro-B-OTG-to-female-A adapter plugged into a male-A-to-micro-B cable.
Guys, this forum thread is probably longer than the Bible, and goes off on so many tangents, so please don't hold it against me that I'm not going to read it all. :)I haven't compared the flir to the seek. I don't have an iDevice so the flir was out of the question. Mine hasn't had any thermal gradient issues that people have talked about on here (maybe the newer .apk fixed that?). The one thing I was wary of was the clarity of the image at short distances, so I picked up one of these as well: www.ebay.com/itm/201341969772 (http://www.ebay.com/itm/201341969772)
So I have basically two questions...
The first, how does the Seek Thermal compare to the FLIR One, and is it suitable as an actual thermal imaging tool in electronics work - as opposed to a "widget", which IMO the FLIR One is?
From reading the specs, and the forums on the FLIR One, it would seem that as expected from a market leader, FLIR has gone FAR, FAR out of its way to make sure the FLIR One never becomes anything close to a potential competitor for their >$1000 units, or even their $700 Lepton-based handheld. Artificial noise (come on, really?!), limited thermal range (to make sure it's a toy not a tool), and all the other crap.
The Seek on the other hand has a wide temp range, and a much greater resolution in the thermal sensor itself.
However, some people here are surprisingly (shockingly) appreciative of FLIR and rapping on Seek, so what exactly is up? Does the comment about the badly designed optics casing apply to both models, or only the long-distance version?
Another question is that back at the beginning of the thread, people were talking about a price of $199. Well the Seek Thermal retails for $249, BOTH the Android and iOS models! So what is it? Did they RAISE the price (that would be the first time I saw something like this happen), or is this a second version that's more expensive?
The $199 was an introductory price when they launched.^ I haven't used it yet(my camera's still facing the wrong way!), but there is a function where you can mix and match, so part normal, and part thermal (depending on how far you drag the divider across). Not the same as MSX though good enough to be able to see what you're pointing it at, e.g.:https://drive.google.com/file/d/0B6p-RdH-0NNIWl8xUFVaSnBRRnM/view?usp=sharing
As for the rest I'm happy with my Seek, but others prefer the FLIR One because of the MSX tech (mixing visual and thermal camera) and they have another one lined up but have not heard any details on that one yet.
i want to make one of these:
http://www.smragan.com/2015/02/06/seek-thermal-imager-htc-dna-hack/ (http://www.smragan.com/2015/02/06/seek-thermal-imager-htc-dna-hack/)
Guys, this forum thread is probably longer than the Bible, and goes off on so many tangents, so please don't hold it against me that I'm not going to read it all. :)
So I have basically two questions...
The first, how does the Seek Thermal compare to the FLIR One, and is it suitable as an actual thermal imaging tool in electronics work - as opposed to a "widget", which IMO the FLIR One is?
From reading the specs, and the forums on the FLIR One, it would seem that as expected from a market leader, FLIR has gone FAR, FAR out of its way to make sure the FLIR One never becomes anything close to a potential competitor for their >$1000 units, or even their $700 Lepton-based handheld. Artificial noise (come on, really?!), limited thermal range (to make sure it's a toy not a tool), and all the other crap.
The Seek on the other hand has a wide temp range, and a much greater resolution in the thermal sensor itself.
However, some people here are surprisingly (shockingly) appreciative of FLIR and rapping on Seek, so what exactly is up? Does the comment about the badly designed optics casing apply to both models, or only the long-distance version?
Another question is that back at the beginning of the thread, people were talking about a price of $199. Well the Seek Thermal retails for $249, BOTH the Android and iOS models! So what is it? Did they RAISE the price (that would be the first time I saw something like this happen), or is this a second version that's more expensive?
It is rather convenient though and runs well (as well as it can) with my $49.99US Digiland 7" tablet.
...ken...
Can anyone comment on the best embedded driver for the Seek right now?
I have been playing with libseekthermal https://github.com/ethz-asl/libseekthermal (https://github.com/ethz-asl/libseekthermal) which was very easy to get working but does very basic dark image subtraction on the image. It will need quite a bit of work to get to usable images (dead pixel removal, hotspot filtering etc). It looks like most of the efforts from folks here are windows applications?
I have read this entire thread, which rivals some novels in length! Seems like there are still quite a few unknowns with regards to calibration and cleaning up the images. Has there been any word from Seek as to when their SDK is going to come out? Maybe the next edition of the Lepton will be a better prospect for embedded projects in the near term?
James
Excellent! I just pulled that down and built it. Definitely looks better than the libseekthermal I was using!
After reading this thread I am unsure if the Seek Imager will really be suitable for what I want to do. I am trying to do aerial thermal imaging from a moving drone. I don't need very high resolution, but the frame averaging and noise from the Seek is going to make things challenging. Even though the Lepton is lower res it may be better. Any thoughts?
@arsenix,
For moving platform image capture it is recommended to use a thermal camera with >25fps.
60fps is excellent in the application. The challenge is in finding such a camera that is small and light enough for the application, such as a FLIR Tau. The FLIR Lepton 80x60 resolution camera is both too low resolution and frame rate for most aerial applications. Decent optics are also needed and the Lepton is not suited to such a task. IMHO neither is the higher resolution SEEK camera. The new Lepton 160x120 resolution core may offer better performance but you really need 320x240 resolution with a decent lens attached.
Thermal cameras with decent resolution and frame rates higher than 9fps are controlled technology and this makes their procurement outside of the USA difficult, especially if you intend to fit it on an aerial vehicle ! The US DoD do not like the idea of high performance thermal camera equipped drones outside of their control ;)
You can use a 9fps camera on a drone and a search of You Tube looking for 'thermal camera drone' should get some hits. Take a look at the images and see whether the limited frame rate and resultant image blur is acceptable in your application. If so, you have a lot more choice when it comes to finding small, light cameras for the application. They will not be cheap though.
I would also recommend a quality camera stabilsation gimble in such an application. Quad and Octocopters are the most stable platform for using a low frame rate camera. A fixed wing vehicle or conventional helicopter are not great platforms as they either move too quickly across the target or they are too unstable in flight.
Aurora
My guess is that it's the same sensor and the same thermal resolution and they only improved the video camera.Exact my thoughts if they don't publish the exact 111x222 spects of the microbolomether a 4x can mean anything, and its possible that they just improved the normal camera it was VGA so now it would be 2560x1920 so just some sheep 4 MPixel sensor.
I only recently got my Seek ThermalAre you happy with it?
Are you happy with it?
This now appears to be available on amazon.co.uk. Maybe they are now shipping to international destinations?Who cares - looks like new Flir One will kill it, or at the very least force them to cut the price
http://www.amazon.co.uk/Seek-Thermal-Connector-Protective-Waterproof/dp/B00Y2QO79I/ref=sr_1_1?ie=UTF8&qid=1435759649&sr=8-1&keywords=seek+thermal (http://www.amazon.co.uk/Seek-Thermal-Connector-Protective-Waterproof/dp/B00Y2QO79I/ref=sr_1_1?ie=UTF8&qid=1435759649&sr=8-1&keywords=seek+thermal)
Still at £259 that a fair bit more expensive than the Flir One V2 (which is £165 +vat = £198)
http://uk.rs-online.com/web/p/thermal-imaging-cameras/8837043/ (http://uk.rs-online.com/web/p/thermal-imaging-cameras/8837043/)
... looks like new Flir One will kill it ...Let them "kill" themself and... get better lower price for USB Seek dongle :-DD
... looks like new Flir One will kill it ...Let them "kill" themself and... get better lower price for USB Seek dongle :-DD
Anyway, Flir One can't kill my custom Seek USB software I'd like to use to controll my cheap reflow oven and pick & place machine :popcorn:
BTW: 120*Cmax in Flir One that is a shame :palm:
picture of the SEEK thermal Pixels.It looks like those dead pixels (hexagon "patent" pattern) are not blanked in software, by as expected they did it hardware :-+
You build yourself a pick and place machine?Rather machine which could help build prototypes ;)
picture of the SEEK thermal Pixels.It looks like those dead pixels (hexagon "patent" pattern) are not blanked in software, by as expected they did it hardware :-+
Anyway, we can see there another "dead" pixel on the bottom or above, sonde this at the bottom missing any structures, but this above does look as damaged with only thiz zigzag traces, whatever it is? :-DD
There shouldn't be two blanked pixels side by side ;)
whts the purpose of thise dead pixels?
2. Pixels are "destoyed" in software not in hardware (possibly due to Flir patents).Maybe, we didn't see all Seek pixels, but two or more dead pixels close each other side by side isn't good news.
More Seek images from: https://twitter.com/BenKrasnow/media (https://twitter.com/BenKrasnow/media)Do not believe in everything posted in internet, since everybody can post now-remember Seek competes with Flir and cyber wars are part of it. How could you verify that those images shows oryginal Seek sensor, especially when they differ? You have no chance, unless you take this chip and do it yourself with friend at university lab ;)
Could you make a few images? :popcorn:This is ongoing project and I'll create thread in general technical stuff soon.
@Trax,
You would have to ask the FLIR lawyers. FLIR took SEEK Thermal to court over patent infringement. This pixel deletion requirement was the result. You should be aware that the two men behind SEEK worked for Indigo Thermal who were bought by FLIR.. There is a lot of complex Patent stuff happening in the background as a result.
Aurora
I got an email from Seek with a request for participation in Seekware SDK pre-release. Maybe innovative 3rd party apps will help Seek against Goliath.
The sign up page has the Windows SDK scheduled for release on 07/15/2015. Better late than never. I signed up.
I'd be interested in seeing some unprocessed pics from the Seek thermal imager. Preferably uploaded either as an attachment here or to the image hosting site Imgur, or to any place that does not re-encode them, but rather hosts the image files exactly as uploaded. Thermal imager pictures often have 2 pictures in the same file, one is a standard JPEG (for giving you a visual impression of what was captured by the imager) and embedded in that file is the raw (or losslessly compressed) actual thermal data recorded by the pixels of the thermal imaging focal-plane-array (usually with a bit depth of more than 8 bits per pixel, which requires 2 bytes per pixel to store the data). That is why I would be interested in seeing a 100% unaltered copy of some of the images it takes. In the case of the Seek thermal imager, these unprocessed images will have a resolution of 206x156 and will have a file size of no less than 63kb (the file size needed to store the 2byte-per-pixel uncompressed image data with a resolution of 206x156, assuming that it is not losslessly compressed raw data), so I can tell if it's processed or not, by looking at the image resolution and file size.
From there I should be able to write my own program that will extract the raw thermal data. This will give me the true ability to compare its image quality to other similar thermal imager camera's (like the Flir One, with a 160x120 thermal focal-plane-array). Note, that to compare quality I must use the raw thermal image, not the JPEG image, as the JPEG image combines the thermal image with a higher resolution visible light image (in the case of the Flir One, the device has it's own camera, and with the Seek Thermal imager, it depends on the phone's camera). I'm looking forward to get a thermal imager for my cellphone, and I need to compare the actual raw thermal images from the Seek Thermal imager and the Flir One imager, in order to determine which to buy.
So anybody who goes to this forum would be helping me out a great deal, by posting an unprocessed original image taken by the Seek Thermal imager, and also the same for the new Flir One (assuming you have access to both, otherwise I'll have to wait for more than one person, each with one of these imagers, to post their images here). I have noticed that there are absolutely no original images from the Seek Thermal camera, nor from the new 160x120 Flir One, available on the net anywhere, and I've already searched Google Images, and all I can find are promotional images on the websites for these devices. These promotional images all have been processed, as they all lack the embedded raw thermal pixel data.
And one more request. In case I do get the Seek Thermal imager, I would like the desktop PC application made by "sgstair" called Seeker, that I see a lot of use from in this thread. Can somebody please compile it for me, and post the EXE file here as an attachment (or post to a file hosting site like Mediafire and link to the download here)? The guy named "sgstair" only offers the source code, not a compiled EXE file at his Github site. I don't have the version of Visual Studio needed to compile it, so I hope somebody else who has compiled it can make available the EXE file for me to download.
I do not believe the Seek images are radiometric JPEGs - instead I think it just saves 2 images, one visual, one thermal. However I imagine with the Seek SDK you should be able to make an app that saves radiometric JPEGs or other metadata.
The best thermal image you can get is from this app:
https://www.eevblog.com/forum/chat/seekthermal-how-to-correct-the-image-received-from-the-sensor/msg696895/?topicseen#msg696895 (https://www.eevblog.com/forum/chat/seekthermal-how-to-correct-the-image-received-from-the-sensor/msg696895/?topicseen#msg696895)
I posted the link to zip only a few posts back but he seems to be ignoring it:The best thermal image you can get is from this app:
https://www.eevblog.com/forum/chat/seekthermal-how-to-correct-the-image-received-from-the-sensor/msg696895/?topicseen#msg696895 (https://www.eevblog.com/forum/chat/seekthermal-how-to-correct-the-image-received-from-the-sensor/msg696895/?topicseen#msg696895)
I do not believe the Seek images are radiometric JPEGs - instead I think it just saves 2 images, one visual, one thermal. However I imagine with the Seek SDK you should be able to make an app that saves radiometric JPEGs or other metadata.
If they take a pair of images, can you please post up some of the thermal part of the pair? I'd be interested in looking at these.
I do not believe the Seek images are radiometric JPEGs - instead I think it just saves 2 images, one visual, one thermal. However I imagine with the Seek SDK you should be able to make an app that saves radiometric JPEGs or other metadata.
If they take a pair of images, can you please post up some of the thermal part of the pair? I'd be interested in looking at these.
Personally I don't have a seek thermal, but the thermal images are just the 832x624 images you see everywhere. The app outputs just jpegs, and there is no image blending done between visual / thermal. The only reason the visual image is captured is for future review.
Look at this for example: https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg673081/#msg673081 (https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/msg673081/#msg673081)
The 832x624 images you see there (and in most places online) are straight from the seek. You can use google to just search for images with that resolution: http://puu.sh/j0O1c/e80ebfcf1e.jpg (http://puu.sh/j0O1c/e80ebfcf1e.jpg)
You can get raw data from Seek with sgstair desktop application: https://github.com/sgstair/winusbdotnet (https://github.com/sgstair/winusbdotnet)
And here is info about raw frames that you will get from Seek module:
https://github.com/lod/seek-thermal-documentation/wiki/Frame (https://github.com/lod/seek-thermal-documentation/wiki/Frame)
Are you telling me that the Seek app does not save any radiometric data at all whatsoever? All it saves is a JPEG image that is identical to what you see in the preview on-screen image as you are pointing it around at things? Why not? What's the purpose of a thermal imager other than to save RAW data? I wonder if the guys that made this kind of missed the point of thermal imagers? I mean it can't even be explained away by saying that it was the easier option to write JPEGs, because it's not. It's much easier to write a raw byte array to a file than to run a compression algorithm that requires external dependencies like libjpeg.dll. Are you SURE that there's no setting in the app to configure it to use write out raw radiometric data to a TIFF or PNG file?Yes. There is no option to get radiometric data from android app. And no option for TIFF or PNG.
And by the way, I'm not gonna compile that program. I don't have the right version of Visual Studio to do so (I have VS 2010, but it requires a newer version). And my previous request that somebody else compile it for me and post up the EXE file has so far gone unanswered.I've build it for you (but this program is only usefull as a starting point for writing your own application for Seek):
I ended up downloading this http://dumb.ro/files/ThermalView.zip (http://dumb.ro/files/ThermalView.zip) instead. It is a fully compiled EXE file, and runs perfectly (now I just need to buy the Seek thermal camera). I'm not sure if it's better quality than the program you mentioned, but until somebody does the aforementioned favor that I asked for, and compiles a copy of the program that you mentioned, and posts the EXE file here for me to download, I have no way to compare them.Good choice. That is the best user made application for Seek that I know of.
How do those programs work? Do they just send the same commands the app does (as a result of having reverse engineered the official app and protocol), and thus allow the PC to truly communicate with the Seek thermal imager? Or do they involve a custom-made 3-connector cable, that allows the camera, smart phone, and PC, to all connect together, and then just have the PC siphon off the image stream as the thermal imager tries to send the image stream to the phone (but let the phone send all the initialization commands and other control commands to the thermal imager so that it operates correctly).
How do those programs work? Do they just send the same commands the app does (as a result of having reverse engineered the official app and protocol), and thus allow the PC to truly communicate with the Seek thermal imager? Or do they involve a custom-made 3-connector cable, that allows the camera, smart phone, and PC, to all connect together, and then just have the PC siphon off the image stream as the thermal imager tries to send the image stream to the phone (but let the phone send all the initialization commands and other control commands to the thermal imager so that it operates correctly).
We sniffed the USB traffic.
Personally I got stuck after sniffing the initialization sequence, because my sniffing setup systematically crashed immediately after, so I ended up using the frame request and the disconnect request as described in sgstair's code.
One thing I noticed is that my initialization routine is slightly different from what sgstair found, which I believe is because I used a newer version of the android app. Most of the initialization sequence is just reading configuration data from the device, which we don't know what it means or how to use it and can probably be safely skipped, but all implementations so far are still reading it anyway and do nothing with it.
There's a lot we don't know about the protocol - maybe Seek will reveal some of that information in the SDK documentation or if the SDK will be robust enough, completely remove the need to directly talk to the device.
Edit:
Attached are 3 images, in both PNG and RAW format.
What I'm asking, is will I need my phone to use this PC software? Or will I be able to use a Micro-USB to USB converter cable, and attach the Seek thermal imager directly to the PC, and allow the Seek imager to act as a kind of "thermal webcam" with my PC?
What I'm asking, is will I need my phone to use this PC software? Or will I be able to use a Micro-USB to USB converter cable, and attach the Seek thermal imager directly to the PC, and allow the Seek imager to act as a kind of "thermal webcam" with my PC?
You won't need your phone.
I got an email from Seek with a request for participation in Seekware SDK pre-release. Maybe innovative 3rd party apps will help Seek against Goliath.
The sign up page has the Windows SDK scheduled for release on 07/15/2015. Better late than never. I signed up.
Thanks for the heads up, that made me check my personal e-mail and sure enough there it was :)
Neat, looking forward to your reports.
I got an email from Seek with a request for participation in Seekware SDK pre-release. Maybe innovative 3rd party apps will help Seek against Goliath.
The sign up page has the Windows SDK scheduled for release on 07/15/2015. Better late than never. I signed up.
Thanks for the heads up, that made me check my personal e-mail and sure enough there it was :)
I guess I missed the email on Friday but I did get my link to download the SDK and they are also providing a free OTG PC cable for just supplying your sneaker mail address.
Haven't look at it in detail yet and I'm not sure if the license I accepted prevents me from saying more. I'll check, but not sure I'll have time today to play with it.
(http://david.tulloh.id.au/wp-uploads/2015/08/floor_pre.th.jpg) Floor - Before correction (http://"http://david.tulloh.id.au/wp-uploads/2015/08/floor_pre.png") | (http://david.tulloh.id.au/wp-uploads/2015/08/floor_post.th.jpg) Floor - After correction (http://"http://david.tulloh.id.au/wp-uploads/2015/08/floor_post.png") |
(http://david.tulloh.id.au/wp-uploads/2015/08/face_pre.th.jpg) Face - Before correction (http://"http://david.tulloh.id.au/wp-uploads/2015/08/face_pre.png") | (http://david.tulloh.id.au/wp-uploads/2015/08/face_post.th.jpg) Face - After correction (http://"http://david.tulloh.id.au/wp-uploads/2015/08/face_post.png") |
I'm not sure you should compare it to other phones with the same SoC.
P.S:
Another list of phones with USB Host:
http://goo.gl/47fjHo (http://goo.gl/47fjHo)
I have read through 26 pages of this thread and I will keep reading but I just wanted to check if anyone might have tried to do the same as I want to do with this sensor and get a analoge output.
I have been ... on-topic but the analoge video out part might be a little bit on topic :)
Edit: is raspberry pi and using the audio port for analoge video out an option or isn't it possible to use the PI to read video from the sensor?
This is pretty close to what you want - Lepton based composite output camera based on Lepton sensor.
http://diydrones.com/profiles/blogs/dronethermal-mav-cameras-almost-ready (http://diydrones.com/profiles/blogs/dronethermal-mav-cameras-almost-ready)
Interestingly Seek have started referring to their cameras as the Compact and Compact XR.
Is this a harmless name change or does it suggest a new product (ie. non-compact) is coming soon?
I've added a video of typical use and how they managed to find cows. You don't think the Seek thermal would be good enough for this?
I think that, dog could be more successfull in looking for cows and... more friendly than crappy mobile phone app :-DDI've added a video of typical use and how they managed to find cows. You don't think the Seek thermal would be good enough for this?This guy demonstrates looking at a horse, this should give you a rough idea:
hands up here, i am a fan of therm-App as well :-+ and the lenses are best, germanium made . evilish cool >:D
Frenky, i saw you posted pics of your seek thermal cam + 50mm ZnSe and even 100mm ZnSe. can you tell us where did u buy those lenses? how much did they cost? i am sure they are beyond the use and sale of CO2 intended use too. i didnt know they sell ZnSe 100mm!
and how did the 50mm performs better than 100mm? or am i missing something here? idk :-//
It seems it has a better resolution than the Lepton/FLIR One.Of course, FLIR One without its crappy visual camera overlay can only produce... thermal blobs :-DD
Of course, FLIR One without its crappy visual camera overlay can only produce... thermal blobs :-DD
It seems it has a better resolution than the Lepton/FLIR One.Of course, FLIR One without its crappy visual camera overlay can only produce... thermal blobs :-DD
Anyway, I suggest you use OpenCV with GPU accelerated critical parts and with custom lens and depending on your application (how fast thermal image changes) you could think of circular motion to get rid of those "pattent" blacked pixels which create this hexagon pattern and get even better resolution not affected by those dead pixels ;)
I've made custom Seek library but no plans for the moment to release this, since I want have cheap thermal vision technology advantage in one of my research projects, but when decent amount of money will be made and maybe oryginal Seek Thermal API available, maybe I will release some code, however it is Unix (Linux) based-I do not support Window$ , because of I forgot about this OS many years ago :popcorn:
Yippee. Seek sent me a link to download their sdk. Now I need a project.
They were not made with seek, were they?
Tracy Benson 4 hours agoStay tuned....
Hi Mike, we are now available in Europe on Amazon across major countries! We'd love to have to tear down our next newest device about to break news soon. Shoot me an email at <redacted>@thermal.com and I'll reach back out to you directly.
Just had this message on my Seek teardown vid :QuoteTracy Benson 4 hours agoStay tuned....
Hi Mike, we are now available in Europe on Amazon across major countries! We'd love to have to tear down our next newest device about to break news soon. Shoot me an email at <redacted>@thermal.com and I'll reach back out to you directly.
Yippee. Seek sent me a link to download their sdk. Now I need a project.
Good news! Do you think this could allow developers to get the maximum out of the seek thermal?
Thank you for your interest in our Seekware SDK. We are piloting a limited, pre-release cycle and need some information from you about your project and preferred SDK Platform.
At this time we are accepting U.S. participation only. We will be expanding, so if you are outside the U.S. please register and stay tuned.
Perhaps they will release bigger thermal module in the class of Therm-App or i3-thermalExpert? (Because they renamed existing one to "compact").My guess would be either a standalone camera or maybe a drone cam.
That would really be good for us hobby users. Ofcourse if the price was right.
That brings up a interesting point - FLIR recently announced the FLIR Vue Pro - basically a FLIR Vue but with onboard digital video storage to MicroSD, 14bit image storage to MicroSD and bluetooth for configuration and operation (compared to the FLIR Vue which only has analog video out). It also has a GoPro-compatible mount, essentially making it a "Thermal GoPro".Perhaps they will release bigger thermal module in the class of Therm-App or i3-thermalExpert? (Because they renamed existing one to "compact").My guess would be either a standalone camera or maybe a drone cam.
That would really be good for us hobby users. Ofcourse if the price was right.
You can buy the 640x512 version for $3000, which is orders of magnitude cheaper than other 640x512 thermal imagers.
conclusion: SAVE UR MONEY TO GET NEW "EVEN BETTER" SEEK CAMERA, MAYBE IN RESOLUTION OF THERM-APP, AND EVEN BETTER LENS THAN XR, CHEAPER THAN THERM-APP. DONT BUY A NEW FLIR PRODUCT, JUST WAIT FOR SEEK.
The technical specs for the new Seek Reveal are on the pre-order page, unfortunately is says the thermal sensor is 206x156, so it's most probably the same sensor from the Compact and XR. They got my hopes up when I saw the 240x320 "display resolution" they posted front and center. So lame :(
Oh okay then..., my guess is now that Seek build the old Sensor/Optics in a bigger case, plugged a crippled down android/linux based device with low res display and sell it as a new inuvation :D
The technical specs for the new Seek Reveal are on the pre-order page, unfortunately is says the thermal sensor is 206x156, so it's most probably the same sensor from the Compact and XR. They got my hopes up when I saw the 240x320 "display resolution" they posted front and center. So lame :(Oh okay then..., my guess is now that Seek build the old Sensor/Optics in a bigger case, plugged a crippled down android/linux based device with low res display and sell it as a new inuvation :D
My guess was also right? :wtf:
So for the price of the Flir TG165 that has a display resolution of 176x220 with a 80x60 sensor with a range of -13F to 716F (but wait that's a bit deceptive since it's the IR range, the actual sensor only goes up to 260F) and 8 hours runtime.
That compared to a display resolution of 240x320 with a 206x156 sensor with a range of -40F to 626F on the sensor and 11 hours runtime.
Yeah, it's BS man, what are they thinking?
try therm-app, bro. it comes with 19mm lens that can detect human from 500yard away.$939, with 45% more pixels than 320x240
I wouldn't hold my breath. Every single photo and screenshot that they've released so far has been of a android version.try therm-app, bro. it comes with 19mm lens that can detect human from 500yard away.$939, with 45% more pixels than 320x240
Thanks for the suggestion. I actually have seriously considered getting the Therm-App for a few months now, either that or the E4. The only issue I have with the Therm-App is that I don't own an Android phone, only an iPhone. So when I factor in the cost of the Therm-app plus the cost of buying a phone to run it, the price is more like $1200-$1400. I'm now banking on the possibility that the i3 ThermalExpert will be priced below the Therm-App, hopefully $800ish, because on they're website they claim to be releasing an iOS compatible version. Fingers crossed :-\
Why not just use this image :PNah, use this: http://gigapan.com/gigapans/43079cdc95c18872b8b8a0d43847db68 (http://gigapan.com/gigapans/43079cdc95c18872b8b8a0d43847db68)
Yeah, it's definitely a TG165 / C2 competitor... however I wonder why they didn't put a visible light camera & laser in there instead of the torch... for it's advertised use as a home inspection tool, I would've thought a laser and visible camera would be much more useful.
...
@mikeselectricstuff - are you getting one in to teardown?
Yet those facilities allow thermal cameras? Or is it just cameraphones that are disallowed? I would've thought any secure facility would just ban devices with image storage outright.Yeah, it's definitely a TG165 / C2 competitor... however I wonder why they didn't put a visible light camera & laser in there instead of the torch... for it's advertised use as a home inspection tool, I would've thought a laser and visible camera would be much more useful.
...
@mikeselectricstuff - are you getting one in to teardown?
Seek is reading my mind very well. My E4 is for the lab, it is very good but not built to be beside me all the time. So came the Seek compact, which I had with me all the time, and had used twice on site so far. BUT seek compact needs a phone to work, and phone with camera are not allowed in many facilities.
Yes, I am also waiting for mike's words before taking out my credit card.
Yet those facilities allow thermal cameras? Or is it just cameraphones that are disallowed? I would've thought any secure facility would just ban devices with image storage outright.Yeah, it's definitely a TG165 / C2 competitor... however I wonder why they didn't put a visible light camera & laser in there instead of the torch... for it's advertised use as a home inspection tool, I would've thought a laser and visible camera would be much more useful.
...
@mikeselectricstuff - are you getting one in to teardown?
Seek is reading my mind very well. My E4 is for the lab, it is very good but not built to be beside me all the time. So came the Seek compact, which I had with me all the time, and had used twice on site so far. BUT seek compact needs a phone to work, and phone with camera are not allowed in many facilities.
Yes, I am also waiting for mike's words before taking out my credit card.
@mikeselectricstuff - are you getting one in to teardown?I got a message a week or so ago offering an as-yet unannounced new product from Seek to do a teardown. Sent them my details but not heard anything back yet - fingers crosssed.
Here you can see the real image quality of the Seek Reveal... wooow, they've managed to reduced the noise(http://puu.sh/kvjek/2c543b01d5.jpg)
I find it really disturbing that Seek is using fake images to showcase their products.
Here you can see the real image quality of the Seek Reveal... wooow, they've managed to reduced the noiseOn the small screen, the noise is not visible. They do not show the saved image. Because it will be bad.
They love to use this two (fake) images:I find it really disturbing that Seek is using fake images to showcase their products.
May be it is time to create another thread on debunking their hi res BS images. What they do is clearly deceptive.
You would need 100,000 $ thermal camera for capturing such details...I wouldn't say that, I'm pretty sure any high quality 640x480 camera could capture that for only $20k or so.
I think the sale and marketing run way ahead of production nowsaday. To reduce inventory, warehouse, etc , many are selling and taking in payment even before the first piece is even rolled out of the production floor. Needless to say, they have no actual camera onhand when they are preparing the sale material.You would need 100,000 $ thermal camera for capturing such details...I wouldn't say that, I'm pretty sure any high quality 640x480 camera could capture that for only $20k or so.
However I have a problem with this scene too (50 seconds)
https://youtu.be/S-KhPE5ca6Y?t=50s
If you look carefully, you can see the "thermal image" is actually just blobs of colour motion tracked to the guy's face. Especially look at the cold spot on the nose (stays the same shape) and the outline of his face (the tracking seems to lag behind his motion just slightly). You would've thought that they could've at the very least use a actual thermal camera...
Sorry but i do not buy that. Engineering and QA would have plenty of images to provide to Marketing.Agreed, their marketing department is making a choice to use simulated images. Though I'm surprised they're not obligated to post a small disclaimer to say that they are.
The sensor has been upgraded to a larger 320 x 240-pixel resolution with a max range of 500 feet.
:-DD :-DD :-DD
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=174529;image)
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=174531;image)
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=174462;image)Is the pseudoholographic display also "simulated"...? :o
The laundry sink one in the last series of images seems to be absolute BS. It can be seen in the normal image the sections of the pipe are made of same white plastic. But in the thermal image the pipe section that goes into the wall is not heated at all and is at ambient temperature. And the thermal gradient is abrupt on that connection.
In the other image you can see shadows of the cabinet handles on the cabinets doors, and a reflection of the carpet on the wall in front of it.
holly crack! did you guys ever noticed that this thread is the hottest in this forum? 2100 replies and 222.000 views.
i hope Seek reads Fraser's comment and reconsider their responses to people, especially the pro ones, of this thread, like Fraser, Mike, and some others
To me the selling point for Seek is the highest temperature range.To be fair the FLIR One does display an image down to -40C, it's just that it's not calibrated at that range and therefore accuracy is pretty bad. That said, the Seek's accuracy has never been very good...
Flir range: -20C to 120C
20 degrees Kelvin over boiling water and 20 below freezing water is just a bit limiting as a thermal tool. Specially when in 2013 winter we reached -30C in Chicago
Seek range of -40C to 330C makes it a better thermal tool in my opinion, regardless of any resolution or lack of MSX.
... That said, the Seek's accuracy has never been very good...
Seek Claim +/- 5 degrees C. I'll try to find a source for this.... That said, the Seek's accuracy has never been very good...
Source?
The expected accuracy is usually within +/- 5 degrees
The camera can detect as small as 0.1 degree differences, but the app can only report numerical readings in whole degree increments.
The lenses are normally made from GASIR. They are available as stand alone lenses. The lens has to match the needs of the microbolometer in terms of correct illumination and back focus. You are unlikely to find an off the shelf lens that is an identical match to the OEM figment so some fettling would be needed to provide the correct back focus distance.I'm pretty sure GASIR is just a trade name. Ophir Optics also make similar lenses marketed as "SupIR".
Umicore comes to mind as a source of GASIR lenses
http://eom.umicore.com/en/infrared-optics/about-us/ (http://eom.umicore.com/en/infrared-optics/about-us/)
More comment on GASIR lenses here:
http://www.photonics.com/Article.aspx?AID=24318 (http://www.photonics.com/Article.aspx?AID=24318)
Fraser
kelvin(x) = -18.763 + 0.0378683*x Kelvin
The Radiance formula you find in Planck's Law
http://en.wikipedia.org/wiki/Planck%27s_law (http://en.wikipedia.org/wiki/Planck%27s_law)
e^(h*c/(k*L*T)-1 = (2*h*c^2/L^5)/I
Planck’s Constant h = 6.626068x10-34 joule sec
Boltzman’s Constant k =1.38066x10-23 joule deg-1
Speed of light in vacuum c =2.997925x10+8 m/s
T = object temperature in Kelvins
L = wavelength in m
I = radiance in Joules/m^3/sec/steradian
e Euler Number
solve it to Temperature formula
T= B / ln(R/I +1)
with ln => Natural logarithm
by substitute with
R = 2*h*c^2/L^5
B = h*c/(k*L)
as explained above is Radiance "I" linear to Flir A/D Counts "S"
we can write
I = R2*(S+O)
with
S = 16 Bit A/D Counts
R2 = constant factor
O = offset
and with R = R1/R2
T= B / ln(R/I +1)
goes to
T = B / ln(R1/(R2(S+O))+1)
kelvin(x) = -18.763 + 0.0378683*x Kelvin
that the response of "A/D Counts" are linear to Radiance with an offset.one day later and no reaction :-//
If I understand you correctly you have found a formula "kelvin(x) = -18.763 + 0.0378683*x Kelvin" that converts seeks raw pixel data into temperature?No, this is not my idea.
kelvin(x) = -18.763 + 0.0378683*x Kelvin... I thought, that seek users make a linear interpolation between this poor reference points.
(https://github.com/lod/seek-thermal-documentation/wiki/images/raw_k.png)
Someone should hack together a Lytro-style superdepth camera with Seek or Lepton modules. I'm looking at you, mikeselectricstuff...To do that wouldn't you need a camera with a relatively shallow depth of field?
Drifting of 8 random pixels in 1 hour. On some pixels temperature readings go up and on some readings go down.I guess that explains the excessive shutter actuations that we see on the Seek.
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.
Seek is piece of crap - imho.Piece of crap when compared to their advertising images? Yes.
i am with encryptededdy, seek is best of its price range.
if we compare flir one to seek xr, u will find that seek pwns flir one in all aspects. plus it is even cheaper.
Seek is piece of crap - imho.
i am with encryptededdy, seek is best of its price range.
if we compare flir one to seek xr, u will find that seek pwns flir one in all aspects. plus it is even cheaper.
thermApp is the best for value, if u need a better thermal cam. it is the perfect solution. but hey, if u only need a thermal cam for general purpose with low price, seek is the best choice. :popcorn:
The camera can detect as small as 0.1 degree differences, but the app can only report numerical readings in whole degree increments.
(https://i.imgur.com/dT69trt.jpg)Fully scaled
I hope most/all will agree that consumers are very lucky to have the opportunity to buy any sort of half decent thermal imaging camera for around $250.
A final thought..... If a particular camera meets the specific needs and desires of its owner, who gives a damn if it has some 'issues' due to essential cost reductions. Have camera, be happy 😀
Fraser
On another thread that Fraser linked comparing the sensitivity of Seek and Flir 1, it appears that there is a sensitivity issue. As the Seek sensor has a larger span, do you think by having a smaller span presentation just on the temperature-of-interest solve the problem?The reason the minimum span is large is to reduce the appearance of noise. See this post I made from before.
I assume by a wide minimum span of the Seek your referring to the temperature differential pixel to pixel? In other words the ability to detect a sense a 76 degree item in a 75 degree room? I thought I remember reading that the Seek has a 1 degree "Sensitivity" I was calling it and the FlirOne has a .1 degree sensitivity. I don't know all the lingo so if we're talking about the same thing I've learned something new with span. Is the span of the seek controlled via software or is it something hardware limited?
As you know, a thermal imager normally maps the colour at the top of the LUT (eg. White) to the hottest object in the scene, while mapping the colour at the bottom (eg. Black) to the coldest object. However, as the difference between the hottest and coldest decreases, more image noise is visible (as you're stretching a smaller signal difference to fit a large colour span).
The seek has a wide minimal span. This means that the colour mapping will react as you expect down to a certain point (eg. 5 degrees difference). After that, the hottest is no longer mapped to white - it's mapped to slightly brighter grey and cold is mapped to slightly darker grey. This is to hide noise.
We can manually use photoshop to change the span of your dog photo to make sure the full pallet of black -> white is used, thereby simulating what would happen without a minimal span/a narrower minimal span.
(http://puu.sh/jP6iq/140cdbeada.png)
Holy noise - You can clearly see why seek have set a minimal span limit.
So yeah, it's technically a software limit, however the software limit exists because the hardware cannot generate good images at low temperature spans.
I found with the Therm-App (which doesn't have a cal shutter) that when you change the temperature of the target object or the sensor significantly, the noise pattern / drift / nonuniformity changes significantly in amplitude. While the pattern stays the same, the amplitude changes pretty significantly.
snipOff topic: You have one of those Sony lens style cameras...! (I assume). I thought nobody bought them.
But when pointed to different temperature than the one of isothemal plane, each pixel gain is different. So the resulting images are very noisy.Is this noise the same pixel to pixel on each frame?
This is an image I took with the Lepton (raw sensor) where I did a two point calibration to convert each pixel value to an absolute temperature. Much of the "noise" goes away when you do this to compensate for offset and gain variations per pixel.
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=183455;image)
that the response of "A/D Counts" are linear to Radiance with an offset.one day later and no reaction :-//
for better understanding I made a excel sheet
the Flir E4 has a spectral range from 7.5–13 um (the peak 10.6 um) http://support.flir.com/DsDownload/Assets/63901-0101_en_50.pdf (http://support.flir.com/DsDownload/Assets/63901-0101_en_50.pdf)
I wrote a table for the planck law at 10600 nm wave length over the temperature range
There you can see, that the spectral radiance in [W / m^2] (per nm wave length) is not exact linear
(https://www.eevblog.com/forum/testgear/yet-another-cheap-thermal-imager-incoming/?action=dlattach;attach=176885;image)
source: http://www.ces.karlsruhe.de/culm/culm/culm2/th_physik/simulation/planck.xls (http://www.ces.karlsruhe.de/culm/culm/culm2/th_physik/simulation/planck.xls)
Lepton RAW values are certainly not linear to radiance with an offset.
http://en.wikipedia.org/wiki/Planck%27s_law
spectral radiance I of a body per unit wavelength
I = (2*h*c^2/L^5)/(e^(h*c/(k*L*T)-1)
Planck’s Constant h = 6.626068x10-34 joule sec
Boltzman’s Constant k =1.38066x10-23 joule deg-1
Speed of light in vacuum c =2.997925x10+8 m/s
T = object temperature in Kelvins
L = wavelength in m (lampda)
I = radiance in Joules/m^3/sec/steradian
e Euler Number
with substitute
R1 = 2*h*c^2/L^5
B = h*c/(k*L)
it goes to
I = R / (e^(B/T)-1)
solve it to Temperature
T= B / ln(R1/I +1)
with ln => Natural logarithm
In Flir cameras is radiance "I" linear to Flir A/D Counts!
we can write
I = R2*(S+O)
with
S = 14 Bit A/D Counts
R2 = constant factor
O = offset
goes to
T = B / ln(R1/(R2(S+O))+1)
with R=R1/R2:
T = B / ln(R/(S+O))+1) :-+
Temperature (in Kelvin) = B / log(R / (S - O) + F),
where S is the 14-bit digital signal value.
log(x) is the base-e logarithm of the x parameter.
USHORT PvSimpleUISampleDlg::TauToSignal(float C)
{
USHORT s;
float K = C + 273.15f;
s = (USHORT)(m_R /(exp(m_B/K) - m_F) + m_O);
return s;
}
float PvSimpleUISampleDlg::TauToTemp(USHORT sig)
{
float T;
double objSig;
objSig = powToObjSig((double)sig);
T = (float)(m_B / log(m_R /(objSig - m_O) + m_F));
return T;
}
Unfortunately we can't enable radiometry mode on the Lepton (yet).
Can I make use of Lepton's Radiometry Module to make absolute temperature measurements?>:D
Availability of Radiometry commands is restricted to Original Equipment Manufacturer (OEM) customers for Lepton, and requires that an active non-disclosure agreement (NDA) be in place with FLIR.
The OEM quantity threshold is 1,000 units for Lepton.
Anyways... further discussion on this should probably be on a Flir thread :)
One question: Is SeeK dead? :S
Can only extract so much useful data from a tiny shitty sensor. Better to buy old FLIR i3 on EBay and hack large microbolometer to give 320x240. i3 is like DSLR compared to Gameboy camera Seek.Yes it has a 320x240 microbolometer, but I think you can only hack the i3 to 240x240, which is equal to it's screen resolution.
> What do you want to do with it?
Once you got a hammer every problem looks like a nail ;)
No but seriously:
1) I think what I'll be doing first is check my breaker box if something is running hot, may be check other parts of my electrical installation
2) I surly will look for thermal leaks in my house, a.k.a. where to fix some isolation etc.
3) I may possibly want to use it when playing around with my 3d printer since i added a heated enclosure I would like to see the temp distribution around the extruder. I noticed sometimes that the filament gets stuck as apparently its getting to soft for the motor to push it. So at this point some improved thermal barrier will be needed.
4) Looking on PCB's if/where they are running hot, I can imagine that may be quite useful like for finding failed tantal caps, etc...
5) Finding other problems i can solve with a thermal cam.
> For that matter, how long do you expect to keep your smartphone before upgrading to one that does support USB host?
One or two years at least, its not even two years old now.
And I really don't see any reason to switch it, it has a replaceable battery, and still more CPU power and Memory that I need right now.
Also Its a rather expensive tool, and if its smartphoen based its not guaranteed to work forever once the manufacture goes out of busyness (no app updates). Well one option would be to get a cheep compatible phoen for this purpose only install the app make a flash backup and keep it offlien forever :D
I forgot to mention that I did that. That is working ok. I can see that by toggling Use ref frame checkbox.
Sent from my LG-D855 using Tapatalk
void Kernel_PreProcessImage()
{
if (LastPreProcessed_Uint16==null) { return; }
// Display last sensor min/max values.
if (thermal!=null) {
label6.Text = "Cal Hi: " + thermal.FrameID1.MaxValue;
label7.Text = "Cal Lo: " + thermal.FrameID1.MinValue;
}
// if (chk_useMedian.Checked) {
// sub_PreProcessMedian();
//// sub_PreProcessMedian();
//// sub_PreProcessMedian();
// }
...
//the only method that is using chk_cal_useDefPixMap.Checked is this one:
void sub_PreProcessMedian()
{
long val=0; int cnt=0;
//Frame without edges
for (int y = 1; y < 155; y++) {
for (int x = 1; x < 205; x++) {
if (CalDefPixelMap[x,y]) {
if (chk_cal_useDefPixMap.Checked) { continue; }
}
//////////////////////////////////////////////////////////////////////////
/// getOffsetCalibration
//////////////////////////////////////////////////////////////////////////
std::vector<int> ThermalFrame::getOffsetCalibration() const
{
std::vector<int> calibration;
calibration.resize(m_pixels.size());
for (size_t i = 0; i < calibration.size(); ++i)
{
uint16_t val = m_pixels[i];
if (val != 0)
calibration[i] = m_avg_val - val;
else
calibration[i] = 0;
}
return calibration;
}
//////////////////////////////////////////////////////////////////////////
/// applyOffsetCalibration
//////////////////////////////////////////////////////////////////////////
void ThermalFrame::applyOffsetCalibration(const std::vector<int> & calibration)
{
for (size_t i = 0; i < calibration.size(); ++i)
m_pixels[i] += calibration[i];
}
//////////////////////////////////////////////////////////////////////////
/// getGainCalibration
//////////////////////////////////////////////////////////////////////////
std::vector<double> ThermalFrame::getGainCalibration() const
{
std::vector<double> calibration;
calibration.resize(m_pixels.size());
const uint16_t min_val = 0;
for (size_t i = 0; i < calibration.size(); ++i)
{
uint16_t val = m_pixels[i];
if (val != 0 && !is_pattern_pixel(i))
calibration[i] = (double)(m_avg_val - min_val) / (m_pixels[i] - min_val);
else
calibration[i] = 1;
}
return calibration;
}
//////////////////////////////////////////////////////////////////////////
/// applyGainCalibration
//////////////////////////////////////////////////////////////////////////
void ThermalFrame::applyGainCalibration(const std::vector<double> & calibration)
{
for (size_t i = 0; i < calibration.size(); ++i)
m_pixels[i] = static_cast<uint16_t>(m_pixels[i] * calibration[i]);
}
Found this on youtubeAnother review of Seek Thermal Reveal there:
Who will make teardown of this Seek Reveal worth $399 first? >:DIf some one pays me 300$ I'll do that.
how about a crowd founded tear down?Probably, someone already did it?
I am waiting for SEEK to produce a decent core coupled to becent imaging software. Until then it is just a SEEK Mk1 core dressed up, but sill flawed.How did you know this, since you haven't got this thing in your hands?
Seek has shutter behind lens so any dust, "glue" or vapour on lens (behind or front) will show on thermal images. And you can't lock the thermal range.Maybe in original software, but who uses Seek with this useless app, while a few lines of OpenCV code opens new ways to see the dark :popcorn:
I agree with Frenky on this. The SEEK has potential but I still consider its core sub optimal. FLIR are old masters of thermal camera design and image processing. Love them or hate them, they still make decent thermal cameras, even considering the deliberate 'de-tuning' that they apply to limit performance in order to fit the market.
The FLIR One in the stock app only reads out a center 120x90 portion of the sensor. With a custom app you can read out the full 160x120 sensor (which obviously provides higher resolution, and also a wider field of view).I agree with Frenky on this. The SEEK has potential but I still consider its core sub optimal. FLIR are old masters of thermal camera design and image processing. Love them or hate them, they still make decent thermal cameras, even considering the deliberate 'de-tuning' that they apply to limit performance in order to fit the market.
could you please elaborate on that deliberate 'de-tuning' ?
I can also add that FLIR uses a software based noise generator to degrade the performance. This is to ensure that budget cameras in their range do not damage sales of their more expensive offerings.
Fraser
Sorry can't comment on how it is implemented on the F1G2.
Fraser
here is a real live sample (shot after a small warm up time of about 2 minutes):
I saved with the SDK.app simultaneously a upscaled Flir Radiometric JPG and a real Lepton ThermalLinearFlux14BitImage.
Afterwards I rebuild with my old panorama script (see my footer) a real size 160x120 Lepton radiometric jpg (a Flir format).
You can load this sample jpg images in Flir Tools and compare the quality.
First a original image shot with the Flir App.
The App crop >:( the Lepton sensor to about 120x90 Pixel.
Please note the artefacts/patterns!
Flir makes a nice lens distortion correction of the Lepton sensor for best MSX overlaying ;)
(https://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/?action=dlattach;attach=182409;image)
real Lepton sensor 160x120 (no image postprocessing and with noise/grain because the temperature spread is only 4 Kelvin)
(https://www.eevblog.com/forum/testgear/flir-one-thermal-imaging-camera-teardown-and-hacks/?action=dlattach;attach=182411;image)
I asked on the official Facebook page and was told that the cameras have a thermal sensitivity of 0.1 °C but only display whole numbers: https://facebook.com/SeekThermal/posts/1023007861105118
On the other hand, I'm sure that's something a little hacking would solve. :-)
That is odd. On old Seek the ID4 and ID10 are gain compensation. I believe that one is for lower end and other is for higher end of temp ranges.
BTW if anyone wants to play with seek, this is the basic way to get ok images out:
On ID4 frame (gain):
gainCalArr[n]=averageOfID4/FrameID4[n];
On ID1 frame (calibration):
FrameID1[n]=Frame1ID[n]*gainCalArr[n];
offsetCalArr[n] = averageOfID1 - FrameID1[n];
On ID3 frame (real thermal image):
FrameID3[n]=Frame3ID[n]*gainCalArr[n];
FrameID3[n]=Frame3ID[n]+offsetCalArr[n];
And fix patent pixels and dead pixels...
public static int GetMode(int[] arr)
{
int[] arrMode = new int[320];
int topPos = 0;
for (int i = 0; i < 32448; i++)
{
if ((arr[i]>1000)&&(arr[i] / 100 != 0)) arrMode[(arr[i]) / 100]++;
}
topPos = Array.IndexOf(arrMode, arrMode.Max());
return topPos*100;
}
New today from Seek:
http://www.thermal.com/products/revealxr-fastframe?utm_source=marketo&utm_medium=email&utm_campaign=revealxr-available (http://www.thermal.com/products/revealxr-fastframe?utm_source=marketo&utm_medium=email&utm_campaign=revealxr-available)
With a claimed frame rate of > 15fps....
Hey Guys,:-+
providing last version, still not perfect but it goes to a usable direction. :-/O
So as we can see from seeks demo of the faster frame rate, they aren't averaging the frames together and thus leads to less blur. You can't really tell from the video how much noise exists but I'm guessing the noise reduction using frame averaging isn't great as it is. If they decide to release the faster frame rate version in the compact editions, might be interested in picking one up...At least now you can fiddle with the image a little more.The video looks quite promising. And the contrast also looks better so perhaps they did improve sensor a bit?
BTW if anyone wants to play with seek, this is the basic way to get ok images out:
On ID4 frame (gain):
gainCalArr[n]=averageOfID4/FrameID4[n];
On ID1 frame (calibration):
FrameID1[n]=Frame1ID[n]*gainCalArr[n];
offsetCalArr[n] = averageOfID1 - FrameID1[n];
On ID3 frame (real thermal image):
FrameID3[n]=Frame3ID[n]*gainCalArr[n];
FrameID3[n]=Frame3ID[n]+offsetCalArr[n];
And fix patent pixels and dead pixels...
Ah, thanks, was looking for a summary through the 90-odd pages of this forum.
I assume the dead and patent pixels must be excluded when generating the averageOfID4 and averageOfID1?
freaky; I will pass my odd ID4 frame through the process and see what happens, thanks.
//get gain of each pixel:
gainCalArr[i] = avgID4 /arrID4[i]
//subtract frames and apply gain to diff:
currentFrame[i] = (arrID3[i] - arrID1[i]) * gainCalArr[i]+7000;
I've simplified calculation to two lines:The new SeeOFix looks interesting.
---
This is the algorithm that I'm using in SeeOFix (credit for it goes to jadew).
Has someone tryied to connect the iOS version to and android device via a lighting<->microUSB OTG connector?
Reading the thread someone spoke about the ARM pushing data through the USB/lighting connector but he didn't specify if there're some firmware differences between android and iOS versions.
...iOS device did not recognize unfortunately...i tried it too, but i use the 5 pads directly on the board. you have to open the device for that.
i tried it too, but i use the 5 pads directly on the board. you have to open the device for that.
and the PC could connect to an android device same as a ios device.
here some x-ray images:
https://www.eevblog.com/forum/thermal-imaging/freeware-software-for-thermal-analysis-thermovision_joec/msg949565/#msg949565 (https://www.eevblog.com/forum/thermal-imaging/freeware-software-for-thermal-analysis-thermovision_joec/msg949565/#msg949565)
i tried use the connector from a android (micro usb) on a ios device, works without any problems.
Hi joe-c.
I tried with my iPad3 and iPhone6, but seek thermal app. on both iOS devices can not recognize to the sensor.
And the iPad 3 displayed message as "USB device ... not supported" when sensor connected.
(iPhone6 was no display it.)
Hi joe-c.
I tried with my iPad3 and iPhone6, but seek thermal app. on both iOS devices can not recognize to the sensor.
And the iPad 3 displayed message as "USB device ... not supported" when sensor connected.
(iPhone6 was no display it.)
Well, I don't like Apple and have no iOS Device. i just bought a iOS Seek and open it. the flex to the Board has 4 Lines, for iOS and Android and on the Board are 5 Pads (2x GND) for USB directly.
sadly i cant help with adapter cables for Android<->iOS :-//
But if you know your device is working, there should be a way...
for which they does not yet know, here is a Windows application that can handle the Seek Thermal Camera
(Stream live Image, Measure, some Image processing)
https://www.eevblog.com/forum/thermal-imaging/freeware-software-for-thermal-analysis-thermovision_joec/ (https://www.eevblog.com/forum/thermal-imaging/freeware-software-for-thermal-analysis-thermovision_joec/)
just for info.
Cheers
joe-c
I've reverse engineered the part of seek circuit that is connected to sensor pins.I haven't enough time to view your post yesterday, but i dit it yet. ::)
The app was far from good But it was usable, now? Now it's just a mess, a complete mess.
Congrats... You have done something so extraordinary as to make me care enough to write my first review. The new version of this app is broken beyond compare. First... I kinda' get that now you have to create an account and sign in, fine... but it doesn't even keep your login. Each and every time you open the app you have to sign in, even if you accidently back space out or the app... click the app a third of a second later and... login required. And then... even if your login and password are correct a red bar appears and says, "Login Failed". Of course, it was just kidding and lets you in.
0 = no Processing, no Shutter, only ID3That is really interesting. Tnx for sharing...
3 = no Processing, no Shutter, only ID3, with up to 30FPS (Yeea Baby O0)
5 = fast shutter mode, Shutter switch after each frame, Send: 3,1,3,1,3,1,3...
6 = fast shutter mode, Shutter switch after each frame, only ID3
8 = Normal (not deep known) Processing, Shutter rise frequently, Send: 4,9,8,7,10,5,1,3... later 3,3,6,1,3,3,3,3,3,3,3,3,6,1,3,3,3...
Seek inform me that it is not possible to revert to the previous App!You could still download the apk for the previous version of the app and install it manually.
The Seek is in itself reasonably OK for the price but the new update App is absolutely RUBBISH, requiring you to log in(what the hell is that all about), full of what only can be described as advertising and self congratulations that does nothing but use up the memory of your Smartphone for NO GOOD REASON..
There's one on its way to me, should land any day now ;D
It seems that on Seek web site the Seek Pro now can be ordered with a delivery time of 2 weeks and a price of 499$.
I don't even understand why we are talking about it?We are exporting technical information (and, for some of us, software). As it was grilled into me by my last employer, the mantra went something like this: Export controls apply to any exchange of hardware or technical information, or services relevant to the design, test, or manufacture of any restricted item.
We are not exporting anything here on a professional level? :-//
We are exporting technical information (and, for some of us, software). As it was grilled into me by my last employer, the mantra went something like this: Export controls apply to any exchange of hardware or technical information, or services relevant to the design, test, or manufacture of any restricted item.Ok... but what is the difference between "Export" and "provide" or "share"?
So if I provide any such information to any "foreign person" without permission (export license) I am in violation.
Ignorance is no defense...unless you are a favored member of the political elite.Dam right :-DD
@b_force,Ok, same point, typo from my side. Changed it to SEEK ;)
FLIR have nothing to worry about on this front. Who told you that the FLIR cameras frame rate could be changed by a hobbyist ? The frame rate lock has nothing to do with the resolution settings. It s a VERY different lock-down that is not vulnerable in the same way as the resolution controls.
This thread is about the SEEK Thermal cameras. it is the SEEK product that appears to have failed in their duty to lock down the frame rate to <9fps.
Fraser
I am just an individual, which use his small money for hobby, and get out what's possible from the devices I have.
...
...
It is not evil to enhance the possibilities of your things at home.
They can't control what you do at home, ...I agree, and while doing so might still in some cases be in violation of the rules (or user agreements), nobody would find out if we just keep it at home. But we all come here to share information & benefit from each other's findings. I don't think any of us nerds posting our findings here has any intent of doing any harm with or without these devices, but as we all are becoming increasingly aware the people who are out to kill everyone they disagree with are using the internet for more than just recruiting and propaganda. If the "tech" members of their organizations decide to look for such information, they will find this site. That is what the regulations are trying to avoid. The risk might be very low, but we all need to decide if the benefits are worth taking the risk.
Because the Seek Support won't give answers, ...Probably at least in part because it would have been an export violation.
However you make it, it will just be harder for people on the legal side.You got that right. Especially regarding those "bullet accelerating devices". :)
btw: I had make a comparison between the by upgraded E4 and the SeekXR.Not all that bad, but I think I see more contrast in the FLIR images. Is the palette the same for both sets of images? Same palette but wider temperature range covered by the palette for the Seek images (if I am interpreting things correctly)? If so and the Seek temperature range were the same as the FLIR images we would probably see more noise. Also, I think grayscale tends to hide noise better than color because the human eye can only distinguish so many shades of gray (or shades of color), so you have a better chance with different colors. You may have a shade for every "bit" in the data but we can't tell them all apart.
I am happy with the result, even that was without any hardware changes at the moment.
A friendly reminder that it was discussed before here, the Flir E4 has a true 320x240 60FPS(!) sensorI'm told it outputs duplicate fares,like the Lepton, though as this would require a full frame of memory onboard, I''ll only believe this when I get round to looking at the raw data. The Lepton does a lot of onboard processing so more plausible in that case. I also have a vague memory of reading or being told Flie sensors have OTP fusee to lock the frame rate.
Though of course the silicon die size has to be at least as big as the microbolometer that sits on top of it, so it may be that they can have frame memory on it with minimal cost.A friendly reminder that it was discussed before here, the Flir E4 has a true 320x240 60FPS(!) sensorI'm told it outputs duplicate fares,like the Lepton, though as this would require a full frame of memory onboard, I''ll only believe this when I get round to looking at the raw data. The Lepton does a lot of onboard processing so more plausible in that case. I also have a vague memory of reading or being told Flie sensors have OTP fusee to lock the frame rate.
Of course there still may be scope for overclocking to increase a bit over the limit
The prices on this stuff is still prohibitively expensive. I'd like to get a 200yd thermal "scope" or board/bullet camera with good resolution for the lower hundreds, instead of 6k$+. :(
Things go downhill these days, I don't expect to see the prices down for "little people" any time soon.
The prices on this stuff is still prohibitively expensive. I'd like to get a 200yd thermal "scope" or board/bullet camera with good resolution for the lower hundreds, instead of 6k$+. :(
Things go downhill these days, I don't expect to see the prices down for "little people" any time soon.
This is the pro model using a Iphone 7
https://www.youtube.com/watch?v=nCfNbL9MxaU (https://www.youtube.com/watch?v=nCfNbL9MxaU)
I think you can't beat that performace for 500$
I think you can't beat that performace for 500$
The prices on this stuff is still prohibitively expensive. I'd like to get a 200yd thermal "scope" or board/bullet camera with good resolution for the lower hundreds, instead of 6k$+. :(
Things go downhill these days, I don't expect to see the prices down for "little people" any time soon.
Things go downhill these days, I don't expect to see the prices down for "little people" any time soon.
I'm trying to use the seek compact to view a couple of Si/SiO2 samples lit from behind, but the signal is very weak. It was suggested I find a way to increase exposure time and build up the signal for several minutes. Has anyone done this on the seek camera? Is it possible for me to do this myself?You can reduce noise with stacking images and using median filter: https://petapixel.com/2013/05/29/a-look-at-reducing-noise-in-photographs-using-median-blending/ (https://petapixel.com/2013/05/29/a-look-at-reducing-noise-in-photographs-using-median-blending/)
Like jglomas86 I'm trying to get a SeekThermal running on a Rpi, feels like I'm a year or two late to the party. All the various programs I've looked at start with something like dev = usb.core.find(idVendor=0x289d, idProduct=0x0010). My problem is I can't get past first base because the camera does not show up with lsusb on the pi, so the software is never going to find it. I know the camera is OK because I got it working with one of the Windows programs from this forum on my PC. I'm wondering if I need the linux equivalent of zadig to make it show up on the Pi USB?
... instructions always vague enough that only another Illuminati has any chance of trying it out!
It seems some people are using hti apk on the seek...I tried that ,it did work ^-^
http://4pda (http://4pda). ru/forum/index.php?showtopic=851614&st=960#entry88641913
http://htimeter.m.icoc (http://htimeter.m.icoc). me/en/h-col-103.html
It seems some people are using hti apk on the seek...
http://4pda (http://4pda). ru/forum/index.php?showtopic=851614&st=960#entry88641913
http://htimeter.m.icoc (http://htimeter.m.icoc). me/en/h-col-103.html
SEEK modules "C2 Starter Kit" https://detail.1688.com/offer/580307068706.html (https://detail.1688.com/offer/580307068706.html)It seems some people are using hti apk on the seek...
http://4pda (http://4pda). ru/forum/index.php?showtopic=851614&st=960#entry88641913
http://htimeter.m.icoc (http://htimeter.m.icoc). me/en/h-col-103.html
I tried that hti APK on my Android with my CompactPro but it was quite disappointing... The Seek Software is much more sophisticated and they also seem not to handle deadpixel substraction. I discovered
four dead pixels with their app which I've never seen on the seek app...
Would be interesting to know how it comes that they seem to use the same Software to Hardware communication as the seek devices... Maybe the are just selling rebranded Seek devices?
HT-101=SEEK COMPACT PROShould probably be HT-201 = SEEK COMPACT PRO ;)
Sorry to revive an old thread, I was wondering if anyone has been able to make an adapter to use the iOS/lightning connector version on PC. I bought one of these at a better price for iOS at the time, and only just discovered these awesome PC apps and would love to give that a try. I'm an Android user and basically only have an iPhone dedicated for when I use my thermal cam which is a bit silly.IOS does not use pin 5 to provide power to otg device,it uses pin4 and/or pin 8,you should connect USB's 5V to SEEK's pin 8 or pin 5(do your own risk)
I attempted to use an old iPhone power bank PCB and wire up a USB cable to its female lightning connector but nothing is detected on PC. I have GND (pin 1), D-, D+, NC, and 5V (pin 5) connected, following this for reference: https://www.quora.com/Are-pins-1-5-on-the-Apples-Lightning-Connector-used-to-pass-the-dc-voltage-to-charge-iphone-ipad (https://www.quora.com/Are-pins-1-5-on-the-Apples-Lightning-Connector-used-to-pass-the-dc-voltage-to-charge-iphone-ipad)
I've wanted to ask, are there any Linux binaries of SeekOFix?Emm no... But something usefull could be on github: https://github.com/search?q=seek+thermal
I removed my Posts about the 30FPS Mode.
I better be :-X than :blah: and get law Problems :scared: