# Documentation

### This is machine translation

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

# otf2psf

Convert optical transfer function to point-spread function

## Syntax

```PSF = otf2psf(OTF) PSF = otf2psf(OTF, OUTSIZE) ```

## Description

`PSF = otf2psf(OTF)` computes the inverse Fast Fourier Transform (IFFT) of the optical transfer function (OTF) array and creates a point-spread function (PSF), centered at the origin. By default, the `PSF` is the same size as the `OTF`.

`PSF = otf2psf(OTF, OUTSIZE)` converts the `OTF` array into a `PSF` array, where `OUTSIZE` specifies the size of the output point-spread function. The size of the output array must not exceed the size of the OTF array in any dimension.

To center the PSF at the origin, `otf2psf` circularly shifts the values of the output array down (or to the right) until the (1,1) element reaches the central position, then it crops the result to match dimensions specified by `OUTSIZE`.

Note that this function is used in image convolution/deconvolution when the operations involve the FFT.

## Class Support

`OTF` can be any nonsparse, numeric array. `PSF` is of class `double`.

## Examples

collapse all

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

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

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

Convert the OTF back to a PSF.

`PSF2 = otf2psf(OTF,size(PSF));`

Plot the PSF and the OTF.

```subplot(1,2,1) surf(abs(OTF)) title('|OTF|'); axis square axis tight subplot(1,2,2) surf(PSF2) title('Corresponding PSF'); axis square axis tight```