Skip to main content

SuperResolution of Sentinel2 imagery.

Project description

Super-resolution for Sentinel 2 files.

Provides a function to Super-sample the 20m bands of the Sentinel 2 imagery to 10m.

It works by using an inception res-net style Deep Learning model trained on 200 sites randomly selected around the globe. With at least 50% of locations containing urban areas. For each location, twelve training images were collected spread out across different seasons.

The model itself is trained by using the RGB bands to sharpen the NIR band. First the resampled NIR band is transposed to the mean values of the RGB bands, secondly the network supersamples the NIR band, and thirdly the network mean-matches the low resolution image to the generated high-resolution image. To super-sample the other bands, they are substituted with the NIR band. The model has been purposely made small to ensure easy deployment.

# Setup
!pip install s2super
from s2super import super_sample

# Constants
YEAR = 2021
MONTHS = 1
AOI = [55.67576, 12.56902] # Copenhagen

# Example get Sentinel 2 data function.
data = get_data_from_latlng(AOI, year=YEAR, months=MONTHS)[0] 

# Fast is about 2.5 times faster and almost as good.
super_sampled = super_sample(data, method="fast", fit_data=False)

Super-sampled bands: B05, B06, B07, B8A, B11, B12

super_sample

Super-sample a Sentinel 2 image. The source can either be a NumPy array of the bands, or a .safe file.

Args:

data (str/np.ndarray): The image to supersample. Either .safe file or NumPy array.

Kwargs:

indices (dict): If the input is not a .safe file, a dictionary with the band names and the indices in the NumPy array must be proved. It comes in the form of { "B02": 0, "B03": 1, ... } (Default: 10m first, then 20m)
method (str): Either fast or accurate. If fast, uses less overlaps and weighted average merging. If accurate, uses more overlaps and the mad_merge algorithm (Default: "fast")
fit_data (bool): Should the deep learning model be fitted with the data? Improves accuracy, but takes around 1m to fit on colab. (Default: True)
fit_epochs (int): If the model is refitted, for how many epochs should it run? (Default: 5)
verbose (bool): If True, print statements will update on the progress (Default: True)
normalise (bool): If the input data should be normalised. Leave this True, unless it has already been done. The model expects sentinel 2 l2a data normalised by dividing by 10000.0 (Default: True)
preloaded_model (None/tf.model): Allows preloading the model, useful if applying the super_sampling within a loop. (Default: None)

Returns:

(np.ndarray): A NumPy array with the supersampled data.

Cite

Fibaek, C.S, Super-sample Sentinel 2, (2022), GitHub repository, https://github.com/casperfibaek/super_res_s2

Developed at the European Space Agency's Φ-lab.

Build

python -m build; python -m twine upload dist/*

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

s2super-0.0.8.tar.gz (28.2 MB view details)

Uploaded Source

Built Distribution

s2super-0.0.8-py3-none-any.whl (28.2 MB view details)

Uploaded Python 3

File details

Details for the file s2super-0.0.8.tar.gz.

File metadata

  • Download URL: s2super-0.0.8.tar.gz
  • Upload date:
  • Size: 28.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.12

File hashes

Hashes for s2super-0.0.8.tar.gz
Algorithm Hash digest
SHA256 5417ad0f7c43f007ecd657f9f12cf64f8eaf9a772db0773aa3d7bfb94f077350
MD5 ee1eb4d882302c0905aa43e4bca93351
BLAKE2b-256 da847bbf5b3e4b135417ef35eb11fe9bf9afc52d9a99ab3e2a95e9fd55522a5e

See more details on using hashes here.

File details

Details for the file s2super-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: s2super-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 28.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.12

File hashes

Hashes for s2super-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 f4028bde4c7444e909c6b31234d6634aa939770bbed8378f1a4b6e5b689dd9ac
MD5 616a7d513af961521e043d6c578aa082
BLAKE2b-256 9431598b751ee9b78e5d4fb3967b3081d02b67c8e30a0ccde1fbba058e7dc6c1

See more details on using hashes here.

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