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 #ifndef __itkDirectFourierReconstructionImageToImageFilter_h
00019 #define __itkDirectFourierReconstructionImageToImageFilter_h
00020
00021 #include "itkImageToImageFilter.h"
00022 #include "itkImage.h"
00023
00024 #include "itkVnlFFTRealToComplexConjugateImageFilter.h"
00025 #include "itkVnlFFTComplexConjugateToRealImageFilter.h"
00026
00027 #include "itkImageRegionIteratorWithIndex.h"
00028 #include "itkImageSliceConstIteratorWithIndex.h"
00029
00030 #include "itkComplexBSplineInterpolateImageFunction.h"
00031
00032 #include <math.h>
00033
00034 namespace itk
00035 {
00049 template< class TInputPixelType = double, class TOutputPixelType = double >
00050 class ITK_EXPORT DirectFourierReconstructionImageToImageFilter :
00051 public ImageToImageFilter< Image< TInputPixelType, 3 >, Image< TOutputPixelType, 3 > >
00052 {
00053 public:
00054
00056 typedef DirectFourierReconstructionImageToImageFilter Self;
00057
00059 typedef Image< TInputPixelType, 3 > InputImageType;
00060
00062 typedef Image< TOutputPixelType, 3 > OutputImageType;
00063
00065 typedef ImageToImageFilter< InputImageType, OutputImageType > Superclass;
00066
00068 typedef SmartPointer< Self > Pointer;
00069
00071 typedef SmartPointer< const Self > ConstPointer;
00072
00073 itkNewMacro( Self );
00074 itkTypeMacro( DirectFourierReconstructionImageToImageFilter, ImageToImageFilter );
00075
00077 typedef typename InputImageType::RegionType RegionType;
00078
00080 typedef typename InputImageType::IndexType IndexType;
00081
00083 typedef typename InputImageType::SizeType SizeType;
00084
00086 typedef typename InputImageType::PointType PointType;
00087
00089 typedef typename InputImageType::SpacingType SpacingType;
00090
00092 typedef typename InputImageType::ConstPointer ConstInputImagePointer;
00093
00095 typedef typename InputImageType::Pointer InputImagePointer;
00096
00098 typedef typename OutputImageType::Pointer OutputImagePointer;
00099
00100 itkSetMacro( ZeroPadding, unsigned short int );
00101 itkGetConstMacro( ZeroPadding, unsigned short int );
00102 itkSetMacro( OverSampling, unsigned short int );
00103 itkGetConstMacro( OverSampling, unsigned short int );
00104 itkSetMacro( Cutoff, double );
00105 itkGetConstMacro( Cutoff, double );
00106 itkSetMacro( AlphaRange, double );
00107 itkGetConstMacro( AlphaRange, double );
00108 itkSetMacro( AlphaDirection, unsigned short int );
00109 itkGetConstMacro( AlphaDirection, unsigned short int );
00110 itkSetMacro( ZDirection, unsigned short int );
00111 itkGetConstMacro( ZDirection, unsigned short int );
00112 itkSetMacro( RDirection, unsigned short int );
00113 itkGetConstMacro( RDirection, unsigned short int );
00114 itkSetMacro( RadialSplineOrder, unsigned short int );
00115 itkGetConstMacro( RadialSplineOrder, unsigned short int );
00116
00117 protected:
00119 DirectFourierReconstructionImageToImageFilter();
00120
00122 ~DirectFourierReconstructionImageToImageFilter() {};
00123
00125 void PrintSelf( std::ostream &os, Indent indent ) const;
00126
00128 void GenerateOutputInformation();
00129
00131 void GenerateInputRequestedRegion();
00132
00134 void GenerateData();
00135
00136 private:
00138 typedef ImageSliceConstIteratorWithIndex< InputImageType > InputSliceIteratorType;
00139
00141 typedef VnlFFTRealToComplexConjugateImageFilter< double, 1 > FFTLineFilterType;
00142
00144 typedef FFTLineFilterType::OutputImageType FFTLineType;
00145
00147 typedef FFTLineFilterType::InputImageType ProjectionLineType;
00148
00150 typedef ImageRegionIteratorWithIndex< FFTLineType > FFTLineIteratorType;
00151
00153 typedef ComplexBSplineInterpolateImageFunction< FFTLineType, double, double > FFTLineInterpolatorType;
00154
00156 typedef VnlFFTComplexConjugateToRealImageFilter< double, 2 > IFFTSliceFilterType;
00157
00159 typedef IFFTSliceFilterType::InputImageType FFTSliceType;
00160
00162 typedef IFFTSliceFilterType::OutputImageType OutputSliceType;
00163
00165 typedef ImageRegionIteratorWithIndex< FFTSliceType > FFTSliceIteratorType;
00166
00168 typedef ImageRegionIteratorWithIndex< OutputSliceType > OutputSliceIteratorType;
00169
00170
00194 };
00195
00196 }
00197
00198 #ifndef ITK_MANUAL_INSTANTIATION
00199 #include "itkDirectFourierReconstructionImageToImageFilter.txx"
00200 #endif
00201
00202 #endif
00203