Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions

itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType > Class Template Reference

#include <itkTensorImageToDiffusionImageFilter.h>

List of all members.

Public Types

typedef TInputScalarType InputScalarType
typedef itk::DiffusionTensor3D
< InputScalarType
InputPixelType
typedef itk::Image
< InputPixelType, 3 > 
InputImageType
typedef InputImageType::RegionType InputImageRegionType
typedef TOutputScalarType OutputScalarType
typedef itk::VectorImage
< OutputScalarType, 3 > 
OutputImageType
typedef OutputImageType::PixelType OutputPixelType
typedef OutputImageType::RegionType OutputImageRegionType
typedef OutputScalarType BaselineScalarType
typedef BaselineScalarType BaselinePixelType
typedef itk::Image
< BaselinePixelType, 3 > 
BaselineImageType
typedef
BaselineImageType::RegionType 
BaselineImageRegionType
typedef
TensorImageToDiffusionImageFilter 
Self
typedef ImageToImageFilter
< InputImageType,
OutputImageType
Superclass
typedef SmartPointer< SelfPointer
typedef SmartPointer< const SelfConstPointer
typedef Vector< double, 3 > GradientType
typedef std::vector< GradientTypeGradientListType

Public Member Functions

virtual const char * GetClassName () const
 itkStaticConstMacro (ImageDimension, unsigned int, OutputImageType::ImageDimension)
void SetGradientList (const GradientListType list)
GradientListType GetGradientList (void) const
void SetBValue (const double &bval)

Static Public Member Functions

static Pointer New ()

Protected Member Functions

 TensorImageToDiffusionImageFilter ()
 ~TensorImageToDiffusionImageFilter ()
void PrintSelf (std::ostream &os, Indent indent) const
void BeforeThreadedGenerateData (void)
void ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, int)

Detailed Description

template<class TInputScalarType, class TOutputScalarType>
class itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >

Definition at line 27 of file itkTensorImageToDiffusionImageFilter.h.


Member Typedef Documentation

template<class TInputScalarType , class TOutputScalarType >
typedef BaselineImageType::RegionType itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::BaselineImageRegionType

Definition at line 46 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef itk::Image<BaselinePixelType,3> itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::BaselineImageType

Definition at line 45 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef BaselineScalarType itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::BaselinePixelType

Definition at line 44 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef OutputScalarType itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::BaselineScalarType

Definition at line 43 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef SmartPointer<const Self> itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::ConstPointer

Definition at line 52 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef std::vector<GradientType> itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::GradientListType

Definition at line 62 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef Vector<double,3> itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::GradientType

Definition at line 59 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef InputImageType::RegionType itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::InputImageRegionType

Definition at line 36 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef itk::Image<InputPixelType,3> itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::InputImageType

Definition at line 35 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef itk::DiffusionTensor3D<InputScalarType> itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::InputPixelType

Definition at line 34 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef TInputScalarType itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::InputScalarType

Definition at line 33 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef OutputImageType::RegionType itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::OutputImageRegionType

Definition at line 41 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef itk::VectorImage<OutputScalarType,3> itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::OutputImageType

Definition at line 39 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef OutputImageType::PixelType itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::OutputPixelType

Definition at line 40 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef TOutputScalarType itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::OutputScalarType

Definition at line 38 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef SmartPointer<Self> itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::Pointer

Definition at line 51 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef TensorImageToDiffusionImageFilter itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::Self

Definition at line 48 of file itkTensorImageToDiffusionImageFilter.h.

template<class TInputScalarType , class TOutputScalarType >
typedef ImageToImageFilter<InputImageType, OutputImageType> itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::Superclass

Definition at line 49 of file itkTensorImageToDiffusionImageFilter.h.


Constructor & Destructor Documentation

template<class TInputScalarType , class TOutputScalarType >
itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::TensorImageToDiffusionImageFilter (  ) [inline, protected]

Definition at line 78 of file itkTensorImageToDiffusionImageFilter.h.

    {
      m_BValue = 1.0;
      m_BaselineImage = 0;
    };
template<class TInputScalarType , class TOutputScalarType >
itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::~TensorImageToDiffusionImageFilter (  ) [inline, protected]

Definition at line 83 of file itkTensorImageToDiffusionImageFilter.h.

{};

Member Function Documentation

template<class TInputScalarType , class TOutputScalarType >
void itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::BeforeThreadedGenerateData ( void   ) [protected]

