1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
/*=========================================================================
Program: Advanced Normalization Tools
Copyright (c) ConsortiumOfANTS. All rights reserved.
See accompanying COPYING.txt or
https://github.com/stnava/ANTs/blob/master/ANTSCopyright.txt
for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __antsGrubbsRosnerListSampleFilter_h
#define __antsGrubbsRosnerListSampleFilter_h
#include "antsListSampleToListSampleFilter.h"
#include <vector>
namespace itk
{
namespace ants
{
namespace Statistics
{
/** \class GrubbsRosnerListSampleFilter
* \brief Base class of filters intended to generate scalar samples from
* intensity samples.
*
*/
template <typename TScalarListSample>
class GrubbsRosnerListSampleFilter final : public ListSampleToListSampleFilter<TScalarListSample, TScalarListSample>
{
public:
/**
* Standard class typedefs.
*/
typedef GrubbsRosnerListSampleFilter Self;
typedef ListSampleToListSampleFilter<TScalarListSample, TScalarListSample> Superclass;
typedef SmartPointer<Self> Pointer;
typedef SmartPointer<const Self> ConstPointer;
/**
* Standard macros
*/
itkTypeMacro(GrubbsRosnerListSampleFilter, ListSampleToScalarListSampleFilter);
/**
* Method for creation through the object factory.
*/
itkNewMacro(Self);
/**
* Conveneient typedefs
*/
typedef double RealType;
typedef TScalarListSample ScalarListSampleType;
typedef typename ScalarListSampleType ::MeasurementVectorType MeasurementVectorType;
typedef typename ScalarListSampleType ::InstanceIdentifier InstanceIdentifierType;
typedef std::vector<InstanceIdentifierType> InstanceIdentifierContainerType;
enum OutlierHandlingType
{
None,
Trim,
Winsorize
};
itkSetMacro(OutlierHandling, OutlierHandlingType);
itkGetConstMacro(OutlierHandling, OutlierHandlingType);
itkSetMacro(WinsorizingLevel, RealType);
itkGetConstMacro(WinsorizingLevel, RealType);
itkSetMacro(SignificanceLevel, RealType);
itkGetConstMacro(SignificanceLevel, RealType);
InstanceIdentifierContainerType
GetOutlierInstanceIdentifiers()
{
return this->m_OutlierInstanceIdentifiers;
}
// itkGetConstMacro( Outliers, InstanceIdentifierContainerType );
protected:
GrubbsRosnerListSampleFilter();
~GrubbsRosnerListSampleFilter() override;
void
PrintSelf(std::ostream & os, Indent indent) const override;
void
GenerateData() override;
private:
GrubbsRosnerListSampleFilter(const Self &) = delete;
void
operator=(const Self &) = delete;
InstanceIdentifierType FindMaximumNonOutlierDeviationValue(RealType, RealType);
bool
IsMeasurementAnOutlier(RealType, RealType, RealType, unsigned long);
OutlierHandlingType m_OutlierHandling;
RealType m_WinsorizingLevel;
InstanceIdentifierContainerType m_OutlierInstanceIdentifiers;
RealType m_SignificanceLevel;
}; // end of class
} // end of namespace Statistics
} // end of namespace ants
} // end of namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
# include "antsGrubbsRosnerListSampleFilter.hxx"
#endif
#endif
|