SetEsophagusDiltationForAnt(p);
p[0] = 5; p[1] = 10; p[2] = 1;
SetEsophagusDiltationForRight(p);
- SetFuzzyThresholdForS8(0.5);
+ SetFuzzyThreshold("8", "Esophagus", 0.5);
SetInjectedThresholdForS8(150);
}
//--------------------------------------------------------------------
// Convert 2D points in slice into 3D points
std::vector<MaskImagePointType> vertebralAntPositions;
- clitk::PointsUtils<MaskImageType>::Convert2DTo3DList(vertebralAntPositionBySlice,
- VertebralBody,
- vertebralAntPositions);
+ clitk::PointsUtils<MaskImageType>::Convert2DMapTo3DList(vertebralAntPositionBySlice,
+ VertebralBody,
+ vertebralAntPositions);
// DEBUG : write list of points
clitk::WriteListOfLandmarks<MaskImageType>(vertebralAntPositions,
MaskImagePointer Trachea = GetAFDB()->template GetImage<MaskImageType>("Trachea");
MaskImagePointer m_Working_Trachea =
- clitk::CropImageAbove<MaskImageType>(Trachea, 2, m_CarinaZ, true, // AutoCrop
+ clitk::CropImageRemoveGreaterThan<MaskImageType>(Trachea, 2, m_CarinaZ, true, // AutoCrop
GetBackgroundValue());
// Seprate into two main bronchi
OriginOfRightMiddleLobeBronchus->Delete();
RightBronchus =
- clitk::CropImageBelow<MaskImageType>(RightBronchus, 2,
+ clitk::CropImageRemoveLowerThan<MaskImageType>(RightBronchus, 2,
m_OriginOfRightMiddleLobeBronchusZ,
true, // AutoCrop
GetBackgroundValue());
LeftBronchus =
- clitk::CropImageBelow<MaskImageType>(LeftBronchus, 2,
+ clitk::CropImageRemoveLowerThan<MaskImageType>(LeftBronchus, 2,
m_OriginOfRightMiddleLobeBronchusZ,
true, // AutoCrop
GetBackgroundValue());
// Crop Esophagus : keep only below the OriginOfRightMiddleLobeBronchusZ
m_Esophagus =
- clitk::CropImageAbove<MaskImageType>(m_Esophagus, 2,
+ clitk::CropImageRemoveGreaterThan<MaskImageType>(m_Esophagus, 2,
m_OriginOfRightMiddleLobeBronchusZ,
true, // AutoCrop
GetBackgroundValue());
relPosFilter->WriteStepFlagOff();
relPosFilter->SetInput(m_Working_Support);
relPosFilter->SetInputObject(m_Esophagus);
- relPosFilter->AddOrientationTypeString("P");
- relPosFilter->InverseOrientationFlagOff();
+ relPosFilter->AddOrientationTypeString("PostTo");
+ // relPosFilter->InverseOrientationFlagOff();
relPosFilter->SetDirection(2); // Z axis
relPosFilter->UniqueConnectedComponentBySliceOff();
relPosFilter->SetIntermediateSpacing(3);
relPosFilter->IntermediateSpacingFlagOn();
- relPosFilter->SetFuzzyThreshold(GetFuzzyThresholdForS8());
+ relPosFilter->SetFuzzyThreshold(GetFuzzyThreshold("8", "Esophagus"));
relPosFilter->RemoveObjectFlagOff(); // Do not exclude here because it is dilated
relPosFilter->CombineWithOrFlagOff(); // NO !
relPosFilter->IgnoreEmptySliceObjectFlagOn();
ExtractStation_8_Single_CCL_Limits()
{
//--------------------------------------------------------------------
- StartNewStep("[Station8] Single CCL");
+ StartNewStep("[Station8 or 3P] Slice by slice, keep a single CCL (the closest to VertebralBody)");
// Consider slices
std::vector<typename MaskSliceType::Pointer> slices;
std::vector<typename MaskSliceType::PointType> c;
clitk::ComputeCentroids<MaskSliceType>(slices[i], GetBackgroundValue(), centroids);
clitk::ComputeCentroids<MaskSliceType>(slices_vb[i], GetBackgroundValue(), c);
- // DD(c.size());
- // DD(centroids.size());
if ((c.size() > 1) && (centroids.size() > 1)) {
// keep the one which is the closer to vertebralbody centroid
double distance=1000000;
int index=0;
- // DD(c[1]);
for(uint j=1; j<centroids.size(); j++) {
- // DD(centroids[j]);
double d = centroids[j].EuclideanDistanceTo(c[1]);
if (d<distance) {
distance = d;
std::vector<typename MaskSliceType::PointType> c;
clitk::ComputeCentroids<MaskSliceType>(eso_slices[i], GetBackgroundValue(), c);
if (c.size() >1) {
- // DD(c[1]);
eso_slices[i] =
- clitk::CropImageAbove<MaskSliceType>(eso_slices[i], 1, c[1][1], false, GetBackgroundValue());
+ clitk::CropImageRemoveGreaterThan<MaskSliceType>(eso_slices[i], 1, c[1][1], false, GetBackgroundValue());
eso_slices[i] =
clitk::ResizeImageLike<MaskSliceType>(eso_slices[i], aorta_slices[i], GetBackgroundValue());
// writeImage<MaskSliceType>(eso_slices[i], "eso-slice-"+toString(i)+".mhd");
j++;
}
}
- // DD(j);
sp_MostAntVertebralBody[1] += GetDistanceMaxToAnteriorPartOfTheSpine(); // Consider offset
// Crop the vertebralbody below this most post line
vert_slices[j] =
- clitk::CropImageAbove<MaskSliceType>(vert_slices[j], 1, sp_MostAntVertebralBody[1], false, GetBackgroundValue());
+ clitk::CropImageRemoveGreaterThan<MaskSliceType>(vert_slices[j], 1, sp_MostAntVertebralBody[1], false, GetBackgroundValue());
vert_slices[j] =
clitk::ResizeImageLike<MaskSliceType>(vert_slices[j], aorta_slices[i], GetBackgroundValue());
// writeImage<MaskSliceType>(vert_slices[i], "vert-slice-"+toString(i)+".mhd");
clitk::PointsUtils<MaskImageType>::Convert2DTo3D(sp_MostLeftVertebralBody, VertebralBody, i, p);
p_MostLeftVertebralBody.push_back(p);
- // DD(p_MostLeftVertebralBody.back());
-
/* -------------------------------------------------------------------------------------
Find most Left point in Esophagus
*/
// p_MostLeftEsophagus.push_back(p);
// sp_MostLeftEsophagus = sp_temp; // Retrieve previous 2D position
// found = true;
- // DD(p);
// }
}
else {
clitk::PointsUtils<MaskImageType>::Convert2DTo3D(sp_MostLeftEsophagus, EsophagusForSlice, i, p);
p_MostLeftEsophagus.push_back(p);
// sp_temp = sp_MostLeftEsophagus; // Store previous 2D position
- // // DD(p_MostLeftEsophagus.back());
}
/* -------------------------------------------------------------------------------------
//--------------------------------------------------------------------
StartNewStep("[Station8] remove some structures");
- MaskImagePointer Aorta = GetAFDB()->template GetImage<MaskImageType>("Aorta");
- clitk::AndNot<MaskImageType>(m_Working_Support, Aorta, GetBackgroundValue());
-
- MaskImagePointer Esophagus = GetAFDB()->template GetImage<MaskImageType>("Esophagus");
- clitk::AndNot<MaskImageType>(m_Working_Support, Esophagus, GetBackgroundValue());
+ Remove_Structures("8", "Aorta");
+ Remove_Structures("8", "Esophagus");
// END
StopCurrentStep<MaskImageType>(m_Working_Support);
clitk::FindExtremaPointInAGivenDirection<MaskImageType>(Esophagus, GetBackgroundValue(), 2, true, pt);
DD(pt);
Esophagus =
- clitk::CropImageBelow<MaskImageType>(Esophagus, 2,
+ clitk::CropImageRemoveLowerThan<MaskImageType>(Esophagus, 2,
pt[2],
false, // AutoCrop
GetBackgroundValue());
relPosFilter->WriteStepFlagOff();
relPosFilter->SetInput(m_Working_Support);
relPosFilter->SetInputObject(Esophagus);
- relPosFilter->AddOrientationTypeString("L");
- relPosFilter->InverseOrientationFlagOn(); // Not Left to
+ relPosFilter->AddOrientationTypeString("NotLeftTo");
+ // relPosFilter->InverseOrientationFlagOn(); // Not Left to
relPosFilter->SetDirection(2); // Z axis
relPosFilter->UniqueConnectedComponentBySliceOff(); // important
relPosFilter->SetIntermediateSpacing(4);