Main Content


Convert point-spread function to optical transfer function



OTF = psf2otf(PSF) computes the fast Fourier transform (FFT) of the point-spread function (PSF) array and creates the optical transfer function array, OTF, that is not influenced by the PSF off-centering.

OTF = psf2otf(PSF,sz) specifies the size, sz, of the optical transfer function.


collapse all

Create a point-spread function (PSF).

PSF  = fspecial('gaussian',13,1);

Convert the PSF to an Optical Transfer Function (OTF).

OTF  = psf2otf(PSF,[31 31]);

Plot the PSF and the OTF.

axis square; 
axis tight
title('Corresponding |OTF|');
axis square; 
axis tight

Input Arguments

collapse all

Point-spread function, specified as a numeric array of any dimension.

Example: PSF = fspecial('gaussian',13,1);

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Complex Number Support: Yes

Size of the output optical transfer function OTF, specified as a vector of positive integers. The size of OTF must not exceed the size of PSF in any dimension. By default, OTF is the same size as PSF.

Data Types: double

Output Arguments

collapse all

Optical transfer function, returned as a numeric array of size sz.

Data Types: double
Complex Number Support: Yes


  • To ensure that OTF is not altered because of PSF off-centering, psf2otf postpads PSF (down or to the right) with 0s to match dimensions specified in sz. Then psf2otf circularly shifts the values of PSF up (or to the left) until the central pixel reaches (1,1) position.

  • This function is used in image convolution and deconvolution when the operations involve the FFT.

Extended Capabilities

Version History

Introduced before R2006a

expand all