]> Creatis software - clitk.git/blobdiff - tools/clitkNormalizeImageFilterGenericFilter.txx
Debug clitkNormalizeImage
[clitk.git] / tools / clitkNormalizeImageFilterGenericFilter.txx
index 99a43a464ad8157367caf9f5ed7e301b0736ac64..fd62269988dbb8a1ede174f43f3ce116dcd4248e 100644 (file)
@@ -94,7 +94,7 @@ namespace clitk
         // 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);
         }
@@ -103,6 +103,7 @@ namespace clitk
             mask->SetRegions(input->GetLargestPossibleRegion());
             mask->SetOrigin(input->GetOrigin());
             mask->SetSpacing(input->GetSpacing());
+            mask->SetDirection(input->GetDirection());
             mask->Allocate();
             mask->FillBuffer(1);
         }
@@ -112,6 +113,7 @@ namespace clitk
         outputImage->SetRegions(input->GetLargestPossibleRegion());
         outputImage->SetOrigin(input->GetOrigin());
         outputImage->SetSpacing(input->GetSpacing());
+        outputImage->SetDirection(input->GetDirection());
         outputImage->Allocate();
         outputImage->FillBuffer(0.0);
         // Set output iterator
@@ -144,13 +146,28 @@ namespace clitk
         ito.GoToBegin();
         itm.GoToBegin();
 
+        double total = 0.0;
         while (!ito.IsAtEnd()) {
+          if(itm.Get() == 1) {
+            ito.Set(((float) it.Get() - minImg)/(maxImg-minImg));
+            total += ito.Get();
+          }
+          ++it;
+          ++ito;
+          ++itm;
+        }
+
+        // Normalisation wrt total ?
+        if (mArgsInfo.total_normalisation_flag) {
+          ito.GoToBegin();
+          itm.GoToBegin();
+          while (!ito.IsAtEnd()) {
             if(itm.Get() == 1) {
-                ito.Set(((float) it.Get() - minImg)/(maxImg-minImg));
+              ito.Set(ito.Get()/total);
             }
-            ++it;
             ++ito;
             ++itm;
+          }
         }
         //
         //