Image Processing Toolbox User's Guide |
|
para2fan
Compute fan-beam projections from parallel-beam tomography data
Syntax
F = para2fan(P,D)
I = para2fan(...,param1,val1,param2,val2,...)
[F,fan_positions,fan_rotation_angles] = fan2para(...)
Description
F = para2fan(P,D)
computes the fan-beam data (sinogram) F
from the parallel-beam data (sinogram) P
. Each column of P
contains the parallel-beam sensor samples at one rotation angle. D
is the distance in pixels from the center of rotation to the center of the sensors.
The sensors are assumed to have a one-pixel spacing. The parallel-beam rotation angles are assumed to be spaced equally to cover [0,180] degrees. The calculated fan-beam rotation angles cover [0,360) with the same spacing as the parallel-beam rotation angles. The calculated fan-beam angles are equally spaced with the spacing set to the smallest angle implied by the sensor spacing.
I = para2fan(...,param1,val1,param2,val2,...)
specifies parameters that control various aspects of the para2fan
conversion. Parameter names can be abbreviated, and case does not matter. Default values are enclosed in braces like this: {default}. Parameters include
Parameter
|
Description
|
'FanCoverage'
|
String specifying the range through which the beams are rotated.
Possible values: {'cycle'} or 'minimal'
See ifanbeam for details.
|
'FanRotationIncrement'
|
Positive real scalar specifying the rotation angle increment of the fan-beam projections in degrees.
If 'FanCoverage' is 'cycle' , 'FanRotationIncrement' must be a factor of 360.
If 'FanRotationIncrement' is not specified, then it is set to the same spacing as the parallel-beam rotation angles.
|
'FanSensorGeometry'
|
Text string specifying how sensors are positioned. Possible values: {'arc'} or 'line' See fanbeam for details.
|
'FanSensorSpacing'
|
Positive real scalar specifying the spacing of the fan beams. Interpretation of the value depends on the setting of 'FanSensorGeometry' :
If 'FanSensorGeometry' is 'arc' , the value defines the angular spacing in degrees. Default value is 1.
If 'FanSensorGeometry' is 'line' , the value defines the linear spacing in pixels.
If 'FanSensorSpacing' is not specified, the default is the smallest value implied by 'ParallelSensorSpacing' such that
If 'FanSensorGeometry' is 'arc' , 'FanSensorSpacing' is
where PSPACE is the value of 'ParallelSensorSpacing' .
If 'FanSensorGeometry' is 'line' , 'FanSensorSpacing' is
|
'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)
'cubic' -- Same as 'pchip'
|
'ParallelCoverage'
|
Text string specifying the range of rotation.
'cycle' -- Parallel data covers 360 degrees
{'halfcycle'} -- Parallel data covers 180 degrees
|
'ParallelRotationIncrement'
|
Positive real scalar specifying the parallel-beam rotation angle increment, measured in degrees. Parallel beam angles are calculated to cover [0,180) degrees with increment PAR_ROT_INC , where PAR_ROT_INC is the value of 'ParallelRotationIncrement' . 180/PAR_ROT_INC must be an integer. If 'ParallelRotationIncrement' is not specified, the increment is assumed to be the same as the increment of the fan-beam rotation angles.
|
'ParallelSensorSpacing'
|
Positive real scalar specifying the spacing of the parallel-beam sensors in pixels. The range of sensor locations is implied by the range of fan angles and is given by
If 'ParallelSensorSpacing' is not specified, the spacing is assumed to be uniform and is set to the minimum spacing implied by the fan angles and sampled over the range implied by the fan angles.
|
[F,fan_positions,fan_rotation_angles] = fan2para(...)
If 'FanSensorGeometry'
is 'arc'
, fan_positions
contains the fan-beam sensor measurement angles. If 'FanSensorGeometry
' is 'line'
, fan_positions
contains the fan-beam sensor positions along the line of sensors. fan_rotation_angles
contains rotation angles.
Class Support
P
and D
can be double
or single
, and must be nonsparse. The other numeric input arguments must be double
. The output arguments are double
.
Example
Generate parallel-beam projections
ph = phantom(128);
theta = 0:180;
[P,xp] = radon(ph,theta);
imshow(theta,xp,P,[],'n'), axis normal
title('Parallel-Beam Projections')
xlabel('\theta (degrees)')
ylabel('x''')
colormap(hot), colorbar
Convert to fan-beam projections
[F,Fpos,Fangles] = para2fan(P,100);
figure, imshow(Fangles,Fpos,F,[],'n'), axis normal
title('Fan-Beam Projections')
xlabel('\theta (degrees)')
ylabel('Sensor Locations (degrees)')
colormap(hot), colorbar
See Also
fan2para
, fanbeam
, iradon
, ifanbeam
, phantom
, radon
| padarray | | phantom | |
© 1994-2005 The MathWorks, Inc.