NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkMammogramPectoralisSegmentationImageFilter.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 __itkMammogramPectoralisSegmentationImageFilter_h
16 #define __itkMammogramPectoralisSegmentationImageFilter_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>
26 
27 namespace itk {
28 
34 template<class TInputImage, class TOutputImage>
36  public ImageToImageFilter< TInputImage, TOutputImage >
37 {
38 public:
41  typedef ImageToImageFilter< TInputImage,TOutputImage > Superclass;
42  typedef SmartPointer< Self > Pointer;
43  typedef SmartPointer< const Self > ConstPointer;
44 
46  itkTypeMacro( MammogramPectoralisSegmentationImageFilter, ImageToImageFilter );
47 
49  itkNewMacro(Self);
50 
52  itkStaticConstMacro(ImageDimension, unsigned int,
53  TInputImage::ImageDimension);
54 
56  typedef TInputImage InputImageType;
57  typedef typename InputImageType::Pointer InputImagePointer;
58  typedef typename InputImageType::ConstPointer InputImageConstPointer;
61  typedef typename InputImageType::SpacingType InputImageSpacingType;
62  typedef typename InputImageType::PointType InputImagePointType;
65 
67  typedef TOutputImage OutputImageType;
68  typedef typename OutputImageType::Pointer OutputImagePointer;
72  typedef typename OutputImageType::PointType OutputImagePointType;
73 
76 
77  typedef typename TemplateImageType::Pointer TemplateImagePointer;
78  typedef typename TemplateImageType::ConstPointer TemplateImageConstPointer;
81  typedef typename TemplateImageType::SpacingType TemplateImageSpacingType;
82  typedef typename TemplateImageType::PointType TemplateImagePointType;
85 
86  typedef typename itk::ImageRegionIterator< TemplateImageType > TemplateIteratorType;
87  typedef typename itk::ImageRegionIteratorWithIndex< TemplateImageType > TemplateIteratorWithIndexType;
88 
90  typedef unsigned char MaskPixelType;
91  typedef typename itk::Image<MaskPixelType, ImageDimension> MaskImageType;
92  typedef typename MaskImageType::ConstPointer MaskImageConstPointer;
94  typedef typename MaskImageType::Pointer MaskImagePointer;
96  typedef typename MaskImageType::SpacingType MaskImageSpacingType;
97  typedef typename MaskImageType::PointType MaskImagePointType;
99 
101  void SetMask( const MaskImageType *imMask );
102 
104  void SetSSD( bool flag ) { m_flgOptimiseSSD = flag; }
105 
106  typedef typename itk::ImageRegionIterator< TInputImage > IteratorType;
107  typedef typename itk::ImageRegionIteratorWithIndex< TInputImage > IteratorWithIndexType;
108  typedef typename itk::ImageLinearIteratorWithIndex< MaskImageType > MaskLineIteratorType;
109 
110  typedef typename itk::ImageRegionConstIterator< TInputImage > IteratorConstType;
111  typedef typename itk::ImageRegionConstIteratorWithIndex< TInputImage > IteratorWithIndexConstType;
112 
114 
116 
118 
119 
120 #ifdef ITK_USE_CONCEPT_CHECKING
121 
122  itkConceptMacro(DimensionShouldBe2,
123  (Concept::SameDimension<itkGetStaticConstMacro(InputImageDimension),2>));
124  itkConceptMacro(InputHasNumericTraitsCheck,
125  (Concept::HasNumericTraits<InputImagePixelType>));
126  itkConceptMacro(OutputHasPixelTraitsCheck,
127  (Concept::HasPixelTraits<OutputImagePixelType>));
129 #endif
130 
131  bool GetVerbose( void ) { return m_flgVerbose; }
132  void SetVerbose( bool flag ) { m_flgVerbose = flag; }
133 
134  void SetVerboseOn( void ) { m_flgVerbose = true; }
135  void SetVerboseOff( void ) { m_flgVerbose = false; }
136 
137  void SetBreastSide( BreastSideType breastSide ) {
138  m_BreastSide = breastSide;
139  }
140 
141  TemplateImagePointer GetTemplateImage( void ) { return m_Template; }
142 
143 protected:
144 
147  void PrintSelf(std::ostream& os, Indent indent) const;
148 
151 
152  BreastSideType m_BreastSide;
153 
154  InputImagePointer m_Image;
155  MaskImagePointer m_Mask;
156  TemplateImagePointer m_Template;
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 
165  void GenerateData();
166 
167  void GenerateTemplate( typename TInputImage::Pointer &imTemplate,
168  typename TInputImage::RegionType region,
169  double &tMean, double &tStdDev, double &nPixels );
170 
171  // Override since the filter produces the entire dataset
172  void EnlargeOutputRequestedRegion(DataObject *output);
173 
174  // Run and exhaustive search over a region of interest
175  void ExhaustiveSearch( InputImageIndexType pecInterceptStart,
176  InputImageIndexType pecInterceptEnd,
177  typename FitMetricType::Pointer &metric,
178  InputImagePointer &imPipelineConnector,
179  InputImagePointType &bestPecInterceptInMM,
180  typename FitMetricType::ParametersType &bestParameters );
181 
182 
183 private:
184 
185  MammogramPectoralisSegmentationImageFilter(const Self&); //purposely not implemented
186  void operator=(const Self&); //purposely not implemented
187 };
188 
189 } // end namespace itk
190 
191 #ifndef ITK_MANUAL_INSTANTIATION
192 #include "itkMammogramPectoralisSegmentationImageFilter.txx"
193 #endif
194 
195 #endif
BreastSideType m_BreastSide
Definition: itkMammogramPectoralisSegmentationImageFilter.h:152
InputImageType::IndexType InputImageIndexType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:63
OutputImageType::Pointer OutputImagePointer
Definition: itkMammogramPectoralisSegmentationImageFilter.h:68
InputImageType::SpacingType InputImageSpacingType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:61
A metric to compute the similarity between an image and a pectoral shape model.
Definition: itkMammogramPectoralisFitMetric.h:35
SmartPointer< Self > Pointer
Definition: itkMammogramPectoralisSegmentationImageFilter.h:42
Computes whether a mammogram is of the left or right breast from the center of mass.
Definition: itkMammogramLeftOrRightSideCalculator.h:31
LeftOrRightSideCalculatorType::BreastSideType BreastSideType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:115
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
itk::Image< TemplatePixelType, ImageDimension > TemplateImageType
Definition: itkMammogramPectoralisFitMetric.h:74
TemplateImageType::SizeType TemplateImageSizeType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:84
MaskImageType::PointType MaskImagePointType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:97
itk::ImageRegionIterator< TemplateImageType > TemplateIteratorType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:86
itk::MammogramPectoralisFitMetric< InputImageType >::TemplateImageType TemplateImageType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:75
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: glew.h:4052
MaskImageType::IndexType MaskImageIndexType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:98
MaskImageType::SpacingType MaskImageSpacingType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:96
Superclass::ParametersType ParametersType
Definition: itkMammogramPectoralisFitMetric.h:115
OutputImageType::PixelType OutputImagePixelType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:70
Definition: niftkITKAffineResampleImage.cxx:74
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
bool m_flgOptimiseSSD
Definition: itkMammogramPectoralisSegmentationImageFilter.h:150
TInputImage InputImageType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:56
TemplateImageType::IndexType TemplateImageIndexType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:83
ImageToImageFilter< TInputImage, TOutputImage > Superclass
Definition: itkMammogramPectoralisSegmentationImageFilter.h:41
void SetVerboseOn(void)
Definition: itkMammogramPectoralisSegmentationImageFilter.h:134
MammogramPectoralisSegmentationImageFilter Self
Definition: itkMammogramPectoralisSegmentationImageFilter.h:40
InputImageType::ConstPointer InputImageConstPointer
Definition: itkMammogramPectoralisSegmentationImageFilter.h:58
itk::Image< MaskPixelType, ImageDimension > MaskImageType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:91
OutputImageType::RegionType OutputImageRegionType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:69
TemplateImageType::PixelType TemplateImagePixelType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:80
InputImageType::Pointer InputImagePointer
Definition: itkMammogramPectoralisSegmentationImageFilter.h:57
itk::ImageRegionIteratorWithIndex< TemplateImageType > TemplateIteratorWithIndexType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:87
MaskImagePointer m_Mask
Definition: itkMammogramPectoralisSegmentationImageFilter.h:155
void SetVerboseOff(void)
Definition: itkMammogramPectoralisSegmentationImageFilter.h:135
InputImageType::PointType InputImagePointType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:62
OutputImageType::IndexType OutputImageIndexType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:71
TemplateImageType::Pointer TemplateImagePointer
Definition: itkMammogramPectoralisSegmentationImageFilter.h:77
itk::ImageRegionIterator< TInputImage > IteratorType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:106
itk::ImageRegionConstIteratorWithIndex< TInputImage > IteratorWithIndexConstType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:111
itk::ImageLinearIteratorWithIndex< MaskImageType > MaskLineIteratorType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:108
SmartPointer< Self > Pointer
Definition: itkMammogramPectoralisFitMetric.h:42
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
void SetVerbose(bool flag)
Definition: itkMammogramPectoralisSegmentationImageFilter.h:132
TemplateImageType::ConstPointer TemplateImageConstPointer
Definition: itkMammogramPectoralisSegmentationImageFilter.h:78
InputImagePointer m_Image
Definition: itkMammogramPectoralisSegmentationImageFilter.h:154
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
unsigned char MaskPixelType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:90
itk::ImageRegionIteratorWithIndex< TInputImage > IteratorWithIndexType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:107
InputImageType::PixelType InputImagePixelType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:60
TOutputImage OutputImageType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:67
TemplateImageType::RegionType TemplateImageRegionType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:79
BreastSideType
Breast side.
Definition: itkMammogramLeftOrRightSideCalculator.h:71
SmartPointer< const Self > ConstPointer
Definition: itkMammogramPectoralisSegmentationImageFilter.h:43
void SetSSD(bool flag)
Optimise SSD rather than normalised cross-correlation.
Definition: itkMammogramPectoralisSegmentationImageFilter.h:104
MaskImageType::Pointer MaskImagePointer
Definition: itkMammogramPectoralisSegmentationImageFilter.h:94
TemplateImageType::PointType TemplateImagePointType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:82
InputImageType::RegionType InputImageRegionType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:59
2D image filter class to segment the pectoral muscle from a mammogram.
Definition: itkMammogramPectoralisSegmentationImageFilter.h:35
void SetBreastSide(BreastSideType breastSide)
Definition: itkMammogramPectoralisSegmentationImageFilter.h:137
MaskImageType::SizeType MaskImageSizeType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:95
itk::ImageRegionConstIterator< TInputImage > IteratorConstType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:110
itk::MammogramLeftOrRightSideCalculator< InputImageType > LeftOrRightSideCalculatorType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:113
bool m_flgVerbose
Definition: itkMammogramPectoralisSegmentationImageFilter.h:149
MaskImageType::RegionType MaskImageRegionType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:93
itk::MammogramPectoralisFitMetric< TInputImage > FitMetricType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:117
bool GetVerbose(void)
Definition: itkMammogramPectoralisSegmentationImageFilter.h:131
TemplateImageType::SpacingType TemplateImageSpacingType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:81
TemplateImagePointer GetTemplateImage(void)
Definition: itkMammogramPectoralisSegmentationImageFilter.h:141
InputImageType::SizeType InputImageSizeType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:64
TemplateImagePointer m_Template
Definition: itkMammogramPectoralisSegmentationImageFilter.h:156
OutputImageType::PointType OutputImagePointType
Definition: itkMammogramPectoralisSegmentationImageFilter.h:72
MaskImageType::ConstPointer MaskImageConstPointer
Definition: itkMammogramPectoralisSegmentationImageFilter.h:92