Skip to contents

sepFilter2D applies a separable linear filter to an image. First, every row of the image is filtered with the 1D kernel kernel_x. Then, every column of the result is filtered with the 1D kernel kernel_y.

Usage

sepFilter2D(image, kernel_x, kernel_y, target = "new", in_place = NULL)

Arguments

image

An Image object.

kernel_x

A vector representing the kernel along the x axis.

kernel_y

A vector representing the kernel along the y axis.

target

The location where the results should be stored. It can take 3 values:

"new":

a new Image object is created and the results are stored inside (the default).

"self":

the results are stored back into image (faster but destructive).

An Image object:

the results are stored in another existing Image object. This is fast and will not replace the content of image but will replace that of target. Note that if target does not have the same dimensions, number of channels, and bit depth as image, an error may be thrown.

in_place

Deprecated. Use target instead.

Value

If target="new", the function returns an Image object. If target="self", the function returns nothing and modifies image in place. If target is an Image object, the function returns nothing and modifies that Image object in place.

Note

For color images, the same kernel is applied to each channel of the image. If you want to apply different kernels to each channel, first split the image into separate channels with the split and process them individually before merging them using the merge function.

See also

Author

Simon Garnier, garnier@njit.edu

Examples

balloon <- image(system.file("sample_img/balloon1.png", package = "Rvision"))
k_edge_detection_x <- c(1, 2, 1)
k_edge_detection_y <- c(1, 0, -1)
balloon_edge <- sepFilter2D(balloon, k_edge_detection_x, k_edge_detection_y)