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.
89 lines
2.5 KiB
89 lines
2.5 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkImageIslandRemoval2D.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 vtkImageIslandRemoval2D - Removes small clusters in masks.
|
|
// .SECTION Description
|
|
// vtkImageIslandRemoval2D computes the area of separate islands in
|
|
// a mask image. It removes any island that has less than AreaThreshold
|
|
// pixels. Output has the same ScalarType as input. It generates
|
|
// the whole 2D output image for any output request.
|
|
|
|
|
|
#ifndef __vtkImageIslandRemoval2D_h
|
|
#define __vtkImageIslandRemoval2D_h
|
|
|
|
|
|
#include "vtkImageAlgorithm.h"
|
|
|
|
//BTX
|
|
typedef struct{
|
|
void *inPtr;
|
|
void *outPtr;
|
|
int idx0;
|
|
int idx1;
|
|
} vtkImage2DIslandPixel;
|
|
//ETX
|
|
|
|
class VTK_IMAGING_EXPORT vtkImageIslandRemoval2D : public vtkImageAlgorithm
|
|
{
|
|
public:
|
|
// Description:
|
|
// Constructor: Sets default filter to be identity.
|
|
static vtkImageIslandRemoval2D *New();
|
|
vtkTypeRevisionMacro(vtkImageIslandRemoval2D,vtkImageAlgorithm);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Set/Get the cutoff area for removal
|
|
vtkSetMacro(AreaThreshold, int);
|
|
vtkGetMacro(AreaThreshold, int);
|
|
|
|
// Description:
|
|
// Set/Get whether to use 4 or 8 neighbors
|
|
vtkSetMacro(SquareNeighborhood, int);
|
|
vtkGetMacro(SquareNeighborhood, int);
|
|
vtkBooleanMacro(SquareNeighborhood, int);
|
|
|
|
// Description:
|
|
// Set/Get the value to remove.
|
|
vtkSetMacro(IslandValue, double);
|
|
vtkGetMacro(IslandValue, double);
|
|
|
|
// Description:
|
|
// Set/Get the value to put in the place of removed pixels.
|
|
vtkSetMacro(ReplaceValue, double);
|
|
vtkGetMacro(ReplaceValue, double);
|
|
|
|
protected:
|
|
vtkImageIslandRemoval2D();
|
|
~vtkImageIslandRemoval2D() {};
|
|
|
|
int AreaThreshold;
|
|
int SquareNeighborhood;
|
|
double IslandValue;
|
|
double ReplaceValue;
|
|
|
|
virtual int RequestData(vtkInformation *,
|
|
vtkInformationVector **,
|
|
vtkInformationVector *);
|
|
|
|
private:
|
|
vtkImageIslandRemoval2D(const vtkImageIslandRemoval2D&); // Not implemented.
|
|
void operator=(const vtkImageIslandRemoval2D&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|