Package org.itk.simple
Class BinaryMinMaxCurvatureFlowImageFilter
java.lang.Object
org.itk.simple.ProcessObject
org.itk.simple.ImageFilter
org.itk.simple.BinaryMinMaxCurvatureFlowImageFilter
Denoise a binary image using min/max curvature flow.
BinaryMinMaxCurvatureFlowImageFilter implements a curvature driven image denoising algorithm. This filter
assumes that the image is essentially binary: consisting of two
classes. Iso-brightness contours in the input image are viewed as a
level set. The level set is then evolved using a curvature-based speed
function:
\\[ I_t = F_{\\mbox{minmax}} |\\nabla I| \\]
where $ F_{\\mbox{minmax}} = \\min(\\kappa,0) $ if $ \\mbox{Avg}_{\\mbox{stencil}}(x) $ is less than or equal to $ T_{threshold} $ and $ \\max(\\kappa,0) $ , otherwise. $ \\kappa $ is the mean curvature of the iso-brightness contour at point $ x $ .
In min/max curvature flow, movement is turned on or off depending on
the scale of the noise one wants to remove. Switching depends on the
average image value of a region of radius $ R $ around each point. The choice of $ R $ , the stencil radius, governs the scale of the noise to be removed.
The threshold value $ T_{threshold} $ is a user specified value which discriminates between the two pixel
classes.
This filter make use of the multi-threaded finite difference solver
hierarchy. Updates are computed using a BinaryMinMaxCurvatureFlowFunction object. A zero flux Neumann boundary condition is used when computing
derivatives near the data boundary.
WARNING:
This filter assumes that the input and output types have the same
dimensions. This filter also requires that the output image pixels are
of a real type. This filter works for any dimensional images.
Reference: "Level Set Methods and Fast Marching Methods", J.A.
Sethian, Cambridge Press, Chapter 16, Second edition, 1999.
See:
BinaryMinMaxCurvatureFlowFunction
CurvatureFlowImageFilter
MinMaxCurvatureFlowImageFilter
itk::simple::BinaryMinMaxCurvatureFlow for the procedural interface
itk::BinaryMinMaxCurvatureFlowImageFilter for the Doxygen on the original ITK class.
C++ includes: sitkBinaryMinMaxCurvatureFlowImageFilter.h
-
Field Summary
Fields inherited from class org.itk.simple.ProcessObject
swigCMemOwn
-
Constructor Summary
ConstructorsModifierConstructorDescriptionitk::simple::BinaryMinMaxCurvatureFlowImageFilter::BinaryMinMaxCurvatureFlowImageFilter() Default Constructor that takes no arguments and initializes default parametersprotected
BinaryMinMaxCurvatureFlowImageFilter
(long cPtr, boolean cMemoryOwn) -
Method Summary
Modifier and TypeMethodDescriptionvoid
delete()
virtual itk::simple::BinaryMinMaxCurvatureFlowImageFilter::~BinaryMinMaxCurvatureFlowImageFilter() DestructorImage itk::simple::BinaryMinMaxCurvatureFlowImageFilter::Execute(Image &&image1) Execute the filter on the input imageprotected void
finalize()
protected static long
getName()
std::string itk::simple::BinaryMinMaxCurvatureFlowImageFilter::GetName() const Name of this classlong
uint32_t itk::simple::BinaryMinMaxCurvatureFlowImageFilter::GetNumberOfIterations() constint
int itk::simple::BinaryMinMaxCurvatureFlowImageFilter::GetStencilRadius() constdouble
double itk::simple::BinaryMinMaxCurvatureFlowImageFilter::GetThreshold() const Set/Get the threshold value.double
double itk::simple::BinaryMinMaxCurvatureFlowImageFilter::GetTimeStep() constvoid
setNumberOfIterations
(long NumberOfIterations) Self& itk::simple::BinaryMinMaxCurvatureFlowImageFilter::SetNumberOfIterations(uint32_t NumberOfIterations)void
setStencilRadius
(int StencilRadius) Self& itk::simple::BinaryMinMaxCurvatureFlowImageFilter::SetStencilRadius(int StencilRadius)void
setThreshold
(double Threshold) Self& itk::simple::BinaryMinMaxCurvatureFlowImageFilter::SetThreshold(double Threshold) Set/Get the threshold value.void
setTimeStep
(double TimeStep) Self& itk::simple::BinaryMinMaxCurvatureFlowImageFilter::SetTimeStep(double TimeStep)protected static long
toString()
std::string itk::simple::BinaryMinMaxCurvatureFlowImageFilter::ToString() const Print ourselves outMethods inherited from class org.itk.simple.ImageFilter
getCPtr, swigRelease
Methods inherited from class org.itk.simple.ProcessObject
abort, addCommand, debugOff, debugOn, getCPtr, getDebug, getGlobalDefaultCoordinateTolerance, getGlobalDefaultDebug, getGlobalDefaultDirectionTolerance, getGlobalDefaultNumberOfThreads, getGlobalDefaultThreader, getGlobalWarningDisplay, getNumberOfThreads, getNumberOfWorkUnits, getProgress, globalDefaultDebugOff, globalDefaultDebugOn, globalWarningDisplayOff, globalWarningDisplayOn, hasCommand, removeAllCommands, setDebug, setGlobalDefaultCoordinateTolerance, setGlobalDefaultDebug, setGlobalDefaultDirectionTolerance, setGlobalDefaultNumberOfThreads, setGlobalDefaultThreader, setGlobalWarningDisplay, setNumberOfThreads, setNumberOfWorkUnits, swigRelease
-
Constructor Details
-
BinaryMinMaxCurvatureFlowImageFilter
protected BinaryMinMaxCurvatureFlowImageFilter(long cPtr, boolean cMemoryOwn) -
BinaryMinMaxCurvatureFlowImageFilter
public BinaryMinMaxCurvatureFlowImageFilter()itk::simple::BinaryMinMaxCurvatureFlowImageFilter::BinaryMinMaxCurvatureFlowImageFilter() Default Constructor that takes no arguments and initializes default parameters
-
-
Method Details
-
getCPtr
-
swigRelease
-
finalize
protected void finalize()- Overrides:
finalize
in classImageFilter
-
delete
public void delete()virtual itk::simple::BinaryMinMaxCurvatureFlowImageFilter::~BinaryMinMaxCurvatureFlowImageFilter() Destructor- Overrides:
delete
in classImageFilter
-
setTimeStep
public void setTimeStep(double TimeStep) Self& itk::simple::BinaryMinMaxCurvatureFlowImageFilter::SetTimeStep(double TimeStep) -
getTimeStep
public double getTimeStep()double itk::simple::BinaryMinMaxCurvatureFlowImageFilter::GetTimeStep() const -
setNumberOfIterations
public void setNumberOfIterations(long NumberOfIterations) Self& itk::simple::BinaryMinMaxCurvatureFlowImageFilter::SetNumberOfIterations(uint32_t NumberOfIterations) -
getNumberOfIterations
public long getNumberOfIterations()uint32_t itk::simple::BinaryMinMaxCurvatureFlowImageFilter::GetNumberOfIterations() const -
setStencilRadius
public void setStencilRadius(int StencilRadius) Self& itk::simple::BinaryMinMaxCurvatureFlowImageFilter::SetStencilRadius(int StencilRadius) -
getStencilRadius
public int getStencilRadius()int itk::simple::BinaryMinMaxCurvatureFlowImageFilter::GetStencilRadius() const -
setThreshold
public void setThreshold(double Threshold) Self& itk::simple::BinaryMinMaxCurvatureFlowImageFilter::SetThreshold(double Threshold) Set/Get the threshold value. -
getThreshold
public double getThreshold()double itk::simple::BinaryMinMaxCurvatureFlowImageFilter::GetThreshold() const Set/Get the threshold value. -
getName
std::string itk::simple::BinaryMinMaxCurvatureFlowImageFilter::GetName() const Name of this class- Overrides:
getName
in classProcessObject
-
toString
std::string itk::simple::BinaryMinMaxCurvatureFlowImageFilter::ToString() const Print ourselves out- Overrides:
toString
in classProcessObject
-
execute
Image itk::simple::BinaryMinMaxCurvatureFlowImageFilter::Execute(Image &&image1) Execute the filter on the input image
-