|
Slicer 4.2
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
|
00001 /*========================================================================= 00002 00003 Program: Diffusion Applications 00004 Module: $HeadURL: http://svn.slicer.org/Slicer4/trunk/Modules/CLI/ResampleDTIVolume/itkDiffusionTensor3DInterpolateImageFunctionReimplementation.h $ 00005 Language: C++ 00006 Date: $Date: 2012-02-02 01:52:52 -0500 (Thu, 02 Feb 2012) $ 00007 Version: $Revision: 19197 $ 00008 00009 Copyright (c) Brigham and Women's Hospital (BWH) All Rights Reserved. 00010 00011 See License.txt or http://www.slicer.org/copyright/copyright.txt for details. 00012 00013 ==========================================================================*/ 00014 #ifndef __itkDiffusionTensor3DInterpolateImageFunctionReimplementation_h 00015 #define __itkDiffusionTensor3DInterpolateImageFunctionReimplementation_h 00016 00017 #include "itkDiffusionTensor3DInterpolateImageFunction.h" 00018 #include <itkImage.h> 00019 // #include <itkImageRegionIteratorWithIndex.h> 00020 #include <itkInterpolateImageFunction.h> 00021 #include "itkSeparateComponentsOfADiffusionTensorImage.h" 00022 // #include <itkMutexLock.h> 00023 // #include <itkSemaphore.h> 00024 00025 namespace itk 00026 { 00027 00028 /*struct RegionType 00029 { 00030 ImageRegion< 3 > itkRegion ; 00031 bool Done ; 00032 Index< 3 > PositionInImage ; 00033 bool Stop ; 00034 };*/ 00035 00042 template <class TData, class TCoordRep = double> 00043 class DiffusionTensor3DInterpolateImageFunctionReimplementation : 00044 public DiffusionTensor3DInterpolateImageFunction<TData, TCoordRep> 00045 { 00046 public: 00047 typedef TData DataType; 00048 typedef DiffusionTensor3DInterpolateImageFunctionReimplementation Self; 00049 typedef DiffusionTensor3DInterpolateImageFunction<DataType, TCoordRep> Superclass; 00050 typedef typename Superclass::TensorDataType TensorDataType; 00051 typedef typename Superclass::DiffusionImageType DiffusionImageType; 00052 typedef typename Superclass::DiffusionImageTypePointer DiffusionImageTypePointer; 00053 typedef Image<DataType, 3> ImageType; 00054 typedef typename ImageType::Pointer ImagePointer; 00055 typedef typename Superclass::PointType PointType; 00056 typedef SmartPointer<Self> Pointer; 00057 typedef SmartPointer<const Self> ConstPointer; 00058 typedef ImageRegionIteratorWithIndex<DiffusionImageType> IteratorDiffusionImageType; 00059 typedef ImageRegionIteratorWithIndex<ImageType> IteratorImageType; 00060 typedef InterpolateImageFunction<ImageType, double> InterpolateImageFunctionType; 00061 typedef typename DiffusionImageType::RegionType itkRegionType; 00062 typedef typename DiffusionImageType::SizeType SizeType; 00063 typedef typename Superclass::ContinuousIndexType ContinuousIndexType; 00066 // TensorDataType Evaluate( const PointType &point ) ; 00067 TensorDataType EvaluateAtContinuousIndex( const ContinuousIndexType & index ) const; 00068 00069 virtual void SetInputImage( const DiffusionImageType *inputImage ); 00070 00071 itkSetMacro( NumberOfThreads, int ); 00072 protected: 00073 DiffusionTensor3DInterpolateImageFunctionReimplementation(); 00074 virtual void AllocateInterpolator() = 0; 00075 00076 // void SeparateImages() ; 00077 // void AllocateImages() ; 00078 // bool DivideRegion( int currentThread ) ; 00079 // int RegionToDivide() ; 00080 typename InterpolateImageFunctionType::Pointer m_Interpol[6]; 00081 ImagePointer m_ImageVec[6]; 00082 int m_NumberOfThreads; 00083 // Semaphore::Pointer m_Threads ; 00084 // int m_SplitAxis ; 00085 // bool m_SeparationDone ; 00086 // bool m_CannotSplit ; 00087 // MutexLock::Pointer m_Lock ; 00088 // MutexLock::Pointer m_LockNewThreadDetected ; 00089 // std::vector< RegionType > m_ListRegions ; 00090 // int m_NbThread ; 00091 // MutexLock::Pointer m_CheckRegionsDone ; 00092 // bool m_ExceptionThrown ; 00093 // SizeType m_Size ; 00094 // bool m_AllocateInterpolatorsDone ; 00095 }; 00096 00097 } // end namespace itk 00098 00099 #ifndef ITK_MANUAL_INSTANTIATION 00100 #include "itkDiffusionTensor3DInterpolateImageFunctionReimplementation.txx" 00101 #endif 00102 00103 #endif
1.7.4