21 #ifndef otbFastNLMeansImageFilter_h
22 #define otbFastNLMeansImageFilter_h
24 #include "itkImageToImageFilter.h"
47 template <
class TInputImage,
class TOutputImage>
48 class ITK_EXPORT
NLMeansFilter :
public itk::ImageToImageFilter<TInputImage, TOutputImage>
53 typedef itk::ImageToImageFilter<TInputImage, TOutputImage>
Superclass;
81 m_Var = 2.0 * sigma * sigma;
86 m_HalfPatchSize.Fill(hws);
88 m_NormalizeDistance = (2 * hws + 1) * (2 * hws + 1) * m_CutoffDistance * m_CutoffDistance;
93 m_HalfSearchSize.Fill(hss);
97 m_CutoffDistance = thresh;
99 m_NormalizeDistance = (2 * m_HalfPatchSize[0] + 1) * (2 * m_HalfPatchSize[1] + 1) * m_CutoffDistance * m_CutoffDistance;
109 void DynamicThreadedGenerateData(
const OutRegionType& outputRegionForThread)
override;
111 void GenerateInputRequestedRegion()
override;
120 std::tuple<InRegionType, int, int, int, int, bool> OutputRegionToInputRegion(
const OutRegionType& outputRegion)
const;
123 void PrintSelf(std::ostream& os, itk::Indent indent)
const override;
166 static const int m_ROW = 1;
167 static const int m_COL = 0;
171 #ifndef OTB_MANUAL_INSTANTIATION
This class implements a fast approximated version of NL Means denoising algorithm....
InImageType::SizeType InSizeType
NLMeansFilter & operator=(const Self &)=delete
float m_NormalizeDistance
OutImageType::PixelType OutPixelType
InImageType::RegionType InRegionType
InImageType::OffsetType InOffsetType
InImageType::ConstPointer InImageConstPointerType
OutImageType::RegionType OutRegionType
~NLMeansFilter() override=default
itk::SmartPointer< const Self > ConstPointer
InImageType::IndexType InIndexType
void SetHalfWindowSize(const unsigned int hws)
itk::ImageToImageFilter< TInputImage, TOutputImage > Superclass
OutImageType::Pointer OutImagePointerType
void SetCutOffDistance(const float thresh)
NLMeansFilter(const Self &)=delete
OutImageType::SizeType OutSizeType
OutImageType::IndexType OutIndexType
InImageType::Pointer InImagePointerType
void SetSigma(const float sigma)
itk::SmartPointer< Self > Pointer
TOutputImage OutImageType
void SetHalfSearchSize(const unsigned int hss)
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.