Dual Energy Decomposition Block


The DE Decomposition block in the DEBISim pipeline performs the processing steps carried out by dual energy CT scanners on the simulated CT projections to extract additional material-based information from them. This involves decomposing CT projection data from two different X-ray spectra to produce coefficient line-integrals that can be reconstructed and used to characterize the material properties such as the effective atomic number. This block uses a number of modules representing different decomposition algorithms to execute this step: (i) the CDMDecomposer module which uses the Constrained Decomposition Method by Ying et al. to extract Compton/Photoelectric line integrals from the dual energy CT data, (ii) the SIRZ2Decomposer module which decomposes the projection data into synthesized monochromatic bases (SMB) to estimate the effective atomic number (Ze) and electron density (rhoe) and (iii) the LUTDDecomposer module which a GPU-based lookup table to accelerate the decomposition. All these modules are explained on this page after a brief description of Dual Energy CT Decomposition provided in the following section.

Dual Energy Decomposition:

Dual Energy Decomposition involves processing CT projections obtained for a volume from two different X-ray spectra to extract material-based coefficient line integrals from the attenuation data. These coefficient line-integrals can be reconstructed and processed to generate Effective Atomic Number / Electron Density / Material Basis images for the scanned volume which help characterize the material composition of objects within. This capability has made Dual Source CT scanners quite resourceful in security imaging to identify hazardous material from benign ones.

The general mathematical framework for DE decomposition has been laid out in the work by Alvarez and Macovski [1] and can be used to extract Compton and Photoelectric line-integrals from the pair of dual energy X-ray projections. These line integrals when projected back into the image space to form Photoelectric and Compton images that are used for voxel-wise material characterization of the effective atomic number Zeff. There are a number of techniques that are now used for DE decomposition to extract other coefficient information and are discussed ahead.

[1]. Alvarez, Robert E., and Albert Macovski. “Energy-selective reconstructions in x-ray computerised tomography.” Physics in Medicine & Biology 21.5 (1976): 733.


The CDMDecomposer module

This module contains the class CDMDecomposer() for carrying out Dual Energy Decomposition of a pair of Dual Energy CT images using the Constrained Decomposition Method (CDM). The DE decomposition model for CDM is described in [1]. It establishes a constrained NLS optimization model for extracting PE and Compton Line Integrals from Dual Energy Projection pairs. The module implements this optimization to perform decomposition on an elementwise level for an input pair of X-ray projections. The module contains support for single-CPU/ multi-CPU / GPU operation.

The class uses the DogLeg method (See scipy.optimize.least_squares) to perform the optimization and extract the Compton/PE coefficient values. The module also contains support to change the basis functions for decomposition to be used in Material Basis Decomposition.

[2].Ying, Zhengrong, Ram Naidu, and Carl R. Crawford. “Dual Energy Computed Tomography for Explosive Detection.” Journal of X-ray Science and Technology 14.4 (2006): 235-256.
[3]. McCollough, Cynthia H., et al. "Dual-and multi-energy CT: principles, technical approaches, and clinical applications." Radiology 276.3 (2015): 637-653.

Usage:

The class is initialized with the decomposition, optimization and projection specifications as shown below. The decomposition is then carried out using the method CDMDecomposer.decompose_dect_sinograms() which takes in the pair of dual energy projections and returns the Compton and PE line integrals.

import CDMDecomposer as cdm                                           
                                                                       
cdm_decomposer = cdm.CDMDecomposer(                                   
    spctr_l_fname='/include/spectra/imatron_spectrum_95kV.txt',     
    spctr_h_fname='/include/spectra/imatron_spectrum_130kV.txt',    
    photon_count_low=1.7e5,                                         
    photon_count_high=1.8e5,                                        
    nangs=360,                                                      
    nbins=512,                                                      
    R='gpu'                                                         
    )                                                               
                                                                       
sino_compton, sino_pe = cdm_decomposer.decompose_dect_sinograms(      
                               sino_high,                              
                               sino_low,                               
                               solver='gpu',                           
                               type='cpd'                              
                              )

Note that the high/low energy sinograms fed in as sino_high / sino_low must correspond to the respective X-ray spectra specified by spctr_h_fname and spctr_l_fname. The choice of the solver determines whether the operation is carried on a CPU (‘cpu’) / GPU (‘gpu’) machines (for fast operation, it is recommended to use solver=‘gpu’ if CUDA support is available). The decomposition can be performed for Compton-PE basis (type=‘cpd’) or for a specified Material-Basis pair (type=‘mbd’). For more details, see the Python API reference.


Lookup-Table Accelerated Decomposer, LUTDecomposer

This module also uses the CDM method for DE decomposition to obtain Compton and PE values but uses Lookup tables to accelerate the process. The module performs two operations:

  1. generates lookup tables for DE decomposition for a given spectral model and
  2. performs LUT decomposition for input images using a stored lookup table.

The operation for generating a lookup table is carried out for a grid of attenuation value pairs wherein the Compton/PE/Zeff values are estimated for every pair of values in the attenuation grid using the CDM method. The generated Compton/PE/Zeff curves are then stored and used later for LUT Decomposition. This module is obfuscated and can only be called from a DEBISimPipeline instance.


SIRZ-2 Decompostion, SIRZ2Decomposer

This module implements the SIRZ-2 method as described in:

[4]. Champley, Kyle M., et al. “Method to extract system-independent material properties from Dual-Energy X-ray CT.” IEEE Transactions on Nuclear Science 66.3 (2019): 674-686.

to carry out DE decomposition of an input DECT image pair. SIRZ-2 method first decomposes the Dual Energy projections into a Synthesis Monochromatic Bases (SMB) integrals and then reconstructes the SMBs into Ze (Effective Atomic Number) and Rhoe (Electron Density) images - see [4] for details. This module is experimental, obfuscated and can only be called from a DEBISimPipeline instance.