CTL  0.6.1
Computed Tomography Library
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
CTL::AbstractDynamicVolumeData Class Referenceabstract
Inheritance diagram for CTL::AbstractDynamicVolumeData:
Inheritance graph
[legend]
Collaboration diagram for CTL::AbstractDynamicVolumeData:
Collaboration graph
[legend]

Public Member Functions

SpectralVolumeDataclone () const override=0
 
 AbstractDynamicVolumeData (const SpectralVolumeData &other)
 
virtual XYDataSeries timeCurve (uint x, uint y, uint z, const std::vector< float > &timePoints)
 
void setTime (double seconds)
 
double time () const
 
XYDataSeries timeCurve (uint x, uint y, uint z, float tStart, float tEnd, uint nbSamples)
 
XYDataSeries timeCurve (uint x, uint y, uint z, SamplingRange timeRange, uint nbSamples)
 
- Public Member Functions inherited from CTL::SpectralVolumeData
 SpectralVolumeData (VoxelVolume< float > muValues)
 Constructs a SpectralVolumeData representing the attenuation coefficients muValues (in 1/mm). More...
 
 SpectralVolumeData (VoxelVolume< float > muValues, std::shared_ptr< AbstractIntegrableDataModel > absorptionModel, float referenceEnergy, const QString &materialName=QString())
 Constructs a SpectralVolumeData representing the attenuation coefficients muValues (in 1/mm) with respect to the given referenceEnergy (in keV) for a material described by absorptionModel. More...
 
 SpectralVolumeData (VoxelVolume< float > materialDensity, std::shared_ptr< AbstractIntegrableDataModel > absorptionModel, const QString &materialName=QString())
 Constructs a SpectralVolumeData representing the density values materialDensity (in g/cm^3) for a material described by absorptionModel. More...
 
std::shared_ptr< AbstractIntegrableDataModelabsorptionModel () const
 
std::unique_ptr< SpectralVolumeDatadensityVolume () const
 
bool hasSpectralInformation () const
 
bool isDensityVolume () const
 
bool isMuVolume () const
 
float massAttenuationCoeff (float atEnergy) const
 
const QString & materialName () const
 
float meanMassAttenuationCoeff (float centerEnergy, float binWidth) const
 
std::unique_ptr< SpectralVolumeDatamuVolume (float referenceEnergy) const
 
std::unique_ptr< SpectralVolumeDatamuVolume (float centerEnergy, float binWidth) const
 
float referenceEnergy () const
 
float referenceMassAttenuationCoeff () const
 
void replaceAbsorptionModel (AbstractIntegrableDataModel *absorptionModel)
 
void replaceAbsorptionModel (std::shared_ptr< AbstractIntegrableDataModel > absorptionModel)
 
void setDensity (VoxelVolume< float > density)
 
void setMaterialName (const QString &name)
 
 SpectralVolumeData (const SpectralVolumeData &)=default
 
 SpectralVolumeData (SpectralVolumeData &&)=default
 
SpectralVolumeDataoperator= (const SpectralVolumeData &)=default
 
SpectralVolumeDataoperator= (SpectralVolumeData &&)=default
 
void transformToAttenuationCoeff (float referenceEnergy)
 
void transformToDensity ()
 
- Public Member Functions inherited from CTL::VoxelVolume< float >
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
const_iterator cbegin () const
 
const_iterator cend () const
 
reverse_iterator rbegin ()
 
const_reverse_iterator rbegin () const
 
reverse_iterator rend ()
 
const_reverse_iterator rend () const
 
const_reverse_iterator crbegin () const
 
const_reverse_iterator crend () const
 
 VoxelVolume (const Dimensions &nbVoxels)
 
 VoxelVolume (const Dimensions &nbVoxels, const VoxelSize &voxelSize)
 
 VoxelVolume (uint nbVoxelX, uint nbVoxelY, uint nbVoxelZ)
 
 VoxelVolume (uint nbVoxelX, uint nbVoxelY, uint nbVoxelZ, float xSize, float ySize, float zSize)
 
 VoxelVolume (const Dimensions &nbVoxels, std::vector< float > data)
 
 VoxelVolume (const Dimensions &nbVoxels, const VoxelSize &voxelSize, std::vector< float > data)
 
 VoxelVolume (uint nbVoxelX, uint nbVoxelY, uint nbVoxelZ, std::vector< float > data)
 
 VoxelVolume (uint nbVoxelX, uint nbVoxelY, uint nbVoxelZ, float xSize, float ySize, float zSize, std::vector< float > data)
 
 VoxelVolume (const VoxelVolume &)=default
 
 VoxelVolume (VoxelVolume &&)=default
 
