diff --git a/Modules/SurfaceRegistration/include/MitkShapeComparisonManager.h b/Modules/SurfaceRegistration/include/MitkShapeComparisonManager.h index 35994bb794..846cdc70d9 100644 --- a/Modules/SurfaceRegistration/include/MitkShapeComparisonManager.h +++ b/Modules/SurfaceRegistration/include/MitkShapeComparisonManager.h @@ -1,49 +1,50 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef MitkShapeComparisonManager_h #define MitkShapeComparisonManager_h #include "mitkSurface.h" #include #include "mitkDataNode.h" //#include "mitkSurfaceRegistrationICP.h" #include namespace mitk { class MITKSURFACEREGISTRATION_EXPORT ShapeComparisonManager { public: ShapeComparisonManager(); ~ShapeComparisonManager(); void setMovingSurface(mitk::Surface::Pointer moving); void setTargetSurface(mitk::Surface::Pointer target); - mitk::DataNode::Pointer manageICPCalculation(mitk::Surface::Pointer movingSurface, mitk::Surface::Pointer targetSurface); + mitk::DataNode::Pointer manageICPCalculation(); + void manageCalculateDistances(); private: mitk::Surface::Pointer m_MovingSurface; mitk::Surface::Pointer m_TargetSurface; }; } #endif diff --git a/Modules/SurfaceRegistration/include/mitkShortestDistanceCalculator.h b/Modules/SurfaceRegistration/include/mitkShortestDistanceCalculator.h index b89a6e5611..10935e4433 100644 --- a/Modules/SurfaceRegistration/include/mitkShortestDistanceCalculator.h +++ b/Modules/SurfaceRegistration/include/mitkShortestDistanceCalculator.h @@ -1,37 +1,36 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef mitkShortestDistanceCalculator_h #define mitkShortestDistanceCalculator_h #include #include namespace mitk{ class ShortestDistanceCalculator { public: - ShortestDistanceCalculator(const mitk::Surface *moving, const mitk::Surface *target); + ShortestDistanceCalculator(); ~ShortestDistanceCalculator(); - void calculateShortestDistance(); + void calculateShortestDistance(vtkSmartPointer moving, vtkSmartPointer target); private: - vtkPoints *m_PointsMoving; - vtkPoints *m_PointsTarget; + }; }; #endif \ No newline at end of file diff --git a/Modules/SurfaceRegistration/src/DataManagement/MitkShortestDistanceCalculator.cpp b/Modules/SurfaceRegistration/src/DataManagement/MitkShortestDistanceCalculator.cpp index 74561fce49..deee49f439 100644 --- a/Modules/SurfaceRegistration/src/DataManagement/MitkShortestDistanceCalculator.cpp +++ b/Modules/SurfaceRegistration/src/DataManagement/MitkShortestDistanceCalculator.cpp @@ -1,33 +1,51 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include "mitkShortestDistanceCalculator.h" -mitk::ShortestDistanceCalculator::ShortestDistanceCalculator(const mitk::Surface *moving, const mitk::Surface *target) +#include "vtkCellLocator.h" +#include "vtkPointData.h" +#include "vtkImplicitPolyDataDistance.h" +#include "vtkFloatArray.h" + + +mitk::ShortestDistanceCalculator::ShortestDistanceCalculator() { - /* m_PointsMoving->DeepCopy(moving->GetVtkPolyData()->GetPoints()); - m_PointsTarget->DeepCopy(target->GetVtkPolyData()->GetPoints());*/ + } mitk::ShortestDistanceCalculator::~ShortestDistanceCalculator() { - /*m_PointsMoving = nullptr; - m_PointsTarget = nullptr;*/ + } -void mitk::ShortestDistanceCalculator::calculateShortestDistance() +void mitk::ShortestDistanceCalculator::calculateShortestDistance(vtkSmartPointer moving, vtkSmartPointer target) { + // was passiert wenn der andere pointset groesser ist MITK_INFO << "calculate shortest distance ..."; + std::vector *distances = new std::vector(); + double fromPoint[3] = { 0, 0, 0 }; + int pointNumber = moving->GetPoints()->GetNumberOfPoints(); + vtkSmartPointer implicitPolyDataDistance = + vtkSmartPointer::New(); + implicitPolyDataDistance->SetInput(moving); + // + for (int i = 0; i < pointNumber; ++i) + { + moving->GetPoints()->GetPoint(i, fromPoint); + double distance = implicitPolyDataDistance->FunctionValue(fromPoint[0], fromPoint[1], fromPoint[2]); + distances->push_back(distance); + } } \ No newline at end of file diff --git a/Modules/SurfaceRegistration/src/DataManagement/mitkSurfaceRegistrationICP.cpp b/Modules/SurfaceRegistration/src/DataManagement/mitkSurfaceRegistrationICP.cpp index 560c3230e2..8ab7ab204a 100644 --- a/Modules/SurfaceRegistration/src/DataManagement/mitkSurfaceRegistrationICP.cpp +++ b/Modules/SurfaceRegistration/src/DataManagement/mitkSurfaceRegistrationICP.cpp @@ -1,49 +1,56 @@ #include "mitkSurfaceRegistrationICP.h" #include #include #include #include #include #include +#include mitk::SurfaceRegistrationICP::SurfaceRegistrationICP() { } mitk::SurfaceRegistrationICP::~SurfaceRegistrationICP() { } -mitk::Surface::Pointer mitk::SurfaceRegistrationICP::CalculateICP(mitk::Surface::Pointer movingSurface, mitk::Surface::Pointer targetSurface) //void +mitk::Surface::Pointer mitk::SurfaceRegistrationICP::CalculateICP(mitk::Surface::Pointer movingSurface, mitk::Surface::Pointer targetSurface) { vtkSmartPointer icp = vtkSmartPointer::New(); icp->SetCheckMeanDistance(1); + mitk::Surface::Pointer movedData = mitk::Surface::New(); icp->SetSource(movingSurface->GetVtkPolyData()); icp->SetTarget(targetSurface->GetVtkPolyData()); icp->SetMaximumNumberOfIterations(1000); icp->SetMaximumMeanDistance(0.01); icp->SetMeanDistanceModeToRMS(); icp->StartByMatchingCentroidsOn(); icp->SetMaximumNumberOfLandmarks(100000); icp->Modified(); vtkSmartPointer transform = vtkSmartPointer::New(); transform = icp->GetLandmarkTransform(); - vtkSmartPointer m = icp->GetMatrix(); - MITK_INFO << "The resulting matrix is: " << *m; - vtkSmartPointer icpTransformFilter = vtkSmartPointer::New(); icpTransformFilter->SetInputData(movingSurface->GetVtkPolyData()); icpTransformFilter->SetTransform(icp); icpTransformFilter->Update(); - movingSurface->SetVtkPolyData(icpTransformFilter->GetOutput()); - movingSurface->Modified(); + vtkSmartPointer m = icp->GetMatrix(); + MITK_INFO << "The resulting matrix is: " << *m; + MITK_INFO << "The mean distance is: " << icp->GetMeanDistance(); + + movedData->SetVtkPolyData(icpTransformFilter->GetOutput()); + movedData->Modified(); + //clean up + icpTransformFilter->Delete(); + transform->Delete(); + icp->Delete(); MITK_INFO << "registration done"; - return movingSurface; + return movedData; } \ No newline at end of file diff --git a/Modules/SurfaceRegistration/src/mitkShapeComparisonManager.cpp b/Modules/SurfaceRegistration/src/mitkShapeComparisonManager.cpp index 91ae70aa03..c32e3ccb22 100644 --- a/Modules/SurfaceRegistration/src/mitkShapeComparisonManager.cpp +++ b/Modules/SurfaceRegistration/src/mitkShapeComparisonManager.cpp @@ -1,46 +1,58 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include #include #include mitk::ShapeComparisonManager::ShapeComparisonManager() { } mitk::ShapeComparisonManager::~ShapeComparisonManager() { + m_MovingSurface->Delete(); + m_TargetSurface->Delete(); } void mitk::ShapeComparisonManager::setMovingSurface(mitk::Surface::Pointer moving) { this->m_MovingSurface = moving; } void mitk::ShapeComparisonManager::setTargetSurface(mitk::Surface::Pointer target) { this->m_TargetSurface = target; } -mitk::DataNode::Pointer mitk::ShapeComparisonManager::manageICPCalculation(mitk::Surface::Pointer movingSurface, mitk::Surface::Pointer targetSurface) + +mitk::DataNode::Pointer mitk::ShapeComparisonManager::manageICPCalculation() { + mitk::Surface::Pointer moveCopy = mitk::Surface::New(); + //moveCopy->SetVtkPolyData(m_MovingSurface->GetVtkPolyData()); mitk::DataNode::Pointer registeredNode = mitk::DataNode::New(); mitk::SurfaceRegistrationICP *registrationHelper = new SurfaceRegistrationICP(); - registrationHelper->CalculateICP(movingSurface, targetSurface); // rueckgabe - registeredNode->SetData(movingSurface); + moveCopy = registrationHelper->CalculateICP(m_MovingSurface, m_TargetSurface); + registeredNode->SetData(moveCopy); + manageCalculateDistances(); return registeredNode; +} +void mitk::ShapeComparisonManager::manageCalculateDistances() +{ + //mitk::ShortestDistanceCalculator *distanceCalculator = new ShortestDistanceCalculator(); + //distanceCalculator->calculateShortestDistance(m_MovingSurface->GetVtkPolyData(), m_TargetSurface->GetVtkPolyData()); + } \ No newline at end of file diff --git a/Plugins/org.mitk.gui.qt.surfaceregistration/src/internal/QmitkSurfaceRegistration.cpp b/Plugins/org.mitk.gui.qt.surfaceregistration/src/internal/QmitkSurfaceRegistration.cpp index 34c16b2f80..fd3a6a8fbf 100644 --- a/Plugins/org.mitk.gui.qt.surfaceregistration/src/internal/QmitkSurfaceRegistration.cpp +++ b/Plugins/org.mitk.gui.qt.surfaceregistration/src/internal/QmitkSurfaceRegistration.cpp @@ -1,225 +1,210 @@ /*========================================================================= Program: Medical Imaging & Interaction Toolkit Language: C++ Date: $Date$ Version: $Revision$ Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #include "QmitkSurfaceRegistration.h" #include #include #include #include #include #include #include // Includes for image casting between ITK and MITK: added after using Plugin Generator #include // added for surface dynamic cast #include #include #include #include #include #include #include #include #include #include #include const std::string QmitkSurfaceRegistration::VIEW_ID = "org.mitk.views.qmitksurfaceregistration"; QmitkSurfaceRegistration::QmitkSurfaceRegistration(QObject *parent) : m_ParentWidget(0), m_movingSurfaceNode(nullptr), m_targetSurfaceNode(nullptr) { } QmitkSurfaceRegistration::~QmitkSurfaceRegistration() { // delete pointer objects m_movingSurfaceNode = nullptr; m_targetSurfaceNode = nullptr; } // void QmitkSurfaceRegistration::SetFocus(){ m_Controls.groupBoxMoving->setFocus(); } void QmitkSurfaceRegistration::CreateQtPartControl(QWidget *parent) { // create GUI widgets from the Qt Designer's .ui file m_Controls.setupUi(parent); connect(m_Controls.pushButtonExecute, SIGNAL(clicked()), this, SLOT(doExecute())); mitk::RenderingManager::GetInstance()->SetDataStorage(this->GetDataStorageReference()->GetDataStorage()); mitk::RenderingManager::GetInstance()->InitializeViews(); m_ParentWidget = parent; } void QmitkSurfaceRegistration::OnSelectionChanged(berry::IWorkbenchPart::Pointer /*part*/, const QList &nodes) { MITK_INFO << "On Selection Changed"; bool rotationEnabled = false; if (nodes.empty()) { MITK_INFO << "Nothing selected yet"; m_Controls.labelSelectMovingSurface->setStyleSheet(" QLabel { color: rgb(255, 0, 0) }"); m_Controls.labelSelectTargetSurface->setStyleSheet(" QLabel { color: rgb(255, 0, 0) }"); m_Controls.labelMovingSurfaceName->setText(QString::fromStdString("No moving surface selected")); m_Controls.labelTargetSurfaceName->setText(QString::fromStdString("No target surface selected")); m_Controls.groupBoxMoving->setEnabled(true); m_Controls.groupBoxMappedData->setEnabled(false); if (m_useTestConfig) { m_Controls.pushButtonExecute->setEnabled(true); } else{ m_Controls.pushButtonExecute->setEnabled(false); } m_Controls.radioButtonMirroring->setEnabled(false); return; } else { if (nodes.size() == 1) { if (nodes[0].IsNotNull() && dynamic_cast(nodes[0]->GetData())) { MITK_INFO << "There is exactly one image selected"; m_movingSurfaceNode = nodes[0]; m_Controls.labelSelectMovingSurface->setText("Selected moving surface:"); m_Controls.labelSelectMovingSurface->setStyleSheet(" QLabel { color: rgb(0, 0, 0) }"); m_Controls.labelMovingSurfaceName->setText( QString::fromStdString("File name: " + m_movingSurfaceNode->GetName())); m_Controls.radioButtonMirroring->setEnabled(true); m_Controls.groupBoxTarget->setEnabled(true); m_Controls.groupBoxMappedData->setEnabled(true); m_Controls.groupBoxTarget->setEnabled(true); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); } else { QMessageBox::information(nullptr, "Warning", "Are you sure? - I dont think this is a Surface! Try again!"); } } else if (nodes.size() == 2) { if (nodes[1].IsNotNull() && dynamic_cast(nodes[1]->GetData())) { MITK_INFO << "There are two images selected"; m_targetSurfaceNode = nodes[1]; m_Controls.labelSelectTargetSurface->setText("Selected target surface:"); m_Controls.labelSelectTargetSurface->setStyleSheet(" QLabel { color: rgb(0, 0, 0) }"); m_Controls.labelTargetSurfaceName->setText( QString::fromStdString("File name: " + m_targetSurfaceNode->GetName())); m_Controls.textMappedDataName->setEnabled(true); m_Controls.pushButtonExecute->setEnabled(true); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); m_useTestConfig = false; } else { QMessageBox::information(nullptr, "Warning", "Are you sure? - I dont think this is a Surface!"); } } else { QMessageBox::information(nullptr, "Warning", "You do know that it only works with two surfaces, right? If you continue to click execute, this might crash one day!"); //wie kann ich die Auswahl zurueck setzen? } } } void QmitkSurfaceRegistration::doExecute() { if (m_useTestConfig) { - mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New(); - mitk::IOUtil::Load("//ad/fs/E130-Projekte/BGLU/Fibula/Python/DataGAN/Registered/Surface/Tibia/tibia01_q0.stl", *ds); - mitk::IOUtil::Load("//ad/fs/E130-Projekte/BGLU/Fibula/Python/DataGAN/Registered/Surface/Tibia/tibia02_q0.stl", *ds); - - m_movingSurfaceNode = ds->GetAll()->at(0); - m_targetSurfaceNode = ds->GetAll()->at(1); - this->GetDataStorageReference()->GetDataStorage()->Add(mitk::DataNode::Pointer(ds->GetAll()->at(0))); - this->GetDataStorageReference()->GetDataStorage()->Add(mitk::DataNode::Pointer(ds->GetAll()->at(1))); - this->GetDataStorageReference()->GetDataStorage()->Modified(); - - mitk::RenderingManager::GetInstance()->SetDataStorage(this->GetDataStorageReference()->GetDataStorage()); - mitk::RenderingManager::GetInstance()->InitializeViews(); - mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - - m_Controls.pushButtonExecute->setEnabled(true); - m_Controls.labelMovingSurfaceName->setText("tibia01_q0"); - m_Controls.labelTargetSurfaceName->setText("tibia02_q0"); - m_Controls.labelSelectMovingSurface->setText("Selected moving surface:"); - m_Controls.labelSelectMovingSurface->setStyleSheet(" QLabel { color: rgb(0, 0, 0) }"); - m_Controls.labelSelectTargetSurface->setText("Selected target surface:"); - m_Controls.labelSelectTargetSurface->setStyleSheet(" QLabel { color: rgb(0, 0, 0) }"); + setUpTestConfig(); } - MITK_INFO << "pushButtonExecute clicked"; - performICPRegistration(); } -void QmitkSurfaceRegistration::performICPRegistration() + +void QmitkSurfaceRegistration::setUpTestConfig() { - vtkSmartPointer icp = vtkSmartPointer::New(); - icp->SetCheckMeanDistance(1); - mitk::Surface::Pointer movingSurface = dynamic_cast (m_movingSurfaceNode->GetData()); - mitk::Surface::Pointer targetSurface = dynamic_cast (m_targetSurfaceNode->GetData()); + mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New(); + mitk::IOUtil::Load("//ad/fs/E130-Projekte/BGLU/Fibula/Python/DataGAN/Registered/Surface/Tibia/tibia01_q0.stl", *ds); + mitk::IOUtil::Load("//ad/fs/E130-Projekte/BGLU/Fibula/Python/DataGAN/Registered/Surface/Tibia/tibia02_q0.stl", *ds); + + m_movingSurfaceNode = ds->GetAll()->at(0); + m_targetSurfaceNode = ds->GetAll()->at(1); + this->GetDataStorageReference()->GetDataStorage()->Add(mitk::DataNode::Pointer(ds->GetAll()->at(0))); + this->GetDataStorageReference()->GetDataStorage()->Add(mitk::DataNode::Pointer(ds->GetAll()->at(1))); + this->GetDataStorageReference()->GetDataStorage()->Modified(); - //icp->SetSource(movingSurface->GetVtkPolyData()); - //icp->SetTarget(targetSurface->GetVtkPolyData()); - //icp->SetMaximumNumberOfIterations(1000); - //icp->SetMaximumMeanDistance(0.01); - //icp->SetMeanDistanceModeToRMS(); - //icp->StartByMatchingCentroidsOn(); - //icp->SetMaximumNumberOfLandmarks(100000); - //icp->Modified(); - //vtkSmartPointer transform = vtkSmartPointer::New(); - //transform = icp->GetLandmarkTransform(); + mitk::RenderingManager::GetInstance()->SetDataStorage(this->GetDataStorageReference()->GetDataStorage()); + mitk::RenderingManager::GetInstance()->InitializeViews(); + mitk::RenderingManager::GetInstance()->RequestUpdateAll(); - //vtkSmartPointer m = icp->GetMatrix(); - //MITK_INFO << "The resulting matrix is: " << *m; + m_Controls.pushButtonExecute->setEnabled(true); + m_Controls.labelMovingSurfaceName->setText("tibia01_q0"); + m_Controls.labelTargetSurfaceName->setText("tibia02_q0"); + m_Controls.labelSelectMovingSurface->setText("Selected moving surface:"); + m_Controls.labelSelectMovingSurface->setStyleSheet(" QLabel { color: rgb(0, 0, 0) }"); + m_Controls.labelSelectTargetSurface->setText("Selected target surface:"); + m_Controls.labelSelectTargetSurface->setStyleSheet(" QLabel { color: rgb(0, 0, 0) }"); - //vtkSmartPointer icpTransformFilter = - // vtkSmartPointer::New(); - //icpTransformFilter->SetInputData(movingSurface->GetVtkPolyData()); - //icpTransformFilter->SetTransform(icp); - //icpTransformFilter->Update(); + this->GetDataStorageReference()->GetDataStorage()->Modified(); + mitk::RenderingManager::GetInstance()->InitializeViews(); + mitk::RenderingManager::GetInstance()->RequestUpdateAll(); +} - MITK_INFO << "The mean distance is: " << icp->GetMeanDistance(); +void QmitkSurfaceRegistration::performICPRegistration() +{ + mitk::Surface::Pointer movingSurface = dynamic_cast (m_movingSurfaceNode->GetData()); + mitk::Surface::Pointer targetSurface = dynamic_cast (m_targetSurfaceNode->GetData()); mitk::DataNode::Pointer registeredNode = mitk::DataNode::New(); - //registerdNodeA->SetData(icpTransformFilter->GetOutput()); - /* movingSurface->SetVtkPolyData(icpTransformFilter->GetOutput()); - movingSurface->Modified();*/ + mitk::ShapeComparisonManager *manager = new mitk::ShapeComparisonManager(); - registeredNode = manager->manageICPCalculation(movingSurface, targetSurface); - //registerdNodeA->SetData(movingSurface); + manager->setMovingSurface(movingSurface); + manager->setTargetSurface(targetSurface); + registeredNode = manager->manageICPCalculation(); this->GetDataStorageReference()->GetDataStorage()->Add(registeredNode, m_movingSurfaceNode); + + manager->~ShapeComparisonManager(); registeredNode->SetName("Moving"); this->GetDataStorageReference()->GetDataStorage()->Modified(); mitk::RenderingManager::GetInstance()->InitializeViews(); mitk::RenderingManager::GetInstance()->RequestUpdateAll(); MITK_INFO << "registration done"; } \ No newline at end of file diff --git a/Plugins/org.mitk.gui.qt.surfaceregistration/src/internal/QmitkSurfaceRegistration.h b/Plugins/org.mitk.gui.qt.surfaceregistration/src/internal/QmitkSurfaceRegistration.h index 7f4a5a320b..3b0cb1b242 100644 --- a/Plugins/org.mitk.gui.qt.surfaceregistration/src/internal/QmitkSurfaceRegistration.h +++ b/Plugins/org.mitk.gui.qt.surfaceregistration/src/internal/QmitkSurfaceRegistration.h @@ -1,103 +1,105 @@ /*========================================================================= Program: Medical Imaging & Interaction Toolkit Language: C++ Date: $Date$ Version: $Revision$ Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #ifndef QmitkSurfaceRegistration_h #define QmitkSurfaceRegistration_h #include #ifdef WIN32 #pragma warning( disable : 4250 ) #endif #include "QVTKWidget.h" #include "QmitkRegisterClasses.h" #include #include "ui_SurfaceRegistrationControls.h" #include "usServiceRegistration.h" /*! @brief QmitkSurfaceRegistrationView \warning This class is not yet documented. Use "git blame" and ask the author to provide basic documentation. \sa QmitkFunctionality \ingroup ${plugin_target}_internal */ class QmitkSurfaceRegistration : public QmitkAbstractView { // this is needed for all Qt objects that should have a Qt meta-object // (everything that derives from QObject and wants to have signal/slots) private: Q_OBJECT public: /*! @brief Constructor. Called by SampleApp (or other apps that use functionalities) */ QmitkSurfaceRegistration(QObject *parent = 0); virtual ~QmitkSurfaceRegistration(); static const std::string VIEW_ID; virtual void CreateQtPartControl(QWidget *parent); virtual void SetFocus() override; ///*! //@brief Creates the Qt connections needed //*/ QWidget* GetControls(); /// @brief Called when the user clicks the GUI button protected slots: void doExecute(); protected: // /*! //@brief called by QmitkFunctionality when DataManager's selection has changed // */ void OnSelectionChanged(berry::IWorkbenchPart::Pointer part, const QList& nodes) override; private: /*! * The parent QWidget */ QWidget* m_ParentWidget; /*! * @brief A pointer to the node of the moving surface. */ mitk::DataNode::Pointer m_movingSurfaceNode; /*! * @brief A pointer to the node of the target surface. */ mitk::DataNode::Pointer m_targetSurfaceNode; Ui::SurfaceRegistrationControls m_Controls; bool m_useTestConfig = true; void performICPRegistration(); + + void setUpTestConfig(); }; #endif // QmitkSurfaceRegistration_h \ No newline at end of file