Widget for deformable demons registration. More...
#include <QmitkBSplineRegistrationView.h>

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::DataNode * | m_FixedNode |
| mitk::DataNode * | m_MovingNode |
| mitk::OptimizerParameters::Pointer | m_OptimizerParameters |
Widget for deformable demons registration.
Displays options for demons registration.
Definition at line 32 of file QmitkBSplineRegistrationView.h.
| QmitkBSplineRegistrationView::QmitkBSplineRegistrationView | ( | QWidget * | parent = 0, |
| Qt::WindowFlags | f = 0 |
||
| ) |
Definition at line 38 of file QmitkBSplineRegistrationView.cpp.
References Ui_QmitkBSplineRegistrationViewControls::m_BrowseDeformationField, m_Controls, Ui_QmitkBSplineRegistrationViewControls::m_OptimizerSelector, Ui_QmitkBSplineRegistrationViewControls::m_OptimizerWidgetStack, Ui_QmitkBSplineRegistrationViewControls::m_PrintDeformField, OptimizerSelected(), PrintDeformationField(), SelectDeformationField(), and Ui_QmitkBSplineRegistrationViewControls::setupUi().
: QWidget( parent, f ), m_FixedNode(NULL), m_MovingNode(NULL) { m_Controls.setupUi(parent); QObject::connect( (QObject*)(m_Controls.m_PrintDeformField), SIGNAL(clicked()), (QObject*) this, SLOT(PrintDeformationField()) ); QObject::connect( (QObject*)(m_Controls.m_BrowseDeformationField), SIGNAL(clicked()), (QObject*) this, SLOT(SelectDeformationField()) ); connect( m_Controls.m_OptimizerSelector, SIGNAL(activated(int)), m_Controls.m_OptimizerWidgetStack, SLOT(setCurrentIndex(int))); connect( m_Controls.m_OptimizerSelector, SIGNAL(activated(int)), this, SLOT(OptimizerSelected(int))); }
| QmitkBSplineRegistrationView::~QmitkBSplineRegistrationView | ( | ) |
Definition at line 61 of file QmitkBSplineRegistrationView.cpp.
{
}
| 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] |
Definition at line 79 of file QmitkBSplineRegistrationView.cpp.
References m_Controls, Ui_QmitkBSplineRegistrationViewControls::m_GradientDescentFrame, and Ui_QmitkBSplineRegistrationViewControls::m_LBFGSFrame.
Referenced by OptimizerSelected().
{
m_Controls.m_LBFGSFrame->hide();
m_Controls.m_GradientDescentFrame->hide();
}
| void QmitkBSplineRegistrationView::OptimizerSelected | ( | int | optimizer ) | [protected, slot] |
Definition at line 66 of file QmitkBSplineRegistrationView.cpp.
References HideAllOptimizerFrames(), m_Controls, Ui_QmitkBSplineRegistrationViewControls::m_GradientDescentFrame, and Ui_QmitkBSplineRegistrationViewControls::m_LBFGSFrame.
Referenced by QmitkBSplineRegistrationView().
{
HideAllOptimizerFrames();
if(optimizer == 0)
{
m_Controls.m_LBFGSFrame->show();
}
else if(optimizer == 1)
{
m_Controls.m_GradientDescentFrame->show();
}
}
| 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() );
}
}
Definition at line 42 of file QmitkBSplineRegistrationView.h.
Referenced by QmitkDeformableRegistrationView::ApplyDeformationField(), CalculateTransformation(), QmitkDeformableRegistrationView::CreateConnections(), HideAllOptimizerFrames(), OptimizerSelected(), PrintDeformationField(), QmitkBSplineRegistrationView(), SelectDeformationField(), and setOptimizerParameters().
mitk::DataNode* QmitkBSplineRegistrationView::m_FixedNode [protected] |
Definition at line 73 of file QmitkBSplineRegistrationView.h.
Referenced by CalculateTransformation(), and SetFixedNode().
mitk::DataNode* QmitkBSplineRegistrationView::m_MovingNode [protected] |
Definition at line 74 of file QmitkBSplineRegistrationView.h.
Referenced by CalculateTransformation(), and SetMovingNode().
Definition at line 75 of file QmitkBSplineRegistrationView.h.
Referenced by CalculateTransformation(), and setOptimizerParameters().
1.7.2