数学形态学

mmand 提供了计算 n 维数组的数学形态的函数。通过一些解决方法,也可以为光栅图像计算这些。

library(raster)
library(mmand)

r <- raster("C:/Program Files/R/R-3.2.3/doc/html/logo.jpg")
plot(r)

StackOverflow 文档

首先,必须使用大小(例如 9x9)和形状类型(例如 discboxdiamond)设置内核(移动窗口)

sk <- shapeKernel(c(9,9), type="disc")

之后,必须将栅格图层转换为一个数组,该数组用作 erode() 函数的输入。

rArr <- as.array(r, transpose = TRUE)
rErode <- erode(rArr, sk)
rErode <- setValues(r, as.vector(aperm(rErode)))

除了 erode() 之外,dilate()opening()closing() 的形态函数也可以这样应用。

plot(rErode)

StackOverflow 文档