diff --git a/Modules/DiffusionImaging/IODataStructures/DiffusionWeightedImages/mitkDiffusionImageSerializer.cpp b/Modules/DiffusionImaging/IODataStructures/DiffusionWeightedImages/mitkDiffusionImageSerializer.cpp new file mode 100644 index 0000000000..c7c16d1606 --- /dev/null +++ b/Modules/DiffusionImaging/IODataStructures/DiffusionWeightedImages/mitkDiffusionImageSerializer.cpp @@ -0,0 +1,75 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date$ +Version: $Revision: 1.12 $ + +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 "mitkDiffusionImageSerializer.h" +#include "mitkDiffusionImage.h" +#include "mitkNrrdDiffusionImageWriter.h" + +#include + + +MITK_REGISTER_SERIALIZER(DiffusionImageSerializer) + + +mitk::DiffusionImageSerializer::DiffusionImageSerializer() +{ +} + + +mitk::DiffusionImageSerializer::~DiffusionImageSerializer() +{ +} + + +std::string mitk::DiffusionImageSerializer::Serialize() +{ + const DiffusionImage* image = dynamic_cast*>( m_Data.GetPointer() ); + if (image == NULL) + { + MITK_ERROR << " Object at " << (const void*) this->m_Data + << " is not an mitk::DiffusionImage. Cannot serialize as DiffusionImage."; + return ""; + } + + std::string filename( this->GetUniqueFilenameInWorkingDirectory() ); + filename += "_"; + filename += m_FilenameHint; + filename += ".dwi"; + + std::string fullname(m_WorkingDirectory); + fullname += "/"; + fullname += itksys::SystemTools::ConvertToOutputPath(filename.c_str()); + + try + { + NrrdDiffusionImageWriter::Pointer writer = NrrdDiffusionImageWriter::New(); + writer->SetFileName(fullname); + writer->SetInput(const_cast*>(image)); + writer->Write(); + } + 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/IODataStructures/DiffusionWeightedImages/mitkDiffusionImageSerializer.h b/Modules/DiffusionImaging/IODataStructures/DiffusionWeightedImages/mitkDiffusionImageSerializer.h new file mode 100644 index 0000000000..9ff389ec7b --- /dev/null +++ b/Modules/DiffusionImaging/IODataStructures/DiffusionWeightedImages/mitkDiffusionImageSerializer.h @@ -0,0 +1,40 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date$ +Version: $Revision: 1.12 $ + +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 mitkDiffusionImageSerializer_h_included +#define mitkDiffusionImageSerializer_h_included + +#include "MitkDiffusionImagingExports.h" +#include "mitkBaseDataSerializer.h" + +namespace mitk +{ +/** + \brief Serializes mitk::Surface for mitk::SceneIO +*/ +class MitkDiffusionImaging_EXPORT DiffusionImageSerializer : public BaseDataSerializer +{ + public: + mitkClassMacro( DiffusionImageSerializer, BaseDataSerializer ); + itkNewMacro(Self); + virtual std::string Serialize(); + protected: + DiffusionImageSerializer(); + virtual ~DiffusionImageSerializer(); +}; +} // namespace +#endif diff --git a/Modules/DiffusionImaging/IODataStructures/QBallImages/mitkQBallImageSerializer.cpp b/Modules/DiffusionImaging/IODataStructures/QBallImages/mitkQBallImageSerializer.cpp new file mode 100644 index 0000000000..ead0295511 --- /dev/null +++ b/Modules/DiffusionImaging/IODataStructures/QBallImages/mitkQBallImageSerializer.cpp @@ -0,0 +1,75 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date$ +Version: $Revision: 1.12 $ + +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 "mitkQBallImageSerializer.h" +#include "mitkQBallImage.h" +#include "mitkNrrdQBallImageWriter.h" + +#include + + +MITK_REGISTER_SERIALIZER(QBallImageSerializer) + + +mitk::QBallImageSerializer::QBallImageSerializer() +{ +} + + +mitk::QBallImageSerializer::~QBallImageSerializer() +{ +} + + +std::string mitk::QBallImageSerializer::Serialize() +{ + const QBallImage* image = dynamic_cast( m_Data.GetPointer() ); + if (image == NULL) + { + MITK_ERROR << " Object at " << (const void*) this->m_Data + << " is not an mitk::NrrdQBallImage. Cannot serialize as NrrdQBallImage."; + return ""; + } + + std::string filename( this->GetUniqueFilenameInWorkingDirectory() ); + filename += "_"; + filename += m_FilenameHint; + filename += ".qbi"; + + std::string fullname(m_WorkingDirectory); + fullname += "/"; + fullname += itksys::SystemTools::ConvertToOutputPath(filename.c_str()); + + try + { + NrrdQBallImageWriter::Pointer writer = NrrdQBallImageWriter::New(); + writer->SetFileName(fullname); + writer->SetInput(const_cast(image)); + writer->Write(); + } + 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/IODataStructures/QBallImages/mitkQBallImageSerializer.h b/Modules/DiffusionImaging/IODataStructures/QBallImages/mitkQBallImageSerializer.h new file mode 100644 index 0000000000..9745e79c17 --- /dev/null +++ b/Modules/DiffusionImaging/IODataStructures/QBallImages/mitkQBallImageSerializer.h @@ -0,0 +1,40 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date$ +Version: $Revision: 1.12 $ + +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 mitkQBallImageSerializer_h_included +#define mitkQBallImageSerializer_h_included + +#include "MitkDiffusionImagingExports.h" +#include "mitkBaseDataSerializer.h" + +namespace mitk +{ +/** + \brief Serializes mitk::Surface for mitk::SceneIO +*/ +class MitkDiffusionImaging_EXPORT QBallImageSerializer : public BaseDataSerializer +{ + public: + mitkClassMacro( QBallImageSerializer, BaseDataSerializer ); + itkNewMacro(Self); + virtual std::string Serialize(); + protected: + QBallImageSerializer(); + virtual ~QBallImageSerializer(); +}; +} // namespace +#endif diff --git a/Modules/DiffusionImaging/IODataStructures/TensorImages/mitkTensorImageSerializer.cpp b/Modules/DiffusionImaging/IODataStructures/TensorImages/mitkTensorImageSerializer.cpp new file mode 100644 index 0000000000..56c505cf94 --- /dev/null +++ b/Modules/DiffusionImaging/IODataStructures/TensorImages/mitkTensorImageSerializer.cpp @@ -0,0 +1,75 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date$ +Version: $Revision: 1.12 $ + +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 "mitkTensorImageSerializer.h" +#include "mitkTensorImage.h" +#include "mitkNrrdTensorImageWriter.h" + +#include + + +MITK_REGISTER_SERIALIZER(TensorImageSerializer) + + +mitk::TensorImageSerializer::TensorImageSerializer() +{ +} + + +mitk::TensorImageSerializer::~TensorImageSerializer() +{ +} + + +std::string mitk::TensorImageSerializer::Serialize() +{ + const TensorImage* image = dynamic_cast( m_Data.GetPointer() ); + if (image == NULL) + { + MITK_ERROR << " Object at " << (const void*) this->m_Data + << " is not an mitk::NrrdTensorImage. Cannot serialize as NrrdTensorImage."; + return ""; + } + + std::string filename( this->GetUniqueFilenameInWorkingDirectory() ); + filename += "_"; + filename += m_FilenameHint; + filename += ".dti"; + + std::string fullname(m_WorkingDirectory); + fullname += "/"; + fullname += itksys::SystemTools::ConvertToOutputPath(filename.c_str()); + + try + { + NrrdTensorImageWriter::Pointer writer = NrrdTensorImageWriter::New(); + writer->SetFileName(fullname); + writer->SetInput(const_cast(image)); + writer->Write(); + } + 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/IODataStructures/TensorImages/mitkTensorImageSerializer.h b/Modules/DiffusionImaging/IODataStructures/TensorImages/mitkTensorImageSerializer.h new file mode 100644 index 0000000000..61cd9b90cb --- /dev/null +++ b/Modules/DiffusionImaging/IODataStructures/TensorImages/mitkTensorImageSerializer.h @@ -0,0 +1,40 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date$ +Version: $Revision: 1.12 $ + +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 mitkTensorImageSerializer_h_included +#define mitkTensorImageSerializer_h_included + +#include "MitkDiffusionImagingExports.h" +#include "mitkBaseDataSerializer.h" + +namespace mitk +{ +/** + \brief Serializes mitk::Surface for mitk::SceneIO +*/ +class MitkDiffusionImaging_EXPORT TensorImageSerializer : public BaseDataSerializer +{ + public: + mitkClassMacro( TensorImageSerializer, BaseDataSerializer ); + itkNewMacro(Self); + virtual std::string Serialize(); + protected: + TensorImageSerializer(); + virtual ~TensorImageSerializer(); +}; +} // namespace +#endif diff --git a/Modules/DiffusionImaging/files.cmake b/Modules/DiffusionImaging/files.cmake index 9884e4acef..64b4ae5645 100644 --- a/Modules/DiffusionImaging/files.cmake +++ b/Modules/DiffusionImaging/files.cmake @@ -1,75 +1,78 @@ SET(CPP_FILES # Algorithms Algorithms/itkDiffusionQballGeneralizedFaImageFilter.h Algorithms/itkDiffusionQballPrepareVisualizationImageFilter.h Algorithms/itkTensorDerivedMeasurementsFilter.h Algorithms/itkBrainMaskExtractionImageFilter.h Algorithms/itkB0ImageExtractionImageFilter.h Algorithms/itkTensorImageToDiffusionImageFilter.h Algorithms/itkTensorToL2NormImageFilter.h # DicomImport DicomImport/mitkDicomDiffusionImageReader.cpp DicomImport/mitkGroupDiffusionHeadersFilter.cpp DicomImport/mitkDicomDiffusionImageHeaderReader.cpp DicomImport/mitkGEDicomDiffusionImageHeaderReader.cpp DicomImport/mitkPhilipsDicomDiffusionImageHeaderReader.cpp DicomImport/mitkSiemensDicomDiffusionImageHeaderReader.cpp DicomImport/mitkSiemensMosaicDicomDiffusionImageHeaderReader.cpp # DataStructures IODataStructures/mitkDiffusionImagingObjectFactory.cpp # DataStructures -> DWI IODataStructures/DiffusionWeightedImages/mitkDiffusionImageHeaderInformation.cpp IODataStructures/DiffusionWeightedImages/mitkDiffusionImageSource.cpp IODataStructures/DiffusionWeightedImages/mitkNrrdDiffusionImageReader.cpp IODataStructures/DiffusionWeightedImages/mitkNrrdDiffusionImageWriter.cpp IODataStructures/DiffusionWeightedImages/mitkNrrdDiffusionImageIOFactory.cpp IODataStructures/DiffusionWeightedImages/mitkNrrdDiffusionImageWriterFactory.cpp + IODataStructures/DiffusionWeightedImages/mitkDiffusionImageSerializer.cpp # DataStructures -> QBall IODataStructures/QBallImages/mitkQBallImageSource.cpp IODataStructures/QBallImages/mitkNrrdQBallImageReader.cpp IODataStructures/QBallImages/mitkNrrdQBallImageWriter.cpp IODataStructures/QBallImages/mitkNrrdQBallImageIOFactory.cpp IODataStructures/QBallImages/mitkNrrdQBallImageWriterFactory.cpp IODataStructures/QBallImages/mitkQBallImage.cpp + IODataStructures/QBallImages/mitkQBallImageSerializer.cpp # DataStructures -> Tensor IODataStructures/TensorImages/mitkTensorImageSource.cpp IODataStructures/TensorImages/mitkNrrdTensorImageReader.cpp IODataStructures/TensorImages/mitkNrrdTensorImageWriter.cpp IODataStructures/TensorImages/mitkNrrdTensorImageIOFactory.cpp IODataStructures/TensorImages/mitkNrrdTensorImageWriterFactory.cpp IODataStructures/TensorImages/mitkTensorImage.cpp + IODataStructures/TensorImages/mitkTensorImageSerializer.cpp # Rendering Rendering/vtkMaskedProgrammableGlyphFilter.cpp Rendering/mitkCompositeMapper.cpp Rendering/mitkVectorImageVtkGlyphMapper3D.cpp Rendering/vtkOdfSource.cxx Rendering/vtkThickPlane.cxx Rendering/mitkOdfNormalizationMethodProperty.cpp Rendering/mitkOdfScaleByProperty.cpp ) SET(H_FILES Rendering/mitkDiffusionImageMapper.h Reconstruction/itkDiffusionQballReconstructionImageFilter.h Reconstruction/mitkTeemDiffusionTensor3DReconstructionImageFilter.h Reconstruction/itkAnalyticalDiffusionQballReconstructionImageFilter.h Reconstruction/itkPointShell.h Reconstruction/itkOrientationDistributionFunction.h IODataStructures/DiffusionWeightedImages/mitkDiffusionImage.h Rendering/mitkOdfVtkMapper2D.h ) SET( TOOL_FILES ) IF(WIN32) ENDIF(WIN32) #MITK_MULTIPLEX_PICTYPE( Algorithms/mitkImageRegistrationMethod-TYPE.cpp )