]> Creatis software - clitk.git/blobdiff - segmentation/clitkRelativePositionList.txx
Add "-h" in addition to "--help"
[clitk.git] / segmentation / clitkRelativePositionList.txx
index b3ea760064d2edb39176fad950983cbca3cf6b5a..39cc272cd1156253b4578efa45b30f1a0789d0b0 100644 (file)
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
   ======================================================================-====*/
 
+#include "clitkLabelImageOverlapMeasureFilter.h"
 
 //--------------------------------------------------------------------
 template <class TImageType>
 clitk::RelativePositionList<TImageType>::
 RelativePositionList() {
+  ComputeOverlapFlagOff();
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template <class TImageType>
+void
+clitk::RelativePositionList<TImageType>::
+SetReferenceImageForOverlapMeasure(ImagePointer ref) {
+  m_reference = ref;
+  ComputeOverlapFlagOn();
 }
 //--------------------------------------------------------------------
 
@@ -87,6 +100,8 @@ Read(std::string filename) {
       std::ofstream os;
       openFileForWriting(os, tmpfilename);
       os << text;
+      os << "input = nothing" << std::endl;
+      os << "output = nothing" << std::endl;
       os.close();
 
       // Create a struct to store options. I use two step to allow to
@@ -97,14 +112,11 @@ Read(std::string filename) {
       std::copy(tmpfilename.begin(), tmpfilename.end(), writable.begin());
       char ** argv = new char*[1];
       argv[0] = new char[1];
-      cmdline_parser_clitkRelativePosition2(1, argv, &args_info, 1, 1, 0);
-      args_info.input_given = 1;
-      args_info.input_arg = new char[1];
-      args_info.output_given = 1;
-      args_info.output_arg = new char[1];
-      cmdline_parser_clitkRelativePosition_configfile(&writable[0], &args_info, 0, 0, 1);
-      
-      // Store the args
+      struct cmdline_parser_clitkRelativePosition_params params;
+      params.override = 0;
+      params.initialize = 1;
+      params.check_required = 0;
+      cmdline_parser_clitkRelativePosition_configfile(&writable[0], &args_info, 1, 1, 1);
       mArgsInfoList.push_back(args_info);
       
       // Delete the temporary file
@@ -151,12 +163,13 @@ GenerateOutputInformation() {
     if (mArgsInfoList[i].orientation_given) text += std::string(mArgsInfoList[i].orientation_arg[0])+" ";
     else text = text+"("+toString(mArgsInfoList[i].angle1_arg)+" "+
            toString(mArgsInfoList[i].angle2_arg)+" "+
-           (mArgsInfoList[i].inverse_flag==true?"true":"false")+") ";
+           (mArgsInfoList[i].inverse_flag?"true":"false")+") ";
     text = text+mArgsInfoList[i].object_arg+" "+toString(mArgsInfoList[i].threshold_arg);
     if (mArgsInfoList[i].sliceBySlice_flag) {
       text += " slice by slice";
     }
     else text += " 3D";
+    text += " spacing=" + toString(mArgsInfoList[i].spacing_arg);
 
     StartNewStep(text);  
     typename RelPosFilterType::Pointer relPosFilter;
@@ -191,7 +204,16 @@ GenerateOutputInformation() {
     relPosFilter->Update();
     m_working_input = relPosFilter->GetOutput();  
     StopCurrentStep<ImageType>(m_working_input);
-    // clitk::PrintMemory(true, "End"); 
+
+    // Compute overlap with reference if needed
+    if (GetComputeOverlapFlag()) {
+      typedef clitk::LabelImageOverlapMeasureFilter<ImageType> FilterType;
+      typename FilterType::Pointer filter = FilterType::New();
+      filter->SetInput(0, m_working_input);
+      filter->SetInput(1, m_reference);
+      filter->Update();
+    }
+    
   }
 }
 //--------------------------------------------------------------------