Convert fan-beam projections to parallel-beam

`P = fan2para(F,D)`

P = fan2para(..., param1, val1, param2,
val2,...)

[P ,parallel_locations, parallel_rotation_angles]
= fan2para(...)

`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 | |
---|---|---|

| String specifying the range through which the beams are rotated.
| |

| Positive real scalar specifying the increment of the rotation angle of the fan-beam projections, measured in degrees. Default value is 1. | |

| String specifying how sensors are positioned.
See | |

| Positive real scalar specifying the spacing of the fan-beam
sensors. Interpretation of the value depends on the setting of If If
| |

| Text string specifying the type of interpolation used between the parallel-beam and fan-beam data.
| |

| Text string specifying the range of rotation.
| |

| 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 If | |

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

```
[P ,parallel_locations, parallel_rotation_angles]
= fan2para(...)
```

returns the parallel-beam sensor locations
in `parallel_locations`

and rotation angles in `parallel_rotation_angles`

.

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`

.

Create synthetic parallel-beam data, derive fan-beam data, and then use the fan-beam data to recover the parallel-beam data.

ph = phantom(128); 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(hot), colorbar 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(hot), colorbar

Was this topic helpful?