OpenWalnut
1.5.0dev
|
Class for symmetric spherical harmonics The index scheme of the coefficients/basis values is like in the Descoteaux paper "Regularized, Fast, and Robust Analytical Q-Ball Imaging". More...
#include <WSymmetricSphericalHarmonic.h>
Public Member Functions | |
WSymmetricSphericalHarmonic () | |
Default constructor. More... | |
WSymmetricSphericalHarmonic (const WValue< T > &SHCoefficients) | |
Constructor. More... | |
virtual | ~WSymmetricSphericalHarmonic () |
Destructor. More... | |
T | getValue (T theta, T phi) const |
Return the value on the sphere. More... | |
T | getValue (const WUnitSphereCoordinates< T > &coordinates) const |
Return the value on the sphere. More... | |
const WValue< T > & | getCoefficients () const |
Returns the used coefficients (stored like in the mentioned 2007 Descoteaux paper). More... | |
WValue< T > | getCoefficientsSchultz () const |
Returns the coefficients for Schultz' SH base. More... | |
WValue< std::complex< T > > | getCoefficientsComplex () const |
Returns the coefficients for the complex base. More... | |
void | setFromComplex (WValue< std::complex< T > > const &coeffs, int order) |
Set the coeffs from complex base coeffs. More... | |
void | applyFunkRadonTransformation (WMatrix< T > const &frtMat) |
Applies the Funk-Radon-Transformation. More... | |
size_t | getOrder () const |
Return the order of the spherical harmonic. More... | |
T | calcGFA (std::vector< WUnitSphereCoordinates< T > > const &orientations) const |
Calculate the generalized fractional anisotropy for this ODF. More... | |
T | calcGFA (WMatrix< T > const &B) const |
Calculate the generalized fractional anisotropy for this ODF. More... | |
void | normalize () |
Normalize this SH in place. More... | |
Static Public Member Functions | |
static WMatrix< T > | getSHFittingMatrix (const std::vector< WMatrixFixed< T, 3, 1 > > &orientations, int order, T lambda, bool withFRT) |
This calculates the transformation/fitting matrix T like in the 2007 Descoteaux paper. More... | |
static WMatrix< T > | getSHFittingMatrix (const std::vector< WUnitSphereCoordinates< T > > &orientations, int order, T lambda, bool withFRT) |
This calculates the transformation/fitting matrix T like in the 2007 Descoteaux paper. More... | |
static WMatrix< T > | getSHFittingMatrixForConstantSolidAngle (const std::vector< WMatrixFixed< T, 3, 1 > > &orientations, int order, T lambda) |
This calculates the transformation/fitting matrix T like in the 2010 Aganj paper. More... | |
static WMatrix< T > | getSHFittingMatrixForConstantSolidAngle (const std::vector< WUnitSphereCoordinates< T > > &orientations, int order, T lambda) |
This calculates the transformation/fitting matrix T like in the 2010 Aganj paper. More... | |
static WMatrix< T > | calcBaseMatrix (const std::vector< WUnitSphereCoordinates< T > > &orientations, int order) |
Calculates the base matrix B like in the dissertation of Descoteaux. More... | |
static WMatrix< std::complex< T > > | calcComplexBaseMatrix (std::vector< WUnitSphereCoordinates< T > > const &orientations, int order) |
Calculates the base matrix B for the complex spherical harmonics. More... | |
static WValue< T > | calcEigenvalues (size_t order) |
Calc eigenvalues for SH elements. More... | |
static WMatrix< T > | calcMatrixWithEigenvalues (size_t order) |
Calc matrix with the eigenvalues of the SH elements on its diagonal. More... | |
static WMatrix< T > | calcSmoothingMatrix (size_t order) |
This calcs the smoothing matrix L from the 2007 Descoteaux Paper "Regularized, Fast, and Robust Analytical Q-Ball Imaging". More... | |
static WMatrix< T > | calcFRTMatrix (size_t order) |
Calculates the Funk-Radon-Transformation-Matrix P from the 2007 Descoteaux Paper "Regularized, Fast, and Robust Analytical Q-Ball Imaging". More... | |
static WMatrix< T > | calcSHToTensorSymMatrix (std::size_t order) |
Calculates a matrix that converts spherical harmonics to symmetric tensors of equal or lower order. More... | |
static WMatrix< T > | calcSHToTensorSymMatrix (std::size_t order, const std::vector< WUnitSphereCoordinates< T > > &orientations) |
Calculates a matrix that converts spherical harmonics to symmetric tensors of equal or lower order. More... | |
Private Attributes | |
size_t | m_order |
order of the spherical harmonic More... | |
WValue< T > | m_SHCoefficients |
coefficients of the spherical harmonic More... | |
Class for symmetric spherical harmonics The index scheme of the coefficients/basis values is like in the Descoteaux paper "Regularized, Fast, and Robust Analytical Q-Ball Imaging".
Definition at line 51 of file WSymmetricSphericalHarmonic.h.
WSymmetricSphericalHarmonic< T >::WSymmetricSphericalHarmonic |
Default constructor.
Definition at line 287 of file WSymmetricSphericalHarmonic.h.
|
explicit |
Constructor.
SHCoefficients | the initial coefficients (stored like in the mentioned Descoteaux paper). |
Definition at line 294 of file WSymmetricSphericalHarmonic.h.
References WSymmetricSphericalHarmonic< T >::m_order, and WSymmetricSphericalHarmonic< T >::m_SHCoefficients.
|
virtual |
Destructor.
Definition at line 304 of file WSymmetricSphericalHarmonic.h.
void WSymmetricSphericalHarmonic< T >::applyFunkRadonTransformation | ( | WMatrix< T > const & | frtMat | ) |
Applies the Funk-Radon-Transformation.
This is faster than matrix multiplication. ( O(n) instead of O(n²) )
frtMat | the frt matrix as calculated by calcFRTMatrix() |
Definition at line 546 of file WSymmetricSphericalHarmonic.h.
References WMatrix< T >::getNbCols(), and WMatrix< T >::getNbRows().
|
static |
Calculates the base matrix B like in the dissertation of Descoteaux.
orientations | The vector with the used orientation on the unit sphere (usually the gradients of the HARDI) |
order | The order of the spherical harmonics intended to create |
Definition at line 656 of file WSymmetricSphericalHarmonic.h.
Referenced by WMCalculateGFA::moduleMain().
|
static |
Calculates the base matrix B for the complex spherical harmonics.
orientations | The vector with the used orientation on the unit sphere (usually the gradients of the HARDI) |
order | The order of the spherical harmonics intended to create |
Definition at line 692 of file WSymmetricSphericalHarmonic.h.
|
static |
Calc eigenvalues for SH elements.
order | The order of the spherical harmonic |
Definition at line 722 of file WSymmetricSphericalHarmonic.h.
|
static |
Calculates the Funk-Radon-Transformation-Matrix P from the 2007 Descoteaux Paper "Regularized, Fast, and Robust Analytical Q-Ball Imaging".
order | The order of the spherical harmonic |
Definition at line 763 of file WSymmetricSphericalHarmonic.h.
T WSymmetricSphericalHarmonic< T >::calcGFA | ( | std::vector< WUnitSphereCoordinates< T > > const & | orientations | ) | const |
Calculate the generalized fractional anisotropy for this ODF.
See: David S. Tuch, "Q-Ball Imaging", Magn. Reson. Med. 52, 2004, 1358-1372
orientations | A vector of unit sphere coordinates. |
Definition at line 450 of file WSymmetricSphericalHarmonic.h.
Referenced by WMCalculateGFA::perVoxelGFAFunc().
T WSymmetricSphericalHarmonic< T >::calcGFA | ( | WMatrix< T > const & | B | ) | const |
Calculate the generalized fractional anisotropy for this ODF.
This version of the function uses precomputed base functions (because calculating the base function values is rather expensive). Use this version if you want to compute the GFA for multiple ODFs with the same base functions. The base function Matrix can be computed using
See: David S. Tuch, "Q-Ball Imaging", Magn. Reson. Med. 52, 2004, 1358-1372
B | The matrix of SH base functions. |
Definition at line 494 of file WSymmetricSphericalHarmonic.h.
References WMatrix< T >::getNbCols(), and WMatrix< T >::getNbRows().
|
static |
Calc matrix with the eigenvalues of the SH elements on its diagonal.
order | The order of the spherical harmonic |
Definition at line 739 of file WSymmetricSphericalHarmonic.h.
References WValue< T >::size().
|
static |
Calculates a matrix that converts spherical harmonics to symmetric tensors of equal or lower order.
order | The order of the symmetric tensor. |
Definition at line 782 of file WSymmetricSphericalHarmonic.h.
Referenced by WMCalculateTensors::moduleMain().
|
static |
Calculates a matrix that converts spherical harmonics to symmetric tensors of equal or lower order.
order | The order of the symmetric tensor. |
orientations | A vector of at least (orderTensor+1) * (orderTensor+2) / 2 orientations. |
Definition at line 802 of file WSymmetricSphericalHarmonic.h.
|
static |
This calcs the smoothing matrix L from the 2007 Descoteaux Paper "Regularized, Fast, and Robust Analytical Q-Ball Imaging".
order | The order of the spherical harmonic |
Definition at line 751 of file WSymmetricSphericalHarmonic.h.
References WValue< T >::size().
const WValue< T > & WSymmetricSphericalHarmonic< T >::getCoefficients |
Returns the used coefficients (stored like in the mentioned 2007 Descoteaux paper).
Definition at line 342 of file WSymmetricSphericalHarmonic.h.
WValue< std::complex< T > > WSymmetricSphericalHarmonic< T >::getCoefficientsComplex |
Returns the coefficients for the complex base.
Definition at line 372 of file WSymmetricSphericalHarmonic.h.
WValue< T > WSymmetricSphericalHarmonic< T >::getCoefficientsSchultz |
Returns the coefficients for Schultz' SH base.
Definition at line 348 of file WSymmetricSphericalHarmonic.h.
size_t WSymmetricSphericalHarmonic< T >::getOrder |
Return the order of the spherical harmonic.
Definition at line 558 of file WSymmetricSphericalHarmonic.h.
|
static |
This calculates the transformation/fitting matrix T like in the 2007 Descoteaux paper.
The orientations are given as WMatrixFixed< T, 3, 1 >.
orientations | The vector with the used orientation on the unit sphere (usually the gradients of the HARDI) |
order | The order of the spherical harmonics intended to create |
lambda | Regularization parameter for smoothing matrix |
withFRT | include the Funk-Radon-Transformation? |
Definition at line 564 of file WSymmetricSphericalHarmonic.h.
|
static |
This calculates the transformation/fitting matrix T like in the 2007 Descoteaux paper.
The orientations are given as WUnitSphereCoordinates< T >.
orientations | The vector with the used orientation on the unit sphere (usually the gradients of the HARDI) |
order | The order of the spherical harmonics intended to create |
lambda | Regularization parameter for smoothing matrix |
withFRT | include the Funk-Radon-Transformation? |
Definition at line 579 of file WSymmetricSphericalHarmonic.h.
References WMatrix< T >::transposed().
|
static |
This calculates the transformation/fitting matrix T like in the 2010 Aganj paper.
The orientations are given as WUnitSphereCoordinates< T >.
orientations | The vector with the used orientation on the unit sphere (usually the gradients of the HARDI) |
order | The order of the spherical harmonics intended to create |
lambda | Regularization parameter for smoothing matrix |
Definition at line 603 of file WSymmetricSphericalHarmonic.h.
Referenced by WMHARDIToSphericalHarmonics::moduleMain().
|
static |
This calculates the transformation/fitting matrix T like in the 2010 Aganj paper.
The orientations are given as WUnitSphereCoordinates< T >.
orientations | The vector with the used orientation on the unit sphere (usually the gradients of the HARDI) |
order | The order of the spherical harmonics intended to create |
lambda | Regularization parameter for smoothing matrix |
Definition at line 617 of file WSymmetricSphericalHarmonic.h.
References wlog::debug(), and WMatrix< T >::transposed().
T WSymmetricSphericalHarmonic< T >::getValue | ( | const WUnitSphereCoordinates< T > & | coordinates | ) | const |
Return the value on the sphere.
coordinates | for the position on the unit sphere |
Definition at line 336 of file WSymmetricSphericalHarmonic.h.
References WUnitSphereCoordinates< T >::getPhi(), and WUnitSphereCoordinates< T >::getTheta().
T WSymmetricSphericalHarmonic< T >::getValue | ( | T | theta, |
T | phi | ||
) | const |
Return the value on the sphere.
theta | angle for the position on the unit sphere |
phi | angle for the position on the unit sphere |
Definition at line 309 of file WSymmetricSphericalHarmonic.h.
Referenced by WSphericalHarmonicsCoefficientsThread< T >::threadMain().
void WSymmetricSphericalHarmonic< T >::normalize |
Normalize this SH in place.
Definition at line 857 of file WSymmetricSphericalHarmonic.h.
void WSymmetricSphericalHarmonic< T >::setFromComplex | ( | WValue< std::complex< T > > const & | coeffs, |
int | order | ||
) |
Set the coeffs from complex base coeffs.
coeffs | The complex coefficients, sorted by order, then phase, ascending. |
order | The order of the spherical harmonic. |
Definition at line 403 of file WSymmetricSphericalHarmonic.h.
|
private |
order of the spherical harmonic
Definition at line 280 of file WSymmetricSphericalHarmonic.h.
Referenced by WSymmetricSphericalHarmonic< T >::WSymmetricSphericalHarmonic().
|
private |
coefficients of the spherical harmonic
Definition at line 283 of file WSymmetricSphericalHarmonic.h.
Referenced by WSymmetricSphericalHarmonic< T >::WSymmetricSphericalHarmonic().