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

问题描述 投票:0回答:1

目标

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

数据

我有一张像素大小为 15m 的卫星图像,我想将其与高斯核进行卷积以降低 460m 处的空间分辨率。为此,我需要对精细数据应用传递函数(TF;例如高斯函数),但宽度非常大。这会产生粗略的数据。

是否有任何函数可以将高分辨率图像作为输入,应用高斯 TF 并生成粗糙的空间分辨率图像?

为了让我的问题更加清楚,我正在关注论文“点扩散函数对缩小连续体的影响”。总而言之,作者希望使用辅助的精细空间分辨率变量来缩小粗略的卫星图像。降尺度包括两个步骤:

  1. 回归
  2. 回归残差克里金法

在回归过程中,他们必须放大高分辨率图像以匹配粗分辨率图像的像素大小,然后执行回归。这种升级必须使用PSF完成。

这里你可以下载我的图片。

r raster resolution gaussian
1个回答
0
投票
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)的空间分辨率,然后裁剪聚合栅格,最后导出它。

© www.soinside.com 2019 - 2024. All rights reserved.