Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "mitkNrrdTensorImageWriter.h"
00019 #include "itkMetaDataDictionary.h"
00020 #include "itkMetaDataObject.h"
00021 #include "itkNrrdImageIO.h"
00022 #include "itkImageFileWriter.h"
00023 #include "mitkImageCast.h"
00024
00025
00026 mitk::NrrdTensorImageWriter::NrrdTensorImageWriter()
00027 : m_FileName(""), m_FilePrefix(""), m_FilePattern(""), m_Success(false)
00028 {
00029 this->SetNumberOfRequiredInputs( 1 );
00030 }
00031
00032
00033 mitk::NrrdTensorImageWriter::~NrrdTensorImageWriter()
00034 {}
00035
00036
00037 void mitk::NrrdTensorImageWriter::GenerateData()
00038 {
00039 m_Success = false;
00040 InputType* input = this->GetInput();
00041 if (input == NULL)
00042 {
00043 itkWarningMacro(<<"Sorry, input to NrrdTensorImageWriter is NULL!");
00044 return;
00045 }
00046 if ( m_FileName == "" )
00047 {
00048 itkWarningMacro( << "Sorry, filename has not been set!" );
00049 return ;
00050 }
00051
00052 itk::NrrdImageIO::Pointer io = itk::NrrdImageIO::New();
00053 io->SetFileType( itk::ImageIOBase::Binary );
00054
00055 typedef itk::Image<itk::DiffusionTensor3D<float>,3> ImageType;
00056 typedef itk::ImageFileWriter<ImageType> WriterType;
00057 WriterType::Pointer nrrdWriter = WriterType::New();
00058
00059 ImageType::Pointer outimage = ImageType::New();
00060 CastToItkImage(input, outimage);
00061
00062 nrrdWriter->SetInput( outimage );
00063 nrrdWriter->SetImageIO(io);
00064 nrrdWriter->SetFileName(m_FileName);
00065
00066 try
00067 {
00068 nrrdWriter->Update();
00069 }
00070 catch (itk::ExceptionObject e)
00071 {
00072 std::cout << e << std::endl;
00073 }
00074
00075 m_Success = true;
00076 }
00077
00078
00079 void mitk::NrrdTensorImageWriter::SetInput( InputType* diffVolumes )
00080 {
00081 this->ProcessObject::SetNthInput( 0, diffVolumes );
00082 }
00083
00084
00085 mitk::TensorImage* mitk::NrrdTensorImageWriter::GetInput()
00086 {
00087 if ( this->GetNumberOfInputs() < 1 )
00088 {
00089 return NULL;
00090 }
00091 else
00092 {
00093 return dynamic_cast<InputType*> ( this->ProcessObject::GetInput( 0 ) );
00094 }
00095 }
00096
00097
00098 std::vector<std::string> mitk::NrrdTensorImageWriter::GetPossibleFileExtensions()
00099 {
00100 std::vector<std::string> possibleFileExtensions;
00101 possibleFileExtensions.push_back(".dti");
00102 possibleFileExtensions.push_back(".hdti");
00103 return possibleFileExtensions;
00104 }