-
- // Other solution ==> with auto bounding box ! (but pb to prevent to
- // be too distant from the center point
-
- // Extract slices
- std::vector<typename MaskSliceType::Pointer> slices;
- clitk::ExtractSlices<MaskImageType>(input, 2, slices);
-
- // Loop on slices
- bool found;
- for(uint i=0; i<slices.size(); i++) {
- /*
- // Keep main CCL
- slices[i] = Labelize<MaskSliceType>(slices[i], 0, true, 10);
- slices[i] = KeepLabels<MaskSliceType>(slices[i],
- GetBackgroundValue(),
- GetForegroundValue(), 1, 1, true);
- */
-
- // ------- Find rightmost or leftmost point -------
- MaskSliceType::PointType LRMost;
- found =
- clitk::FindExtremaPointInAGivenDirection<MaskSliceType>(slices[i],
- GetBackgroundValue(),
- 0, // axis XY
- (direction==0?false:true), // right or left according to direction
- LRMost);
- // ------- Find postmost point -------
- MaskSliceType::PointType postMost;
- found =
- clitk::FindExtremaPointInAGivenDirection<MaskSliceType>(slices[i],
- GetBackgroundValue(),
- 1, false, LRMost,
- distance_max_from_center_point,
- postMost);
- // ------- Find antmost point -------
- MaskSliceType::PointType antMost;
- found =
- clitk::FindExtremaPointInAGivenDirection<MaskSliceType>(slices[i],
- GetBackgroundValue(),
- 1, true, LRMost,
- distance_max_from_center_point,
- antMost);
- // Only add point if found
- if (found) {
- // ------- Convert 2D to 3D points --------
- MaskImageType::PointType p;
- clitk::PointsUtils<MaskImageType>::Convert2DTo3D(LRMost, input, i, p);
- LR.push_back(p);
- clitk::PointsUtils<MaskImageType>::Convert2DTo3D(antMost, input, i, p);
- Ant.push_back(p);
- clitk::PointsUtils<MaskImageType>::Convert2DTo3D(postMost, input, i, p);
- Post.push_back(p);
- }