]> Creatis software - clitk.git/commitdiff
clean binarize up in order to use it as a template
authorschaerer <schaerer>
Wed, 28 Jul 2010 14:02:37 +0000 (14:02 +0000)
committerschaerer <schaerer>
Wed, 28 Jul 2010 14:02:37 +0000 (14:02 +0000)
tools/CMakeLists.txt
tools/clitkBinarizeImage.cxx
tools/clitkBinarizeImageGenericFilter.cxx
tools/clitkBinarizeImageGenericFilter.h
tools/clitkBinarizeImageGenericFilter.txx [deleted file]
vv/CMakeLists.txt
vv/vvToolBinarize.cxx

index c2ecc4aa9ff563d3ed067c4d18990a25a6d3dbe1..7d5d5e0bc711899df9de5744769440dcb1fc8755 100644 (file)
@@ -14,6 +14,7 @@ ADD_LIBRARY(clitkToolsGgoLib ${GGO_C_FILES})
 #with long compilation times that are used by vv
 ADD_LIBRARY(clitkImageConvertLib clitkImageConvertGenericFilter.cxx)
 ADD_LIBRARY(clitkImageResampleLib clitkImageResampleGenericFilter.cxx)
+ADD_LIBRARY(clitkBinarizeImageLib clitkBinarizeImageGenericFilter.cxx)
 
 IF (CLITK_BUILD_TOOLS)
     WRAP_GGO(clitkDicomInfo_GGO_C clitkDicomInfo.ggo)
@@ -27,6 +28,10 @@ IF (CLITK_BUILD_TOOLS)
     ADD_EXECUTABLE(clitkImageConvert clitkImageConvert.cxx ${clitkImageConvert_GGO_C})
     TARGET_LINK_LIBRARIES(clitkImageConvert clitkImageConvertLib clitkCommon ITKIO)
 
+    ADD_EXECUTABLE(clitkBinarizeImage clitkBinarizeImage.cxx
+       ${clitkBinarizeImage_GGO_C})
+    TARGET_LINK_LIBRARIES(clitkBinarizeImage clitkBinarizeImageLib clitkCommon ITKIO)
+
     # ADD_EXECUTABLE(clitkImageResample clitkImageResample.cxx
     # ${clitkImageResample_GGO_C})
     # TARGET_LINK_LIBRARIES(clitkImageResample clitkImageResampleLib clitkCommon ITKIO )
index 7019c6c3bc775ddeac3780699b90b2417bfa3b9b..2f1cdee71f027c59b7da4d8901d5e52b2818dc47 100644 (file)
@@ -29,7 +29,7 @@ int main(int argc, char * argv[])
   CLITK_INIT;
 
   // Filter
-  typedef clitk::BinarizeImageGenericFilter<args_info_clitkBinarizeImage> FilterType;
+  typedef clitk::BinarizeImageGenericFilter FilterType;
   FilterType::Pointer filter = FilterType::New();
 
   filter->SetArgsInfo(args_info);
index 6e5a5f4c409a210e96ce3826ee39bd711c720d2d..26b08a06844258f27b5034eab3be9d1a951ff473 100644 (file)
 
 #include "clitkBinarizeImageGenericFilter.h"
 
