]> Creatis software - clitk.git/blobdiff - tools/clitkImageStatisticsGenericFilter.cxx
FIX: cant pipe cout to cerr.
[clitk.git] / tools / clitkImageStatisticsGenericFilter.cxx
index 23cf4df06eb75901590f2f7b9603960b9696ad8f..3d9bea5041106e5d2e6afdd40f5636fcdb29757e 100644 (file)
@@ -1,7 +1,7 @@
 /*=========================================================================
   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
 
-  Authors belong to: 
+  Authors belong to:
   - University of LYON              http://www.universite-lyon.fr/
   - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 #ifndef clitkImageStatisticsGenericFilter_cxx
 #define clitkImageStatisticsGenericFilter_cxx
 
-/* =================================================
- * @file   clitkImageStatisticsGenericFilter.cxx
- * @author 
- * @date   
- * 
- * @brief 
- * 
- ===================================================*/
-
 #include "clitkImageStatisticsGenericFilter.h"
 
-
 namespace clitk
 {
 
@@ -42,6 +32,7 @@ namespace clitk
     m_Verbose=false;
     m_InputFileName="";
   }
+  //-----------------------------------------------------------
 
 
   //-----------------------------------------------------------
@@ -53,23 +44,33 @@ namespace clitk
     int Dimension, Components;
     std::string PixelType;
     ReadImageDimensionAndPixelType(m_InputFileName, Dimension, PixelType, Components);
-    
-    if (m_ArgsInfo.channel_arg != -1 && m_ArgsInfo.channel_arg >= Components) {
+
+    if (m_ArgsInfo.channel_arg < -1 || m_ArgsInfo.channel_arg >= Components) {
       std::cout << "Invalid image channel" << std::endl;
       return;
     }
 
-    
+    if (m_ArgsInfo.mask_given) {
+      int maskDimension, maskComponents;
+      std::string maskPixelType;
+      ReadImageDimensionAndPixelType(m_ArgsInfo.mask_arg, maskDimension, maskPixelType, maskComponents);
+      if (!(maskDimension == Dimension || maskDimension == (Dimension - 1))) {
+        std::cout << "Dimension of label mask must be equal to the (d)imension of the input image or d-1." << std::endl;
+        return;
+      }
+    }
+
+
     // Call UpdateWithDim
     if (Dimension==2) {
       switch (Components) {
-        case 1: 
+        case 1:
           UpdateWithDim<2,1>(PixelType);
           break;
-        case 2: 
+        case 2:
           UpdateWithDim<2,2>(PixelType);
           break;
-        case 3: 
+        case 3:
           UpdateWithDim<2,3>(PixelType);
           break;
         default:
@@ -79,13 +80,13 @@ namespace clitk
     }
     else if (Dimension==3) {
       switch (Components) {
-        case 1: 
+        case 1:
           UpdateWithDim<3,1>(PixelType);
           break;
-        case 2: 
+        case 2:
           UpdateWithDim<3,2>(PixelType);
           break;
-        case 3: 
+        case 3:
           UpdateWithDim<3,3>(PixelType);
           break;
         default:
@@ -95,13 +96,13 @@ namespace clitk
     }
     else if (Dimension==4) {
       switch (Components) {
-        case 1: 
+        case 1:
           UpdateWithDim<4,1>(PixelType);
           break;
-        case 2: 
+        case 2:
           UpdateWithDim<4,2>(PixelType);
           break;
-        case 3: 
+        case 3:
           UpdateWithDim<4,3>(PixelType);
           break;
         default: