Public Slots | Public Member Functions | Public Attributes | Protected Slots | Protected Member Functions | Protected Attributes

QmitkBSplineRegistrationView Class Reference

Widget for deformable demons registration. More...

#include <QmitkBSplineRegistrationView.h>

Collaboration diagram for QmitkBSplineRegistrationView:
Collaboration graph
[legend]

List of all members.

Public Slots

void CalculateTransformation ()

Public Member Functions

 QmitkBSplineRegistrationView (QWidget *parent=0, Qt::WindowFlags f=0)
 ~QmitkBSplineRegistrationView ()
int GetNumberOfIterations ()
void SetFixedNode (mitk::DataNode *fixedNode)
void SetMovingNode (mitk::DataNode *movingNode)

Public Attributes

Ui::QmitkBSplineRegistrationViewControls m_Controls

Protected Slots

void PrintDeformationField ()
void SelectDeformationField ()
void OptimizerSelected (int optimizer)
void HideAllOptimizerFrames ()

Protected Member Functions

void setOptimizerParameters ()

Protected Attributes

mitk::DataNodem_FixedNode
mitk::DataNodem_MovingNode
mitk::OptimizerParameters::Pointer m_OptimizerParameters

Detailed Description

Widget for deformable demons registration.

Displays options for demons registration.

Definition at line 32 of file QmitkBSplineRegistrationView.h.


Constructor & Destructor Documentation

QmitkBSplineRegistrationView::QmitkBSplineRegistrationView ( QWidget *  parent = 0,
Qt::WindowFlags  f = 0 
)
QmitkBSplineRegistrationView::~QmitkBSplineRegistrationView (  )

Definition at line 61 of file QmitkBSplineRegistrationView.cpp.

{
}

Member Function Documentation

void QmitkBSplineRegistrationView::CalculateTransformation (  ) [slot]

Definition at line 133 of file QmitkBSplineRegistrationView.cpp.

References mitk::DataNode::GetData(), mitk::RenderingManager::GetInstance(), mitk::DataNode::GetPropertyList(), m_Controls, Ui_QmitkBSplineRegistrationViewControls::m_DeformationField, m_FixedNode, m_MovingNode, Ui_QmitkBSplineRegistrationViewControls::m_NumberOfGridNodes, m_OptimizerParameters, Ui_QmitkBSplineRegistrationViewControls::m_SaveDeformFieldCheck, mitk::LevelWindowProperty::New(), mitk::BSplineRegistration::New(), mitk::LevelWindow::SetAuto(), mitk::DataNode::SetData(), setOptimizerParameters(), and mitk::PropertyList::SetProperty().

{
  if (m_FixedNode != NULL && m_MovingNode != NULL)
  {
    mitk::Image::Pointer fimage = dynamic_cast<mitk::Image*>(m_FixedNode->GetData());
    mitk::Image::Pointer mimage = dynamic_cast<mitk::Image*>(m_MovingNode->GetData());
    

    mitk::BSplineRegistration::Pointer registration = mitk::BSplineRegistration::New();
    
    registration->SetSaveResult(false);
    registration->SetReferenceImage(fimage);
    registration->SetInput(mimage);
    
    // Read out optimizer parameters from the interface
    setOptimizerParameters();    

    registration->SetNumberOfGridPoints( m_Controls.m_NumberOfGridNodes->text().toInt() );
    registration->SetOptimizerParameters(m_OptimizerParameters);
    registration->SetUpdateInputImage(true);

    if(m_Controls.m_SaveDeformFieldCheck->isChecked())
    {
      // Set some parameters to save the deformation field
      registration->SetSaveDeformationField(true);
      registration->SetDeformationFileName( m_Controls.m_DeformationField->text().toStdString() );
    }


    try
    {
      registration->Update();
    }
    catch (itk::ExceptionObject& excpt)
    {
      QMessageBox::information( this, "Registration exception", excpt.GetDescription(), QMessageBox::Ok );
    }

    mitk::Image::Pointer image = registration->GetOutput();
   
    if (image.IsNotNull())
    {
      m_MovingNode->SetData(image);
      mitk::LevelWindowProperty::Pointer levWinProp = mitk::LevelWindowProperty::New();
      mitk::LevelWindow levelWindow;
      levelWindow.SetAuto( image );
      levWinProp->SetLevelWindow(levelWindow);
      m_MovingNode->GetPropertyList()->SetProperty("levelwindow",levWinProp);
    }

    mitk::RenderingManager::GetInstance()->RequestUpdateAll();
  } 
}
int QmitkBSplineRegistrationView::GetNumberOfIterations (  )
void QmitkBSplineRegistrationView::HideAllOptimizerFrames (  ) [protected, slot]
void QmitkBSplineRegistrationView::OptimizerSelected ( int  optimizer ) [protected, slot]
void QmitkBSplineRegistrationView::PrintDeformationField (  ) [protected, slot]

Prints the values of the deformationfield

Definition at line 113 of file QmitkBSplineRegistrationView.cpp.

References m_Controls, and Ui_QmitkBSplineRegistrationViewControls::m_DeformationField.

Referenced by QmitkBSplineRegistrationView().

