SLIMMER
Public Member Functions | Static Public Attributes | Protected Attributes
StackSetBiasStabilizer< T > Class Template Reference

A class for slice stack bias field inconsistency correction. (Kim et al, TMI Sept, 2011.) More...

#include <StackSetBiasStabilizer.h>

List of all members.

Public Member Functions

 StackSetBiasStabilizer (unsigned int deg)
 Constructor.
 ~StackSetBiasStabilizer ()
 Destructor.
void setBlur (float b)
 Sets the blurring kernel size for intersection profile smoothing.
template<typename Tk >
void getFilter (float b, SimpleVTVec< Tk > &filter) const
 Computes 1D blurring kernel to smooth intersection.
template<typename Tss >
SimpleVTVec< double > Correct (StackSet< Tss > &ss_in, StackSet< Tss > &ss_out) const
 Main function.
template<typename Tss , typename Td >
void ComputeBiasCovarianceMatrix (StackSet< Tss > &ss, SimpleVTMat< Td > &M) const
 Bias Covariance matrix.
template<typename Tss , typename Td >
SimpleVTVec< double > ComputeIntensityDistributionMatrix (StackSet< Tss > &ss, SimpleVTMat< Td > &A) const
 Computes the bias constraint matrix, and stores it into the referenced SimpleVTMat.
template<typename Tss >
SimpleVTVec< double > GetInitialParam (StackSet< Tss > &ss_in) const
 Returns the initial bias parameter vector.
template<typename Tss , typename Td >
void ApplyNewParam (const StackSet< Tss > &ss_in, const SimpleVTVec< Td > &params, StackSet< Tss > &ss_out) const
 Applies the bias parameters to a StackSet.
int EvaluateW (SliceIntersection &intx, SimpleVTVec< float > &w, const SimpleTField< float > &mask) const
 Calculate the weight for an intersection, and returns how many samples along the intersection are valid.
template<>
const char _versionID []

Static Public Attributes

static const char _versionID []

Protected Attributes

unsigned int _deg
unsigned int _nparam
float _blur
float bmax

Detailed Description

template<typename T = short>
class StackSetBiasStabilizer< T >

A class for slice stack bias field inconsistency correction. (Kim et al, TMI Sept, 2011.)

It uses a polynomial bias field model, and assumes the true slice location is known. The bias field inconsistency is resolved by minimizing the intensithy difference between all intersecting slices, while resolving the mathematical moments of the bias field corrected images. Using a polynomial bias field model, this process is a constrained quadratic problem.

\begin{eqnarray*} \hat\Theta&=&\arg\min_\Theta \Theta^\top {\mathbf M}\Theta\label{eqn:jointeqA}\\ &&{\rm subject~to~~~}{\boldmath V}^\top \Theta=\mu\label{eqn:jointeqB} \end{eqnarray*}

StackSetBiasStabilizer provides methods to compute $\mathbf M$(SimpleVTMat), $\boldmath V$(SimpleVTMat), $\mu$(SimpleVTVec) and finally $\hat\Theta$(SimpleVTVec), and a method to apply the correction to a StackSet.

Author:
Kio Kim 2007-2011

Member Function Documentation

template<typename T = short>
template<typename Tss , typename Td >
void StackSetBiasStabilizer< T >::ApplyNewParam ( const StackSet< Tss > &  ss_in,
const SimpleVTVec< Td > &  params,
StackSet< Tss > &  ss_out 
) const [inline]

Applies the bias parameters to a StackSet.

Given an input StackSet, a vector of bias parameters, and a reference to the output StackSet, this function copies the input StackSet to the output StackSet and applies the computed bias parameters to the output StackSet.

template<typename T = short>
template<typename Tss , typename Td >
SimpleVTVec<double> StackSetBiasStabilizer< T >::ComputeIntensityDistributionMatrix ( StackSet< Tss > &  ss,
SimpleVTMat< Td > &  A 
) const [inline]

Computes the bias constraint matrix, and stores it into the referenced SimpleVTMat.

It also returns

template<typename T = short>
template<typename Tk >
void StackSetBiasStabilizer< T >::getFilter ( float  b,
SimpleVTVec< Tk > &  filter 
) const [inline]

Computes 1D blurring kernel to smooth intersection.

Parameters:
[in]b$\sigma$ of Gaussian kernel
[out]filterblurring kernel (SimpleVTVec)
 All Classes Functions Variables Typedefs