#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} \]
.
For additional information see [152].
Definition at line 71 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
Public Member Functions | |
PixelType | ComputeUpdate (const NeighborhoodType &it, void *globalData, const FloatOffsetType &offset=FloatOffsetType(0.0)) override |
virtual::itk::LightObject::Pointer | CreateAnother () const |
const char * | GetNameOfClass () const override |
void | InitializeIteration () override |
![]() | |
void | CalculateAverageGradientMagnitudeSquared (TImage *) override |
const char * | GetNameOfClass () const override |
![]() | |
TimeStepType | ComputeGlobalTimeStep (void *GlobalData) const override |
const double & | GetAverageGradientMagnitudeSquared () const |
const double & | GetConductanceParameter () const |
void * | GetGlobalDataPointer () const override |
const TimeStepType & | GetTimeStep () const |
void | ReleaseGlobalDataPointer (void *GlobalData) const override |
void | SetAverageGradientMagnitudeSquared (const double c) |
void | SetConductanceParameter (const double c) |
void | SetTimeStep (const TimeStepType &t) |
![]() | |
const NeighborhoodScalesType | ComputeNeighborhoodScales () const |
const NeighborhoodScalesType | ComputeNeighborhoodScales () const |
const RadiusType & | GetRadius () const |
const RadiusType & | GetRadius () const |
void | GetScaleCoefficients (PixelRealType vals[ImageDimension]) const |
void | GetScaleCoefficients (PixelRealType vals[ImageDimension]) const |
void | SetRadius (const RadiusType &r) |
void | SetRadius (const RadiusType &r) |
void | SetScaleCoefficients (const PixelRealType vals[ImageDimension]) |
void | SetScaleCoefficients (const PixelRealType vals[ImageDimension]) |
![]() | |
Pointer | Clone () 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 void | BreakOnError () |
static Pointer | New () |
Static Public Attributes | |
static constexpr unsigned int | ImageDimension = Superclass::ImageDimension |
![]() | |
static constexpr unsigned int | ImageDimension = Superclass::ImageDimension |
![]() | |
static constexpr unsigned int | ImageDimension = Superclass::ImageDimension |
![]() | |
static constexpr unsigned int | ImageDimension |
static constexpr unsigned int | ImageDimension |
Protected Member Functions | |
CurvatureNDAnisotropicDiffusionFunction () | |
~CurvatureNDAnisotropicDiffusionFunction () override=default | |
![]() | |
ScalarAnisotropicDiffusionFunction ()=default | |
~ScalarAnisotropicDiffusionFunction () override=default | |
![]() | |
AnisotropicDiffusionFunction () | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
~AnisotropicDiffusionFunction () override=default | |
![]() | |
FiniteDifferenceFunction () | |
FiniteDifferenceFunction () | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
void | PrintSelf (std::ostream &os, Indent indent) const override |
~FiniteDifferenceFunction () override=default | |
~FiniteDifferenceFunction () override=default | |
![]() | |
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 | |
![]() | |
RadiusType | m_Radius |
RadiusType | m_Radius |
PixelRealType | m_ScaleCoefficients [ImageDimension] |
PixelRealType | m_ScaleCoefficients [ImageDimension] |
![]() | |
std::atomic< int > | m_ReferenceCount {} |
using itk::CurvatureNDAnisotropicDiffusionFunction< TImage >::ConstPointer = SmartPointer<const Self> |
Definition at line 80 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
using itk::CurvatureNDAnisotropicDiffusionFunction< TImage >::NeighborhoodSizeValueType = typename NeighborhoodType::SizeValueType |
Definition at line 96 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
using itk::CurvatureNDAnisotropicDiffusionFunction< TImage >::Pointer = SmartPointer<Self> |
Definition at line 79 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
using itk::CurvatureNDAnisotropicDiffusionFunction< TImage >::Self = CurvatureNDAnisotropicDiffusionFunction |
Standard class type aliases.
Definition at line 77 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
using itk::CurvatureNDAnisotropicDiffusionFunction< TImage >::Superclass = ScalarAnisotropicDiffusionFunction<TImage> |
Definition at line 78 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
protected |
Referenced by GetNameOfClass().
|
overrideprotecteddefault |
|
overridevirtual |
Compute incremental update.
Implements itk::FiniteDifferenceFunction< TImage >.
|
virtual |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::LightObject.
|
overridevirtual |
Reimplemented from itk::AnisotropicDiffusionFunction< TImage >.
References CurvatureNDAnisotropicDiffusionFunction().
|
inlineoverridevirtual |
This method is called prior to each iteration of the solver.
Reimplemented from itk::FiniteDifferenceFunction< TImage >.
Definition at line 109 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
References itk::AnisotropicDiffusionFunction< TImage >::GetAverageGradientMagnitudeSquared(), itk::AnisotropicDiffusionFunction< TImage >::GetConductanceParameter(), and m_K.
|
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 99 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Definition at line 137 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Derivative operator
Definition at line 129 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Inner product function.
Definition at line 121 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Modified global average gradient magnitude term.
Definition at line 132 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
Referenced by InitializeIteration().
|
staticprivate |
Definition at line 135 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Definition at line 138 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Slices for the ND neighborhood.
Definition at line 124 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Definition at line 125 of file itkCurvatureNDAnisotropicDiffusionFunction.h.
|
private |
Definition at line 126 of file itkCurvatureNDAnisotropicDiffusionFunction.h.