diff --git a/Modules/DiffusionImaging/DiffusionIO/files.cmake b/Modules/DiffusionImaging/DiffusionIO/files.cmake index 20174ef77d..209e2cf4ff 100644 --- a/Modules/DiffusionImaging/DiffusionIO/files.cmake +++ b/Modules/DiffusionImaging/DiffusionIO/files.cmake @@ -1,36 +1,38 @@ set(CPP_FILES mitkDiffusionModuleActivator.cpp mitkNrrdTbssImageWriterFactory.cpp #mitkFiberBundleIOFactory.cpp mitkConnectomicsNetworkReader.cpp mitkConnectomicsNetworkWriter.cpp mitkConnectomicsNetworkCSVWriter.cpp mitkConnectomicsNetworkMatrixWriter.cpp mitkConnectomicsNetworkSerializer.cpp mitkConnectomicsNetworkDefinitions.cpp mitkNrrdTbssRoiImageIOFactory.cpp #mitkFiberBundleWriterFactory.cpp mitkNrrdTbssRoiImageWriterFactory.cpp mitkFiberTrackingObjectFactory.cpp mitkConnectomicsObjectFactory.cpp mitkQuantificationObjectFactory.cpp mitkNrrdTbssImageIOFactory.cpp mitkDiffusionIOMimeTypes.cpp mitkFiberBundleTckReader.cpp mitkFiberBundleTrackVisReader.cpp mitkFiberBundleTrackVisWriter.cpp mitkFiberBundleVtkReader.cpp mitkFiberBundleVtkWriter.cpp mitkFiberBundleSerializer.cpp mitkFiberBundleMapper2D.cpp mitkFiberBundleMapper3D.cpp + mitkTractographyForestReader.cpp mitkTractographyForestWriter.cpp + mitkTractographyForestSerializer.cpp mitkPlanarFigureCompositeWriter.cpp mitkPlanarFigureCompositeReader.cpp mitkPlanarFigureCompositeSerializer.cpp ) diff --git a/Modules/DiffusionImaging/DiffusionIO/mitkPlanarFigureCompositeSerializer.h b/Modules/DiffusionImaging/DiffusionIO/mitkPlanarFigureCompositeSerializer.h index 24184e2a5f..28e9b29a5e 100644 --- a/Modules/DiffusionImaging/DiffusionIO/mitkPlanarFigureCompositeSerializer.h +++ b/Modules/DiffusionImaging/DiffusionIO/mitkPlanarFigureCompositeSerializer.h @@ -1,39 +1,39 @@ /*=================================================================== 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 mitkPlanarFigureCompositeSerializer_h_included #define mitkPlanarFigureCompositeSerializer_h_included #include "mitkBaseDataSerializer.h" namespace mitk { /** - \brief Serializes mitk::Surface for mitk::SceneIO + \brief Serializes mitk::PlanarFigureComposite for mitk::SceneIO */ class PlanarFigureCompositeSerializer : public BaseDataSerializer { public: mitkClassMacro( PlanarFigureCompositeSerializer, BaseDataSerializer ); itkFactorylessNewMacro(Self) itkCloneMacro(Self) virtual std::string Serialize() override; protected: PlanarFigureCompositeSerializer(); virtual ~PlanarFigureCompositeSerializer(); }; } // namespace #endif diff --git a/Modules/DiffusionImaging/DiffusionIO/mitkTractographyForestSerializer.cpp b/Modules/DiffusionImaging/DiffusionIO/mitkTractographyForestSerializer.cpp new file mode 100644 index 0000000000..b26c6ce347 --- /dev/null +++ b/Modules/DiffusionImaging/DiffusionIO/mitkTractographyForestSerializer.cpp @@ -0,0 +1,73 @@ +/*=================================================================== + +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 "mitkTractographyForestSerializer.h" +#include "mitkTractographyForest.h" +#include "mitkTractographyForestWriter.h" +#include + +#include +#include + + +MITK_REGISTER_SERIALIZER(TractographyForestSerializer) + + +mitk::TractographyForestSerializer::TractographyForestSerializer() +{ +} + + +mitk::TractographyForestSerializer::~TractographyForestSerializer() +{ +} + + +std::string mitk::TractographyForestSerializer::Serialize() +{ + const TractographyForest* fb = dynamic_cast( m_Data.GetPointer() ); + if (fb == nullptr) + { + MITK_ERROR << " Object at " << (const void*) this->m_Data + << " is not an mitk::TractographyForest. Cannot serialize as TractographyForest."; + return ""; + } + + std::string filename( this->GetUniqueFilenameInWorkingDirectory() ); + filename += "_"; + filename += m_FilenameHint; + filename += ".rf"; + + std::string fullname(m_WorkingDirectory); + fullname += "/"; + fullname += itksys::SystemTools::ConvertToOutputPath(filename.c_str()); + + try + { + mitk::IOUtil::Save(fb,fullname); + } + catch (std::exception& e) + { + MITK_ERROR << " Error serializing object at " << (const void*) this->m_Data + << " to " + << fullname + << ": " + << e.what(); + return ""; + } + return filename; +} + diff --git a/Modules/DiffusionImaging/DiffusionIO/mitkPlanarFigureCompositeSerializer.h b/Modules/DiffusionImaging/DiffusionIO/mitkTractographyForestSerializer.h similarity index 64% copy from Modules/DiffusionImaging/DiffusionIO/mitkPlanarFigureCompositeSerializer.h copy to Modules/DiffusionImaging/DiffusionIO/mitkTractographyForestSerializer.h index 24184e2a5f..ac336e6b17 100644 --- a/Modules/DiffusionImaging/DiffusionIO/mitkPlanarFigureCompositeSerializer.h +++ b/Modules/DiffusionImaging/DiffusionIO/mitkTractographyForestSerializer.h @@ -1,39 +1,39 @@ /*=================================================================== 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 mitkPlanarFigureCompositeSerializer_h_included -#define mitkPlanarFigureCompositeSerializer_h_included +#ifndef mitkTractographyForestSerializer_h_included +#define mitkTractographyForestSerializer_h_included #include "mitkBaseDataSerializer.h" namespace mitk { /** - \brief Serializes mitk::Surface for mitk::SceneIO + \brief Serializes mitk::TractographyForest for mitk::SceneIO */ -class PlanarFigureCompositeSerializer : public BaseDataSerializer +class TractographyForestSerializer : public BaseDataSerializer { public: - mitkClassMacro( PlanarFigureCompositeSerializer, BaseDataSerializer ); + mitkClassMacro( TractographyForestSerializer, BaseDataSerializer ); itkFactorylessNewMacro(Self) itkCloneMacro(Self) virtual std::string Serialize() override; protected: - PlanarFigureCompositeSerializer(); - virtual ~PlanarFigureCompositeSerializer(); + TractographyForestSerializer(); + virtual ~TractographyForestSerializer(); }; } // namespace #endif diff --git a/Modules/DiffusionImaging/FiberTracking/IODataStructures/mitkTractographyForest.cpp b/Modules/DiffusionImaging/FiberTracking/IODataStructures/mitkTractographyForest.cpp index 670a6e8d91..7187027c20 100755 --- a/Modules/DiffusionImaging/FiberTracking/IODataStructures/mitkTractographyForest.cpp +++ b/Modules/DiffusionImaging/FiberTracking/IODataStructures/mitkTractographyForest.cpp @@ -1,116 +1,119 @@ /*=================================================================== 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. ===================================================================*/ #define _USE_MATH_DEFINES #include "mitkTractographyForest.h" #include +#include using namespace std; namespace mitk { TractographyForest::TractographyForest( std::shared_ptr< vigra::RandomForest > forest ) { m_Forest = forest; + mitk::Geometry3D::Pointer geometry = mitk::Geometry3D::New(); + SetGeometry(geometry); } TractographyForest::~TractographyForest() { } void TractographyForest::PredictProbabilities(vigra::MultiArray<2, float>& features, vigra::MultiArray<2, float>& probabilities) const { m_Forest->predictProbabilities(features, probabilities); } int TractographyForest::GetNumFeatures() const { if (!HasForest()) mitkThrow() << "Forest is NULL"; return m_Forest->feature_count(); } int TractographyForest::GetNumTrees() const { if (!HasForest()) mitkThrow() << "Forest is NULL"; return m_Forest->tree_count(); } int TractographyForest::GetNumClasses() const { if (!HasForest()) mitkThrow() << "Forest is NULL"; return m_Forest->class_count(); } int TractographyForest::GetMaxTreeDepth() const { if (!HasForest()) mitkThrow() << "Forest is NULL"; return m_Forest->ext_param_.max_tree_depth; } int TractographyForest::IndexToClassLabel(int idx) const { if (!HasForest()) mitkThrow() << "Forest is NULL"; unsigned int classLabel = 0; m_Forest->ext_param_.to_classlabel(idx, classLabel); return classLabel; } bool TractographyForest::HasForest() const { return m_Forest!=nullptr; } void TractographyForest::PrintSelf(std::ostream &os, itk::Indent indent) const { // Superclass::PrintSelf(os, indent); os << indent << this->GetNameOfClass() << ":\n"; os << indent << "Number of features: " << GetNumFeatures() << std::endl; os << indent << "Number of classes: " << GetNumClasses() << std::endl; os << indent << "Number of trees: " << GetNumTrees() << std::endl; os << indent << "Maximum tree depth: " << GetMaxTreeDepth() << std::endl; } /* ESSENTIAL IMPLEMENTATION OF SUPERCLASS METHODS */ void TractographyForest::UpdateOutputInformation() { } void TractographyForest::SetRequestedRegionToLargestPossibleRegion() { } bool TractographyForest::RequestedRegionIsOutsideOfTheBufferedRegion() { return false; } bool TractographyForest::VerifyRequestedRegion() { return true; } void TractographyForest::SetRequestedRegion(const itk::DataObject* ) { } }