将栅格(tiff)图像转换为R中的像素图像 - 将空间多边形转换为owin对象类

时间:2016-11-16 14:05:08

标签: r image-processing pixel raster gaussianblur

我不是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光栅图像和像素图像之间有什么区别?

1 个答案:

答案 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)
相关问题