VoxelVolumeoperator= (const VoxelVolume &)=default
 
VoxelVolumeoperator= (VoxelVolume &&)=default
 
size_t allocatedElements () const
 
const std::vector< float > & constData () const
 
const std::vector< float > & data () const
 
std::vector< float > & data ()
 
const Dimensionsdimensions () const
 
bool hasData () const
 
const DimensionsnbVoxels () const
 
const Offsetoffset () const
 
float * rawData ()
 
const float * rawData () const
 
size_t totalVoxelCount () const
 
const VoxelSizevoxelSize () const
 
void setData (std::vector< float > &&data)
 
void setData (const std::vector< float > &data)
 
void setVolumeOffset (const Offset &offset)
 
void setVolumeOffset (float xOffset, float yOffset, float zOffset)
 
void setVoxelSize (const VoxelSize &size)
 
void setVoxelSize (float xSize, float ySize, float zSize)
 
void setVoxelSize (float isotropicSize)
 
void allocateMemory ()
 
void allocateMemory (const float &initValue)
 
VoxelCoordinates coordinates (const VoxelIndex &index) const
 
VoxelCoordinates coordinates (uint x, uint y, uint z) const
 
VoxelCoordinates cornerVoxel () const
 
VoxelIndex index (const VoxelCoordinates &coordinates) const
 
VoxelIndex index (float x_mm, float y_mm, float z_mm) const
 
bool isIsotropic () const
 
void fill (const float &fillValue)
 
void freeMemory ()
 
float max () const
 
float min () const
 
VoxelVolume< float > reslicedByX (bool reverse=false) const
 
VoxelVolume< float > reslicedByY (bool reverse=false) const
 
VoxelVolume< float > reslicedByZ (bool reverse=false) const
 
Chunk2D< float > sliceX (uint slice) const
 
Chunk2D< float > sliceY (uint slice) const
 
Chunk2D< float > sliceZ (uint slice) const
 
float smallestVoxelSize () const
 
VoxelCoordinates volumeCorner () const
 
std::vector< float >::reference operator() (uint x, uint y, uint z)
 
std::vector< float >::const_reference operator() (uint x, uint y, uint z) const
 
std::vector< float >::reference operator() (const VoxelIndex &index)
 
std::vector< float >::const_reference operator() (const VoxelIndex &index) const
 
VoxelVolume< float > & operator+= (const VoxelVolume< float > &other)
 
VoxelVolume< float > & operator+= (const float &additiveShift)
 
VoxelVolume< float > & operator-= (const VoxelVolume< float > &other)
 
VoxelVolume< float > & operator-= (const float &subtractiveShift)
 
VoxelVolume< float > & operator *= (const float &factor)
 
VoxelVolume< float > & operator/= (const float &divisor)
 
VoxelVolume< float > operator+ (const VoxelVolume< float > &other) const
 
VoxelVolume< float > operator+ (const float &additiveShift) const
 
VoxelVolume< float > operator- (const VoxelVolume< float > &other) const
 
VoxelVolume< float > operator- (const float &subtractiveShift) const
 
VoxelVolume< float > operator * (const float &factor) const
 
VoxelVolume< float > operator/ (const float &divisor) const
 

Protected Member Functions

virtual void updateVolume ()=0
 
 AbstractDynamicVolumeData (const AbstractDynamicVolumeData &)=default
 
 AbstractDynamicVolumeData (AbstractDynamicVolumeData &&)=default
 
AbstractDynamicVolumeDataoperator= (const AbstractDynamicVolumeData &)=default
 
AbstractDynamicVolumeDataoperator= (AbstractDynamicVolumeData &&)=default
 

Private Attributes

double _time = 0.0
 current time in milliseconds
 

Additional Inherited Members

- Public Types inherited from CTL::VoxelVolume< float >
using Dimensions = VoxelVolumeDimensions
 
using VoxelSize = VoxelVolumeVoxelSize
 
using Offset = VoxelVolumeOffset
 
