Morphological Opening

Perform morphological opening of a window, a line segment pattern or a point pattern.

spatial, math
opening(w, r, ...)

## S3 method for class 'owin': opening(w, r, \dots, polygonal=NULL)

## S3 method for class 'ppp': opening(w, r, \dots)

## S3 method for class 'psp': opening(w, r, \dots)

A window (object of class "owin" or a line segment pattern (object of class "psp") or a point pattern (object of class "ppp").
positive number: the radius of the opening.
extra arguments passed to as.mask controlling the pixel resolution, if a pixel approximation is used
Logical flag indicating whether to compute a polygonal approximation to the erosion (polygonal=TRUE) or a pixel grid approximation (polygonal=FALSE).

The morphological opening (Serra, 1982) of a set $W$ by a distance $r > 0$ is the subset of points in $W$ that can be separated from the boundary of $W$ by a circle of radius $r$. That is, a point $x$ belongs to the opening if it is possible to draw a circle of radius $r$ (not necessarily centred on $x$) that has $x$ on the inside and the boundary of $W$ on the outside. The opened set is a subset of W.

For a small radius $r$, the opening operation has the effect of smoothing out irregularities in the boundary of $W$. For larger radii, the opening operation removes promontories in the boundary. For very large radii, the opened set is empty.

The algorithm applies erosion followed by dilation.


  • If r > 0, an object of class "owin" representing the opened region. If r=0, the result is identical to w.


Serra, J. (1982) Image analysis and mathematical morphology. Academic Press.

See Also

closing for the opposite operation.

dilation, erosion for the basic operations. owin, as.owin for information about windows.

  • opening
  • opening.owin
  • opening.psp
  • opening.ppp
v <- opening(letterR, 0.3)
  plot(letterR, type="n", main="opening")
  plot(v, add=TRUE, col="grey")
  plot(letterR, add=TRUE)
Documentation reproduced from package spatstat, version 1.41-1, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.