starfm4py

The STARFM fusion model for Python

https://github.com/nmileva/starfm4py

Science Score: 31.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.6%) to scientific vocabulary

Keywords

earth-observation image-fusion remote-sensing sentinel-2 sentinel-3

Scientific Fields

Computer Science Computer Science - 44% confidence
Last synced: 6 months ago · JSON representation ·

Repository

The STARFM fusion model for Python

Basic Info
  • Host: GitHub
  • Owner: nmileva
  • License: gpl-3.0
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 91.8 KB
Statistics
  • Stars: 140
  • Watchers: 2
  • Forks: 33
  • Open Issues: 1
  • Releases: 0
Topics
earth-observation image-fusion remote-sensing sentinel-2 sentinel-3
Created almost 7 years ago · Last pushed about 3 years ago
Metadata Files
Readme License Citation

README.md

STARFM for Python (starfm4py)

Remote sensing image fusion allows the spectral, spatial and temporal enhancement of images. New techniques for image fusion are constantly emerging shifting the focus from pan-sharpening to spatiotemporal fusion of data originating from different sensors and platforms. However, the application of image fusion in the field of Earth observation still remains limited. The number and complexity of the different techniques available today can be overwhelming thus preventing users from fully exploiting the potential of fusion products.

The aim of this study is to make fusion products more accessible to users by providing them with a simple tool for spatiotemporal fusion. This tool will contribute to the better exploitation of data from available sensors making possible to bring the images to the spectral, spatial and temporal resolution required by the user. The fusion algorithm implemented in the tool is based on the spatial and temporal adaptive reflectance fusion model (STARFM) – a well established fusion technique in the field of remote sensing often used as benchmark by other algorithms.

How to cite?

If you use this code for published work, please cite it using the reference below or the BibTex file:

Mileva, N., Mecklenburg, S. & Gascon, F. (2018). New tool for spatiotemporal image fusion in remote sensing - a case study approach using Sentinel-2 and Sentinel-3 data. In Bruzzone, L. & Bovolo, F. (Eds.), SPIE Proceedings Vol. 10789: Image and Signal Processing for Remote Sensing XXIV. Berlin, Germany: International Society for Optics and Photonics. doi: 10.1117/12.2327091; https://doi.org/10.1117/12.2327091

A copy of the paper can be downloaded here: https://opus.bibliothek.uni-augsburg.de/opus4/frontdoor/index/index/docId/78805

Installation

It is recommended to use the Anaconda distribution for Python 3. Run the below code from the Anaconda prompt by replacing myenv with a name of your choice. For the full list of requirements, check the requirements file. conda create -n myenv dask rasterio zarr matplotlib

Usage

STARFM was initially developed to blend Landsat and MODIS images. The current implementation is not sensor specific and can be used for other sensor pairs such as Sentinel-2 and Sentinel-3 (OLCI). However, certain degree of similarity between the images is needed before they can be blended. The most common harmonization steps are: + atmospheric correction - in case a surface reflectance product is not already available, the atmospheric correction will be the first step to be performed; the algorithm to be used depends on the satellite sensor; popular atmospheric correction models for Sentinel-2 and Sentinel-3 (OLCI) are iCor, Sen2Cor, SMAC, etc. + cloud masking - cloud pixels should be excluded; + re-projection - all images should be in the same cartographic coordinate system (e.g. WGS84 UTM 35N); + resampling to same pixel size, that is usually the pixel size of the fine resolution image; + co-registration of the images - the images should not only have the exact same extent but they should also match on (sub-)pixel level; useful tools for co-registration are AROSICS, GeFolki, eo-learn, pyelastix, etc. + bandpass adjustment (not mandatory); + BRDF normalization (not mandatory);

For an example of usage check test.py. To apply the algorithm on other images, make sure to adjust the variables in parameters.py.

Owner

  • Name: Nikolina Mileva
  • Login: nmileva
  • Kind: user
  • Location: Augsburg, Germany
  • Company: University of Augsburg

Research Assistant

Citation (citation.bib)

