filter2: 2D Convolution Filter

View source: R/filter2.R

filter2R Documentation

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.

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(s).

If x contains multiple frames, the filter is applied separately to each frame.

Value

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

Author(s)

Andrzej Oleś, Gregoire Pau

See Also

makeBrush, convolve, fft, blur

Examples

  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')

  ## Low-pass filter with linear padded boundary
  y = filter2(x, f, boundary=c(0,.5,1))
  display(y, title='Filtered image with linear padded boundary')

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

aoles/EBImage documentation built on Oct. 16, 2024, 2:06 p.m.