README.rst 6.18 KB
Newer Older
1
.. figure:: http://danschef.gitext.gfz-potsdam.de/arosics/images/arosics_logo.png
Daniel Scheffler's avatar
Daniel Scheffler committed
2
3
    :target: https://gitext.gfz-potsdam.de/danschef/arosics
    :align: center
4

Daniel Scheffler's avatar
Daniel Scheffler committed
5
6
7
==================================================================================================
An Automated and Robust Open-Source Image Co-Registration Software for Multi-Sensor Satellite Data
==================================================================================================
8

Daniel Scheffler's avatar
Daniel Scheffler committed
9
* Free software: GNU General Public License v3
Daniel Scheffler's avatar
Daniel Scheffler committed
10
11
* **Documentation:** http://danschef.gitext.gfz-potsdam.de/arosics/doc/
* The (open-access) **paper** corresponding to this software repository can be found here:
Daniel Scheffler's avatar
Daniel Scheffler committed
12
13
14
  `Scheffler et al. 2017 <http://www.mdpi.com/2072-4292/9/7/676>`__
  (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).
15
* Submit feedback by filing an issue `here <https://gitext.gfz-potsdam.de/danschef/arosics/issues>`__
Daniel Scheffler's avatar
Daniel Scheffler committed
16
  or join our chat here: |Gitter|
17

18
19
20
.. |Gitter| image:: https://badges.gitter.im/Join%20Chat.svg
    :target: https://gitter.im/arosics/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link
    :alt: https://gitter.im/arosics/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link
21

22
23
24
25
Status
------

.. .. image:: https://img.shields.io/travis/danschef/arosics.svg
26
27
        :target: https://travis-ci.org/danschef/arosics

28
.. .. image:: https://readthedocs.org/projects/arosics/badge/?version=latest
29
30
31
        :target: https://arosics.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status

32
.. .. image:: https://pyup.io/repos/github/danschef/arosics/shield.svg
33
34
35
36
     :target: https://pyup.io/repos/github/danschef/arosics/
     :alt: Updates


37
.. image:: https://gitext.gfz-potsdam.de/danschef/arosics/badges/master/build.svg
Daniel Scheffler's avatar
Daniel Scheffler committed
38
        :target: https://gitext.gfz-potsdam.de/danschef/arosics/commits/master
39
.. image:: https://gitext.gfz-potsdam.de/danschef/arosics/badges/master/coverage.svg
Daniel Scheffler's avatar
Daniel Scheffler committed
40
        :target: http://danschef.gitext.gfz-potsdam.de/arosics/coverage/
Daniel Scheffler's avatar
Daniel Scheffler committed
41
42
.. image:: https://img.shields.io/pypi/v/arosics.svg
        :target: https://pypi.python.org/pypi/arosics
43
44
45
.. image:: https://img.shields.io/pypi/l/arosics.svg
        :target: https://gitext.gfz-potsdam.de/danschef/arosics/blob/master/LICENSE
.. image:: https://img.shields.io/pypi/pyversions/arosics.svg
Daniel Scheffler's avatar
Daniel Scheffler committed
46
        :target: https://img.shields.io/pypi/pyversions/arosics.svg
Daniel Scheffler's avatar
Daniel Scheffler committed
47
48
.. image:: https://img.shields.io/pypi/dm/arosics.svg
        :target: https://img.shields.io/pypi/dm/arosics.svg
49

50
See also the latest coverage_ report and the nosetests_ HTML report.
51

52
53
Feature overview
----------------
54

Daniel Scheffler's avatar
Daniel Scheffler committed
55
AROSICS is a python package to perform **automatic subpixel co-registration** of two satellite image datasets
Daniel Scheffler's avatar
Daniel Scheffler committed
56
57
58
based on an image matching approach working in the frequency domain, combined with a multistage workflow for
effective detection of false-positives.

Daniel Scheffler's avatar
Daniel Scheffler committed
59
It detects and corrects **local as well as global misregistrations** between two input images in the subpixel scale,
Daniel Scheffler's avatar
Daniel Scheffler committed
60
that are often present in satellite imagery. The algorithm is robust against the typical difficulties of
Daniel Scheffler's avatar
Daniel Scheffler committed
61
62
63
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
Daniel Scheffler's avatar
Daniel Scheffler committed
64
65
66
line (without any Python experience) or as a normal Python package.


Daniel Scheffler's avatar
Fix.    
Daniel Scheffler committed
67
Global co-registration - fast but only for static X/Y-shifts
68
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Daniel Scheffler's avatar
Daniel Scheffler committed
69
70
71
72
73
74
75
76
77

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:

78
79
.. image:: https://gitext.gfz-potsdam.de/danschef/arosics/raw/master/docs/images/
           animation_testcase1_zoom_L8_S2_global_coreg_before_after_900x456.gif
Daniel Scheffler's avatar
Daniel Scheffler committed
80

81

Daniel Scheffler's avatar
Fix.    
Daniel Scheffler committed
82
Local co-registration - for spatially variable shifts but a bit slower
83
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
84

Daniel Scheffler's avatar
Daniel Scheffler committed
85
86
87
88
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).
89

Daniel Scheffler's avatar
Daniel Scheffler committed
90
91
Here is an example of the computed shift vectors after filtering false-positives
(mainly due to clouds in the target image):
92

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

95

Daniel Scheffler's avatar
Fix.    
Daniel Scheffler committed
96
For further details check out the `documentation <http://danschef.gitext.gfz-potsdam.de/arosics/doc/>`__!
97

98
99
100
Credits
-------

Daniel Scheffler's avatar
Daniel Scheffler committed
101
AROSICS was developed by Daniel Scheffler (German Research Centre of Geosciences) within the context of the
Daniel Scheffler's avatar
Fix.    
Daniel Scheffler committed
102
`GeoMultiSens <http://www.geomultisens.de/>`__ project funded by the German Federal Ministry of Education and Research
Daniel Scheffler's avatar
Daniel Scheffler committed
103
(project grant code: 01 IS 14 010 A-C).
104

105
This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.
Daniel Scheffler's avatar
Daniel Scheffler committed
106
107
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).
108
109
110

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage
111
.. _coverage: http://danschef.gitext.gfz-potsdam.de/arosics/coverage/
112
113
.. _nosetests: http://danschef.gitext.gfz-potsdam.de/arosics/nosetests_reports/nosetests.html
.. _conda: https://conda.io/docs/
114