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
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __itkTransformToDeterminantOfSpatialJacobianSource_h
00032 #define __itkTransformToDeterminantOfSpatialJacobianSource_h
00033
00034 #include "itkAdvancedTransform.h"
00035 #include "itkImageSource.h"
00036
00037 namespace itk
00038 {
00039
00070 template <class TOutputImage,
00071 class TTransformPrecisionType=double>
00072 class ITK_EXPORT TransformToDeterminantOfSpatialJacobianSource:
00073 public ImageSource<TOutputImage>
00074 {
00075 public:
00077 typedef TransformToDeterminantOfSpatialJacobianSource Self;
00078 typedef ImageSource<TOutputImage> Superclass;
00079 typedef SmartPointer<Self> Pointer;
00080 typedef SmartPointer<const Self> ConstPointer;
00081
00082 typedef TOutputImage OutputImageType;
00083 typedef typename OutputImageType::Pointer OutputImagePointer;
00084 typedef typename OutputImageType::ConstPointer OutputImageConstPointer;
00085 typedef typename OutputImageType::RegionType OutputImageRegionType;
00086
00088 itkNewMacro( Self );
00089
00091 itkTypeMacro( TransformToDeterminantOfSpatialJacobianSource, ImageSource );
00092
00094 itkStaticConstMacro( ImageDimension, unsigned int,
00095 TOutputImage::ImageDimension );
00096
00098 typedef AdvancedTransform<TTransformPrecisionType,
00099 itkGetStaticConstMacro( ImageDimension ),
00100 itkGetStaticConstMacro( ImageDimension )> TransformType;
00101 typedef typename TransformType::ConstPointer TransformPointerType;
00102 typedef typename TransformType::SpatialJacobianType SpatialJacobianType;
00103
00105 typedef typename OutputImageType::PixelType PixelType;
00106
00107 typedef typename OutputImageType::RegionType RegionType;
00108 typedef typename RegionType::SizeType SizeType;
00109 typedef typename OutputImageType::IndexType IndexType;
00110 typedef typename OutputImageType::PointType PointType;
00111 typedef typename OutputImageType::SpacingType SpacingType;
00112 typedef typename OutputImageType::PointType OriginType;
00113 typedef typename OutputImageType::DirectionType DirectionType;
00114
00116 typedef ImageBase< itkGetStaticConstMacro( ImageDimension ) > ImageBaseType;
00117
00125 itkSetConstObjectMacro( Transform, TransformType );
00126
00128 itkGetConstObjectMacro( Transform, TransformType );
00129
00131 virtual void SetOutputSize( const SizeType & size );
00132
00134 virtual const SizeType & GetOutputSize();
00135
00138 virtual void SetOutputIndex( const IndexType & index );
00139
00141 virtual const IndexType & GetOutputIndex();
00142
00144 itkSetMacro( OutputRegion, OutputImageRegionType );
00145
00147 itkGetConstReferenceMacro( OutputRegion, OutputImageRegionType );
00148
00150 itkSetMacro( OutputSpacing, SpacingType );
00151 virtual void SetOutputSpacing( const double* values );
00152
00154 itkGetConstReferenceMacro( OutputSpacing, SpacingType );
00155
00157 itkSetMacro( OutputOrigin, OriginType );
00158 virtual void SetOutputOrigin( const double* values);
00159
00161 itkGetConstReferenceMacro( OutputOrigin, OriginType );
00162
00164 itkSetMacro( OutputDirection, DirectionType );
00165 itkGetConstReferenceMacro( OutputDirection, DirectionType );
00166
00168 void SetOutputParametersFromImage( const ImageBaseType * image );
00169
00171 virtual void GenerateOutputInformation( void );
00172
00175 virtual void BeforeThreadedGenerateData( void );
00176
00178 unsigned long GetMTime( void ) const;
00179
00180 protected:
00181 TransformToDeterminantOfSpatialJacobianSource();
00182 ~TransformToDeterminantOfSpatialJacobianSource() {};
00183
00184 void PrintSelf( std::ostream& os, Indent indent ) const;
00185
00189 void ThreadedGenerateData(
00190 const OutputImageRegionType & outputRegionForThread,
00191 int threadId );
00192
00196 void NonlinearThreadedGenerateData(
00197 const OutputImageRegionType& outputRegionForThread,
00198 int threadId );
00199
00202 void LinearGenerateData( void );
00203
00204 private:
00205
00206 TransformToDeterminantOfSpatialJacobianSource( const Self& );
00207 void operator=( const Self& );
00208
00210 RegionType m_OutputRegion;
00211 TransformPointerType m_Transform;
00212 SpacingType m_OutputSpacing;
00213 OriginType m_OutputOrigin;
00214 DirectionType m_OutputDirection;
00215
00216 };
00217
00218 }
00219
00220 #ifndef ITK_MANUAL_INSTANTIATION
00221 #include "itkTransformToDeterminantOfSpatialJacobianSource.txx"
00222 #endif
00223
00224 #endif // end #ifndef __itkTransformToDeterminantOfSpatialJacobianSource_h