The Thermal Expert also has a rolling shutter.
A little update on the camera: I've finally found a bit of free time to play around with the SDK I was sent by i3. The SDK is a bit clunky and simplistic. The only provided function to get data from the camera returns a normalised 16bit image. It's better than nothing, but I'd really like a way to get the direct raw data.
The SDK provides a method to calculate the temperature at a given x y coordinate. Combining this with the normalised image gives me a way to approximate the temperature of the entire image (find min/max points, calculating temp of those points and then adjust the range). However here we come to another quirk of the SDK; the calc temperature methods in the SDK do not operate on the same frame that was returned when reading the image. The function seems to operate on the following frame.
I did a bit of digging in the SDK and I think I've figured out how the camera and drivers work. The camera seems to be a bit of a dumb device. After being plugged in it simply returns data in the following order: calibration, dead pixels and then image data. The data is not returned in response to a request from the pc. The sdk effectively does the following:I'm sure the camera can do something more clever, but the SDK I was given doesn't use that functionality. An annoying side-effect this "dumb device" mode is that the camera must be unplugged in between runs of the program. If the camera is not unplugged between runs, the SDK will interpret the image data being returned as calibration data and dead pixel data. When this happens all image frames returned by the SDK are be completely blank. (I assume because the SDK suddenly thinks that all the pixels are dead-pixels). This should be trivial to fix; the camera should be "reset" when the user calls the init function.
- calibrationData = read( n_bytes )
- deadPixels = read( n_bytes )
- imageData = read( n_bytes )
Complaints aside, it's pretty great once you have real time (ish) thermal image data in an openCV friendly form. You can really start doing fun things
The first thing I did was create a local-normalised image inspired by the ThermApp's "night vision" mode.
It works pretty well until there is too much dynamic range in a scene. There is no way to lock the gain of the sensor, so when there is something very hot (e.g., a match) in the scene, we start to see the limits of some part of the system (could be sensor, ADC, firmware, or SDK).
Normal Scene:
With radiator visible:
With match in scene:
So there's no way to get the true raw digitzed analog signal from the FLIR One's ADC into your smartphone?
So there's no way to get the true raw digitzed analog signal from the FLIR One's ADC into your smartphone?
Why would you want to, it will look a bit like the attachment below (OK that is from a 320x240 ASi, but VOx will only be a bit better)
Bill
www.fire-tics.co.uk
The Thermal Expert also has a rolling shutter.
It works pretty well until there is too much dynamic range in a scene. There is no way to lock the gain of the sensor, so when there is something very hot (e.g., a match) in the scene, we start to see the limits of some part of the system (could be sensor, ADC, firmware, or SDK).
Fraser,
The general arrangement for a microbolometer sensor to generate the signal voltage is for the variable resistance of each pixel to be connected to a capacitor / integrating amplifier. for a defined period There is one amplifier per detector column and the integration is the time it takes to read out (digitise) each row of pixels, then the amplifier is zeroed and reused.
What you see as column nonuniformity is the variation in the capacitors in each column amplifier which is the dominant nonuniformity. In the image this is similar to the difference between 25° and 60°C, you can just make out a desk and ceiling lights once you know they are there.
There is a similar FLIR image (from a VOx) but it is not said whether this is the pure raw ADC image or the image after applying the factory calibrations and just awaiting a shutter correction. My guess is the latter but happy to be corrected.
from
http://uk.mathworks.com/company/newsroom/flir-speeds-thermal-imaging-fpga-development-through-automatic-hdl-generation-from-matlab.html
Bill
www.fire-tics.co.uk
Check the i3 website, they have listed a bunch of new devices, a couple aren't being shipped until July. One of them is the Thermal Expert V1, which is a 640x480 sensor...considering how cheap the lower resolution one is, imagine how affordable this one might be. Also, they take PayPal now. I already contacted them to get price details. I'm very likely going to order the V1 if it's at the right price.
Got a response from i3system - the 640x480 unit will be approx $3500 (not final) and the 30hz will be slightly more.
19mm f/1.0 lens is included.
This is slightly less than the price of a FLIR Vue Pro, however the thermal expert v1 is radiometric / measures temperatures.
Ben
Do not forget that my image, and the upper FLIR image are deliberately uncorrected at least in part. The user is not meant to ever see those. In a way you have answered your own question, you have a blank scene and allowed the AGC to go flat out. It only stops once there is enough noise to fool it into thinking it has an image ! All thermal cameras are extracting very small image signals from large variable backgrounds so will show noise much more readily than a visual light camera, the comparison to an even thermal scene is a visual camera down a cellar at night.
Are the lines fixed in live video or not ?
Vertical fixed effects are likely to be the remains of what is noted above, column amplifier effects not fully removed by factory fixed calibration and/or the current flat field calibration. Digital rounding and temperature drifts can bring these out too. Again this is due to the columns being the dominant non-uniformity in the base sensor image so small errors in removing them are still greater than the camera noise and so show up in the output image.
Horizontal moving noise is likely to be low frequency electronic noise being sampled by the device scan rate.
Horizontal fixed noise lines can be the moving noise locked in by the last single point calibration with a camera that uses that method.
Bill
www.fire-tics.co.uk
Interestingly enough, the some of the noise lines in both directions appear to move with the image content, some appear random, and some appear fixed (but fade in or out after a period of time). At least this is how I remember it from last time I did that experiment. I was pretty sure that those claims people were making about fake noise being added to the image were talking about the final image (MSX image, or cropped IR image), not the raw 120x160 image. But I'm not so sure about that anymore, as the explanation you gave for how noise would occur naturally in the image doesn't quite account for how I remember the noise looking.