15 #ifndef itkBoundaryShiftIntegralCalculator_h
16 #define itkBoundaryShiftIntegralCalculator_h
19 #include <itkObject.h>
35 template <
class TInputImage,
class TInputMask,
class TOutputImage>
63 itkGetMacro(BoundaryShiftIntegral,
double);
64 itkSetMacro(BaselineImage, TInputImagePointer);
65 itkSetMacro(BaselineMask, TInputMaskPointer);
66 itkSetMacro(RepeatImage, TInputImagePointer);
67 itkSetMacro(RepeatMask, TInputMaskPointer);
68 itkSetMacro(NumberOfErosion,
unsigned int);
69 itkSetMacro(NumberOfDilation,
unsigned int);
70 itkSetMacro(NumberOfSubROIDilation,
unsigned int);
71 itkSetMacro(SubROIMask, TInputMaskPointer);
72 itkSetMacro(UpperCutoffValue,
double);
73 itkSetMacro(LowerCutoffValue,
double);
74 itkSetMacro(BaselineIntensityNormalisationFactor,
double);
75 itkSetMacro(RepeatIntensityNormalisationFactor,
double);
77 itkGetMacro(BSIMask, TInputMaskPointer);
78 itkSetMacro(BSIMask, TInputMaskPointer);
79 itkGetMacro(BSIMap,
typename TOutputImage::Pointer);
80 itkGetMacro(BSIMapSIENAStyle,TInputImagePointer);
81 itkGetMacro(XORMap, TInputImagePointer);
82 itkSetMacro(ProbabilisticBSI,
unsigned int);
87 virtual void Compute(
void);
88 void PrintSelf(std::ostream& os, Indent indent)
const override;
94 assert(x.size() == y.size());
96 double correlation = 0.0;
99 double varianceX = 0.0;
100 int sizeOfArray = x.size();
102 for (
int arrayIndex = 0; arrayIndex < sizeOfArray; arrayIndex++)
104 meanX += x[arrayIndex];
105 meanY += y[arrayIndex];
107 meanX /= sizeOfArray;
108 meanY /= sizeOfArray;
110 for (
int arrayIndex = 0; arrayIndex < sizeOfArray; arrayIndex++)
112 correlation += (x[arrayIndex]-meanX)*(y[arrayIndex]-meanY);
113 varianceX += (x[arrayIndex]-meanX)*(x[arrayIndex]-meanX);
115 *slope = correlation/varianceX;
116 *intercept = meanY-(*slope)*meanX;
125 virtual void ComputeBSIMask(
void);
129 virtual void ComputeGBSIMask(
void);
133 virtual void ComputeLedigMask(
void);
138 virtual void IntegrateOverBSIMask(
void) throw (ExceptionObject);
146 void ComputeErodedIntersectMask(
void);
152 void ComputeDilatedUnionMask(
void);
156 double m_BoundaryShiftIntegral;
160 TInputImagePointer m_BaselineImage;
164 TInputMaskPointer m_BaselineMask;
168 TInputImagePointer m_RepeatImage;
172 TInputMaskPointer m_RepeatMask;
176 unsigned int m_NumberOfSubROIDilation;
180 TInputMaskPointer m_SubROIMask;
184 unsigned int m_NumberOfErosion;
188 typename IntImageType::Pointer m_ErodedIntersectMask;
192 unsigned int m_NumberOfDilation;
196 typename IntImageType::Pointer m_DilatedUnionMask;
204 TInputMaskPointer m_BSIMask;
209 double m_UpperCutoffValue;
214 double m_LowerCutoffValue;
219 double m_BaselineIntensityNormalisationFactor;
224 double m_RepeatIntensityNormalisationFactor;
228 typename TOutputImage::Pointer m_BSIMap;
232 TInputImagePointer m_BSIMapSIENAStyle;
236 TInputImagePointer m_XORMap;
240 unsigned int m_ProbabilisticBSI;
242 typename IntImageType::Pointer m_BaselineMaskInt;
243 typename IntImageType::Pointer m_RepeatMaskInt;
244 typename IntImageType::Pointer m_PORMaskInt;
245 typename IntImageType::Pointer m_PANDMaskInt;
247 TInputMaskPointer m_POR;
248 TInputMaskPointer m_PAND;
250 void ComputePORandPANDMask(
void);
251 void ComputePORandPANDMaskLedig(
void);
256 void operator=(const Self&);
262 #ifndef ITK_MANUAL_INSTANTIATION
263 #include "itkBoundaryShiftIntegralCalculator.txx"
BoundaryShiftIntegralCalculator Self
Definition: itkBoundaryShiftIntegralCalculator.h:42
itk::Image< int, 3 > IntImageType
Definition: itkBoundaryShiftIntegralCalculator.h:51
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1236
Definition: niftkITKAffineResampleImage.cxx:74
Object Superclass
Definition: itkBoundaryShiftIntegralCalculator.h:43
SmartPointer< const Self > ConstPointer
Definition: itkBoundaryShiftIntegralCalculator.h:45
Calculate the boundary shift integral.
Definition: itkBoundaryShiftIntegralCalculator.h:36
TInputMask::Pointer TInputMaskPointer
Definition: itkBoundaryShiftIntegralCalculator.h:50
SmartPointer< Self > Pointer
Definition: itkBoundaryShiftIntegralCalculator.h:44
TInputImage::Pointer TInputImagePointer
Definition: itkBoundaryShiftIntegralCalculator.h:49
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
GLint GLint GLint GLint GLint x
Definition: glew.h:1236
static void PerformLinearRegression(const std::vector< double > &x, const std::vector< double > &y, double *slope, double *intercept)
Definition: itkBoundaryShiftIntegralCalculator.h:92