using iterator = VoxelIterator< typename std::vector< float >::iterator >
 
using const_iterator = VoxelIterator< typename std::vector< float >::const_iterator >
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
- Static Public Member Functions inherited from CTL::SpectralVolumeData
static SpectralVolumeData ball (float radius, float voxelSize, float density, std::shared_ptr< AbstractIntegrableDataModel > absorptionModel)
 
static SpectralVolumeData cube (uint nbVoxel, float voxelSize, float density, std::shared_ptr< AbstractIntegrableDataModel > absorptionModel)
 
static SpectralVolumeData cylinderX (float radius, float height, float voxelSize, float density, std::shared_ptr< AbstractIntegrableDataModel > absorptionModel)
 
static SpectralVolumeData cylinderY (float radius, float height, float voxelSize, float density, std::shared_ptr< AbstractIntegrableDataModel > absorptionModel)
 
static SpectralVolumeData cylinderZ (float radius, float height, float voxelSize, float density, std::shared_ptr< AbstractIntegrableDataModel > absorptionModel)
 
static SpectralVolumeData fromMuVolume (VoxelVolume< float > muValues, std::shared_ptr< AbstractIntegrableDataModel > absorptionModel, float referenceEnergy=50.0f)
 
static SpectralVolumeData fromHUVolume (VoxelVolume< float > HUValues, std::shared_ptr< AbstractIntegrableDataModel > absorptionModel, float referenceEnergy=50.0f)
 
- Static Public Member Functions inherited from CTL::VoxelVolume< float >
static VoxelVolume< float > fromChunk2DStack (const std::vector< Chunk2D< float >> &stack)
 
static VoxelVolume< float > ball (float radius, float voxelSize, const float &fillValue)
 
static VoxelVolume< float > cube (uint nbVoxel, float voxelSize, const float &fillValue)
 
static VoxelVolume< float > cylinderX (float radius, float height, float voxelSize, const float &fillValue)
 
static VoxelVolume< float > cylinderY (float radius, float height, float voxelSize, const float &fillValue)
 
static VoxelVolume< float > cylinderZ (float radius, float height, float voxelSize, const float &fillValue)
 
- Protected Attributes inherited from CTL::VoxelVolume< float >
Dimensions _dim
 The dimensions of the volume.
 
VoxelSize _size
 The size of individual voxels (in mm).
 
Offset _offset
 The positional offset of the volume (in mm).
 
std::vector< float > _data
 The internal data of the volume.
 

Constructor & Destructor Documentation

◆ AbstractDynamicVolumeData()

CTL::AbstractDynamicVolumeData::AbstractDynamicVolumeData ( const SpectralVolumeData other)
inline

Initializes the dynamic volume using a static VoxelVolume

Member Function Documentation

◆ timeCurve() [1/3]

XYDataSeries CTL::AbstractDynamicVolumeData::timeCurve ( uint  x,
uint  y,
uint  z,
const std::vector< float > &  timePoints 
)
inlinevirtual

Returns the data series containing the data of voxel (x, y, z) at the time points specified in timePoints (to be specified in ms).

Note that this is a highly inefficient implementation that requires updating the entire volume for each requested time point using updateVolume(). Make sure to override this method in sub- classes to use more efficient ways of evaluating values of the requested voxel alone, if possible.

Reimplemented in CTL::LinearDynamicVolume.

◆ timeCurve() [2/3]

XYDataSeries CTL::AbstractDynamicVolumeData::timeCurve ( uint  x,
uint  y,
uint  z,
float  tStart,
float  tEnd,
uint  nbSamples 
)
inline

Convenience alternative of timeCurve(uint, uint, uint, const std::vector<float>&).

Returns the time series sampled at nbSamples equally-spaced positions within the interval [tStart, tEnd] (in ms).

◆ timeCurve() [3/3]

XYDataSeries CTL::AbstractDynamicVolumeData::timeCurve ( uint  x,
uint  y,
uint  z,
SamplingRange  timeRange,
uint  nbSamples 
)
inline

Convenience alternative of timeCurve(uint, uint, uint, const std::vector<float>&).

Returns the time series sampled at nbSamples equally-spaced positions within the interval specified by timeRange.

Same as:

timeCurve(x, y, z, timeRange.linspace(nbSamples));

The documentation for this class was generated from the following file: