Kurz:
Ich möchte die Auflösung eines Rasters ändern und die graue Rampe wie im Bild unten gezeigt glätten. Bevorzugt werden GDAL, PIL oder Numpy verwendet.
Beschreibung:
Mit der High Performance Geostatistical Library kann ich Punkte in Raster mit einer Ausgabeauflösung von 20 Metern kriggen . Ich möchte die Ausgabeauflösung nicht ändern, da die Interpolationszeit exponentiell ansteigt.
Bei dieser Auflösung ist das Ausgabebild unschön (pixelig und mit Alias). Ich weiß nicht, ob es konzeptionell korrekt ist, aber ich möchte, dass das Bild glatter ist als im folgenden Beispiel. Es ist so etwas wie "Neuinterpolieren" des Bildes in eine bessere Auflösung. Ich verwende Python, daher sind meine Einstellungen GDAL, Python Imaging Library oder Numpy. Die Antwort könnte theoretisch sein, wie das Hervorheben des Algorithmusnamens oder des Konzepts dieser Art von Operation.
Quelle:
Ziel:
Ergebnisse mit GDALWARP Cubic Spline bearbeiten:
Antworten:
1) Der schwierige Weg: Mit ein wenig Codierung ist es (relativ) einfach, bilineare Interpolation zu implementieren , um ein ordentliches Resampling zu erreichen.
2) Der einfache Weg: Verwenden Sie GDAL wie in diesem vorherigen GISSE-Beitrag beschrieben , jedoch in umgekehrter Reihenfolge (Verkleinern der Pixelgröße).
quelle
Verwenden Sie GDALReprojectImage , das in Python verfügbar gemacht wird:
Verwenden Sie für die glatte Interpolation bilineare oder kubische Methoden. Diese Funktion ist umständlich, da sie keine Schlüsselwortargumente benötigt. Daher müssen Sie die Position finden:
Wahrscheinlich ist der schwierige Teil die Einrichtung
dst_ds
, für die eine ähnliche Geotransformation erforderlich istsrc_ds
, jedoch mit geänderten Zellgrößen.quelle
GRA_CubicSpline
(versuchen Sie dies zuerst) vs.GRA_Cubic
(Faltung).Um die Schwankungen auszugleichen, benötigen Sie einen Tiefpassfilter. Sie können Ihre eigenen mit GDAL schreiben oder es gibt eine mit GRASS. Ich habe es nicht ausprobiert, aber hier ist eine Anleitung http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Exercise_31
Möglicherweise möchten Sie Ihr Raster zuerst aufrüsten, bevor Sie den Tiefpassfilter anwenden, um eine Ausgabe mit besserer Auflösung zu erhalten.
quelle
Sie können einen Rang- / Medianfilter mit einem Radius von 5, dh einer Kernelgröße von 11 (für jeden RGB-Kanal) verwenden.
quelle