我不是R专家,但我用它来进行各种图像处理。现在我正在尝试在我的卫星S-2图像上应用高斯模糊平滑(spatstat包)。我的图像的原始类型是Raster(光栅图层)tiff,实际上是来自两个Sentinel-2波段(绿色和蓝色)的减法图像。要在这种图像上应用模糊,我必须先将其转换为像素图像。我尝试过这几个问题(比如这个Converting a raster object to an im object in R),但我没有成功。我尝试过几种可能性,例如将光栅图像转换为矩阵而不是像素图像,但这不起作用,因为图像太大(尽管我使用整个Sentinel-2图像的小的,有角度的区域)。
所以,我的功能简介看起来像这样:
blue <- raster("S2A_OPER_MSI_T33TWH_B02.tif")
green <- raster("S2A_OPER_MSI_T33TWH_B03.tif")
subt <- function(r1, r2) {
return(r2-r1)
}
out_sub1 <- (blue, green, fun = subt)
我尝试直接在光栅图像上应用模糊,但我很快意识到它不能处理栅格数据:
gauss_sub1 <- blur(out_sub1, sigma = 5)
#Error: is.im(x) is not TRUE
所以,我尝试将我的图像转换为像素
out_sub11 <- as.im(X = "out_sub1")
Error in as.im.function(X, W, ..., dimyx = dimyx, na.replace = na.replace): A window W is required
因此我尝试在光栅范围之后定义一个窗口
e <- out_sub1@extent
sp_w <- as(e, "SpatialPolygons")
W <- as(sp_w, "owin")
Error in as(SP.win, "owin") : no method or default for coercing “SpatialPolygons” to “owin”
任何人都可以告诉我我做错了什么或如何将空间多边形转换为owin对象类,所以我可以进一步处理模糊命令?
可以请有人解释一下R光栅图像和像素图像之间有什么区别?
答案 0 :(得分:0)
您可以使用raster
库来应用过滤器:
library(raster)
r <- blue - green
# 3 by 3 mean filter
r_mf <- focal(r, w=matrix(1/9,nrow=3,ncol=3))
# gaussian filter
gf <- focalWeight(r, 2, "Gauss")
r_gf <- focal(r, w=gf)