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.
117 lines
3.7 KiB
117 lines
3.7 KiB
2 years ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: $RCSfile: vtkImageOpenClose3D.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 vtkImageOpenClose3D - Will perform opening or closing.
|
||
|
// .SECTION Description
|
||
|
// vtkImageOpenClose3D performs opening or closing by having two
|
||
|
// vtkImageErodeDilates in series. The size of operation
|
||
|
// is determined by the method SetKernelSize, and the operator is an ellipse.
|
||
|
// OpenValue and CloseValue determine how the filter behaves. For binary
|
||
|
// images Opening and closing behaves as expected.
|
||
|
// Close value is first dilated, and then eroded.
|
||
|
// Open value is first eroded, and then dilated.
|
||
|
// Degenerate two dimensional opening/closing can be achieved by setting the
|
||
|
// one axis the 3D KernelSize to 1.
|
||
|
// Values other than open value and close value are not touched.
|
||
|
// This enables the filter to processes segmented images containing more than
|
||
|
// two tags.
|
||
|
|
||
|
|
||
|
#ifndef __vtkImageOpenClose3D_h
|
||
|
#define __vtkImageOpenClose3D_h
|
||
|
|
||
|
|
||
|
#include "vtkImageAlgorithm.h"
|
||
|
|
||
|
class vtkImageDilateErode3D;
|
||
|
|
||
|
class VTK_IMAGING_EXPORT vtkImageOpenClose3D : public vtkImageAlgorithm
|
||
|
{
|
||
|
public:
|
||
|
// Description:
|
||
|
// Default open value is 0, and default close value is 255.
|
||
|
static vtkImageOpenClose3D *New();
|
||
|
vtkTypeRevisionMacro(vtkImageOpenClose3D,vtkImageAlgorithm);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent);
|
||
|
|
||
|
// Description:
|
||
|
// This method considers the sub filters MTimes when computing this objects
|
||
|
// modified time.
|
||
|
unsigned long int GetMTime();
|
||
|
|
||
|
// Description:
|
||
|
// Turn debugging output on. (in sub filters also)
|
||
|
void DebugOn();
|
||
|
void DebugOff();
|
||
|
|
||
|
// Description:
|
||
|
// Pass modified message to sub filters.
|
||
|
void Modified();
|
||
|
|
||
|
// Foward Source messages to filter1
|
||
|
|
||
|
// Description:
|
||
|
// Selects the size of gaps or objects removed.
|
||
|
void SetKernelSize(int size0, int size1, int size2);
|
||
|
|
||
|
// Description:
|
||
|
// Determines the value that will opened.
|
||
|
// Open value is first eroded, and then dilated.
|
||
|
void SetOpenValue(double value);
|
||
|
double GetOpenValue();
|
||
|
|
||
|
// Description:
|
||
|
// Determines the value that will closed.
|
||
|
// Close value is first dilated, and then eroded
|
||
|
void SetCloseValue(double value);
|
||
|
double GetCloseValue();
|
||
|
|
||
|
// Description:
|
||
|
// Needed for Progress functions
|
||
|
vtkGetObjectMacro(Filter0, vtkImageDilateErode3D);
|
||
|
vtkGetObjectMacro(Filter1, vtkImageDilateErode3D);
|
||
|
|
||
|
// Description:
|
||
|
// see vtkAlgorithm for details
|
||
|
virtual int ProcessRequest(vtkInformation*,
|
||
|
vtkInformationVector**,
|
||
|
vtkInformationVector*);
|
||
|
|
||
|
// Description:
|
||
|
// Override to send the request to internal pipeline.
|
||
|
virtual int
|
||
|
ComputePipelineMTime(vtkInformation* request,
|
||
|
vtkInformationVector** inInfoVec,
|
||
|
vtkInformationVector* outInfoVec,
|
||
|
int requestFromOutputPort,
|
||
|
unsigned long* mtime);
|
||
|
|
||
|
protected:
|
||
|
vtkImageOpenClose3D();
|
||
|
~vtkImageOpenClose3D();
|
||
|
|
||
|
vtkImageDilateErode3D *Filter0;
|
||
|
vtkImageDilateErode3D *Filter1;
|
||
|
|
||
|
virtual void ReportReferences(vtkGarbageCollector*);
|
||
|
private:
|
||
|
vtkImageOpenClose3D(const vtkImageOpenClose3D&); // Not implemented.
|
||
|
void operator=(const vtkImageOpenClose3D&); // Not implemented.
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|