Skip to main content

An Automated and Robust Open-Source Image Co-Registration Software for Multi-Sensor Satellite Data

Project description

http://danschef.gitext.gfz-potsdam.de/arosics/images/arosics_logo.png

An Automated and Robust Open-Source Image Co-Registration Software for Multi-Sensor Satellite Data

  • Free software: GNU General Public License v3
  • Documentation: http://danschef.gitext.gfz-potsdam.de/arosics/doc/
  • The (open-access) paper corresponding to this software repository can be found here: Scheffler et al. 2017 (cite as: Scheffler D, Hollstein A, Diedrich H, Segl K, Hostert P. AROSICS: An Automated and Robust Open-Source Image Co-Registration Software for Multi-Sensor Satellite Data. Remote Sensing. 2017; 9(7):676).
  • Information on how to cite the AROSICS Python package can be found in the CITATION file.
  • Submit feedback by filing an issue here or join our chat here: https://gitter.im/arosics/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link

Status

https://gitext.gfz-potsdam.de/danschef/arosics/badges/master/pipeline.svg https://gitext.gfz-potsdam.de/danschef/arosics/badges/master/coverage.svg https://img.shields.io/pypi/v/arosics.svg https://img.shields.io/pypi/l/arosics.svg https://img.shields.io/pypi/pyversions/arosics.svg https://img.shields.io/pypi/dm/arosics.svg https://zenodo.org/badge/253474603.svg

See also the latest coverage report and the nosetests HTML report.

Feature overview

AROSICS is a python package to perform automatic subpixel co-registration of two satellite image datasets based on an image matching approach working in the frequency domain, combined with a multistage workflow for effective detection of false-positives.

It detects and corrects local as well as global misregistrations between two input images in the subpixel scale, that are often present in satellite imagery. The algorithm is robust against the typical difficulties of multi-sensoral/multi-temporal images. Clouds are automatically handled by the implemented outlier detection algorithms. The user may provide user-defined masks to exclude certain image areas from tie point creation. The image overlap area is automatically detected. AROSICS supports a wide range of input data formats and can be used from the command line (without any Python experience) or as a normal Python package.

Global co-registration - fast but only for static X/Y-shifts

Only a global X/Y translation is computed within a small subset of the input images (window position is adjustable). This allows very fast co-registration but only corrects for translational (global) X/Y shifts. The calculated subpixel-shifts are (by default) applied to the geocoding information of the output image. No spatial resampling is done automatically as long as both input images have the same projection. However, AROSICS also allows to align the output image to the reference image coordinate grid if needed.

Here is an example of a Landsat-8 / Sentinel-2 image pair before and after co-registration using AROSICS:

https://gitext.gfz-potsdam.de/danschef/arosics/raw/master/docs/images/animation_testcase1_zoom_L8_S2_global_coreg_before_after_900x456.gif

Local co-registration - for spatially variable shifts but a bit slower

A dense grid of tie points is automatically computed, whereas tie points are subsequently validated using a multistage workflow. Only those tie points not marked as false-positives are used to compute the parameters of an affine transformation. Warping of the target image is done using an appropriate resampling technique (cubic by default).

Here is an example of the computed shift vectors after filtering false-positives (mainly due to clouds in the target image):

https://gitext.gfz-potsdam.de/danschef/arosics/raw/master/docs/images/shift_vectors_testcase1__900x824.gif

For further details check out the documentation!

Credits

AROSICS was developed by Daniel Scheffler (German Research Centre of Geosciences) within the context of the GeoMultiSens project funded by the German Federal Ministry of Education and Research (project grant code: 01 IS 14 010 A-C).

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template. The test data represent modified Copernicus Sentinel-2 data (ESA 2016). The input data for the figures in the documentation have been provided by NASA (Landsat-8) and ESA (Sentinel-2).

History

0.5.0 (2017-09-19)

New features:

  • Added two test cases for local co-registration and the respective test data.
  • Added test cases for global co-registration
  • Added test of output writer and tie point grid visualization.
  • Added nosetests. Resolved some setup requirements by conda during test_arosics_install.
  • PEP8 code style now checked with automatic style checkers

Fixes and improvements:

  • Coverage now also working in multiprocessing.
  • Replaced test data of test case INTER1 with LZW compressed GeoTIFFs to speed up testing.
  • Revised docker container builder.
  • Bugfix for unexpected FFTW return value that caused the matching to fail
  • Added some docstrings.
  • Refactored command line interface ‘arosics.py’ to ‘arosics_cli.py’ to fix import issues.
  • Added usage documentation for command line interface.
  • Removed pykrige from automatically installed libraries during setup. It is now optional (Fixes issue #12)
  • Bugfix in connection with optional library pyfftw.
  • Revised installation guidelines within README.rst, README.md and installation.rst. Added link for nosetests HTML report.
  • Fixed exception in case no arguments are provided to command line interface.
  • Revised error handling and added additional check for projection.
  • GDAL_DATA environment variable is now handled within py_tools_ds. Updated minimal version of py_tools_ds in setup.py.
  • Fixed pickling error when running COREG_LOCAL in multiprocessing under a Windows environment.
  • Replaced all occurrences of “quality grid” with “tie point grid”. Updated version info.

0.4.0 (2017-07-07)

New features:

  • added a logo
  • added auto-deploy to PyPI
  • added test cases for local co-registration

Fixes and improvements:

  • fixed warping issues in case only very few tie points could be identified

0.2.1 (2017-07-03)

  • First release on PyPI.

0.1.0 (2017-06-15)

  • Package creation.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for arosics, version 0.9.17
Filename, size File type Python version Upload date Hashes
Filename, size arosics-0.9.17.tar.gz (26.9 MB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page