R:如何通过应用(大)宽度的高斯滤波器来增加卫星图像的像素大小(降低空间分辨率)

f87krz0w  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(113)

目标

我尝试模拟粗糙数据 ,就好像它们是用粗糙PSF(点扩散函数)测量的。

数据

我有一张1500万像素大小的卫星图像,我想将其与高斯核进行卷积,以降低460m处的空间分辨率。例如,高斯)转换为精细数据,但具有非常大的宽度,这产生粗略数据。
是否有任何函数将高分辨率图像作为输入,应用高斯TF并产生粗空间分辨率图像?
为了使我的问题更加清楚,我正在阅读论文“*The effect of the point spread function on downscaling continua *”。总而言之,作者希望使用辅助的精细空间分辨率变量来缩减粗糙卫星图像。缩减包括两个步骤:
1.回归
1.回归残差克立格法
在回归过程中,他们必须放大精细分辨率图像以匹配粗糙分辨率图像的像素大小,然后执行回归。这种放大必须使用PSF完成。
here你可以下载我的形象。

fnvucqvd

fnvucqvd1#

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)的空间分辨率,然后裁剪聚合的栅格,最后将其导出。

相关问题