¿Suavizar / reinterpolar ráster con GDAL?

15

Corto:
Quiero cambiar la resolución de una trama y suavizar la rampa gris como se muestra en las siguientes imágenes. La preferencia es usar GDAL, PIL o Numpy.

Descripción:
Estoy acumulando puntos en rásteres con una resolución de salida de 20 metros con la Biblioteca geoestadística de alto rendimiento . No quiero cambiar la resolución de salida porque el tiempo de interpolación aumenta exponencialmente.
Con esta resolución, la imagen de salida es fea (pixelada y con alias). No sé si es conceptualmente correcto, pero quiero que la imagen sea más suave como en el siguiente ejemplo. Es algo así como "reinterpolar" la imagen a una mejor resolución. Estoy usando python, por lo que mis preferencias son GDAL, Python Imaging Library o Numpy. La respuesta podría ser teórica, como señalar el nombre del algoritmo o el concepto de este tipo de operación.

Fuente:

Destino:

EDITAR resultados con spline cúbico gdalwarp:

    
pregunta Pablo 31.07.2012 - 16:13

4 respuestas

7

1) La manera difícil: con un poco de codificación es (relativamente) fácil de implementar interpolación bilineal para lograr una buena remuestreo.

2) La forma fácil: use GDAL como se explicó en esta publicación anterior de GISSE , pero a la inversa (disminuyendo el tamaño de píxel).

    
respondido por el WolfOdrade 31.07.2012 - 17:50
5

Utilice GDALReprojectImage , que se expone en Python:

from osgeo import gdal
help(gdal.ReprojectImage)

Para una interpolación suave, utilice métodos bilineales o cúbicos. Esta función es incómoda, ya que no toma argumentos de palabras clave, por lo tanto, debe encontrar la posición:

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

Probablemente, la parte difícil es configurar dst_ds , que necesita tener una geotransformación similar a src_ds , pero con tamaños de celda modificados.

    
respondido por el Mike T 31.07.2012 - 21:20
0

Para suavizar las variaciones, necesita un filtro de paso bajo. Puede escribir su propio GDAL, o hay uno usando GRASS. No lo he probado, pero aquí hay una guía enlace

Es posible que desee muestrear su ráster antes de aplicar el filtro de paso bajo para obtener una mejor resolución de salida.

    
respondido por el spatialthoughts 31.07.2012 - 17:53
-1

puede usar un filtro de rango / mediana con radio = 5, es decir, tamaño del kernel = 11, (para cada canal rgb).

    
respondido por el yildirim 05.07.2018 - 23:50

Lea otras preguntas en las etiquetas