X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=segmentation%2FclitkExtractPatientGenericFilter.txx;h=ae87cc8363afc36d6225d90cb36fef33505dec6b;hb=ae015f09e2fa0ebc736d24b37c9ed6c1ca0cb5b2;hp=7fc07407b6c035762d5b8cc3ba0dd7a74997e720;hpb=c7f6f682ddc01d2a41740bbdb806f9ef967b57d5;p=clitk.git diff --git a/segmentation/clitkExtractPatientGenericFilter.txx b/segmentation/clitkExtractPatientGenericFilter.txx index 7fc0740..ae87cc8 100644 --- a/segmentation/clitkExtractPatientGenericFilter.txx +++ b/segmentation/clitkExtractPatientGenericFilter.txx @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,7 +14,7 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html - ======================================================================-====*/ + ===========================================================================**/ #include "clitkImageCommon.h" @@ -36,6 +36,8 @@ template void clitk::ExtractPatientGenericFilter::InitializeImageType() { ADD_IMAGE_TYPE(Dim, short); + ADD_IMAGE_TYPE(Dim, unsigned short); + ADD_IMAGE_TYPE(Dim, float); // ADD_IMAGE_TYPE(Dim, int); // ADD_IMAGE_TYPE(Dim, float); } @@ -47,10 +49,64 @@ template void clitk::ExtractPatientGenericFilter::SetArgsInfo(const ArgsInfoType & a) { mArgsInfo=a; - SetIOVerbose(mArgsInfo.verbose_flag); + this->SetIOVerbose(mArgsInfo.verbose_flag); if (mArgsInfo.imagetypes_flag) this->PrintAvailableImageTypes(); - if (mArgsInfo.input_given) SetInputFilename(mArgsInfo.input_arg); - if (mArgsInfo.output_given) AddOutputFilename(mArgsInfo.output_arg); + if (mArgsInfo.input_given) this->SetInputFilename(mArgsInfo.input_arg); + if (mArgsInfo.output_given) this->AddOutputFilename(mArgsInfo.output_arg); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +template +template +void +clitk::ExtractPatientGenericFilter:: +SetOptionsFromArgsInfoToFilter(FilterType * f) +{ + f->SetVerboseOptionFlag(mArgsInfo.verbose_flag); + f->SetVerboseStepFlag(mArgsInfo.verboseStep_flag); + f->SetWriteStepFlag(mArgsInfo.writeStep_flag); + f->SetVerboseWarningFlag(!mArgsInfo.verboseWarningOff_flag); + f->SetVerboseMemoryFlag(mArgsInfo.verboseMemory_flag); + + if (mArgsInfo.afdb_given) + f->SetAFDBFilename(mArgsInfo.afdb_arg); + + f->SetOutputPatientFilename(mArgsInfo.output_arg); + + f->SetUpperThreshold(mArgsInfo.upper_arg); + f->SetLowerThreshold(mArgsInfo.lower_arg); + f->SetPrimaryOpeningRadius(mArgsInfo.openingRadius_arg); + + f->SetDecomposeAndReconstructDuringFirstStep(mArgsInfo.erode1_flag); + + // Convert to SizeType + typename FilterType::InputImageSizeType s; + if (mArgsInfo.radius1_given) { + ConvertOptionMacro(mArgsInfo.radius1, s, 3, false); + f->SetRadius1(s); + } + + f->SetMaximumNumberOfLabels1(mArgsInfo.max1_arg); + f->SetNumberOfNewLabels1(mArgsInfo.new1_arg); + + f->SetDecomposeAndReconstructDuringSecondStep(mArgsInfo.erode2_flag); + + // Convert to SizeType + if (mArgsInfo.radius2_given) { + ConvertOptionMacro(mArgsInfo.radius2, s, 3, false); + f->SetRadius2(s); + } + + f->SetMaximumNumberOfLabels2(mArgsInfo.max2_arg); + f->SetNumberOfNewLabels2(mArgsInfo.new2_arg); + + f->SetFirstKeep(mArgsInfo.firstKeep_arg); + f->SetLastKeep(mArgsInfo.lastKeep_arg); + + f->SetFinalOpenClose(mArgsInfo.openClose_flag); + f->SetAutoCrop(!mArgsInfo.noAutoCrop_flag); } //-------------------------------------------------------------------- @@ -69,25 +125,18 @@ void clitk::ExtractPatientGenericFilter::UpdateWithInputImageType( typename ImageType::Pointer input = this->template GetInput(0); // Create filter - typedef clitk::ExtractPatientFilter FilterType; + typedef clitk::ExtractPatientFilter FilterType; typename FilterType::Pointer filter = FilterType::New(); // Set the filter (needed for example for threaded monitoring) this->SetFilterBase(filter); // Set global Options - filter->SetArgsInfo(mArgsInfo); filter->SetInput(input); + SetOptionsFromArgsInfoToFilter(filter); // Go ! filter->Update(); - - // // Check if error - // if (filter->HasError()) { - // SetLastError(filter->GetLastError()); - // // No output - // return; - // } // Write/Save results typename OutputImageType::Pointer output = filter->GetOutput();