-
Notifications
You must be signed in to change notification settings - Fork 48
About PyRAT
PyRat (Python Radar Tools) is a flexible open-source framework for post-processing synthetic aperture radar (SAR) data. PyRAT is implementedin Python and distributed under an open-source license. It is mostly intended for post-processing of both airborne and spaceborne SAR imagery. PyRAT features an easy to use plugin-based programming interface, which allows users to quickly extend it with their own routines.
SAR data must be considered difficult to work with, from an end-user point of view, due to the fact that the fundamental difference between SAR data and other remotely sensed imagery means that general purpose image processing, GIS and even optical remote sensing software packages are often ill equipped for the analysis and processing of radar data. This is especially true for processing that involves the phase of the coherent SAR signal, e.g. in SAR polarimetry and interferometry, but also for the handling of backscatter intensities, where it is often necessary to consider the particular statistics of the speckle effect.
The situation in research is not much different: Research on one particular aspect of SAR image formation or analysis can be complicated by the need to implement an entire processing pipeline, or reference algorithms, instead of focusing on the topic of interest. There is therefore a need from both users and researchers for SAR processing and analysis software. Both communities have specific needs that are addressed by the development of PyRAT:
• Modular design. Availability of a certain number of standard (and experimental) SAR processing steps out of the box. Their number will successively increase with time and users supplying their own algorithms.
• Simple programming interface. Only minimal knowledge of the framework itself it required to implement own modules. This is achieved by a modular, plugin-based design.
• Efficient data processing. Data is automatically processed in blocks by multiple parallel threads, thererfore being both memory and computationally efficient. In most cases, this is done by PyRAT’s framework itself and doesn’t need to be explicitly programmed.
• Modern programming language (Python), which provides powerful language features such as object oriented programming and, at the same time, has the flexibility of a scripting language, thereby supporting rapid prototyping. Development further profits from the large variety of available Python libraries and support from the Python community.
PyRAT is potentially of interest for providing reference implementations of novel algorithms, for further evaluation by other scientists or for demonstrating their capabilities for a wider audience. Integration in a general-purpose framework offers simplified access to such newly developed techniques. Although several SAR remote sensing software packages are available, none of them provide the above ease of use and development (mainly due to the choice of programming language and framework design).
Technically, PyRAT is implemented in Python (supported by some Cython extensions). Various spaceborne and airborne data formats can be imported, including the using the GDAL-library for reading data. PyRAT features automatic multithreaded block processing for computational speed and memory efficiency, such that arbitrarily large SAR data can be processed given limited resources. Importantly, the developer can benefit from these advanced processing features without any extra work: The implementation of new functionality is only concerned with the mathematical operation being performed, while features such as block-processing and multithreading are provided transparently. In addition, PyRAT is expandable by plugins without intimate knowledge of framework internals.
PyRAT features a Qt-based graphical user interface (GUI) called ’Viewer’, which provides a basic image viewer that supports zooming and scrolling. It is primarily meant for the casual user and for simple interactive work. Most, but not all of PyRAT’s functionality is accessible through the Viewer. In addition to its GUI, PyRAT features a powerful command line interface (CLI). It is fully scriptable using Python and is meant for batch processing tasks and for the command-line addict.
PyRAT organises data in so-called layers, each containing a single data set or channel thereof, which are stored in temporary files on disc. Processing data generates one or more new layers with the processing results. During processing, PyRAT automatically applies block processing whenever possible to minimise memory consumption. Also, modules are automatically applied in a multi-threaded manner to achieve high performance. These two tasks are performed by the framework itself and don’t need to be programmed explicitly when implementing new modules.
PyRAT also offers a plugin interface, which allows one to add Python modules with new functionality in a simple manner. To implement ones own modules, only superficial knowledge of the framework itself is necessary. Making new routines available through the CLI and the GUI is a matter of a few lines of code. This allows one to quickly extend PyRAT to meet personal needs and to use it for experimental developments. We will be more than happy to include externally contributed methods and techniques in the official PyRAT release.
The current development model totally focuses on those routines required by the authors and their direct colleagues. Consequently, PyRAT’s functionality is not complete and get extended only when needs arise. External users are asked to contribute and share their own PyRAT modules, or to communicate their needs to the authors. In that way, PyRAT will improve step by step.