// itk include
#include "itkGradientMagnitudeImageFilter.h"
+#include "itkGradientMagnitudeRecursiveGaussianImageFilter.h"
#include "itkLabelStatisticsImageFilter.h"
#include "itkMaskImageFilter.h"
#include "itkMaskNegatedImageFilter.h"
// 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);
}
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;
//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;
++itm;
}
- //typename OutputImageType::Pointer outputImage = gradientFilter->GetOutput();
+ //typename OutputImageType::Pointer outputImage = outputGradientFilter;
this->template SetNextOutput<OutputImageType>(outputImage);
}
//--------------------------------------------------------------------