This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this 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.

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


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


collapse all

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

Read an image into the workspace.

A = imread('cameraman.tif'); 

Convert the image to double.

A = im2double(A);

Create the function you want to apply to the image--a median filter.

fun = @(x) median(x(:));

Apply the filter to the image.

B = nlfilter(A,[3 3],fun); 

Display the original image and the filtered image, side-by-side.

title('Original Image (Left) and Median Filtered Image (Right)')

Input Arguments

collapse all

Image to be filtered, specified as a numeric array of any class supported by 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.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Block size, specified as a 2-element vector of positive integers. m is the number of rows and n is the number of columns in the block.

Example: B = nlfilter(A,[3 3],fun);

Data Types: single | double | logical

Function handle specified as a handle. The function must accept an m-by-n matrix as input and return a scalar result.

c = fun(x)

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.

Data Types: function_handle

Output Arguments

collapse all

Filtered image, returned as numeric array. The class of B depends on the class of the output from fun.

Introduced before R2006a