Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
itkDiffusionTensor3DWrite.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Diffusion Applications
4 Module: $HeadURL$
5 Language: C++
6 Date: $Date$
7 Version: $Revision$
8
9 Copyright (c) Brigham and Women's Hospital (BWH) All Rights Reserved.
10
11 See License.txt or http://www.slicer.org/copyright/copyright.txt for details.
12
13==========================================================================*/
14#ifndef itkDiffusionTensor3DWrite_h
15#define itkDiffusionTensor3DWrite_h
16
17#include <itkObject.h>
18#include <itkMetaDataObject.h>
19#include <itkImage.h>
20#include <itkMatrix.h>
21#include <itkImageFileWriter.h>
22#include <itkNrrdImageIO.h>
23#include <itkImageIOBase.h>
24#include "itkDiffusionTensor3D.h"
25
26namespace itk
27{
28
33template <class TData>
34class DiffusionTensor3DWrite : public Object
35{
36public:
37 typedef TData DataType;
38 typedef DiffusionTensor3DWrite Self;
39 typedef DiffusionTensor3D<DataType> TensorDataType;
40 typedef Image<TensorDataType, 3> DiffusionImageType;
41 typedef MetaDataDictionary DictionaryType;
42 typedef ImageFileWriter<DiffusionImageType> WriterType;
43 typedef SmartPointer<Self> Pointer;
44 typedef SmartPointer<const Self> ConstPointer;
45 typedef std::vector<std::vector<double> > DoubleVectorType;
46 typedef MetaDataObject<DoubleVectorType> MetaDataDoubleVectorType;
47 typedef MetaDataObject<std::string> MetaDataIntType;
48
50 itkTypeMacro(DiffusionTensor3DWrite, Object);
51
53 // /Set input tensor image
55 // /Write the image in the given file
56 int Update( const char* output );
57
58 // /Set the metadatadictionary of the image, including its measurement frame
60
61 // /Set Number of Threads
62 itkSetMacro( NumberOfThreads, unsigned int);
68 void SetMeasurementFrame( Matrix<double, 3, 3> measurementFrame );
69
70// Space:
71// nrrdSpaceUnknown,
72// nrrdSpaceRightAnteriorSuperior, /* 1: NIFTI-1 (right-handed) */
73// nrrdSpaceLeftAnteriorSuperior, /* 2: standard Analyze (left-handed) */
74// nrrdSpaceLeftPosteriorSuperior, /* 3: DICOM 3.0 (right-handed) */
75// nrrdSpaceRightAnteriorSuperiorTime, /* 4: */
76// nrrdSpaceLeftAnteriorSuperiorTime, /* 5: */
77// nrrdSpaceLeftPosteriorSuperiorTime, /* 6: */
78// nrrdSpaceScannerXYZ, /* 7: ACR/NEMA 2.0 (pre-DICOM 3.0) */
79// nrrdSpaceScannerXYZTime, /* 8: */
80// nrrdSpace3DRightHanded, /* 9: */
81// nrrdSpace3DLeftHanded, /* 10: */
82// nrrdSpace3DRightHandedTime, /* 11: */
83// nrrdSpace3DLeftHandedTime, /* 12: */
84// nrrdSpaceLast
85 void SetSpace(int space);
86
87private:
88 DiffusionTensor3DWrite();
89
90 typename DiffusionImageType::Pointer m_Input;
91
92 unsigned int m_NumberOfThreads;
93 DictionaryType m_MetaDataDictionary;
94};
95
96} // end namespace itk
97
98#ifndef ITK_MANUAL_INSTANTIATION
99#include "itkDiffusionTensor3DWrite.txx"
100#endif
101
102#endif
Image< TensorDataType, 3 > DiffusionImageType
SmartPointer< const Self > ConstPointer
std::vector< std::vector< double > > DoubleVectorType
itkSetMacro(NumberOfThreads, unsigned int)
itkSetObjectMacro(Input, DiffusionImageType)
MetaDataObject< std::string > MetaDataIntType
ImageFileWriter< DiffusionImageType > WriterType
itkTypeMacro(DiffusionTensor3DWrite, Object)
int Update(const char *output)
DiffusionTensor3D< DataType > TensorDataType
void SetMetaDataDictionary(DictionaryType dic)
void SetMeasurementFrame(Matrix< double, 3, 3 > measurementFrame)
MetaDataObject< DoubleVectorType > MetaDataDoubleVectorType
Simplified inverse ITK transforms.