Skip to main content

Spectral homogenization of multispectral satellite data.

Project description

SpecHomo - Spectral homogenization of multispectral satellite data

Status

https://gitext.gfz-potsdam.de/geomultisens/spechomo/badges/master/pipeline.svg https://gitext.gfz-potsdam.de/geomultisens/spechomo/badges/master/coverage.svg https://img.shields.io/static/v1?label=Documentation&message=GitLab%20Pages&color=orange https://zenodo.org/badge/241405333.svg

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

Feature overview

SpecHomo is a Python package for spectral homogenization of multispectral satellite data, i.e., for the transformation of the spectral information of one sensor into the spectral domain of another one. This simplifies workflows, increases the reliability of subsequently derived multi-sensor products and may also enable the generation of new products that are not possible with the initial spectral definition.

SpecHomo offers different machine learning techniques for the prediction of the target sensor spectral information. So far, multivariate linear regression, multivariate quadratic regression and random forest regression are implemented. To allow easy comparisons to the most simple homogenization approach, we also implemented linear spectral interpolation.

In contrast to previous spectral homogenization techniques, SpecHomo not only allows to apply a global (band-wise) transformation with the same prediction coefficients for all gray values of a spectral band. It also distinguishes between individual spectral characteristics of different land-cover types by using specifically trained prediction coefficients for various spectral clusters. This increases the accuracy of the predicted spectral information. Apart from that, SpecHomo can not only be used to homogenize already similar spectral definitions - it also allows to predict unilaterally missing bands such as the red edge bands that are not present in Landsat-8 data.

Prediction accuracies and effects to subsequent products such as spectral indices or classifications have been evaluated in the above mentioned paper at the example of Sentinel-2 spectral information predicted from Landsat-8. Algorithm details may also be found there.

Satellite data (surface reflectance) acquired by following sensors may be used as source or target sensor:

  • Landsat-5 TM

  • Landsat-7 ETM+

  • Landsat-8 OLI

  • Sentinel-2A MSI

  • Sentinel-2B MSI

  • RapidEye-5 MSI

  • SPOT-4

  • SPOT-5

SpecHomo features classifiers for homogenization that we trained in the context of the GeoMultiSens project (see the credits section) and for our evaluations related with the above mentioned paper. The initial spectral information for classifier training has been derived from hyperspectral airborne data, spectrally convolved to different sensors. You may also train your own homogenization classifiers specifically optimized to your area of interest. SpecHomo provides the needed functionality for that.

For further details on how to use SpecHomo check out the documentation!

Credits

The spechomo package was developed 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.

History

0.7.0 (2020-10-01)

  • Re-trained LR classifiers.

  • Updated classifiers within test data.

  • Classifiers are no longer stored in the repository (resources directory) but are automatically downloaded on demand at the first run (added corresponding code).

  • Fixed TemporaryDirectory bug in Test_Utils.test_export_classifiers_as_JSON().

  • Re-enabled CI job ‘deploy_pypi’.

0.6.10 (2020-09-25)

  • Fixed an AssertionError within ClusterClassifier_Generator.create_classifiers() caused by nodata pixels in the target sensor reference cube that were not dropped before creating the classifier.

0.6.9 (2020-09-25)

  • Moved matplotlib imports function/class level to avoid static TLS ImportError.

0.6.8 (2020-09-25)

  • Moved scipy imports function/class level to avoid static TLS ImportError.

  • environment_spechomo.yml now ueses Python 3.7+.

  • scikit-learn is now pinned to 0.23.2+ due to classifier recreation.

0.6.7 (2020-09-24)

  • Fixed a DeprecationWarning in case of scikit-learn>=0.23.

  • Dumped regressors now use the second highest dill protocol in order to have some downwards compatibility.

0.6.6 (2020-09-24)

  • Moved imports of scikit-learn to function/class level to avoid static TLS ImportError.

0.6.5 (2020-09-15)

  • Replaced deprecated HTTP links.

0.6.4 (2020-04-09)

  • Fixed test_spechomo_install CI job.

0.6.3 (2020-04-09)

  • Fixed create_github_release CI job.

0.6.2 (2020-04-09)

  • Releases in the GitHub-Mirror-Repository are now created automatically (added create_release_from_gitlab_ci.sh and create_github_release CI job).

  • Added GitHub issue template.

0.6.1 (2020-04-07)

  • Revised CITATION file and .zenodo.json.

0.6.0 (2020-04-04)

  • Added functionality to export existing .dill classifiers to JSON format to make them also usable in different programming environments.

  • The documentation now contains links to the published version of the research paper corresponding to SpecHomo.

  • Changed Zenodo title and description.

  • Fixed fallback algorithm in SpectralHomogenizer.predict_by_machine_learner() and added corresponding tests.

  • SpectralHomogenizer.interpolate_cube() now returns a GeoArray instead of a numpy array.

0.5.0 (2020-02-20)

  • Removed pyresample dependency (not needed anymore).

  • Updated README.rst and setup.py.

  • Pinned geopandas to below version 0.6.3 to fix an incompatibility with pyproj.

  • Updated CI runner setup scripts and CI jobs.

  • Updated LR and QR classifiers.

0.4.0 (2019-10-07)

  • Added Sphinx documentation.

  • Improved usability by adding functions to explore available spectral tansformations.

0.3.0 (2019-09-25)

  • All tests are working properly now.

  • Added license texts.

  • Revised global classifiers.

  • Added harmonization using weighted averaging.

0.2.0 (2019-07-22)

  • A lot of algorithm improvements. Refer to the commits for details.

0.1.0 (2019-03-26)

  • First version working separately from geomultisens.

Project details


Download files

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

Source Distribution

spechomo-0.7.0.tar.gz (450.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page