Automated Drone Image Analysis Tool

Product Overview

The Automated Drone Image Analysis Tool (ADIAT) is a platform and set of algorithms that can be used to programmatically identify “areas of interest” in a set of digital images. The primary use case for this tool is to aid in the analysis of photos taken by UAVs during search and rescue operations, however, the color and anomaly detection algorithms may be applicable to users in many different fields.

Development of ADIAT began in 2017 based on the needs of TEXSAR with input from industry experts.  In 2018 a GUI was added to make it more “user friendly” and, in May 2019, the first version was released to the public.  As UAV utilization by SAR teams continued to increase so did interest in ADIAT.  In October 2023 v1.2 of ADIAT was release with significant performance improvements as well as the addition of a third algorithm and advanced features that make the platform much more powerful.

Given that search teams often operate in austere conditions, ADIAT was built to run as a Windows desktop application without the benefit of or a dependency on internet connectivity.

This tool was developed by TEXSAR (Texas Search and Rescue) as an open source project for the SAR community.  If you are interested in helping in developing the project please reach out to us at

Interface Guide

The ADIAT interface is build on the QT platform and is comprised of two main components: the “Main Window” where the user provides the inputs required to run the detectors and the “Image Viewer” where the user will be able to see and interact with images were identified as having “areas of interest.”.  Once the detection algorithm has run, the augmented images with “areas of interest” are also available in the user-selected output folder for viewing outside if ADIAT.

Main Window

  1. File: Provides menu options to load previously completed analysis and update application preferences.
  2. Input Folder: Location from which images will be sourced.
  3. Output Folder: Location where augmented images with “areas of interest” identified will be stored along with an xml file containing metadata from the processing.
  4. Min Object Area (px): The minimum size (area), in pixels, that an object must meet or exceed to be flagged as an “area of interest.”
  5. Object Identification Color: The color that will be used to circle “areas of interest.”
  6. Max Processes: The number of images that will be processed in parallel.  This number is driven by the complexity of the algorithm/features being used and the performance characteristics of the user’s computer.
  7. Normalize Histograms & Reference Image: The option to adjust the lighting conditions for all input images to where they match the conditions in the reference image.  See more about this feature here.
  8. Use K-Means Clustering & Number of Clusters: The option to leverage K-Means Clustering to reduce the number of colors in the input images.  See more about this feature here.
  9. Algorithm: The detector that will be used.  More info about the available algorithms can be found here.
  10. Algorithm Options: Settings and parameters that are specific to the selected algorithm.
  11. Start: Button that starts the image analyzer.
  12. Cancel: Terminates the analysis in progress.
  13. View Results: Launches the image viewer after analysis has been completed.
  14. Information Window: Provides real-time updates during the image analysis process.

Image Viewer

  1. File Name: The name of the file currently being viewed.
  2. Image Count/Index: The index of the current image and the total number of images with “areas of interest.” 
  3. Main Image Viewer : The zoomable image with “areas of interest” circled.
  4. Thumbnail Viewer: A scrollable section showing thumbnails of “areas of interest” found in the image.  Clicking on a thumbnail will zoom the main image to that area.
  5. GPS Coordinates: The latitude and longitude information as captured by the UAV when the image was taken.
  6. Jump To: Provides the ability to move directly to a specific image number
  7. Previous Image & Next Image: Navigation buttons to move between images with “areas of interest” identified by ADIAT.  This can also be done using the left and right arrows on the keyboard.
  8. Generate KML: Generates a KML (Keyhole Markup Language) with markers identifying the locations of each image containing “areas of interest.”

Detection Algorithms

ADIAT has been designed so that additional detection algorithms can be added as the fields of computer vision and data science continue to progress.  As an open source project, users throughout the SAR and scientific communities are welcome to contribute their expertise to the project through new algorithms and refinement of those that have already been implemented.

The algorithms that have been implemented to date would not be possible without the monumental contributions other have made to freely available resources such as OpenCVscikit-image, and Spectral Python.  Wherever possible we will callout where we have leveraged these libraries as well as the contributions from additional tutorials and guides that make these resources approachable for all users.

Color Matching Algorithm

Released – May 2019


The color detection algorithm looks at each pixel in an image to determine if it is within a user-specified color range.  Any sufficiently sized areas where all pixels are within the selected color range are flagged as “areas of interest” in the image. 

The color detection algorithm in ADIAT utilizes the inRange function in OpenCV.

Input Parameters

  1. Reference Color: The base color we will be searching for in the images.
  2. Color Range Selectors (Red, Green, Blue): Allowed deviation from the selected base color for each color component.
  3. Color Range Min, Mid, Max*: Shows the min, mid, and max color for the selected color rage.
  4. Color Range Visualizer: Shows the selected and unselected color range in a HSL color maps.

