From c743d3bed0d7d619740eea35430770265c4a1b9b Mon Sep 17 00:00:00 2001 From: schaerer Date: Mon, 25 Oct 2010 14:34:24 +0000 Subject: [PATCH] cli tool for mip computation --- tools/CMakeLists.txt | 4 ++ tools/clitkMIP.cxx | 45 ++++++++++++++ tools/clitkMIP.ggo | 12 ++++ tools/clitkMIPGenericFilter.cxx | 101 ++++++++++++++++++++++++++++++++ tools/clitkMIPGenericFilter.h | 69 ++++++++++++++++++++++ tools/make_new_tool.sh | 11 ++-- 6 files changed, 236 insertions(+), 6 deletions(-) create mode 100644 tools/clitkMIP.cxx create mode 100644 tools/clitkMIP.ggo create mode 100644 tools/clitkMIPGenericFilter.cxx create mode 100644 tools/clitkMIPGenericFilter.h diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 8b8e785..ce3d09e 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -227,4 +227,8 @@ IF (CLITK_BUILD_TOOLS) WRAP_GGO(clitkValuesToBSplineCoefficients_GGO_C clitkValuesToBSplineCoefficients.ggo) ADD_EXECUTABLE(clitkValuesToBSplineCoefficients clitkValuesToBSplineCoefficients.cxx clitkValuesToBSplineCoefficientsGenericFilter.cxx ${clitkValuesToBSplineCoefficients_GGO_C}) TARGET_LINK_LIBRARIES(clitkValuesToBSplineCoefficients clitkCommon ITKIO) + + WRAP_GGO(clitkMIP_GGO_C clitkMIP.ggo) + ADD_EXECUTABLE(clitkMIP clitkMIP.cxx clitkMIPGenericFilter.cxx ${clitkMIP_GGO_C}) + TARGET_LINK_LIBRARIES(clitkMIP clitkCommon ITKIO) ENDIF(CLITK_BUILD_TOOLS) diff --git a/tools/clitkMIP.cxx b/tools/clitkMIP.cxx new file mode 100644 index 0000000..1aab0ad --- /dev/null +++ b/tools/clitkMIP.cxx @@ -0,0 +1,45 @@ +/*========================================================================= + 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 "clitkMIP_ggo.h" +#include "clitkMIPGenericFilter.h" + +//-------------------------------------------------------------------- +int main(int argc, char * argv[]) +{ + + // Init command line + GGO(clitkMIP, args_info); + CLITK_INIT; + + // Filter + typedef clitk::MIPGenericFilter FilterType; + FilterType::Pointer filter = FilterType::New(); + + filter->SetArgsInfo(args_info); + + try { + filter->Update(); + } catch(std::runtime_error e) { + std::cout << e.what() << std::endl; + } + + return EXIT_SUCCESS; +} // This is the end, my friend +//-------------------------------------------------------------------- diff --git a/tools/clitkMIP.ggo b/tools/clitkMIP.ggo new file mode 100644 index 0000000..7438814 --- /dev/null +++ b/tools/clitkMIP.ggo @@ -0,0 +1,12 @@ +#File clitkMIP.ggo +package "clitkMIP" +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 "dimension" d "Dimension along which to projetct" int yes diff --git a/tools/clitkMIPGenericFilter.cxx b/tools/clitkMIPGenericFilter.cxx new file mode 100644 index 0000000..1cfd41b --- /dev/null +++ b/tools/clitkMIPGenericFilter.cxx @@ -0,0 +1,101 @@ +/*========================================================================= + 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 clitkMIPGenericFilter_cxx +#define clitkMIPGenericFilter_cxx + +/* ================================================= + * @file clitkMIPGenericFilter.cxx + * @author Jef Vandemeulebroucke + * @date 29 june 2009 + * + * @brief + * + ===================================================*/ + +#include "clitkMIPGenericFilter.h" + +// itk include +#include +#include + +#include + +namespace clitk +{ + +//-------------------------------------------------------------------- +MIPGenericFilter::MIPGenericFilter(): + ImageToImageGenericFilter("MIP") +{ + InitializeImageType<3>(); + InitializeImageType<4>(); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +template +void MIPGenericFilter::InitializeImageType() +{ + ADD_DEFAULT_IMAGE_TYPES(Dim); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +void MIPGenericFilter::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 +void +MIPGenericFilter::UpdateWithInputImageType() +{ + typedef typename InputImageType::PixelType PixelType; + const int Dim = InputImageType::ImageDimension; + typedef itk::Image ImageType; + typedef itk::Image OutputImageType; + typedef itk::MaximumProjectionImageFilter FilterType; + typename FilterType::Pointer filter = FilterType::New(); + filter->SetProjectionDimension(mArgsInfo.dimension_arg); + typename InputImageType::Pointer input = this->template GetInput(0); + filter->SetInput(input); + filter->Update(); + this->template SetNextOutput(filter->GetOutput()); +} +//-------------------------------------------------------------------- + + +}//end clitk + +#endif //#define clitkMIPGenericFilter_cxx diff --git a/tools/clitkMIPGenericFilter.h b/tools/clitkMIPGenericFilter.h new file mode 100644 index 0000000..b90c18a --- /dev/null +++ b/tools/clitkMIPGenericFilter.h @@ -0,0 +1,69 @@ +/*========================================================================= + 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 clitkMIPGenericFilter_h +#define clitkMIPGenericFilter_h + +#include "clitkIO.h" +#include "clitkImageToImageGenericFilter.h" +#include "clitkMIP_ggo.h" + +//-------------------------------------------------------------------- +namespace clitk +{ + + class ITK_EXPORT MIPGenericFilter: + public ImageToImageGenericFilter + { + + public: + + //-------------------------------------------------------------------- + MIPGenericFilter(); + + //-------------------------------------------------------------------- + typedef MIPGenericFilter Self; + typedef itk::SmartPointer Pointer; + typedef itk::SmartPointer ConstPointer; + typedef args_info_clitkMIP args_info_type; + + //-------------------------------------------------------------------- + // Method for creation through the object factory + // and Run-time type information (and related methods) + itkNewMacro(Self); + itkTypeMacro(MIPGenericFilter, LightObject); + + //-------------------------------------------------------------------- + void SetArgsInfo(const args_info_type & a); + + //-------------------------------------------------------------------- + // Main function called each time the filter is updated + template + void UpdateWithInputImageType(); + + protected: + template void InitializeImageType(); + args_info_type mArgsInfo; + + }; // end class + //-------------------------------------------------------------------- + +} // end namespace clitk +//-------------------------------------------------------------------- + +#endif // #define clitkMIPGenericFilter_h diff --git a/tools/make_new_tool.sh b/tools/make_new_tool.sh index 2a25bd1..2e4c1b4 100755 --- a/tools/make_new_tool.sh +++ b/tools/make_new_tool.sh @@ -1,8 +1,7 @@ #!/bin/bash -cp clitkSplitImage.ggo clitk$1.ggo -cp clitkSplitImage.cxx clitk$1.cxx -cp clitkSplitImageGenericFilter.h clitk$1GenericFilter.h -#cp clitkSplitImageGenericFilter.txx clitk$1GenericFilter.txx -cp clitkSplitImageGenericFilter.cxx clitk$1GenericFilter.cxx +cp clitkBinarizeImage.ggo clitk$1.ggo +cp clitkBinarizeImage.cxx clitk$1.cxx +cp clitkBinarizeImageGenericFilter.h clitk$1GenericFilter.h +cp clitkBinarizeImageGenericFilter.cxx clitk$1GenericFilter.cxx -sed -i "s/SplitImage/$1/g" clitk$1* +sed -i "s/BinarizeImage/$1/g" clitk$1* -- 2.47.1