Definition at line 63 of file itkTensorImageToDiffusionImageFilter.txx.

  {

    if( m_GradientList.size()==0 )
    {
      throw itk::ExceptionObject (__FILE__,__LINE__,"Error: gradient list is empty, cannot generate DWI.");      
    }

    // create a B0 image by taking the norm of the tensor field * scale:
    typedef itk::TensorToL2NormImageFilter<InputImageType, itk::Image<InputScalarType,3> >
      TensorToL2NormFilterType;

    typename TensorToL2NormFilterType::Pointer myFilter1 = TensorToL2NormFilterType::New();
    myFilter1->SetInput (this->GetInput());

    try
    {
      myFilter1->Update();
    }
    catch (itk::ExceptionObject &e)
    {
      std::cerr << e;
      return;
    }

    typename itk::RescaleIntensityImageFilter< itk::Image<InputScalarType,3>, BaselineImageType>::Pointer rescaler=
      itk::RescaleIntensityImageFilter<itk::Image<InputScalarType,3>, BaselineImageType>::New();

    rescaler->SetOutputMinimum ( 0 );
    rescaler->SetOutputMaximum ( 32767 );
    rescaler->SetInput ( myFilter1->GetOutput() );
    try
    {
      rescaler->Update();
    }
    catch (itk::ExceptionObject &e)
    {
      std::cerr << e;
      return;
    }

    m_BaselineImage = rescaler->GetOutput();

    typename OutputImageType::Pointer outImage = OutputImageType::New();
    outImage->SetSpacing( this->GetInput()->GetSpacing() );   // Set the image spacing
    outImage->SetOrigin( this->GetInput()->GetOrigin() );     // Set the image origin
    outImage->SetDirection( this->GetInput()->GetDirection() );  // Set the image direction
    outImage->SetLargestPossibleRegion( this->GetInput()->GetLargestPossibleRegion());
    outImage->SetBufferedRegion( this->GetInput()->GetLargestPossibleRegion() );
    outImage->SetRequestedRegion( this->GetInput()->GetLargestPossibleRegion() );
    outImage->SetVectorLength(m_GradientList.size()+1);
    outImage->Allocate();

    this->SetNumberOfRequiredOutputs (1);
    this->SetNthOutput (0, outImage);

  }
template<class TInputScalarType , class TOutputScalarType >
virtual const char* itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::GetClassName (  ) const [virtual]
template<class TInputScalarType , class TOutputScalarType >
GradientListType itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::GetGradientList ( void   ) const [inline]

Definition at line 70 of file itkTensorImageToDiffusionImageFilter.h.

    {return m_GradientList;}
template<class TInputScalarType , class TOutputScalarType >
itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::itkStaticConstMacro ( ImageDimension  ,
unsigned  int,
OutputImageType::ImageDimension   
)
template<class TInputScalarType , class TOutputScalarType >
static Pointer itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::New (  ) [static]
template<class TInputScalarType , class TOutputScalarType >
void itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const [inline, protected]

Definition at line 85 of file itkTensorImageToDiffusionImageFilter.h.

    {
      Superclass::PrintSelf (os, indent);      
    }
template<class TInputScalarType , class TOutputScalarType >
void itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::SetBValue ( const double &  bval ) [inline]

Definition at line 74 of file itkTensorImageToDiffusionImageFilter.h.

    { m_BValue = bval; }
template<class TInputScalarType , class TOutputScalarType >
void itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::SetGradientList ( const GradientListType  list ) [inline]

Manually Set/Get a list of gradients

Definition at line 65 of file itkTensorImageToDiffusionImageFilter.h.

    {
      m_GradientList = list;
      this->Modified();
    }
template<class TInputScalarType , class TOutputScalarType >
void itk::TensorImageToDiffusionImageFilter< TInputScalarType, TOutputScalarType >::ThreadedGenerateData ( const OutputImageRegionType outputRegionForThread,
int  threadId 
) [protected]

Definition at line 124 of file itkTensorImageToDiffusionImageFilter.txx.

References QuadProgPP::exp().

  {

    typedef ImageRegionIterator<OutputImageType>      IteratorOutputType;
    typedef ImageRegionConstIterator<InputImageType>  IteratorInputType;
    typedef ImageRegionConstIterator<BaselineImageType>  IteratorBaselineType;

    unsigned long numPixels = outputRegionForThread.GetNumberOfPixels();
    unsigned long step = numPixels/100;
    unsigned long progress = 0;

    IteratorOutputType itOut (this->GetOutput(0), outputRegionForThread);
    IteratorInputType  itIn (this->GetInput(), outputRegionForThread);
    IteratorBaselineType itB0 (m_BaselineImage, outputRegionForThread);

    if( threadId==0 )
    {
      this->UpdateProgress (0.0);
    }


    while(!itIn.IsAtEnd())
    {

      if( this->GetAbortGenerateData() )
      {
        throw itk::ProcessAborted(__FILE__,__LINE__);
      }

      InputPixelType T = itIn.Get();

      BaselinePixelType b0 = itB0.Get();

      OutputPixelType out; 
      out.SetSize(m_GradientList.size()+1);

      for( unsigned int i=0; i<m_GradientList.size(); i++)
      {

        if( b0 > 0)
        {
          GradientType g = m_GradientList[i];
          
          InputPixelType S;
          S[0] = g[0]*g[0];
          S[1] = g[1]*g[0];
          S[2] = g[2]*g[0];
          S[3] = g[1]*g[1];
          S[4] = g[2]*g[1];
          S[5] = g[2]*g[2];
          
          double res = 
              T[0]*S[0] + T[1]*S[1] + T[2]*S[2] + 
              T[1]*S[1] + T[3]*S[3] + T[4]*S[4] + 
              T[2]*S[2] + T[4]*S[4] + T[5]*S[5];
          
          out[i] = static_cast<OutputScalarType>( 1.0*b0*exp ( -1.0 * m_BValue * res ) );
        }

      }

      out[m_GradientList.size()] = b0;

      itOut.Set(out);

      if( threadId==0 && step>0)
      {        
        if( (progress%step)==0 )
        {
          this->UpdateProgress ( double(progress)/double(numPixels) );
        }
      }

      ++progress;
      ++itB0;
      ++itIn;
      ++itOut;

    }

    if( threadId==0 )
    { 
      this->UpdateProgress (1.0);
    }  
  }

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines