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().