Documentation

This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.

fan2para

Convert fan-beam projections to parallel-beam

Syntax

P = fan2para(F,D)
P = fan2para(..., param1, val1, param2, val2,...)
[P ,parallel_locations, parallel_rotation_angles] = fan2para(...)

Description

P = fan2para(F,D) converts the fan-beam data F to the parallel-beam data P. D is the distance in pixels from the fan-beam vertex to the center of rotation that was used to obtain the projections.

P = fan2para(..., param1, val1, param2, val2,...) specifies parameters that control various aspects of the fan2para conversion, listed in the following table. Parameter names can be abbreviated, and case does not matter.

Parameter

Description

'FanCoverage'

Range through which the beams are rotated, specified as one of the following:

'cycle' — Rotate through the full range [0,360). This is the default.

'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. Default value is 1.

'FanSensorGeometry'

Positioning of sensors, specified as one of the following:

'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.

    Note:   This linear spacing is measured on the x' axis. The x' axis for each column, col, of F is oriented at fan_rotation_angles(col) degrees counterclockwise from the x-axis. The origin of both axes is the center pixel of the image.

'Interpolation'

Type of interpolation used between the parallel-beam and fan-beam data, specified as one of the following:.

'nearest' — Nearest-neighbor

{'linear'} — Linear

'spline' — Piecewise cubic spline

'pchip' — Piecewise cubic Hermite (PCHIP)

'v5cubic' — The cubic interpolation from MATLAB® 5

'ParallelCoverage'

Range of rotation, specified as one of the following:

'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

[D*sin(min(FAN_ANGLES)),...
 D*sin(max(FAN_ANGLES))]

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.

[P ,parallel_locations, parallel_rotation_angles] = fan2para(...) returns the parallel-beam sensor locations in parallel_locations and rotation angles in parallel_rotation_angles.

Class Support

The input arguments, F and D, can be double or single, and they must be nonsparse. All other numeric inputs are double. The output P is double.

Examples

collapse all

Create synthetic parallel-beam data.

ph = phantom(128);

Calculate the parallel beam transform and display it.

theta = 0:179;
[Psynthetic,xp] = radon(ph,theta);
imshow(Psynthetic,[],...
               'XData',theta,'YData',xp,'InitialMagnification','fit')
axis normal
title('Synthetic Parallel-Beam Data')
xlabel('\theta (degrees)')
ylabel('x''')
colormap(gca,hot), colorbar

Convert the parallel-beam data to fan-beam.

Fsynthetic = para2fan(Psynthetic,100,'FanSensorSpacing',1);

Recover original parallel-beam data.

[Precovered,Ploc,Pangles] = fan2para(Fsynthetic,100,...
                                      'FanSensorSpacing',1,...
                                      'ParallelSensorSpacing',1);
figure
imshow(Precovered,[],...
       'XData',Pangles,'YData',Ploc,'InitialMagnification','fit')
axis normal
title('Recovered Parallel-Beam Data')
xlabel('Rotation Angles (degrees)')
ylabel('Parallel Sensor Locations (pixels)')
colormap(gca,hot), colorbar

Introduced before R2006a

Was this topic helpful?