X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=segmentation%2FclitkExtractLymphStationsFilter.txx;h=b81ae07ab7e5748f0edf12ee673b03cced2d434e;hb=60d23fcd357696aa97aa4a6ebb96fa807f693613;hp=5994f8fd123f8d679201db6d684cd5e7846fb208;hpb=38786c4da19b87319bbe3cecc145e3d1771d10da;p=clitk.git diff --git a/segmentation/clitkExtractLymphStationsFilter.txx b/segmentation/clitkExtractLymphStationsFilter.txx index 5994f8f..b81ae07 100644 --- a/segmentation/clitkExtractLymphStationsFilter.txx +++ b/segmentation/clitkExtractLymphStationsFilter.txx @@ -44,6 +44,7 @@ template clitk::ExtractLymphStationsFilter:: ExtractLymphStationsFilter(): clitk::FilterBase(), + clitk::FilterWithAnatomicalFeatureDatabaseManagement(), itk::ImageToImageFilter() { this->SetNumberOfRequiredInputs(1); @@ -51,9 +52,9 @@ ExtractLymphStationsFilter(): SetBackgroundValueTrachea(0); SetBackgroundValue(0); SetForegroundValue(1); - SetIntermediateSpacing(6); - SetFuzzyThreshold1(0.6); + SetFuzzyThreshold1(0.6); + m_CarinaZPositionInMMIsSet = false; } //-------------------------------------------------------------------- @@ -64,11 +65,7 @@ void clitk::ExtractLymphStationsFilter:: SetInputMediastinumLabelImage(const TImageType * image, ImagePixelType bg) { this->SetNthInput(0, const_cast(image)); - m_BackgroundValueMediastinum = bg; - SetCarenaZPositionInMM(image->GetOrigin()[2]+image->GetLargestPossibleRegion().GetSize()[2]*image->GetSpacing()[2]); - SetMiddleLobeBronchusZPositionInMM(image->GetOrigin()[2]); - // DD(m_CarenaZPositionInMM); -// DD(m_MiddleLobeBronchusZPositionInMM); + SetBackgroundValueMediastinum(bg); } //-------------------------------------------------------------------- @@ -79,7 +76,7 @@ void clitk::ExtractLymphStationsFilter:: SetInputTracheaLabelImage(const TImageType * image, ImagePixelType bg) { this->SetNthInput(1, const_cast(image)); - m_BackgroundValueTrachea = bg; + SetBackgroundValueTrachea(bg); } //-------------------------------------------------------------------- @@ -95,11 +92,12 @@ SetArgsInfo(ArgsInfoType mArgsInfo) SetVerboseStep_GGO(mArgsInfo); SetWriteStep_GGO(mArgsInfo); SetVerboseWarningOff_GGO(mArgsInfo); - SetCarenaZPositionInMM_GGO(mArgsInfo); + SetAFDBFilename_GGO(mArgsInfo); + SetCarinaZPositionInMM_GGO(mArgsInfo); + m_CarinaZPositionInMMIsSet = false; SetMiddleLobeBronchusZPositionInMM_GGO(mArgsInfo); SetIntermediateSpacing_GGO(mArgsInfo); SetFuzzyThreshold1_GGO(mArgsInfo); - //SetBackgroundValueMediastinum_GGO(mArgsInfo); } //-------------------------------------------------------------------- @@ -114,19 +112,29 @@ GenerateOutputInformation() { // Get input m_mediastinum = dynamic_cast(itk::ProcessObject::GetInput(0)); m_trachea = dynamic_cast(itk::ProcessObject::GetInput(1)); - + + // Get landmarks information + if (!m_CarinaZPositionInMMIsSet) { + ImagePointType carina; + LoadAFDB(); + GetAFDB()->GetPoint3D("Carina", carina); + DD(carina); + m_CarinaZPositionInMM = carina[2]; + } + DD(m_CarinaZPositionInMM); + // ---------------------------------------------------------------- // ---------------------------------------------------------------- - // Superior limit = carena - // Inferior limit = origine middle lobe bronchus - StartNewStep("Inf/Sup mediastinum limits with carena/bronchus"); + // Superior limit = carina + // Inferior limit = origin right middle lobe bronchus + StartNewStep("Inf/Sup mediastinum limits with carina/bronchus"); ImageRegionType region = m_mediastinum->GetLargestPossibleRegion(); DD(region); ImageSizeType size = region.GetSize(); ImageIndexType index = region.GetIndex(); - DD(m_CarenaZPositionInMM); + DD(m_CarinaZPositionInMM); DD(m_MiddleLobeBronchusZPositionInMM); index[2] = floor((m_MiddleLobeBronchusZPositionInMM - m_mediastinum->GetOrigin()[2]) / m_mediastinum->GetSpacing()[2]); - size[2] = ceil((m_CarenaZPositionInMM-m_MiddleLobeBronchusZPositionInMM) / m_mediastinum->GetSpacing()[2]); + size[2] = 1+ceil((m_CarinaZPositionInMM-m_MiddleLobeBronchusZPositionInMM) / m_mediastinum->GetSpacing()[2]); // +1 to region.SetSize(size); region.SetIndex(index); DD(region); @@ -144,7 +152,7 @@ GenerateOutputInformation() { // ---------------------------------------------------------------- // ---------------------------------------------------------------- // Separate trachea in two CCL - StartNewStep("Separate trachea under carena"); + StartNewStep("Separate trachea under carina"); // DD(region); ImageRegionType trachea_region = m_trachea->GetLargestPossibleRegion(); for(int i=0; i<3; i++) { @@ -227,7 +235,7 @@ GenerateOutputInformation() { sliceRelPosFilter->SetInput(m_working_image); sliceRelPosFilter->SetInputObject(temp); sliceRelPosFilter->SetDirection(2); - sliceRelPosFilter->SetFuzzyThreshold(0.8); + sliceRelPosFilter->SetFuzzyThreshold(0.6); sliceRelPosFilter->SetOrientationType(SliceRelPosFilterType::RelPosFilterType::RightTo); sliceRelPosFilter->Update(); m_working_image = sliceRelPosFilter->GetOutput(); @@ -247,7 +255,7 @@ GenerateOutputInformation() { sliceRelPosFilter->SetInput(m_working_image); sliceRelPosFilter->SetInputObject(temp); sliceRelPosFilter->SetDirection(2); - sliceRelPosFilter->SetFuzzyThreshold(0.8); + sliceRelPosFilter->SetFuzzyThreshold(0.6); sliceRelPosFilter->SetOrientationType(SliceRelPosFilterType::RelPosFilterType::LeftTo); sliceRelPosFilter->Update(); m_working_image = sliceRelPosFilter->GetOutput();