Inverse Radon transform
Compare Filtered and Unfiltered Backprojection
Create an image of the phantom. Display the image.
P = phantom(128); imshow(P) title('Original image')
Perform a Radon transform of the image.
R = radon(P,0:179);
Perform filtered backprojection.
I1 = iradon(R,0:179);
Perform unfiltered backprojection.
I2 = iradon(R,0:179,'linear','none');
Display the reconstructed images.
figure subplot(1,2,1) imshow(I1,) title('Filtered Backprojection') subplot(1,2,2) imshow(I2,) title('Unfiltered Backprojection')
Examine Backprojection at a Single Angle
Create an image of the phantom.
P = phantom(128);
Perform a Radon transform of the image, then get the projection vector corresponding to a projection at a 45 degree angle.
R = radon(P,0:179); r45 = R(:,46);
Perform the inverse Radon transform of this single projection vector. The
iradon syntax does not allow you to do this directly, because if
theta is a scalar it is treated as an increment. You can accomplish the task by passing in two copies of the projection vector and then dividing the result by 2.
I = iradon([r45 r45], [45 45])/2;
Display the result.
imshow(I, ) title('Backprojection from 45 degrees')
R — Parallel beam projection data
numeric column vector | numeric matrix
Parallel beam projection data, specified as one of the following.
thetais a scalar, then specify
Ras a numeric column vector containing the Radon transform for
thetais a vector, then specify
Ras a 2-D matrix in which each column is the Radon transform for one of the angles in
theta — Projection angles
numeric vector | numeric scalar |
Projection angles (in degrees), specified as one of the following.
|numeric vector||Projection angles. There must be equal spacing between the angles.|
|numeric scalar||Incremental angle between projections. Projections
are taken at angles |
|Automatically set the incremental angle between
projections to |
interp — Type of interpolation
'linear' (default) |
Type of interpolation to use in the back projection, specified as one of these values, listed in order of increasing accuracy and computational complexity.
|Shape-preserving piecewise cubic interpolation|
|Cubic convolution used in MATLAB® 5|
filter — Filter
'Ram-Lak' (default) |
Filter to use for frequency domain filtering, specified as one of these values.
Cropped Ram-Lak or ramp filter. The frequency
response of this filter is |
Multiplies the Ram-Lak filter by a
Multiplies the Ram-Lak filter by a
Multiplies the Ram-Lak filter by a Hamming window
Multiplies the Ram-Lak filter by a Hann window
|No filtering. |
frequency_scaling — Scale factor
1 (default) | positive number in the range (0, 1]
Scale factor for rescaling the frequency axis, specified as a positive
number in the range (0, 1]. If
less than 1, then the filter is compressed to fit into the frequency range
[0,frequency_scaling], in normalized frequencies; all
frequency_scaling are set to
output_size — Number of rows and columns in the reconstructed image
Number of rows and columns in the reconstructed image, specified as a
positive integer. If
output_size is not specified, the
size is determined from the length of the projections according to:
output_size = 2*floor(size(
If you specify
iradon reconstructs a smaller or larger portion of
the image but does not change the scaling of the data. If the projections
were calculated with the
radon function, then the
reconstructed image might not be the same size as the original image.
I — Grayscale image
Grayscale image, returned as a numeric matrix. If input projection data
R is data type
H — Frequency response
Frequency response of the filter, returned as a numeric vector.
iradon assumes that the center of rotation is the center point of
the projections, which is defined as
iradon uses the filtered back projection algorithm to perform the
inverse Radon transform. The filter is designed directly in the frequency domain and
then multiplied by the FFT of the projections. The projections are zero-padded to a
power of 2 before filtering to prevent spatial domain aliasing and to speed up the
 Kak, A. C., and M. Slaney, Principles of Computerized Tomographic Imaging, New York, NY, IEEE Press, 1988.
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
Usage notes and limitations:
The GPU implementation of this function supports only nearest-neighbor and linear interpolation methods.
For more information, see Image Processing on a GPU.