目标
我正在尝试模拟粗略的数据,就好像它们是用粗略的 PSF(点扩散函数)测量的一样。
数据
我有一张像素大小为 15m 的卫星图像,我想将其与高斯核进行卷积以降低 460m 处的空间分辨率。为此,我需要对精细数据应用传递函数(TF;例如高斯函数),但宽度非常大。这会产生粗略的数据。
是否有任何函数可以将高分辨率图像作为输入,应用高斯 TF 并生成粗糙的空间分辨率图像?
为了让我的问题更加清楚,我正在关注论文“点扩散函数对缩小连续体的影响”。总而言之,作者希望使用辅助的精细空间分辨率变量来缩小粗略的卫星图像。降尺度包括两个步骤:
在回归过程中,他们必须放大高分辨率图像以匹配粗分辨率图像的像素大小,然后执行回归。这种升级必须使用PSF完成。
从这里你可以下载我的图片。
library(terra)
wd = "path/"
ntl = rast(paste0(wd, "ntl.tif")) # coarse res raster
pop = rast(paste0(wd, "pop.tif")) # fine res raster
for (i in seq(from = 0.2, to = 0.8, by = 0.2)) {
print(i)
gf <- focalMat(pop, i*res(ntl), "Gauss")
r_gf <- focal(pop, w = gf, na.rm = TRUE)
r_gf = aggregate(r_gf, fact = 4, fun = "mean", cores = 3)
r_gf <- crop(r_gf, ext(s))
r_gf <- mask(r_gf, s)
stringedi = gsub("\\.", "", toString(format(i, nsmall = 2)))
writeRaster(r_gf,
paste0("path/pop",
stringedi, ".tif"),
overwrite = TRUE)
}
上面的代码,首先对精细分辨率栅格(pop)应用高斯滤波器,然后聚合栅格以匹配粗分辨率栅格(ntl)的空间分辨率,然后裁剪聚合栅格,最后导出它。