tomosipo.geometry.parallel_vec module

This module implements a parallel-beam vector projection geometry

class tomosipo.geometry.parallel_vec.ParallelVectorGeometry(shape, ray_dir, det_pos, det_v, det_u)[source]

Bases: ProjectionGeometry

Documentation for ParallelVectorGeometry

property angles

The angles from which projections are acquired.

This property is specific to non-vector geometries.

Returns:

A numpy array of shape with length num_angles containing the angles in radians.

Return type:

np.array

property corners

Returns a vector with the corners of each detector

Returns:

np.array Array with shape (num_angles, 4, 3), describing the 4 corners of each detector in (Z, Y, X)-coordinates.

Return type:

np.array

property det_normal

The detector normal vectors of the geometry.

In tomosipo, the normal vector usually points “into” the detector and away from the source/object. It is orthogonal to the v and u vectors.

Returns:

np.array A (num_angles, 3)-shaped numpy array containing the (Z,Y,X)-coordinates of the normal vectors.

Return type:

property det_pos

The detector positions of the geometry.

Returns:

np.array A (num_angles, 3)-shaped numpy array containing the (Z,Y,X)-coordinates of the detector positions.

Return type:

property det_size

The size of the detector.

This property is dangerous for vector geometries, because for vector geometries it is not guaranteed that the detector size is constant through time. If the detector size is not constant, this property raises a ValueError. Otherwise, it returns the detector size.

Returns:

The absolute size of the detector in the v and the u direction.

Return type:

(scalar, scalar)

property det_sizes

The size of each detector.

Returns:

np.array Array with shape (num_angles, 2) in v and u direction (height x width)

Return type:

np.array

property det_u

The detector u-vectors of the geometry.

The ‘u’ vector is usually the “sideways” pointing vector describing the distance from the (0, 0) to (0, 1) pixel.

Returns:

np.array A (num_angles, 3)-shaped numpy array containing the (Z,Y,X)-coordinates of the u vectors.

Return type:

property det_v

The detector v-vectors of the geometry.

The ‘v’ vector is usually the “upward” pointing vector describing the distance from the (0, 0) to (1, 0) pixel.

Returns:

np.array A (num_angles, 3)-shaped numpy array containing the (Z,Y,X)-coordinates of the v vectors.

Return type:

from_astra()[source]
property lower_left_corner

Returns a vector with the positions of the lower-left corner the detector

Returns:

np.array Array with shape (num_angles, 3), describing the position of the lower-left corner of each detector in (Z, Y, X)-coordinates.

Return type:

np.array

property num_angles

The number of angles in the projection geometry

Returns:

The number of angles in the projection geometry.

Return type:

integer

project_point(point)[source]

Projects point onto detectors

This function projects onto the virtual detectors described by the projection geometry.

For each source-detector pair, this function returns

(detector_intersection_y, detector_intersection_x)

where the distance is from the detector origin (center) and the units are in detector pixels.

This function returns np.nan if the source-point ray is parallel to the detector plane.

This function projects onto the detector even if the ray is moving away from the detector instead of towards it, or if the detector is between the source and point instead of behind the point.

Parameters:

point – A three-dimensional vector (preferably np.array)

Returns:

np.array([[detector_intersection_y, detector_intersection_x], …..])

Return type:

np.array (num_angles * 2)

property ray_dir

The ray direction of the geometry.

This property is not supported on cone geometries.

Returns:

np.array A (num_angles, 3)-shaped numpy array containing the (Z,Y,X)-coordinates of the ray direction vectors.

Return type:

rescale_det(scale)[source]

Rescale detector pixels

Rescales detector pixels without changing the size of the detector.

Parameters:

scaleint or (int, int) Indicates how many times to enlarge a detector pixel. Per convention, the first coordinate scales the pixels in the v coordinate, and the second coordinate scales the pixels in the u coordinate.

Returns:

a rescaled geometry

Return type:

ProjectionGeometry

reshape(new_shape)[source]

Reshape detector pixels without changing detector size

Parameters:

new_shape – int or (int, int) The new shape of the detector in pixels in v (height) and u (width) direction.

Returns:

self

Return type:

ProjectionGeometry

property src_pos

The source positions of the geometry.

Not supported on parallel geometries.

Returns:

np.array A (num_angles, 3)-shaped numpy array containing the (Z,Y,X)-coordinates of the source positions.

Return type:

to_astra()[source]

Convert geometry to astra geometry

Returns:

An astra representation of the current geometry.

Return type:

dict

to_vec()[source]

Return a vector geometry of the current geometry

Returns:

Return type:

ProjectionGeometry

to_vol()[source]

Returns a volume vector geometry representing the detector

Returns:

a volume vector geometry representing the detector

Return type:

VolumeVectorGeometry

tomosipo.geometry.parallel_vec.parallel_vec(*, shape, ray_dir, det_pos, det_v, det_u)[source]

Create an arbitrarily oriented parallel-beam geometry

Parameters:
  • shape (int | Tuple[int, int] | Iterable[int]) – The detector shape in pixels. If tuple, the order is (height, width). Else the pixel has the same number of pixels in the U and V direction.

  • ray_dir (Tuple[float, float, float] | Iterable[Tuple[float, float, float]] | ndarray) – A numpy array of dimension (num_positions, 3) with the ray direction in (Z, Y, X) order.

  • det_pos (Tuple[float, float, float] | Iterable[Tuple[float, float, float]] | ndarray) – A numpy array of dimension (num_positions, 3) with the detector center positions in (Z, Y, X) order.

  • det_v (Tuple[float, float, float] | Iterable[Tuple[float, float, float]] | ndarray) – A numpy array of dimension (num_positions, 3) with the vector pointing from the detector (0, 0) to (1, 0) pixel (up).

  • det_u (Tuple[float, float, float] | Iterable[Tuple[float, float, float]] | ndarray) – A numpy array of dimension (num_positions, 3) with the vector pointing from the detector (0, 0) to (0, 1) pixel (sideways).

Returns:

An arbitrarily oriented parallel-beam geometry

Return type:

ParallelVectorGeometry

tomosipo.geometry.parallel_vec.random_parallel_vec()[source]