Class LseGradientAnisotropic2
- java.lang.Object
-
- gov.nih.mipav.model.algorithms.levelset.LsePdeFilter
-
- gov.nih.mipav.model.algorithms.levelset.LsePdeFilter2
-
- gov.nih.mipav.model.algorithms.levelset.LseGradientAnisotropic2
-
public class LseGradientAnisotropic2 extends LsePdeFilter2
This class implements the gradient anistropic curvature flow filter for 2D images using a finite-difference-based solver for the partial differential equation:
du/dt = divergence(exp(-0.5*|grad(u)|^2/(k^2*average(|grad(u)|^2))*grad(u))
where u(x,y,t) is the evolved image at time t, du/dt is the time derivative of u, and grad(u) is the gradient of u with respect to the spatial variables. The value k is a used-selected parameter and may be thought of as a local curvature parameter. The notation divergence(Q) = Q0_x + Q1_y, the sum of first-order derivatives of the vector-valued function Q = (Q0,Q1).- Version:
- 0.1 November 7, 2006
- Author:
- David Eberly
-
-
Field Summary
Fields Modifier and Type Field Description private float
m_fK
The local curvature parameter, call it k.private float
m_fMHalfParam
-0.5/(k^2*average(|grad(u)|^2))private float
m_fParam
1/(k^2*average(|grad(u)|^2))-
Fields inherited from class gov.nih.mipav.model.algorithms.levelset.LsePdeFilter2
m_aabMask, m_aafDst, m_aafSrc, m_fFourthInvDxDy, m_fHalfInvDx, m_fHalfInvDy, m_fInvDx, m_fInvDxDx, m_fInvDy, m_fInvDyDy, m_fUmm, m_fUmp, m_fUmz, m_fUpm, m_fUpp, m_fUpz, m_fUzm, m_fUzp, m_fUzz, m_fXSpacing, m_fYSpacing, m_iXBound, m_iYBound
-
Fields inherited from class gov.nih.mipav.model.algorithms.levelset.LsePdeFilter
m_eScaleType, m_fBorderValue, m_fMin, m_fOffset, m_fScale, m_fTimeStep, m_iQuantity, NONE, PRESERVE_ZERO, SYMMETRIC, UNIT
-
-
Constructor Summary
Constructors Constructor Description LseGradientAnisotropic2(int iXBound, int iYBound, float fXSpacing, float fYSpacing, float[] afData, boolean[] abMask, float fBorderValue, int eScaleType, float fK)
Creates a new LseCurvatureFlow2 object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
computeParam()
Compute the average gradient magnitude squared for the current image u(x,y,t).protected void
onPreUpdate()
The function onPreUpdate was abstractly defined in the LsePdeFilter base class.protected void
onUpdate(int iX, int iY)
The per-pixel update function of the PDE solver.-
Methods inherited from class gov.nih.mipav.model.algorithms.levelset.LsePdeFilter2
assignDirichletImageBorder, assignDirichletMaskBorder, assignNeumannImageBorder, assignNeumannMaskBorder, getMask, getU, getUx, getUxx, getUxy, getUy, getUyy, getXBound, getXSpacing, getYBound, getYSpacing, lookUp5, lookUp9, onPostUpdate, onUpdate
-
Methods inherited from class gov.nih.mipav.model.algorithms.levelset.LsePdeFilter
getBorderValue, getQuantity, getScaleType, getTimeStep, setTimeStep, update
-
-
-
-
Constructor Detail
-
LseGradientAnisotropic2
public LseGradientAnisotropic2(int iXBound, int iYBound, float fXSpacing, float fYSpacing, float[] afData, boolean[] abMask, float fBorderValue, int eScaleType, float fK)
Creates a new LseCurvatureFlow2 object.- Parameters:
iXBound
- The x-bound of the image.iYBound
- The y-bound of the image.fXSpacing
- The x-spacing of the image.fYSpacing
- The y-spacing of the image.afData
- The image elements, stored in lexicographical order.abMask
- The image mask, stored in lexicographical order. A pixel value is processed by the PDE solver only when the mask value is false.fBorderValue
- Specifies how to handle the image value. When set to Float.MAX_VALUE, Neumann conditions are in use, in which case zero-valued derivatives are assumed on the image border. Otherwise, Dirichlet conditions are used, in which case the image is assumed to be constant on the border with value specified by fBorderValue.eScaleType
- The type of scaling to apply to the input image. The choices are NONE, UNIT, SYMMETRIC, or PRESERVE_ZERO.fK
- The local curvature parameter in the exponential term of the PDE.
-
-
Method Detail
-
computeParam
protected void computeParam()
Compute the average gradient magnitude squared for the current image u(x,y,t). The terms p = 1/(k*k*average(|grad(u)|^2) and -0.5*p are computed once and used in the per-pixel update in the PDE solver.
-
onPreUpdate
protected void onPreUpdate()
The function onPreUpdate was abstractly defined in the LsePdeFilter base class. It is called before any per-pixel updates. In this class, the parameters in the exponential term of the PDE are precomputed for use by the onUpdate() function.- Overrides:
onPreUpdate
in classLsePdeFilter2
-
onUpdate
protected void onUpdate(int iX, int iY)
The per-pixel update function of the PDE solver.- Specified by:
onUpdate
in classLsePdeFilter2
- Parameters:
iX
- The x-value of the pixel to be updated.iY
- The y-value of the pixel to be updated.
-
-