Learn R Programming

EBImage (version 4.14.2)

filter2: 2D Convolution Filter

Description

Filters an image using the fast 2D FFT convolution product.

Usage

filter2(x, filter, boundary = c("circular", "replicate"))

Arguments

x
An Image object or an array.
filter
An Image object or an array, with odd spatial dimensions. Must contain only one frame.
boundary
Behaviour at image borders. The default is to wrap the image around borders. For other modes see details.

Value

An Image object or an array, containing the filtered version of x.

Details

Linear filtering is useful to perform low-pass filtering (to blur images, remove noise...) and high-pass filtering (to detect edges, sharpen images). The function makeBrush is useful to generate filters.

The default "circular" behaviour at boundaries is to wrap the image around borders. In the "replicate" mode pixels outside the bounds of the image are assumed to equal the nearest border pixel value. Numeric values of boundary yield linear convolution by padding the image with the given value. If x contains multiple frames, the filter is applied separately to each frame.

See Also

makeBrush, convolve, fft, blur

Examples

Run this code
  x = readImage(system.file("images", "sample-color.png", package="EBImage"))
  display(x, title='Sample')

  ## Low-pass disc-shaped filter
  f = makeBrush(21, shape='disc', step=FALSE)
  display(f, title='Disc filter')
  f = f/sum(f)
  y = filter2(x, f)
  display(y, title='Filtered image')

  ## High-pass Laplacian filter
  la = matrix(1, nc=3, nr=3)
  la[2,2] = -8
  y = filter2(x, la)
  display(y, title='Filtered image')

Run the code above in your browser using DataLab