]> Creatis software - clitk.git/commitdiff
move the last files to tools
authorschaerer <schaerer>
Tue, 27 Jul 2010 08:19:31 +0000 (08:19 +0000)
committerschaerer <schaerer>
Tue, 27 Jul 2010 08:19:31 +0000 (08:19 +0000)
tools/clitkBinarizeImage.cxx [new file with mode: 0644]
tools/clitkBinarizeImage.ggo [new file with mode: 0644]
tools/clitkBinarizeImageGenericFilter.cxx [new file with mode: 0644]
tools/clitkBinarizeImageGenericFilter.h [new file with mode: 0644]
tools/clitkBinarizeImageGenericFilter.txx [new file with mode: 0644]

diff --git a/tools/clitkBinarizeImage.cxx b/tools/clitkBinarizeImage.cxx
new file mode 100644 (file)
index 0000000..7019c6c
--- /dev/null
@@ -0,0 +1,44 @@
+/*=========================================================================
+  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
+======================================================================-====*/
+
+// clitk
+#include "clitkBinarizeImage_ggo.h"
+#include "clitkBinarizeImageGenericFilter.h"
+
+//--------------------------------------------------------------------
+int main(int argc, char * argv[])
+{
+
+  // Init command line
+  GGO(clitkBinarizeImage, args_info);
+  CLITK_INIT;
+
+  // Filter
+  typedef clitk::BinarizeImageGenericFilter<args_info_clitkBinarizeImage> FilterType;
+  FilterType::Pointer filter = FilterType::New();
+
+  filter->SetArgsInfo(args_info);
+  filter->Update();
+
+  if (filter->HasError()) {
+    std::cout << filter->GetLastError() << std::endl;
+  }
+
+  return EXIT_SUCCESS;
+} // This is the end, my friend
+//--------------------------------------------------------------------
diff --git a/tools/clitkBinarizeImage.ggo b/tools/clitkBinarizeImage.ggo
new file mode 100644 (file)
index 0000000..6f99548
--- /dev/null
@@ -0,0 +1,18 @@
+#File clitkBinarizeImage.ggo
+package "clitkBinarizeImage"
+version "1.0"
+purpose ""
+
+option "config"                -       "Config file"                     string        no
+option "verbose"       v       "Verbose"                         flag          off
+option "imagetypes"    -       "Display allowed image types"     flag          off
+
+option "input"         i       "Input image filename"            string        yes
+option "output"        o       "Output image filename"           string        yes
+option "lower"         l       "Lower intensity (default=min), fg is greater than this value"    double        no
+option "upper"         u       "Upper intensity (default=max), fg is lower than this value"      double        no
+
+option "fg"                    -       "Foreground (FG) or 'inside' value"               double        no      default="1"
+option "bg"                    -       "Background (BG) or 'ouside' value"               double        no      default="0"
+option "mode"          -       "Use FG and/or BG values (if FG, the BG is replaced by the input image values)" values="FG","BG","both"  default="both" required
+
diff --git a/tools/clitkBinarizeImageGenericFilter.cxx b/tools/clitkBinarizeImageGenericFilter.cxx
new file mode 100644 (file)
index 0000000..6e5a5f4
--- /dev/null
@@ -0,0 +1,32 @@
+/*=========================================================================
+  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_cxx
+#define clitkBinarizeImageGenericFilter_cxx
+
+/* =================================================
+ * @file   clitkBinarizeImageGenericFilter.cxx
+ * @author Jef Vandemeulebroucke <jef@creatis.insa-lyon.fr>
+ * @date   29 june 2009
+ *
+ * @brief
+ *
+ ===================================================*/
+
+#include "clitkBinarizeImageGenericFilter.h"
+
+#endif  //#define clitkBinarizeImageGenericFilter_cxx
diff --git a/tools/clitkBinarizeImageGenericFilter.h b/tools/clitkBinarizeImageGenericFilter.h
new file mode 100644 (file)
index 0000000..7f6ba4c
--- /dev/null
@@ -0,0 +1,74 @@
+/*=========================================================================
+  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_H
+#define CLITKBINARIZEIMAGEGENERICFILTER_H
+
+#include "clitkIO.h"
+#include "clitkImageToImageGenericFilter.h"
+
+//--------------------------------------------------------------------
+namespace clitk 
+{
+  
+  template<class args_info_type>
+  class ITK_EXPORT BinarizeImageGenericFilter: 
+    public ImageToImageGenericFilter<BinarizeImageGenericFilter<args_info_type> >
+  {
+    
+  public:
+
+    //--------------------------------------------------------------------
+    BinarizeImageGenericFilter();
+
+    //--------------------------------------------------------------------
+    typedef BinarizeImageGenericFilter         Self;
+    typedef itk::SmartPointer<Self>            Pointer;
+    typedef itk::SmartPointer<const Self>      ConstPointer;
+   
+    //--------------------------------------------------------------------
+    // Method for creation through the object factory
+    // and Run-time type information (and related methods)
+    itkNewMacro(Self);  
+    itkTypeMacro(BinarizeImageGenericFilter, LightObject);
+
+    //--------------------------------------------------------------------
+    void SetArgsInfo(const args_info_type & a);
+
+    //--------------------------------------------------------------------
+    // Main function called each time the filter is updated
+    template<class InputImageType>  
+    void UpdateWithInputImageType();
+
+  protected:
+    template<unsigned int Dim> void InitializeImageType();
+    args_info_type mArgsInfo;
+    
+  }; // end class
+  //--------------------------------------------------------------------
+    
+} // 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
new file mode 100644 (file)
index 0000000..61a4277
--- /dev/null
@@ -0,0 +1,168 @@
+/*=========================================================================
+  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