Learn R Programming

spatstat.geom (version 3.2-5)

integral.im: Integral of a Pixel Image

Description

Computes the integral of a pixel image.

Usage

integral(f, domain=NULL, ...)

# S3 method for im integral(f, domain=NULL, weight=NULL, ...)

Value

A single numeric or complex value (or a vector of such values if domain is a tessellation).

Arguments

f

A pixel image (object of class "im") with pixel values that can be treated as numeric or complex values.

domain

Optional. Window specifying the domain of integration. Alternatively a tessellation.

...

Ignored.

weight

Optional. A pixel image (object of class "im") or a function(x,y) giving a numerical weight to be applied to the integration.

Author

Adrian Baddeley Adrian.Baddeley@curtin.edu.au, Rolf Turner r.turner@auckland.ac.nz and Ege Rubak rubak@math.aau.dk.

Details

The function integral is generic, with methods for "im", "msr", "linim" and "linfun".

The method integral.im treats the pixel image f as a function of the spatial coordinates, and computes its integral. The integral is calculated by summing the pixel values and multiplying by the area of one pixel.

The pixel values of f may be numeric, integer, logical or complex. They cannot be factor or character values.

The logical values TRUE and FALSE are converted to 1 and 0 respectively, so that the integral of a logical image is the total area of the TRUE pixels, in the same units as unitname(x).

If domain is a window (class "owin") then the integration will be restricted to this window. If domain is a tessellation (class "tess") then the integral of f in each tile of domain will be computed.

If weight is given, it should be a pixel image or a function of coordinates \(x\) and \(y\) returning numerical values. Then each pixel value of f will be multiplied by the corresponding value of weight. Effectively, the result is the integral of weight * f.

See Also

eval.im, [.im

Examples

Run this code
   # approximate integral of f(x,y) dx dy
   f <- function(x,y){3*x^2 + 2*y}
   Z <- as.im(f, square(1))
   integral(Z)
   # correct answer is 2

   # integrate over the subset [0.1,0.9] x [0.2,0.8]
   W <- owin(c(0.1,0.9), c(0.2,0.8))
   integral(Z, W)

   # weighted integral
   integral(Z, weight=function(x,y){x})

Run the code above in your browser using DataLab