| Image Processing Toolbox User's Guide | ![]() |
Compute inverse Radon transform
Syntax
I = iradon(R,theta) I = iradon(R,theta,interp,filter,frequency_scaling,output_size) [I,H] = iradon(...)
Description
I = iradon(R,theta) reconstructs the image I from projection data in the two-dimensional array R. The columns of R are parallel beam projection data. iradon assumes that the center of rotation is the center point of the projections, which is defined as ceil(size(R,1)/2).
theta describes the angles (in degrees) at which the projections were taken. It can be either a vector containing the angles or a scalar specifying D_theta, the incremental angle between projections. If theta is a vector, it must contain angles with equal spacing between them. If theta is a scalar specifying D_theta, the projections were taken at angles theta = m*D_theta, where m = 0,1,2,...,size(R,2)-1. If the input is the empty matrix ([]), D_theta defaults to 180/size(R,2).
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 FFT.
I = iradon(P,theta,interp,filter,frequency_scaling,output_size) specifies parameters to use in the inverse Radon transform. You can specify any combination of the last four arguments. iradon uses default values for any of these arguments that you omit.
interp specifies the type of interpolation to use in the back projection. The available options are listed in order of increasing accuracy and computational complexity. The default value is enclosed in braces ({}).
| Value |
Description |
'nearest' |
Nearest-neighbor interpolation |
{'linear'} |
Linear interpolation |
'spline' |
Spline interpolation |
filter specifies the filter to use for frequency domain filtering. filter can be any of the strings that specify standard filters. The default value is enclosed in braces ({})
frequency_scaling is a scalar in the range (0,1] that modifies the filter by rescaling its frequency axis. The default is 1. If frequency_scaling is less than 1, the filter is compressed to fit into the frequency range [0,frequency_scaling], in normalized frequencies; all frequencies above frequency_scaling are set to 0.
output_size is a scalar that specifies the number of rows and columns in the reconstructed image. If output_size is not specified, the size is determined from the length of the projections.
If you specify output_size, 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, the reconstructed image might not be the same size as the original image.
[I,H] = iradon(...) returns the frequency response of the filter in the vector H.
Class Support
R can be double or single. All other numeric input arguments must be of class double. I has the same class as R. H is double.
Example
P = phantom(128); R = radon(P,0:179); I = iradon(R,0:179,'nearest','Hann'); imshow(P), figure, imshow(I)
Algorithm
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 FFT.
See Also
fan2para, fanbeam, ifanbeam, para2fan, phantom, radon
References
[1] Kak, A. C., and M. Slaney, Principles of Computerized Tomographic Imaging, New York, NY, IEEE Press, 1988.
| iptwindowalign | isbw | ![]() |
© 1994-2005 The MathWorks, Inc.