]> Creatis software - clitk.git/blobdiff - tools/clitkImageLaplacianGenericFilter.txx
Change header includion from .h to .cxx file
[clitk.git] / tools / clitkImageLaplacianGenericFilter.txx
index 2ffa43b246edcf43c3cbca279eef5c21889cea24..4ff1ef342f5855614946406c75c8fdb97a7cd5aa 100644 (file)
@@ -30,6 +30,7 @@
 // itk include
 #include "itkCastImageFilter.h"
 #include "itkLaplacianImageFilter.h"
+#include "itkLaplacianRecursiveGaussianImageFilter.h"
 #include "itkLabelStatisticsImageFilter.h"
 #include "itkMaskImageFilter.h"
 #include "itkMaskNegatedImageFilter.h"
@@ -101,7 +102,7 @@ ImageLaplacianGenericFilter<args_info_type>::UpdateWithInputImageType()
     castFilter->SetInput(input);
     castFilter->Update();
 
-    typename MaskImageType::Pointer mask = NULL;
+    typename MaskImageType::Pointer mask = ITK_NULLPTR;
     if(mArgsInfo.mask_given) {
         mask = this->template GetInput<MaskImageType>(1);
     }
@@ -127,13 +128,27 @@ ImageLaplacianGenericFilter<args_info_type>::UpdateWithInputImageType()
     IteratorOutputType ito = IteratorOutputType(outputImage, outputImage->GetLargestPossibleRegion());
 
     // Filter
-    typedef itk::LaplacianImageFilter<FloatImageType, FloatImageType> LaplacianImageFilterType;
-    typename LaplacianImageFilterType::Pointer laplacianFilter=LaplacianImageFilterType::New();
-    laplacianFilter->SetInput(castFilter->GetOutput());
-    laplacianFilter->Update();
+    typename FloatImageType::Pointer outputLaplacianFilter;
+    if (mArgsInfo.gaussian_filter_flag == 0) {
+        //std::cout<<"gaussian filter flag == 0"<<std::endl;
+        typedef itk::LaplacianImageFilter<FloatImageType, FloatImageType> LaplacianImageFilterType;
+        typename LaplacianImageFilterType::Pointer laplacianFilter=LaplacianImageFilterType::New();
+        laplacianFilter->SetInput(castFilter->GetOutput());
+        laplacianFilter->Update();
+        outputLaplacianFilter = laplacianFilter->GetOutput();
+    }
+    else {
+        //std::cout<<"gaussian filter flag == 1"<<std::endl;
+        typedef itk::LaplacianRecursiveGaussianImageFilter< FloatImageType, FloatImageType >  LaplacianImageFilterType;
+        typename LaplacianImageFilterType::Pointer laplacianFilter=LaplacianImageFilterType::New();
+        laplacianFilter->SetInput(castFilter->GetOutput());
+        laplacianFilter->Update();
+        //std::cout<<"sigma value="<<laplacianFilter->GetSigma()<<std::endl;
+        outputLaplacianFilter = laplacianFilter->GetOutput();
+    }
     // Set iterator
     typedef itk::ImageRegionIterator<FloatImageType> IteratorType;
-    IteratorType it(laplacianFilter->GetOutput(), laplacianFilter->GetOutput()->GetLargestPossibleRegion());
+    IteratorType it(outputLaplacianFilter, outputLaplacianFilter->GetLargestPossibleRegion());
 
     // Set mask iterator
     typedef itk::ImageRegionIterator<MaskImageType> IteratorMaskType;
@@ -146,7 +161,7 @@ ImageLaplacianGenericFilter<args_info_type>::UpdateWithInputImageType()
     typedef itk::LabelStatisticsImageFilter< FloatImageType, MaskImageType > LabelStatisticsImageFilterType;
     typename LabelStatisticsImageFilterType::Pointer labelStatisticsImageFilter = LabelStatisticsImageFilterType::New();
     labelStatisticsImageFilter->SetLabelInput( mask );
-    labelStatisticsImageFilter->SetInput(laplacianFilter->GetOutput());
+    labelStatisticsImageFilter->SetInput(outputLaplacianFilter);
     labelStatisticsImageFilter->Update();
 
     //std::cout << "Number of labels: " << labelStatisticsImageFilter->GetNumberOfLabels() << std::endl;