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
- BSD See included LICENSE.txt file
- CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
- ======================================================================-====*/
+ ===========================================================================**/
#ifndef CLITKEXTRACTLUNGSGENERICFILTER_TXX
#define CLITKEXTRACTLUNGSGENERICFILTER_TXX
void clitk::ExtractLungGenericFilter<ArgsInfoType>::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.patient_given) AddInputFilename(mArgsInfo.patient_arg);
- if (mArgsInfo.output_given) AddOutputFilename(mArgsInfo.output_arg);
- if (mArgsInfo.outputTrachea_given) AddOutputFilename(mArgsInfo.outputTrachea_arg);
+ if (mArgsInfo.input_given) this->AddInputFilename(mArgsInfo.input_arg);
+ if (mArgsInfo.output_given) this->AddOutputFilename(mArgsInfo.output_arg);
+ if (mArgsInfo.outputTrachea_given) this->AddOutputFilename(mArgsInfo.outputTrachea_arg);
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template<class ArgsInfoType>
+template<class FilterType>
+void clitk::ExtractLungGenericFilter<ArgsInfoType>::
+SetOptionsFromArgsInfoToFilter(FilterType * f)
+{
+ //f->SetVerboseFlag(mArgsInfo.verbose_flag);
+ 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->SetOutputLungFilename(mArgsInfo.output_arg);
+ f->SetOutputTracheaFilename(mArgsInfo.outputTrachea_arg);
+
+ f->SetUpperThreshold(mArgsInfo.upper_arg);
+ f->SetLowerThreshold(mArgsInfo.lower_arg);
+
+ f->SetNumberOfSlicesToSkipBeforeSearchingSeed(mArgsInfo.skipslices_arg);
+
+ f->SetTracheaVolumeMustBeCheckedFlag(!mArgsInfo.doNotCheckTracheaVolume_flag);
+ f->SetVerboseRegionGrowingFlag(mArgsInfo.verboseRG_flag);
+
+ f->SetUpperThresholdForTrachea(mArgsInfo.upperThresholdForTrachea_arg);
+ f->SetMultiplierForTrachea(mArgsInfo.multiplierForTrachea_arg);
+ f->SetThresholdStepSizeForTrachea(mArgsInfo.thresholdStepSizeForTrachea_arg);
+ f->SetTracheaSeedAlgorithm(mArgsInfo.type_arg);
+ f->SetNumSlices(mArgsInfo.numSlices_arg);
+ f->SetMaxElongation(mArgsInfo.maxElongation_arg);
+ f->SetSeedPreProcessingThreshold(mArgsInfo.seedPreProcessingThreshold_arg);
+
+ typename FilterType::InputImageIndexType s;
+ if (mArgsInfo.seed_given) {
+ ConvertOptionMacro(mArgsInfo.seed, s, 3, false);
+ f->AddSeed(s);
+ }
+
+ f->SetMinimalComponentSize(mArgsInfo.minSize_arg);
+ f->SetNumberOfHistogramBins(mArgsInfo.bins_arg);
+ f->SetRadiusForTrachea(mArgsInfo.radius_arg);
+
+ f->SetOpenCloseFlag(mArgsInfo.openclose_flag);
+ f->SetOpenCloseRadius(mArgsInfo.opencloseRadius_arg);
+ f->SetAutoCrop(!mArgsInfo.noAutoCrop_flag);
+
+ if (mArgsInfo.doNotFillHoles_given)
+ f->SetFillHolesFlag(false);
+ else
+ f->SetFillHolesFlag(true);
+
+ f->SetRemoveSmallLabelBeforeSeparationFlag(mArgsInfo.removeSmallLabel_flag);
+
+ if (mArgsInfo.doNotSeparateLungs_given)
+ f->SetSeparateLungsFlag(false);
+ else
+ f->SetSeparateLungsFlag(true);
}
//--------------------------------------------------------------------
void clitk::ExtractLungGenericFilter<ArgsInfoType>::UpdateWithInputImageType()
{
// Mask & output image type
- typedef itk::Image<uchar, ImageType::ImageDimension> OutputImageType;
typedef itk::Image<uchar, ImageType::ImageDimension> MaskImageType;
// Reading input
typename ImageType::Pointer input = this->template GetInput<ImageType>(0);
- typename MaskImageType::Pointer patient = this->template GetInput<MaskImageType>(1);
// Create filter
- typedef clitk::ExtractLungFilter<ImageType, MaskImageType> FilterType;
+ typedef clitk::ExtractLungFilter<ImageType> FilterType;
typename FilterType::Pointer filter = FilterType::New();
// Set the filter (needed for example for threaded monitoring)
this->SetFilterBase(filter);
// Set global Options
- filter->SetStopOnError(this->GetStopOnError());
- filter->SetArgsInfo(mArgsInfo);
filter->SetInput(input);
- filter->SetInputPatientMask(patient, mArgsInfo.patientBG_arg);
+ SetOptionsFromArgsInfoToFilter<FilterType>(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<OutputImageType>(output);
+ typename MaskImageType::Pointer output = filter->GetOutput();
+ this->template SetNextOutput<MaskImageType>(output);
this->template SetNextOutput<typename FilterType::MaskImageType>(filter->GetTracheaImage());
}
//--------------------------------------------------------------------