TIGRE icon indicating copy to clipboard operation
TIGRE copied to clipboard

Inaccurate FDK reconstruction for low voxel size

Open simonCtBern opened this issue 1 month ago • 10 comments

I'm trying to use tigre for reconstruction cone-beam CT images with variable scan geometries. However, I encountered unexpected results for a test data set with simulated projections of a simple circular scan trajectory.

Expected Behavior

The quality of the reconstructed volume should not depend on "linear scaling of the object / projection magnification".

Actual Behavior

Reconstruction of the simulated scan using FDK gives good results for the following set of geometry parameters:

  • Distance from source to detector (DSD) = 556.0 mm
  • Distance from source to origin (DSO)= 200.0 mm
  • Size of each voxel (dVoxel) = [0.07194245, ...] mm

However, reconstruction of the same data provides poor results if a larger magfinication is provided as geometry parameters:

  • Distance from source to detector (DSD) = 556.0 mm
  • Distance from source to origin (DSO)= 6.0 mm
  • Size of each voxel (dVoxel) = [0.00215827, ...] mm

All other parameters (number of pixels, pixel size) and the projections are identical for both reconstructions:

  • Number of pixels (nDetector) = [1200 2000]
  • Size of each pixel (dDetector) = [0.2 0.2] mm
  • Number of voxels (nVoxel) = [1200 2000 2000]

I tried changing the accuracy parameter of the geometry over a wide range of several orders of magnitudes without visible effect.

It seems that the is some "absolute numerical accuracy threshold" which creates problems at low voxel size? Is there a way around this? (Typing a wrong magnification as a workaround may not matter for an ideal circular scan trajectory, but my goal is to test variations/deviations in the geometry for all projections individually, which would be influenced by the magnification.)

Scan setup

The test data for the reconstruction is a simulated circular cone-beam scan of a hexagonal object with a hole in the center (roughly representing a hexagonal nut).

result with large DSO (low magnification):

tigre_large_SRD

result with low DSO (high magnification), "correct" simulation setup with bad reconstruction:

tigre_nominal_SRD

Specifications

  • python version: 3.10.14
  • OS: Windows 10 64 bit
  • CUDA version: 11.7
  • GPU: 2x GeForce GTX TITAN X (12 GB), compute capability 5.2

simonCtBern avatar May 13 '24 14:05 simonCtBern