Filters an image using the fast 2D FFT convolution product.
Behaviour at image borders. The default is to wrap the image around borders. For other modes see 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
"circular" behaviour at boundaries is to wrap the image around borders.
"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).
x contains multiple frames, the filter is applied separately to each frame.
Image object or an array, containing the filtered version
Andrzej Ole<c5><9b>, Gregoire Pau
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
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')