Function File: P = phantom ()
Function File: P = phantom (model)
Function File: P = phantom (E)
Function File: P = phantom (…, n)
Function File: [P, E] = phantom (…)

Create computational phantom head.

A phantom is a known object (either real or purely mathematical) that is used for testing image reconstruction algorithms. The Shepp-Logan phantom is a popular mathematical model of a cranial slice, made up of a set of overlaying ellipses. This allows rigorous testing of computed tomography (CT) algorithms as it can be analytically transformed with the radon transform (see the functions radon and iradon).

The phantom P, is created by overlaying ellipses as defined by the matrix E or one of the standard models, in a square of size n by n (defaults to 256).

The available standard models (use the output argument E to inspect the details of the different ellipses) are:

"Shepp-Logan"

This is the original Shepp-Logan model with 10 ellipses as described in Table 1 of Shepp, Lawrence A., and Benjamin F. Logan. "The Fourier reconstruction of a head section." Nuclear Science, IEEE Transactions on 21, no. 3 (1974): 21-43.

"Modified Shepp-Logan" (default)

A modification of the original Shepp-Logan model to give a better contrast, as described in Table B.3 of Toft, Peter Aundal. "The radon transform-theory and implementation." PhD diss., Department of Mathematical Modelling, Technical University of Denmark, 1996.

A 6 column matrix E can be used to generate a custom image by superimposing arbitrary ellipses. Each row defines a single ellipse, with each column for the values of {I, a, b, x0, y0, phi}:

I

is the additive intensity of the ellipse

a

is the length of the major axis

b

is the length of the minor axis

x0

is the horizontal offset of the centre of the ellipse

y0

is the vertical offset of the centre of the ellipse

phi

is the counterclockwise rotation of the ellipse in degrees, measured as the angle between the x axis and the ellipse major axis.

The image bounding box in the algorithm is {[-1, -1], [1, 1]}, so the values of a, b, x0, y0 should all be specified with this in mind.

Example:

P = phantom (512);
imshow (P);

See also: iradon, radon.

Demonstration 1

The following code

 P = phantom (512);
 imshow (P);

Produces the following figure

Figure 1

Package: image