NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkMammogramFatSubtractionImageFilter.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef __itkMammogramFatSubtractionImageFilter_h
16 #define __itkMammogramFatSubtractionImageFilter_h
17 
18 #include <itkImageToImageFilter.h>
19 #include <itkImageRegionIterator.h>
20 #include <itkImageRegionIteratorWithIndex.h>
21 #include <itkImageRegionConstIterator.h>
22 #include <itkImageRegionConstIteratorWithIndex.h>
23 #include <itkImageLinearIteratorWithIndex.h>
24 
27 
28 namespace itk {
29 
35 template<class TInputImage>
37  public ImageToImageFilter< TInputImage, TInputImage >
38 {
39 public:
42  typedef ImageToImageFilter< TInputImage,TInputImage > Superclass;
43  typedef SmartPointer< Self > Pointer;
44  typedef SmartPointer< const Self > ConstPointer;
45 
47  itkTypeMacro( MammogramFatSubtractionImageFilter, ImageToImageFilter );
48 
50  itkNewMacro(Self);
51 
53  itkStaticConstMacro(ImageDimension, unsigned int,
54  TInputImage::ImageDimension);
55 
57  typedef TInputImage InputImageType;
58  typedef typename InputImageType::Pointer InputImagePointer;
59  typedef typename InputImageType::ConstPointer InputImageConstPointer;
62  typedef typename InputImageType::SpacingType InputImageSpacingType;
63  typedef typename InputImageType::PointType InputImagePointType;
66 
68  typedef unsigned char MaskPixelType;
69  typedef typename itk::Image<MaskPixelType, ImageDimension> MaskImageType;
70  typedef typename MaskImageType::ConstPointer MaskImageConstPointer;
72  typedef typename MaskImageType::Pointer MaskImagePointer;
74  typedef typename MaskImageType::SpacingType MaskImageSpacingType;
75  typedef typename MaskImageType::PointType MaskImagePointType;
77 
79  typedef float DistancePixelType;
80  typedef typename itk::Image<DistancePixelType, ImageDimension> DistanceImageType;
81  typedef typename DistanceImageType::Pointer DistanceImagePointer;
82  typedef typename DistanceImageType::ConstPointer DistanceImageConstPointer;
85  typedef typename DistanceImageType::SpacingType DistanceImageSpacingType;
86  typedef typename DistanceImageType::PointType DistanceImagePointType;
88 
90  void SetMask( const MaskImageType *imMask );
91 
92  typedef typename itk::ImageRegionIterator< TInputImage > IteratorType;
93  typedef typename itk::ImageRegionIteratorWithIndex< TInputImage > IteratorWithIndexType;
94  typedef typename itk::ImageLinearIteratorWithIndex< MaskImageType > MaskLineIteratorType;
95 
96  typedef typename itk::ImageRegionConstIterator< TInputImage > IteratorConstType;
97  typedef typename itk::ImageRegionConstIteratorWithIndex< TInputImage > IteratorWithIndexConstType;
98 
101 
102 
103 #ifdef ITK_USE_CONCEPT_CHECKING
104 
105  itkConceptMacro(DimensionShouldBe2,
106  (Concept::SameDimension<itkGetStaticConstMacro(InputImageDimension),2>));
107  itkConceptMacro(InputHasNumericTraitsCheck,
108  (Concept::HasNumericTraits<InputImagePixelType>));
110 #endif
111 
112  bool GetVerbose( void ) { return m_flgVerbose; }
113  void SetVerbose( bool flag ) { m_flgVerbose = flag; }
114  void SetVerboseOn( void ) { m_flgVerbose = true; }
115  void SetVerboseOff( void ) { m_flgVerbose = false; }
116 
117  bool GetComputeFatEstimationFit( void ) { return m_flgComputeFatEstimationFit; }
118  void SetComputeFatEstimationFit( bool flag ) { m_flgComputeFatEstimationFit = flag; }
119  void SetComputeFatEstimationFitOn( void ) { m_flgComputeFatEstimationFit = true; }
120  void SetComputeFatEstimationFitOff( void ) { m_flgComputeFatEstimationFit = false; }
121 
122  void SetFileOutputIntensityVsEdgeDist( std::string fn ) { m_fileOutputIntensityVsEdgeDist = fn; }
123  void SetFileOutputFit( std::string fn ) { m_fileOutputFit = fn; }
124 
125  MaskImagePointer GetMaskOfRegionInsideBreastEdge( void );
126 
127 
128 protected:
129 
132  void PrintSelf(std::ostream& os, Indent indent) const;
133 
136 
139 
140  InputImagePointer m_Image;
141  MaskImagePointer m_Mask;
142  DistanceImagePointer m_Distance;
143 
146 
149  virtual DataObject::Pointer MakeOutput(unsigned int idx);
150 
151  template<typename ShrinkImageType>
152  void ComputeShrinkFactors( typename ShrinkImageType::ConstPointer &image,
153  unsigned int maxShrunkDimension,
154  itk::Array< double > &sampling,
155  typename ShrinkImageType::SpacingType &outSpacing,
156  typename ShrinkImageType::SizeType &outSize );
157 
158  template<typename ShrinkImageType>
159  typename ShrinkImageType::Pointer
160  ShrinkTheInputImage( typename ShrinkImageType::ConstPointer &image,
161  unsigned int maxShrunkDimension,
162  typename ShrinkImageType::SizeType &outSize );
163 
164  template<typename ShrinkImageType>
165  typename ShrinkImageType::Pointer
166  ShrinkTheInputImageViaMinResample( typename ShrinkImageType::ConstPointer &image,
167  unsigned int maxShrunkDimension,
168  typename ShrinkImageType::SizeType &outSize );
169 
171  void GenerateData();
172 
174  void ComputeFatEstimationFit();
175 
177  void ComputeMinIntensityVersusDistanceFromEdge();
178 
180  void SubtractFatEstimation( InputImagePointer &imFatSubtraction,
181  InputImagePointer &imFatEstimation );
182 
183  // Override since the filter produces the entire dataset
184  void EnlargeOutputRequestedRegion(DataObject *output);
185 
187  void ComputeDistanceTransform( void );
188 
189 private:
190 
191  MammogramFatSubtractionImageFilter(const Self&); //purposely not implemented
192  void operator=(const Self&); //purposely not implemented
193 };
194 
195 } // end namespace itk
196 
197 #ifndef ITK_MANUAL_INSTANTIATION
198 #include "itkMammogramFatSubtractionImageFilter.txx"
199 #endif
200 
201 #endif
InputImageType::PixelType InputImagePixelType
Definition: itkMammogramFatSubtractionImageFilter.h:61
InputImageType::IndexType InputImageIndexType
Definition: itkMammogramFatSubtractionImageFilter.h:64
bool m_flgComputeFatEstimationFit
Definition: itkMammogramFatSubtractionImageFilter.h:135
bool GetComputeFatEstimationFit(void)
Definition: itkMammogramFatSubtractionImageFilter.h:117
MaskImageType::ConstPointer MaskImageConstPointer
Definition: itkMammogramFatSubtractionImageFilter.h:70
DistanceImageType::SpacingType DistanceImageSpacingType
Definition: itkMammogramFatSubtractionImageFilter.h:85
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
void SetComputeFatEstimationFit(bool flag)
Definition: itkMammogramFatSubtractionImageFilter.h:118
DistanceImagePointer m_Distance
Definition: itkMammogramFatSubtractionImageFilter.h:142
DistanceImageType::IndexType DistanceImageIndexType
Definition: itkMammogramFatSubtractionImageFilter.h:87
InputImageType::Pointer InputImagePointer
Definition: itkMammogramFatSubtractionImageFilter.h:58
float m_FatThicknessEstimate
Definition: itkMammogramFatSubtractionImageFilter.h:145
void SetVerbose(bool flag)
Definition: itkMammogramFatSubtractionImageFilter.h:113
DistanceImageType::PointType DistanceImagePointType
Definition: itkMammogramFatSubtractionImageFilter.h:86
DistanceImageType::SizeType DistanceImageSizeType
Definition: itkMammogramFatSubtractionImageFilter.h:84
bool GetVerbose(void)
Definition: itkMammogramFatSubtractionImageFilter.h:112
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: glew.h:4052
MaskImageType::RegionType MaskImageRegionType
Definition: itkMammogramFatSubtractionImageFilter.h:71
MaskImageType::SizeType MaskImageSizeType
Definition: itkMammogramFatSubtractionImageFilter.h:73
MaskImageType::IndexType MaskImageIndexType
Definition: itkMammogramFatSubtractionImageFilter.h:76
Definition: niftkITKAffineResampleImage.cxx:74
std::string m_fileOutputFit
Definition: itkMammogramFatSubtractionImageFilter.h:138
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
DistanceImageType::Pointer DistanceImagePointer
Definition: itkMammogramFatSubtractionImageFilter.h:81
unsigned char MaskPixelType
Definition: itkMammogramFatSubtractionImageFilter.h:68
itk::Image< DistancePixelType, ImageDimension > DistanceImageType
Definition: itkMammogramFatSubtractionImageFilter.h:80
SmartPointer< Self > Pointer
Definition: itkMammogramFatSubtractionImageFilter.h:43
itk::Image< MaskPixelType, ImageDimension > MaskImageType
Definition: itkMammogramFatSubtractionImageFilter.h:69
SmartPointer< const Self > ConstPointer
Definition: itkMammogramFatSubtractionImageFilter.h:44
bool m_flgVerbose
Definition: itkMammogramFatSubtractionImageFilter.h:134
void SetComputeFatEstimationFitOn(void)
Definition: itkMammogramFatSubtractionImageFilter.h:119
InputImageType::ConstPointer InputImageConstPointer
Definition: itkMammogramFatSubtractionImageFilter.h:59
MaskImagePointer m_Mask
Definition: itkMammogramFatSubtractionImageFilter.h:141
MaskImageType::PointType MaskImagePointType
Definition: itkMammogramFatSubtractionImageFilter.h:75
itk::ImageRegionIterator< TInputImage > IteratorType
Definition: itkMammogramFatSubtractionImageFilter.h:92
void SetFileOutputFit(std::string fn)
Definition: itkMammogramFatSubtractionImageFilter.h:123
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
void SetVerboseOff(void)
Definition: itkMammogramFatSubtractionImageFilter.h:115
itk::MammogramFatEstimationFitMetricForArray< TInputImage > FitArrayMetricType
Definition: itkMammogramFatSubtractionImageFilter.h:99
itk::ImageLinearIteratorWithIndex< MaskImageType > MaskLineIteratorType
Definition: itkMammogramFatSubtractionImageFilter.h:94
MaskImageType::SpacingType MaskImageSpacingType
Definition: itkMammogramFatSubtractionImageFilter.h:74
MammogramFatSubtractionImageFilter Self
Definition: itkMammogramFatSubtractionImageFilter.h:41
TInputImage InputImageType
Definition: itkMammogramFatSubtractionImageFilter.h:57
itk::ImageRegionConstIteratorWithIndex< TInputImage > IteratorWithIndexConstType
Definition: itkMammogramFatSubtractionImageFilter.h:97
itk::MammogramFatEstimationFitMetricForImage< TInputImage > FitImageMetricType
Definition: itkMammogramFatSubtractionImageFilter.h:100
DistanceImageType::RegionType DistanceImageRegionType
Definition: itkMammogramFatSubtractionImageFilter.h:83
float DistancePixelType
Definition: itkMammogramFatSubtractionImageFilter.h:79
InputImageType::PointType InputImagePointType
Definition: itkMammogramFatSubtractionImageFilter.h:63
A metric to compute the similarity between an image and breast fat model.
Definition: itkMammogramFatEstimationFitMetricForArray.h:38
std::string m_fileOutputIntensityVsEdgeDist
Definition: itkMammogramFatSubtractionImageFilter.h:137
InputImageType::RegionType InputImageRegionType
Definition: itkMammogramFatSubtractionImageFilter.h:60
itk::ImageRegionConstIterator< TInputImage > IteratorConstType
Definition: itkMammogramFatSubtractionImageFilter.h:96
MaskImageType::Pointer MaskImagePointer
Definition: itkMammogramFatSubtractionImageFilter.h:72
ImageToImageFilter< TInputImage, TInputImage > Superclass
Definition: itkMammogramFatSubtractionImageFilter.h:42
itk::ImageRegionIteratorWithIndex< TInputImage > IteratorWithIndexType
Definition: itkMammogramFatSubtractionImageFilter.h:93
2D image filter class to subtract the fat signal from a mammogram.
Definition: itkMammogramFatSubtractionImageFilter.h:36
void SetVerboseOn(void)
Definition: itkMammogramFatSubtractionImageFilter.h:114
A metric to compute the similarity between an image and breast fat model.
Definition: itkMammogramFatEstimationFitMetricForImage.h:38
float m_BreastEdgeWidthEstimate
Definition: itkMammogramFatSubtractionImageFilter.h:144
InputImagePointer m_Image
Definition: itkMammogramFatSubtractionImageFilter.h:140
DistanceImageType::ConstPointer DistanceImageConstPointer
Definition: itkMammogramFatSubtractionImageFilter.h:82
GLsizei const GLcharARB ** string
Definition: glew.h:5194
void SetComputeFatEstimationFitOff(void)
Definition: itkMammogramFatSubtractionImageFilter.h:120
void SetFileOutputIntensityVsEdgeDist(std::string fn)
Definition: itkMammogramFatSubtractionImageFilter.h:122
InputImageType::SpacingType InputImageSpacingType
Definition: itkMammogramFatSubtractionImageFilter.h:62
InputImageType::SizeType InputImageSizeType
Definition: itkMammogramFatSubtractionImageFilter.h:65