Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
2.3 KiB

2 years ago
/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkImageSkeleton2D.h,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkImageSkeleton2D - Skeleton of 2D images.
// .SECTION Description
// vtkImageSkeleton2D should leave only single pixel width lines
// of non-zero-valued pixels (values of 1 are not allowed).
// It works by erosion on a 3x3 neighborhood with special rules.
// The number of iterations determines how far the filter can erode.
// There are three pruning levels:
// prune == 0 will leave traces on all angles...
// prune == 1 will not leave traces on 135 degree angles, but will on 90.
// prune == 2 does not leave traces on any angles leaving only closed loops.
// Prune defaults to zero. The output scalar type is the same as the input.
#ifndef __vtkImageSkeleton2D_h
#define __vtkImageSkeleton2D_h
#include "vtkImageIterateFilter.h"
class VTK_IMAGING_EXPORT vtkImageSkeleton2D : public vtkImageIterateFilter
{
public:
static vtkImageSkeleton2D *New();
vtkTypeRevisionMacro(vtkImageSkeleton2D,vtkImageIterateFilter);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// When prune is on, only closed loops are left unchanged.
vtkSetMacro(Prune,int);
vtkGetMacro(Prune,int);
vtkBooleanMacro(Prune,int);
// Description:
// Sets the number of cycles in the erosion.
void SetNumberOfIterations(int num);
protected:
vtkImageSkeleton2D();
~vtkImageSkeleton2D() {};
int Prune;
virtual int IterativeRequestUpdateExtent(vtkInformation* in,
vtkInformation* out);
void ThreadedExecute(vtkImageData *inData, vtkImageData *outData,
int outExt[6], int id);
private:
vtkImageSkeleton2D(const vtkImageSkeleton2D&); // Not implemented.
void operator=(const vtkImageSkeleton2D&); // Not implemented.
};
#endif