我想过滤一个大型栅格,但只有在窗口的中心单元格是特定值时才运行过滤器。基本上我想从图像中删除一些散斑(误报)(像素为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);
}
# create some raster data
library(raster)
r <- raster(ncols=12, nrows=12)
set.seed(0)
r[] <- round(runif(ncell(r))*0.7 )
plot(r)
上面的2个带圆圈的单元符合标准(在它们周围至少有5个值为1)但最初为0并且我希望它们保持为0.因此,仅当中心值已经过滤时,过滤器才适用a 1。
希望这是有道理的。 非常感谢提前
答案 0 :(得分:1)
可以通过将函数传递给fun
的{{1}}参数来实现。
传递的函数应该对数字向量进行操作。如果使用5x5权重矩阵,则中心单元格将是该数字向量的第13个元素。您可以使用此信息检查中心单元格在开头是否为0并有条件地返回值。
focal