// itk
#include <itkBoundingBox.h>
+#include <itkJoinSeriesImageFilter.h>
/*
According to
typename ImageType::PixelType BG=0);
template<class ImageType>
typename ImageType::Pointer
- CropImageAbove(const ImageType * image,
- int dim, double min, bool autoCrop = false,
- typename ImageType::PixelType BG=0);
+ CropImageRemoveGreaterThan(const ImageType * image,
+ int dim, double min, bool autoCrop = false,
+ typename ImageType::PixelType BG=0);
template<class ImageType>
typename ImageType::Pointer
- CropImageBelow(const ImageType * image,
- int dim, double max,bool autoCrop = false,
- typename ImageType::PixelType BG=0);
+ CropImageRemoveLowerThan(const ImageType * image,
+ int dim, double max,bool autoCrop = false,
+ typename ImageType::PixelType BG=0);
//--------------------------------------------------------------------
ComputeCentroids(const ImageType * image,
typename ImageType::PixelType BG,
std::vector<typename ImageType::PointType> & centroids);
+ template<class ImageType>
+ void
+ ComputeCentroids2(const ImageType * image,
+ typename ImageType::PixelType BG,
+ std::vector<typename ImageType::PointType> & centroids);
//--------------------------------------------------------------------
//--------------------------------------------------------------------
- //template<class ImageType>
- //typename ImageType::Pointer
- //JoinSlices(std::vector<typename itk::Image<typename ImageType::PixelType,
- // ImageType::ImageDimension-1>::Pointer > & slices,
- // const ImageType * input, int dim);
+ template<class ImageType>
+ typename ImageType::Pointer
+ JoinSlices(std::vector<typename itk::Image<typename ImageType::PixelType,
+ ImageType::ImageDimension-1>::Pointer > & slices,
+ const ImageType * input,
+ int direction) {
+ typedef typename itk::Image<typename ImageType::PixelType, ImageType::ImageDimension-1> SliceType;
+ typedef itk::JoinSeriesImageFilter<SliceType, ImageType> JoinSeriesFilterType;
+ typename JoinSeriesFilterType::Pointer joinFilter = JoinSeriesFilterType::New();
+ joinFilter->SetOrigin(input->GetOrigin()[direction]);
+ joinFilter->SetSpacing(input->GetSpacing()[direction]);
+ for(unsigned int i=0; i<slices.size(); i++) {
+ joinFilter->PushBackInput(slices[i]);
+ }
+ joinFilter->Update();
+ return joinFilter->GetOutput();
+ }
//--------------------------------------------------------------------
typedef std::map<int, PointType2D> MapPoint2DType;
typedef std::vector<PointType3D> VectorPoint3DType;
+ typedef std::vector<PointType2D> VectorPoint2DType;
+
public:
static void Convert2DTo3D(const PointType2D & p2D,
const ImageType * image,
const int slice,
PointType3D & p3D);
- static void Convert2DTo3DList(const MapPoint2DType & map,
+ static void Convert2DMapTo3DList(const MapPoint2DType & map,
const ImageType * image,
VectorPoint3DType & list);
+ static void Convert2DListTo3DList(const VectorPoint2DType & p,
+ int slice,
+ const ImageType * image,
+ VectorPoint3DType & list);
};
//--------------------------------------------------------------------
bool extendSupport);
//--------------------------------------------------------------------
+
+ //--------------------------------------------------------------------
+ template<class ImageType>
+ typename ImageType::Pointer
+ Opening(const ImageType * image, typename ImageType::SizeType radius,
+ typename ImageType::PixelType BG, typename ImageType::PixelType FG);
+ //--------------------------------------------------------------------
+
+
//--------------------------------------------------------------------
template<class ValueType, class VectorType>
void ConvertOption(std::string optionName, uint given,
IsOnTheSameLineSide(PointType C, PointType A, PointType B, PointType like);
//--------------------------------------------------------------------
+
+ //--------------------------------------------------------------------
+ template<class ImageType>
+ void
+ SliceBySliceBuildLineSegmentAccordingToExtremaPosition(const ImageType * input,
+ typename ImageType::PixelType BG,
+ int sliceDimension,
+ int extremaDirection,
+ bool extremaOppositeFlag,
+ int lineDirection,
+ double margin,
+ std::vector<typename ImageType::PointType> & A,
+ std::vector<typename ImageType::PointType> & B);
+ //--------------------------------------------------------------------
+
+
+ //--------------------------------------------------------------------
+ template<class ImageType>
+ typename ImageType::Pointer
+ SliceBySliceKeepMainCCL(const ImageType * input,
+ typename ImageType::PixelType BG,
+ typename ImageType::PixelType FG);
+ //--------------------------------------------------------------------
+
+
}
#include "clitkSegmentationUtils.txx"