1

我不是 R 专家,但我将它用于各种图像处理。现在我正在尝试在我的卫星 S-2 图像上应用高斯模糊平滑(spatstat 包)。我的图像的原始类型是光栅(光栅层)tiff,实际上是两个 Sentinel-2 波段(绿色和蓝色)的减法图像。要在这种图像上应用模糊,我必须首先将其转换为像素图像。我已经尝试在其他几个问题之后执行此操作(例如将光栅对象转换为 R 中的 im 对象),但我没有成功。我尝试了几种可能性,例如将光栅图像转换为矩阵而不是像素图像,但这不起作用,因为图像太大(尽管我使用整个 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中的光栅图像和像素图像有什么区别?

4

1 回答 1

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)
于 2016-11-16T19:18:23.470 回答