Inverse fanbeam transform
I = ifanbeam(F,D)
I = ifanbeam(...,param1,val1,param2,val2,...)
[I,H] = ifanbeam(...)
I = ifanbeam(F,D)
reconstructs
the image I from projection data in the twodimensional array F
.
Each column of F
contains fanbeam projection data
at one rotation angle. ifanbeam
assumes that the
center of rotation is the center point of the projections, which is
defined as ceil(size(F,1)/2)
.
The fanbeam spread angles are assumed to be the same increments
as the input rotation angles split equally on either side of zero.
The input rotation angles are assumed to be stepped in equal increments
to cover [0:359]
degrees.
D
is the distance from the fanbeam vertex
to the center of rotation.
I = ifanbeam(...,param1,val1,param2,val2,...)
specifies
parameters that control various aspects of the ifanbeam
reconstruction,
described in the following table. Parameter names can be abbreviated,
and case does not matter. Default values are in braces ({}
).
Parameter  Description  

 String specifying the range through which the beams are rotated.
 
 Positive real scalar specifying the increment of the
rotation angle of the fanbeam projections, measured in degrees. See  
 String specifying how sensors are positioned.
See  
 Positive real scalar specifying the spacing of the fanbeam
sensors. Interpretation of the value depends on the setting of  
 String specifying the name of a filter. See  
 Scalar in the range (0,1] that modifies the filter by
rescaling its frequency axis. See  
 Text string specifying the type of interpolation used between the parallelbeam and fanbeam data.
 
 Positive scalar specifying the number of rows and columns in the reconstructed image. If If
you specify

[I,H] = ifanbeam(...)
returns
the frequency response of the filter in the vector H
.
ifanbeam
converts the fanbeam data to parallel
beam projections and then 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 zeropadded to a power of 2 before filtering to
prevent spatial domain aliasing and to speed up the FFT.
The input arguments, F
and D
,
can be double
or single
. All
other numeric input arguments must be double
. The
output arguments are double
.
This example creates a fanbeam transformation of the phantom
head image and then calls the ifanbeam
function
to recreate the phantom image from the fanbeam transformation.
ph = phantom(128); d = 100; F = fanbeam(ph,d); I = ifanbeam(F,d); imshow(ph), figure, imshow(I);
This example illustrates use of the ifanbeam
function
with the 'fancoverage'
option set to 'minimal'
.
ph = phantom(128); P = radon(ph); [F,obeta,otheta] = para2fan(P,100,... 'FanSensorSpacing',0.5,... 'FanCoverage','minimal',... 'FanRotationIncrement',1); phReconstructed = ifanbeam(F,100,... 'FanSensorSpacing',0.5,... 'Filter','SheppLogan',... 'OutputSize',128,... 'FanCoverage','minimal',... 'FanRotationIncrement',1); imshow(ph), figure, imshow(phReconstructed)
[1] Kak, A. C., and M. Slaney, Principles of Computerized Tomographic Imaging, New York, NY, IEEE Press, 1988.