Landsat-8 pansharp


#1

Has anyone tried to create or get a Landsat-8 pansharp image through a evalscript JS code?


#2

Perhaps this FAQ can help?
https://www.sentinel-hub.com/faq/how-do-i-manually-pansharpen-specific-band-eg-red


#3

Tried script in your link and below script (both seem to produce comparable images), but still not a “pansharp” image…
let minVal = 0.0;
let maxVal = 0.4;

let viz = new Identity(minVal, maxVal);

function evaluatePixel(samples) {
let sudoPanW = (samples[0].B04 + samples[0].B03 + samples[0].B02 * 0.4) / 2.4;
let ratioW = samples[0].B08 / sudoPanW;
let val = [samples[0].B04 * ratioW, samples[0].B03 * ratioW, samples[0].B02 * ratioW];
return val.map(v => viz.process(v));
}

function setup(ds) {
setInputComponents([ds.B02, ds.B03, ds.B04, ds.B08]);
setOutputComponentCount(3);
}

Some thing along this lines: https://developers.google.com/earth-engine/image_transforms


#4

I found this script to pansharpen L8 (https://gist.github.com/jscarto/599914ac223f21fc45a2).

How can I edit this to work with L8 data in SH Py? I understand some are GEE functions…

// Band combinations
var natural = [‘B4’, ‘B3’, ‘B2’];
var swir = [‘B6’, ‘B5’, ‘B3’];
var urban = [‘B7’, ‘B6’, ‘B4’];
var veg = [‘B5’, ‘B4’, ‘B3’];

// Get a Landsat scene
var scene = ee.Image(‘LANDSAT/LC8_L1T_TOA/LC80450332015263LGN00’);

// Convert the RGB bands to the HSV
var hsv = scene.select(urban).rgbToHsv();

// Add band 8 and convert back to RGB
var sharpened = ee.Image.cat([
hsv.select(‘hue’), hsv.select(‘saturation’), scene.select(‘B8’)
]).hsvToRgb();

// Do a very basic color correction
var imageRGB = sharpened.visualize({min: 0, max:0.18,
gamma:[
1.05, // red
1.08, // green
0.8] // blue
});

// Display the image and zoom to it
Map.addLayer(imageRGB);
Map.centerObject(sharpened, 9);


#5

If you multiply each element in let val = [samples[0].B04 * ratioW, samples[0].B03 * ratioW, samples[0].B02 * ratioW]; with 2.5, you get the same output as in EO Browser for True color - pansharpened layer for Landsat 8.


#6

Thanks, but what’s the logic of multiplying each band by 2.5? I’m little confused and not sure if you want me to edit my script I posted or just use your script?

See here for examples: http://www.geosage.com/highview/features_landsat8.html