Public Member Functions | Static Public Attributes | Protected Slots | Protected Member Functions | Protected Attributes | Friends

QmitkQBallReconstructionView Class Reference

QmitkQBallReconstructionView. More...

#include <QmitkQBallReconstructionView.h>

Inheritance diagram for QmitkQBallReconstructionView:
Inheritance graph
[legend]
Collaboration diagram for QmitkQBallReconstructionView:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 QmitkQBallReconstructionView ()
virtual ~QmitkQBallReconstructionView ()
virtual void CreateQtPartControl (QWidget *parent)
virtual void CreateConnections ()
 Creation of the connections of main and control widget.
virtual void Activated ()
 Called when the functionality is activated.
virtual void Deactivated ()
virtual void StdMultiWidgetAvailable (QmitkStdMultiWidget &stdMultiWidget)
virtual void StdMultiWidgetNotAvailable ()

Static Public Attributes

static const std::string VIEW_ID = "org.mitk.views.qballreconstruction"
static const int nrconvkernels = 252

Protected Slots

void ReconstructStandard ()
void AdvancedCheckboxClicked ()
void MethodChoosen (int method)
void Reconstruct (int method, int normalization)
void NumericalQBallReconstruction (mitk::DataStorage::SetOfObjects::Pointer inImages, int normalization)
void AnalyticalQBallReconstruction (mitk::DataStorage::SetOfObjects::Pointer inImages, int normalization)

Protected Member Functions

template<int L>
void TemplatedAnalyticalQBallReconstruction (mitk::DiffusionImage< DiffusionPixelType > *vols, float lambda, std::string nodename, std::vector< mitk::DataNode::Pointer > *nodes, int normalization)
void SetDefaultNodeProperties (mitk::DataNode::Pointer node, std::string name)

Protected Attributes

Ui::QmitkQBallReconstructionViewControlsm_Controls
QmitkStdMultiWidgetm_MultiWidget
berry::ISelectionListener::Pointer m_SelListener
berry::IStructuredSelection::ConstPointer m_CurrentSelection

Friends

struct QbrSelListener

Detailed Description

QmitkQBallReconstructionView.

Document your class here.

See also:
QmitkFunctionality

Definition at line 47 of file QmitkQBallReconstructionView.h.


Constructor & Destructor Documentation

QmitkQBallReconstructionView::QmitkQBallReconstructionView (  )

Definition at line 130 of file QmitkQBallReconstructionView.cpp.

QmitkQBallReconstructionView::~QmitkQBallReconstructionView (  ) [virtual]

Definition at line 174 of file QmitkQBallReconstructionView.cpp.

References berry::WorkbenchPart::GetSite(), and m_SelListener.

{
  this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->RemovePostSelectionListener(/*"org.mitk.views.datamanager",*/ m_SelListener);
}

Member Function Documentation

void QmitkQBallReconstructionView::Activated (  ) [virtual]

Called when the functionality is activated.

Reimplemented from QmitkFunctionality.

Definition at line 235 of file QmitkQBallReconstructionView.cpp.

References berry::SmartPointer< TObjectType >::Cast(), berry::WorkbenchPart::GetSite(), m_CurrentSelection, and m_SelListener.

