【发布时间】:2017-01-09 17:56:43
【问题描述】:
我想过滤一个大栅格,但只有在窗口的中心单元格是特定值时才运行过滤器。本质上,我想从图像(0 或 1 的像素)中去除一些斑点(误报),但只有在窗口中心为 1 时才运行过滤器。
# create some raster data
library(raster)
r <- raster(ncols=12, nrows=12)
set.seed(0)
r[] <- round(runif(ncell(r))*0.7 )
plot(r)
# custom filter
w=matrix(1,5,5)
gameOfLife <- function(x) {
f <- focal(x, w=w, pad=TRUE, padValue=0)
# window with with less than 5 cells die
x[f < 5] <- 0
# window with 5 or more cells live
x[f >= 5] <- 1
x
}
plot(gameOfLife(r))
上面的 2 个带圆圈的单元格符合标准(周围至少有 5 个值 1)但最初是 0,我希望它们保持为 0。因此,过滤器仅适用于中心值已经是1.
希望这是有道理的。 非常感谢提前
【问题讨论】: