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
.
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 ofimage
but will replace that oftarget
. Note that iftarget
does not have the same dimensions, number of channels, and bit depth asimage
, 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.
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)