{
  QmitkFunctionality::Activated();

  berry::ISelection::ConstPointer sel(
    this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager"));
  m_CurrentSelection = sel.Cast<const IStructuredSelection>();
  m_SelListener.Cast<QbrSelListener>()->DoSelectionChanged(sel);
}
void QmitkQBallReconstructionView::AdvancedCheckboxClicked (  ) [protected, slot]

Definition at line 330 of file QmitkQBallReconstructionView.cpp.

References Ui_QmitkQBallReconstructionViewControls::frame_2, Ui_QmitkQBallReconstructionViewControls::label_2, m_Controls, Ui_QmitkQBallReconstructionViewControls::m_OutputB0Image, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionLambdaLineEdit, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionLambdaTextLabel_2, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionMaxLLevelComboBox, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionMaxLLevelTextLabel_2, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionNumberThreadsLabel_2, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionNumberThreadsSpinbox, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionThreasholdEdit, and Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionThresholdLabel_2.

Referenced by CreateConnections(), and CreateQtPartControl().

{
  bool check = m_Controls->
    m_AdvancedCheckbox->isChecked();
  
  m_Controls->m_QBallReconstructionMaxLLevelTextLabel_2->setVisible(check);
  m_Controls->m_QBallReconstructionMaxLLevelComboBox->setVisible(check);
  m_Controls->m_QBallReconstructionLambdaTextLabel_2->setVisible(check);
  m_Controls->m_QBallReconstructionLambdaLineEdit->setVisible(check);
 
  m_Controls->m_QBallReconstructionThresholdLabel_2->setVisible(check);
  m_Controls->m_QBallReconstructionThreasholdEdit->setVisible(check);
  m_Controls->m_OutputB0Image->setVisible(check);
  m_Controls->m_QBallReconstructionNumberThreadsLabel_2->setVisible(check);
  m_Controls->m_QBallReconstructionNumberThreadsSpinbox->setVisible(check);
  m_Controls->label_2->setVisible(check);

  //m_Controls->textLabel1_2->setVisible(check);
  //m_Controls->m_QBallReconstructionLambdaStepLineEdit->setVisible(check);
  //m_Controls->textLabel1_3->setVisible(check);
  
  m_Controls->frame_2->setVisible(check);
}
void QmitkQBallReconstructionView::AnalyticalQBallReconstruction ( mitk::DataStorage::SetOfObjects::Pointer  inImages,
int  normalization 
) [protected, slot]

Definition at line 511 of file QmitkQBallReconstructionView.cpp.

References QmitkFunctionality::GetDefaultDataStorage(), mitk::StatusBar::GetInstance(), mitk::ProgressBar::GetInstance(), m_Controls, m_MultiWidget, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionLambdaLineEdit, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionMaxLLevelComboBox, MBI_DEBUG, MBI_INFO, and QmitkStdMultiWidget::RequestUpdate().

Referenced by Reconstruct().

{
  try
  {
    itk::TimeProbe clock;

    int nrFiles = inImages->size();
    if (!nrFiles) return;

    std::vector<float> lambdas;
    float minLambda  = m_Controls->m_QBallReconstructionLambdaLineEdit->text().toFloat();
    lambdas.push_back(minLambda);
    int nLambdas = lambdas.size();
   

    QString status;
    mitk::ProgressBar::GetInstance()->AddStepsToDo(nrFiles*nLambdas);

    mitk::DataStorage::SetOfObjects::const_iterator itemiter( inImages->begin() ); 
    mitk::DataStorage::SetOfObjects::const_iterator itemiterend( inImages->end() ); 

    std::vector<mitk::DataNode::Pointer>* nodes
      = new std::vector<mitk::DataNode::Pointer>();
    while ( itemiter != itemiterend ) // for all items
    {

      mitk::DiffusionImage<DiffusionPixelType>* vols = 
        static_cast<mitk::DiffusionImage<DiffusionPixelType>*>(
        (*itemiter)->GetData());

      std::string nodename;
      (*itemiter)->GetStringProperty("name",nodename);
      itemiter++;

      // QBALL RECONSTRUCTION
      clock.Start();
      MBI_INFO << "QBall reconstruction ";
      mitk::StatusBar::GetInstance()->DisplayText(status.sprintf(
        "QBall reconstruction for %s", nodename.c_str()).toAscii());

      for(int i=0; i<nLambdas; i++)
      {

        float currentLambda = lambdas[i];

        switch(m_Controls->m_QBallReconstructionMaxLLevelComboBox->currentIndex())
        {
        case 0:
          {
            TemplatedAnalyticalQBallReconstruction<2>(vols, currentLambda, nodename, nodes, normalization);
            break;
          }
        case 1:
          {
            TemplatedAnalyticalQBallReconstruction<4>(vols, currentLambda, nodename, nodes, normalization);
            break;
          }
        case 2:
          {
            TemplatedAnalyticalQBallReconstruction<6>(vols, currentLambda, nodename, nodes, normalization);
            break;
          }
        case 3:
          {
            TemplatedAnalyticalQBallReconstruction<8>(vols, currentLambda, nodename, nodes, normalization);
            break;
          }
        }

        clock.Stop();
        MBI_DEBUG << "took " << clock.GetMeanTime() << "s." ;
        mitk::ProgressBar::GetInstance()->Progress();

      }
    }

    std::vector<mitk::DataNode::Pointer>::iterator nodeIt;
    for(nodeIt = nodes->begin(); nodeIt != nodes->end(); ++nodeIt)
      GetDefaultDataStorage()->Add(*nodeIt);

    m_MultiWidget->RequestUpdate();

    mitk::StatusBar::GetInstance()->DisplayText(status.sprintf("Finished Processing %d Files", nrFiles).toAscii());

  }
  catch (itk::ExceptionObject &ex)
  {
    MBI_INFO << ex ;
    return ;
  }
}
void QmitkQBallReconstructionView::CreateConnections (  ) [virtual]

Creation of the connections of main and control widget.

Definition at line 224 of file QmitkQBallReconstructionView.cpp.

References AdvancedCheckboxClicked(), Ui_QmitkQBallReconstructionViewControls::m_AdvancedCheckbox, Ui_QmitkQBallReconstructionViewControls::m_ButtonStandard, m_Controls, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionMethodComboBox, MethodChoosen(), and ReconstructStandard().

Referenced by CreateQtPartControl().

{
  if ( m_Controls )
  {
    connect( (QObject*)(m_Controls->m_ButtonStandard), SIGNAL(clicked()), this, SLOT(ReconstructStandard()) );
    connect( (QObject*)(m_Controls->m_AdvancedCheckbox), SIGNAL(clicked()), this, SLOT(AdvancedCheckboxClicked()) );
    connect( (QObject*)(m_Controls->m_QBallReconstructionMethodComboBox), SIGNAL(currentIndexChanged(int)), this, SLOT(MethodChoosen(int)) );

  }
}
void QmitkQBallReconstructionView::CreateQtPartControl ( QWidget *  parent ) [virtual]

Implements berry::QtViewPart.

Definition at line 179 of file QmitkQBallReconstructionView.cpp.

References AdvancedCheckboxClicked(), berry::SmartPointer< TObjectType >::Cast(), CreateConnections(), berry::WorkbenchPart::GetSite(), m_Controls, m_CurrentSelection, Ui_QmitkQBallReconstructionViewControls::m_Description, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionMaxLLevelComboBox, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionMethodComboBox, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionNumberThreadsSpinbox, m_SelListener, QbrSelListener, and Ui_QmitkQBallReconstructionViewControls::setupUi().

{
  if (!m_Controls)
  {
    // create GUI widgets
    m_Controls = new Ui::QmitkQBallReconstructionViewControls;
    m_Controls->setupUi(parent);
    this->CreateConnections();

    QStringList items;
    items << "2" << "4" << "6" << "8";
    m_Controls->m_QBallReconstructionMaxLLevelComboBox->addItems(items);
    m_Controls->m_QBallReconstructionMaxLLevelComboBox->setCurrentIndex(1);
    m_Controls->m_Description->setText("Spherical harmonics recon. (Desoteaux2007)");

    m_Controls->m_QBallReconstructionNumberThreadsSpinbox->setValue(8);

#ifndef DIFFUSION_IMAGING_EXTENDED
    m_Controls->m_QBallReconstructionMethodComboBox->removeItem(3);
#endif

    AdvancedCheckboxClicked();
    // define data type for combobox
    //m_Controls->m_ImageSelector->SetDataStorage( this->GetDefaultDataStorage() );
    //m_Controls->m_ImageSelector->SetPredicate( mitk::NodePredicateDataType::New("DiffusionImage") );
  }

  m_SelListener = berry::ISelectionListener::Pointer(new QbrSelListener(this));
  this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener(/*"org.mitk.views.datamanager",*/ m_SelListener);
  berry::ISelection::ConstPointer sel(
    this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager"));
  m_CurrentSelection = sel.Cast<const IStructuredSelection>();
  m_SelListener.Cast<QbrSelListener>()->DoSelectionChanged(sel);
}
void QmitkQBallReconstructionView::Deactivated (  ) [virtual]

Only called when IsExclusiveFunctionality() returns true.

See also:
IsExclusiveFunctionality()

Reimplemented from QmitkFunctionality.

Definition at line 245 of file QmitkQBallReconstructionView.cpp.

void QmitkQBallReconstructionView::MethodChoosen ( int  method ) [protected, slot]

Definition at line 303 of file QmitkQBallReconstructionView.cpp.

References m_Controls, and Ui_QmitkQBallReconstructionViewControls::m_Description.

Referenced by CreateConnections().

{
  switch(method)
  {
  case 0:
    m_Controls->m_Description->setText("Numerical recon. (Tuch2004)");
    break;
  case 1:
    m_Controls->m_Description->setText("Spherical harmonics recon. (Desoteaux2007)");
    break;
  case 2:
    m_Controls->m_Description->setText("SH recon. with solid angle consideration (Aganj2009)");
    break;
  case 3:
    m_Controls->m_Description->setText("SH solid angle with non-neg. constraint (Goh2009)");
    break;
  case 4:
    m_Controls->m_Description->setText("SH recon. of the plain ADC-profiles");
    break;
  case 5:
    m_Controls->m_Description->setText("SH recon. of the raw diffusion signal");
    break;
  }
}
void QmitkQBallReconstructionView::NumericalQBallReconstruction ( mitk::DataStorage::SetOfObjects::Pointer  inImages,
int  normalization 
) [protected, slot]

Definition at line 391 of file QmitkQBallReconstructionView.cpp.

References mitk::DiffusionImage< TPixelType >::GetB_Value(), mitk::DiffusionImage< TPixelType >::GetDirections(), mitk::StatusBar::GetInstance(), mitk::ProgressBar::GetInstance(), mitk::DiffusionImage< TPixelType >::GetVectorImage(), MBI_DEBUG, MBI_INFO, mitk::StringProperty::New(), mitk::Image::New(), mitk::DataNode::New(), mitk::QBallImage::New(), and QBALL_ODFSIZE.

Referenced by Reconstruct().

{
  try
  {
    itk::TimeProbe clock;

    int nrFiles = inImages->size();
    if (!nrFiles) return;

    QString status;
    mitk::ProgressBar::GetInstance()->AddStepsToDo(nrFiles);

    mitk::DataStorage::SetOfObjects::const_iterator itemiter( inImages->begin() ); 
    mitk::DataStorage::SetOfObjects::const_iterator itemiterend( inImages->end() ); 

    std::vector<mitk::DataNode::Pointer> nodes;
    while ( itemiter != itemiterend ) // for all items
    {

      mitk::DiffusionImage<DiffusionPixelType>* vols = 
        static_cast<mitk::DiffusionImage<DiffusionPixelType>*>(
        (*itemiter)->GetData());
      
      std::string nodename;
      (*itemiter)->GetStringProperty("name", nodename);
      ++itemiter;

      // QBALL RECONSTRUCTION
      clock.Start();
      MBI_INFO << "QBall reconstruction ";
      mitk::StatusBar::GetInstance()->DisplayText(status.sprintf(
        "QBall reconstruction for %s", nodename.c_str()).toAscii());

      typedef itk::DiffusionQballReconstructionImageFilter
        <DiffusionPixelType, DiffusionPixelType, TTensorPixelType, QBALL_ODFSIZE>
        QballReconstructionImageFilterType;
      
      QballReconstructionImageFilterType::Pointer filter = 
        QballReconstructionImageFilterType::New();
      filter->SetGradientImage( vols->GetDirections(), vols->GetVectorImage() );
      filter->SetNumberOfThreads( m_Controls->m_QBallReconstructionNumberThreadsSpinbox->value() );
      filter->SetBValue(vols->GetB_Value());  
      filter->SetThreshold( m_Controls->m_QBallReconstructionThreasholdEdit->text().toFloat() );

      switch(normalization)
      {
      case 0:
        {
          filter->SetNormalizationMethod(QballReconstructionImageFilterType::QBR_STANDARD);
          break;
        }
      case 1:
        {
          filter->SetNormalizationMethod(QballReconstructionImageFilterType::QBR_B_ZERO_B_VALUE);
          break;
        }
      case 2:
        {
          filter->SetNormalizationMethod(QballReconstructionImageFilterType::QBR_B_ZERO);
          break;
        }
      case 3:
        {
          filter->SetNormalizationMethod(QballReconstructionImageFilterType::QBR_NONE);
          break;
        }
      default:
        {
          filter->SetNormalizationMethod(QballReconstructionImageFilterType::QBR_STANDARD);
        }
      }

      filter->Update();
      clock.Stop();
      MBI_DEBUG << "took " << clock.GetMeanTime() << "s." ;

      // ODFs TO DATATREE
      mitk::QBallImage::Pointer image = mitk::QBallImage::New();
      image->InitializeByItk( filter->GetOutput() );
      //image->SetImportVolume( filter->GetOutput()->GetBufferPointer(), 0, 0, mitk::Image::ImportMemoryManagementType::ManageMemory );
      image->SetVolume( filter->GetOutput()->GetBufferPointer() );
      mitk::DataNode::Pointer node=mitk::DataNode::New();
      node->SetData( image );
      QString newname;
      newname = newname.append(nodename.c_str());
      newname = newname.append("_QN%1").arg(normalization);
      SetDefaultNodeProperties(node, newname.toStdString());
      nodes.push_back(node);
      
      // B-Zero TO DATATREE
      if(m_Controls->m_OutputB0Image->isChecked())
      {
        mitk::Image::Pointer image4 = mitk::Image::New();
        image4->InitializeByItk( filter->GetBZeroImage().GetPointer() );
        image4->SetVolume( filter->GetBZeroImage()->GetBufferPointer() );
        mitk::DataNode::Pointer node4=mitk::DataNode::New();
        node4->SetData( image4 );
        node4->SetProperty( "name", mitk::StringProperty::New(
          QString(nodename.c_str()).append("_b0").toStdString()) );
        nodes.push_back(node4);
      }
      mitk::ProgressBar::GetInstance()->Progress();

    }

    std::vector<mitk::DataNode::Pointer>::iterator nodeIt;
    for(nodeIt = nodes.begin(); nodeIt != nodes.end(); ++nodeIt)
      GetDefaultDataStorage()->Add(*nodeIt);

    mitk::StatusBar::GetInstance()->DisplayText(status.sprintf("Finished Processing %d Files", nrFiles).toAscii());
    m_MultiWidget->RequestUpdate();

  }
  catch (itk::ExceptionObject &ex)
  {
    MBI_INFO << ex ;
    return ;
  }
}
void QmitkQBallReconstructionView::Reconstruct ( int  method,
int  normalization 
) [protected, slot]

Definition at line 354 of file QmitkQBallReconstructionView.cpp.

References AnalyticalQBallReconstruction(), berry::SmartPointer< TObjectType >::Cast(), m_CurrentSelection, and NumericalQBallReconstruction().

Referenced by ReconstructStandard().

{
  if (m_CurrentSelection)
  {
    mitk::DataStorage::SetOfObjects::Pointer set =
      mitk::DataStorage::SetOfObjects::New();

    int at = 0;
    for (IStructuredSelection::iterator i = m_CurrentSelection->Begin(); 
      i != m_CurrentSelection->End(); 
      ++i)
    {

      if (mitk::DataNodeObject::Pointer nodeObj = i->Cast<mitk::DataNodeObject>())
      {
        mitk::DataNode::Pointer node = nodeObj->GetDataNode();
        if(QString("DiffusionImage").compare(node->GetData()->GetNameOfClass())==0)
        {
          set->InsertElement(at++, node);
        }
      }
    }

    if(method == 0)
    {
      NumericalQBallReconstruction(set, normalization);
    }

    if(method == 1)
    {
      AnalyticalQBallReconstruction(set, normalization);
    }

  }
}
void QmitkQBallReconstructionView::ReconstructStandard (  ) [protected, slot]

Definition at line 250 of file QmitkQBallReconstructionView.cpp.

References m_Controls, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionMethodComboBox, and Reconstruct().

Referenced by CreateConnections().

{

  int index = m_Controls->m_QBallReconstructionMethodComboBox->currentIndex();

#ifndef DIFFUSION_IMAGING_EXTENDED
    if(index>=3)
    {
      index = index + 1;
    }
#endif

  switch(index)
  {
  case 0:
    {
      // Numerical
      Reconstruct(0,0);
      break;
    }
  case 1:
    {
      // Standard
      Reconstruct(1,0);
      break;
    }
  case 2:
    {
      // Solid Angle
      Reconstruct(1,6);
      break;
    }
  case 3:
    {
      // Constrained Solid Angle
      Reconstruct(1,7);
      break;
    }
  case 4:
    {
      // ADC
      Reconstruct(1,4);
      break;
    }
  case 5:
    {
      // Raw Signal
      Reconstruct(1,5);
      break;
    }
  }
}
void QmitkQBallReconstructionView::SetDefaultNodeProperties ( mitk::DataNode::Pointer  node,
std::string  name 
) [protected]

Definition at line 698 of file QmitkQBallReconstructionView.cpp.

References mitk::StringProperty::New(), mitk::BoolProperty::New(), mitk::OdfScaleByProperty::New(), mitk::OdfNormalizationMethodProperty::New(), mitk::FloatProperty::New(), and mitk::IntProperty::New().

Referenced by TemplatedAnalyticalQBallReconstruction().

{
  node->SetProperty( "ShowMaxNumber", mitk::IntProperty::New( 500 ) );
  node->SetProperty( "Scaling", mitk::FloatProperty::New( 1.0 ) );
  node->SetProperty( "Normalization", mitk::OdfNormalizationMethodProperty::New());
  node->SetProperty( "ScaleBy", mitk::OdfScaleByProperty::New());
  node->SetProperty( "IndexParam1", mitk::FloatProperty::New(2));
  node->SetProperty( "IndexParam2", mitk::FloatProperty::New(1));
  node->SetProperty( "visible", mitk::BoolProperty::New( true ) );
  node->SetProperty( "VisibleOdfs", mitk::BoolProperty::New( false ) );
  node->SetProperty ("layer", mitk::IntProperty::New(100));
  node->SetProperty( "DoRefresh", mitk::BoolProperty::New( true ) );
  //node->SetProperty( "opacity", mitk::FloatProperty::New(1.0f) );

  node->SetProperty( "name", mitk::StringProperty::New(name) );

}
void QmitkQBallReconstructionView::StdMultiWidgetAvailable ( QmitkStdMultiWidget stdMultiWidget ) [virtual]

Called when a StdMultiWidget is available. Should not be used anymore, see GetActiveStdMultiWidget()

See also:
GetActiveStdMultiWidget()

Reimplemented from QmitkFunctionality.

Definition at line 214 of file QmitkQBallReconstructionView.cpp.

References m_MultiWidget.

{
  m_MultiWidget = &stdMultiWidget;
}
void QmitkQBallReconstructionView::StdMultiWidgetNotAvailable (  ) [virtual]

Called when no StdMultiWidget is available anymore. Should not be used anymore, see GetActiveStdMultiWidget()

See also:
GetActiveStdMultiWidget()

Reimplemented from QmitkFunctionality.

Definition at line 219 of file QmitkQBallReconstructionView.cpp.

References m_MultiWidget.

{
  m_MultiWidget = NULL;
}
template<int L>
void QmitkQBallReconstructionView::TemplatedAnalyticalQBallReconstruction ( mitk::DiffusionImage< DiffusionPixelType > *  vols,
float  lambda,
std::string  nodename,
std::vector< mitk::DataNode::Pointer > *  nodes,
int  normalization 
) [protected]

Definition at line 606 of file QmitkQBallReconstructionView.cpp.

References mitk::DiffusionImage< TPixelType >::GetB_Value(), mitk::DiffusionImage< TPixelType >::GetDirections(), mitk::DiffusionImage< TPixelType >::GetVectorImage(), m_Controls, Ui_QmitkQBallReconstructionViewControls::m_OutputB0Image, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionNumberThreadsSpinbox, Ui_QmitkQBallReconstructionViewControls::m_QBallReconstructionThreasholdEdit, mitk::StringProperty::New(), mitk::Image::New(), mitk::DataNode::New(), mitk::QBallImage::New(), QBALL_ODFSIZE, and SetDefaultNodeProperties().

{
  typedef itk::AnalyticalDiffusionQballReconstructionImageFilter
    <DiffusionPixelType,DiffusionPixelType,TTensorPixelType,L,QBALL_ODFSIZE> FilterType;
  typename FilterType::Pointer filter = FilterType::New();
  filter->SetGradientImage( vols->GetDirections(), vols->GetVectorImage() );
  filter->SetNumberOfThreads( m_Controls->m_QBallReconstructionNumberThreadsSpinbox->value() );
  filter->SetBValue(vols->GetB_Value());  
  filter->SetThreshold( m_Controls->m_QBallReconstructionThreasholdEdit->text().toFloat() );
  filter->SetLambda(lambda);

  switch(normalization)
  {
  case 0:
    {
      filter->SetNormalizationMethod(FilterType::QBAR_STANDARD);
      break;
    }
  case 1:
    {
      filter->SetNormalizationMethod(FilterType::QBAR_B_ZERO_B_VALUE);
      break;
    }            
  case 2:
    {
      filter->SetNormalizationMethod(FilterType::QBAR_B_ZERO);
      break;
    }
  case 3:
    {
      filter->SetNormalizationMethod(FilterType::QBAR_NONE);
      break;
    }
  case 4:
    {
      filter->SetNormalizationMethod(FilterType::QBAR_ADC_ONLY);
      break;
    }
  case 5:
    {
      filter->SetNormalizationMethod(FilterType::QBAR_RAW_SIGNAL);
      break;
    }
  case 6:
    {
      filter->SetNormalizationMethod(FilterType::QBAR_SOLID_ANGLE);
      break;
    }
  case 7:
    {
      filter->SetNormalizationMethod(FilterType::QBAR_NONNEG_SOLID_ANGLE);
      break;
    }
  default:
    {
      filter->SetNormalizationMethod(FilterType::QBAR_STANDARD);
    }
  }

  filter->Update();

  // ODFs TO DATATREE
  mitk::QBallImage::Pointer image = mitk::QBallImage::New();
  image->InitializeByItk( filter->GetOutput() );
  image->SetVolume( filter->GetOutput()->GetBufferPointer() );
  mitk::DataNode::Pointer node=mitk::DataNode::New();
  node->SetData( image );
  QString newname;
  newname = newname.append(nodename.c_str());
  newname = newname.append("_QA%1").arg(normalization);
  SetDefaultNodeProperties(node, newname.toStdString());
  nodes->push_back(node);
  
  // B-Zero TO DATATREE
  if(m_Controls->m_OutputB0Image->isChecked())
  {
    mitk::Image::Pointer image4 = mitk::Image::New();
    image4->InitializeByItk( filter->GetBZeroImage().GetPointer() );
    image4->SetVolume( filter->GetBZeroImage()->GetBufferPointer() );
    mitk::DataNode::Pointer node4=mitk::DataNode::New();
    node4->SetData( image4 );
    node4->SetProperty( "name", mitk::StringProperty::New(
      QString(nodename.c_str()).append("_b0").toStdString()) );
    nodes->push_back(node4);
  }  
}

Friends And Related Function Documentation

friend struct QbrSelListener [friend]

Definition at line 50 of file QmitkQBallReconstructionView.h.

Referenced by CreateQtPartControl().


Member Data Documentation

Definition at line 75 of file QmitkQBallReconstructionView.h.

const std::string QmitkQBallReconstructionView::VIEW_ID = "org.mitk.views.qballreconstruction" [static]

Definition at line 57 of file QmitkQBallReconstructionView.h.


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