* The color range is a one-dimensional representation of the three-dimensional selected color range.  It is intended to be a guide and is not comprehensive.

Libraries, Research, and Tutorials

RX Anomaly Detection Algorithm

Released – May 2019


The RX (Reed-Xiaoli) anomaly detector extracts targets that are spectrally distinct from the image background by using the squared Mahalanobis distance as a measure of how anomalous a pixel is with respect to an assumed background.  Once the RX scores have been calculated, each scored pixel is evaluated against a user-specified threshold to declare whether or not it should declared anomalous.  Any sufficiently large groups of anomalous pixels are flagged as “areas of interest” in the image.

The RX anomaly detector used in ADIAT utilizes the rx function in Spectral Python.

Note: In previous versions of ADIAT this algorithm was called “Color Anomaly”

Input Parameters

  1. Image Segments: Divides the image in to equally-sized segments so that the target pixel will be compared to a section of the image rather than the entire image. 
  2. Sensitivity: Threshold for determining if a pixel is anomalous with respect to the background.  Default value is 5
Libraries, Research, and Tutorials


Matched Filter Algorithm

Released – October 2023


“When a pattern, perfectly known as a sub-image g, is searched for in an image f, then the cross-correlation between g and f is a very efficient technique. This technique is often known as matched filter” (Vincent Mazet).

As applied here, rather than a sub-image (spatial domain), we are looking for groups of pixels that correlate to a specified color (spectral domain).  Individual pixels are scored based on how close they are to the reference color and then the scores are evaluated against the user-provided threshold. Any sufficiently large groups of pixels scored above the threshold are flagged as “areas of interest” in the image.

The matched filter detector used in ADIAT utilizes the matched_filter function in Spectral Python.

Input Parameters
  1. Reference Color: The color we will be searching for in the images.
  2. Threshold: Sets the minimum “score” (on a scale of .1 – 1) that we will consider to be a match to the reference color once the matched filter detector is run.  Default value is .3
  3. Color Range Visualizer: Shows the selected and unselected color range in a HSL color maps.
Libraries, Research, and Tutorials

Advanced Features

In addition to the detection algorithms, v1.2 of ADIAT includes the addition of two new advanced features which can be leveraged in tandem with any of the algorithms to address common real-world issues that negatively impact the effectiveness of detectors.

Histogram Normalization

Released – October 2023


Lighting conditions can have a dramatic impact on the representation of colors in an image which, in turn, means that color identification can be problematic with UAV photos when they are taken at different times of day or with variable cloud cover.  Histogram normalization addresses this by “standardizing” the lighting conditions across a set of images so that they can be evaluated consistently.

The histogram normalization feature in ADIAT utilizes the match_histograms function in scikit-image.

Input Parameters

  1. Reference Image: The image that will be used as the baseline against which all other images will be normalized.
Libraries, Research, and Tutorials

K-Means Clustering

Released – October 2023


K-means clustering is a classification technique designed to group like data points.  For the purposes of image analysis, K-means clustering is used to group similar pixels together in order to reduce the overall number of colors represented in an image.  Essentially we are reducing the number of colors in the image so we have “one shade of green”, “one shade of brown”, etc. which allows us to isolate anomalous colors.

The K-Means Clustering feature in ADIAT utilizes the kmeans function in OpenCV.

**Warning** This feature is extremally expensive in terms of performance and execution time.

Input Parameters

  1. Number of Clusters: The number of colors we want to remain in the image after processing.
Libraries, Research, and Tutorials

Technical Details


ADIAT was built in Python and has been compiled into a Windows app and packaged with an installer for portability and ease of use.  As an open source program, the source code is freely available in Github along with instructions on how to run and compile the app.

The modular structure of the codebase was designed to allow additional algorithms to be added with minimal changes to the core functions.  If you are interested in contributing to this project please contact us at

System Requirements

ADIAT will run on any relatively modern Windows system, but we do recommend using  Windows 10 or higher.  The application is designed to allow for the scaling of memory and cpu utilization based on the capabilities of the user’s system, but ultimately “more is better” and a more performant system will allow for faster execution times.  ADIAT requires 440MB of hard drive space for the application installation and the user will need to allocate additional space for the augmented images saved during execution.

License Information

ADIAT is licensed under the GNU General Public License v3.0.   This makes it freely available to use by the community with limited conditions.

Release Notes

  • 1.2 (October, 2023)
    • Added K-Means Clustering and Histogram Normalization features as well as Matched Filter algorithm.
    • Performance and detection improvements
    • Completed major refactoring and modernization of the codebase
  • 1.1 (May 30, 2019)
    • First public release including core platform with Color Detection and RX Anomaly algorithms.

Stay up to date with TEXSAR's latest news and events!