R焦点(光栅) - 条件滤波器(仅当窗口中心值为1时才运行)

时间:2017-01-09 17:56:43

标签: r filtering raster

我想过滤一个大型栅格,但只有在窗口的中心单元格是特定值时才运行过滤器。基本上我想从图像中删除一些散斑(误报)(像素为0或1),但只有在窗口中心为1时才运行滤镜。

var i, d = new Date('2016-12-10');
for (i = 0; i < 16; i += 1) {
    d.setMonth(d.getMonth() + 1); // Advance date by one month.
    console.log(d);
}

enter image description here

# create some raster data
library(raster)
r <- raster(ncols=12, nrows=12)
set.seed(0)
r[] <- round(runif(ncell(r))*0.7 )
plot(r)

enter image description here

上面的2个带圆圈的单元符合标准(在它们周围至少有5个值为1)但最初为0并且我希望它们保持为0.因此,仅当中心值已经过滤时,过滤器才适用a 1。

希望这是有道理的。 非常感谢提前

1 个答案:

答案 0 :(得分:1)

可以通过将函数传递给fun的{​​{1}}参数来实现。 传递的函数应该对数字向量进行操作。如果使用5x5权重矩阵,则中心单元格将是该数字向量的第13个元素。您可以使用此信息检查中心单元格在开头是否为0并有条件地返回值。

focal