Grangeat-based 2D/3D image registration
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
reg23::SinogramClassic3D< texture_t > Class Template Reference

A 3D texture stored for access by the CPU, structured for storing an even distribution of values over the surface of S^2, according to the HEALPix mapping. ToDo: citation here. More...

#include <SinogramClassic3D.h>

Inheritance diagram for reg23::SinogramClassic3D< texture_t >:

Public Types

using Base = texture_t
 
using IntType = typename Base::IntType
 
using FloatType = typename Base::FloatType
 
using SizeType = typename Base::SizeType
 
using VectorType = typename Base::VectorType
 
using AddressModeType = typename Base::AddressModeType
 

Public Member Functions

 SinogramClassic3D ()=default
 
 SinogramClassic3D (Base texture)
 Construct the texture with data.
 
 SinogramClassic3D (const SinogramClassic3D &)=default
 
SinogramClassic3Doperator= (const SinogramClassic3D &)=default
 
 SinogramClassic3D (SinogramClassic3D &&)=default
 
SinogramClassic3Doperator= (SinogramClassic3D &&)=default
 
__host__ __device__ float Sample (const VectorType &rThetaPhi) const
 

Static Public Member Functions

static SinogramClassic3D FromTensor (const at::Tensor &tensor, FloatType rSpacing)
 
static SinogramClassic3D FromCUDAHandle (int64_t textureHandle, const Vec< int64_t, 3 > &sizeRThetaPhi, FloatType rSpacing)
 

Static Public Attributes

static constexpr FloatType THETA_RANGE_LOW = -.5 * M_PI
 
static constexpr FloatType THETA_RANGE_HIGH = .5 * M_PI
 
static constexpr FloatType PHI_RANGE_LOW = -.5 * M_PI
 
static constexpr FloatType PHI_RANGE_HIGH = .5 * M_PI
 

Detailed Description

template<typename texture_t>
class reg23::SinogramClassic3D< texture_t >

A 3D texture stored for access by the CPU, structured for storing an even distribution of values over the surface of S^2, according to the HEALPix mapping. ToDo: citation here.

Template Parameters
texture_t

Texture sampling is done using spherical coordinates $(r, \theta, \phi)$, but only the first dimension $r$ actually corresponds to the texture coordinate in the volume data. Across two dimensions the values are stored according to a rectangular tesselation of the HEALPix spherical projection.

This object does not own the data it provides access to, it just holds a pointer to it

Both copy and move-constructable.

Member Typedef Documentation

◆ AddressModeType

template<typename texture_t >
using reg23::SinogramClassic3D< texture_t >::AddressModeType = typename Base::AddressModeType

◆ Base

template<typename texture_t >
using reg23::SinogramClassic3D< texture_t >::Base = texture_t

◆ FloatType

template<typename texture_t >
using reg23::SinogramClassic3D< texture_t >::FloatType = typename Base::FloatType

◆ IntType

template<typename texture_t >
using reg23::SinogramClassic3D< texture_t >::IntType = typename Base::IntType

◆ SizeType

template<typename texture_t >
using reg23::SinogramClassic3D< texture_t >::SizeType = typename Base::SizeType

◆ VectorType

template<typename texture_t >
using reg23::SinogramClassic3D< texture_t >::VectorType = typename Base::VectorType

Constructor & Destructor Documentation

◆ SinogramClassic3D() [1/4]

template<typename texture_t >
reg23::SinogramClassic3D< texture_t >::SinogramClassic3D ( )
default

◆ SinogramClassic3D() [2/4]

template<typename texture_t >
reg23::SinogramClassic3D< texture_t >::SinogramClassic3D ( Base  texture)
inlineexplicit

Construct the texture with data.

Parameters
texture

◆ SinogramClassic3D() [3/4]

template<typename texture_t >
reg23::SinogramClassic3D< texture_t >::SinogramClassic3D ( const SinogramClassic3D< texture_t > &  )
default

◆ SinogramClassic3D() [4/4]

template<typename texture_t >
reg23::SinogramClassic3D< texture_t >::SinogramClassic3D ( SinogramClassic3D< texture_t > &&  )
default

Member Function Documentation

◆ FromCUDAHandle()

template<typename texture_t >
static SinogramClassic3D reg23::SinogramClassic3D< texture_t >::FromCUDAHandle ( int64_t  textureHandle,
const Vec< int64_t, 3 > &  sizeRThetaPhi,
FloatType  rSpacing 
)
inlinestatic
Parameters
textureHandle
sizeRThetaPhi
rSpacingThe spacing between each HEALPix sphere
Returns
An instance of this texture object that points to the data in the given image

◆ FromTensor()

template<typename texture_t >
static SinogramClassic3D reg23::SinogramClassic3D< texture_t >::FromTensor ( const at::Tensor &  tensor,
FloatType  rSpacing 
)
inlinestatic
Parameters
tensorA 3D tensor of torch.float32s containing values for evenly spacing spherical coordinate locations in $\phi$, $\theta$ and $r$. The order of the dimensions along which the coordinates should vary is $\phi$, $\theta$, $r$.
rSpacingThe spacing between each HEALPix sphere
Returns
An instance of this texture object that points to the data in the given image

◆ operator=() [1/2]

template<typename texture_t >
SinogramClassic3D & reg23::SinogramClassic3D< texture_t >::operator= ( const SinogramClassic3D< texture_t > &  )
default

◆ operator=() [2/2]

template<typename texture_t >
SinogramClassic3D & reg23::SinogramClassic3D< texture_t >::operator= ( SinogramClassic3D< texture_t > &&  )
default

◆ Sample()

template<typename texture_t >
__host__ __device__ float reg23::SinogramClassic3D< texture_t >::Sample ( const VectorType rThetaPhi) const
inline
Parameters
rThetaPhiThe location at which to sample in spherical coordinates
Returns
The sample from this texture at the given coordinates using trilinear interpolation

Member Data Documentation

◆ PHI_RANGE_HIGH

template<typename texture_t >
constexpr FloatType reg23::SinogramClassic3D< texture_t >::PHI_RANGE_HIGH = .5 * M_PI
staticconstexpr

◆ PHI_RANGE_LOW

template<typename texture_t >
constexpr FloatType reg23::SinogramClassic3D< texture_t >::PHI_RANGE_LOW = -.5 * M_PI
staticconstexpr

◆ THETA_RANGE_HIGH

template<typename texture_t >
constexpr FloatType reg23::SinogramClassic3D< texture_t >::THETA_RANGE_HIGH = .5 * M_PI
staticconstexpr

◆ THETA_RANGE_LOW

template<typename texture_t >
constexpr FloatType reg23::SinogramClassic3D< texture_t >::THETA_RANGE_LOW = -.5 * M_PI
staticconstexpr

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