X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=itk%2FclitkSegmentationUtils.txx;h=b432188aec93aa8e34a21f1047ea3d22991a2c25;hb=9516d5226b4dba29c89091ede113533ac19bced9;hp=f7b897e1f7805ffd4067af65af523ab9a3e4dbdc;hpb=4e3f0a4b3b15c54dd8c1cda766178c8f123b6951;p=clitk.git diff --git a/itk/clitkSegmentationUtils.txx b/itk/clitkSegmentationUtils.txx index f7b897e..b432188 100644 --- a/itk/clitkSegmentationUtils.txx +++ b/itk/clitkSegmentationUtils.txx @@ -33,6 +33,7 @@ #include #include #include +#include namespace clitk { @@ -465,7 +466,7 @@ namespace clitk { p[dim] = max; typename ImageType::IndexType end; image->TransformPhysicalPointToIndex(p, end); - size[dim] = fabs(end[dim]-start[dim]); + size[dim] = abs(end[dim]-start[dim]); region.SetIndex(start); region.SetSize(size); @@ -519,6 +520,30 @@ namespace clitk { //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + template + typename itk::LabelMap< itk::ShapeLabelObject >::Pointer + ComputeLabelMap(const ImageType * image, + typename ImageType::PixelType BG, + bool computePerimeterFlag) + { + static const unsigned int Dim = ImageType::ImageDimension; + typedef itk::ShapeLabelObject< LabelType, Dim > LabelObjectType; + typedef itk::LabelMap< LabelObjectType > LabelMapType; + typedef itk::LabelImageToLabelMapFilter ImageToMapFilterType; + typename ImageToMapFilterType::Pointer imageToLabelFilter = ImageToMapFilterType::New(); + typedef itk::ShapeLabelMapFilter ShapeFilterType; + typename ShapeFilterType::Pointer statFilter = ShapeFilterType::New(); + imageToLabelFilter->SetBackgroundValue(BG); + imageToLabelFilter->SetInput(image); + statFilter->SetInput(imageToLabelFilter->GetOutput()); + statFilter->SetComputePerimeter(computePerimeterFlag); + statFilter->Update(); + return statFilter->GetOutput(); + } + //-------------------------------------------------------------------- + + //-------------------------------------------------------------------- template void @@ -560,25 +585,6 @@ namespace clitk { //-------------------------------------------------------------------- - //-------------------------------------------------------------------- - template - void - ExtractSlices(const ImageType * image, int direction, - std::vector::Pointer > & slices) - { - typedef ExtractSliceFilter ExtractSliceFilterType; - typedef typename ExtractSliceFilterType::SliceType SliceType; - typename ExtractSliceFilterType::Pointer - extractSliceFilter = ExtractSliceFilterType::New(); - extractSliceFilter->SetInput(image); - extractSliceFilter->SetDirection(direction); - extractSliceFilter->Update(); - extractSliceFilter->GetOutputSlices(slices); - } - //-------------------------------------------------------------------- - - //-------------------------------------------------------------------- template void @@ -1076,5 +1082,18 @@ namespace clitk { //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + template + typename ImageType::Pointer + Clone(const ImageType * input) { + typedef itk::ImageDuplicator DuplicatorType; + typename DuplicatorType::Pointer duplicator = DuplicatorType::New(); + duplicator->SetInputImage(input); + duplicator->Update(); + return duplicator->GetOutput(); + } + //-------------------------------------------------------------------- + + } // end of namespace