LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Display the temperature from the thermal camera

Hi! I've been working on a similar VI as well.

I have the Fluke Ti400 Handheld Thermal Imager and I'm getting the same video into LabVIEW using your VI(screenshot attached). I too want to find a way to map the images into temperature data and plot them. It seems you have done most of the work and we just need to figure out how to convert color into temperature values using the reference graph given on the side. Have you had any breakthroughs on that yet? I was able to use a VI  to obtain the color/ average color over a selected ROI from the thermal image displayed(screenshot attached), from it I guess I can obtain the values of RGB (0 to 255). But I don't know how to convert it into temperature values? Any Ideas?

Download All
0 Kudos
Message 11 of 17
(2,823 Views)

I don't have the manual to the FLIR Camera(s) mentioned in this Post, so I'm going a bit on "guess-work", as well as some experience with other IR cameras.  Most of the comments are related to the Original Poster's question about the FLIR-E8, but are probably similar for other "temperature-imaging" devices.

  • These cameras operate in the Infra-Red (IR) spectrum.  The "images" are usually U8 or U16 values that map some spectral estimate of the temperature of that pixel (probably related to the predominant spectral peak at that spot, my guess) and express it as an unsigned integer.
  • As a convenience for human viewers, whose vision is far more "discriminatory" to color differences than to "shades of grey", the manufacturers provide "color-maps" that spread the 8 or 16-bit grey scale into the 24- (or 32-) bit color spectrum which makes it easier for our vision to spot differences.
  • I suspect that FLIR and Fluke provide (somewhere in their documentation) a description of how to map the pixel values from the Camera into a Temperature.  Note that LabVIEW has a Plot type called an "Intensity Graph" which similarly -uses Color ("Intensity") to provide a third dimension to a 2-D Image.  IMAQ-dx (and the Manufacturers' Software and Camera Hardware) also provide one or more "Intensity-to-Color" mappings to help you visualize the "Temperature space" of the 2D Image (converting it into an easier-to-visualize 3D representation, viewed looking down at the 2D Image plane, with Temperature being the axis along which you are viewing.

Some comments on the Original Poster's code that I noticed:

  • You specified the Image coming from the Camera as "Greyscale (U8)".  I haven't seen the specs of the FLIR Camera you are using -- does it really have only 8-bits of temperature resolution?
  • You pass this Greyscale Image into your Grab function, and from there to "ColorImageToArray", where you specify a 32-bit Color Image.  But you told the Camera to put the Image in an 8-bit Greyscale Buffer, and now you convert this 8-bit Image into a 32-bit Color Image.  Where do all the other 24 bits of each Pixel come from?  [This might be done by a "greyscale-to-color mapping" that I mentioned above, used to help we humans visualize subtle differences in greyscale values -- I confess that this aspect of IMAQdx I always found confusing ...].

I have a suggestion that would certainly help me to make possibly-more-useful comments.  If you have the manual for the FLIR-E8 as a PDF, particularly if it includes the technical specifications, could you attach it to a Reply?

 

I have a colleague who has done a lot of studies with IR imaging (and who introduced me to IMAQdx a decade ago when he needed help doing simultaneous video capture from multiple cameras using LabVIEW).  His interests are not temperature, per se, but sub-surface fluid flow, but the problems are similar.  He doesn't use FLIR cameras, so we'd both need to know more about the FLIR specifications and modes of operation.

 

Bob Schor

 

Bob Schor

Message 12 of 17
(2,812 Views)

Hi, 

I used this source (https://movitherm.com/knowledgebase/grab-image-flir-a615-using-labview/) for my program. Render unto Caesar 🙂
The camera they used needs a conversion from 10mK or 100mK to Celcius. With Flir support I have contacted about unit conversion. No information is available unfortunately about how the image stream is encoded. Maybe your camera has such an option. You can check the Radiometric or Temperature Linear options under Camera attributes under Measurement & Automation Explorer. 


Since such an option isn't my case, I changed my program a little bit and I used the former images saved in my thermal camera as training data for Vision Assistant. I fixed the spotmeter of the camera in the middle of the screen. The camera also measures Tmax or Tmin but after that "min", "max" or "~" sign comes before the temperature value and that makes difficult for Vision Assistant. Around the temperature value I drew a rectangle. What the camera read in this area was displayed in chart. Since Assistant had problems with ".", I simply divided the result with 10.
Front panel and block diagram are attached.

 

Download All
Message 13 of 17
(2,793 Views)

HI! The current VI I am using takes a U32 pixel value/ average pixel value in the selected ROI and currently just plots the value in a waveform. Is there any relation to converting the same into temperature values? Right now I'm just dividing the pixel value by 10^7 and multiplying by about 1.3 to get the same temperature value is shown in the spot box in the VI of the same size as ROI I have selected.

What would be the issues in my current VI, I obviously know that my Imager does not have a dynamic range of 32-bits, 14-bits max. Fluke doesn't have any information regarding the same.

VI, front panel, and Block diagram attached.

 

Also when I try using yourVI for the  FLIR a615 from the knowledgebase site, it shows an error :

Error -1074360302 occurred at Property Node (arg 2) in Connect Camera A615.vi

Possible reason(s):

Attribute value is out of range.

 

Did you use an OCR-based character recognition algorithm to read the displayed thermal values on the top? I tried the same but was unsuccessful to read it properly. I was unable to set an ROI to read only the part of the image which displayed the values. Do you have a VI for the same, to read the characters off the thermal image?

0 Kudos
Message 14 of 17
(2,772 Views)

Unfortunately, I can't help with the unit conversion either.

 

The example program is for a camera that has GigE Vision connection and your camera has USB connection. Therefore it is normal that you have error message. According to your camera settings, you need to use a property node between IMAQ Open Camera and IMAQ Configure Grab and update the properties.

 

I would define ROI above. Since the label is larger, the temperature value can be detected more easily.

Panel Thermal_LI.jpg

In the attachment you can see my program and trainigsdata. I don't know if the fonts of the two cameras are the same but you can try the same training data. If you update the settings (Property Node) it should work for you.

 

Here is also a link for character recognition training. That should also help.

https://www.youtube.com/watch?v=0K12_30xH4A

 

 

Message 15 of 17
(2,764 Views)

Thanks so much, the OCR didn't work for me when I tried it. But, hopefully, I may have better luck with your training data. Also, it makes sense why the first VI didn't work for my USB camera, I didn't notice what the PC interface for your camera was(GigE).

I'll give this one a shot and let you know what happens. It's a shame that none of the camera manufacturers give us any data related to the pixel to temperature conversion, that would have solved our problems big time.

0 Kudos
Message 16 of 17
(2,749 Views)

Hi! I just wanted to give an update on what happened. So the OCR training data worked fine for me. But I wanted a direct conversion from pixel value to temperature. So I set the temperature color scale on my camera manually to 17 to 40 degrees celsius. And now that I had a constant color scale, I switched the palette to grayscale. Now taking the pixel values, I had only values from 0 to 255 for the entire range between 17 and 40 degrees.(No RGB values)

 

A simple math calculation helped me calculate the temperature for every increment in pixel value. I needed to calibrate a little, but the final value is only about half a degree off. But I think it can be sorted out with more calibration.

Thanks, everyone for the help!

Message 17 of 17
(2,702 Views)