Centre of Rotation (CoR)#

What is it?#

Identifying the optimal Centre of Rotation (CoR) parameter is an important procedure to ensure the correctness of the reconstruction. It is crucial to find it as precise as possible, as the incorrect value can lead to distortions in reconstructions, therefore making post processing and quantification invalid.

The required CoR parameter places the object (a scanned sample) into a coordinate system of the scanning device to ensure that the object is centered and rotates around its axis in this system, see Fig. 10. This is essential for valid reconstruction as the back projection model assumes a central placing of a sample with respect to the detector’s axis (usually horizontal for synchrotrons).

The CoR estimation problem is also sometimes referred to the centered sinogram. If the sinogram is not centered and there is an offset (\(d\) in Fig. 10), the reconstruction will result in strong arching artefacts at the boundaries of reconstructed objects, see Fig. 11. Further from the optimal CoR value (here \(d=0\)), one should expect more pronounced arching. Therefore the optimisation problem usually involves minimising the artefacts in the reconstructed images by varying the CoR value.

CoR scheme for tomography

Fig. 10 The CoR parameter can be defined as a distance \(d\) that translates the coordinate system \((x,y)\) of the scanned object to the coordinate system \((s,p)\) of the acquisition device. This leads to a simple linear mapping \((s = x +- d, p = y)\).#

Finding CoR

Fig. 11 The reconstructions using different CoR values. Incorrectly centered sinogram results in strong arching artifacts on the boundaries of the reconstructed object. Note how the arching is being reduced when \(d\) is closer to the correct value.#

CoR in HTTomo#

The CoR parameter is present in any reconstruction template given as the center parameter. It can be configured either automatically (see Auto-centering) or manually (see Manual Centering).

Auto-centering#

There is a variety of methods to estimate CoR automatically. At DLS, we frequently use the centering method which was developed by Nghia Vo and it relies on the Fourier analysis of a sinogram, see the paper. This method is implemented in both TomoPy and HTTomolibgpu libraries and available for HTTomo as find_center_vo template, see YAML Templates.

Here are the steps to enable the auto-centering and then use the estimated value in the reconstruction:

  1. The auto-centering method should be added to the process list before the reconstruction method.

  2. It is recommended to position any auto-centering method right after the loader, see Method pattern and method order.

  3. The calculated CoR value with be stored in Side outputs.

  4. In the reconstruction module we refer to that value by placing the reference into the center parameter.

- method: find_center_vo
  module_path: httomolibgpu.recon.rotation
  parameters:
    ind: mid
    smin: -50
    smax: 50
    srad: 6
    step: 0.25
    ratio: 0.5
    drop: 20
  id: centering
  side_outputs:
    cor: centre_of_rotation
- method: FBP
  module_path: httomolibgpu.recon.algorithm
  parameters:
    center: ${{centering.side_outputs.centre_of_rotation}}
    filter_freq_cutoff: 0.6
    recon_size: null
    recon_mask_radius: null

Note

When one auto-centering method fails it is recommended to try other available methods as they can still provide the correct or close to the correct CoR value.

Manual Centering#

Unfortunately, there could be various cases when Auto-centering fails, e.g., the projection data is corrupted, incomplete, the object is outside the field of view of the detector, and possibly other issues. In that case, it is recommended to find the center of rotation manually. Parameter Tuning can simplify such search significantly.

To enable manual centering, one would need to do the following steps:

  1. Ensure that the auto centering estimation method is not in the process list (remove or comment it).

  2. Modify the centre of rotation value center in the reconstruction plugin by substituting a number instead of the reference to side outputs.