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.


3-D Gaussian filtering of 3-D images


B = imgaussfilt3(A)
B = imgaussfilt3(A,sigma)
B = imgaussfilt3(___,Name,Value)



B = imgaussfilt3(A) filters 3-D image A with a 3-D Gaussian smoothing kernel with standard deviation of 0.5, and returns the filtered image in B.

You optionally can perform the filtering using a GPU (requires Parallel Computing Toolbox™). For more information, see Image Processing on a GPU.

B = imgaussfilt3(A,sigma) filters 3-D image A with a 3-D Gaussian smoothing kernel with standard deviation specified by sigma.

B = imgaussfilt3(___,Name,Value) uses name-value pair arguments to control aspects of the filtering.


collapse all

Load MRI data and display it.

vol = load('mri');
title('Original image volume')

Smooth the image with a 3-D Gaussian filter.

siz = vol.siz;
vol = squeeze(vol.D);   
sigma = 2;
volSmooth = imgaussfilt3(vol, sigma);
title('Gaussian filtered image volume')

This example shows how to perform a 3-D Gaussian smoothing operation on a GPU.

Load MRI data to be filtered.

vol = load('mri');
figure, montage(vol.D), title('Original image volume')

Create a gpuArray containing the volume data and perform Gaussian smoothing.

siz = vol.siz;
vol = gpuArray(squeeze(vol.D));   
sigma = 2; 

volSmooth = imgaussfilt3(vol, sigma);

Collect the smoothed data from the GPU (using the gather function) and display all the results for comparison.

figure, montage(reshape(gather(volSmooth),siz(1),siz(2),1,siz(3)))
title('Gaussian filtered image volume')

Input Arguments

collapse all

Image to be filtered, specified as a 3-D numeric array.

To perform the filtering using a GPU, specify A as a gpuArray that contains a 3-D numeric array.

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

Standard deviation of the Gaussian distribution, specified as positive number or a 3-element vector of positive numbers. If sigma is a scalar, then imgaussfilt3 uses a cubic Gaussian kernel.

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

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: volSmooth = imgaussfilt3(vol,sigma,'padding','circular');

Size of the Gaussian filter, specified as a scalar or 3-element vector of positive, odd, integers. If you specify a scalar, then imgaussfilt3 uses a cubic filter. The default filter size is 2*ceil(2*sigma)+1.

Example: volSmooth = imgaussfilt3(vol,sigma,'FilterSize',5);

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

Image padding, specified as one of the following.

numeric scalarPad image with elements of constant value.

Pad with circular repetition of elements within the dimension.


Pad by repeating border elements of array.


Pad image with mirror reflections of itself.

Example: volSmooth = imgaussfilt3(vol,sigma,'padding','circular');

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

Domain in which to perform filtering, specified as one of the following values.

Filter Domain Description
'auto'Perform convolution in the spatial or frequency domain, based on internal heuristics.
'frequency'Perform convolution in the frequency domain.
'spatial'Perform convolution in the spatial domain.

Example: volSmooth = imgaussfilt3(vol,sigma,'FilterDomain','frequency');

Data Types: char | string

Output Arguments

collapse all

Filtered image, returned as a numeric array of the same class and size as input image.

If the image is filtered using a GPU, then B is returned as a gpuArray containing a numeric array.


  • If image A contains Infs or NaNs, then the behavior of imgaussfilt3 for frequency domain filtering is undefined. This can happen if you set the 'FilterDomain' parameter to 'frequency' or if you set it to 'auto' and imgaussfilt3 uses frequency domain filtering. To restrict the propagation of Infs and NaNs in the output in a manner similar to imfilter, consider setting the 'FilterDomain' parameter to 'spatial'.

  • If you set the 'FilterDomain' parameter to 'auto', then imgaussfilt3 uses an internal heuristic to determine whether spatial or frequency domain filtering is faster. This heuristic is machine-dependent and may vary for different configurations. For optimal performance, try both options, 'spatial' and 'frequency', to determine the best filtering domain for your image and kernel size.

  • If you do not specify the 'Padding' parameter, then imgaussfilt3 uses 'replicate' padding by default, which is different from the default used by imfilter.

Extended Capabilities

Introduced in R2015a