Documentation |
Inverse fan-beam 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 two-dimensional array F. Each column of F contains fan-beam 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 fan-beam 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 fan-beam 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 |
---|---|
'FanCoverage' | String specifying the range through which the beams are rotated. {'cycle'} — Rotate through the full range [0,360). 'minimal' — Rotate the minimum range necessary to represent the object. |
'FanRotationIncrement' | Positive real scalar specifying the increment of the rotation angle of the fan-beam projections, measured in degrees. See fanbeam for details. |
'FanSensorGeometry' | String specifying how sensors are positioned. 'arc' — Sensors are spaced equally along a circular arc at distance D from the center of rotation. Default value is 'arc' 'line' — Sensors are spaced equally along a line, the closest point of which is distance D from the center of rotation. See fanbeam for details. |
'FanSensorSpacing' | Positive real scalar specifying the spacing of the fan-beam sensors. Interpretation of the value depends on the setting of 'FanSensorGeometry'. If 'FanSensorGeometry' is set to 'arc' (the default), the value defines the angular spacing in degrees. Default value is 1. If 'FanSensorGeometry' is 'line', the value specifies the linear spacing. Default value is 1. See fanbeam for details. |
'Filter' | String specifying the name of a filter. See iradon for details. |
'FrequencyScaling' | Scalar in the range (0,1] that modifies the filter by rescaling its frequency axis. See iradon for details. |
'Interpolation' | Text string specifying the type of interpolation used between the parallel-beam and fan-beam data. 'nearest' — Nearest-neighbor {'linear'} — Linear 'spline' — Piecewise cubic spline 'pchip' —- Piecewise cubic Hermite (PCHIP) 'v5cubic' — The cubic interpolation from MATLAB^{®} 5 |
'OutputSize' | Positive scalar specifying the number of rows and columns in the reconstructed image. If 'OutputSize' is not specified, ifanbeam determines the size automatically. If you specify 'OutputSize', ifanbeam reconstructs a smaller or larger portion of the image, but does not change the scaling of the data. |
[I,H] = ifanbeam(...) returns the frequency response of the filter in the vector H.
ifanbeam converts the fan-beam 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 zero-padded 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 fan-beam transformation of the phantom head image and then calls the ifanbeam function to recreate the phantom image from the fan-beam 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','Shepp-Logan',... 'OutputSize',128,... 'FanCoverage','minimal',... 'FanRotationIncrement',1); imshow(ph), figure, imshow(phReconstructed)