From: dsarrut Date: Wed, 30 Jun 2010 06:06:36 +0000 (+0000) Subject: autocrop tool X-Git-Tag: v1.2.0~589 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=bb436e8274c510438ccb5ec1df531675321341bb;p=clitk.git autocrop tool --- diff --git a/filters/clitkAutoCrop.ggo b/filters/clitkAutoCrop.ggo new file mode 100644 index 0000000..5eb6f7e --- /dev/null +++ b/filters/clitkAutoCrop.ggo @@ -0,0 +1,17 @@ +#File clitkAutoCrop.ggo +package "clitkAutoCrop" +version "1.0" +purpose "Crop a mask image" + +option "config" - "Config file" string no +option "imagetypes" - "Display allowed image types" flag off +option "verbose" v "Verbose" flag off +option "verboseOption" - "Display options values" flag off +option "verboseWarningOff" - "Do not display warning" flag off + +section "I/O" + +option "input" i "Input image filename" string yes +option "output" o "Output image filename" string yes + +option "BG" - "Background value in input." double default="0" no diff --git a/filters/clitkAutoCropGenericFilter.h b/filters/clitkAutoCropGenericFilter.h new file mode 100644 index 0000000..8fa8cb8 --- /dev/null +++ b/filters/clitkAutoCropGenericFilter.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 CLITKAUTOCROPGENERICFILTER_H +#define CLITKAUTOCROPGENERICFILTER_H + +// clitk +#include "clitkIO.h" +#include "clitkImageToImageGenericFilter.h" +#include "clitkAutoCropFilter.h" + +//-------------------------------------------------------------------- +namespace clitk +{ + + template + class ITK_EXPORT AutoCropGenericFilter: + public ImageToImageGenericFilter > + { + public: + //-------------------------------------------------------------------- + AutoCropGenericFilter(); + + //-------------------------------------------------------------------- + typedef AutoCropGenericFilter Self; + typedef ImageToImageGenericFilter > Superclass; + typedef itk::SmartPointer Pointer; + typedef itk::SmartPointer ConstPointer; + + //-------------------------------------------------------------------- + itkNewMacro(Self); + itkTypeMacro( AutoCropGenericFilter, LightObject ); + + //-------------------------------------------------------------------- + void SetArgsInfo(const ArgsInfoType & a); + + //-------------------------------------------------------------------- + // Main function called each time the filter is updated + template + void UpdateWithInputImageType(); + + protected: + template void InitializeImageType(); + ArgsInfoType mArgsInfo; + + };// end class + //-------------------------------------------------------------------- +} // end namespace clitk + +#ifndef ITK_MANUAL_INSTANTIATION +#include "clitkAutoCropGenericFilter.txx" +#endif + +#endif // #define CLITKAUTOCROPGENERICFILTER_H diff --git a/filters/clitkAutoCropGenericFilter.txx b/filters/clitkAutoCropGenericFilter.txx new file mode 100644 index 0000000..fcc7384 --- /dev/null +++ b/filters/clitkAutoCropGenericFilter.txx @@ -0,0 +1,91 @@ +/*========================================================================= + 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 + ======================================================================-====*/ + +#include "clitkImageCommon.h" + +//-------------------------------------------------------------------- +template +clitk::AutoCropGenericFilter::AutoCropGenericFilter(): + ImageToImageGenericFilter("AutoCrop") +{ + // Default values + cmdline_parser_clitkAutoCrop_init(&mArgsInfo); + //InitializeImageType<2>(); + InitializeImageType<3>(); + //InitializeImageType<4>(); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +template +template +void clitk::AutoCropGenericFilter::InitializeImageType() +{ + // ADD_DEFAULT_IMAGE_TYPES(Dim); + ADD_IMAGE_TYPE(Dim, uchar); + ADD_IMAGE_TYPE(Dim, ushort); + // ADD_IMAGE_TYPE(Dim, uint); + // ADD_IMAGE_TYPE(Dim, ulong); + // ADD_IMAGE_TYPE(Dim, int); + // ADD_IMAGE_TYPE(Dim, float); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +template +void clitk::AutoCropGenericFilter::SetArgsInfo(const ArgsInfoType & a) +{ + mArgsInfo=a; + SetIOVerbose(mArgsInfo.verbose_flag); + if (mArgsInfo.imagetypes_flag) this->PrintAvailableImageTypes(); + if (mArgsInfo.input_given) AddInputFilename(mArgsInfo.input_arg); + if (mArgsInfo.output_given) AddOutputFilename(mArgsInfo.output_arg); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +// Update with the number of dimensions and the pixeltype +//-------------------------------------------------------------------- +template +template +void clitk::AutoCropGenericFilter::UpdateWithInputImageType() +{ + // Reading input + typename ImageType::Pointer input = this->template GetInput(0); + + // Create filter + typedef clitk::AutoCropFilter FilterType; + typename FilterType::Pointer filter = FilterType::New(); + + // Set global Options + filter->SetBackgroundValue(mArgsInfo.BG_arg); + filter->SetInput(input); + + // Go ! + filter->Update(); + + // Write/Save results + typename ImageType::Pointer output = filter->GetOutput(); + this->template SetNextOutput(output); +} +//-------------------------------------------------------------------- + +