Sentinel-2 L2A Difference between images at 10m and 5m resolution

Hello SentinelHub Team,

We are trying to figure out why Tiff images for the same AOI look different at 10m resolution and 5m resolution. Specifically, when doing a side-by-side comparison between 10m and 5m version, the 10m one seems to have patches of pixels that are kind of rotating and this can be noticed especially when looking at the broken lines like roads and edges of fields.

Because I’m a new user, it seems I cannot attach the two Tiffs here.
What I can tell you is that I used the request builder for ProcessAPI. It’s a simple request for true color Tiff images, FLOAT32 sample type. I increased the luminosity a bit to prevent a very dark image. Used a simple Python script that sends the request and then writes to file the response content.

This is the request for the 10m resolution version. Changed the width and height for the 5m one.

{
   "input":{
      "bounds":{
         "geometry":{
            "type":"Polygon",
            "coordinates":[
               [
                  [
                     12.074120834739176,
                     54.051486777107314
                  ],
                  [
                     12.074077150427001,
                     54.033802669106564
                  ],
                  [
                     12.103907819637186,
                     54.03382058037906
                  ],
                  [
                     12.103709016791043,
                     54.05150792938981
                  ],
                  [
                     12.074120834739176,
                     54.051486777107314
                  ]
               ]
            ]
         }
      },
      "data":[
         {
            "dataFilter":{
               "timeRange":{
                  "from":"2022-06-03T00:00:00Z",
                  "to":"2022-06-03T23:59:59Z"
               }
            },
            "type":"sentinel-2-l2a"
         }
      ]
   },
   "output":{
      "width":195.0293683827518,
      "height":197.09405590917638,
      "responses":[
         {
            "identifier":"default",
            "format":{
               "type":"image/tiff"
            }
         }
      ]
   },
   "evalscript":"//VERSION=3\n\nfunction setup() {\n  return {\n    input: [\"B02\", \"B03\", \"B04\"],\n    output: { bands: 3 },\n    sampleType: SampleType.FLOAT32\n  };\n}\n\nfunction evaluatePixel(sample) {\n  return [5 * sample.B04, 5* sample.B03, 5 * sample.B02];\n}"
} 

Can you think of any reason why we have this difference between 10m and 5m? Thank you!

Hi @de_accountspayable ,

When requesting data using Sentinel Hub, the data goes through the resampling process. The default option is the nearest neighbour interpolation.

The images look different from 10m resolution to 5m resolution because the grid of your AOI is not aligned to the original tile (so there must be a resampling process), and the grid of your AOI is finer with a 5m resolution than a 10m resolution. This means that the values used to perform the resampling could be different.

Hi @chung.horng ,

I think I understand now why this occurs.
Is there any way to minimise this difference and improve the 10m resolution images? I’m thinking that bicubic resampling might help here. What do you think?

Thank you for your help!

Hi @de_accountspayable ,

Using bicubic for resampling does help mitigate the rotating effect. However, you can’t “improve” the resolution by resampling. For example, when using the nearest neighbour, you will get 4 5m resolution pixels having the same value as the nearest 10m resolution pixel (see figure below). The resolution is not improved because it is a process of making up data via interporlation.
resampling

If you are interested in satellite imagery with higher resolution, you might want to look into commercial data which provides resolution up to 0.5m.