X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=segmentation%2FclitkExtractBonesGenericFilter.txx;h=47734300ea11185ba25dbcbb2509a8179a268944;hb=HEAD;hp=5c72672b17249abe3793152276312a1f6300e056;hpb=e008d74b0ecdc4ca2eaae8c429901a78f9ef5c31;p=clitk.git diff --git a/segmentation/clitkExtractBonesGenericFilter.txx b/segmentation/clitkExtractBonesGenericFilter.txx index 5c72672..4773430 100644 --- a/segmentation/clitkExtractBonesGenericFilter.txx +++ b/segmentation/clitkExtractBonesGenericFilter.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 - ======================================================================-====*/ + ===========================================================================**/ #ifndef CLITKEXTRACTBONESSGENERICFILTER_TXX #define CLITKEXTRACTBONESSGENERICFILTER_TXX @@ -38,9 +38,9 @@ template template void clitk::ExtractBonesGenericFilter::InitializeImageType() { - ADD_IMAGE_TYPE(Dim, short); + //ADD_IMAGE_TYPE(Dim, short); // ADD_IMAGE_TYPE(Dim, int); - // ADD_IMAGE_TYPE(Dim, float); + ADD_IMAGE_TYPE(Dim, float); } //-------------------------------------------------------------------- @@ -50,10 +50,54 @@ template void clitk::ExtractBonesGenericFilter::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) AddInputFilename(mArgsInfo.input_arg); - if (mArgsInfo.output_given) AddOutputFilename(mArgsInfo.output_arg); + if (mArgsInfo.input_given) this->AddInputFilename(mArgsInfo.input_arg); + if (mArgsInfo.output_given) this->AddOutputFilename(mArgsInfo.output_arg); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +template +template +void clitk::ExtractBonesGenericFilter:: +SetOptionsFromArgsInfoToFilter(FilterType * f) +{ + f->SetVerboseOptionFlag(mArgsInfo.verboseOption_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->SetOutputBonesFilename(mArgsInfo.output_arg); + + f->SetInitialSmoothing(mArgsInfo.smooth_flag); + f->SetSmoothingConductanceParameter(mArgsInfo.cond_arg); + f->SetSmoothingNumberOfIterations(mArgsInfo.iter_arg); + f->SetSmoothingTimeStep(mArgsInfo.time_arg); + f->SetSmoothingUseImageSpacing(mArgsInfo.spacing_flag); + + f->SetMinimalComponentSize(mArgsInfo.minSize_arg); + f->SetUpperThreshold1(mArgsInfo.upper1_arg); + f->SetLowerThreshold1(mArgsInfo.lower1_arg); + f->SetFullConnectivity(mArgsInfo.full_flag); + + f->SetUpperThreshold2(mArgsInfo.upper2_arg); + f->SetLowerThreshold2(mArgsInfo.lower2_arg); + + typename FilterType::InputImageSizeType s; + if (mArgsInfo.radius2_given) { + ConvertOptionMacro(mArgsInfo.radius2, s, 3, false); + f->SetRadius2(s); + } + + f->SetSampleRate2(mArgsInfo.sampleRate2_arg); + f->SetAutoCrop(!mArgsInfo.noAutoCrop_flag); + f->SetFillHoles(!mArgsInfo.doNotFillHoles_flag); } //-------------------------------------------------------------------- @@ -66,32 +110,25 @@ template void clitk::ExtractBonesGenericFilter::UpdateWithInputImageType() { // Mask & output image type - typedef itk::Image OutputImageType; + typedef itk::Image MaskImageType; // Reading input typename ImageType::Pointer input = this->template GetInput(0); // Create filter - typedef clitk::ExtractBonesFilter FilterType; + typedef clitk::ExtractBonesFilter FilterType; typename FilterType::Pointer filter = FilterType::New(); // 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(); - this->template SetNextOutput(output); + typename MaskImageType::Pointer output = filter->GetOutput(); + this->template SetNextOutput(output); } //--------------------------------------------------------------------