【问题标题】:Converting raster (tiff) image to a pixel image in R - problems when converting spatial polygon into owin object class将光栅(tiff)图像转换为 R 中的像素图像 - 将空间多边形转换为 owin 对象类时的问题
【发布时间】:2017-03-30 18:29:02
【问题描述】:

我不是 R 专家,但我将它用于各种图像处理。现在我正在尝试在我的卫星 S-2 图像上应用高斯模糊平滑(spatstat 包)。我的图像的原始类型是光栅(光栅层)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中的光栅图像和像素图像有什么区别?

【问题讨论】:

    标签: r image-processing pixel raster gaussianblur


    【解决方案1】:

    您可以使用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)
    

    【讨论】:

    • 感谢您的回复@Geo-sp。我之前忘了提到我已经使用这种方法进行平滑处理(但使用默认函数而不是高斯函数),并且效果很好。不过,我仍然想理解上面强调的问题。
    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多