9.1. Kernel Convolutions
nd.filters
implements generic kernel convolutions as well as several convenience functions
for special cases. Every filter supports the argument dims
to specify a subset of dimensions along which to apply the filter. If a kernel is given, the number of dimensions must match the shape of the kernel.
The following example performs a simple Sobel edge detection filter along the x
dimension using nd.filters.ConvolutionFilter()
.
Example:
from nd.filters import ConvolutionFilter
kernel = np.array([[1, 0, -1],
[2, 0, -2],
[1, 0, -1]])
edges = ConvolutionFilter(kernel, dims=('y', 'x'))
edges = conv.apply(ds)
A boxcar convolution (see nd.filters.BoxcarFilter()
) uses a square kernel (in n dimensions) with equal weights for each pixel. The total weight is normalized to one.
Example:
from nd.filters import BoxcarFilter
boxcar = BoxcarFilter(w=3, dims=('y', 'x'))
smooth = boxcar.apply(ds)
A Gaussian filter (see nd.filters.GaussianFilter()
) convolves the datacube with a Gaussian kernel.
Example:
from nd.filters import GaussianFilter
gaussian = GaussianFilter(sigma=1, dims=('y', 'x'))
smooth = gaussian.apply(ds)