Git Product home page Git Product logo

natural-color's Introduction

Natural color representation of Sentinel-2 data: additional resources

This repository contains additional resources for our paper:

     B. Sovdat, M. Kadunc, M. Batič, G. Milčinski, Natural color representation of Sentinel-2 data. Submitted.

Introduction

The true color image — defined as an image that strives to offer a natural color rendition of a scene — is one of the most widely used Earth observation products. In the context of satellite imagery, the true color should represent spectral responses of the satellite bands so as to match the color perceived by the human eye. However, most true color satellite products fail to achieve this.

When it comes to Sentinel-2 — an optical mission part of European Space Agency's Copernicus Program — the state-of-the-art true color products map Sentinel-2 MSI bands B4, B3, and B2 directly to sRGB components R, G, and B, respectively (sometimes with additional gain and gamma corrections in the sRGB space). This results in images with overly saturated and sometimes unrealistic colors.

Highlights of our contributions:

  • We define the natural color product as the one matching the color perceived by the human eye.
  • We propose two approaches for designing efficient algorithms for computing natural color.
  • We implement and demonstrate several efficient algorithms for computing the natural color.
  • We advocate correct sRGB encoding when preparing images for digital display.
  • We urge that levels adjustment always be applied in the CIE LAB space.

The images below showcase the default true color (left) and the natural color (right) that we propose in our work.

True color Natural color
Carrizo Plain National Monument Carrizo Plain National Monument
Izmir, Turkey Izmir, Turkey
Amposta, Spain Amposta, Spain
Venice, Italy Venice, Italy

List of locations

The table belows is a listing of Sentinel-2 data used throughout the paper. Locations, their acquisition dates and links to EO Browser where user can reproduce the results from the article using JavaScript algorithms provided in the supplementary material.

Location name Level Date Coordinates EO Browser
Mount Bromo (Indonesia) 1C August 9, 2016 7.96° S 113.00° E URL
Sand dunes (Saudi Arabia) 1C September 7, 2017 19.57° N 48.63° E URL
Venice (Italy) 1C July 3, 2017 45.50° N 12.20° E URL
Carrizo Plain (California, USA) 1C March 28, 2017 35.05° N 120.00° W URL
Amposta (Spain) 1C August 4, 2017 40.67° N 0.58° E URL
Izmir (Turkey) 1C September 7, 2017 38.54° N 27.08° E URL
Venice (Italy) 2A July 3, 2017 45.50° N 12.20° E URL
Amposta (Spain) 2A August 4, 2017 40.67° N 0.58° E URL

Interactive examples

You can try out the algorithms we've proposed via Sentinel Playground and EO Browser applications which run atop our interactive Sentinel-Hub platform.

All natural-color algorithms have been implemented as ready-to-use custom scripts (under ./scripts/) that you can copy-and-paste into Sentinel Playground and/or EO Browser. Needless to say, you can also fiddle with the code!

For convenience we've collected the algorithms into a table with links where you can view them interactively in Sentinel Playground and/or EO Browser.

List of procedures

The table below summarizes each of the procedures used in the paper.

Procedure Shorthand description Custom script
I DN -> sRGB true_color.js
II DN -> S2 -> sRGB*_lin -> sRGB_8bit aster_3x4_naive_gamma.js
III DN -> S2 -> XYZ -> LAB* -> XYZ -> sRGB_lin -> sRGB_8bit aster_3x4_proper_gamma.js
IV DN -> S2 -> XYZ -> sRBG_lin -> sRGB_8bit aster_3x4_no_gamma
V DN -> S2 -> XYZ -> sRGB*_lin -> sRGB_8bit aster_3x3_naive_gamma_I.js
VI DN -> S2 -> XYZ -> sRGB*_lin -> sRGB_8bit aster_3x3_naive_gamma.js
VII DN -> S2 -> XYZ -> LAB* -> XYZ -> sRGB_lin -> sRGB_8bit aster_3x3_proper_gamma.js
VIII DN -> S2 -> XYZ -> sRGB_lin -> sRGB_8bit aster_3x3_no_gamma.js
IX DN -> S2 -> XYZ -> sRGB*_lin -> sRGB_8bit basis_3x4_naive_gamma.js
X DN -> S2 -> XYZ -> LAB* -> XYZ -> sRGB_lin -> sRGB_8bit basis_3x4_proper_gamma.js
XI DN -> S2 -> XYZ -> sRGB_lin -> sRGB_8bit basis_3x4_no_gamma.js
XII DN -> S2 -> XYZ -> sRGB*_lin -> sRGB_8bit default_3x3_naive_gamma.js
XIII DN -> S2 -> XYZ -> LAB* -> XYZ -> sRGB_lin -> sRGB_8bit default_3x3_proper_gamma.js
XIV DN -> S2 -> XYZ -> sRGB_lin -> sRGB_8bit default_3x3_no_gamma.js

Data

We used the ASTER spectral library extensively for our experiments. The file used_aster_spectra.txt contains the list of ASTER spectra used for fitting the mappings with least-squares method (described in detail in Subsection 2.1 of the paper).

natural-color's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

natural-color's Issues

DN Scaling?

Hi, I'm trying to reproduce your aster_3x3_proper_gamma code in Python with rasterio and numpy. I'm wondering, is there a scaling of bands 2/3/4 (values 0-10000) applied before running your code? I don't know how it works in Sentinel Hub, e.g. if the band values have been scaled to 0-256 or something like that.

DN -> S2 coefficients

Dear SentinelHub team,

were do the coefficients for the DN -> S2 conversion come from?
E.g., "return [0.986B01, B02, 0.939B03, 0.779*B04]".
Thank you for your answer.
Best regards,

Luca

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.