This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.


General sliding-neighborhood operations


B = nlfilter(A, [m n], fun)
B = nlfilter(A, 'indexed',...)


B = nlfilter(A, [m n], fun) applies the function fun to each m-by-n sliding block of the grayscale image A. fun is a function that accepts an m-by-n matrix as input and returns a scalar result.

c = fun(x)

fun must be a function handle.

c is the output value for the center pixel in the m-by-n block x. nlfilter calls fun for each pixel in A. nlfilter zero-pads the m-by-n block at the edges, if necessary.

B = nlfilter(A, 'indexed',...) processes A as an indexed image, padding with 1's if A is of class single or double and 0's if A is of class logical, uint8, or uint16.

Class Support

The input image A can be of any class supported by fun. The class of B depends on the class of the output from fun. When A is grayscale, it can be any numeric type or logical. When A is indexed, it can be logical, uint8, uint16, single, or double.


collapse all

This example shows how apply a median filter to an image using nlfilter . This example produces the same result as calling medfilt2 with a 3-by-3 neighborhood.

A = imread('cameraman.tif');
A = im2double(A);
fun = @(x) median(x(:));
B = nlfilter(A,[3 3],fun);
imshow(A), figure, imshow(B)

More About

collapse all


nlfilter can take a long time to process large images. In some cases, the colfilt function can perform the same operation much faster.

See Also


Introduced before R2006a

Was this topic helpful?