使用GDAL平滑/重新插值栅格吗?


15

简短:
我想更改光栅的分辨率并平滑灰色渐变,如下面的图像所示。首选项是使用GDAL,PIL或Numpy。

说明:
我正在使用High Performance Geostatistical Library将该点克里格化为输出分辨率为20米的栅格。我不想更改输出分辨率,因为插值时间呈指数增长。
在这种分辨率下,输出图像很难看(像素化和混叠)。我不知道它在概念上是否正确,但是我希望图像像下面的示例一样更平滑。就像将图像“重新插值”为分辨率更高的图像一样。我正在使用python,因此我的偏好设置是GDAL,Python Imaging Library或Numpy。答案可能是理论上的,例如指出算法名称或这种操作的概念。

资源:
在此处输入图片说明

目的地:
在此处输入图片说明

使用gdalwarp三次样条的编辑结果:
在此处输入图片说明


我用gdalwarp发布的“后”图像效果不佳。您可以发布您使用的确切命令吗?
Grant Humphries,2015年

Answers:



5

使用GDALReprojectImage,它在Python中公开:

from osgeo import gdal
help(gdal.ReprojectImage)

对于平滑插值,请使用双线性或三次方法。此函数很尴尬,因为它不使用关键字参数,因此您需要找到位置:

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

可能最棘手的部分是设置dst_ds,它需要具有类似于的地理转换src_ds,但单元大小已更改。


+1。我不确定它的“立方”方法是什么。如果是三次样条,则它可能比双线性更平滑;但是,如果是三次卷积,则其平滑性将不如双线性。三次样条将是理想的。
ub

1
@whuber是的,有两个“三次”算法选项:(GRA_CubicSpline首先尝试)与GRA_Cubic(卷积)。
Mike T

0

要平滑变化,您需要一个低通滤波器。您可以使用GDAL编写自己的代码,也可以使用GRASS编写代码。我没有尝试过,但是这里有一个指南http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Exercise_31

您可能需要先对栅格进行上采样,然后再应用低通滤波器以获得更好的分辨率输出。


1
我不认为OP希望平滑变化:否则,为什么要首先着手进行kriging?它的所有好处都会丢失。相反,如图像所示,该问题要求使用平滑的重采样过程来创建已获得结果的高分辨率版本(这是加快克里金法的明智而有效的方法)。
ub

-1

您可以使用半径/ 5的秩/中值过滤器,即内核大小size = 11(对于每个rgb通道)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.