ANIMA  4.0
animaGcStremMsLesionsSegmentationFilter.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "animaTLinksFilter.h"
4 #include "animaGraphCutFilter.h"
8 #include "animaComputeSolution.h"
9 
10 #include <itkMaximumImageFilter.h>
11 #include <itkMinimumImageFilter.h>
12 #include <itkRelabelComponentImageFilter.h>
13 #include <itkRescaleIntensityImageFilter.h>
14 #include <itkImageToImageFilter.h>
15 #include <itkBinaryThresholdImageFilter.h>
16 #include <itkIntensityWindowingImageFilter.h>
17 #include <itkMaskImageFilter.h>
18 
20 {
21  strem = 0,
25 };
26 
28 {
29  Atlas = 0,
32 };
33 
34 namespace anima
35 {
36 
70 template <typename TInputImage>
72  public itk::ImageToImageFilter< TInputImage, itk::Image <unsigned char, 3> >
73 {
74 public:
77  typedef itk::Image <unsigned char, 3> TOutputImage;
78  typedef itk::ImageToImageFilter< TInputImage, TOutputImage > Superclass;
79  typedef itk::SmartPointer<Self> Pointer;
80  typedef itk::SmartPointer<const Self> ConstPointer;
81 
83  itkNewMacro(Self)
84 
85 
86  itkTypeMacro(GcStremMsLesionsSegmentationFilter, ImageToImageFilter)
87 
88 
89  typedef TInputImage InputImageType;
90  typedef itk::ImageRegionConstIterator <InputImageType> ImageIteratorTypeConstInput;
91 
93  typedef TOutputImage OutputImageType;
94  typedef typename OutputImageType::Pointer OutputImagePointer;
95  typedef typename itk::ImageRegionIterator< OutputImageType > OutputIteratorType;
96  typedef typename OutputImageType::PixelType OutputPixelType;
97 
98  typedef unsigned char PixelTypeUC;
99  typedef itk::Image <PixelTypeUC,3> ImageTypeUC;
100  typedef itk::ImageRegionIterator <ImageTypeUC> ImageIteratorTypeUC;
101  typedef itk::ImageRegionConstIterator <ImageTypeUC> ImageIteratorTypeConstUC;
102 
103  typedef double PixelTypeD;
104  typedef itk::Image <PixelTypeD,3> ImageTypeD;
105  typedef itk::ImageRegionIterator <ImageTypeD> ImageIteratorTypeD;
106 
107  typedef int PixelTypeInt;
108  typedef itk::Image <PixelTypeInt,3> ImageTypeInt;
109  typedef itk::ImageRegionIterator <ImageTypeInt> ImageIteratorTypeInt;
110 
111  typedef itk::VariableLengthVector<double> MeasurementVectorType;
112  typedef itk::Statistics::GaussianMembershipFunction< MeasurementVectorType > GaussianFunctionType;
113 
115  typedef anima::GraphCutFilter< TInputImage, ImageTypeUC > GraphCutFilterType;
117  typedef anima::RemoveTouchingBorderFilter<ImageTypeUC,ImageTypeUC,ImageTypeUC> RemoveTouchingBorderFilterType;
118  typedef anima::TLinksFilter<TInputImage,ImageTypeD> TLinksFilterType;
119  typedef anima::ComputeMahalanobisImagesFilter<ImageTypeUC,ImageTypeUC,ImageTypeD> ComputeMahalanobisImagesFilterType;
120  typedef anima::ComputeSolution<ImageTypeUC,ImageTypeUC, ImageTypeD> ComputeSolutionType;
121 
122  typedef itk::RescaleIntensityImageFilter<TInputImage,ImageTypeUC> RescaleFilterType;
123  typedef itk::MaximumImageFilter<ImageTypeD,ImageTypeD,ImageTypeD> MaximumFilterType;
124  typedef itk::MinimumImageFilter<ImageTypeD,ImageTypeD,ImageTypeD> MinimumFilterTypeF;
125  typedef itk::MinimumImageFilter<ImageTypeUC,ImageTypeUC,ImageTypeUC> MinimumFilterTypeUC;
126  typedef itk::BinaryThresholdImageFilter <ImageTypeD, ImageTypeUC> BinaryThresholdImageFilterType_F_UC;
127  typedef itk::BinaryThresholdImageFilter <ImageTypeUC, ImageTypeUC> BinaryThresholdImageFilterType_UC_UC;
128  typedef itk::IntensityWindowingImageFilter <ImageTypeUC, ImageTypeD> IntensityWindowingImageFilterType;
129  typedef itk::MaskImageFilter< ImageTypeUC, ImageTypeUC > MaskFilterType_UC_UC;
130  typedef itk::MaskImageFilter< ImageTypeD, ImageTypeUC > MaskFilterType_F_UC;
131  typedef itk::ConnectedComponentImageFilter <ImageTypeUC,ImageTypeInt> ConnectedComponentType;
132  typedef itk::RelabelComponentImageFilter< ImageTypeInt, ImageTypeInt > RelabelComponentType;
133 
134  void GenerateData() ITK_OVERRIDE;
135  void WriteOutputs();
136 
137  void CheckInputImages();
138  void RescaleImages();
140  void StremThreshold();
141  void CreateFuzzyRuleImage();
142  void GraphCut();
143  void ApplyHeuristicRules();
144  void ComputeNABT();
145 
149  void SetInputImageT1(const InputImageType* image);
150  void SetInputImageT2(const InputImageType* image);
151  void SetInputImageDP(const InputImageType* image);
152  void SetInputImageFLAIR(const InputImageType* image);
153  void SetInputImageT1Gd(const InputImageType* image);
154 
155  void SetInputCSFAtlas(const ImageTypeD* image);
156  void SetInputGMAtlas(const ImageTypeD* image);
157  void SetInputWMAtlas(const ImageTypeD* image);
158  void SetInputLesionPrior(const ImageTypeD* image);
159 
160  void SetMask(const TInputImage* MaskImage);
161 
162  void SetSourcesMask(const ImageTypeUC* MaskImage);
163  void SetSinksMask(const ImageTypeUC* MaskImage);
164 
165  TOutputImage* GetOutputWholeSeg();
166  TOutputImage* GetOutputLesions();
167  TOutputImage* GetOutputCSF();
168  TOutputImage* GetOutputGM();
169  TOutputImage* GetOutputWM();
170  TOutputImage* GetOutputStrem();
171  TOutputImage* GetOutputStremCSF();
172  TOutputImage* GetOutputStremGM();
173  TOutputImage* GetOutputStremWM();
174  TOutputImage* GetOutputIntensityImage1();
175  TOutputImage* GetOutputIntensityImage2();
176  itk::Image <double,3>* GetOutputFuzzyObjectImage();
177  itk::Image <double,3>* GetOutputMahaCSFImage();
178  itk::Image <double,3>* GetOutputMahaGMImage();
179  itk::Image <double,3>* GetOutputMahaWMImage();
180  itk::Image <double,3>* GetOutputMahaMinimumImage();
181  itk::Image <double,3>* GetOutputMahaMaximumImage();
182  TOutputImage* GetOutputGraphCut();
183 
184  void SetTol(const double tol)
185  {
186  this->SetCoordinateTolerance(tol);
187  this->SetDirectionTolerance(tol);
188  m_Tol = tol;
189  }
190 
194  itkSetMacro(InitMethodType, unsigned int)
195  itkGetMacro(InitMethodType, unsigned int)
196 
197  itkSetMacro(RejRatioHierar, double)
198  itkGetMacro(RejRatioHierar, double)
199 
200  itkSetMacro(MinDistance, double)
201  itkGetMacro(MinDistance, double)
202 
203  itkSetMacro(EmIter, int)
204  itkGetMacro(EmIter, int)
205 
206  itkSetMacro(RejRatio, double)
207  itkGetMacro(RejRatio, double)
208 
209  itkSetMacro(EmIter_concentration, int)
210  itkGetMacro(EmIter_concentration, int)
211 
212  itkSetMacro(EM_before_concentration, bool)
213  itkGetMacro(EM_before_concentration, bool)
214 
215  itkSetMacro(MahalanobisThCSF, double)
216  itkGetMacro(MahalanobisThCSF, double)
217 
218  itkSetMacro(MahalanobisThGM, double)
219  itkGetMacro(MahalanobisThGM, double)
220 
221  itkSetMacro(MahalanobisThWM, double)
222  itkGetMacro(MahalanobisThWM, double)
223 
224  itkSetMacro(FuzzyRuleMin, double)
225  itkGetMacro(FuzzyRuleMin, double)
226 
227  itkSetMacro(FuzzyRuleMax, double)
228  itkGetMacro(FuzzyRuleMax, double)
229 
230  itkSetMacro(UseT2, bool)
231  itkGetMacro(UseT2, bool)
232 
233  itkSetMacro(UseDP, bool)
234  itkGetMacro(UseDP, bool)
235 
236  itkSetMacro(UseFLAIR, bool)
237  itkGetMacro(UseFLAIR, bool)
238 
239  itkSetMacro(Alpha, double)
240  itkGetMacro(Alpha, double)
241 
242  itkSetMacro(MultiVarSources, double)
243  itkGetMacro(MultiVarSources, double)
244 
245  itkSetMacro(MultiVarSinks, double)
246  itkGetMacro(MultiVarSinks, double)
247 
248  itkSetMacro(LesionPriorProportion, double)
249  itkGetMacro(LesionPriorProportion, double)
250 
251  itkSetMacro(Sigma, double)
252  itkGetMacro(Sigma, double)
253 
254  itkSetMacro(UseSpecGrad, bool)
255  itkGetMacro(UseSpecGrad, bool)
256 
257  itkSetMacro(MinLesionsSize, double)
258  itkGetMacro(MinLesionsSize, double)
259 
260  itkSetMacro(RemoveBorder, bool)
261  itkGetMacro(RemoveBorder, bool)
262 
263  itkSetMacro(IntensityT2Factor, double)
264  itkGetMacro(IntensityT2Factor, double)
265 
266  itkSetMacro(IntensityDPFactor, double)
267  itkGetMacro(IntensityDPFactor, double)
268 
269  itkSetMacro(IntensityFLAIRFactor, double)
270  itkGetMacro(IntensityFLAIRFactor, double)
271 
272  itkSetMacro(RatioContourWM, double)
273  itkGetMacro(RatioContourWM, double)
274 
275  itkSetMacro(Verbose, bool)
276  itkGetMacro(Verbose, bool)
277 
278  itkSetMacro(ThresoldWMmap, double)
279  itkGetMacro(ThresoldWMmap, double)
280 
281  LesionSegmentationType GetLesionSegmentationType() {return m_LesionSegmentationType;}
282  void SetLesionSegmentationType(LesionSegmentationType type) {m_LesionSegmentationType=type;}
283 
284  std::string GetOutputLesionFile() {return m_OutputLesionFilename;}
285  void SetOutputLesionFilename(std::string fn) {m_OutputLesionFilename=fn;}
286 
287  std::string GetOutputCSFFilename() {return m_OutputCSFFilename;}
288  void SetOutputCSFFilename(std::string fn) {m_OutputCSFFilename=fn;}
289 
290  std::string GetOutputGMFilename() {return m_OutputGMFilename;}
291  void SetOutputGMFilename(std::string fn) {m_OutputGMFilename=fn;}
292 
293  std::string GetOutputWMFilename() {return m_OutputWMFilename;}
294  void SetOutputWMFilename(std::string fn) {m_OutputWMFilename=fn;}
295 
296  std::string GetOutputWholeFilename() {return m_OutputWholeFilename;}
297  void SetOutputWholeFilename(std::string fn) {m_OutputWholeFilename=fn;}
298 
299  std::string GetOutputGCFilename() {return m_OutputGCFilename;}
300  void SetOutputGCFilename(std::string fn) {m_OutputGCFilename=fn;}
301 
302  std::string GetOutputStremFilename() {return m_OutputStremFilename;}
303  void SetOutputStremFilename(std::string fn) {m_OutputStremFilename=fn;}
304 
305  std::string GetOutputStremCSFFilename() {return m_OutputStremCSFFilename;}
306  void SetOutputStremCSFFilename(std::string fn) {m_OutputStremCSFFilename=fn;}
307 
308  std::string GetOutputStremGMFilename() {return m_OutputStremGMFilename;}
309  void SetOutputStremGMFilename(std::string fn) {m_OutputStremGMFilename=fn;}
310 
311  std::string GetOutputStremWMFilename() {return m_OutputStremWMFilename;}
312  void SetOutputStremWMFilename(std::string fn) {m_OutputStremWMFilename=fn;}
313 
314  std::string GetFuzzyOutputObjectFilename() {return m_OutputFuzzyObjectFilename;}
315  void SetOutputFuzzyObjectFilename(std::string fn) {m_OutputFuzzyObjectFilename=fn;}
316 
317  std::string GetOutputMahaCSFFilename() {return m_OutputMahaCSFFilename;}
318  void SetOutputMahaCSFFilename(std::string fn) {m_OutputMahaCSFFilename=fn;}
319 
320  std::string GetOutputMahaGMFilename() {return m_OutputMahaGMFilename;}
321  void SetOutputMahaGMFilename(std::string fn) {m_OutputMahaGMFilename=fn;}
322 
323  std::string GetOutputMahaWMFilename() {return m_OutputMahaWMFilename;}
324  void SetOutputMahaWMFilename(std::string fn) {m_OutputMahaWMFilename=fn;}
325 
326  std::string GetOutputMahaMaximumFilename() {return m_OutputMahaMaximumFilename;}
327  void SetOutputMahaMaximumFilename(std::string fn) {m_OutputMahaMaximumFilename=fn;}
328 
329  std::string GetOutputMahaMinimumFilename() {return m_OutputMahaMinimumFilename;}
330  void SetOutputMahaMinimumFilename(std::string fn) {m_OutputMahaMinimumFilename=fn;}
331 
332  std::string GetOutputIntensityImage1Filename() {return m_OutputIntensityImage1Filename;}
333  void SetOutputIntensityImage1Filename(std::string fn) {m_OutputIntensityImage1Filename=fn;}
334 
335  std::string GetOutputIntensityImage2Filename() {return m_OutputIntensityImage2Filename;}
336  void SetOutputIntensityImage2Filename(std::string fn) {m_OutputIntensityImage2Filename=fn;}
337 
338  void SetGaussianModel(std::vector<GaussianFunctionType::Pointer> solution) {m_GaussianModel=solution;}
339  std::vector<GaussianFunctionType::Pointer> GetSolution() {return m_GaussianModel;}
340 
341  void SetSolutionReadFilename(std::string fn) {m_SolutionReadFilename=fn;}
342  void SetSolutionWriteFilename(std::string fn) {m_SolutionWriteFilename=fn;}
343 
344  std::string GetMatrixGradFilename() {return m_MatrixGradFilename;}
345  void SetMatrixGradFilename(std::string fn) {m_MatrixGradFilename=fn;}
346 
347 protected:
350  MaximumFilterType::Pointer m_FilterMaxSources;
351  MaximumFilterType::Pointer m_FilterMaxSinks;
353 
355  {
356  this->SetNumberOfRequiredOutputs(18);
357  this->SetNumberOfRequiredInputs(1);
358 
359  this->SetNthOutput( 0, this->MakeOutput(0) );
360  this->SetNthOutput( 1, this->MakeOutput(1) );
361  this->SetNthOutput( 2, this->MakeOutput(2) );
362  this->SetNthOutput( 3, this->MakeOutput(3) );
363  this->SetNthOutput( 4, this->MakeOutput(4) );
364 
365  this->SetNthOutput( 5, this->MakeOutput(5) );
366  this->SetNthOutput( 6, this->MakeOutput(6) );
367  this->SetNthOutput( 7, this->MakeOutput(7) );
368  this->SetNthOutput( 8, this->MakeOutput(8) );
369  this->SetNthOutput( 9, this->MakeOutput(9) );
370 
371  this->SetNthOutput( 10, this->MakeOutput(10) );
372  this->SetNthOutput( 11, this->MakeOutput(11) );
373  this->SetNthOutput( 12, this->MakeOutput(12) );
374  this->SetNthOutput( 13, this->MakeOutput(13) );
375  this->SetNthOutput( 14, this->MakeOutput(14) );
376 
377  this->SetNthOutput( 15, this->MakeOutput(15) );
378  this->SetNthOutput( 16, this->MakeOutput(16) );
379  this->SetNthOutput( 17, this->MakeOutput(17) );
380 
381  m_GraphCutFilter = GraphCutFilterType::New();
382  m_TLinksFilter = TLinksFilterType::New();
383  m_FilterMaxSources = MaximumFilterType::New();
384  m_FilterMaxSinks = MaximumFilterType::New();
385  m_MahalanobisFilter = ComputeMahalanobisImagesFilterType::New();
386 
387  m_InitMethodType = 1;
388  m_RejRatioHierar = 0.01;
389 
390  m_EmIter = 100;
391  m_MinDistance = 0.0001;
392 
393  m_RejRatio = 0.20;
394  m_EmIter_concentration = 100;
395  m_EM_before_concentration = false;
396 
397  m_MahalanobisThCSF = 0.5;
398  m_MahalanobisThGM = 0.5;
399  m_MahalanobisThWM = 0.5;
400 
401  m_FuzzyRuleMin = 1;
402  m_FuzzyRuleMax = 2;
403 
404  m_Alpha = 10;
405  m_UseSpecGrad = true;
406  m_Sigma = 0.6;
407  m_MultiVarSources = 1;
408  m_MultiVarSinks = 1;
409  m_LesionPriorProportion = 0.23;
410 
411  m_MinLesionsSize = 0;
412  m_RemoveBorder = false;
413  m_IntensityT2Factor = 0;
414  m_IntensityDPFactor = 0;
415  m_IntensityFLAIRFactor = 0;
416  m_RatioContourWM = 0;
417 
418  m_LabelCSF = 1;
419  m_LabelGM = 2;
420  m_LabelWM = 3;
421  m_LabelLesions = 4;
422 
423  m_Verbose = false;
424 
425  m_UseT2 = false;
426  m_UseDP = false;
427  m_UseFLAIR = false;
428 
429  m_NbInputs = 0;
430  m_Modalities = 0;
431  m_MaxNumberOfInputs = 14;
432 
433  m_LesionSegmentationType = strem;
434 
435  m_ThresoldWMmap = 0.2;
436  m_IndexWMinModel = 2;
437 
438  m_Tol = 0.0001;
439 
440  m_IndexImageT1 = m_MaxNumberOfInputs;
441  m_IndexImageT2 = m_MaxNumberOfInputs;
442  m_IndexImageDP = m_MaxNumberOfInputs;
443  m_IndexImageFLAIR = m_MaxNumberOfInputs;
444  m_IndexImageT1Gd = m_MaxNumberOfInputs;
445 
446  m_IndexMask = m_MaxNumberOfInputs;
447  m_IndexAtlasCSF = m_MaxNumberOfInputs;
448  m_IndexAtlasGM = m_MaxNumberOfInputs;
449  m_IndexAtlasWM = m_MaxNumberOfInputs;
450  m_IndexLesionPrior = m_MaxNumberOfInputs;
451  m_IndexSourcesProba = m_MaxNumberOfInputs;
452  m_IndexSinksProba = m_MaxNumberOfInputs;
453  m_IndexSourcesMask = m_MaxNumberOfInputs;
454  m_IndexSinksMask = m_MaxNumberOfInputs;
455 
456  this->SetNumberOfWorkUnits(itk::MultiThreaderBase::GetGlobalDefaultNumberOfThreads());
457  }
458 
460  {
461  }
462 
464  itk::DataObject::Pointer MakeOutput(unsigned int idx);
465 
466  typename InputImageType::ConstPointer GetInputImageT1();
467  typename InputImageType::ConstPointer GetInputImageT2();
468  typename InputImageType::ConstPointer GetInputImageDP();
469  typename InputImageType::ConstPointer GetInputImageFLAIR();
470  typename InputImageType::ConstPointer GetInputImageT1Gd();
471 
472  typename InputImageType::ConstPointer GetMask();
473 
474  ImageTypeD::ConstPointer GetInputCSFAtlas();
475  ImageTypeD::ConstPointer GetInputGMAtlas();
476  ImageTypeD::ConstPointer GetInputWMAtlas();
477  ImageTypeD::ConstPointer GetInputLesionPrior();
478 
479  ImageTypeUC::ConstPointer GetSourcesMask();
480  ImageTypeUC::ConstPointer GetSinksMask();
481 
482  void EmitProgress(int prog);
483 
484  static void ManageProgress( itk::Object* caller, const itk::EventObject& event, void* clientData );
485 
486 private:
487  ITK_DISALLOW_COPY_AND_ASSIGN(GcStremMsLesionsSegmentationFilter);
488 
492  bool m_Verbose;
493  double m_Tol;
495  unsigned char m_LabelLesions;
496  unsigned char m_LabelCSF;
497  unsigned char m_LabelGM;
498  unsigned char m_LabelWM;
499 
500  unsigned int m_NbInputs, m_MaxNumberOfInputs, m_Modalities;
501 
502  unsigned int m_IndexImageT1, m_IndexImageT2, m_IndexImageDP, m_IndexImageFLAIR, m_IndexImageT1Gd, m_IndexMask;
503  unsigned int m_IndexAtlasCSF, m_IndexAtlasGM, m_IndexAtlasWM, m_IndexLesionPrior;
504  unsigned int m_IndexSourcesProba, m_IndexSinksProba, m_IndexSourcesMask, m_IndexSinksMask;
505 
506  LesionSegmentationType m_LesionSegmentationType;
507 
511  bool m_UseT2;
512  bool m_UseDP;
513  bool m_UseFLAIR;
514 
515  unsigned int m_InitMethodType;
516  double m_RejRatioHierar;
518  int m_EmIter;
519  double m_MinDistance;
521  double m_RejRatio;
522  int m_EmIter_concentration;
523  bool m_EM_before_concentration;
525  double m_MahalanobisThCSF;
526  double m_MahalanobisThGM;
527  double m_MahalanobisThWM;
529  double m_FuzzyRuleMin;
530  double m_FuzzyRuleMax;
532  std::vector<double> m_Alphas;
533  std::vector<GaussianFunctionType::Pointer> m_GaussianModel;
534 
538  bool m_UseSpecGrad;
539  double m_Sigma;
540  std::vector<double> m_Matrix;
541  std::string m_MatrixGradFilename;
542  double m_Alpha;
543  double m_MultiVarSources;
544  double m_MultiVarSinks;
545  double m_LesionPriorProportion;
550  double m_MinLesionsSize;
551  bool m_RemoveBorder;
553  double m_IntensityT2Factor;
554  double m_IntensityDPFactor;
555  double m_IntensityFLAIRFactor;
557  double m_HyperIntensityThreshold1;
558  double m_HyperIntensityThreshold2;
559  unsigned int m_IndexWMinModel;
560 
561  double m_RatioContourWM;
562  double m_ThresoldWMmap;
563 
567  std::string m_SolutionReadFilename;
568  std::string m_SolutionWriteFilename;
569 
570  std::string m_OutputLesionFilename;
571  std::string m_OutputCSFFilename;
572  std::string m_OutputGMFilename;
573  std::string m_OutputWMFilename;
574  std::string m_OutputWholeFilename;
575 
576  std::string m_OutputGCFilename;
577  std::string m_OutputStremFilename;
578  std::string m_OutputStremCSFFilename;
579  std::string m_OutputStremGMFilename;
580  std::string m_OutputStremWMFilename;
581 
582  std::string m_OutputFuzzyObjectFilename;
583 
584  std::string m_OutputMahaCSFFilename;
585  std::string m_OutputMahaGMFilename;
586  std::string m_OutputMahaWMFilename;
587  std::string m_OutputMahaMaximumFilename;
588  std::string m_OutputMahaMinimumFilename;
589 
590  std::string m_OutputIntensityImage1Filename;
591  std::string m_OutputIntensityImage2Filename;
592 
593  ImageTypeUC::Pointer m_InputImage_T1_UC;
594  ImageTypeUC::Pointer m_InputImage_1_UC;
595  ImageTypeUC::Pointer m_InputImage_2_UC;
596  ImageTypeUC::Pointer m_MaskUC;
597  ImageTypeUC::Pointer m_LesionsDetectionImage;
598  ImageTypeInt::Pointer m_LabeledLesions;
599  ImageTypeD::Pointer m_FuzzyObject;
600 };
601 
602 }
603 
itk::BinaryThresholdImageFilter< ImageTypeD, ImageTypeUC > BinaryThresholdImageFilterType_F_UC
Class removing lesions that are not sufficiently in the white matter. Intensity rules may not be enou...
itk::ImageRegionConstIterator< ImageTypeUC > ImageIteratorTypeConstUC
itk::BinaryThresholdImageFilter< ImageTypeUC, ImageTypeUC > BinaryThresholdImageFilterType_UC_UC
Class selecting the connected components touching a given mask border. In MRI, external CSF may conta...
itk::MaskImageFilter< ImageTypeD, ImageTypeUC > MaskFilterType_F_UC
Class computing the 3-class GMM respresenting the NABT, where each Gaussian represents one of the bra...
itk::Statistics::GaussianMembershipFunction< MeasurementVectorType > GaussianFunctionType
Class computing the probability maps that are used to create the t-links.
Compute the mahalanobis images from the NABT model.
itk::MinimumImageFilter< ImageTypeUC, ImageTypeUC, ImageTypeUC > MinimumFilterTypeUC
itk::RescaleIntensityImageFilter< TInputImage, ImageTypeUC > RescaleFilterType
itk::SmartPointer< Self > Pointer
std::vector< GaussianFunctionType::Pointer > GetSolution()
itk::ImageRegionIterator< OutputImageType > OutputIteratorType
static Pointer New()
itk::SmartPointer< Self > Pointer
itk::ImageRegionIterator< ImageTypeInt > ImageIteratorTypeInt
itk::MinimumImageFilter< ImageTypeD, ImageTypeD, ImageTypeD > MinimumFilterTypeF
itk::IntensityWindowingImageFilter< ImageTypeUC, ImageTypeD > IntensityWindowingImageFilterType
ComputeMahalanobisImagesFilterType::Pointer m_MahalanobisFilter
itk::ImageRegionConstIterator< InputImageType > ImageIteratorTypeConstInput
static void ManageProgress(itk::Object *caller, const itk::EventObject &event, void *clientData)
void SetGaussianModel(std::vector< GaussianFunctionType::Pointer > solution)
itk::MaximumImageFilter< ImageTypeD, ImageTypeD, ImageTypeD > MaximumFilterType
static Pointer New()
itk::MaskImageFilter< ImageTypeUC, ImageTypeUC > MaskFilterType_UC_UC
itk::RelabelComponentImageFilter< ImageTypeInt, ImageTypeInt > RelabelComponentType
itk::ConnectedComponentImageFilter< ImageTypeUC, ImageTypeInt > ConnectedComponentType
Class performing grah cut segmentation. First the sources and sinks probabilities maps are computed u...
itk::ImageToImageFilter< TInputImage, TOutputImage > Superclass