{               
 
  ImageReaderType::Pointer reader  = ImageReaderType::New();
  reader->SetFileName(  m_Controls.m_DeformationField->text().toStdString()  );
  reader->Update();
      
  DeformationFieldType::Pointer deformationField = reader->GetOutput();
     

  typedef itk::ImageRegionIterator<DeformationFieldType> IteratorType;
  IteratorType deformIter(deformationField, deformationField->GetRequestedRegion());

  for(deformIter.GoToBegin(); !deformIter.IsAtEnd(); ++deformIter)
  {
    std::cout << deformIter.Get() << std::endl;
  }
}
void QmitkBSplineRegistrationView::SelectDeformationField (  ) [protected, slot]

Select a deformation field

Definition at line 85 of file QmitkBSplineRegistrationView.cpp.

References m_Controls, and Ui_QmitkBSplineRegistrationViewControls::m_DeformationField.

Referenced by QmitkBSplineRegistrationView().

{ 
  // SELECT FOLDER DIALOG
  QFileDialog* w = new QFileDialog( this, "Select Deformation Field" );
  w->setFileMode( QFileDialog::ExistingFiles );
  w->setFilter( "Images (*.mhd)" );
  w->setDirectory("G:\\home\\vanbrugg\\testimages\\deformable"); 

  // RETRIEVE SELECTION
  if ( w->exec() != QDialog::Accepted )
  {
    return;
    cout << "Failed to load" << endl;
  }

  QStringList filenames = w->selectedFiles();
  QStringList::Iterator it = filenames.begin();
  if( it != filenames.end() ) {
    std::string filename = ( *it ).toStdString();
    ++it;     
    QString qStr = QString( filename.c_str() );
    m_Controls.m_DeformationField->setText(qStr); 
  }
   
}
void QmitkBSplineRegistrationView::SetFixedNode ( mitk::DataNode fixedNode )

Definition at line 208 of file QmitkBSplineRegistrationView.cpp.

References m_FixedNode.

Referenced by QmitkDeformableRegistrationView::Calculate().

{
  m_FixedNode = fixedNode;
}
void QmitkBSplineRegistrationView::SetMovingNode ( mitk::DataNode movingNode )

Definition at line 213 of file QmitkBSplineRegistrationView.cpp.

References m_MovingNode.

Referenced by QmitkDeformableRegistrationView::Calculate().

{
  m_MovingNode = movingNode;
}
void QmitkBSplineRegistrationView::setOptimizerParameters (  ) [protected]

Definition at line 187 of file QmitkBSplineRegistrationView.cpp.

References mitk::OptimizerParameters::GRADIENTDESCENTOPTIMIZER, mitk::OptimizerParameters::LBFGSOPTIMIZER, m_Controls, Ui_QmitkBSplineRegistrationViewControls::m_DefaultStepLength, Ui_QmitkBSplineRegistrationViewControls::m_FunctionEvaluations, Ui_QmitkBSplineRegistrationViewControls::m_GradConvTolerance, Ui_QmitkBSplineRegistrationViewControls::m_LearningRateGradientDescent, Ui_QmitkBSplineRegistrationViewControls::m_LineSearchAccuracy, Ui_QmitkBSplineRegistrationViewControls::m_NumberOfIterationsGradientDescent, m_OptimizerParameters, Ui_QmitkBSplineRegistrationViewControls::m_OptimizerSelector, and mitk::OptimizerParameters::New().

Referenced by CalculateTransformation().

{
  m_OptimizerParameters = mitk::OptimizerParameters::New();

  if(m_Controls.m_OptimizerSelector->currentText() == "LBFGSOptimizer")
  {
    m_OptimizerParameters->SetOptimizer(mitk::OptimizerParameters::LBFGSOPTIMIZER);
    m_OptimizerParameters->SetGradientConvergenceToleranceLBFGS( m_Controls.m_GradConvTolerance->text().toFloat() );
    m_OptimizerParameters->SetLineSearchAccuracyLBFGS( m_Controls.m_LineSearchAccuracy->text().toFloat() );
    m_OptimizerParameters->SetDefaultStepLengthLBFGS( m_Controls.m_DefaultStepLength->text().toFloat() );
    m_OptimizerParameters->SetNumberOfIterationsLBFGS( m_Controls.m_FunctionEvaluations->text().toInt() );
  }
  else if(m_Controls.m_OptimizerSelector->currentText() == "Gradient Descent")
  {
    m_OptimizerParameters->SetOptimizer(mitk::OptimizerParameters::GRADIENTDESCENTOPTIMIZER);
    m_OptimizerParameters->SetLearningRateGradientDescent( m_Controls.m_LearningRateGradientDescent->text().toFloat() );
    m_OptimizerParameters->SetNumberOfIterationsGradientDescent (m_Controls.m_NumberOfIterationsGradientDescent->text().toInt() );
  }
}

Member Data Documentation

Definition at line 73 of file QmitkBSplineRegistrationView.h.

Referenced by CalculateTransformation(), and SetFixedNode().

Definition at line 74 of file QmitkBSplineRegistrationView.h.

Referenced by CalculateTransformation(), and SetMovingNode().


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