Widget for deformable demons registration. More...
#include <QmitkDemonsRegistrationView.h>
Public Slots | |
void | CalculateTransformation () |
Public Member Functions | |
QmitkDemonsRegistrationView (QWidget *parent=0, Qt::WindowFlags f=0) | |
~QmitkDemonsRegistrationView () | |
int | GetNumberOfIterations () |
float | GetStandardDeviation () |
void | SetFixedNode (mitk::DataNode *fixedNode) |
void | SetMovingNode (mitk::DataNode *movingNode) |
void | UseHistogramMatching (bool useHM) |
mitk::Image::Pointer | GetResultImage () |
mitk::Image::Pointer | GetResultDeformationfield () |
Protected Attributes | |
Ui::QmitkDemonsRegistrationViewControls | m_Controls |
mitk::DataNode::Pointer | m_FixedNode |
mitk::DataNode::Pointer | m_MovingNode |
mitk::Image::Pointer | m_ResultImage |
mitk::Image::Pointer | m_ResultDeformationField |
Widget for deformable demons registration.
Displays options for demons registration.
Definition at line 31 of file QmitkDemonsRegistrationView.h.
QmitkDemonsRegistrationView::QmitkDemonsRegistrationView | ( | QWidget * | parent = 0 , |
Qt::WindowFlags | f = 0 |
||
) |
Definition at line 32 of file QmitkDemonsRegistrationView.cpp.
References m_Controls, Ui_QmitkDemonsRegistrationViewControls::m_Iterations, Ui_QmitkDemonsRegistrationViewControls::m_NumberOfHistogramLevels, Ui_QmitkDemonsRegistrationViewControls::m_NumberOfMatchPoints, Ui_QmitkDemonsRegistrationViewControls::m_StandardDeviation, and Ui_QmitkDemonsRegistrationViewControls::setupUi().
: QWidget( parent, f ), m_FixedNode(NULL), m_MovingNode(NULL), m_ResultImage(NULL), m_ResultDeformationField(NULL) { m_Controls.setupUi(parent); QValidator* validatorHistogramLevels = new QIntValidator(1, 20000000, this); m_Controls.m_NumberOfHistogramLevels->setValidator(validatorHistogramLevels); QValidator* validatorMatchPoints = new QIntValidator(1, 20000000, this); m_Controls.m_NumberOfMatchPoints->setValidator(validatorMatchPoints); QValidator* validatorIterations = new QIntValidator(1, 20000000, this); m_Controls.m_Iterations->setValidator(validatorIterations); QValidator* validatorStandardDeviation = new QDoubleValidator(0, 20000000, 2, this); m_Controls.m_StandardDeviation->setValidator(validatorStandardDeviation); }
QmitkDemonsRegistrationView::~QmitkDemonsRegistrationView | ( | ) |
Definition at line 50 of file QmitkDemonsRegistrationView.cpp.
{ }
void QmitkDemonsRegistrationView::CalculateTransformation | ( | ) | [slot] |
Definition at line 75 of file QmitkDemonsRegistrationView.cpp.
References mitk::ProgressBar::GetInstance(), mitk::SlicedData::GetLargestPossibleRegion(), mitk::ImportItkImage(), m_Controls, m_FixedNode, Ui_QmitkDemonsRegistrationViewControls::m_Iterations, m_MovingNode, Ui_QmitkDemonsRegistrationViewControls::m_NumberOfHistogramLevels, Ui_QmitkDemonsRegistrationViewControls::m_NumberOfMatchPoints, Ui_QmitkDemonsRegistrationViewControls::m_RegistrationSelection, m_ResultDeformationField, m_ResultImage, Ui_QmitkDemonsRegistrationViewControls::m_StandardDeviation, Ui_QmitkDemonsRegistrationViewControls::m_ThresholdAtMeanIntensity, Ui_QmitkDemonsRegistrationViewControls::m_UseHistogramMatching, mitk::SymmetricForcesDemonsRegistration::New(), mitk::HistogramMatching::New(), and mitk::DemonsRegistration::New().
Referenced by QmitkDeformableRegistrationView::Calculate().
{ if (m_FixedNode.IsNotNull() && m_MovingNode.IsNotNull()) { mitk::Image::Pointer fimage = dynamic_cast<mitk::Image*>(m_FixedNode->GetData()); mitk::Image::Pointer mimage = dynamic_cast<mitk::Image*>(m_MovingNode->GetData()); // workaround to ensure that fimage covers a bigger region than mimage mitk::Image::RegionType fimageRegion = fimage->GetLargestPossibleRegion(); mitk::Image::RegionType mimageRegion = mimage->GetLargestPossibleRegion(); if (!((fimageRegion.GetSize(0)>=mimageRegion.GetSize(0))&&(fimageRegion.GetSize(1)>=mimageRegion.GetSize(1)) &&(fimageRegion.GetSize(2)>=mimageRegion.GetSize(2)))) { QMessageBox::information(NULL,"Registration","Fixed image must be equal or bigger in size than moving image."); return; } if ( m_Controls.m_RegistrationSelection->currentIndex() == 0) { mitk::DemonsRegistration::Pointer registration = mitk::DemonsRegistration::New(); registration->SetSaveDeformationField(false); registration->SetSaveResult(false); registration->SetReferenceImage(fimage); registration->SetNumberOfIterations(atoi(m_Controls.m_Iterations->text().toLatin1())); registration->SetStandardDeviation(atof(m_Controls.m_StandardDeviation->text().toLatin1())); if (m_Controls.m_UseHistogramMatching->isChecked()) { mitk::HistogramMatching::Pointer histogramMatching = mitk::HistogramMatching::New(); histogramMatching->SetReferenceImage(fimage); histogramMatching->SetInput(mimage); histogramMatching->SetNumberOfHistogramLevels(atoi(m_Controls.m_NumberOfHistogramLevels->text().toLatin1())); histogramMatching->SetNumberOfMatchPoints(atoi(m_Controls.m_NumberOfMatchPoints->text().toLatin1())); histogramMatching->SetThresholdAtMeanIntensity(m_Controls.m_ThresholdAtMeanIntensity->isChecked()); histogramMatching->Update(); mitk::Image::Pointer histimage = histogramMatching->GetOutput(); if (histimage.IsNotNull()) { registration->SetInput(histimage); } else { registration->SetInput(mimage); } } else { registration->SetInput(mimage); } try { registration->Update(); } catch (itk::ExceptionObject& excpt) { QMessageBox::information( this, "Registration exception", excpt.GetDescription(), QMessageBox::Ok ); mitk::ProgressBar::GetInstance()->Progress(4); return; } m_ResultImage = registration->GetOutput(); typedef itk::Image<itk::Vector<float,3>, 3> VectorImageType; VectorImageType::Pointer deformationField = registration->GetDeformationField(); m_ResultDeformationField = mitk::ImportItkImage(deformationField); } else if(m_Controls.m_RegistrationSelection->currentIndex() == 1) { mitk::SymmetricForcesDemonsRegistration::Pointer registration = mitk::SymmetricForcesDemonsRegistration::New(); registration->SetSaveDeformationField(false); registration->SetSaveResult(false); registration->SetReferenceImage(fimage); registration->SetNumberOfIterations(atoi(m_Controls.m_Iterations->text().toLatin1())); registration->SetStandardDeviation(atof(m_Controls.m_StandardDeviation->text().toLatin1())); if (m_Controls.m_UseHistogramMatching->isChecked()) { mitk::HistogramMatching::Pointer histogramMatching = mitk::HistogramMatching::New(); histogramMatching->SetReferenceImage(fimage); histogramMatching->SetInput(mimage); histogramMatching->SetNumberOfHistogramLevels(atoi(m_Controls.m_NumberOfHistogramLevels->text().toLatin1())); histogramMatching->SetNumberOfMatchPoints(atoi(m_Controls.m_NumberOfMatchPoints->text().toLatin1())); histogramMatching->SetThresholdAtMeanIntensity(m_Controls.m_ThresholdAtMeanIntensity->isChecked()); histogramMatching->Update(); mitk::Image::Pointer histimage = histogramMatching->GetOutput(); if (histimage.IsNotNull()) { registration->SetInput(histimage); } else { registration->SetInput(mimage); } } else { registration->SetInput(mimage); } try { registration->Update(); } catch (itk::ExceptionObject& excpt) { QMessageBox::information( this, "Registration exception", excpt.GetDescription(), QMessageBox::Ok ); mitk::ProgressBar::GetInstance()->Progress(4); return; } m_ResultImage = registration->GetOutput(); typedef itk::Image<itk::Vector<float,3>, 3> VectorImageType; VectorImageType::Pointer deformationField = registration->GetDeformationField(); m_ResultDeformationField = mitk::ImportItkImage(deformationField); } } }
int QmitkDemonsRegistrationView::GetNumberOfIterations | ( | ) |
Definition at line 55 of file QmitkDemonsRegistrationView.cpp.
References m_Controls, and Ui_QmitkDemonsRegistrationViewControls::m_Iterations.
{ return atoi(m_Controls.m_Iterations->text().toLatin1()); }
mitk::Image::Pointer QmitkDemonsRegistrationView::GetResultDeformationfield | ( | ) |
Definition at line 70 of file QmitkDemonsRegistrationView.cpp.
References m_ResultDeformationField.
Referenced by QmitkDeformableRegistrationView::Calculate().
{ return m_ResultDeformationField; }
mitk::Image::Pointer QmitkDemonsRegistrationView::GetResultImage | ( | ) |
Definition at line 65 of file QmitkDemonsRegistrationView.cpp.
References m_ResultImage.
Referenced by QmitkDeformableRegistrationView::Calculate().
{ return m_ResultImage; }
float QmitkDemonsRegistrationView::GetStandardDeviation | ( | ) |
Definition at line 60 of file QmitkDemonsRegistrationView.cpp.
References m_Controls, and Ui_QmitkDemonsRegistrationViewControls::m_StandardDeviation.
{ return atof(m_Controls.m_StandardDeviation->text().toLatin1()); }
void QmitkDemonsRegistrationView::SetFixedNode | ( | mitk::DataNode * | fixedNode ) |
Definition at line 185 of file QmitkDemonsRegistrationView.cpp.
References m_FixedNode.
Referenced by QmitkDeformableRegistrationView::Calculate().
{ m_FixedNode = fixedNode; }
void QmitkDemonsRegistrationView::SetMovingNode | ( | mitk::DataNode * | movingNode ) |
Definition at line 190 of file QmitkDemonsRegistrationView.cpp.
References m_MovingNode.
Referenced by QmitkDeformableRegistrationView::Calculate().
{ m_MovingNode = movingNode; }
void QmitkDemonsRegistrationView::UseHistogramMatching | ( | bool | useHM ) |
Definition at line 195 of file QmitkDemonsRegistrationView.cpp.
References m_Controls, Ui_QmitkDemonsRegistrationViewControls::m_NumberOfHistogramLevels, Ui_QmitkDemonsRegistrationViewControls::m_NumberOfMatchPoints, Ui_QmitkDemonsRegistrationViewControls::m_ThresholdAtMeanIntensity, Ui_QmitkDemonsRegistrationViewControls::numberOfHistogramLevels, Ui_QmitkDemonsRegistrationViewControls::numberOfMatchPoints, and Ui_QmitkDemonsRegistrationViewControls::thresholdAtMeanIntensity.
{ if (useHM) { m_Controls.numberOfHistogramLevels->setEnabled(true); m_Controls.m_NumberOfHistogramLevels->setEnabled(true); m_Controls.numberOfMatchPoints->setEnabled(true); m_Controls.m_NumberOfMatchPoints->setEnabled(true); m_Controls.thresholdAtMeanIntensity->setEnabled(true); m_Controls.m_ThresholdAtMeanIntensity->setEnabled(true); } else { m_Controls.numberOfHistogramLevels->setEnabled(false); m_Controls.m_NumberOfHistogramLevels->setEnabled(false); m_Controls.numberOfMatchPoints->setEnabled(false); m_Controls.m_NumberOfMatchPoints->setEnabled(false); m_Controls.thresholdAtMeanIntensity->setEnabled(false); m_Controls.m_ThresholdAtMeanIntensity->setEnabled(false); } }
Definition at line 52 of file QmitkDemonsRegistrationView.h.
Referenced by CalculateTransformation(), GetNumberOfIterations(), GetStandardDeviation(), QmitkDemonsRegistrationView(), and UseHistogramMatching().
Definition at line 53 of file QmitkDemonsRegistrationView.h.
Referenced by CalculateTransformation(), and SetFixedNode().
Definition at line 54 of file QmitkDemonsRegistrationView.h.
Referenced by CalculateTransformation(), and SetMovingNode().
Definition at line 56 of file QmitkDemonsRegistrationView.h.
Referenced by CalculateTransformation(), and GetResultDeformationfield().
Definition at line 55 of file QmitkDemonsRegistrationView.h.
Referenced by CalculateTransformation(), and GetResultImage().