]> Creatis software - clitk.git/commitdiff
Add possibility to resize/resample mask like input image
authorDavid Sarrut <david.sarrut@gmail.com>
Fri, 3 Feb 2012 06:57:12 +0000 (07:57 +0100)
committerDavid Sarrut <david.sarrut@gmail.com>
Mon, 3 Sep 2012 07:38:47 +0000 (09:38 +0200)
tools/clitkImageStatistics.cxx
tools/clitkImageStatistics.ggo
tools/clitkImageStatisticsGenericFilter.cxx
tools/clitkImageStatisticsGenericFilter.h
tools/clitkImageStatisticsGenericFilter.txx

index 265871f0f63ca91aa7c85f2787013eb0c48d97d3..818a88c04c2ad693249db64231553a16176043df 100644 (file)
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
 ===========================================================================**/
 
-/* =================================================
- * @file   clitkImageStatistics.cxx
- * @author 
- * @date   
- * 
- * @brief 
- * 
- ===================================================*/
-
-
 // clitk
 #include "clitkImageStatistics_ggo.h"
 #include "clitkIO.h"
@@ -43,7 +33,7 @@ int main(int argc, char * argv[]) {
   clitk::ImageStatisticsGenericFilter::Pointer genericFilter=clitk::ImageStatisticsGenericFilter::New();
   
   genericFilter->SetArgsInfo(args_info);
-  genericFilter->Update();
+  CLITK_TRY_CATCH_EXIT(genericFilter->Update());
 
   return EXIT_SUCCESS;
 }// end main
index bbb127b6fbdd30be1543c55a2b320ebf6c2bd37e..d2e55f36572162d451c80567924c92ba610eb68e 100644 (file)
@@ -15,3 +15,5 @@ option "histogram"    -       "Compute histogram, allows median calculation"  string  no
 option "bins"          -       "Number of histogram bins"                      int     no      default="100"
 option "lower"         -       "Lower histogram bound" double  no default="-1000"      
 option "upper"         -       "Upper histogram bound" double  no default="1000"               
+
+option "allow_resize"          r       "Resize mask if different from input"                     flag          off
index ddfe5e0293661220055a8aabd95259273d759403..256523c23f2bd1845d77dc8fbe8f765c879f1f9d 100644 (file)
 #ifndef clitkImageStatisticsGenericFilter_cxx
 #define clitkImageStatisticsGenericFilter_cxx
 
-/* =================================================
- * @file   clitkImageStatisticsGenericFilter.cxx
- * @author 
- * @date   
- * 
- * @brief 
- * 
- ===================================================*/
-
 #include "clitkImageStatisticsGenericFilter.h"
 
-
 namespace clitk
 {
 
index 6511c0e0a0bcc30114f5606a5cc3a016e5a31dc3..00cfff8e9fad3908a391936199ab219ca909247e 100644 (file)
 #ifndef clitkImageStatisticsGenericFilter_h
 #define clitkImageStatisticsGenericFilter_h
 
-/* =================================================
- * @file   clitkImageStatisticsGenericFilter.h
- * @author 
- * @date   
- * 
- * @brief 
- * 
- ===================================================*/
-
-
 // clitk include
 #include "clitkIO.h"
 #include "clitkCommon.h"
@@ -41,7 +31,6 @@
 namespace clitk 
 {
 
-
   class ITK_EXPORT ImageStatisticsGenericFilter : public itk::LightObject
   {
   public:
index d1b0d4c4abf845ce98e50054e8d259093523e37a..81f93be1105ff3b162aee89c57530e0f1895744b 100644 (file)
 #include "itkNthElementImageAdaptor.h"
 #include "itkJoinSeriesImageFilter.h"
 
-/* =================================================
- * @file   clitkImageStatisticsGenericFilter.txx
- * @author 
- * @date   
- * 
- * @brief 
- * 
- ===================================================*/
 #include "clitkImageStatisticsGenericFilter.h"
-
+#include "clitkCropLikeImageFilter.h"
+#include "clitkResampleImageWithOptionsFilter.h"
 
 namespace clitk
 {
@@ -106,6 +99,7 @@ namespace clitk
       int maskDimension, maskComponents;
       std::string maskPixelType;
       ReadImageDimensionAndPixelType(m_ArgsInfo.mask_arg, maskDimension, maskPixelType, maskComponents);
+
       if (maskDimension == Dimension - 1) {
         // Due to a limitation of filter itk::LabelStatisticsImageFilter, InputImageType and LabelImageType
         // must have the same image dimension. However, we want to support label images with Dl = Di - 1,
@@ -135,6 +129,30 @@ namespace clitk
         labelImageReader->SetFileName(m_ArgsInfo.mask_arg);
         labelImageReader->Update();
         labelImage= labelImageReader->GetOutput();
+
+        // Check mask sampling/size
+        if (!HaveSameSizeAndSpacing<LabelImageType, InputImageType>(labelImage, input)) {
+          if (m_ArgsInfo.allow_resize_flag) {
+            if (m_ArgsInfo.verbose_flag) {
+              std::cout << "Resize mask image like input" << std::endl;
+            }
+            typedef clitk::ResampleImageWithOptionsFilter<LabelImageType> ResamplerType;
+            typename ResamplerType::Pointer resampler = ResamplerType::New();
+            resampler->SetInput(labelImage);
+            resampler->SetOutputSpacing(input->GetSpacing());
+            resampler->Update();
+            labelImage = resampler->GetOutput();
+
+            typename itk::ImageBase<LabelImageType::ImageDimension>::RegionType reg 
+              = input->GetLargestPossibleRegion();
+            labelImage = ResizeImageLike<LabelImageType>(labelImage, &reg, 0);
+          }
+          else {
+            std::cerr << "Mask image has a different size/spacing than input. Abort" << std::endl;
+            exit(-1);
+          }
+        }
+
       }
 
     }