random_trajectory_3d#

diffct.geometry.random_trajectory_3d(n_views, sid_mean, sdd_mean, sid_std=0.0, pos_std=0.0, angle_std=0.0, device='cuda', dtype=torch.float32, seed=None)[source]#

Generate random trajectory geometry for cone-beam CT.

Creates source and detector position matrices with random perturbations, useful for testing reconstruction with non-ideal trajectories or for simulating robotic C-arm systems with positioning uncertainties.

Parameters:
  • n_views (int) – Number of projection views.

  • sid_mean (float) – Mean Source-to-Isocenter Distance, in physical units.

  • sdd_mean (float) – Mean Source-to-Detector Distance, in physical units.

  • sid_std (float, optional) – Standard deviation for SID variations (default: 0.0).

  • pos_std (float, optional) – Standard deviation for random position offsets (default: 0.0).

  • angle_std (float, optional) – Standard deviation for angular perturbations in radians (default: 0.0).

  • device (str or torch.device, optional) – Device for tensors (default: ‘cuda’).

  • dtype (torch.dtype, optional) – Data type for tensors (default: torch.float32).

  • seed (int, optional) – Random seed for reproducibility (default: None). The noise comes from a private generator, so the global PyTorch random state is unchanged.

Returns:

  • src_pos (torch.Tensor) – Source positions, shape (n_views, 3).

  • det_center (torch.Tensor) – Detector center positions, shape (n_views, 3).

  • det_u_vec (torch.Tensor) – Detector u-direction unit vectors, shape (n_views, 3).

  • det_v_vec (torch.Tensor) – Detector v-direction unit vectors, shape (n_views, 3).

Examples

>>> # Generate random trajectory with 10% SID variation and 5mm position noise
>>> src_pos, det_center, det_u_vec, det_v_vec = random_trajectory_3d(
...     n_views=180, sid_mean=1000.0, sdd_mean=1500.0,
...     sid_std=100.0, pos_std=5.0, seed=42, device='cuda'
... )