Class LseFastMarch

java.lang.Object
gov.nih.mipav.model.algorithms.levelset.LseFastMarch
Direct Known Subclasses:
LseFastMarch2, LseFastMarch3

public abstract class LseFastMarch extends Object
The abstract base class for fast-marching methods of images. This is based on material from J. Sethian's book, Level Set Methods and Fast Marching Methods.
Version:
0.1 November 7, 2006
Author:
David Eberly
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    (package private) float[]
    The inverse speeds associated with the image elements.
    (package private) float[]
    The times at which the image elements are visited by moving boundaries.
    (package private) LseMinHeap.Record[]
    Those image elements that are adjacent to the current region boundary points are tracked to allow fast updates of the boundary.
    (package private) float
    The maximum time in m_afTime[].
    (package private) float
    The minimum time in m_afTime[].
    (package private) int
    The number of image elements.
    (package private) LseMinHeap
    A min-heap data structure used to keep track of the times so that the image element corresponding to the minimum time becomes the next processed boundary point.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    LseFastMarch(int iQuantity, float[] afSpeed, int[] aiSeeds)
    Create a new fast-marching object, where the speed varies per image element.
    protected
    LseFastMarch(int iQuantity, float fSpeed, int[] aiSeeds)
    Create a new fast-marching object, where the speed is constant for all image elements.
  • Method Summary

    Modifier and Type
    Method
    Description
    final void
    Compute the minimum and maximum visitation times for the image elements.
    abstract int[]
    Get the indices of the boundary points of the current region.
    int[]
    Get the indices of the interior points of the current region.
    final float
    Get the maximum visitation time for the image elements.
    final float
    Get the minimum visitation time for the image elements.
    final int
    Get the number of image elements.
    final float
    getTime(int i)
    Get the time of visitation for an image element.
    protected void
    initialize(int iQuantity, int[] aiSeeds)
    Partial initialization of the fast marching object.
    protected void
    initializeSpeed(float fSpeed)
    Partial initialization of the fast marching object.
    protected void
    initializeSpeed(float[] afSpeed)
    Partial initialization of the fast marching object.
    abstract boolean
    isBoundary(int i)
    An image element is a boundary point when it is on the boundary of the current region.
    final boolean
    isFar(int i)
    An image element is a far element when its visitation time t is infinite: t = Float.MAX_VALUE.
    final boolean
    isInterior(int i)
    An image element is an interior element when it is valid and not a trial element.
    final boolean
    isTrial(int i)
    An image element is a trial element when its visitation time t is invalid (t < 0), its inverse speed is finite, and the element is adjacent to the boundary of the current region.
    final boolean
    isValid(int i)
    An image element is valid whenever its visitation time t satisfies the conditions: 0 ≤ t < Float.MAX_VALUE).
    final boolean
    isZeroSpeed(int i)
    An image element is never visited when its corresponding speed is zero.
    abstract void
    Run one iteration of the fast marching algorithm.
    final void
    setTime(int i, float fTime)
    Set the time of visitation for an image element.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • m_iQuantity

      int m_iQuantity
      The number of image elements.
    • m_afInvSpeed

      float[] m_afInvSpeed
      The inverse speeds associated with the image elements. These are used to control the evolution of region boundaries.
    • m_afTime

      float[] m_afTime
      The times at which the image elements are visited by moving boundaries.
    • m_fMinTime

      float m_fMinTime
      The minimum time in m_afTime[].
    • m_fMaxTime

      float m_fMaxTime
      The maximum time in m_afTime[].
    • m_kHeap

      LseMinHeap m_kHeap
      A min-heap data structure used to keep track of the times so that the image element corresponding to the minimum time becomes the next processed boundary point.
    • m_akTrial

      LseMinHeap.Record[] m_akTrial
      Those image elements that are adjacent to the current region boundary points are tracked to allow fast updates of the boundary.
  • Constructor Details

    • LseFastMarch

      protected LseFastMarch(int iQuantity, float[] afSpeed, int[] aiSeeds)
      Create a new fast-marching object, where the speed varies per image element.
      Parameters:
      iQuantity - The number of image elements.
      afSpeed - The array of speeds for the image elements.
      aiSeeds - The initial region points.
    • LseFastMarch

      protected LseFastMarch(int iQuantity, float fSpeed, int[] aiSeeds)
      Create a new fast-marching object, where the speed is constant for all image elements.
      Parameters:
      iQuantity - The number of image elements.
      fSpeed - The common speed for the image elements.
      aiSeeds - The initial region points.
  • Method Details

    • getQuantity

      public final int getQuantity()
      Get the number of image elements.
      Returns:
      The number of image elements.
    • setTime

      public final void setTime(int i, float fTime)
      Set the time of visitation for an image element.
      Parameters:
      i - The index of the image element.
      fTime - The time of visitation for the image element.
    • getTime

      public final float getTime(int i)
      Get the time of visitation for an image element.
      Parameters:
      i - The index of the image element.
      Returns:
      The time of visitation for the image element.
    • computeTimeExtremes

      public final void computeTimeExtremes()
      Compute the minimum and maximum visitation times for the image elements. The extreme values may be retrieved via calls to getMinTime() and getMaxTime().
    • getMinTime

      public final float getMinTime()
      Get the minimum visitation time for the image elements.
      Returns:
      The minimum visitation time.
    • getMaxTime

      public final float getMaxTime()
      Get the maximum visitation time for the image elements.
      Returns:
      The maximum visitation time.
    • isValid

      public final boolean isValid(int i)
      An image element is valid whenever its visitation time t satisfies the conditions: 0 ≤ t < Float.MAX_VALUE).
      Parameters:
      i - The index of the image element.
      Returns:
      The Boolean result of the t-constraints.
    • isTrial

      public final boolean isTrial(int i)
      An image element is a trial element when its visitation time t is invalid (t < 0), its inverse speed is finite, and the element is adjacent to the boundary of the current region.
      Parameters:
      i - The index of the image element.
      Returns:
      The Boolean result of the t-constraints.
    • isFar

      public final boolean isFar(int i)
      An image element is a far element when its visitation time t is infinite: t = Float.MAX_VALUE. Such elements are not considered when searching the heap for the next element to visit.
      Parameters:
      i - The index of the image element.
      Returns:
    • isZeroSpeed

      public final boolean isZeroSpeed(int i)
      An image element is never visited when its corresponding speed is zero. Such elements are preprocessed initially so that there visitation times are t = -Float.MAX_VALUE.
      Parameters:
      i - The index of the image element.
      Returns:
    • isInterior

      public final boolean isInterior(int i)
      An image element is an interior element when it is valid and not a trial element. Effectively, these are interior points of the current region.
      Parameters:
      i - The index of the image element.
      Returns:
    • getInterior

      public int[] getInterior()
      Get the indices of the interior points of the current region.
      Returns:
      The array of indices of the interior points.
    • getBoundary

      public abstract int[] getBoundary()
      Get the indices of the boundary points of the current region. This is an abstract function, because the identification of such points depends on the dimensionality of the image.
      Returns:
      The array of indices of the boundary points.
    • isBoundary

      public abstract boolean isBoundary(int i)
      An image element is a boundary point when it is on the boundary of the current region. This is an abstract function, because the identification of such points depends on the dimensionality of the image.
      Parameters:
      i - The index of the image element.
      Returns:
      The Boolean result indicating whether or not the image element is a boundary point.
    • iterate

      public abstract void iterate()
      Run one iteration of the fast marching algorithm. This is an abstract function, because the identification of such points depends on the dimensionality of the image.
    • initialize

      protected void initialize(int iQuantity, int[] aiSeeds)
      Partial initialization of the fast marching object. The visitation times are set to zero for the initial region (the seeds) but to Float.MAX_VALUE for all other points. Initially, none of the points are trial points.
      Parameters:
      iQuantity - The number of image elements.
      aiSeeds - The initial region points.
    • initializeSpeed

      protected void initializeSpeed(float[] afSpeed)
      Partial initialization of the fast marching object. The inverse speeds are computed for those speeds that are positive. If an input speed is zero, the inverse speed is set to Float.MAX_VALUE and the visitation time is set to -Float.MAX_VALUE as a flag that the corresponding image element should never be visited.
      Parameters:
      afSpeed - The speeds for the image elements.
    • initializeSpeed

      protected void initializeSpeed(float fSpeed)
      Partial initialization of the fast marching object. The inverse speed is constnnt for all image elements and must be positive.
      Parameters:
      fSpeed - The common speed for the image elements.