Smoothing / reinterpolating raster with GDAL?


15

Breve:
voglio cambiare la risoluzione di un raster e levigare la rampa grigia come mostrato nelle immagini qui sotto. La preferenza è usare GDAL, PIL o Numpy.

Descrizione:
Sto trasformando i punti in raster con una risoluzione di uscita di 20 metri con la libreria geostatistica ad alte prestazioni . Non voglio cambiare la risoluzione di output perché il tempo di interpolazione aumenta esponenzialmente.
Con questa risoluzione l'immagine di output è brutta (pixelata e con alias). Non so se sia concettualmente corretto, ma voglio che l'immagine sia più liscia come nell'esempio qui sotto. È qualcosa come "reinterpolare" l'immagine in una migliore risoluzione. Sto usando Python, quindi le mie preferenze sono GDAL, Python Imaging Library o Numpy. La risposta potrebbe essere teorica, come evidenziare il nome dell'algoritmo o il concetto di questo tipo di operazione.

Fonte:
inserisci qui la descrizione dell'immagine

Destinazione:
inserisci qui la descrizione dell'immagine

MODIFICA Risultati con spline cubiche di gdalwarp:
inserisci qui la descrizione dell'immagine


Non sto ottenendo risultati altrettanto buoni dell'immagine "post" che hai pubblicato con gdalwarp. Puoi pubblicare il comando esatto che hai usato?
Concedi Humphries il

Risposte:



5

Usa GDALReprojectImage , che è esposto in Python:

from osgeo import gdal
help(gdal.ReprojectImage)

Per l'interpolazione regolare, utilizzare metodi bilineari o cubici. Questa funzione è scomoda, dal momento che non accetta argomenti di parole chiave, quindi è necessario trovare la posizione:

gdal.ReprojectImage(src_ds, dst_ds, None, None, gdal.GRA_Bilinear)

Probabilmente si sta preparando la parte difficile dst_ds, che deve avere una geotrasforma simile src_ds, ma con dimensioni delle celle modificate.


+1. Non sono sicuro di quale sia il suo metodo "cubico". Se si tratta di una spline cubica, sarebbe probabilmente più liscia di quella bilineare; ma se è una convoluzione cubica, sarà meno liscia di quella bilineare. Una spline cubica sarebbe l'ideale.
whuber

1
@whuber true, ci sono due opzioni di algoritmi "cubici" : GRA_CubicSpline(provare prima) vs. GRA_Cubic(convoluzione).
Mike T

0

Per appianare le variazioni, è necessario un filtro passa-basso. Puoi scriverne uno tuo usando GDAL, oppure ce n'è uno che usa GRASS. Non l'ho provato, ma ecco una guida http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Exercise_31

Potresti voler campionare il tuo raster prima di applicare il filtro passa-basso per ottenere una migliore risoluzione.


1
Non penso che l'OP voglia appianare le variazioni: altrimenti, perché iniziare con lo sforzo di kriging? Tutti i suoi benefici andrebbero persi. Invece, come suggeriscono le immagini, la domanda richiede una procedura di ricampionamento uniforme per creare una versione a risoluzione più elevata dei risultati già ottenuti (che è un modo intelligente ed efficiente per accelerare il kriging).
whuber

-1

puoi usare un filtro di rango / mediana con raggio = 5, cioè dimensione della dimensione del kernel = 11, (per ogni canale rgb).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.