]> Creatis software - clitk.git/blobdiff - registration/clitkBLUTDIRGenericFilter.cxx
separate airway tracking from extract lung
[clitk.git] / registration / clitkBLUTDIRGenericFilter.cxx
index 598870e77fea34b101f8254029cfc14c4efae4a9..511c598a176d96407b3957cece42eef7da9223bc 100755 (executable)
@@ -113,7 +113,7 @@ void BLUTDIRGenericFilter::InitializeImageType()
     typedef itk::SmartPointer<Self>  Pointer;
     itkNewMacro( Self );
   protected:
-    RegistrationInterfaceCommand() {};
+    RegistrationInterfaceCommand() { };
   public:
 
     // Registration
@@ -204,11 +204,22 @@ void BLUTDIRGenericFilter::InitializeImageType()
          m_Initializer->InitializeTransform();
          ParametersType* newParameters= new typename TransformType::ParametersType(m_Initializer->GetTransform()->GetNumberOfParameters());
 
+         // DS : if we want to skip the last pyramid level, force to only 1 iteration
+         DD(m_ArgsInfo.skipLastPyramidLevel_flag);
+         if ((currentLevel == numberOfLevels) && (m_ArgsInfo.skipLastPyramidLevel_flag)) {
+           DD(m_ArgsInfo.maxIt_arg);
+           std::cout << "I skip the last pyramid level : set max iteration to 0" << std::endl;
+           m_ArgsInfo.maxIt_arg = 0;
+           DD(m_ArgsInfo.maxIt_arg);
+         }
+
          // Reinitialize an Optimizer (!= number of parameters)
          m_GenericOptimizer = GenericOptimizerType::New();
          m_GenericOptimizer->SetArgsInfo(m_ArgsInfo);
          m_GenericOptimizer->SetMaximize(m_Maximize);
          m_GenericOptimizer->SetNumberOfParameters(m_Initializer->GetTransform()->GetNumberOfParameters());
+
+
          typedef itk::SingleValuedNonLinearOptimizer OptimizerType;
          OptimizerType::Pointer optimizer = m_GenericOptimizer->GetOptimizerPointer();
          optimizer->AddObserver( itk::IterationEvent(), m_CommandIterationUpdate);
@@ -575,7 +586,10 @@ void BLUTDIRGenericFilter::UpdateWithInputImageType()
     if (movingMask) metric->SetMovingImageMask(movingMask);
 
 #ifdef ITK_USE_OPTIMIZED_REGISTRATION_METHODS
-    if (threadsGiven) metric->SetNumberOfThreads( threads );
+    if (threadsGiven) {
+      metric->SetNumberOfThreads( threads );
+      if (m_Verbose) std::cout<< "Using " << threads << " threads." << std::endl;
+    }
 #else
     if (m_Verbose) std::cout<<"Not setting the number of threads (not compiled with USE_OPTIMIZED_REGISTRATION_METHODS)..."<<std::endl;
 #endif
@@ -602,7 +616,10 @@ void BLUTDIRGenericFilter::UpdateWithInputImageType()
     registration->SetOptimizer(     optimizer     );
     registration->SetInterpolator(  interpolator  );
     registration->SetTransform (transform);
-    if(threadsGiven) registration->SetNumberOfThreads(threads);
+    if(threadsGiven) {
+      registration->SetNumberOfThreads(threads);
+      if (m_Verbose) std::cout<< "Using " << threads << " threads." << std::endl;
+    }
     registration->SetFixedImage(  croppedFixedImage   );
     registration->SetMovingImage(  movingImage   );
     registration->SetFixedImageRegion( metricRegion );
@@ -836,4 +853,4 @@ void BLUTDIRGenericFilter::UpdateWithInputImageType()
   }
 }//end clitk
 
-#endif // #define clitkBLUTDIRGenericFilter_txx
\ No newline at end of file
+#endif // #define clitkBLUTDIRGenericFilter_txx