@proceeding{
author = { Nikolina  Mileva,Susanne  Mecklenburg,Ferran  Gascon},
title = {New tool for spatio-temporal image fusion in remote sensing: a case study approach using Sentinel-2 and Sentinel-3 data},
volume = {10789},
year = {2018},
doi = {10.1117/12.2327091},
URL = {https://doi.org/10.1117/12.2327091},
eprint = {}
}

GitHub Events

Total
  • Watch event: 12
Last Year
  • Watch event: 12

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 69
  • Total Committers: 1
  • Avg Commits per committer: 69.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 2
  • Committers: 1
  • Avg Commits per committer: 2.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Nikolina Mileva 4****a 69

Issues and Pull Requests

Last synced: almost 2 years ago

All Time
  • Total issues: 11
  • Total pull requests: 1
  • Average time to close issues: 7 months
  • Average time to close pull requests: 1 minute
  • Total issue authors: 9
  • Total pull request authors: 1
  • Average comments per issue: 1.09
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • dele75 (2)
  • gunjanthakuria (2)
  • suffenjoy (1)
  • firaterdem (1)
  • daisy0413 (1)
  • chenxinnum1 (1)
  • chexianghong (1)
  • amiresmaeili79 (1)
  • WongYinJ (1)
Pull Request Authors
  • nmileva (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

requirements.txt pypi
  • affine =2.4.0=pyhd8ed1ab_0
  • asciitree =0.3.3=py_2
  • attrs =22.2.0=pyh71513ae_0
  • blosc =1.21.3=hdccc3a2_0
  • bokeh =2.4.3=pyhd8ed1ab_3
  • boost-cpp =1.78.0=h9f4b32c_1
  • brotli =1.0.9=hcfcfb64_8
  • brotli-bin =1.0.9=hcfcfb64_8
  • brotlipy =0.7.0=py311ha68e1ae_1005
  • bzip2 =1.0.8=h8ffe710_4
  • ca-certificates =2022.12.7=h5b45459_0
  • cairo =1.16.0=hd694305_1014
  • certifi =2022.12.7=pyhd8ed1ab_0
  • cffi =1.15.1=py311h7d9ee11_3
  • cfitsio =4.2.0=h9ebe7e4_0
  • click =8.1.3=win_pyhd8ed1ab_2
  • click-plugins =1.1.1=py_0
  • cligj =0.7.2=pyhd8ed1ab_1
  • cloudpickle =2.2.1=pyhd8ed1ab_0
  • colorama =0.4.6=pyhd8ed1ab_0
  • contourpy =1.0.7=py311h005e61a_0
  • cryptography =39.0.1=py311h28e9c30_0
  • curl =7.87.0=h68f0423_0
  • cycler =0.11.0=pyhd8ed1ab_0
  • cytoolz =0.12.0=py311ha68e1ae_1
  • dask =2023.1.1=pyhd8ed1ab_0
  • dask-core =2023.1.1=pyhd8ed1ab_0
  • distributed =2023.1.1=pyhd8ed1ab_0
  • entrypoints =0.4=pyhd8ed1ab_0
  • expat =2.5.0=h1537add_0
  • fasteners =0.17.3=pyhd8ed1ab_0
  • font-ttf-dejavu-sans-mono =2.37=hab24e00_0
  • font-ttf-inconsolata =3.000=h77eed37_0
  • font-ttf-source-code-pro =2.038=h77eed37_0
  • font-ttf-ubuntu =0.83=hab24e00_0
  • fontconfig =2.14.2=hbde0cde_0
  • fonts-conda-ecosystem =1=0
  • fonts-conda-forge =1=0
  • fonttools =4.38.0=py311ha68e1ae_1
  • freetype =2.12.1=h546665d_1
  • freexl =1.0.6=h67ca5e6_1
  • fsspec =2023.1.0=pyhd8ed1ab_0
  • geos =3.11.1=h1537add_0
  • geotiff =1.7.1=h720ab47_5
  • gettext =0.21.1=h5728263_0
  • glib =2.74.1=h12be248_1
  • glib-tools =2.74.1=h12be248_1
  • gst-plugins-base =1.22.0=h001b923_0
  • gstreamer =1.22.0=h6b5321d_0
  • hdf4 =4.2.15=h1b1b6ef_5
  • hdf5 =1.12.2=nompi_h57737ce_101
  • heapdict =1.0.1=py_0
  • icu =70.1=h0e60522_0
  • idna =3.4=pyhd8ed1ab_0
  • intel-openmp =2023.0.0=h57928b3_25922
  • jinja2 =3.1.2=pyhd8ed1ab_1
  • jpeg =9e=h8ffe710_2
  • kealib =1.5.0=h61be68b_0
  • kiwisolver =1.4.4=py311h005e61a_1
  • krb5 =1.20.1=heb0366b_0
  • lcms2 =2.14=ha5c8aab_1
  • lerc =4.0.0=h63175ca_0
  • libaec =1.0.6=h63175ca_1
  • libblas =3.9.0=16_win64_mkl
  • libbrotlicommon =1.0.9=hcfcfb64_8
  • libbrotlidec =1.0.9=hcfcfb64_8
  • libbrotlienc =1.0.9=hcfcfb64_8
  • libcblas =3.9.0=16_win64_mkl
  • libclang =15.0.7=default_h77d9078_0
  • libclang13 =15.0.7=default_h77d9078_0
  • libcurl =7.87.0=h68f0423_0
  • libdeflate =1.17=hcfcfb64_0
  • libffi =3.4.2=h8ffe710_5
  • libgdal =3.6.2=h060c9ed_3
  • libglib =2.74.1=he8f3873_1
  • libhwloc =2.8.0=h039e092_1
  • libiconv =1.17=h8ffe710_0
  • libkml =1.3.0=hf2ab4e4_1015
  • liblapack =3.9.0=16_win64_mkl
  • libnetcdf =4.8.1=nompi_h8c042bf_106
  • libogg =1.3.4=h8ffe710_1
  • libpng =1.6.39=h19919ed_0
  • libpq =15.1=ha9684e8_3
  • librttopo =1.1.0=he22b5cd_12
  • libspatialite =5.0.1=h07bf483_22
  • libsqlite =3.40.0=hcfcfb64_0
  • libssh2 =1.10.0=h9a1e1f7_3
  • libtiff =4.5.0=hf8721a0_2
  • libvorbis =1.3.7=h0e60522_0
  • libwebp-base =1.2.4=h8ffe710_0
  • libxcb =1.13=hcd874cb_1004
  • libxml2 =2.10.3=hc3477c8_0
  • libzip =1.9.2=h519de47_1
  • libzlib =1.2.13=hcfcfb64_4
  • locket =1.0.0=pyhd8ed1ab_0
  • lz4 =4.3.2=py311haddf500_0
  • lz4-c =1.9.4=hcfcfb64_0
  • m2w64-gcc-libgfortran =5.3.0=6
  • m2w64-gcc-libs =5.3.0=7
  • m2w64-gcc-libs-core =5.3.0=7
  • m2w64-gmp =6.1.0=2
  • m2w64-libwinpthread-git =5.0.0.4634.697f757=2
  • markupsafe =2.1.2=py311ha68e1ae_0
  • matplotlib =3.6.3=py311h1ea47a8_0
  • matplotlib-base =3.6.3=py311h6e989c2_0
  • mkl =2022.1.0=h6a75c08_874
  • msgpack-python =1.0.4=py311h005e61a_1
  • msys2-conda-epoch =20160418=1
  • munkres =1.1.4=pyh9f0ad1d_0
  • numcodecs =0.11.0=py311h12c1d0e_1
  • numpy =1.24.2=py311h0b4df5a_0
  • openjpeg =2.5.0=ha2aaf27_2
  • openssl =3.0.8=hcfcfb64_0
  • packaging =23.0=pyhd8ed1ab_0
  • pandas =1.5.3=py311hf63dbb6_0
  • partd =1.3.0=pyhd8ed1ab_0
  • pcre2 =10.40=h17e33f8_0
  • pillow =9.4.0=py311h76d9071_1
  • pip =23.0=pyhd8ed1ab_0
  • pixman =0.40.0=h8ffe710_0
  • ply =3.11=py_1
  • poppler =22.12.0=h183ae7b_1
  • poppler-data =0.4.12=hd8ed1ab_0
  • postgresql =15.1=hd87cd2b_3
  • proj =9.1.0=heca977f_1
  • psutil =5.9.4=py311ha68e1ae_0
  • pthread-stubs =0.4=hcd874cb_1001
  • pthreads-win32 =2.9.1=hfa6e2cd_3
  • pycparser =2.21=pyhd8ed1ab_0
  • pyopenssl =23.0.0=pyhd8ed1ab_0
  • pyparsing =3.0.9=pyhd8ed1ab_0
  • pyqt =5.15.7=py311h125bc19_3
  • pyqt5-sip =12.11.0=py311h12c1d0e_3
  • pysocks =1.7.1=pyh0701188_6
  • python =3.11.0=hcf16a7b_0_cpython
  • python-dateutil =2.8.2=pyhd8ed1ab_0
  • python_abi =3.11=3_cp311
  • pytz =2022.7.1=pyhd8ed1ab_0
  • pyyaml =6.0=py311ha68e1ae_5
  • qt-main =5.15.8=h720456b_6
  • rasterio =1.3.4=py311hd28ea1e_0
  • setuptools =67.1.0=pyhd8ed1ab_0
  • sip =6.7.7=py311h12c1d0e_0
  • six =1.16.0=pyh6c4a22f_0
  • snappy =1.1.9=hfb803bf_2
  • snuggs =1.4.7=py_0
  • sortedcontainers =2.4.0=pyhd8ed1ab_0
  • sqlite =3.40.0=hcfcfb64_0
  • tbb =2021.7.0=h91493d7_1
  • tblib =1.7.0=pyhd8ed1ab_0
  • tiledb =2.13.2=h3132609_0
  • tk =8.6.12=h8ffe710_0
  • toml =0.10.2=pyhd8ed1ab_0
  • toolz =0.12.0=pyhd8ed1ab_0
  • tornado =6.2=py311ha68e1ae_1
  • typing_extensions =4.4.0=pyha770c72_0
  • tzdata =2022g=h191b570_0
  • ucrt =10.0.22621.0=h57928b3_0
  • urllib3 =1.26.14=pyhd8ed1ab_0
  • vc =14.3=hb6edc58_10
  • vs2015_runtime =14.34.31931=h4c5c07a_10
  • wheel =0.38.4=pyhd8ed1ab_0
  • win_inet_pton =1.1.0=pyhd8ed1ab_6
  • xerces-c =3.2.4=h63175ca_1
  • xorg-libxau =1.0.9=hcd874cb_0
  • xorg-libxdmcp =1.1.3=hcd874cb_0
  • xz =5.2.6=h8d14728_0
  • yaml =0.2.5=h8ffe710_2
  • zarr =2.13.6=pyhd8ed1ab_0
  • zict =2.2.0=pyhd8ed1ab_0
  • zlib =1.2.13=hcfcfb64_4
  • zstd =1.5.2=h12be248_6