]> Creatis software - clitk.git/blobdiff - segmentation/clitkExtractBonesGenericFilter.txx
Use vvImageReader and vvImageWriter instead of static cast to short.
[clitk.git] / segmentation / clitkExtractBonesGenericFilter.txx
index 58f00f83f047f4fb69465f6ed3d1ac515c7ddc55..9c998936519602cdef56ce0a98fbf786a13524e0 100644 (file)
@@ -58,6 +58,50 @@ void clitk::ExtractBonesGenericFilter<ArgsInfoType>::SetArgsInfo(const ArgsInfoT
 //--------------------------------------------------------------------
 
 
+//--------------------------------------------------------------------
+template<class ArgsInfoType>
+template<class FilterType>
+void clitk::ExtractBonesGenericFilter<ArgsInfoType>::
+SetOptionsFromArgsInfoToFilter(FilterType * f) 
+{
+  f->SetVerboseOptionFlag(mArgsInfo.verboseOption_flag);
+  f->SetVerboseStepFlag(mArgsInfo.verboseStep_flag);
+  f->SetWriteStepFlag(mArgsInfo.writeStep_flag);
+  f->SetVerboseWarningFlag(!mArgsInfo.verboseWarningOff_flag);
+  f->SetVerboseMemoryFlag(mArgsInfo.verboseMemory_flag);
+
+  if (mArgsInfo.afdb_given)
+    f->SetAFDBFilename(mArgsInfo.afdb_arg);
+
+  f->SetOutputBonesFilename(mArgsInfo.output_arg);
+
+  f->SetInitialSmoothing(mArgsInfo.smooth_flag);
+  f->SetSmoothingConductanceParameter(mArgsInfo.cond_arg);
+  f->SetSmoothingNumberOfIterations(mArgsInfo.iter_arg);
+  f->SetSmoothingTimeStep(mArgsInfo.time_arg);
+  f->SetSmoothingUseImageSpacing(mArgsInfo.spacing_flag);
+
+  f->SetMinimalComponentSize(mArgsInfo.minSize_arg);
+  f->SetUpperThreshold1(mArgsInfo.upper1_arg);
+  f->SetLowerThreshold1(mArgsInfo.lower1_arg);
+  f->SetFullConnectivity(mArgsInfo.full_flag);
+
+  f->SetUpperThreshold2(mArgsInfo.upper2_arg);
+  f->SetLowerThreshold2(mArgsInfo.lower2_arg);
+
+  typename FilterType::InputImageSizeType s;
+  if (mArgsInfo.radius2_given) {
+    ConvertOptionMacro(mArgsInfo.radius2, s, 3, false);
+    f->SetRadius2(s);
+  }
+
+  f->SetSampleRate2(mArgsInfo.sampleRate2_arg);
+  f->SetAutoCrop(!mArgsInfo.noAutoCrop_flag);
+  f->SetFillHoles(!mArgsInfo.doNotFillHoles_flag);
+}
+//--------------------------------------------------------------------
+
+
 //--------------------------------------------------------------------
 // Update with the number of dimensions and the pixeltype
 //--------------------------------------------------------------------
@@ -66,32 +110,25 @@ template<class ImageType>
 void clitk::ExtractBonesGenericFilter<ArgsInfoType>::UpdateWithInputImageType() 
 { 
   // Mask & output image type
-  typedef itk::Image<uchar, ImageType::ImageDimension> OutputImageType;
+  typedef itk::Image<uchar, ImageType::ImageDimension> MaskImageType;
 
   // Reading input
   typename ImageType::Pointer input = this->template GetInput<ImageType>(0);
 
   // Create filter
-  typedef clitk::ExtractBonesFilter<ImageType, OutputImageType> FilterType;
+  typedef clitk::ExtractBonesFilter<ImageType> FilterType;
   typename FilterType::Pointer filter = FilterType::New();
     
   // Set global Options 
-  filter->SetArgsInfo(mArgsInfo);
   filter->SetInput(input);
+  SetOptionsFromArgsInfoToFilter<FilterType>(filter);
 
   // Go !
   filter->Update();
   
-  // Check if error
-  if (filter->HasError()) {
-    SetLastError(filter->GetLastError());
-    // No output
-    return;
-  }
-
   // Write/Save results
-  typename OutputImageType::Pointer output = filter->GetOutput();
-  this->template SetNextOutput<OutputImageType>(output); 
+  typename MaskImageType::Pointer output = filter->GetOutput();
+  this->template SetNextOutput<MaskImageType>(output); 
 }
 //--------------------------------------------------------------------