- // Crop the trachea like the current support
- MaskImagePointer crop_trachea =
- clitk::ResizeImageLike<MaskImageType>(m_Trachea, m_Working_Support, GetBackgroundValue());
- writeImage<MaskImageType>(crop_trachea, "croptrachea.mhd");
+ // Store image filenames into AFDB
+ WriteImageStation("4L");
+ StopSubStep();
+ ComputeOverlapWithRef("4L");
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template <class TImageType>
+void
+clitk::ExtractLymphStationsFilter<TImageType>::
+ExtractStation_S4L_S5_Limits_Aorta_LeftPulmonaryArtery(int KeepPoint)
+{
+ // ----------------------------------------------------------
+ StartNewStep("[Station 4L] Limits between Asc and Desc Aorta, and with LeftPulmonaryArtery ");
+
+ // Separate Aorta into DescendingAorta AscendingAorta
+ MaskImagePointer AscendingAorta = GetAFDB()->template GetImage<MaskImageType>("AscendingAorta");
+ MaskImagePointer DescendingAorta = GetAFDB()->template GetImage<MaskImageType>("DescendingAorta");
+
+ // Crop like support (inferiorly)
+ m_Working_Support = clitk::AutoCrop<MaskImageType>(m_Working_Support, GetBackgroundValue());
+ AscendingAorta =
+ clitk::ResizeImageLike<MaskImageType>(AscendingAorta, m_Working_Support, GetBackgroundValue());
+ DescendingAorta =
+ clitk::ResizeImageLike<MaskImageType>(DescendingAorta, m_Working_Support, GetBackgroundValue());
+
+ // Crop superior part (when AscendingAorta and DescendingAorta join)
+ MaskImagePointType p;
+ clitk::FindExtremaPointInAGivenDirection<MaskImageType>(AscendingAorta,
+ GetBackgroundValue(), 2, false, p);
+ double max = p[2]+AscendingAorta->GetSpacing()[2];
+ AscendingAorta =
+ clitk::CropImageRemoveGreaterThan<MaskImageType>(AscendingAorta, 2, max, false, GetBackgroundValue());
+ DescendingAorta =
+ clitk::CropImageRemoveGreaterThan<MaskImageType>(DescendingAorta, 2, max, false, GetBackgroundValue());