How Omniris turns a thermal drone flight into a map of real surface temperatures that you can click, outline, search for hot spots and compare — with every number read from the measured data, never guessed from the colours.
A thermal camera on a drone sees heat the eye cannot: a solar panel string running hot, a roof holding water, a field that has run short of water, an electrical connection on its way to failure. Most tools stop at a colourful picture — dramatic, but nothing a second person can check. Omniris turns the flight into a map where every pixel is a measured surface temperature, gives you tools to measure on it, and keeps a record of where every number came from.
Six capabilities work together:
Thermal photos are stitched into one map where every pixel is a surface temperature. A map is labelled THERMAL only after its temperatures are checked, and the tools read nothing else.
Click for a temperature, compare two points and grade the difference, get statistics inside any outline, or highlight everything above a temperature. Readings show °F first, °C beside them.
Finds areas noticeably hotter (or colder) than the rest of the flight or than their surroundings, ranks them, and gives each one's peak, rise, size and location. The result is saved, so the report and the assistant quote the same list.
A crop water stress map from canopy temperature, using published crop baselines where they exist and a clearly labelled relative method where they don't.
The report prints the same map, scale and anomaly table you see on screen. Orion, the Omniris assistant, answers from the same data and shows you where — it never estimates a temperature.
The settings used to calculate temperatures are saved with the job. Solar and roof reports list the inspection conditions their standards call for and say plainly what was not recorded.
A radiometric thermal camera records the measured heat at every pixel, not just a coloured image. That data can be turned into real surface temperatures once you allow for the surface material, the distance and the air. Many tools throw it away and stitch the camera's coloured preview instead. The result looks good but has three weaknesses:
Omniris makes the thermal map something you can measure on. Everything in this paper follows from one rule.
Every thermal map in Omniris stores a real surface temperature at each pixel, in a standard map-image format (cloud-optimised GeoTIFF). Gaps are marked as "no data", never filled with a made-up value. Omniris checks this when the map is created, not when it is shown:
No temperature shown anywhere in Omniris is estimated from a picture. The probe, region statistics, temperature highlights, anomaly detection, crop water stress, the report and Orion all read the same verified temperature map and show what they read.
flowchart LR A[Thermal photos
DJI, FLIR or built-in thermal band] --> B[Recognised and kept apart
from the colour photos] B --> C[Converted to °C
photo by photo] C --> D[Stitched into a map
as its own job] D --> E[Temperature check] E --> F[THERMAL map
in the vault] F --> G[Map tools · Report · Orion]
Before a stitch, Omniris checks every photo. Thermal photos are recognised from the camera's own markings: a thermal band tag, a FLIR temperature record inside the photo, or a DJI thermal camera's small image size and file naming. The stitch dialog shows how many it found, and the Thermal option appears, already ticked, only when there is something to build.
Thermal photos are always kept out of the colour and multispectral maps, whether or not you ask for a thermal map. The Thermal option decides whether you get a thermal map, not whether thermal photos end up in the wrong one.
DJI and FLIR thermal photos are converted to temperature one by one — DJI's with DJI's own thermal software. Five settings affect the result, and you can review them under Temperature measurement settings: emissivity (how strongly the surface gives off heat; 0.95 by default), distance, humidity, air temperature and reflected temperature. Humidity and temperatures are prefilled from the weather reading nearest the time the flight was captured — the evening reading for an after-sunset flight — and the dialog names the weather source and the hour it used. The values are saved with the job. Cameras with a built-in thermal band (the MicaSense Altum family) record temperature directly and skip this step.
The thermal map is built as its own job — alongside the colour or multispectral map, or on its own, from one submission. It is priced on its thermal photos, can be cancelled or retried by itself, and shows as its own progress card with a Thermal badge.
When the job finishes, the result goes through the temperature check described above. Only then is it labelled THERMAL and added to the vault as a map layer.
| Family | Cameras | How temperature is obtained |
|---|---|---|
| DJI radiometric | Mavic 3 Thermal, Matrice 4 Thermal, Matrice 30T, Zenmuse H20T / H20N, Zenmuse H30T, Mavic 2 Enterprise Advanced | Radiometric JPEGs (R-JPEG: a JPEG with the temperature data inside), converted photo by photo with DJI's thermal software and your saved settings |
| FLIR radiometric | Skydio X10 (validated); other cameras that write FLIR radiometric JPEGs | Converted photo by photo with the temperature calibration stored in each photo and your saved settings. Maps from cameras other than the Skydio X10 are labelled "camera not validated — temperatures unverified" on the map and in the report. Photos with no calibration are left out, and the dialog says how many. |
| Built-in thermal band | MicaSense Altum, Altum-PT | The camera's thermal band records temperature directly; no conversion settings are needed |
Thermal photos can be uploaded in the same folder as the colour photos from the same flight; Omniris sorts them.
Turn on a THERMAL layer and its date in the Site Navigator (the Omniris map view). It is coloured with ironbow — the standard thermal colour scale, from black for cool through purple, red and orange to white for hot — stretched over that flight's own temperature range (the 2nd to 98th percentile, so a few extreme pixels don't wash out the rest). The layer's row gains five tool buttons. Every number comes from Omniris reading the stored temperatures; your screen only displays it.
Temperatures show °F first, °C in brackets. Differences are converted as differences, so a rise of 7.0 °C reads +12.6 °F (+7.0 °C) — never with the 32-degree offset added by mistake.
Turn on the thermometer and click anywhere on the map: a small panel shows the temperature at that point. Click again and it compares your last two readings, showing the difference (ΔT, "delta-T") and a severity grade — normal, low, medium, high or critical — with the suggested action when you hover over it. A drop-down says what you compared against: vs similar component or vs ambient (the surrounding air), because the same rise means something different in each case. Grades follow common electrical-inspection practice and come from one table, so the panel and Orion always agree. Clicking where there is no data says "No data at that point" instead of inventing a number. With more than one thermal map switched on, the second click reads the same map as the first wherever that map has data. If it has none there and the reading comes from another flight, the panel labels each reading with its map and says that this ΔT compares two flights.
Illustrative probe panel contents.
Click the outline tool, click points around an area and press Finish. You get the minimum, average, maximum, and 2nd and 98th percentile temperatures inside the outline, and how many pixels were measured. An outline wider than the full-resolution read covers is measured from a reduced-resolution read, and the panel says decimated read beside the pixel count; a smaller outline is read at full resolution. Omniris remembers the last area you outlined on the page, so you can ask Orion about "the area I just marked" — and it recalculates the numbers itself rather than trusting the screen.
The sliders button switches the layer from its colour scale to a highlight of the temperatures you choose: Above, Below or Between values you type in °F. "Show me everything over 140 °F" on a switchyard or a roof is one setting. Clear returns the normal colours.
The flame button searches the whole layer for anomalies — areas noticeably hotter (or colder) than the rest. It takes the flight's typical temperature (the median) as the background — or, set to vs surroundings, the typical temperature of the ground about 33 ft (10 m) around each spot — finds connected areas at least a set amount above it, and ranks them by how far their peak is from the background. Each anomaly gets its peak temperature, average rise above the background, area and location, and is marked on the map with its rank number. The panel lists the top 15.
Illustrative example values. The top three of 24 anomalies found with the default settings; the report prints the same table (top ten).
A plant that is short of water closes its pores and warms up, so canopy temperature is a direct sign of water stress. The Crop Water Stress Index (CWSI) turns that temperature into a score from 0 (well-watered) to 1 (severely stressed), and the seedling button creates it as a new map layer from the flight.
CWSI depends on the crop, so you must pick one. There is no default, because guessing the crop would give a wrong answer:
To score the plants and not the soil between them, Omniris uses a vegetation index from the same flight — NDVI (the standard plant-health index) when multispectral bands exist, cut at the site's own vegetation threshold (0.20 when the site has none), otherwise one made from the colour map — and the result says which it used. CWSI therefore needs a colour or multispectral map from the same flight; without one it is refused rather than run over plants and soil together.
A saved crop water stress layer joins the site's other crop measures: zonal analytics trends it zone by zone across flights, and two dates can be compared, with no multispectral bands needed. The absolute and relative versions are separate indices there. The absolute version's flights count in the zone trend line without multispectral calibration, since it is worked out from temperature and the crop's published limits; the relative version is rescaled per flight, so it is never in the trend line, whatever the flight's calibration, and is read only in the zone rankings, which compare zones within one flight. On a flight without multispectral bands the zone values cover the whole zone, since the layer is already limited to the canopy, and the view says it is showing all pixels.
A stitch report is created once and saved, so the document a client downloads next month is the one that was reviewed. Its thermal section contains:
Orion, the Omniris assistant, reads the same verified maps. Ask "how hot is the hottest spot?", "any thermal anomalies?", "is this field water-stressed?" or "what is at that spot?" and it answers from measured values:
A temperature map, like any map stitched from overhead photos, needs the camera pointing straight down (nadir). Before a stitch, Omniris reads the camera angle from every photo. If a flight was shot too far from straight down — 45°, say — it says so plainly, with the angle, and won't start a map that would fail; the dialog offers to build a 3D model of the same flight instead.
The temperature conversion needs the distance from the camera to the surface. For DJI cameras Omniris prefills it from the flight height the drone recorded — its height above the takeoff point, or its GPS height above the terrain when that isn't recorded; if left blank, each photo's own recorded height is used. FLIR photos use each photo's own height unless you enter a distance. If the drone took off from much higher or lower ground than the site, correct the distance in the measurement settings.
Omniris records what the drone and the weather service can tell it: flight height, camera angle, air temperature, humidity and wind. It does not measure sunlight on solar panels, and it cannot know whether a roof was dry for 24 hours. The report lists the conditions the standard calls for next to the weather during the flight, and says plainly what was not recorded, so the inspector can make the call.
A thermal finding often has consequences — a warranty claim on a panel, a roof repair invoice, an insurance dispute over water damage. Thermal maps are ordinary files in the Omniris vault, so everything in the Evidence you can prove paper applies to them:
Thermal processing runs wherever Omniris runs. Omniris cloud (Microsoft Azure or Google Cloud), the data center edition and on-premises installations produce the same temperature map from the same photos, with the same tools, reports and Orion. A self-hosted installation with Hybrid enabled can send a thermal job to the cloud when the local machines are busy or too small, and the result lands in the local vault like any other run.
A measurement is only as good as the honesty of its claims. Omniris states its limits where they apply:
Omniris provides measured temperatures and the means to check them. Whether an inspection meets a standard, and what a finding means for a warranty, a claim or a repair, depends on the conditions on the day and the inspector's judgement. The report gives both the numbers and the conditions so that judgement can be made.
Find hot panels, strings and diodes against the panels around them, ranked, located and given an indicative class of abnormality, with the report framed in IEC TS 62446-3's terms and honest that sunlight on the panels was not measured.
After-sunset flights show possible wet areas as warm patches; cold mode finds the wet patch under a membrane. The report cites ASTM C1153's conditions and caveat.
Canopy temperature turned into crop water stress, with published baselines for major crops, a labelled relative method for the rest, and an assistant that answers "where is the drought stress?" with a map.
Probe a bushing against a similar component or the surrounding air, grade the difference, and highlight everything in the yard above a temperature with one setting.
A temperature map with the settings used to make it, a saved anomaly table that matches the report, and a sealed custody record behind it.
Pipelines, storage, cooling: anomalies in either direction, re-run at tighter thresholds, with region statistics inside any outline you draw.
A temperature map needs a straight-down flight. A flight shot at an angle — a solar array at −45°, a building face, a pitched roof — can't become a map, but its temperatures can be laid onto the 3D model: the model's shape comes from the colour photos, and its surface is coloured from the thermal photos taken at the same moments. Hot strings, diodes and wet patches can then be examined in 3D, on the structure they belong to.
| Reference | Used for |
|---|---|
| IEC TS 62446-3 | Inspection conditions for thermal inspection of solar plants, and the classes of abnormality used to grade anomalies (Solar site type) |
| ASTM C1153 | Inspection conditions and caveats for finding wet roof insulation (Roof site type) |
| Electrical-inspection ΔT practice (NETA-style) | Severity grades for the probe's ΔT, vs similar component and vs ambient |
| Idso et al. (1981); Idso (1982) | Published crop baselines for the Crop Water Stress Index |
| DeJonge et al. (2015) | The upper limit used in the absolute index (canopy 9 °F (5 °C) above air temperature) |
| Park et al., Remote Sensing 9(8):828 (2017) | The relative method used where no crop baseline is published |
| DJI Thermal SDK | Converting DJI R-JPEG photos to temperature |
| Cloud-optimised GeoTIFF | Storage format of the temperature map and every layer made from it |