Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
itkTotalVariationSingleIterationImageFilter.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef itkTotalVariationSingleIterationImageFilter_h
14 #define itkTotalVariationSingleIterationImageFilter_h
15 
16 #include <itkImage.h>
17 #include <itkImageToImageFilter.h>
18 
19 namespace itk
20 {
50  template <class TInputImage, class TOutputImage>
51  class TotalVariationSingleIterationImageFilter : public ImageToImageFilter<TInputImage, TOutputImage>
52  {
53  public:
55  itkStaticConstMacro(InputImageDimension, unsigned int, TInputImage::ImageDimension);
56  itkStaticConstMacro(OutputImageDimension, unsigned int, TOutputImage::ImageDimension);
57 
59  typedef TInputImage InputImageType;
60  typedef TOutputImage OutputImageType;
61 
63  typedef itk::Image<float, InputImageDimension> LocalVariationImageType;
64 
67  typedef ImageToImageFilter<InputImageType, OutputImageType> Superclass;
70 
72  itkFactorylessNewMacro(Self);
73  itkCloneMacro(Self);
74 
76  itkTypeMacro(TotalVariationSingleIterationImageFilter, ImageToImageFilter);
77 
79  typedef typename InputImageType::PixelType InputPixelType;
80  typedef typename OutputImageType::PixelType OutputPixelType;
81 
82  typedef typename InputImageType::RegionType InputImageRegionType;
83  typedef typename OutputImageType::RegionType OutputImageRegionType;
84 
85  typedef typename InputImageType::SizeType InputSizeType;
86 
99 
106  itkSetMacro(Lambda, double);
107  itkGetMacro(Lambda, double);
108 
115 
120  typename InputImageType::Pointer GetOriginialImage() { return this->m_OriginalImage; }
121  protected:
124  void PrintSelf(std::ostream &os, Indent indent) const override;
125 
136  void ThreadedGenerateData(const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) override;
137 
138  void BeforeThreadedGenerateData() override;
139 
140  typename LocalVariationImageType::Pointer m_LocalVariation;
141 
142  typename InputImageType::Pointer m_OriginalImage;
143 
144  double m_Lambda;
145 
146  private:
148 
149  void operator=(const Self &);
150  };
151 
152 } // end namespace itk
153 
154 #ifndef ITK_MANUAL_INSTANTIATION
155 #include <itkTotalVariationSingleIterationImageFilter.tpp>
156 #endif
157 
158 #endif //__itkTotalVariationSingleIterationImageFilter__
Performs a single iteration of total variation denoising.
ImageToImageFilter< InputImageType, OutputImageType > Superclass
InputImageType::Pointer GetOriginialImage()
Get the original (undenoised) image.
itkStaticConstMacro(InputImageDimension, unsigned int, TInputImage::ImageDimension)
itkStaticConstMacro(OutputImageDimension, unsigned int, TOutputImage::ImageDimension)
void PrintSelf(std::ostream &os, Indent indent) const override
void ThreadedGenerateData(const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) override
void GenerateInputRequestedRegion() override
Generates the input requested region, padded by a radius of 1.
void SetOriginalImage(InputImageType *in)
Set the original (undenoised) image used as a reference for the data fidelity term.