X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=segmentation%2FclitkExtractLymphStationsGenericFilter.txx;h=317c78ab588b1e0d36f53fe0c4d76241de15c1b7;hb=2b4640901e2d30671b1068519b56c80499063ad6;hp=2644c1fc99153a50c7694150e8c91dabcc39de35;hpb=e008d74b0ecdc4ca2eaae8c429901a78f9ef5c31;p=clitk.git diff --git a/segmentation/clitkExtractLymphStationsGenericFilter.txx b/segmentation/clitkExtractLymphStationsGenericFilter.txx index 2644c1f..317c78a 100644 --- a/segmentation/clitkExtractLymphStationsGenericFilter.txx +++ b/segmentation/clitkExtractLymphStationsGenericFilter.txx @@ -28,7 +28,7 @@ clitk::ExtractLymphStationsGenericFilter::ExtractLymphStationsGene { // Default values cmdline_parser_clitkExtractLymphStations_init(&mArgsInfo); - InitializeImageType<3>(); + InitializeImageType<3>(); // Only for 3D images } //-------------------------------------------------------------------- @@ -38,10 +38,7 @@ template template void clitk::ExtractLymphStationsGenericFilter::InitializeImageType() { - ADD_IMAGE_TYPE(Dim, uchar); - // ADD_IMAGE_TYPE(Dim, short); - // ADD_IMAGE_TYPE(Dim, int); - // ADD_IMAGE_TYPE(Dim, float); + ADD_IMAGE_TYPE(Dim, short); // Can add float later } //-------------------------------------------------------------------- @@ -53,9 +50,87 @@ void clitk::ExtractLymphStationsGenericFilter::SetArgsInfo(const A mArgsInfo=a; SetIOVerbose(mArgsInfo.verbose_flag); if (mArgsInfo.imagetypes_flag) this->PrintAvailableImageTypes(); - if (mArgsInfo.mediastinum_given) AddInputFilename(mArgsInfo.mediastinum_arg); - if (mArgsInfo.trachea_given) AddInputFilename(mArgsInfo.trachea_arg); - if (mArgsInfo.output_given) AddOutputFilename(mArgsInfo.output_arg); + if (mArgsInfo.input_given) AddInputFilename(mArgsInfo.input_arg); + if (mArgsInfo.output_given) AddOutputFilename(mArgsInfo.output_arg); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +template +template +void +clitk::ExtractLymphStationsGenericFilter:: +SetOptionsFromArgsInfoToFilter(FilterType * f) +{ + f->SetVerboseOptionFlag(mArgsInfo.verbose_flag); + f->SetVerboseStepFlag(mArgsInfo.verboseStep_flag); + f->SetWriteStepFlag(mArgsInfo.writeStep_flag); + f->SetVerboseMemoryFlag(mArgsInfo.verboseMemory_flag); + f->SetAFDBFilename(mArgsInfo.afdb_arg); + + f->SetComputeStationsSupportsFlag(!mArgsInfo.nosupport_flag); + + // Station 8 + //f->SetDistanceMaxToAnteriorPartOfTheSpine(mArgsInfo.S8_maxAntSpine_arg); + f->SetFuzzyThreshold("8", "Esophagus", mArgsInfo.S8_ft_Esophagus_arg); + // f->SetInjectedThresholdForS8(mArgsInfo.tS8_injectedThreshold_arg); + + // Check multiple options for radius dilatation + /* + typename FilterType::MaskImagePointType p; + SetMultipleOptionMacro(mArgsInfo, esophagusDilatation, 3, p); + default ? = set before + exception if fail + */ + typename FilterType::MaskImagePointType p; + p[0] = 7; p[1] = 5; p[2] = 0; // default value + if (mArgsInfo.S8_esophagusDilatationForAnt_given == 3) { + for(uint i=0; i<3; i++) + p[i] = mArgsInfo.S8_esophagusDilatationForAnt_arg[i]; + } + else { + if (mArgsInfo.S8_esophagusDilatationForAnt_given == 1) { + for(uint i=0; i<3; i++) + p[i] = mArgsInfo.S8_esophagusDilatationForAnt_arg[0]; + } + } + f->SetEsophagusDiltationForAnt(p); + + p[0] = 5; p[1] = 10; p[2] = 1; // default value + if (mArgsInfo.S8_esophagusDilatationForRight_given == 3) { + for(uint i=0; i<3; i++) + p[i] = mArgsInfo.S8_esophagusDilatationForRight_arg[i]; + } + else { + if (mArgsInfo.S8_esophagusDilatationForRight_given == 1) { + for(uint i=0; i<3; i++) + p[i] = mArgsInfo.S8_esophagusDilatationForRight_arg[0]; + } + } + f->SetEsophagusDiltationForRight(p); + + for(uint i=0; iAddComputeStation(mArgsInfo.station_arg[i]); + + // Station 3A + + // Station 7 + f->SetFuzzyThreshold("7", "Bronchi", mArgsInfo.S7_ft_Bronchi_arg); + f->SetFuzzyThreshold("7", "LeftSuperiorPulmonaryVein", mArgsInfo.S7_ft_LeftSuperiorPulmonaryVein_arg); + f->SetFuzzyThreshold("7", "RightSuperiorPulmonaryVein", mArgsInfo.S7_ft_RightSuperiorPulmonaryVein_arg); + f->SetFuzzyThreshold("7", "RightPulmonaryArtery", mArgsInfo.S7_ft_RightPulmonaryArtery_arg); + f->SetFuzzyThreshold("7", "LeftPulmonaryArtery", mArgsInfo.S7_ft_LeftPulmonaryArtery_arg); + f->SetFuzzyThreshold("7", "SVC", mArgsInfo.S7_ft_SVC_arg); + f->SetS7_UseMostInferiorPartOnlyFlag(mArgsInfo.S7_UseMostInferiorPartOnly_flag); + + // Station 2RL + + // Station 1RL + + // Set RelativePositionList filenames + for(uint i=0; iAddRelativePositionListFilename(mArgsInfo.relpos_arg[i]); } //-------------------------------------------------------------------- @@ -68,31 +143,24 @@ template void clitk::ExtractLymphStationsGenericFilter::UpdateWithInputImageType() { // Reading input - typename ImageType::Pointer mediastinum = this->template GetInput(0); - typename ImageType::Pointer trachea = this->template GetInput(1); + typename ImageType::Pointer input = this->template GetInput(0); // Create filter typedef clitk::ExtractLymphStationsFilter FilterType; typename FilterType::Pointer filter = FilterType::New(); // Set global Options - filter->SetInputMediastinumLabelImage(mediastinum, 0); // change 0 with BG - filter->SetInputTracheaLabelImage(trachea, 0); // change 0 with BG - 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 ImageType::Pointer output = filter->GetOutput(); - this->template SetNextOutput(output); + typedef uchar MaskImagePixelType; + typedef itk::Image OutputImageType; + typename OutputImageType::Pointer output = filter->GetOutput(); + this->template SetNextOutput(output); } //--------------------------------------------------------------------