]> Creatis software - clitk.git/blobdiff - tools/clitkImageGradientMagnitudeGenericFilter.txx
cosmetic for .ggo
[clitk.git] / tools / clitkImageGradientMagnitudeGenericFilter.txx
index 3167a1ef79293b0a729f98a7d090e94b3c66c851..7aecf99025de8963c95ffbedae28c342f999becd 100644 (file)
@@ -29,7 +29,8 @@
 
 // itk include
 #include "itkGradientMagnitudeImageFilter.h"
-#include "itkLabelStatisticsImageFilter.h""
+#include "itkGradientMagnitudeRecursiveGaussianImageFilter.h"
+#include "itkLabelStatisticsImageFilter.h"
 #include "itkMaskImageFilter.h"
 #include "itkMaskNegatedImageFilter.h"
 #include <clitkCommon.h>
@@ -101,7 +102,7 @@ namespace clitk
         // Reading input
         typename InputImageType::Pointer input = this->template GetInput<InputImageType>(0);
 
-        typename MaskImageType::Pointer mask = NULL;
+        typename MaskImageType::Pointer mask = ITK_NULLPTR;
         if(mArgsInfo.mask_given) {
             mask = this->template GetInput<MaskImageType>(1);
         }
@@ -127,13 +128,25 @@ namespace clitk
         IteratorOutputType ito = IteratorOutputType(outputImage, outputImage->GetLargestPossibleRegion());
 
         // Filter
+        typename OutputImageType::Pointer outputGradientFilter;
+        if (mArgsInfo.gaussian_filter_flag == 0) {
         typedef itk::GradientMagnitudeImageFilter<InputImageType, OutputImageType> GradientMagnitudeImageFilterType;
         typename GradientMagnitudeImageFilterType::Pointer gradientFilter=GradientMagnitudeImageFilterType::New();
         gradientFilter->SetInput(input);
         gradientFilter->Update();
+        outputGradientFilter = gradientFilter->GetOutput();
+        }
+        else {
+            typedef itk::GradientMagnitudeRecursiveGaussianImageFilter<InputImageType, OutputImageType> GradientMagnitudeImageFilterType;
+            typename GradientMagnitudeImageFilterType::Pointer gradientFilter=GradientMagnitudeImageFilterType::New();
+            gradientFilter->SetInput(input);
+            gradientFilter->Update();
+            //std::cout<<"sigma value="<<gradientFilter->GetSigma()<<std::endl;
+            outputGradientFilter = gradientFilter->GetOutput();
+        }
         // Set iterator
         typedef itk::ImageRegionIterator<OutputImageType> IteratorType;
-        IteratorType it(gradientFilter->GetOutput(), gradientFilter->GetOutput()->GetLargestPossibleRegion());
+        IteratorType it(outputGradientFilter, outputGradientFilter->GetLargestPossibleRegion());
 
         // Set mask iterator
         typedef itk::ImageRegionIterator<MaskImageType> IteratorMaskType;
@@ -141,12 +154,12 @@ namespace clitk
 
         //typedef itk::MinimumMaximumImageCalculator <OutputImageType> ImageCalculatorFilterType;
         //typename ImageCalculatorFilterType::Pointer imageCalculatorFilter = ImageCalculatorFilterType::New();
-        //imageCalculatorFilter->SetImage(gradientFilter->GetOutput());
+        //imageCalculatorFilter->SetImage(outputGradientFilter);
         //imageCalculatorFilter->Compute();
         typedef itk::LabelStatisticsImageFilter< OutputImageType, MaskImageType > LabelStatisticsImageFilterType;
         typename LabelStatisticsImageFilterType::Pointer labelStatisticsImageFilter = LabelStatisticsImageFilterType::New();
         labelStatisticsImageFilter->SetLabelInput( mask );
-        labelStatisticsImageFilter->SetInput(gradientFilter->GetOutput());
+        labelStatisticsImageFilter->SetInput(outputGradientFilter);
         labelStatisticsImageFilter->Update();
 
         //std::cout << "Number of labels: " << labelStatisticsImageFilter->GetNumberOfLabels() << std::endl;
@@ -172,7 +185,7 @@ namespace clitk
             ++itm;
         }
 
-        //typename OutputImageType::Pointer outputImage = gradientFilter->GetOutput();
+        //typename OutputImageType::Pointer outputImage = outputGradientFilter;
         this->template SetNextOutput<OutputImageType>(outputImage);
     }
     //--------------------------------------------------------------------