Breve:
Quero alterar a resolução de uma varredura e suavizar a rampa cinza, como mostrado nas imagens abaixo. A preferência é usar GDAL, PIL ou Numpy.
Descrição:
estou transformando pontos em rasters com uma resolução de saída de 20 metros na Biblioteca Geoestatística de Alto Desempenho . Não quero alterar a resolução de saída porque o tempo de interpolação aumenta exponencialmente.
Com esta resolução, a imagem de saída é feia (pixelizada e com alias). Não sei se está conceitualmente correto, mas quero que a imagem seja mais suave, como no exemplo abaixo. É algo como 'reinterpolar' a imagem para uma melhor resolução. Estou usando python, então minhas preferências são GDAL, Python Imaging Library ou Numpy. A resposta pode ser teórica, como apontar o nome do algoritmo ou o conceito desse tipo de operação.
Fonte:
Destino:
Resultados de edição com spline cúbico gdalwarp:
Respostas:
1) Da maneira mais difícil: com um pouco de codificação, é (relativamente) fácil implementar a interpolação bilinear para obter uma nova amostragem decente.
2) O caminho mais fácil: use o GDAL conforme explicado neste post anterior do GISSE , mas ao contrário (diminuindo o tamanho do pixel).
fonte
Use GDALReprojectImage , que é exposto no Python:
Para uma interpolação suave, use métodos bilineares ou cúbicos. Essa função é incômoda, pois não aceita argumentos de palavras-chave; portanto, você precisa encontrar a posição:
Provavelmente a parte complicada é a configuração
dst_ds
, que precisa ter uma geotransformação semelhantesrc_ds
, mas com tamanhos de célula modificados.fonte
GRA_CubicSpline
(tente isso primeiro) vs.GRA_Cubic
(convolução).Para suavizar as variações, você precisa de um filtro passa-baixo. Você pode escrever o seu próprio usando GDAL, ou há um usando GRASS. Eu não tentei, mas aqui está um guia http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Exercise_31
Você pode fazer uma amostra de sua varredura primeiro antes de aplicar o filtro passa-baixo para obter uma saída com melhor resolução.
fonte
você pode usar um filtro de classificação / mediana com raio = 5, ou seja, tamanho do tamanho do kernel = 11 (para cada canal rgb).
fonte