]> Creatis software - clitk.git/blobdiff - tools/clitkRelativePositionGenericFilter.txx
Set the inverse orientation flag after the addorientation
[clitk.git] / tools / clitkRelativePositionGenericFilter.txx
index 2e62b42957846569b3b66fbfb86a58b169ab0f4d..4114e55cfc1b8d1f238dfb42659ee7e47f2a8901 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to: 
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   This software is distributed WITHOUT ANY WARRANTY; without even
@@ -14,7 +14,7 @@
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-  ======================================================================-====*/
+  ===========================================================================**/
 
 #include "clitkImageCommon.h"
 
@@ -65,22 +65,29 @@ template<class FilterType>
 void clitk::RelativePositionGenericFilter<ArgsInfoType>::
 SetOptionsFromArgsInfoToFilter(FilterType * f) 
 {
-  f->SetVerboseOption(mArgsInfo.verbose_flag);
-  f->SetVerboseStep(mArgsInfo.verboseStep_flag);
-  f->SetWriteStep(mArgsInfo.writeStep_flag);
+  f->SetVerboseOptionFlag(mArgsInfo.verboseOptions_flag);
+  f->SetVerboseStepFlag(mArgsInfo.verboseStep_flag);
+  f->SetWriteStepFlag(mArgsInfo.writeStep_flag);
 
-  if (mArgsInfo.orientation_given) {
-    f->SetOrientationTypeString(mArgsInfo.orientation_arg);
+  // Must be set before AddOrientationTypeString
+  f->SetInverseOrientationFlag(mArgsInfo.inverse_flag);
+  
+  for(uint i=0; i<mArgsInfo.orientation_given; i++) {
+    f->AddOrientationTypeString(mArgsInfo.orientation_arg[i]);
   }
   
   if (mArgsInfo.spacing_given) {
-    f->ResampleBeforeRelativePositionFilterOn();
+    f->IntermediateSpacingFlagOn();
     f->SetIntermediateSpacing(mArgsInfo.spacing_arg);
   }
+  else {
+    f->IntermediateSpacingFlagOff();
+  }
 
   f->SetFuzzyThreshold(mArgsInfo.threshold_arg);
-  f->SetNotFlag(mArgsInfo.not_flag);
+  f->SetRemoveObjectFlag(!mArgsInfo.doNotRemoveObject_flag);
   f->SetAutoCropFlag(!mArgsInfo.noAutoCrop_flag);
+  f->SetCombineWithOrFlag(mArgsInfo.combineWithOr_flag);
 }
 
 //--------------------------------------------------------------------
@@ -107,7 +114,16 @@ UpdateWithInputImageType()
     filter->SetInput(input);
     filter->SetInputObject(object);
     SetOptionsFromArgsInfoToFilter<FilterType>(filter);
-    filter->SetDirection(mArgsInfo.direction_arg); // only for SliceBySliceRelativePositionFilter
+
+    // Set options only for SliceBySliceRelativePositionFilter
+    filter->SetDirection(mArgsInfo.direction_arg);
+    filter->SetUniqueConnectedComponentBySliceFlag(mArgsInfo.uniqueCCL_flag);
+    if (mArgsInfo.uniqueObjectCCL_flag) {
+      filter->UseTheLargestObjectCCLFlagOn();
+    }
+    else {
+      filter->UseTheLargestObjectCCLFlagOff();
+    }
     
     // Go !
     filter->Update();
@@ -127,8 +143,8 @@ UpdateWithInputImageType()
     // Set global Options 
     filter->SetInput(input);
     filter->SetInputObject(object);
-    filter->SetAngle1(mArgsInfo.angle1_arg);// only for this filter
-    filter->SetAngle2(mArgsInfo.angle2_arg);
+    if (mArgsInfo.angle1_given && mArgsInfo.angle2_given)
+      filter->AddAngles(mArgsInfo.angle1_arg, mArgsInfo.angle2_arg);
     SetOptionsFromArgsInfoToFilter<FilterType>(filter);
    
     // Go !