diff --git a/Modules/DiffusionCmdApps/CMakeLists.txt b/Modules/DiffusionCmdApps/CMakeLists.txt index 0c121b8..e9a13ae 100644 --- a/Modules/DiffusionCmdApps/CMakeLists.txt +++ b/Modules/DiffusionCmdApps/CMakeLists.txt @@ -1,20 +1,20 @@ MITK_CREATE_MODULE( SUBPROJECTS MITK-Diffusion # INCLUDE_DIRS Helpers - DEPENDS MitkDiffusionCore MitkDiffusionIO MitkFiberTracking MitkQuantification MitkConnectomics + DEPENDS MitkDiffusionCore MitkDiffusionIO MitkFiberTracking MitkMriSimulation MitkQuantification MitkConnectomics PACKAGE_DEPENDS PUBLIC ITK ) if(MODULE_IS_ENABLED) add_subdirectory(Connectomics) add_subdirectory(Fiberfox) add_subdirectory(FiberProcessing) add_subdirectory(Tractography) add_subdirectory(TractographyEvaluation) add_subdirectory(Misc) add_subdirectory(Quantification) if(MITK_USE_Python) add_subdirectory(Python) endif() endif() diff --git a/Modules/FiberTracking/Algorithms/itkFiberCurvatureFilter.cpp b/Modules/FiberTracking/Algorithms/itkFiberCurvatureFilter.cpp index 1437b8e..6ed4255 100644 --- a/Modules/FiberTracking/Algorithms/itkFiberCurvatureFilter.cpp +++ b/Modules/FiberTracking/Algorithms/itkFiberCurvatureFilter.cpp @@ -1,166 +1,166 @@ /*=================================================================== 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 "itkFiberCurvatureFilter.h" #include #include #include namespace itk{ FiberCurvatureFilter::FiberCurvatureFilter() : m_AngularDeviation(30) , m_Distance(10.0) , m_RemoveFibers(false) , m_UseMedian(false) { } FiberCurvatureFilter::~FiberCurvatureFilter() { } void FiberCurvatureFilter::GenerateData() { vtkSmartPointer inputPoly = m_InputFiberBundle->GetFiberPolyData(); vtkSmartPointer vtkNewPoints = vtkSmartPointer::New(); vtkSmartPointer vtkNewCells = vtkSmartPointer::New(); MITK_INFO << "Applying curvature threshold"; boost::progress_display disp(inputPoly->GetNumberOfCells()); #pragma omp parallel for for (int i=0; iGetNumberOfCells(); i++) { std::vector< vnl_vector_fixed< double, 3 > > vertices; #pragma omp critical { ++disp; vtkCell* cell = inputPoly->GetCell(i); int numPoints = cell->GetNumberOfPoints(); vtkPoints* points = cell->GetPoints(); for (int j=0; jGetPoint(j, p); vnl_vector_fixed< double, 3 > p_vec; p_vec[0]=p[0]; p_vec[1]=p[1]; p_vec[2]=p[2]; vertices.push_back(p_vec); } } // calculate curvatures int numPoints = vertices.size(); vtkSmartPointer container = vtkSmartPointer::New(); for (int j=0; j > vectors; vnl_vector_fixed< double, 3 > meanV; meanV.fill(0.0); while(dist1) { vnl_vector_fixed< double, 3 > p1 = vertices.at(c-1); vnl_vector_fixed< double, 3 > p2 = vertices.at(c); vnl_vector_fixed< double, 3 > v = p2-p1; dist += v.magnitude(); v.normalize(); vectors.push_back(v); if (m_UseMedian && c==j) meanV += v; else if (!m_UseMedian) meanV += v; c--; } c = j; dist = 0; while(dist p1 = vertices.at(c); vnl_vector_fixed< double, 3 > p2 = vertices.at(c+1); vnl_vector_fixed< double, 3 > v = p2-p1; dist += v.magnitude(); v.normalize(); vectors.push_back(v); if (m_UseMedian && c==j) meanV += v; else if (!m_UseMedian) meanV += v; c++; } meanV.normalize(); double dev = 0; for (auto vec : vectors) { double angle = dot_product(meanV, vec); if (angle>1.0) angle = 1.0; if (angle<-1.0) angle = -1.0; dev += acos(angle)*180/itk::Math::pi; } if (vectors.size()>0) dev /= vectors.size(); if (devInsertNextPoint(vertices.at(j).data_block()); container->GetPointIds()->InsertNextId(id); } } else { if (m_RemoveFibers) { container = vtkSmartPointer::New(); break; } if (container->GetNumberOfPoints()>0) { #pragma omp critical vtkNewCells->InsertNextCell(container); } container = vtkSmartPointer::New(); } } #pragma omp critical { if (container->GetNumberOfPoints()>0) vtkNewCells->InsertNextCell(container); } } vtkSmartPointer outputPoly = vtkSmartPointer::New(); outputPoly->SetPoints(vtkNewPoints); outputPoly->SetLines(vtkNewCells); - m_OutputFiberBundle = FiberBundle::New(outputPoly); + m_OutputFiberBundle = mitk::FiberBundle::New(outputPoly); } } diff --git a/Modules/FiberTracking/Algorithms/itkFiberCurvatureFilter.h b/Modules/FiberTracking/Algorithms/itkFiberCurvatureFilter.h index c6c8ed9..40c788d 100644 --- a/Modules/FiberTracking/Algorithms/itkFiberCurvatureFilter.h +++ b/Modules/FiberTracking/Algorithms/itkFiberCurvatureFilter.h @@ -1,83 +1,82 @@ /*=================================================================== 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 itkFiberCurvatureFilter_h #define itkFiberCurvatureFilter_h // MITK #include #include -#include // ITK #include // VTK #include #include #include #include #include namespace itk{ /** * \brief */ class FiberCurvatureFilter : public ProcessObject { public: typedef FiberCurvatureFilter Self; typedef ProcessObject Superclass; typedef SmartPointer< Self > Pointer; typedef SmartPointer< const Self > ConstPointer; itkFactorylessNewMacro(Self) itkCloneMacro(Self) itkTypeMacro( FiberCurvatureFilter, ProcessObject ) void Update() override{ this->GenerateData(); } itkSetMacro( Distance, double ) itkSetMacro( AngularDeviation, double ) itkSetMacro( RemoveFibers, bool ) itkSetMacro( UseMedian, bool ) - itkSetMacro( InputFiberBundle, FiberBundle::Pointer ) - itkGetMacro( OutputFiberBundle, FiberBundle::Pointer ) + itkSetMacro( InputFiberBundle, mitk::FiberBundle::Pointer ) + itkGetMacro( OutputFiberBundle, mitk::FiberBundle::Pointer ) protected: void GenerateData() override; FiberCurvatureFilter(); ~FiberCurvatureFilter() override; - FiberBundle::Pointer m_InputFiberBundle; - FiberBundle::Pointer m_OutputFiberBundle; + mitk::FiberBundle::Pointer m_InputFiberBundle; + mitk::FiberBundle::Pointer m_OutputFiberBundle; double m_AngularDeviation; double m_Distance; bool m_RemoveFibers; bool m_UseMedian; }; } #ifndef ITK_MANUAL_INSTANTIATION #include "itkFiberCurvatureFilter.cpp" #endif #endif diff --git a/Modules/FiberTracking/CMakeLists.txt b/Modules/FiberTracking/CMakeLists.txt index 53893cf..af90880 100644 --- a/Modules/FiberTracking/CMakeLists.txt +++ b/Modules/FiberTracking/CMakeLists.txt @@ -1,47 +1,47 @@ set(_module_deps MitkDiffusionCore MitkGraphAlgorithms MitkCLVigraRandomForest) mitk_check_module_dependencies( MODULES ${_module_deps} MISSING_DEPENDENCIES_VAR _missing_deps ) if(NOT _missing_deps) set(lut_url http://mitk.org/download/data/FibertrackingLUT.tar.gz) set(lut_tarball ${CMAKE_CURRENT_BINARY_DIR}/FibertrackingLUT.tar.gz) file(DOWNLOAD ${lut_url} ${lut_tarball} EXPECTED_MD5 38ecb6d4a826c9ebb0f4965eb9aeee44 TIMEOUT 60 STATUS status SHOW_PROGRESS ) list(GET status 0 status_code) list(GET status 1 status_msg) if(NOT status_code EQUAL 0) message(SEND_ERROR "${status_msg} (error code ${status_code})") endif() file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Resources) execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf ../FibertrackingLUT.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Resources RESULT_VARIABLE result ERROR_VARIABLE err_msg) if(result) message(SEND_ERROR "Unpacking FibertrackingLUT.tar.gz failed: ${err_msg}") endif() endif() MITK_CREATE_MODULE( SUBPROJECTS MITK-Diffusion - INCLUDE_DIRS Fiberfox Fiberfox/SignalModels Fiberfox/Sequences Algorithms Algorithms/TrackingHandlers Algorithms/ClusteringMetrics Algorithms/GibbsTracking Algorithms/StochasticTracking IODataStructures IODataStructures/FiberBundle IODataStructures/PlanarFigureComposite Rendering ${CMAKE_CURRENT_BINARY_DIR} + INCLUDE_DIRS Algorithms Algorithms/TrackingHandlers Algorithms/ClusteringMetrics Algorithms/GibbsTracking Algorithms/StochasticTracking IODataStructures IODataStructures/FiberBundle IODataStructures/PlanarFigureComposite ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${_module_deps} PACKAGE_DEPENDS PUBLIC ITK|ITKFFT ITK|ITKDiffusionTensorImage Vigra HDF5 OpenMP|OpenMP_CXX ) if(MODULE_IS_ENABLED) add_subdirectory(Testing) endif() diff --git a/Modules/FiberTracking/Rendering/mitkFiberBundleThreadMonitorMapper3D.cpp b/Modules/FiberTracking/Rendering/mitkFiberBundleThreadMonitorMapper3D.cpp deleted file mode 100644 index 9dc5a40..0000000 --- a/Modules/FiberTracking/Rendering/mitkFiberBundleThreadMonitorMapper3D.cpp +++ /dev/null @@ -1,196 +0,0 @@ -/*=================================================================== - -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 "mitkFiberBundleThreadMonitorMapper3D.h" -#include -#include -//#include -#include - - - - -mitk::FiberBundleThreadMonitorMapper3D::FiberBundleThreadMonitorMapper3D() -: m_FiberMonitorMapper(vtkSmartPointer::New()) -, m_TextActorClose(vtkSmartPointer::New()) -, m_TextActorOpen(vtkSmartPointer::New()) -, m_TextActorHeading(vtkSmartPointer::New()) -, m_TextActorMask(vtkSmartPointer::New()) -, m_TextActorStatus(vtkSmartPointer::New()) -, m_TextActorStarted(vtkSmartPointer::New()) -, m_TextActorFinished(vtkSmartPointer::New()) -, m_TextActorTerminated(vtkSmartPointer::New()) -, m_FiberAssembly(vtkPropAssembly::New()) -, m_lastModifiedMonitorNodeTime(-1) -{ - m_FiberAssembly->AddPart(m_TextActorClose); - m_FiberAssembly->AddPart(m_TextActorOpen); - m_FiberAssembly->AddPart(m_TextActorHeading); - m_FiberAssembly->AddPart(m_TextActorMask); - m_FiberAssembly->AddPart(m_TextActorStatus); - m_FiberAssembly->AddPart(m_TextActorStarted); - m_FiberAssembly->AddPart(m_TextActorFinished); - m_FiberAssembly->AddPart(m_TextActorTerminated); - -} - - -mitk::FiberBundleThreadMonitorMapper3D::~FiberBundleThreadMonitorMapper3D() -{ - m_FiberAssembly->Delete(); -} - - -const mitk::FiberBundleThreadMonitor* mitk::FiberBundleThreadMonitorMapper3D::GetInput() -{ - return static_cast ( GetDataNode()->GetData() ); -} - - -/* - This method is called once the mapper gets new input, - for UI rotation or changes in colorcoding this method is NOT called - */ -void mitk::FiberBundleThreadMonitorMapper3D::GenerateDataForRenderer( mitk::BaseRenderer *renderer ) -{ - bool visible = true; - GetDataNode()->GetVisibility(visible, renderer, "visible"); - - if ( !visible ) return; - - const DataNode *node = this->GetDataNode(); - - if (m_lastModifiedMonitorNodeTime >= node->GetMTime()) - return; - - m_lastModifiedMonitorNodeTime = node->GetMTime(); - - // MITK_INFO << m_LastUpdateTime; - FiberBundleThreadMonitor* monitor = dynamic_cast ( GetDataNode()->GetData() ); - -// m_TextActor->SetInput( monitor->getTextL1().toStdString().c_str() ); - m_TextActorClose->SetInput( monitor->getBracketClose().toStdString().c_str() ); - vtkTextProperty* tpropClose = m_TextActorClose->GetTextProperty(); - //tprop->SetFontFamilyToArial (); - //tprop->SetLineSpacing(1.0); - tpropClose->SetFontSize(16); - tpropClose->SetColor(0.85,0.8,0.8); - m_TextActorClose->SetDisplayPosition( monitor->getBracketClosePosition()[0], monitor->getBracketClosePosition()[1] ); - //m_TextActorClose->Modified(); - - - m_TextActorOpen->SetInput( monitor->getBracketOpen().toStdString().c_str() ); - vtkTextProperty* tpropOpen = m_TextActorOpen->GetTextProperty(); - //tprop->SetFontFamilyToArial (); - //tprop->SetLineSpacing(1.0); - tpropOpen->SetFontSize(16); - tpropOpen->SetColor(0.85,0.8,0.8); - m_TextActorOpen->SetDisplayPosition( monitor->getBracketOpenPosition()[0], monitor->getBracketOpenPosition()[1] ); - //m_TextActorOpen->Modified(); - - - m_TextActorHeading->SetInput( monitor->getHeading().toStdString().c_str() ); - vtkTextProperty* tpropHeading = m_TextActorHeading->GetTextProperty(); - tpropHeading->SetFontSize(12); - tpropHeading->SetOpacity( monitor->getHeadingOpacity() * 0.1 ); - tpropHeading->SetColor(0.85,0.8,0.8); - m_TextActorHeading->SetDisplayPosition( monitor->getHeadingPosition()[0], monitor->getHeadingPosition()[1] ); - //m_TextActorHeading->Modified(); - - - m_TextActorMask->SetInput( monitor->getMask().toStdString().c_str() ); - vtkTextProperty* tpropMask = m_TextActorMask->GetTextProperty(); - tpropMask->SetFontSize(12); - tpropMask->SetOpacity( monitor->getMaskOpacity() * 0.1 ); - tpropMask->SetColor(1.0,1.0,1.0); - m_TextActorMask->SetDisplayPosition( monitor->getMaskPosition()[0], monitor->getMaskPosition()[1] ); - //m_TextActorHeading->Modified(); - - - m_TextActorStatus->SetInput(monitor->getStatus().toStdString().c_str()); - vtkTextProperty* tpropStatus = m_TextActorStatus->GetTextProperty(); - tpropStatus->SetFontSize(10); - tpropStatus->SetOpacity( monitor->getStatusOpacity() * 0.1 ); - tpropStatus->SetColor(0.85,0.8,0.8); - m_TextActorStatus->SetDisplayPosition( monitor->getStatusPosition()[0], monitor->getStatusPosition()[1] ); - //m_TextActorStatus->Modified(); - - m_TextActorStarted->SetInput(QString::number(monitor->getStarted()).toStdString().c_str()); - vtkTextProperty* tpropStarted = m_TextActorStarted->GetTextProperty(); - tpropStarted->SetFontSize(12); - tpropStarted->SetOpacity( monitor->getStartedOpacity() * 0.1 ); - tpropStarted->SetColor(0.0,1.0,0.0); - m_TextActorStarted->SetDisplayPosition( monitor->getStartedPosition()[0], monitor->getStartedPosition()[1] ); - //m_TextActorStarted->Modified(); - - m_TextActorFinished->SetInput(QString::number(monitor->getFinished()).toStdString().c_str()); - vtkTextProperty* tpropFinished = m_TextActorFinished->GetTextProperty(); - tpropFinished->SetFontSize(12); - tpropFinished->SetOpacity( monitor->getFinishedOpacity() * 0.1 ); - tpropFinished->SetColor(1.0,1.0,1.0); - m_TextActorFinished->SetDisplayPosition( monitor->getFinishedPosition()[0], monitor->getFinishedPosition()[1] ); - //m_TextActorFinished->Modified(); - - m_TextActorTerminated->SetInput(QString::number(monitor->getTerminated()).toStdString().c_str()); - vtkTextProperty* tpropTerminated = m_TextActorTerminated->GetTextProperty(); - tpropTerminated->SetFontSize(12); - tpropTerminated->SetOpacity( monitor->getTerminatedOpacity() * 0.1 ); - tpropTerminated->SetColor(1.0,1.0,1.0); - m_TextActorTerminated->SetDisplayPosition( monitor->getTerminatedPosition()[0], monitor->getTerminatedPosition()[1] ); - //m_TextActorTerminated->Modified(); - - - // Calculate time step of the input data for the specified renderer (integer value) - // this method is implemented in mitkMapper -// this->CalculateTimeStep( renderer ); - - -} - - -void mitk::FiberBundleThreadMonitorMapper3D::SetDefaultProperties(mitk::DataNode* node, mitk::BaseRenderer* renderer, bool overwrite) -{ - -// MITK_INFO << "FiberBundlexXXMapper3D()SetDefaultProperties"; - - - Superclass::SetDefaultProperties(node, renderer, overwrite); - - - -} - -vtkProp* mitk::FiberBundleThreadMonitorMapper3D::GetVtkProp(mitk::BaseRenderer *renderer) -{ - //MITK_INFO << "FiberBundlexXXMapper3D()GetVTKProp"; - //this->GenerateData(); - return m_FiberAssembly; - -} - -void mitk::FiberBundleThreadMonitorMapper3D::ApplyProperties(mitk::BaseRenderer* renderer) -{ -// MITK_INFO << "FiberBundleXXXMapper3D ApplyProperties(renderer)"; -} - -void mitk::FiberBundleThreadMonitorMapper3D::UpdateVtkObjects() -{ -// MITK_INFO << "FiberBundlexxXMapper3D UpdateVtkObjects()"; - - -} diff --git a/Modules/FiberTracking/Rendering/mitkFiberBundleThreadMonitorMapper3D.h b/Modules/FiberTracking/Rendering/mitkFiberBundleThreadMonitorMapper3D.h deleted file mode 100644 index 9e4ed51..0000000 --- a/Modules/FiberTracking/Rendering/mitkFiberBundleThreadMonitorMapper3D.h +++ /dev/null @@ -1,89 +0,0 @@ -/*=================================================================== - -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 FiberBundleThreadMonitorMapper3D_H_HEADER_INCLUDED -#define FiberBundleThreadMonitorMapper3D_H_HEADER_INCLUDED - -//#include //?? necessary -#include -#include -#include - -#include -#include -#include - - - -class vtkPropAssembly; - - - - -namespace mitk { - - //##Documentation - //## @brief Mapper for FiberBundle - //## @ingroup Mapper - - class MITKFIBERTRACKING_EXPORT FiberBundleThreadMonitorMapper3D : public VtkMapper - { - public: - - mitkClassMacro(FiberBundleThreadMonitorMapper3D, VtkMapper); - itkFactorylessNewMacro(Self) - itkCloneMacro(Self) - - //========== essential implementation for 3D mapper ======== - const FiberBundleThreadMonitor* GetInput(); - virtual vtkProp *GetVtkProp(mitk::BaseRenderer *renderer); //looks like depricated.. should be replaced bz GetViewProp() - static void SetDefaultProperties(DataNode* node, BaseRenderer* renderer = nullptr, bool overwrite = false ); - virtual void ApplyProperties(mitk::BaseRenderer* renderer); - virtual void GenerateDataForRenderer(mitk::BaseRenderer* renderer); - //========================================================= - - protected: - - FiberBundleThreadMonitorMapper3D(); - virtual ~FiberBundleThreadMonitorMapper3D(); - - void UpdateVtkObjects(); //?? - - - vtkSmartPointer m_FiberMonitorMapper; - vtkSmartPointer m_TextActorClose; - vtkSmartPointer m_TextActorOpen; - vtkSmartPointer m_TextActorHeading; - vtkSmartPointer m_TextActorMask; - vtkSmartPointer m_TextActorStatus; - vtkSmartPointer m_TextActorStarted; - vtkSmartPointer m_TextActorFinished; - vtkSmartPointer m_TextActorTerminated; - vtkPropAssembly* m_FiberAssembly; - - private: - double m_lastModifiedMonitorNodeTime; - - }; - -} // end namespace mitk - - - - -#endif /* FiberBundleMapper3D_H_HEADER_INCLUDED */ - diff --git a/Modules/FiberTracking/Testing/CMakeLists.txt b/Modules/FiberTracking/Testing/CMakeLists.txt index 28d176e..45606b7 100644 --- a/Modules/FiberTracking/Testing/CMakeLists.txt +++ b/Modules/FiberTracking/Testing/CMakeLists.txt @@ -1,25 +1,21 @@ MITK_CREATE_MODULE_TESTS() if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") mitkAddCustomModuleTest(mitkFiberBundleReaderWriterTest mitkFiberBundleReaderWriterTest) # Temporarily disabled. Since method relies on random numbers, the behaviour is not consistent across different systems. Solution? #mitkAddCustomModuleTest(mitkGibbsTrackingTest mitkGibbsTrackingTest ${MITK_DATA_DIR}/DiffusionImaging/qBallImage.qbi ${MITK_DATA_DIR}/DiffusionImaging/diffusionImageMask.nrrd ${MITK_DATA_DIR}/DiffusionImaging/gibbsTrackingParameters.gtp ${MITK_DATA_DIR}/DiffusionImaging/gibbsTractogram.fib) mitkAddCustomModuleTest(mitkFiberTransformationTest mitkFiberTransformationTest ${MITK_DATA_DIR}/DiffusionImaging/fiberBundleX.fib ${MITK_DATA_DIR}/DiffusionImaging/fiberBundleX_transformed.fib) mitkAddCustomModuleTest(mitkFiberExtractionTest mitkFiberExtractionTest ${MITK_DATA_DIR}/DiffusionImaging/fiberBundleX.fib ${MITK_DATA_DIR}/DiffusionImaging/fiberBundleX_extracted.fib ${MITK_DATA_DIR}/DiffusionImaging/ROI1.pf ${MITK_DATA_DIR}/DiffusionImaging/ROI2.pf ${MITK_DATA_DIR}/DiffusionImaging/ROI3.pf ${MITK_DATA_DIR}/DiffusionImaging/ROIIMAGE.nrrd ${MITK_DATA_DIR}/DiffusionImaging/fiberBundleX_inside.fib ${MITK_DATA_DIR}/DiffusionImaging/fiberBundleX_outside.fib ${MITK_DATA_DIR}/DiffusionImaging/fiberBundleX_passing-mask.fib ${MITK_DATA_DIR}/DiffusionImaging/fiberBundleX_ending-in-mask.fib ${MITK_DATA_DIR}/DiffusionImaging/fiberBundleX_subtracted.fib ${MITK_DATA_DIR}/DiffusionImaging/fiberBundleX_added.fib) -mitkAddCustomModuleTest(mitkFiberGenerationTest mitkFiberGenerationTest ${MITK_DATA_DIR}/DiffusionImaging/Fiberfox/Fiducial_0.pf ${MITK_DATA_DIR}/DiffusionImaging/Fiberfox/Fiducial_1.pf ${MITK_DATA_DIR}/DiffusionImaging/Fiberfox/Fiducial_2.pf ${MITK_DATA_DIR}/DiffusionImaging/Fiberfox/uniform.fib ${MITK_DATA_DIR}/DiffusionImaging/Fiberfox/gaussian.fib) -mitkAddCustomModuleTest(mitkFiberfoxSignalGenerationBrainSliceTest mitkFiberfoxSignalGenerationBrainSliceTest) -mitkAddCustomModuleTest(mitkFiberfoxSignalGenerationTest mitkFiberfoxSignalGenerationTest) mitkAddCustomModuleTest(mitkMachineLearningTrackingTest mitkMachineLearningTrackingTest) mitkAddCustomModuleTest(mitkStreamlineTractographyTest mitkStreamlineTractographyTest) mitkAddCustomModuleTest(mitkFiberProcessingTest mitkFiberProcessingTest) -mitkAddCustomModuleTest(mitkFiberFitTest mitkFiberFitTest) mitkAddCustomModuleTest(mitkPeakShImageReaderTest mitkPeakShImageReaderTest) if(MITK_ENABLE_RENDERING_TESTING) # apparently does not work on ubuntu mitkAddCustomModuleTest(mitkFiberMapper3DTest mitkFiberMapper3DTest) ENDIF() ENDIF() diff --git a/Modules/FiberTracking/Testing/files.cmake b/Modules/FiberTracking/Testing/files.cmake index 3d06aa5..e90b3bf 100644 --- a/Modules/FiberTracking/Testing/files.cmake +++ b/Modules/FiberTracking/Testing/files.cmake @@ -1,17 +1,13 @@ SET(MODULE_CUSTOM_TESTS mitkFiberBundleReaderWriterTest.cpp mitkGibbsTrackingTest.cpp mitkStreamlineTractographyTest.cpp mitkFiberTransformationTest.cpp mitkFiberExtractionTest.cpp - mitkFiberGenerationTest.cpp - mitkFiberfoxSignalGenerationTest.cpp - mitkFiberfoxSignalGenerationBrainSliceTest.cpp mitkMachineLearningTrackingTest.cpp mitkFiberProcessingTest.cpp - mitkFiberFitTest.cpp mitkFiberMapper3DTest.cpp mitkPeakShImageReaderTest.cpp ) diff --git a/Modules/FiberTracking/files.cmake b/Modules/FiberTracking/files.cmake index 39210be..d98038c 100644 --- a/Modules/FiberTracking/files.cmake +++ b/Modules/FiberTracking/files.cmake @@ -1,111 +1,82 @@ set(CPP_FILES mitkFiberTrackingModuleActivator.cpp ## IO datastructures IODataStructures/FiberBundle/mitkFiberBundle.cpp IODataStructures/FiberBundle/mitkTrackvis.cpp IODataStructures/PlanarFigureComposite/mitkPlanarFigureComposite.cpp IODataStructures/mitkTractographyForest.cpp - IODataStructures/mitkFiberfoxParameters.cpp IODataStructures/mitkStreamlineTractographyParameters.cpp - # Interactions - # Tractography Algorithms/GibbsTracking/mitkParticleGrid.cpp Algorithms/GibbsTracking/mitkMetropolisHastingsSampler.cpp Algorithms/GibbsTracking/mitkEnergyComputer.cpp Algorithms/GibbsTracking/mitkGibbsEnergyComputer.cpp Algorithms/GibbsTracking/mitkFiberBuilder.cpp Algorithms/GibbsTracking/mitkSphereInterpolator.cpp Algorithms/itkStreamlineTrackingFilter.cpp Algorithms/TrackingHandlers/mitkTrackingDataHandler.cpp Algorithms/TrackingHandlers/mitkTrackingHandlerTensor.cpp Algorithms/TrackingHandlers/mitkTrackingHandlerPeaks.cpp Algorithms/TrackingHandlers/mitkTrackingHandlerOdf.cpp ) set(H_FILES # DataStructures -> FiberBundle IODataStructures/FiberBundle/mitkFiberBundle.h IODataStructures/FiberBundle/mitkTrackvis.h - IODataStructures/mitkFiberfoxParameters.h IODataStructures/mitkTractographyForest.h IODataStructures/mitkStreamlineTractographyParameters.h # Algorithms Algorithms/itkTractDensityImageFilter.h Algorithms/itkTractsToFiberEndingsImageFilter.h Algorithms/itkTractsToRgbaImageFilter.h Algorithms/itkTractsToVectorImageFilter.h Algorithms/itkEvaluateDirectionImagesFilter.h Algorithms/itkEvaluateTractogramDirectionsFilter.h Algorithms/itkFiberCurvatureFilter.h - Algorithms/itkFitFibersToImageFilter.h Algorithms/itkTractClusteringFilter.h Algorithms/itkTractDistanceFilter.h Algorithms/itkFiberExtractionFilter.h Algorithms/itkTdiToVolumeFractionFilter.h # Tractography Algorithms/TrackingHandlers/mitkTrackingDataHandler.h Algorithms/TrackingHandlers/mitkTrackingHandlerRandomForest.h Algorithms/TrackingHandlers/mitkTrackingHandlerTensor.h Algorithms/TrackingHandlers/mitkTrackingHandlerPeaks.h Algorithms/TrackingHandlers/mitkTrackingHandlerOdf.h Algorithms/itkGibbsTrackingFilter.h Algorithms/itkStochasticTractographyFilter.h Algorithms/GibbsTracking/mitkParticle.h Algorithms/GibbsTracking/mitkParticleGrid.h Algorithms/GibbsTracking/mitkMetropolisHastingsSampler.h Algorithms/GibbsTracking/mitkSimpSamp.h Algorithms/GibbsTracking/mitkEnergyComputer.h Algorithms/GibbsTracking/mitkGibbsEnergyComputer.h Algorithms/GibbsTracking/mitkSphereInterpolator.h Algorithms/GibbsTracking/mitkFiberBuilder.h Algorithms/itkStreamlineTrackingFilter.h # Clustering Algorithms/ClusteringMetrics/mitkClusteringMetric.h Algorithms/ClusteringMetrics/mitkClusteringMetricEuclideanMean.h Algorithms/ClusteringMetrics/mitkClusteringMetricEuclideanMax.h Algorithms/ClusteringMetrics/mitkClusteringMetricEuclideanStd.h Algorithms/ClusteringMetrics/mitkClusteringMetricAnatomic.h Algorithms/ClusteringMetrics/mitkClusteringMetricScalarMap.h Algorithms/ClusteringMetrics/mitkClusteringMetricInnerAngles.h Algorithms/ClusteringMetrics/mitkClusteringMetricLength.h - - # Fiberfox - Fiberfox/itkFibersFromPlanarFiguresFilter.h - Fiberfox/itkTractsToDWIImageFilter.h - Fiberfox/itkKspaceImageFilter.h - Fiberfox/itkDftImageFilter.h - Fiberfox/itkFieldmapGeneratorFilter.h - Fiberfox/itkRandomPhantomFilter.h - - Fiberfox/SignalModels/mitkDiffusionSignalModel.h - Fiberfox/SignalModels/mitkTensorModel.h - Fiberfox/SignalModels/mitkBallModel.h - Fiberfox/SignalModels/mitkDotModel.h - Fiberfox/SignalModels/mitkAstroStickModel.h - Fiberfox/SignalModels/mitkStickModel.h - Fiberfox/SignalModels/mitkRawShModel.h - Fiberfox/SignalModels/mitkDiffusionNoiseModel.h - Fiberfox/SignalModels/mitkRicianNoiseModel.h - Fiberfox/SignalModels/mitkChiSquareNoiseModel.h - - Fiberfox/Sequences/mitkAcquisitionType.h - Fiberfox/Sequences/mitkSingleShotEpi.h - Fiberfox/Sequences/mitkConventionalSpinEcho.h - Fiberfox/Sequences/mitkFastSpinEcho.h ) set(RESOURCE_FILES # Binary directory resources FiberTrackingLUTBaryCoords.bin FiberTrackingLUTIndices.bin ) diff --git a/Modules/ModuleList.cmake b/Modules/ModuleList.cmake index 1be83c2..67b692a 100644 --- a/Modules/ModuleList.cmake +++ b/Modules/ModuleList.cmake @@ -1,8 +1,9 @@ set(MITK_MODULES DiffusionCore FiberTracking Connectomics Quantification + MriSimulation DiffusionIO DiffusionCmdApps ) diff --git a/Modules/MriSimulation/CMakeLists.txt b/Modules/MriSimulation/CMakeLists.txt new file mode 100644 index 0000000..8f35324 --- /dev/null +++ b/Modules/MriSimulation/CMakeLists.txt @@ -0,0 +1,12 @@ + + +MITK_CREATE_MODULE( + SUBPROJECTS MITK-Diffusion + INCLUDE_DIRS SignalModels Sequences ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS MitkFiberTracking + PACKAGE_DEPENDS PUBLIC OpenMP|OpenMP_CXX +) + +if(MODULE_IS_ENABLED) + add_subdirectory(Testing) +endif() diff --git a/Modules/FiberTracking/Fiberfox/Sequences/mitkAcquisitionType.h b/Modules/MriSimulation/Sequences/mitkAcquisitionType.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/Sequences/mitkAcquisitionType.h rename to Modules/MriSimulation/Sequences/mitkAcquisitionType.h diff --git a/Modules/FiberTracking/Fiberfox/Sequences/mitkConventionalSpinEcho.h b/Modules/MriSimulation/Sequences/mitkConventionalSpinEcho.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/Sequences/mitkConventionalSpinEcho.h rename to Modules/MriSimulation/Sequences/mitkConventionalSpinEcho.h diff --git a/Modules/FiberTracking/Fiberfox/Sequences/mitkFastSpinEcho.h b/Modules/MriSimulation/Sequences/mitkFastSpinEcho.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/Sequences/mitkFastSpinEcho.h rename to Modules/MriSimulation/Sequences/mitkFastSpinEcho.h diff --git a/Modules/FiberTracking/Fiberfox/Sequences/mitkSingleShotEpi.h b/Modules/MriSimulation/Sequences/mitkSingleShotEpi.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/Sequences/mitkSingleShotEpi.h rename to Modules/MriSimulation/Sequences/mitkSingleShotEpi.h diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkAstroStickModel.cpp b/Modules/MriSimulation/SignalModels/mitkAstroStickModel.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkAstroStickModel.cpp rename to Modules/MriSimulation/SignalModels/mitkAstroStickModel.cpp diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkAstroStickModel.h b/Modules/MriSimulation/SignalModels/mitkAstroStickModel.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkAstroStickModel.h rename to Modules/MriSimulation/SignalModels/mitkAstroStickModel.h diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkBallModel.cpp b/Modules/MriSimulation/SignalModels/mitkBallModel.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkBallModel.cpp rename to Modules/MriSimulation/SignalModels/mitkBallModel.cpp diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkBallModel.h b/Modules/MriSimulation/SignalModels/mitkBallModel.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkBallModel.h rename to Modules/MriSimulation/SignalModels/mitkBallModel.h diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkChiSquareNoiseModel.cpp b/Modules/MriSimulation/SignalModels/mitkChiSquareNoiseModel.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkChiSquareNoiseModel.cpp rename to Modules/MriSimulation/SignalModels/mitkChiSquareNoiseModel.cpp diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkChiSquareNoiseModel.h b/Modules/MriSimulation/SignalModels/mitkChiSquareNoiseModel.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkChiSquareNoiseModel.h rename to Modules/MriSimulation/SignalModels/mitkChiSquareNoiseModel.h diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkDiffusionNoiseModel.h b/Modules/MriSimulation/SignalModels/mitkDiffusionNoiseModel.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkDiffusionNoiseModel.h rename to Modules/MriSimulation/SignalModels/mitkDiffusionNoiseModel.h diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkDiffusionSignalModel.h b/Modules/MriSimulation/SignalModels/mitkDiffusionSignalModel.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkDiffusionSignalModel.h rename to Modules/MriSimulation/SignalModels/mitkDiffusionSignalModel.h diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkDotModel.cpp b/Modules/MriSimulation/SignalModels/mitkDotModel.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkDotModel.cpp rename to Modules/MriSimulation/SignalModels/mitkDotModel.cpp diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkDotModel.h b/Modules/MriSimulation/SignalModels/mitkDotModel.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkDotModel.h rename to Modules/MriSimulation/SignalModels/mitkDotModel.h diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkRawShModel.cpp b/Modules/MriSimulation/SignalModels/mitkRawShModel.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkRawShModel.cpp rename to Modules/MriSimulation/SignalModels/mitkRawShModel.cpp diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkRawShModel.h b/Modules/MriSimulation/SignalModels/mitkRawShModel.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkRawShModel.h rename to Modules/MriSimulation/SignalModels/mitkRawShModel.h diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkRicianNoiseModel.cpp b/Modules/MriSimulation/SignalModels/mitkRicianNoiseModel.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkRicianNoiseModel.cpp rename to Modules/MriSimulation/SignalModels/mitkRicianNoiseModel.cpp diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkRicianNoiseModel.h b/Modules/MriSimulation/SignalModels/mitkRicianNoiseModel.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkRicianNoiseModel.h rename to Modules/MriSimulation/SignalModels/mitkRicianNoiseModel.h diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkStickModel.cpp b/Modules/MriSimulation/SignalModels/mitkStickModel.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkStickModel.cpp rename to Modules/MriSimulation/SignalModels/mitkStickModel.cpp diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkStickModel.h b/Modules/MriSimulation/SignalModels/mitkStickModel.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkStickModel.h rename to Modules/MriSimulation/SignalModels/mitkStickModel.h diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkTensorModel.cpp b/Modules/MriSimulation/SignalModels/mitkTensorModel.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkTensorModel.cpp rename to Modules/MriSimulation/SignalModels/mitkTensorModel.cpp diff --git a/Modules/FiberTracking/Fiberfox/SignalModels/mitkTensorModel.h b/Modules/MriSimulation/SignalModels/mitkTensorModel.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/SignalModels/mitkTensorModel.h rename to Modules/MriSimulation/SignalModels/mitkTensorModel.h diff --git a/Modules/MriSimulation/Testing/CMakeLists.txt b/Modules/MriSimulation/Testing/CMakeLists.txt new file mode 100644 index 0000000..edb6c7b --- /dev/null +++ b/Modules/MriSimulation/Testing/CMakeLists.txt @@ -0,0 +1,7 @@ +MITK_CREATE_MODULE_TESTS() + +mitkAddCustomModuleTest(mitkFiberGenerationTest mitkFiberGenerationTest ${MITK_DATA_DIR}/DiffusionImaging/Fiberfox/Fiducial_0.pf ${MITK_DATA_DIR}/DiffusionImaging/Fiberfox/Fiducial_1.pf ${MITK_DATA_DIR}/DiffusionImaging/Fiberfox/Fiducial_2.pf ${MITK_DATA_DIR}/DiffusionImaging/Fiberfox/uniform.fib ${MITK_DATA_DIR}/DiffusionImaging/Fiberfox/gaussian.fib) + +mitkAddCustomModuleTest(mitkFiberfoxSignalGenerationBrainSliceTest mitkFiberfoxSignalGenerationBrainSliceTest) +mitkAddCustomModuleTest(mitkFiberfoxSignalGenerationTest mitkFiberfoxSignalGenerationTest) +mitkAddCustomModuleTest(mitkFiberFitTest mitkFiberFitTest) diff --git a/Modules/MriSimulation/Testing/files.cmake b/Modules/MriSimulation/Testing/files.cmake new file mode 100644 index 0000000..f2e9bff --- /dev/null +++ b/Modules/MriSimulation/Testing/files.cmake @@ -0,0 +1,8 @@ +SET(MODULE_CUSTOM_TESTS + mitkFiberGenerationTest.cpp + mitkFiberfoxSignalGenerationTest.cpp + mitkFiberfoxSignalGenerationBrainSliceTest.cpp + mitkFiberFitTest.cpp +) + + diff --git a/Modules/FiberTracking/Testing/mitkFiberFitTest.cpp b/Modules/MriSimulation/Testing/mitkFiberFitTest.cpp similarity index 100% rename from Modules/FiberTracking/Testing/mitkFiberFitTest.cpp rename to Modules/MriSimulation/Testing/mitkFiberFitTest.cpp diff --git a/Modules/FiberTracking/Testing/mitkFiberGenerationTest.cpp b/Modules/MriSimulation/Testing/mitkFiberGenerationTest.cpp similarity index 100% rename from Modules/FiberTracking/Testing/mitkFiberGenerationTest.cpp rename to Modules/MriSimulation/Testing/mitkFiberGenerationTest.cpp diff --git a/Modules/FiberTracking/Testing/mitkFiberfoxSignalGenerationBrainSliceTest.cpp b/Modules/MriSimulation/Testing/mitkFiberfoxSignalGenerationBrainSliceTest.cpp similarity index 100% rename from Modules/FiberTracking/Testing/mitkFiberfoxSignalGenerationBrainSliceTest.cpp rename to Modules/MriSimulation/Testing/mitkFiberfoxSignalGenerationBrainSliceTest.cpp diff --git a/Modules/FiberTracking/Testing/mitkFiberfoxSignalGenerationTest.cpp b/Modules/MriSimulation/Testing/mitkFiberfoxSignalGenerationTest.cpp similarity index 100% rename from Modules/FiberTracking/Testing/mitkFiberfoxSignalGenerationTest.cpp rename to Modules/MriSimulation/Testing/mitkFiberfoxSignalGenerationTest.cpp diff --git a/Modules/MriSimulation/files.cmake b/Modules/MriSimulation/files.cmake new file mode 100644 index 0000000..7c9fc50 --- /dev/null +++ b/Modules/MriSimulation/files.cmake @@ -0,0 +1,32 @@ +set(CPP_FILES + + mitkFiberfoxParameters.cpp +) + +set(H_FILES + mitkFiberfoxParameters.h + + itkFitFibersToImageFilter.h + itkFibersFromPlanarFiguresFilter.h + itkTractsToDWIImageFilter.h + itkKspaceImageFilter.h + itkDftImageFilter.h + itkFieldmapGeneratorFilter.h + itkRandomPhantomFilter.h + + SignalModels/mitkDiffusionSignalModel.h + SignalModels/mitkTensorModel.h + SignalModels/mitkBallModel.h + SignalModels/mitkDotModel.h + SignalModels/mitkAstroStickModel.h + SignalModels/mitkStickModel.h + SignalModels/mitkRawShModel.h + SignalModels/mitkDiffusionNoiseModel.h + SignalModels/mitkRicianNoiseModel.h + SignalModels/mitkChiSquareNoiseModel.h + + Sequences/mitkAcquisitionType.h + Sequences/mitkSingleShotEpi.h + Sequences/mitkConventionalSpinEcho.h + Sequences/mitkFastSpinEcho.h +) diff --git a/Modules/FiberTracking/Fiberfox/itkDftImageFilter.cpp b/Modules/MriSimulation/itkDftImageFilter.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkDftImageFilter.cpp rename to Modules/MriSimulation/itkDftImageFilter.cpp diff --git a/Modules/FiberTracking/Fiberfox/itkDftImageFilter.h b/Modules/MriSimulation/itkDftImageFilter.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkDftImageFilter.h rename to Modules/MriSimulation/itkDftImageFilter.h diff --git a/Modules/FiberTracking/Fiberfox/itkFibersFromPlanarFiguresFilter.cpp b/Modules/MriSimulation/itkFibersFromPlanarFiguresFilter.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkFibersFromPlanarFiguresFilter.cpp rename to Modules/MriSimulation/itkFibersFromPlanarFiguresFilter.cpp diff --git a/Modules/FiberTracking/Fiberfox/itkFibersFromPlanarFiguresFilter.h b/Modules/MriSimulation/itkFibersFromPlanarFiguresFilter.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkFibersFromPlanarFiguresFilter.h rename to Modules/MriSimulation/itkFibersFromPlanarFiguresFilter.h diff --git a/Modules/FiberTracking/Fiberfox/itkFieldmapGeneratorFilter.cpp b/Modules/MriSimulation/itkFieldmapGeneratorFilter.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkFieldmapGeneratorFilter.cpp rename to Modules/MriSimulation/itkFieldmapGeneratorFilter.cpp diff --git a/Modules/FiberTracking/Fiberfox/itkFieldmapGeneratorFilter.h b/Modules/MriSimulation/itkFieldmapGeneratorFilter.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkFieldmapGeneratorFilter.h rename to Modules/MriSimulation/itkFieldmapGeneratorFilter.h diff --git a/Modules/FiberTracking/Algorithms/itkFitFibersToImageFilter.cpp b/Modules/MriSimulation/itkFitFibersToImageFilter.cpp similarity index 100% rename from Modules/FiberTracking/Algorithms/itkFitFibersToImageFilter.cpp rename to Modules/MriSimulation/itkFitFibersToImageFilter.cpp diff --git a/Modules/FiberTracking/Algorithms/itkFitFibersToImageFilter.h b/Modules/MriSimulation/itkFitFibersToImageFilter.h similarity index 100% rename from Modules/FiberTracking/Algorithms/itkFitFibersToImageFilter.h rename to Modules/MriSimulation/itkFitFibersToImageFilter.h diff --git a/Modules/FiberTracking/Fiberfox/itkKspaceImageFilter.cpp b/Modules/MriSimulation/itkKspaceImageFilter.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkKspaceImageFilter.cpp rename to Modules/MriSimulation/itkKspaceImageFilter.cpp diff --git a/Modules/FiberTracking/Fiberfox/itkKspaceImageFilter.h b/Modules/MriSimulation/itkKspaceImageFilter.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkKspaceImageFilter.h rename to Modules/MriSimulation/itkKspaceImageFilter.h diff --git a/Modules/FiberTracking/Fiberfox/itkRandomPhantomFilter.cpp b/Modules/MriSimulation/itkRandomPhantomFilter.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkRandomPhantomFilter.cpp rename to Modules/MriSimulation/itkRandomPhantomFilter.cpp diff --git a/Modules/FiberTracking/Fiberfox/itkRandomPhantomFilter.h b/Modules/MriSimulation/itkRandomPhantomFilter.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkRandomPhantomFilter.h rename to Modules/MriSimulation/itkRandomPhantomFilter.h diff --git a/Modules/FiberTracking/Fiberfox/itkTractsToDWIImageFilter.cpp b/Modules/MriSimulation/itkTractsToDWIImageFilter.cpp similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkTractsToDWIImageFilter.cpp rename to Modules/MriSimulation/itkTractsToDWIImageFilter.cpp diff --git a/Modules/FiberTracking/Fiberfox/itkTractsToDWIImageFilter.h b/Modules/MriSimulation/itkTractsToDWIImageFilter.h similarity index 100% rename from Modules/FiberTracking/Fiberfox/itkTractsToDWIImageFilter.h rename to Modules/MriSimulation/itkTractsToDWIImageFilter.h diff --git a/Modules/FiberTracking/IODataStructures/mitkFiberfoxParameters.cpp b/Modules/MriSimulation/mitkFiberfoxParameters.cpp similarity index 100% rename from Modules/FiberTracking/IODataStructures/mitkFiberfoxParameters.cpp rename to Modules/MriSimulation/mitkFiberfoxParameters.cpp diff --git a/Modules/FiberTracking/IODataStructures/mitkFiberfoxParameters.h b/Modules/MriSimulation/mitkFiberfoxParameters.h similarity index 98% rename from Modules/FiberTracking/IODataStructures/mitkFiberfoxParameters.h rename to Modules/MriSimulation/mitkFiberfoxParameters.h index 0aa0e29..cb4580e 100644 --- a/Modules/FiberTracking/IODataStructures/mitkFiberfoxParameters.h +++ b/Modules/MriSimulation/mitkFiberfoxParameters.h @@ -1,339 +1,339 @@ /*=================================================================== 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 _MITK_FiberfoxParameters_H #define _MITK_FiberfoxParameters_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include -#include +#include #include namespace mitk { class MITKFIBERTRACKING_EXPORT FiberfoxParameters; /** Signal generation */ - class MITKFIBERTRACKING_EXPORT SignalGenerationParameters + class MITKMRISIMULATION_EXPORT SignalGenerationParameters { friend FiberfoxParameters; public: typedef itk::Image ItkFloatImgType; typedef itk::Image ItkUcharImgType; typedef itk::Vector GradientType; typedef std::vector GradientListType; enum CoilSensitivityProfile : int { COIL_CONSTANT, COIL_LINEAR, COIL_EXPONENTIAL }; enum AcquisitionType : int { SingleShotEpi, ConventionalSpinEcho, FastSpinEcho, }; SignalGenerationParameters() : m_AcquisitionType(SignalGenerationParameters::SingleShotEpi) , m_SignalScale(100) , m_tEcho(100) , m_tRep(4000) , m_tInv(0) , m_tLine(1) , m_tInhom(50) , m_EchoTrainLength(8) , m_ReversePhase(false) , m_PartialFourier(1.0) , m_NoiseVariance(0.001f) , m_NumberOfCoils(1) , m_CoilSensitivityProfile(SignalGenerationParameters::COIL_CONSTANT) , m_CoilSensitivity(0.3f) , m_SimulateKspaceAcquisition(false) , m_AxonRadius(0) , m_DoDisablePartialVolume(false) , m_Spikes(0) , m_SpikeAmplitude(1) , m_KspaceLineOffset(0) , m_EddyStrength(0.002f) , m_Tau(70) , m_CroppingFactor(1) , m_Drift(0.06) , m_DoAddGibbsRinging(false) , m_ZeroRinging(0) , m_DoSimulateRelaxation(true) , m_DoAddMotion(false) , m_DoRandomizeMotion(true) , m_DoAddDrift(false) , m_FrequencyMap(nullptr) , m_MaskImage(nullptr) , m_Bvalue(1000) { m_ImageRegion.SetSize(0, 12); m_ImageRegion.SetSize(1, 12); m_ImageRegion.SetSize(2, 3); m_ImageSpacing.Fill(2.0); m_ImageOrigin.Fill(0.0); m_ImageDirection.SetIdentity(); m_Translation.Fill(0.0); m_Rotation.Fill(0.0); SetNumWeightedVolumes(6); } /** input/output image specifications */ itk::ImageRegion<3> m_CroppedRegion; ///< Image size with reduced FOV. itk::ImageRegion<3> m_ImageRegion; ///< Image size. itk::Vector m_ImageSpacing; ///< Image voxel size. itk::Point m_ImageOrigin; ///< Image origin. itk::Matrix m_ImageDirection; ///< Image rotation matrix. /** Other acquisitions parameters */ AcquisitionType m_AcquisitionType; ///< determines k-space trajectory and maximum echo position(s) float m_SignalScale; ///< Scaling factor for output signal (before noise is added). float m_tEcho; ///< Echo time TE. float m_tRep; ///< Echo time TR. float m_tInv; ///< Inversion time float m_tLine; ///< k-space line readout time (dwell time). float m_tInhom; ///< T2' unsigned int m_EchoTrainLength; ///< Only relevant for Fast Spin Echo sequence (number of k-space lines acquired with one RF pulse) bool m_ReversePhase; ///< If true, the phase readout direction will be inverted (-y instead of y) float m_PartialFourier; ///< Partial fourier factor (0.5-1) float m_NoiseVariance; ///< Variance of complex gaussian noise unsigned int m_NumberOfCoils; ///< Number of coils in multi-coil acquisition CoilSensitivityProfile m_CoilSensitivityProfile; ///< Choose between constant, linear or exponential sensitivity profile of the used coils float m_CoilSensitivity; ///< signal remaining in slice center bool m_SimulateKspaceAcquisition;///< Flag to enable/disable k-space acquisition simulation double m_AxonRadius; ///< Determines compartment volume fractions (0 == automatic axon radius estimation) bool m_DoDisablePartialVolume; ///< Disable partial volume effects. Each voxel is either all fiber or all non-fiber. /** Artifacts and other effects */ unsigned int m_Spikes; ///< Number of spikes randomly appearing in the image float m_SpikeAmplitude; ///< amplitude of spikes relative to the largest signal intensity (magnitude of complex) float m_KspaceLineOffset; ///< Causes N/2 ghosts. Larger offset means stronger ghost. float m_EddyStrength; ///< Strength of eddy current induced gradients in mT/m. float m_Tau; ///< Eddy current decay constant (in ms) float m_CroppingFactor; ///< FOV size in y-direction is multiplied by this factor. Causes aliasing artifacts. float m_Drift; ///< Global signal decrease by the end of the acquisition. bool m_DoAddGibbsRinging; ///< Add Gibbs ringing artifact int m_ZeroRinging; ///< If > 0, ringing is simulated by by setting the defined percentage of higher frequencies to 0 in k-space. Otherwise, the input to the k-space simulation is generated with twice the resolution and cropped during k-space simulation (much slower). bool m_DoSimulateRelaxation; ///< Add T2 relaxation effects bool m_DoAddMotion; ///< Enable motion artifacts. bool m_DoRandomizeMotion; ///< Toggles between random and linear motion. bool m_DoAddDrift; ///< Add quadratic signal drift. std::vector< bool > m_MotionVolumes; ///< Indicates the image volumes that are affected by motion ///< with positive numbers, inverted logic with negative numbers. itk::Vector m_Translation; ///< Maximum translational motion. itk::Vector m_Rotation; ///< Maximum rotational motion. ItkFloatImgType::Pointer m_FrequencyMap; ///< If != nullptr, distortions are added to the image using this frequency map. ItkUcharImgType::Pointer m_MaskImage; ///< Signal is only genrated inside of the mask image. std::vector< int > GetBaselineIndices(); ///< Returns list of nun-diffusion-weighted image volume indices unsigned int GetFirstBaselineIndex(); ///< Returns index of first non-diffusion-weighted image volume bool IsBaselineIndex(unsigned int idx); ///< Checks if image volume with given index is non-diffusion-weighted volume or not. unsigned int GetNumWeightedVolumes(); ///< Get number of diffusion-weighted image volumes unsigned int GetNumBaselineVolumes(); ///< Get number of non-diffusion-weighted image volumes unsigned int GetNumVolumes(); ///< Get number of baseline and diffusion-weighted image volumes GradientListType GetGradientDirections(); ///< Return gradient direction container mitk::DiffusionPropertyHelper::GradientDirectionsContainerType::Pointer GetItkGradientContainer(); GradientType GetGradientDirection(unsigned int i); std::vector< int > GetBvalues(); ///< Returns a vector with all unique b-values (determined by the gradient magnitudes) double GetBvalue(); void ApplyDirectionMatrix(); protected: unsigned int m_NumGradients; ///< Number of diffusion-weighted image volumes. unsigned int m_NumBaseline; ///< Number of non-diffusion-weighted image volumes. GradientListType m_GradientDirections; ///< Total number of image volumes. double m_Bvalue; ///< Acquisition b-value void SetNumWeightedVolumes(int numGradients); ///< Automaticall calls GenerateGradientHalfShell() afterwards. void SetGradienDirections(GradientListType gradientList); void SetGradienDirections(mitk::DiffusionPropertyHelper::GradientDirectionsContainerType::Pointer gradientList); void GenerateGradientHalfShell(); ///< Generates half shell of gradient directions (with m_NumGradients non-zero directions) }; /** Fiber generation */ - class MITKFIBERTRACKING_EXPORT FiberGenerationParameters + class MITKMRISIMULATION_EXPORT FiberGenerationParameters { public: enum FiberDistribution { DISTRIBUTE_UNIFORM, // distribute fibers uniformly in the ROIs DISTRIBUTE_GAUSSIAN // distribute fibers using a 2D gaussian }; typedef std::vector< std::vector< mitk::PlanarEllipse::Pointer > > FiducialListType; typedef std::vector< std::vector< unsigned int > > FlipListType; FiberGenerationParameters() : m_Distribution(DISTRIBUTE_UNIFORM) , m_Density(100) , m_Variance(100) , m_Sampling(1) , m_Tension(0) , m_Continuity(0) , m_Bias(0) { m_Rotation.Fill(0.0); m_Translation.Fill(0.0); m_Scale.Fill(1.0); } FiberDistribution m_Distribution; unsigned int m_Density; double m_Variance; double m_Sampling; double m_Tension; double m_Continuity; double m_Bias; mitk::Vector3D m_Rotation; mitk::Vector3D m_Translation; mitk::Vector3D m_Scale; FlipListType m_FlipList; ///< contains flags indicating a flip of the 2D fiber x-coordinates (needed to resolve some unwanted fiber twisting) FiducialListType m_Fiducials; ///< container of the planar ellipses used as fiducials for the fiber generation process }; /** GUI persistence, input, output, ... */ - class MITKFIBERTRACKING_EXPORT MiscFiberfoxParameters + class MITKMRISIMULATION_EXPORT MiscFiberfoxParameters { public: MiscFiberfoxParameters() : m_ResultNode(DataNode::New()) , m_ParentNode(nullptr) , m_SignalModelString("") , m_ArtifactModelString("") , m_OutputPath("/tmp/") , m_OutputPrefix("fiberfox") , m_AfterSimulationMessage("") , m_BvalsFile("") , m_BvecsFile("") , m_OutputAdditionalImages(false) , m_CheckAdvancedSignalOptionsBox(false) , m_DoAddNoise(false) , m_DoAddGhosts(false) , m_DoAddAliasing(false) , m_DoAddSpikes(false) , m_DoAddEddyCurrents(false) , m_DoAddDistortions(false) , m_MotionVolumesBox("random") , m_CheckRealTimeFibersBox(true) , m_CheckAdvancedFiberOptionsBox(false) , m_CheckConstantRadiusBox(false) , m_CheckIncludeFiducialsBox(true) {} DataNode::Pointer m_ResultNode; ///< Stores resulting image. DataNode::Pointer m_ParentNode; ///< Parent node of result node. std::string m_SignalModelString; ///< Appendet to the name of the result node std::string m_ArtifactModelString; ///< Appendet to the name of the result node std::string m_OutputPath; ///< Image is automatically saved to the specified folder after simulation is finished. std::string m_OutputPrefix; /** Prefix for filename of output files and logfile. */ std::string m_AfterSimulationMessage; ///< Store messages that are displayed after the simulation has finished (e.g. warnings, automatic parameter adjustments etc.) std::string m_BvalsFile; std::string m_BvecsFile; /** member variables that store the check-state of GUI checkboxes */ // image generation bool m_OutputAdditionalImages; bool m_CheckAdvancedSignalOptionsBox; bool m_DoAddNoise; bool m_DoAddGhosts; bool m_DoAddAliasing; bool m_DoAddSpikes; bool m_DoAddEddyCurrents; bool m_DoAddDistortions; std::string m_MotionVolumesBox; // fiber generation bool m_CheckRealTimeFibersBox; bool m_CheckAdvancedFiberOptionsBox; bool m_CheckConstantRadiusBox; bool m_CheckIncludeFiducialsBox; }; /** * \brief Datastructure to manage the Fiberfox signal generation parameters. * */ - class MITKFIBERTRACKING_EXPORT FiberfoxParameters + class MITKMRISIMULATION_EXPORT FiberfoxParameters { public: typedef itk::Image ItkFloatImgType; typedef itk::Image ItkDoubleImgType; typedef itk::Image ItkUcharImgType; typedef DiffusionSignalModel DiffusionModelType; typedef std::vector< DiffusionModelType* > DiffusionModelListType; typedef DiffusionNoiseModel NoiseModelType; FiberfoxParameters(); FiberfoxParameters(const FiberfoxParameters ¶ms); ~FiberfoxParameters(); /** Not templated parameters */ FiberGenerationParameters m_FiberGen; ///< Fiber generation parameters SignalGenerationParameters m_SignalGen; ///< Signal generation parameters MiscFiberfoxParameters m_Misc; ///< GUI realted and I/O parameters /** Templated parameters */ DiffusionModelListType m_FiberModelList; ///< Intra- and inter-axonal compartments. DiffusionModelListType m_NonFiberModelList; ///< Extra-axonal compartments. std::shared_ptr< NoiseModelType > m_NoiseModel; ///< If != nullptr, noise is added to the image. void GenerateGradientHalfShell(); void SetNumWeightedVolumes(int numGradients); ///< Automaticall calls GenerateGradientHalfShell() afterwards. void SetGradienDirections(mitk::SignalGenerationParameters::GradientListType gradientList); void SetGradienDirections(mitk::DiffusionPropertyHelper::GradientDirectionsContainerType::Pointer gradientList); void SetBvalue(double Bvalue); void UpdateSignalModels(); void ClearFiberParameters(); void ClearSignalParameters(); void ApplyDirectionMatrix(); void PrintSelf(); ///< Print parameters to stdout. void SaveParameters(std::string filename); ///< Save image generation parameters to .ffp file. void LoadParameters(std::string filename, bool fix_seed=false); ///< Load image generation parameters from .ffp file. template< class ParameterType > ParameterType ReadVal(boost::property_tree::ptree::value_type const& v, std::string tag, ParameterType defaultValue, bool essential=false); std::string m_MissingTags; }; } #endif diff --git a/Plugins/org.mitk.gui.qt.diffusionimaging.fiberfox/CMakeLists.txt b/Plugins/org.mitk.gui.qt.diffusionimaging.fiberfox/CMakeLists.txt index ffd3375..6632ab4 100644 --- a/Plugins/org.mitk.gui.qt.diffusionimaging.fiberfox/CMakeLists.txt +++ b/Plugins/org.mitk.gui.qt.diffusionimaging.fiberfox/CMakeLists.txt @@ -1,10 +1,10 @@ # The project name must correspond to the directory name of your plug-in # and must not contain periods. project(org_mitk_gui_qt_diffusionimaging_fiberfox) mitk_create_plugin( SUBPROJECTS MITK-Diffusion EXPORT_DIRECTIVE DIFFUSIONIMAGING_FIBERFOX_EXPORT EXPORTED_INCLUDE_SUFFIXES src - MODULE_DEPENDS MitkFiberTracking + MODULE_DEPENDS MitkFiberTracking MitkMriSimulation ) diff --git a/Plugins/org.mitk.gui.qt.diffusionimaging.fiberprocessing/CMakeLists.txt b/Plugins/org.mitk.gui.qt.diffusionimaging.fiberprocessing/CMakeLists.txt index c06c70a..1b4e8a5 100644 --- a/Plugins/org.mitk.gui.qt.diffusionimaging.fiberprocessing/CMakeLists.txt +++ b/Plugins/org.mitk.gui.qt.diffusionimaging.fiberprocessing/CMakeLists.txt @@ -1,10 +1,10 @@ # The project name must correspond to the directory name of your plug-in # and must not contain periods. project(org_mitk_gui_qt_diffusionimaging_fiberprocessing) mitk_create_plugin( SUBPROJECTS MITK-Diffusion EXPORT_DIRECTIVE DIFFUSIONIMAGING_FIBERPROCESSING_EXPORT EXPORTED_INCLUDE_SUFFIXES src - MODULE_DEPENDS MitkFiberTracking MitkChart MitkMultilabel + MODULE_DEPENDS MitkFiberTracking MitkMriSimulation MitkChart MitkMultilabel )