NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkBasicImageFeaturesImageFilter.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 itkBasicImageFeaturesImageFilter_h
16 #define itkBasicImageFeaturesImageFilter_h
17 
18 #include <itkImageToImageFilter.h>
20 #include <itkMaskImageFilter.h>
21 
22 #include <vnl/vnl_double_2.h>
23 
24 namespace itk {
25 
41 template<class TInputImage, class TOutputImage>
43  public ImageToImageFilter< TInputImage, TOutputImage >
44 {
45 public:
48  typedef ImageToImageFilter< TInputImage,TOutputImage > Superclass;
49  typedef SmartPointer< Self > Pointer;
50  typedef SmartPointer< const Self > ConstPointer;
51 
53  itkTypeMacro( BasicImageFeaturesImageFilter, ImageToImageFilter );
54 
56  itkNewMacro(Self);
57 
59  itkStaticConstMacro(ImageDimension, unsigned int,
60  TInputImage::ImageDimension);
61 
63  typedef TInputImage InputImageType;
64  typedef typename InputImageType::Pointer InputImagePointer;
65  typedef typename InputImageType::ConstPointer InputImageConstPointer;
68  typedef typename InputImageType::SpacingType InputImageSpacingType;
69  typedef typename InputImageType::PointType InputImagePointType;
70 
71  typedef typename NumericTraits<InputImagePixelType>::RealType RealType;
72 
74  typedef TOutputImage OutputImageType;
75  typedef typename OutputImageType::Pointer OutputImagePointer;
79  typedef typename OutputImageType::PointType OutputImagePointType;
80 
81  typedef OutputImagePointType OriginType;
82 
84  typedef unsigned char MaskPixelType;
85  typedef typename itk::Image<MaskPixelType, ImageDimension> MaskImageType;
86  typedef typename MaskImageType::Pointer MaskImagePointer;
87 
88  typedef typename itk::MaskImageFilter< OutputImageType, MaskImageType, OutputImageType > MaskFilterType;
89  typedef typename MaskFilterType::Pointer MaskFilterPointer;
90 
91 
96  typedef float InternalRealType;
97 
99 
100  typedef typename RealImageType::Pointer RealImagePointer;
101 
103  typedef LewisGriffinRecursiveGaussianImageFilter < InputImageType,
104  RealImageType > DerivativeFilterTypeX;
105  typedef LewisGriffinRecursiveGaussianImageFilter < RealImageType,
106  RealImageType > DerivativeFilterTypeY;
107 
111 
115 
117  void SetDebug(bool b) { itk::Object::SetDebug(b); }
119  void DebugOn() { this->SetDebug(true); }
121  void DebugOff() { this->SetDebug(false); }
122 
124  void SetVerbose(bool b) { itk::Object::SetGlobalWarningDisplay(b); }
126  void VerboseOn() { this->SetVerbose(true); }
128  void VerboseOff() { this->SetVerbose(false); }
129 
131  void SetSigma( RealType sigma );
132 
138  virtual void GenerateInputRequestedRegion()
139  throw( InvalidRequestedRegionError );
140 
142  void SetNormalizeAcrossScale( bool normalizeInScaleSpace );
143  itkGetConstMacro( NormalizeAcrossScale, bool );
144 
146  void CalculateOrientatedBIFs(void) {m_FlagCalculateOrientatedBIFs = true;}
147 
149  void SecondOrderOnly(void) {m_FlagSecondOrderOnly = true;}
150 
152  itkSetMacro( Epsilon, InternalRealType );
154  itkGetMacro( Epsilon, InternalRealType );
155 
157  itkSetMacro( NumberOfOrientations, unsigned int );
159  itkGetMacro( NumberOfOrientations, unsigned int );
160 
162  void SetOrigin( OriginType o ) {
163  m_Origin = o;
164  m_FlagOriginSet = true;
165  this->Modified();
166  }
168  itkGetMacro( Origin, OriginType );
169 
171  void SetFlipHorizontally( void ) { flipHorizontally = -1.; this->Modified();}
173  void SetFlipVertically( void ) { flipVertically = -1.; this->Modified();}
174 
176  void SetLocalOrientation( RealImagePointer OrientationInX, RealImagePointer OrientationInY ) {
177  m_OrientationInX = OrientationInX;
178  m_OrientationInY = OrientationInY;
179 
180  m_FlagLocalOrientationSet = true;
181  m_FlagCalculateOrientatedBIFs = true;
182  m_FlagOriginSet = false;
183  this->Modified();
184  }
185 
187  itkSetObjectMacro( OrientationInY, RealImageType );
188 
190  itkSetObjectMacro( Mask, MaskImageType );
191 
192  itkGetObjectMacro( S00, RealImageType );
193  itkGetObjectMacro( S10, RealImageType );
194  itkGetObjectMacro( S01, RealImageType );
195  itkGetObjectMacro( S11, RealImageType );
196  itkGetObjectMacro( S20, RealImageType );
197  itkGetObjectMacro( S02, RealImageType );
198 
199 
200  itkGetObjectMacro( ResponseFlat, RealImageType );
201  itkGetObjectMacro( ResponseSlope, RealImageType );
202  itkGetObjectMacro( ResponseDarkBlob, RealImageType );
203  itkGetObjectMacro( ResponseLightBlob, RealImageType );
204  itkGetObjectMacro( ResponseDarkLine, RealImageType );
205  itkGetObjectMacro( ResponseLightLine, RealImageType );
206  itkGetObjectMacro( ResponseSaddle, RealImageType );
207 
208  itkGetObjectMacro( Orientation, RealImageType );
209 
211  void WriteDerivativeToFile( int n, std::string filename );
213  void WriteFilterResponseToFile( int n, std::string filename );
214 
215 #ifdef ITK_USE_CONCEPT_CHECKING
216 
217  itkConceptMacro(DimensionShouldBe2,
218  (Concept::SameDimension<itkGetStaticConstMacro(InputImageDimension),2>));
219  itkConceptMacro(InputHasNumericTraitsCheck,
220  (Concept::HasNumericTraits<InputImagePixelType>));
221  itkConceptMacro(OutputHasPixelTraitsCheck,
222  (Concept::HasPixelTraits<OutputImagePixelType>));
224 #endif
225 
227  void SetSingleThreadedExecution(void) {m_FlagMultiThreadedExecution = false;}
228 
229 protected:
232  void PrintSelf(std::ostream& os, Indent indent) const;
233 
236  {
238  };
239 
240  RealImagePointer GetDerivative( DerivativeFilterOrderEnumTypeX xOrder,
241  DerivativeFilterOrderEnumTypeY yOrder );
242 
253  virtual void BeforeThreadedGenerateData(void);
254 
265  virtual void AfterThreadedGenerateData(void);
266 
269  void GenerateData();
270 
281  void ThreadedGenerateData(const OutputImageRegionType& outputRegionForThread,
282  ThreadIdType threadId );
283 
284  // Override since the filter produces the entire dataset
285  void EnlargeOutputRequestedRegion(DataObject *output);
286 
289 
292 
295 
300 
303 
306 
308  InternalRealType m_Epsilon;
309 
311  InternalRealType m_Sigma;
312 
316  OriginType m_Origin;
317 
321  RealType flipVertically;
322 
323 
324  RealImagePointer m_OrientationInX;
325  RealImagePointer m_OrientationInY;
326 
328  MaskImagePointer m_Mask;
329  MaskFilterPointer m_MaskFilter;
330 
331  RealImagePointer m_S00;
332  RealImagePointer m_S10;
333  RealImagePointer m_S01;
334  RealImagePointer m_S11;
335  RealImagePointer m_S20;
336  RealImagePointer m_S02;
337 
338  RealImagePointer m_ResponseFlat;
339  RealImagePointer m_ResponseSlope;
340  RealImagePointer m_ResponseDarkBlob;
341  RealImagePointer m_ResponseLightBlob;
342  RealImagePointer m_ResponseDarkLine;
343  RealImagePointer m_ResponseLightLine;
344  RealImagePointer m_ResponseSaddle;
345 
346  RealImagePointer m_Orientation;
347 
348 private:
349  BasicImageFeaturesImageFilter(const Self&); //purposely not implemented
350  void operator=(const Self&); //purposely not implemented
351 };
352 
353 } // end namespace itk
354 
355 #ifndef ITK_MANUAL_INSTANTIATION
356 #include "itkBasicImageFeaturesImageFilter.txx"
357 #endif
358 
359 #endif
RealType flipHorizontally
Coefficient to flip the orientation horizontally.
Definition: itkBasicImageFeaturesImageFilter.h:319
void VerboseOn()
Set verbose output on.
Definition: itkBasicImageFeaturesImageFilter.h:126
unsigned char MaskPixelType
Definition: itkBasicImageFeaturesImageFilter.h:84
OutputImageType::PointType OutputImagePointType
Definition: itkBasicImageFeaturesImageFilter.h:79
itk::MaskImageFilter< OutputImageType, MaskImageType, OutputImageType > MaskFilterType
Definition: itkBasicImageFeaturesImageFilter.h:88
bool m_FlagLocalOrientationSet
Flag to calculate orientated BIFs using local orientation images.
Definition: itkBasicImageFeaturesImageFilter.h:294
RealImagePointer m_S01
First derivative in 'y'.
Definition: itkBasicImageFeaturesImageFilter.h:333
RealImagePointer m_ResponseSaddle
Saddle region response.
Definition: itkBasicImageFeaturesImageFilter.h:344
TInputImage InputImageType
Definition: itkBasicImageFeaturesImageFilter.h:63
MaskFilterPointer m_MaskFilter
Definition: itkBasicImageFeaturesImageFilter.h:329
void VerboseOff()
Set verbose output off.
Definition: itkBasicImageFeaturesImageFilter.h:128
RealImagePointer m_OrientationInX
Set the local reference orientation image in 'x'.
Definition: itkBasicImageFeaturesImageFilter.h:324
MaskImagePointer m_Mask
Optional mask image.
Definition: itkBasicImageFeaturesImageFilter.h:328
void DebugOn()
Set debugging output on.
Definition: itkBasicImageFeaturesImageFilter.h:119
Definition: itkBasicImageFeaturesImageFilter.h:235
void SetFlipHorizontally(void)
Set the coefficient to flip the orientation horizontally.
Definition: itkBasicImageFeaturesImageFilter.h:171
BasicImageFeaturesImageFilter * Filter
Definition: itkBasicImageFeaturesImageFilter.h:237
void SetVerbose(bool b)
Set the verbose output.
Definition: itkBasicImageFeaturesImageFilter.h:124
OutputImageType::Pointer OutputImagePointer
Definition: itkBasicImageFeaturesImageFilter.h:75
RealImagePointer m_ResponseSlope
Slope-like region response.
Definition: itkBasicImageFeaturesImageFilter.h:339
DerivativeFilterTypeX::Pointer DerivativeFilterPointerX
Definition: itkBasicImageFeaturesImageFilter.h:113
RealImagePointer m_Orientation
Orientation of the structure.
Definition: itkBasicImageFeaturesImageFilter.h:346
ImageToImageFilter< TInputImage, TOutputImage > Superclass
Definition: itkBasicImageFeaturesImageFilter.h:48
Orientation
Definition: itkMIDASHelper.h:35
RealImageType::Pointer RealImagePointer
Definition: itkBasicImageFeaturesImageFilter.h:100
Definition: niftkITKAffineResampleImage.cxx:74
InternalRealType m_Sigma
Scale.
Definition: itkBasicImageFeaturesImageFilter.h:311
RealImagePointer m_S02
Second derivative in 'yy'.
Definition: itkBasicImageFeaturesImageFilter.h:336
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
bool m_FlagMultiThreadedExecution
Flag to turn multithreading on or off.
Definition: itkBasicImageFeaturesImageFilter.h:288
OutputImageType::IndexType OutputImageIndexType
Definition: itkBasicImageFeaturesImageFilter.h:78
SmartPointer< const Self > ConstPointer
Definition: itkBasicImageFeaturesImageFilter.h:50
bool m_FlagCalculateOrientatedBIFs
Flag to calculate orientated BIFs.
Definition: itkBasicImageFeaturesImageFilter.h:291
InputImageType::ConstPointer InputImageConstPointer
Definition: itkBasicImageFeaturesImageFilter.h:65
GLdouble GLdouble GLdouble b
Definition: glew.h:7885
TOutputImage OutputImageType
Definition: itkBasicImageFeaturesImageFilter.h:74
itk::Image< MaskPixelType, ImageDimension > MaskImageType
Definition: itkBasicImageFeaturesImageFilter.h:85
Lewis Griffin's implementation of a recursive Gaussian filter which does not produce the oscillations...
Definition: itkLewisGriffinRecursiveGaussianImageFilter.h:30
OutputImagePointType OriginType
Definition: itkBasicImageFeaturesImageFilter.h:81
LewisGriffinRecursiveGaussianImageFilter< RealImageType, RealImageType > DerivativeFilterTypeY
Definition: itkBasicImageFeaturesImageFilter.h:106
MaskImageType::Pointer MaskImagePointer
Definition: itkBasicImageFeaturesImageFilter.h:86
BasicImageFeaturesImageFilter Self
Definition: itkBasicImageFeaturesImageFilter.h:47
InputImageType::PointType InputImagePointType
Definition: itkBasicImageFeaturesImageFilter.h:69
void SetDebug(bool b)
Set the debugging output.
Definition: itkBasicImageFeaturesImageFilter.h:117
void SetLocalOrientation(RealImagePointer OrientationInX, RealImagePointer OrientationInY)
Set the local reference orientation images.
Definition: itkBasicImageFeaturesImageFilter.h:176
OutputImageType::PixelType OutputImagePixelType
Definition: itkBasicImageFeaturesImageFilter.h:77
RealImagePointer m_S00
Zero order smoothed image.
Definition: itkBasicImageFeaturesImageFilter.h:331
RealImagePointer m_ResponseDarkLine
DarkLine region response.
Definition: itkBasicImageFeaturesImageFilter.h:342
OutputImageType::RegionType OutputImageRegionType
Definition: itkBasicImageFeaturesImageFilter.h:76
bool m_FlagSecondOrderOnly
Only report linear structures.
Definition: itkBasicImageFeaturesImageFilter.h:305
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
RealImagePointer m_S10
First derivative in 'x'.
Definition: itkBasicImageFeaturesImageFilter.h:332
InputImageType::PixelType InputImagePixelType
Definition: itkBasicImageFeaturesImageFilter.h:67
DerivativeFilterTypeX::OrderEnumType DerivativeFilterOrderEnumTypeX
Definition: itkBasicImageFeaturesImageFilter.h:109
RealImagePointer m_OrientationInY
Set the local reference orientation image in 'y'.
Definition: itkBasicImageFeaturesImageFilter.h:325
OriginType m_Origin
The origin to use for oriented BIFs.
Definition: itkBasicImageFeaturesImageFilter.h:316
RealImagePointer m_S11
Second derivative in 'xy'.
Definition: itkBasicImageFeaturesImageFilter.h:334
float InternalRealType
Definition: itkBasicImageFeaturesImageFilter.h:96
void SetSingleThreadedExecution(void)
For debugging purposes, set single threaded execution.
Definition: itkBasicImageFeaturesImageFilter.h:227
unsigned int m_NumberOfOrientations
Definition: itkBasicImageFeaturesImageFilter.h:299
2D image filter class to compute basic image features (BIFs) on an image.
Definition: itkBasicImageFeaturesImageFilter.h:42
RealImagePointer m_S20
Second derivative in 'xx'.
Definition: itkBasicImageFeaturesImageFilter.h:335
DerivativeFilterTypeY::OrderEnumType DerivativeFilterOrderEnumTypeY
Definition: itkBasicImageFeaturesImageFilter.h:110
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
GLclampd n
Definition: glew.h:6789
MaskFilterType::Pointer MaskFilterPointer
Definition: itkBasicImageFeaturesImageFilter.h:89
RealType flipVertically
Coefficient to flip the orientation vertically.
Definition: itkBasicImageFeaturesImageFilter.h:321
InternalRealType m_Epsilon
Noise suppression parameter.
Definition: itkBasicImageFeaturesImageFilter.h:308
InputImageType::Pointer InputImagePointer
Definition: itkBasicImageFeaturesImageFilter.h:64
Image< InternalRealType, TInputImage::ImageDimension > RealImageType
Definition: itkBasicImageFeaturesImageFilter.h:98
LewisGriffinRecursiveGaussianImageFilter< InputImageType, RealImageType > DerivativeFilterTypeX
Definition: itkBasicImageFeaturesImageFilter.h:104
SmartPointer< Self > Pointer
Definition: itkLewisGriffinRecursiveGaussianImageFilter.h:37
void DebugOff()
Set debugging output off.
Definition: itkBasicImageFeaturesImageFilter.h:121
NumericTraits< InputImagePixelType >::RealType RealType
Definition: itkBasicImageFeaturesImageFilter.h:71
bool m_FlagOriginSet
Flag indicating whether the orgin has been set.
Definition: itkBasicImageFeaturesImageFilter.h:314
InputImageType::SpacingType InputImageSpacingType
Definition: itkBasicImageFeaturesImageFilter.h:68
RealImagePointer m_ResponseLightBlob
LightBlob region response.
Definition: itkBasicImageFeaturesImageFilter.h:341
InputImageType::RegionType InputImageRegionType
Definition: itkBasicImageFeaturesImageFilter.h:66
OrderEnumType
Definition: itkLewisGriffinRecursiveGaussianImageFilter.h:99
RealImagePointer m_ResponseLightLine
LightLine region response.
Definition: itkBasicImageFeaturesImageFilter.h:343
GLsizei const GLcharARB ** string
Definition: glew.h:5194
void SetOrigin(OriginType o)
Set the origin for oriented BIFs.
Definition: itkBasicImageFeaturesImageFilter.h:162
DerivativeFilterTypeY::Pointer DerivativeFilterPointerY
Definition: itkBasicImageFeaturesImageFilter.h:114
RealImagePointer m_ResponseFlat
Flat region response.
Definition: itkBasicImageFeaturesImageFilter.h:338
void SecondOrderOnly(void)
Ignore slopes, so classify only as second order.
Definition: itkBasicImageFeaturesImageFilter.h:149
SmartPointer< Self > Pointer
Definition: itkBasicImageFeaturesImageFilter.h:49
bool m_NormalizeAcrossScale
Definition: itkBasicImageFeaturesImageFilter.h:302
RealImagePointer m_ResponseDarkBlob
DarkBlob region response.
Definition: itkBasicImageFeaturesImageFilter.h:340
void SetFlipVertically(void)
Set the coefficient to flip the orientation vertically.
Definition: itkBasicImageFeaturesImageFilter.h:173