spatstat (version 1.63-0)

erosionAny: Morphological Erosion of Windows


Compute the morphological erosion of one spatial window by another.


erosionAny(A, B)

A %(-)% B



Windows (objects of class "owin").


Another window (object of class "owin").


The operator A %(-)% B and function erosionAny(A,B) are synonymous: they both compute the morphological erosion of the window A by the window B.

The morphological erosion \(A \ominus B\) of region \(A\) by region \(B\) is the spatial region consisting of all vectors \(z\) such that, when \(B\) is shifted by the vector \(z\), the result is a subset of \(A\).

Equivalently $$ A \ominus B = ((A^c \oplus (-B))^c $$ where \(\oplus\) is the Minkowski sum, \(A^c\) denotes the set complement, and \((-B)\) is the reflection of \(B\) through the origin, consisting of all vectors \(-b\) where \(b\) is a point in \(B\).

If B is a disc of radius r, then erosionAny(A, B) is equivalent to erosion(A, r). See erosion.

The algorithm currently computes the result as a polygonal window using the polyclip library. It will be quite slow if applied to binary mask windows.

See Also

erosion, MinkowskiSum


  B <- square(c(-0.1, 0.1))
  RminusB <- letterR %(-)% B
  FR <- grow.rectangle(Frame(letterR), 0.3)
  plot(FR, main="", type="n")
  plot(letterR, add=TRUE, lwd=2, hatch=TRUE, box=FALSE)
  plot(RminusB, add=TRUE, col="blue", box=FALSE)
  plot(shift(B, vec=c(3.49, 2.98)),
       add=TRUE, border="red", lwd=2)
# }