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 __itkTotalVariationSingleIterationImageFilter_h
00019 #define __itkTotalVariationSingleIterationImageFilter_h
00020
00021 #include "itkImageToImageFilter.h"
00022 #include "itkImage.h"
00023
00024 namespace itk
00025 {
00038 template <class TInputImage, class TOutputImage>
00039 class TotalVariationSingleIterationImageFilter :
00040 public ImageToImageFilter< TInputImage, TOutputImage >
00041 {
00042 public:
00044 itkStaticConstMacro(InputImageDimension, unsigned int,
00045 TInputImage::ImageDimension);
00046 itkStaticConstMacro(OutputImageDimension, unsigned int,
00047 TOutputImage::ImageDimension);
00048
00050 typedef TInputImage InputImageType;
00051 typedef TOutputImage OutputImageType;
00052
00053 typedef itk::Image<float,InputImageDimension> LocalVariationImageType;
00054
00056 typedef TotalVariationSingleIterationImageFilter Self;
00057 typedef ImageToImageFilter< InputImageType, OutputImageType> Superclass;
00058 typedef SmartPointer<Self> Pointer;
00059 typedef SmartPointer<const Self> ConstPointer;
00060
00062 itkNewMacro(Self);
00063
00065 itkTypeMacro(TotalVariationSingleIterationImageFilter, ImageToImageFilter);
00066
00068 typedef typename InputImageType::PixelType InputPixelType;
00069 typedef typename OutputImageType::PixelType OutputPixelType;
00070
00071 typedef typename InputImageType::RegionType InputImageRegionType;
00072 typedef typename OutputImageType::RegionType OutputImageRegionType;
00073
00074 typedef typename InputImageType::SizeType InputSizeType;
00075
00082 virtual void GenerateInputRequestedRegion()
00083 throw(InvalidRequestedRegionError);
00084
00085 itkSetMacro(Lambda, double);
00086 itkGetMacro(Lambda, double);
00087
00088 void SetOriginalImage(InputImageType* in)
00089 { this->m_OriginalImage = in; }
00090 typename InputImageType::Pointer GetOriginialImage()
00091 { return this->m_OriginalImage; }
00092
00093 protected:
00094 TotalVariationSingleIterationImageFilter();
00095 virtual ~TotalVariationSingleIterationImageFilter() {}
00096 void PrintSelf(std::ostream& os, Indent indent) const;
00097
00108 void ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread,
00109 int threadId );
00110
00111 void BeforeThreadedGenerateData();
00112
00113 typename LocalVariationImageType::Pointer m_LocalVariation;
00114
00115 typename InputImageType::Pointer m_OriginalImage;
00116
00117 double m_Lambda;
00118
00119 private:
00120
00121 TotalVariationSingleIterationImageFilter(const Self&);
00122
00123 void operator=(const Self&);
00124
00125 };
00126
00127 }
00128
00129 #ifndef ITK_MANUAL_INSTANTIATION
00130 #include "itkTotalVariationSingleIterationImageFilter.txx"
00131 #endif
00132
00133 #endif //__itkTotalVariationSingleIterationImageFilter__