This is machine translation

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

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan 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. 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)


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

Introduced before R2006a

Was this topic helpful?