X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=itk%2FclitkResampleImageWithOptionsFilter.h;h=b526207be8f9784869a3af0c79394e3c94201124;hb=573d80d0f7a17607d2ee883c21c940c0ba020282;hp=7c212f07cf105d672c22343cb83b8031ac00ecd1;hpb=de524de471ddbb04afdea1de77af57f4d34bcaa1;p=clitk.git diff --git a/itk/clitkResampleImageWithOptionsFilter.h b/itk/clitkResampleImageWithOptionsFilter.h index 7c212f0..b526207 100644 --- a/itk/clitkResampleImageWithOptionsFilter.h +++ b/itk/clitkResampleImageWithOptionsFilter.h @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,7 +14,7 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html - ======================================================================-====*/ + ===========================================================================**/ #ifndef CLITKRESAMPLEIMAGEWITHOPTIONSFILTER_H #define CLITKRESAMPLEIMAGEWITHOPTIONSFILTER_H @@ -28,121 +28,126 @@ namespace clitk { /* Image resampling with several interpolations and Gaussian filtering included. */ - //-------------------------------------------------------------------- - - template - class ITK_EXPORT ResampleImageWithOptionsFilter: - public itk::ImageToImageFilter { + //-------------------------------------------------------------------- + template + class ITK_EXPORT ResampleImageWithOptionsFilter: + public itk::ImageToImageFilter { public: - /** Standard class typedefs. */ - typedef ResampleImageWithOptionsFilter Self; - typedef itk::ImageToImageFilter Superclass; - typedef itk::SmartPointer Pointer; - typedef itk::SmartPointer ConstPointer; + /** Standard class typedefs. */ + typedef ResampleImageWithOptionsFilter Self; + typedef itk::ImageToImageFilter Superclass; + typedef itk::SmartPointer Pointer; + typedef itk::SmartPointer ConstPointer; - /** Method for creation through the object factory. */ - itkNewMacro(Self); + /** Method for creation through the object factory. */ + itkNewMacro(Self); - /** Run-time type information (and related methods). */ - itkTypeMacro(ResampleImageWithOptionsFilter, ImageToImageFilter); - - /** Some convenient typedefs. */ - typedef TInputImage InputImageType; - typedef typename InputImageType::ConstPointer InputImageConstPointer; - typedef typename InputImageType::Pointer InputImagePointer; - typedef typename InputImageType::RegionType InputImageRegionType; - typedef typename InputImageType::PixelType InputImagePixelType; - typedef typename InputImageType::SpacingType InputImageSpacingType; - typedef typename InputImageType::SizeType InputImageSizeType; + /** Run-time type information (and related methods). */ + itkTypeMacro(ResampleImageWithOptionsFilter, ImageToImageFilter); + + /** Some convenient typedefs. */ + typedef typename InputImageType::ConstPointer InputImageConstPointer; + typedef typename InputImageType::Pointer InputImagePointer; + typedef typename InputImageType::RegionType InputImageRegionType; + typedef typename InputImageType::PixelType InputImagePixelType; + typedef typename InputImageType::SpacingType InputImageSpacingType; + typedef typename InputImageType::SizeType InputImageSizeType; - typedef TOutputImage OutputImageType; - typedef typename OutputImageType::ConstPointer OutputImageConstPointer; - typedef typename OutputImageType::Pointer OutputImagePointer; - typedef typename OutputImageType::RegionType OutputImageRegionType; - typedef typename OutputImageType::PixelType OutputImagePixelType; - typedef typename OutputImageType::SpacingType OutputImageSpacingType; - typedef typename OutputImageType::SizeType OutputImageSizeType; + typedef typename OutputImageType::ConstPointer OutputImageConstPointer; + typedef typename OutputImageType::Pointer OutputImagePointer; + typedef typename OutputImageType::RegionType OutputImageRegionType; + typedef typename OutputImageType::PixelType OutputImagePixelType; + typedef typename OutputImageType::SpacingType OutputImageSpacingType; + typedef typename OutputImageType::SizeType OutputImageSizeType; - typedef itk::AffineTransform TransformType; - typedef typename InputImageType::SpacingType GaussianSigmaType; - - /** ImageDimension constants */ - itkStaticConstMacro(InputImageDimension, unsigned int, - TInputImage::ImageDimension); - itkStaticConstMacro(OutputImageDimension, unsigned int, - TOutputImage::ImageDimension); - itkConceptMacro(SameDimensionCheck, - (itk::Concept::SameDimension)); - - /** Interpolation types */ - typedef enum { - NearestNeighbor = 0, - Linear = 1, - BSpline = 2, - B_LUT = 3 - } InterpolationTypeEnumeration; - - /** Input : image to resample */ - void SetInput(const InputImageType * image); + typedef itk::AffineTransform TransformType; + typedef typename InputImageType::SpacingType GaussianSigmaType; + + /** Interpolation types */ + typedef enum { + NearestNeighbor = 0, + Linear = 1, + BSpline = 2, + B_LUT = 3, + WSINC = 4 + } InterpolationTypeEnumeration; + + /** ImageDimension constants */ + itkStaticConstMacro(InputImageDimension, unsigned int, + InputImageType::ImageDimension); + itkStaticConstMacro(OutputImageDimension, unsigned int, + OutputImageType::ImageDimension); + itkConceptMacro(SameDimensionCheck, + (itk::Concept::SameDimension)); + + /** Input : image to resample */ + void SetInput(const InputImageType * image); - /** ImageDimension constants */ - itkStaticConstMacro(ImageDimension, unsigned int, InputImageType::ImageDimension); - - // Options - itkGetMacro(LastDimensionIsTime, bool); - itkSetMacro(LastDimensionIsTime, bool); - itkSetMacro(IsoSpacing, double); - itkGetMacro(IsoSpacing, double); - itkSetMacro(OutputSpacing, OutputImageSpacingType); - itkGetMacro(OutputSpacing, OutputImageSpacingType); - itkSetMacro(OutputSize, OutputImageSizeType); - itkGetMacro(OutputSize, OutputImageSizeType); - itkGetMacro(InterpolationType, InterpolationTypeEnumeration); - itkSetMacro(InterpolationType, InterpolationTypeEnumeration); - itkGetMacro(GaussianFilteringEnabled, bool); - itkSetMacro(GaussianFilteringEnabled, bool); - itkGetMacro(BSplineOrder, int); - itkSetMacro(BSplineOrder, int); - itkGetMacro(BLUTSamplingFactor, int); - itkSetMacro(BLUTSamplingFactor, int); - itkGetMacro(Transform, typename TransformType::Pointer); - itkSetMacro(Transform, typename TransformType::Pointer); - itkGetMacro(GaussianSigma, GaussianSigmaType); - itkSetMacro(GaussianSigma, GaussianSigmaType); - itkGetMacro(DefaultPixelValue, OutputImagePixelType); - itkSetMacro(DefaultPixelValue, OutputImagePixelType); - itkGetMacro(VerboseOptions, bool); - itkSetMacro(VerboseOptions, bool); + /** ImageDimension constants */ + itkStaticConstMacro(ImageDimension, unsigned int, InputImageType::ImageDimension); + + // Options + itkGetMacro(LastDimensionIsTime, bool); + itkSetMacro(LastDimensionIsTime, bool); + itkSetMacro(OutputIsoSpacing, double); + itkGetMacro(OutputIsoSpacing, double); + itkSetMacro(OutputSpacing, OutputImageSpacingType); + itkGetMacro(OutputSpacing, OutputImageSpacingType); + itkSetMacro(OutputSize, OutputImageSizeType); + itkGetMacro(OutputSize, OutputImageSizeType); + itkGetMacro(InterpolationType, InterpolationTypeEnumeration); + itkSetMacro(InterpolationType, InterpolationTypeEnumeration); + itkGetMacro(GaussianFilteringEnabled, bool); + itkSetMacro(GaussianFilteringEnabled, bool); + itkGetMacro(BSplineOrder, int); + itkSetMacro(BSplineOrder, int); + itkGetMacro(BLUTSamplingFactor, int); + itkSetMacro(BLUTSamplingFactor, int); + itkGetMacro(Transform, typename TransformType::Pointer); + itkSetMacro(Transform, typename TransformType::Pointer); + itkGetMacro(GaussianSigma, GaussianSigmaType); + itkSetMacro(GaussianSigma, GaussianSigmaType); + itkGetMacro(DefaultPixelValue, OutputImagePixelType); + itkSetMacro(DefaultPixelValue, OutputImagePixelType); + itkGetMacro(VerboseOptions, bool); + itkSetMacro(VerboseOptions, bool); protected: - ResampleImageWithOptionsFilter(); - virtual ~ResampleImageWithOptionsFilter() {} + ResampleImageWithOptionsFilter(); + virtual ~ResampleImageWithOptionsFilter() {} - bool m_LastDimensionIsTime; - double m_IsoSpacing; - InterpolationTypeEnumeration m_InterpolationType; - bool m_GaussianFilteringEnabled; - int m_BSplineOrder; - int m_BLUTSamplingFactor; - OutputImageSizeType m_OutputSize; - OutputImageSpacingType m_OutputSpacing; - typename TransformType::Pointer m_Transform; - GaussianSigmaType m_GaussianSigma; - OutputImagePixelType m_DefaultPixelValue; - bool m_VerboseOptions; - - virtual void GenerateInputRequestedRegion(); - virtual void GenerateOutputInformation(); - virtual void GenerateData(); + bool m_LastDimensionIsTime; + double m_OutputIsoSpacing; + InterpolationTypeEnumeration m_InterpolationType; + bool m_GaussianFilteringEnabled; + int m_BSplineOrder; + int m_BLUTSamplingFactor; + OutputImageSizeType m_OutputSize; + OutputImageSpacingType m_OutputSpacing; + typename TransformType::Pointer m_Transform; + GaussianSigmaType m_GaussianSigma; + OutputImagePixelType m_DefaultPixelValue; + bool m_VerboseOptions; + OutputImageRegionType m_OutputRegion; + + virtual void GenerateInputRequestedRegion(); + virtual void GenerateOutputInformation(); + virtual void GenerateData(); private: - ResampleImageWithOptionsFilter(const Self&); //purposely not implemented - void operator=(const Self&); //purposely not implemented + ResampleImageWithOptionsFilter(const Self&); //purposely not implemented + void operator=(const Self&); //purposely not implemented }; // end class //-------------------------------------------------------------------- + // Convenient function + template + typename InputImageType::Pointer ResampleImageSpacing(typename InputImageType::Pointer input, + typename InputImageType::SpacingType spacing, + int interpolationType=0); + } // end namespace clitk //--------------------------------------------------------------------