ITK
6.0.0
Insight Toolkit
|
#include <itkCurvatureNDAnisotropicDiffusionFunction.h>
This class implements a variation on the classic, Perona-Malik anisotropic image diffusion equation as described in itkGradientNDAnisotropicDiffusionFunction. This object is a level-set analog of that equation and will be referred to below as the modified curvature diffusion equation (MCDE). MCDE does not exhibit the edge enhancing properties of classic anisotropic diffusion, which can under certain conditions undergo a "negative" diffusion,which enhances the contrast of edges. Equations of the form of MCDE always undergo positive diffusion, with the conductance term only varying the strength of that diffusion.
\[ f_t = \mid \nabla f \mid \nabla \cdot c( \mid \nabla f \mid ) \frac{ \nabla f }{ \mid \nabla f \mid } \]
,
\[ \nabla \cdot \frac{\nabla f}{\mid \nabla f \mid} \]
.
Definition at line 75 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
Public Member Functions | |
PixelType | ComputeUpdate (const NeighborhoodType &it, void *globalData, const FloatOffsetType &offset=FloatOffsetType(0.0)) override |
const char * | GetNameOfClass () const override |
void | InitializeIteration () override |
Public Member Functions inherited from itk::ScalarAnisotropicDiffusionFunction< TImage > | |
void | CalculateAverageGradientMagnitudeSquared (TImage *) override |
const char * | GetNameOfClass () const override |
Public Member Functions inherited from itk::AnisotropicDiffusionFunction< TImage > | |
TimeStepType | ComputeGlobalTimeStep (void *) const override |
const double & | GetAverageGradientMagnitudeSquared () const |
const double & | GetConductanceParameter () const |
void * | GetGlobalDataPointer () const override |
const TimeStepType & | GetTimeStep () const |
void | ReleaseGlobalDataPointer (void *) const override |
void | SetAverageGradientMagnitudeSquared (const double c) |
void | SetConductanceParameter (const double c) |
void | SetTimeStep (const TimeStepType &t) |
Public Member Functions inherited from itk::FiniteDifferenceFunction< TImage > | |
const NeighborhoodScalesType | ComputeNeighborhoodScales () const |
const char * | GetNameOfClass () const override |
const RadiusType & | GetRadius () const |
void | GetScaleCoefficients (PixelRealType vals[ImageDimension]) const |
void | SetRadius (const RadiusType &r) |
void | SetScaleCoefficients (const PixelRealType vals[ImageDimension]) |
Public Member Functions inherited from itk::LightObject | |
Pointer | Clone () const |
virtual Pointer | CreateAnother () const |
virtual void | Delete () |
virtual int | GetReferenceCount () const |
void | Print (std::ostream &os, Indent indent=0) const |
virtual void | Register () const |
virtual void | SetReferenceCount (int) |
virtual void | UnRegister () const noexcept |
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::LightObject | |
static void | BreakOnError () |
static Pointer | New () |
Static Public Attributes | |
static constexpr unsigned int | ImageDimension = Superclass::ImageDimension |
Static Public Attributes inherited from itk::ScalarAnisotropicDiffusionFunction< TImage > | |
static constexpr unsigned int | ImageDimension = Superclass::ImageDimension |
Static Public Attributes inherited from itk::AnisotropicDiffusionFunction< TImage > | |
static constexpr unsigned int | ImageDimension = Superclass::ImageDimension |
Static Public Attributes inherited from itk::FiniteDifferenceFunction< TImage > | |
static constexpr unsigned int | ImageDimension |
Protected Member Functions | |
CurvatureNDAnisotropicDiffusionFunction () | |
~CurvatureNDAnisotropicDiffusionFunction () override=default | |
Protected Member Functions inherited from itk::ScalarAnisotropicDiffusionFunction< TImage > | |
ScalarAnisotropicDiffusionFunction ()=default | |
~ScalarAnisotropicDiffusionFunction () override=default | |
Protected Member Functions inherited from itk::AnisotropicDiffusionFunction< TImage > | |
AnisotropicDiffusionFunction () | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
~AnisotropicDiffusionFunction () override=default | |
Protected Member Functions inherited from itk::FiniteDifferenceFunction< TImage > | |
FiniteDifferenceFunction () | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
~FiniteDifferenceFunction () override=default | |
Protected Member Functions inherited from itk::LightObject | |
virtual LightObject::Pointer | InternalClone () const |
LightObject () | |
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
virtual | ~LightObject () |
Private Attributes | |
NeighborhoodSizeValueType | m_Center {} |
DerivativeOperator< PixelType, Self::ImageDimension > | m_DerivativeOperator {} |
NeighborhoodInnerProduct< ImageType > | m_InnerProduct {} |
PixelType | m_K {} |
NeighborhoodSizeValueType | m_Stride [ImageDimension] {} |
std::slice | x_slice [ImageDimension] |
std::slice | xa_slice [ImageDimension][ImageDimension] |
std::slice | xd_slice [ImageDimension][ImageDimension] |
Static Private Attributes | |
static double | m_MIN_NORM |
Additional Inherited Members | |
Protected Attributes inherited from itk::FiniteDifferenceFunction< TImage > | |
RadiusType | m_Radius |
PixelRealType | m_ScaleCoefficients [ImageDimension] |
Protected Attributes inherited from itk::LightObject | |
std::atomic< int > | m_ReferenceCount {} |
using itk::CurvatureNDAnisotropicDiffusionFunction< TImage >::ConstPointer = SmartPointer<const Self> |
Definition at line 85 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
using itk::CurvatureNDAnisotropicDiffusionFunction< TImage >::NeighborhoodSizeValueType = typename NeighborhoodType::SizeValueType |
Definition at line 101 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
using itk::CurvatureNDAnisotropicDiffusionFunction< TImage >::Pointer = SmartPointer<Self> |
Definition at line 84 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
using itk::CurvatureNDAnisotropicDiffusionFunction< TImage >::Self = CurvatureNDAnisotropicDiffusionFunction |
Standard class type aliases.
Definition at line 82 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
using itk::CurvatureNDAnisotropicDiffusionFunction< TImage >::Superclass = ScalarAnisotropicDiffusionFunction<TImage> |
Definition at line 83 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
protected |
|
overrideprotecteddefault |
|
overridevirtual |
Compute incremental update.
Implements itk::FiniteDifferenceFunction< TImage >.
|
overridevirtual |
Reimplemented from itk::AnisotropicDiffusionFunction< TImage >.
|
inlineoverridevirtual |
This method is called prior to each iteration of the solver.
Reimplemented from itk::FiniteDifferenceFunction< TImage >.
Definition at line 114 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
static |
Method for creation through the object factory.
Referenced by itk::CurvatureAnisotropicDiffusionImageFilter< TInputImage, TOutputImage >::CurvatureAnisotropicDiffusionImageFilter().
|
staticconstexpr |
Inherit some parameters from the superclass type.
Definition at line 104 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Definition at line 142 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Derivative operator
Definition at line 134 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Inner product function.
Definition at line 126 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Modified global average gradient magnitude term.
Definition at line 137 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
staticprivate |
Definition at line 140 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Definition at line 143 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Slices for the ND neighborhood.
Definition at line 129 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Definition at line 130 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Definition at line 131 of file itkCurvatureNDAnisotropicDiffusionFunction.h.