18#ifndef itkStructuralSimilarityImageFilter_h
19#define itkStructuralSimilarityImageFilter_h
105template <
typename TInputImage,
typename TOutputImage = Image<
float, TInputImage::ImageDimension>>
130 using SizeType =
typename InputImageType::SizeType;
149 const InputImageType *
167 itkSetMacro(GaussianSigma,
double);
168 itkGetConstMacro(GaussianSigma,
double);
173 itkSetMacro(K1,
double);
174 itkGetConstMacro(K1,
double);
179 itkSetMacro(K2,
double);
180 itkGetConstMacro(K2,
double);
188 itkSetMacro(DynamicRange,
double);
189 itkGetConstMacro(DynamicRange,
double);
194 itkSetMacro(LuminanceExponent,
double);
195 itkGetConstMacro(LuminanceExponent,
double);
200 itkSetMacro(ContrastExponent,
double);
201 itkGetConstMacro(ContrastExponent,
double);
206 itkSetMacro(StructureExponent,
double);
207 itkGetConstMacro(StructureExponent,
double);
240 itkGetConstMacro(MSSSIM,
double);
277 static constexpr double
280 if constexpr (std::is_floating_point_v<InputPixelType>)
303#ifndef ITK_MANUAL_INSTANTIATION
304# include "itkStructuralSimilarityImageFilter.hxx"
Array class with size defined at construction time.
Base class for all data objects in ITK.
virtual void SetInput(const InputImageType *input)
const InputImageType * GetInput() const
Control indentation during Print() invocation.
static constexpr T max(const T &)
static constexpr T min(const T &)
Implements transparent reference counting.
static constexpr double DefaultDynamicRange()
void GenerateData() override
void EnlargeOutputRequestedRegion(DataObject *data) override
static ScaleWeightsType WangEtAl2003ScaleWeights()
ScaleWeightsType m_ScaleWeights
const InputImageType * GetInput1() const
~StructuralSimilarityImageFilter() override=default
TInputImage InputImageType
typename InputImageType::SizeType SizeType
SmartPointer< const Self > ConstPointer
void SetInput1(const InputImageType *image)
SmartPointer< Self > Pointer
typename InputImageType::RegionType InputImageRegionType
typename OutputImageType::RegionType OutputImageRegionType
double m_StructureExponent
Array< RealType > ScaleValuesType
ImageToImageFilter< TInputImage, TOutputImage > Superclass
void VerifyPreconditions() const override
StructuralSimilarityImageFilter Self
ScaleValuesType m_ContrastStructurePerScale
typename InputImageType::IndexType IndexType
void SetInput2(const InputImageType *image)
double m_LuminanceExponent
Array< RealType > ScaleWeightsType
void SetScaleWeights(const ScaleWeightsType &weights)
double m_ContrastExponent
TOutputImage OutputImageType
static constexpr RealType MinimumScaleValue
void PrintSelf(std::ostream &os, Indent indent) const override
static constexpr unsigned int ImageDimension
typename NumericTraits< InputPixelType >::RealType RealType
const InputImageType * GetInput2() const
typename InputImageType::PixelType InputPixelType
ScaleValuesType m_SSIMPerScale
static ScaleWeightsType GaussianScaleWeights(unsigned int size, double sigma)
StructuralSimilarityImageFilter()
typename OutputImageType::PixelType OutputPixelType
#define itkConceptMacro(name, conceptType)
Compile-time check that a template argument satisfies an itk::Concept.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....