+// itk include
+#include "itkBinaryThresholdImageFilter.h"
+#include "itkMaskImageFilter.h"
+#include "itkMaskNegatedImageFilter.h"
+
+#include <clitkCommon.h>
+
+namespace clitk
+{
+
+//--------------------------------------------------------------------
+BinarizeImageGenericFilter::BinarizeImageGenericFilter():
+  ImageToImageGenericFilter<Self>("Binarize")
+{
+  InitializeImageType<2>();
+  InitializeImageType<3>();
+  InitializeImageType<4>();
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template<unsigned int Dim>
+void BinarizeImageGenericFilter::InitializeImageType()
+{
+  ADD_DEFAULT_IMAGE_TYPES(Dim);
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+void BinarizeImageGenericFilter::SetArgsInfo(const args_info_type & a)
+{
+  mArgsInfo=a;
+  SetIOVerbose(mArgsInfo.verbose_flag);
+  if (mArgsInfo.imagetypes_flag) this->PrintAvailableImageTypes();
+
+  if (mArgsInfo.input_given) {
+    SetInputFilename(mArgsInfo.input_arg);
+  }
+  if (mArgsInfo.output_given) {
+    SetOutputFilename(mArgsInfo.output_arg);
+  }
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+// Update with the number of dimensions and the pixeltype
+//--------------------------------------------------------------------
+template<class InputImageType>
+void
+BinarizeImageGenericFilter::UpdateWithInputImageType()
+{
+
+  // Reading input
+  typename InputImageType::Pointer input = this->template GetInput<InputImageType>(0);
+
+  // Main filter
+  typedef typename InputImageType::PixelType PixelType;
+  typedef itk::Image<uchar, InputImageType::ImageDimension> OutputImageType;
+
+  // Filter
+  typedef itk::BinaryThresholdImageFilter<InputImageType, OutputImageType> BinaryThresholdImageFilterType;
+  typename BinaryThresholdImageFilterType::Pointer thresholdFilter=BinaryThresholdImageFilterType::New();
+  thresholdFilter->SetInput(input);
+  thresholdFilter->SetInsideValue(mArgsInfo.fg_arg);
+
+  if (mArgsInfo.lower_given) thresholdFilter->SetLowerThreshold(static_cast<PixelType>(mArgsInfo.lower_arg));
+  if (mArgsInfo.upper_given) thresholdFilter->SetUpperThreshold(static_cast<PixelType>(mArgsInfo.upper_arg));
+
+  /* Three modes :
+     - FG -> only use FG value for pixel in the Foreground (or Inside), keep input values for outside
+     - BG -> only use BG value for pixel in the Background (or Outside), keep input values for inside
+     - both -> use FG and BG (real binary image)
+  */
+  if (mArgsInfo.mode_arg == std::string("both")) {
+    thresholdFilter->SetOutsideValue(mArgsInfo.bg_arg);
+    thresholdFilter->Update();
+    typename OutputImageType::Pointer outputImage = thresholdFilter->GetOutput();
+    this->template SetNextOutput<OutputImageType>(outputImage);
+  } else {
+    typename InputImageType::Pointer outputImage;
+    thresholdFilter->SetOutsideValue(0);
+    if (mArgsInfo.mode_arg == std::string("BG")) {
+      typedef itk::MaskImageFilter<InputImageType,OutputImageType> maskFilterType;
+      typename maskFilterType::Pointer maskFilter = maskFilterType::New();
+      maskFilter->SetInput1(input);
+      maskFilter->SetInput2(thresholdFilter->GetOutput());
+      maskFilter->SetOutsideValue(mArgsInfo.bg_arg);
+      maskFilter->Update();
+      outputImage = maskFilter->GetOutput();
+    } else {
+      typedef itk::MaskNegatedImageFilter<InputImageType,OutputImageType> maskFilterType;
+      typename maskFilterType::Pointer maskFilter = maskFilterType::New();
+      maskFilter->SetInput1(input);
+      maskFilter->SetInput2(thresholdFilter->GetOutput());
+      maskFilter->SetOutsideValue(mArgsInfo.fg_arg);
+      maskFilter->Update();
+      outputImage = maskFilter->GetOutput();
+    }
+    // Write/Save results
+    this->template SetNextOutput<InputImageType>(outputImage);
+  }
+}
+//--------------------------------------------------------------------
+
+
+}//end clitk
+
 #endif  //#define clitkBinarizeImageGenericFilter_cxx
index 7f6ba4c7c4ecb5b129c6056b00182cb7e9f1f7c8..2ed800ae5bdbe171a63309e680dee1b96844ebea 100644 (file)
 
 #include "clitkIO.h"
 #include "clitkImageToImageGenericFilter.h"
+#include "clitkBinarizeImage_ggo.h"
 
 //--------------------------------------------------------------------
 namespace clitk 
 {
   
-  template<class args_info_type>
   class ITK_EXPORT BinarizeImageGenericFilter: 
-    public ImageToImageGenericFilter<BinarizeImageGenericFilter<args_info_type> >
+    public ImageToImageGenericFilter<BinarizeImageGenericFilter>
   {
     
   public:
@@ -40,6 +40,7 @@ namespace clitk
     typedef BinarizeImageGenericFilter         Self;
     typedef itk::SmartPointer<Self>            Pointer;
     typedef itk::SmartPointer<const Self>      ConstPointer;
+    typedef args_info_clitkBinarizeImage       args_info_type;
    
     //--------------------------------------------------------------------
     // Method for creation through the object factory
@@ -65,10 +66,4 @@ namespace clitk
 } // end namespace clitk
 //--------------------------------------------------------------------
 
-//--------------------------------------------------------------------
-#ifndef ITK_MANUAL_INSTANTIATION
-#include "clitkBinarizeImageGenericFilter.txx"
-#endif
-//--------------------------------------------------------------------
-
 #endif // #define clitkBinarizeImageGenericFilter_h
diff --git a/tools/clitkBinarizeImageGenericFilter.txx b/tools/clitkBinarizeImageGenericFilter.txx
deleted file mode 100644 (file)
index 61a4277..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/*=========================================================================
-  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
-
-  Authors belong to:
-  - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
-  - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
-
-  This software is distributed WITHOUT ANY WARRANTY; without even
-  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-  PURPOSE.  See the copyright notices for more information.
-
-  It is distributed under dual licence
-
-  - BSD        See included LICENSE.txt file
-  - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
-
-#ifndef CLITKBINARIZEIMAGEGENERICFILTER_TXX
-#define CLITKBINARIZEIMAGEGENERICFILTER_TXX
-
-// itk include
-#include "itkBinaryThresholdImageFilter.h"
-#include "itkMaskImageFilter.h"
-#include "itkMaskNegatedImageFilter.h"
-
-#include <clitkCommon.h>
-// #include <tiff.h>
-
-namespace clitk
-{
-
-//--------------------------------------------------------------------
-template<class args_info_type>
-BinarizeImageGenericFilter<args_info_type>::BinarizeImageGenericFilter():
-  ImageToImageGenericFilter<Self>("Binarize")
-{
-  InitializeImageType<2>();
-  InitializeImageType<3>();
-  InitializeImageType<4>();
-}
-//--------------------------------------------------------------------
-
-
-//--------------------------------------------------------------------
-template<class args_info_type>
-template<unsigned int Dim>
-void BinarizeImageGenericFilter<args_info_type>::InitializeImageType()
-{
-  ADD_DEFAULT_IMAGE_TYPES(Dim);
-}
-//--------------------------------------------------------------------
-
-
-//--------------------------------------------------------------------
-template<class args_info_type>
-void BinarizeImageGenericFilter<args_info_type>::SetArgsInfo(const args_info_type & a)
-{
-  mArgsInfo=a;
-  SetIOVerbose(mArgsInfo.verbose_flag);
-  if (mArgsInfo.imagetypes_flag) this->PrintAvailableImageTypes();
-
-  if (mArgsInfo.input_given) {
-    SetInputFilename(mArgsInfo.input_arg);
-  }
-  if (mArgsInfo.output_given) {
-    SetOutputFilename(mArgsInfo.output_arg);
-  }
-}
-//--------------------------------------------------------------------
-
-
-//--------------------------------------------------------------------
-// Update with the number of dimensions and the pixeltype
-//--------------------------------------------------------------------
-template<class args_info_type>
-template<class InputImageType>
-void
-BinarizeImageGenericFilter<args_info_type>::UpdateWithInputImageType()
-{
-
-  // Reading input
-  typename InputImageType::Pointer input = this->template GetInput<InputImageType>(0);
-
-  // Main filter
-  typedef typename InputImageType::PixelType PixelType;
-  typedef itk::Image<uchar, InputImageType::ImageDimension> OutputImageType;
-
-  // Filter
-  typedef itk::BinaryThresholdImageFilter<InputImageType, OutputImageType> BinaryThresholdImageFilterType;
-  typename BinaryThresholdImageFilterType::Pointer thresholdFilter=BinaryThresholdImageFilterType::New();
-  thresholdFilter->SetInput(input);
-  thresholdFilter->SetInsideValue(mArgsInfo.fg_arg);
-
-  if (mArgsInfo.lower_given) thresholdFilter->SetLowerThreshold(static_cast<PixelType>(mArgsInfo.lower_arg));
-  if (mArgsInfo.upper_given) thresholdFilter->SetUpperThreshold(static_cast<PixelType>(mArgsInfo.upper_arg));
-
-  // DD(mArgsInfo.lower_given);
-  // DD(mArgsInfo.upper_given);
-  // DD(mArgsInfo.lower_arg);
-  // DD(mArgsInfo.upper_arg);
-  // DD(mArgsInfo.fg_arg);
-  // DD(mArgsInfo.bg_arg);
-  // DD(mArgsInfo.fg_given);
-  // DD(mArgsInfo.bg_given);
-  // DD(mArgsInfo.mode_arg);
-
-//     DD(mArgsInfo.useFG_flag);
-//     DD(mArgsInfo.useBG_flag);
-
-//     thresholdFilter->SetInsideValue(mArgsInfo.fg_arg);
-
-//     // Keep BG value to 0 if maskFilterType is used after
-//     if (mArgsInfo.useBG_flag && mArgsInfo.useFG_flag) {
-//       thresholdFilter->SetOutsideValue(mArgsInfo.bg_arg);
-//     }
-//     else {
-//       DD("0");
-//       thresholdFilter->SetOutsideValue(0);
-//     }
-
-//     // thresholdFilter->Update();
-
-//     // If no BG or no FG : new image, copy input with MaskImageFilter
-//     // If setFG -> FG BG have been changed
-//     if (mArgsInfo.useBG_flag && mArgsInfo.useFG_flag) {
-// =======
-  /* Three modes :
-     - FG -> only use FG value for pixel in the Foreground (or Inside), keep input values for outside
-     - BG -> only use BG value for pixel in the Background (or Outside), keep input values for inside
-     - both -> use FG and BG (real binary image)
-  */
-  if (mArgsInfo.mode_arg == std::string("both")) {
-    thresholdFilter->SetOutsideValue(mArgsInfo.bg_arg);
-    thresholdFilter->Update();
-    //>>>>>>> 1.5
-    typename OutputImageType::Pointer outputImage = thresholdFilter->GetOutput();
-    this->template SetNextOutput<OutputImageType>(outputImage);
-  } else {
-    typename InputImageType::Pointer outputImage;
-    thresholdFilter->SetOutsideValue(0);
-    if (mArgsInfo.mode_arg == std::string("BG")) {
-      typedef itk::MaskImageFilter<InputImageType,OutputImageType> maskFilterType;
-      typename maskFilterType::Pointer maskFilter = maskFilterType::New();
-      maskFilter->SetInput1(input);
-      maskFilter->SetInput2(thresholdFilter->GetOutput());
-      maskFilter->SetOutsideValue(mArgsInfo.bg_arg);
-      maskFilter->Update();
-      outputImage = maskFilter->GetOutput();
-    } else {
-      typedef itk::MaskNegatedImageFilter<InputImageType,OutputImageType> maskFilterType;
-      typename maskFilterType::Pointer maskFilter = maskFilterType::New();
-      maskFilter->SetInput1(input);
-      maskFilter->SetInput2(thresholdFilter->GetOutput());
-      maskFilter->SetOutsideValue(mArgsInfo.fg_arg);
-      maskFilter->Update();
-      outputImage = maskFilter->GetOutput();
-    }
-    // Write/Save results
-    this->template SetNextOutput<InputImageType>(outputImage);
-  }
-}
-//--------------------------------------------------------------------
-
-
-}//end clitk
-
-#endif //#define clitkBinarizeImageGenericFilter_txx
index baa4ccc611f363284c8149040dce40bcf2c69092..5404a75faf3bfc742dd06d67725b0d64dd1178fd 100644 (file)
@@ -216,6 +216,7 @@ TARGET_LINK_LIBRARIES(vv clitkDicomRTStruct
 #Libs for generic filters with long compilation times
 clitkImageConvertLib 
 clitkImageResampleLib
+clitkBinarizeImageLib
 #Libs for _ggo.c files
 clitkSegmentationGgoLib clitkToolsGgoLib
 clitkRegistrationGgoLib
index abadb44f09163138ad244eb4561e857aca4a7081..0e584d1999dc4660da5c332ba2d2038d1b911509 100644 (file)
@@ -73,7 +73,7 @@ vvToolBinarize::vvToolBinarize(vvMainWindowBase * parent, Qt::WindowFlags f)
   mBGSlider->SetText("Background value");
 
   // Main filter
-  mFilter = new clitk::BinarizeImageGenericFilter<args_info_clitkBinarizeImage>;
+  mFilter = new clitk::BinarizeImageGenericFilter;
 
   // Set how many inputs are needed for this tool
   AddInputSelector("Select one image", mFilter);
@@ -322,8 +322,8 @@ void vvToolBinarize::apply()
   GetArgsInfoFromGUI();
 
   // Main filter
-  clitk::BinarizeImageGenericFilter<args_info_clitkBinarizeImage>::Pointer filter =
-    clitk::BinarizeImageGenericFilter<args_info_clitkBinarizeImage>::New();
+  clitk::BinarizeImageGenericFilter::Pointer filter =
+    clitk::BinarizeImageGenericFilter::New();
   filter->SetInputVVImage(mCurrentImage);
   filter->SetArgsInfo(mArgsInfo);
   filter->EnableReadOnDisk(false);